慢慢分析linux代码--启动部分

本文详细介绍了在Linux 2.6.12环境下,针对s3c2440平台的zImage生成流程。从make命令开始,经过vmlinux生成、压缩、链接等步骤最终得到zImage。通过对Makefile和vmlinux.lds文件的分析,揭示了启动入口_start的实现细节。

环境:linux2.6.12+s3c2440

 

首先分析我们的zImage是怎么来的吧,在网上找到两篇参考文章:

http://blogold.chinaunix.net/u3/111381/showart.php?id=2198446

http://www.embedu.org/Column/Column13.htm.

看了之后知道,在输入了make之后,生成zImage的过程如下:

1.在linux内核顶层根目录底下生成vmlinux,然后将其二进制化得到/arch/arm/boot目录底下的Image。

2.将image压缩得到piggy.o。

3.将head.o,piggy.o链接得到/arch/arm/boot/compress目录下的vmlinux。

4.对此vmlinux进行二进制化得到/arch/arm/boot目录下的zImage。

 

因此,我从/arch/arm/boot/compress目录底下的vmlinux开始分析。还是从Makefile着手,知道链接文件为vmlinux.lds。查看练级文件得知入口为_start,根据此信息顺藤摸瓜,就找到了当前目录底下的head.S了。打开发现这个里面有很多伪指令,所以使用arm-linux-objdump -d选项对head.o进行反汇编,这下就不管那些伪指令了,都被编译器预处理掉了,剩下的就是纯粹的arm指令了。O(∩_∩)O哈哈~!!!不过需要注意的一个问题是:vmlinux.lds最先链接的段是_start段,而不是_text段。接下来就开始逐句分析head.S了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值