修改了bootloader装载的方式

2006/7/21 23:36:05
目前是直接读取elf格式的cfe,然后根据elf的内容把代码和数据写到rom里面,实际上是实现了一个elf可执行文件loader,我觉得这种方式 不太符合一般嵌入式开发人员的思维习惯,我决定在初始化rom的时候,把cfe的binary文件直接拷贝到rom里面,这样就和一般的开发板很相似了.

刚开始这样做的时候遇到了一点麻烦,发现cfe启动不了了,用remote gdb跟了一下,发现在env_envvars的值是0,所以在env_findenv里面跑飞了,但是实际上env_envvars是初始化了的
queue_t env_envvars = {&env_envvars,&env_envvars};
而且以前通过elf的形式装载是没有问题的,于是马上就猜想到可能是数据段装载的问题,用mips-linux-objdump查看
cfe: file format elf32-tradbigmips

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00037ba5 9fc00000 bfc00000 00001000 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 000015f0 81f00000 bfc37bb0 00039000 2**3
CONTENTS, ALLOC, LOAD, DATA

可以看到数据段和代码段的vma,lma的偏移不同,利马就想到可能是linker script的问题,通过查看Makefile 和cfe/arch/mips/common/src/cfe_ldscript.template,把CFG_BOOTRAM设置成1,问题解决

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00037ba5 9fc00000 9fc00000 00001000 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 000015f0 9fc37ba8 9fc37ba8 00038ba8 2**3
CONTENTS, ALLOC, LOAD, DATA

转载于:https://www.cnblogs.com/simBCM/archive/2011/04/05/2005775.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值