u-boot分析二

本文详细分析了u-boot的编译过程,包括从源码编译成.o文件,再到静态库链接成u-boot。同时,介绍了u-boot如何调用lzma压缩和mkimage制作镜像。在启动阶段,从汇编初始化开始,逐步执行bootstrap_board_init_f、bootstrap_board_init_r等关键函数,完成uboot的解压和跳转到_start函数,最后进入board_init_r进行系统设置并启动kernel。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继续分析编译过程
boot编译的方式是将各个目录下的源码编译成.o,然后通过mips-linux-uclibc-ar

命令创建成静态库, 
./lib_bootstrap/libbootstrap.a 
./cpu/mips/libmips.a 
./board/atheros/board955x/libboard955x.a 
./lib_mips/libmips.a 
./lib_generic/libgeneric.a 
./common/libcommon.a 
./drivers/libdrivers.a 
./rtc/librtc.a 
./net/libnet.a 
./post/libpost.a 
./post/cpu/libcpu.a 

到最后通过连接脚本将这些静态库链接成u-boot
u-boot通过调用lzma压缩,再调用mkimage制作镜像。
mkimage主要是给压缩后的镜像添加一个头,这个头的结构如下

typedef struct image_header { 
  uint32_t ih_magic; /* Image Header Magic Number*/ 
  uint32_t ih_hcrc; /* Image Header CRC Checksum*/ 
  uint32_t ih_time; /* Image Creation Timestamp*/ 
  uint32_t ih_s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值