打印

靠scatter文件可以修改执行域地址吗?

[复制链接]
2427|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
oumi|  楼主 | 2009-7-7 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用scatter文件可以修改加载域地址,这个可以理解,就是可以通过scatter文件修改hex文件里代码的存储地址。
可是用scatter文件修改执行域的地址,这个理解不了,难道ARM7的内核上电的时候会自动实现代码从加载域到执行域的搬运吗?

或者说scatter文件中修改执行域的地址,会影响到什么?搞不懂,请大家指点一下,多谢了

相关帖子

沙发
lelee007| | 2009-7-7 14:24 | 只看该作者

scatter文件的处理有“幕后黑手”

呵呵,具体的俺也没弄清楚

----------------------------------
难道ARM7的内核上电的时候会自动实现代码从加载域到执行域的搬运吗?
----------------------------------
这个倒没有,搬运需要你亲自作,需要显式的用代码来实现的

使用特权

评论回复
板凳
dalujia| | 2009-7-7 14:59 | 只看该作者

对,会自动执行代码搬运,在_main函数里执行

使用特权

评论回复
地板
oumi|  楼主 | 2009-7-7 15:09 | 只看该作者

回2楼

谢谢指导,可是如果不会自己搬运,那在scatter文件里定义执行域的地址和内容有什么意义呢?手册太多了,不知道去哪里能查到,买本周立功的ARM7也没说,买本北航的ADS也没讲,也可能我没找到。齐齐怪怪,呵呵

使用特权

评论回复
5
oumi|  楼主 | 2009-7-7 15:12 | 只看该作者

回3楼

你好,
“                                        ”
 对,会自动执行代码搬运,在_main函数里执行


可是_main是我自己写的,里面并没有添加搬运代码,还是搞不懂。或者如果我不写main函数这ARM7就不能用了吗?

使用特权

评论回复
6
dalujia| | 2009-7-7 16:12 | 只看该作者

_main不是你写的,只是这个函数最后调到main函数

详情请参见
http://blog.21ic.com/user1/4452/archives/2009/59965.html

使用特权

评论回复
7
oumi|  楼主 | 2009-7-7 16:54 | 只看该作者

回6楼

hi,十分非常感谢,我看keil看多了,哈哈

使用特权

评论回复
8
lelee007| | 2009-7-7 17:23 | 只看该作者

其实scatter我也只是很久以前了解过一下

现在主要是在GNU下搞

指定运行域的地址,会影响PC值,被指定的内容要搬到指定地址才能正常运行。否则与位置有关的代码无法正常运行。

有兴趣可以看看GNU下的关于LD的讲解,不用看太深,了解一下,这些概念你就明白了

使用特权

评论回复
9
oumi|  楼主 | 2009-7-7 17:28 | 只看该作者

回8楼

谢谢,其实我是想写一个bootloader,就想让程序在flash中存储,在RAM里执行

使用特权

评论回复
10
oumi|  楼主 | 2009-7-8 08:43 | 只看该作者

回10楼

多谢提醒,呵呵

使用特权

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

本版积分规则

13

主题

71

帖子

0

粉丝