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

[复制链接]
3895|9
 楼主| oumi 发表于 2009-7-7 14:15 | 显示全部楼层 |阅读模式
用scatter文件可以修改加载域地址,这个可以理解,就是可以通过scatter文件修改hex文件里代码的存储地址。<br />可是用scatter文件修改执行域的地址,这个理解不了,难道ARM7的内核上电的时候会自动实现代码从加载域到执行域的搬运吗?<br /><br />或者说scatter文件中修改执行域的地址,会影响到什么?搞不懂,请大家指点一下,多谢了
lelee007 发表于 2009-7-7 14:24 | 显示全部楼层

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

呵呵,具体的俺也没弄清楚<br /><br />----------------------------------<br />难道ARM7的内核上电的时候会自动实现代码从加载域到执行域的搬运吗?<br />----------------------------------<br />这个倒没有,搬运需要你亲自作,需要显式的用代码来实现的<br />
dalujia 发表于 2009-7-7 14:59 | 显示全部楼层

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

  
 楼主| oumi 发表于 2009-7-7 15:09 | 显示全部楼层

回2楼

谢谢指导,可是如果不会自己搬运,那在scatter文件里定义执行域的地址和内容有什么意义呢?手册太多了,不知道去哪里能查到,买本周立功的ARM7也没说,买本北航的ADS也没讲,也可能我没找到。齐齐怪怪,呵呵
 楼主| oumi 发表于 2009-7-7 15:12 | 显示全部楼层

回3楼

你好,<br />“&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”<br />&nbsp;对,会自动执行代码搬运,在_main函数里执行<br /><br /><br />可是_main是我自己写的,里面并没有添加搬运代码,还是搞不懂。或者如果我不写main函数这ARM7就不能用了吗?<br />
dalujia 发表于 2009-7-7 16:12 | 显示全部楼层

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

详情请参见<br />http://blog.21ic.com/user1/4452/archives/2009/59965.html
 楼主| oumi 发表于 2009-7-7 16:54 | 显示全部楼层

回6楼

hi,十分非常感谢,我看keil看多了,哈哈
lelee007 发表于 2009-7-7 17:23 | 显示全部楼层

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

现在主要是在GNU下搞<br /><br />指定运行域的地址,会影响PC值,被指定的内容要搬到指定地址才能正常运行。否则与位置有关的代码无法正常运行。<br /><br />有兴趣可以看看GNU下的关于LD的讲解,不用看太深,了解一下,这些概念你就明白了<br />
 楼主| oumi 发表于 2009-7-7 17:28 | 显示全部楼层

回8楼

谢谢,其实我是想写一个bootloader,就想让程序在flash中存储,在RAM里执行
 楼主| oumi 发表于 2009-7-8 08:43 | 显示全部楼层

回10楼

多谢提醒,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部