EBOOT跳转到NK的过程

      先做个说明:我的平台环境是:CE5.0(S3C2450)。

      我的config.bib定义的镜像起始地址为0x8c20 0000(虚拟地址), EBoot将镜像下载到以0x8c20 0000为起始地址的RAM中, 但实际上OS跳转的地址却是0x8c20 1000, 也就是说, 传递到Lauch函数的参数应该是对应的物理地址0x3020 1000, 也就是镜像开始后4K的位置.
      为什么跳到4K后的位置执行呢? 如果直接在下载的其实地址(0x3020 0000)执行会怎么样呢? 答案是:程序同样会跳转到后4K的位置.
我看了一下NK.nb0中的机器码, 最前面4字节的内容是FE 03 00 EA, 它对应的指令是B跳转, 偏移地址是(0x3FE+2)*4正好就是4K, 也就是将跳转到偏移地址为0x1000的地方, 这也就很好的解释了上面的现象.

     nk.bin是nk.nb0的压缩形式.把nk.bin下载到ram里后就是nk.nb0了.你说用烧录器烧入nk.nb0应该是烧到flash去了.如果你的平台用的是nor flash可以XIP的话,就把flash里存放nk.nb0的首地址(物理地址)传递给launch函数,就可以跳转到os启动了.如果在内存里运行os,那么就要在eboot里把nk.nb0复制到内存的某个位置,然后把这个位置的物理地址给launch就可以了.一般说来,这个位置就是bib里定义的imagestart。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值