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