zImage自解压过程解析

zImage自解压过程解析


编译过程参考

  上文链接中解释了编译生成镜像过程,本文主要分析内核zImage自解压过程。
  zImage包含了自解压程序和内核镜像程序。

  自解压程序的链接文件位于 arch/arm/boot/compressed/vmlinux.lds.S。链接脚本指定了程序入口ENTRY(_start)
  程序入口位于arch/arm/boot/compressed/head.S。自解压程序head.S需要确认解压后的内核映像绝对地址。

*1)定义了CONFIG_AUTO_ZRELADDR
*      ZRELADDR是已解压内核最终存放的物理地址
*      如果AUTO_ZRELADDR被选择了, 这个地址将会在运行是确定:
*      将当pc值和0xf8000000做与操作,
*      并加上TEXT_OFFSET(内核最终存放的物理地址与内存起始的偏移)
*      这里假定zImage被放在内存开始的128MB内
*2)没有定义CONFIG_AUTO_ZRELADDR
*      直接使用zreladdr(此值位于arch/arm/mach-xxx/Makefile.boot文件确定)

  也可以在内核编译时指定loadaddr,设置内核的物理地址。例如:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LOADADDR=0x40008000 uImage -j24
  首先检查是否会发生自我覆盖。会发生自我覆盖的情况,会先进行镜像的搬运。
  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值