我的开发板的硬件:
MCU at91sam9260
SDRAM MT48LCM32(32MB 32bit)
NANDFLASH K9F5608DOC(32MB)
没有dataflash和norflash
针对我板子对BootStrap进行了如下修改。
一、因为我用的sdram是32M的,用了12个引脚,所以将AT91C_SDRAMC_NR_13改成AT91C_SDRAMC_NR_12。
sdram_init( AT91C_SDRAMC_NC_9 |
AT91C_SDRAMC_NR_12 |
AT91C_SDRAMC_CAS_2 |
AT91C_SDRAMC_NB_4_BANKS |
AT91C_SDRAMC_DBW_32_BITS |
AT91C_SDRAMC_TWR_2 |
AT91C_SDRAMC_TRC_7 |
AT91C_SDRAMC_TRP_2 |
AT91C_SDRAMC_TRCD_2 |
AT91C_SDRAMC_TRAS_5 |
AT91C_SDRAMC_TXSR_8, /* Control Register */
(MASTER_CLOCK * 7)/1000000); /* Refresh Timer Register */
二、将nand_ids.h中的nandflash参数改成{0xec75, 0x800, 0x4000, 0x200, 0x10, 0x0, "Samsung K9F5608U0M 32MB/0"}。
三、将JUMP_ADDR的值由23F00000改成21F00000。
四、将driver/nandflash.c里AT91F_NandRead()这个函数中的检测坏块的程序去掉。如果不去,Bootstrap总是认为nandflash所有的块都是坏块,程序也就无法进行。这只是投机取巧的方法,幸好这样不影响加载U-boot。原因是什么不太清楚,好像是因为我用的nandflash的读写时序和公版的不同。