📄 main.c
字号:
/*================================================================== * * This file is part of a small Nand flash bootloader designed to * be loaded via EP93xx SPI boot. * * Copyright Cirrus Logic Corporation, 2007. All rights reserved * ==================================================================*/#include <io.h>#include <boot.h>#define COUNT_OF_BYTES_TO_COPY 16384const u32 pattern1=0x12345678;const u32 pattern2=0x87654321;const u32 pattern3=0xabcdef12;const u32 pattern4=0x12abcdef;int check_sdram(int sdram_base){ volatile u32 *sdram; int fail=0; sdram = (u32 *) sdram_base; sdram[0]=pattern1; sdram[1]=pattern2; sdram[2]=pattern3; sdram[3]=pattern4; if(sdram[0]!=pattern1) { fail++; } if(sdram[1]!=pattern2) { fail++; } if(sdram[2]!=pattern3) { fail++; } if(sdram[3]!=pattern4) { fail++; } return fail;}extern void set_sp(u32 sp);extern u32 get_pc(void);void sdram_setup_and_scan(void){ // devcfg value for 32bit: 0x00210028 sdram_cmd 0x00008800 , for 16bit: 0x0021002c sdram_cmd 0x00004600 //32 bit setup: puts("SDRAM"); sdram_setup( SDRAM_LOCATION, 0x00210028, 0x00008800 , 0); if( check_sdram(SDRAM_LOCATION) ) { //16 bit setup: sdram_setup( SDRAM_LOCATION, 0x0021002c, 0x00004600 , 0); if( check_sdram(SDRAM_LOCATION) ) { puts("Fail"); while(1); } else puts("16 OK\r\n"); } else puts("32 OK\r\n");}u32 read_spi_word(u32 adr); void start_C(u32 bootmode){ int i; u32 dat; u32 *sdram=(u32 *) SDRAM_LOAD_ADDRESS; sdram_setup_and_scan(); for(i=0; i<COUNT_OF_BYTES_TO_COPY; i+=4) { dat = read_spi_word(i+0x804); sdram[i>>2]=dat; } puts("exe"); set_pc((u32) sdram); while(1) { }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -