jamiedu 发表于 2009-6-19 20:03:36

44B0的启动代码中“b ResetHandler”编译后的跳转地址不对

这几天才刚学44B0,板子是公版,用J&L*INK调试。在ADS1.2中编译了一个工程,bootloader是官方那个。本来打算在SDRAM中调试,但是当程序加载后,PC指向 b ResetHandler,当我点下一步的时候,程序就跑到一个错误的地址上了。

后来通过查看反汇编发现“b ResetHandler”在编译后的跳转地址已经不对了,具体情况如下:

①:ADS中的RO_BASE设置为0x0C000000,R0_BASE不设置
编译后如下:
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_454518.png
(原文件名:1.png)
跳到0xbaba80c去了。

②:ADS中的RO_BASE设置为0x0C000000,R0_BASE设置为0xc100000,指向SDRAM。
编译结果和上面一样。

③:ADS中的RO_BASE设置为0x00000000,R0_BASE不设置,指向FLASH了。
编译后如下:
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_454522.png
(原文件名:2.png)
打开AXD加载axf后可以单步调试,但程序运行没结果,而且下载到FLASH后也不能用,将FLASH中内容读出是正确的,证明程序是成功下载的。

④:ADS中的RO_BASE设置为 0x00000004 ,R0_BASE不设置(测试)。
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_454523.png
(原文件名:3.png)
地址 0x00000180 也是错的,没指向ResetHandler的实际地址。

⑤:ADS中的RO_BASE设置为 0x00000008 ,R0_BASE不设置(测试)。
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_454528.png
(原文件名:4.png)
地址 0x00000198 也是错的,没指向ResetHandler的实际地址。

还有就是,用JLINK在SDRAM中调试SDRAM程序时要不要先初始化SDRAM啊??因为JLINK可以直接读写SDRAM了。

由于对ARM结构或者编译器还不了解,所以经过N多尝试还没找出原因和办法,请大家帮帮忙~~~

jamiedu 发表于 2009-6-19 20:58:51

大家帮帮忙~~~

jamiedu 发表于 2009-6-19 21:57:49

搞好了,SDRAM没初始化~~~
页: [1]
查看完整版本: 44B0的启动代码中“b ResetHandler”编译后的跳转地址不对