我有两块44B0的板子,两个板子不同,一个是买的开发板,另一个是自己做的.M0--M3的配置SDRAM 的接线都同.用开发板调试时没有问题.同一个跑马灯程序,RO地址设置成SDRAM 地址 0x0c008000, 调试开发板的时候SDRAM 中内容是:
0x0c008000 25 01 00 EA 5D 00 00 EA 62 00 00 EA 6D 00 00 EA %...]...b...m... 0x0c008010 66 00 00 EA FE FF FF EA 52 00 00 EA 4B 00 00 EA f.......R...K... 0x0c008020 BC F0 9F E5 BC F0 9F E5 BC F0 9F E5 BC F0 9F E5 ................ 0x0c008030 BC F0 9F E5 BC F0 9F E5 FE FF FF EA FE FF FF EA ................
看上去很正常.可是调试自己的板的时候SDRAM 中显示:
0x0c008000 01 01 EA EA 00 00 EA EA 00 00 EA EA 00 00 EA EA ................ 0x0c008010 00 00 EA EA FF FF EA EA 00 00 EA EA 00 00 EA EA ................ 0x0c008020 F0 F0 E5 E5 F0 F0 E5 E5 F0 F0 E5 E5 F0 F0 E5 E5 ................ 0x0c008030 F0 F0 E5 E5 F0 F0 E5 E5 FF FF EA EA FF FF EA EA ................
说明一下:以上数据都是刚LOAD IMAGE之后的显示,程序还没有执行.我用的SDRAM 都是16位的.
看看两个板子的SDRAM 控制器显示吧.:
开发板中显示:0x01c80000 02 11 00 01 F4 7F 00 00 40 0A 00 00 80 14 00 00 .......@.......
我的板中显示:0x01c80000 02 00 00 00 00 07 00 00 00 07 00 00 00 07 00 00 ................
0x01c80000中是SDRAM 控制器 的位宽配置.我的板中显示的值跟手册中的复位值一样(默认为8位宽).而开发板中显示的值是我希望的值(16位宽).这个时候程序还没有执行.我就不明白,我的开发板是怎么知道SDRAM配置的?难道哪里有机关?
如果强制把0x01c80000中内容修改成希望的值之后.再LOAD IMAGE .结果就跟开发板一样了.程序也能调试了.
大哥们,都分析一下是哪的原因呀! |