免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: bitliu1983
打印 上一主题 下一主题

u-boot相关powerpc处理器 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-12-16 09:31 |只看该作者
或者可以用一个更简单的方法

在.lds文件里把.data段的运行地址定义在ram的物理地址空间中,加载地址还是跟在.text后面

操作系统下普通的二进制文件在加载运行时,加载程序 会根据 链接定义 自动把.data段加载到它的运行地址上。

但你这段并不是由操作系统加载的,而是CPU上电启动引导的,所以.text段中的程序开头部分必须做.data段加载操作,把.data段copy到它的运行地址上,后面读写全局变量都是在ram中了。

google里搜 链接脚本文件定义

论坛徽章:
0
22 [报告]
发表于 2009-12-16 09:57 |只看该作者
楼主可以将链接地址改成ram地址,relocate之前的代码应该用与地址无关的代码.
你现在的链接地址是多少那?

u-boot在relocate之前没有对全局基本没有对全局变量作修改,都是relocate后作的修改吧.

[ 本帖最后由 rw99yy 于 2009-12-16 10:17 编辑 ]

论坛徽章:
0
23 [报告]
发表于 2010-01-19 14:06 |只看该作者
ok,谢谢各位大大,前段时间没来得及上论坛。
已经解决了,把链接地址改为拷贝到ram的目的物理地址,我们通通改为0x0,使得代码段和数据段都从0x0开始,然后boot后把bin从flash拷贝到内存的0x0处,就不需要重定位了,内存地址在引导阶段和后面地址都是0x0起始。

论坛徽章:
0
24 [报告]
发表于 2010-01-26 12:27 |只看该作者
跟21楼说的很相似!
MARK
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP