接上一节
README分析
4412启动的步骤:
以下都是在三星Exynos4412情况(有误请指正,谢谢),其他芯片仅供参考
1. iROM
称为:BL0,内部程序由芯片厂商提供,固化启动代码
a.iROM提供了执行arm代码的基本环境:关闭IRQ和MMU,初始化系统时钟,设置看门狗,初始化堆和栈
b.加载BL1,从引导设备中:SD/MMC、eMMC4.3、eMMC4.4和NAND。
c.iROM检查下载的BL1的完整性。
详细需要看流程图
2. BL1:(BootLoader1 = Header + Encrypted BL1 + Signature)
a.在iRAM中运行(IRAM上电就能用)
b.初始化IRQ和SVC堆栈
c.BL1代码将BL2映像复制到内部RAM,并检查BL2映像的完整性。
d.为了安全考虑,有秘钥,校验下一个文件 ()
注:8k或者15K(iROM写死了)
3. BL2:(BootLoader2 = BL2 + Checksum + Signature + Padding)
a.在iRAM中运行
b. BL2的前部分是u-boot的前14K
c.初始化IRQ和SVC堆栈,设置系统时钟,初始化DRAM,初始化某些设备
d.加载OS image(BL3)
4. u-boot
a. 最大的裸机程序(值得仔细研究)
b.初始化IRQ和SVC堆栈,设置系统时钟,初始化DRAM,
c.初始化各种设备驱动,个人认为串口最重要了,然后网络等等,
(其他的相对来说不是很重要,毕竟只是一个过渡)
u-boot-xxx.bin
这个应该是根据板子的需求,进行结合生成最后的u-boot.bin文件;
如下是:u-boot-xxx.bin=BL1+BL2+padding+u-boot+tzsw
cat
E4412_N.bl1.SCP2G.bin
bl2.bin
all00_padding.bin
u-boot.bin
tzsw_SMDK4412_SCP_2GB.bin
> u-boot-iTOP-4412.bin