打印

[讨论]关于ARM(44b0)的运行地址的分析

[复制链接]
1989|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ff_1wq|  楼主 | 2008-3-10 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做了一段时间44b0相关的东西,终于对ARM的一些问题有了一点点的认识,这里把我的一些经验贴出来,希望对像我一样的初学者有些帮助,也省的大家又开新帖,或翻旧帖,浪费时间。不对的地方请高手指出。
    我以前没接触过ARM,只弄过51,刚一上手又是44b0,44b0没有内部ROM和RAM(不算CACHE),所以刚开始对程序的运行地址一头雾水。
    首先,要搞明白调试和上电运行的不同。我们初学者接触ARM通常会用ADS调试ARM板上的示例程序。ADS的调试原理是将你编译后的程序写入-ro-base为起始地址的地方开始运行,通常将这个地址到RAM中,例如0x0c008000,你设到0x00来调试没用,0x00开始一般为flash(rom),AXD下不进去,要下到flash里,得写烧录代码,或者用flash烧写工具。如果你非要把地址设成0x00也可以,那你看到的运行的程序是flash里的程序,而不是你自己修改的示例程序。
    然后,44b0不支持重映射,上电运行时的地址一定是你电路上bank0接的芯片的开始运行地址,这和调试不一样。如果你的程序需要上电就开始运行,那么你要把程序写完编译,再下到flash里(注意bootloader)。这时候你你要将-ro-base设为0x00000000,因为ADS编译后生成的文件中,程序的起始代码是-ro-base,如果你非要设其他的也行,烧进去后没反映的。
    就先写这么多,有什么问题大家跟帖讨论,这里我还有个问题,三星44b0的bootloader中有个CONFIG参数是什么用的? 问了好久没人回答我,也找不到相关资料。。

相关帖子

沙发
林粼粼| | 2008-3-10 17:31 | 只看该作者

ROBASE设置到其他地方也可以

ROBASE设置到其他地方也可以,
我看了几个例子的原代码,程序都是跑SDRAM里运行的,里面有一段代码是搬运整个代码到设定的位置。
我刚接触ARM,虽然资料看了也有不少,但是细节还没怎么弄清楚

使用特权

评论回复
板凳
ff_1wq|  楼主 | 2008-3-10 17:58 | 只看该作者

re

你如果看懂了代码,知道了程序是在SDRAM里面跑,那么你就已经清楚细节了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

45

帖子

1

粉丝