|
http://blog.csdn.net/rikeyone/article/details/514830180 H+ @3 @7 @8 K D
& v2 w) k% N# ~3 V& }
可以把第二阶段引导分为多级引导:
, T b) T1 ]$ k2 ?# G' x1 w比如分为如下所示的三级引导过程: " I- U/ ]' {; n, A
(1) firstMBRC
$ [: q# `, `2 y$ [ o第一级引导程序需要符合BROM引导所需要的格式,会调用BROM中的驱动函数把secondMBRC拷贝到shareRAM中校验,并跳转执行,这个都是独立代码,一般使用汇编来做。
t; x1 N7 t( v0 j(2) secondMBRC(uboot-spl)
% f6 R! q, {; W5 s0 a( `第二级引导程序的功能是调用BROM中的驱动函数把mainMBRC拷贝到DDR 中校验,并跳转执行。第二阶段可以使用uboot中的spl来实现,也可以由自己独立代码实现。
0 F/ n7 `; B4 j* k1 u( y' `(3) mainMBRC(uboot)
. `3 R; g _0 x5 W. i/ C2 i3 q第三级是主要的引导程序,前面的两级引导都是为了加载mainMBRC,它的主要功能是显示启动logo,加载kernel、dtb、rootfs文件系统,并且启动kernel。一般使用uboot来做。
, U m$ ^& z% ^- V, W4 S1 [所以在boot分区,我们要烧写入这三部分的引导代码,mbrc、uboot-spl、uboot。 |
|