本帖最后由 jf_82872908 于 2020-8-27 12:39 编辑
现象: 设计
PCB,展开SDRAM,出现异常现象,初始化之后,运行测试程序,SDRAM有256Mb大小,测试到32Mb就停止了。把测试停止之后的地址作为开始地址进行再一次测试,无响应。SDRAM的起始地址为0xC000 0000,异常地址在0xC1FFFFFC,大家知道这是怎么回事吗?什么原因?
代码:外部的定义
#define SDRAM_SIZE((uint32_t)0x1000 0000)
#define SDRAM_SIZE_MB((uint32_t)0x100)
#define RT_
tiCK_PER_SECOND 1000
测试代码: int sdram_test1(void)
{
uint32_t i = 0;
uint32_t start_time = 0;
volatile uint32_t time_cast = 0;
char data_width = 4;
uint32_t data = 0;
rt_kprintf(“正在写入%d MB-%dbytes数据,正在等待... n”,SDRAM_SIZE_MB,SDRAM_SIZE);
start_time = rt_tick_get(); //获取当前时钟
为(i = 0; i
{
*(_ IO uint32_t *)(SDRAM_BANK_ADDR + i * data_width)=(uint32_t)0x5555 5555;
数据= *(__ IO uint32_t *)(SDRAM_SIZE_ADDR + i *数据宽度);
if(data!= 0x55555555)
{
rt_kprintf(“ SDRAM测试失败,Data:%d n”,data);
打破;
}
time_cast = rt_tick_get()-start_time;
if(((i + 1)* data_width)%(1024 * 1024)== 0)
{
rt_kprintf(“%d Mb Data Checked!Addr:0x%X,count / sum:%d /%d,获取数据: 0x%X成本时间:%d。%03dS。 n“,(int)((i + 1)* data_width / 1024/1024),(SDRAM_BANK_ADDR + i * data_width),i + 1,SDRAM_SIZE / data_width,data ,time_cast / RT_TICK_PER_SECOND,
time_cast%RT_TICK_PER_SECOND /(((RT_TICK_PER_SECOND * 1 + 999)/ 1000));
}
if(i> = SDRAM_SIZE / data_width)
{
rt_kprintf(“ SDRAM测试成功! n”);
打破;
}
}
返回RT_EOK;
}
MSH_CMD_EXPORT(sdram_test1,SDRAM测试1)
控制台现象:
| /
-RT-线程操作系统
/ | 4.0.2 build 2020
年8月27 日-2019年rt-thread团队
sdram初始化成功,映射为0xC0000000,大小为256 Mb,数据宽度为32系统调度程序启动
主线程工作...
msh /> sdram_test1
编写256 Mbytes-268435456字节数据,正在等待。...
1 Mb数据已检查!地址:0xC00FFFFC,计数/总和:262144/67108864,获取数据:0x55555555花费时间:0.084S。
2 Mb数据已检查!地址:0xC01FFFFC,计数/总和:524288/67108864,获取数据:0x55555555花费时间:0.177S。
已检查3 Mb数据!地址:0xC02FFFFC,计数/总和:786432/67108864,获取数据:0x55555555花费时间:0.270S。
已检查4 Mb数据!地址:0xC03FFFFC,计数/总和:1048576/67108864,获取数据:0x55555555花费时间:0.363S。
已检查5 Mb数据!地址:0xC04FFFFC,计数/总和:1310720/67108864,获取数据:0x55555555花费时间:0.457S。
已检查6 Mb数据!地址:0xC05FFFFC,计数/总和:1572864/67108864,获取数据:0x55555555花费时间:0.550S。
已检查7 Mb数据!地址:0xC06FFFFC,计数/总和:1835008/67108864,获取数据:0x55555555花费时间:0.643S。
已检查8 Mb数据!地址:0xC07FFFFC,计数/总和:2097152/67108864,获取数据:0x55555555花费时间:0.736S。
已检查9 Mb数据!地址:0xC08FFFFC,计数/总和:2359296/67108864,获取数据:0x55555555花费时间:0.830S。
已检查10 Mb数据!地址:0xC09FFFFC,计数/总和:2621440/67108864,获取数据:0x55555555花费时间:0.923S。
已检查11 Mb数据!地址:0xC0AFFFFC,计数/总和:2883584/67108864,获取数据:0x55555555花费时间:1.016S。
已检查12 Mb数据!地址:0xC0BFFFFC,计数/总和:3145728/67108864,获取数据:0x55555555花费时间:1.109S。
已检查13 Mb数据!地址:0xC0CFFFFC,计数/总和:3407872/67108864,获取数据:0x55555555花费时间:1.203S。
已检查14 Mb数据!地址:0xC0DFFFFC,计数/总和:3670016/67108864,获取数据:0x55555555花费时间:1.296S。
15 Mb数据已检查!地址:0xC0EFFFFC,计数/总和:3932160/67108864,获取数据:0x55555555花费时间:1.389S。
已检查16 Mb数据!地址:0xC0FFFFFC,计数/和:4194304/67108864,获取数据:0x55555555花费时间:1.483S。
已检查17 Mb数据!地址:0xC10FFFFC,计数/总和:4456448/67108864,获取数据:0x55555555花费时间:1.576S。
已检查18 Mb数据!地址:0xC11FFFFC,计数/总和:4718592/67108864,获取数据:0x55555555花费时间:1.669S。
已检查19 Mb数据!地址:0xC12FFFFC,计数/总和:4980736/67108864,获取数据:0x55555555花费时间:1.763S。
已检查20 Mb数据!地址:0xC13FFFFC,计数/总和:5242880/67108864,获取数据:0x55555555花费时间:1.856S。
已检查21 Mb数据!地址:0xC14FFFFC,计数/总和:5505024/67108864,获取数据:0x55555555花费时间:1.949S。
22 Mb数据已检查!地址:0xC15FFFFC,计数/总和:5767168/67108864,获取数据:0x55555555花费时间:2.043S。
已检查23 Mb数据!地址:0xC16FFFFC,计数/总和:6029312/67108864,获取数据:0x55555555花费时间:2.136S。
已检查24 Mb数据!地址:0xC17FFFFC,计数/总和:6291456/67108864,获取数据:0x55555555花费时间:2.229S。
已检查25 Mb数据!地址:0xC18FFFFC,计数/总和:6553600/67108864,获取数据:0x55555555花费时间:2.323S。
已检查26 Mb数据!地址:0xC19FFFFC,计数/总和:6815744/67108864,获取数据:0x55555555花费时间:2.416S。
已检查27 Mb数据!地址:0xC1AFFFFC,计数/总和:7077888/67108864,获取数据:0x55555555花费时间:2.509S。
已检查28 Mb数据!地址:0xC1BFFFFC,计数/总和:7340032/67108864,获取数据:0x55555555花费时间:2.603S。
已检查29 Mb数据!地址:0xC1CFFFFC,计数/和:7602176/67108864,获取数据:0x55555555花费时间:2.696S。
30 Mb数据已检查!地址:0xC1DFFFFC,计数/和:7864320/67108864,获取数据:0x55555555花费时间:2.789S。
已检查31 Mb数据!地址:0xC1EFFFFC,计数/总和:8126464/67108864,获取数据:0x55555555花费时间:2.883S。
已检查32 Mb数据!地址:0xC1FFFFFC,计数/总和:8388608/67108864,获取数据:0x55555555花费时间:2.976S。
附件为
威廉希尔官方网站
连接。