(1)使用了23888D的EMIF2 CS0接口外扩了一片16M×16 大小的SDRAM;
(2)在SDRAM中定义了一个使用了整片SDRAM内存大小的数组,该数组无初始化,放于.farbsss段中;
(3)在定时器以两秒的周期翻转一个LED;
(4)出现问题:程序在FLASH中运行时,运行到main函数需要近27秒时间,判断依据就是LED要间隔27秒才开始闪烁;
(5)问题定位:定义在该SDRAM的数组大小变小时,运行到main函数时间也会变小,并且呈正相关关系,所以判断是该SDRAM数组的问题;
(6)具体代码如下:
C文件
#define SDRAMSize 8388608U
__attribute__((far)) volatile uint32_t SDRAMBuf[SDRAMSize];
CMD文件
EMIF2_CS0n : origin = 0x90000000, length = 0x01000000
.farbss : > EMIF2_CS0n
(7)补充说明:程序中未对SDRAMBuf有任何初始化操作;