在AT91BootStrap的board.h文件,修改SDRAM配置参数:
#define BOARD_SDRAM_SIZE (32*1024*1024) // 64 MB
#define PINS_SDRAM {0xFFFF0000, AT91C_BASE_PIOC, AT91C_ID_PIOC,PIO_PERIPH_A, PIO_DEFAULT}
#define BOARD_SDRAM_BUSWIDTH 16
at91sam9260内部的romboot要利用SDRAM来烧写或读取dataflash程序,我之前一直以为romboot的运行过程中只使用内部SRAM,不会用到SDRAM;
烧程序时,romboot先从PC机接收程序文件并放置在SDRAM,再从SDRAM烧写到dataflash;
给PC机上传程序时,先读取dataflash的内容并放置到SDRAM,再从SDRAM上传到PC机;
所以SDRAM很重要,没有SDRAM将不能烧写和读取程序。SAMBA软件默认的配置是32bit的SDRAM,所以换成16bit的SDRAM时,要修改配置。
首先是SDRAM的宽度改为16bit,否则会烧写程序会出错;
再次是dataflash的时钟速率,因为16bit的SDRAM速度比32bit慢,所以romboot跟dataflash通信的速度也要相应的调低,否则烧写和读取都会出错。所以之前出现了“程序烧不进去、烧了at91bootstrap后擦除了应用程序、烧写应用程序发现at91bootstrap也会被损坏、读取的dataflash程序跟烧写进去的程序不一致”...等现象。
在SAMBA软件配置中,9260EK目录下,在SDRAM.tcl,设置AT91C_SDRAMC_DBW_16_BITS来改变SDRAM宽度。在DATAFLASH.tcl,修改variable DATAFLASH_CLK为1000000调低dataflash的操作时钟速率。
阅读(1328) | 评论(0) | 转发(0) |