专题4-我是bootloader设计师-uboot工作流程分析+G-boot构架设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lvjianxin6015/article/details/53983546

一、uboot工作流程分析

1、程序的入口

首先在uboot的Makefile中查看关键词“smdk2440”,在board/samsung(board代表开发板支持)中有个smdk2440的文件夹,里面有链接器脚本u-boot.lds,在u-boot.lds中找到代码段的第一行cpu/s3c24**/start.o,即start.S(位于cpu/s3c24**)为程序首先执行的文件,再看一下入口指令ENTRY(_start),即_start为程序的入口。
这里写图片描述

找到程序的入口后,通过分析uboot关注程序去实现了什么(看注释),而暂时不关心具体是怎么实现的。

2、第一阶段程序分析(BL1)

(B:相对跳转,不会对pc指针产生实质性的影响,只会相对修改。所以要明确链接地址(用反汇编可以查看链接地址和机器码)和pc指针值之间的区别)
这里写图片描述

3、第二阶段程序分析(BL2)
入口语句:ldr pc,start_armboot(直接修改了pc指针,跳到内存中去执行)
(略)

二、bootloader构架设计(G-boot)

第一阶段:
这里写图片描述

第二阶段:
这里写图片描述
备注:
bootm要做的事情:
1. 读取头部,把内核拷贝到合适的地方
2. 把参数给内核准备好,并告诉内核参数的首地址
3. 引导内核
bootm可以参考

http://blog.csdn.net/the_vampire_diary/article/details/13861021

猜你喜欢

转载自blog.csdn.net/lvjianxin6015/article/details/53983546