|
|
http://blog.csdn.net/rikeyone/article/details/514830185 {3 `8 U! _4 w9 T q8 f$ J- f- d
# R N1 ~* U. |% b
可以把第二阶段引导分为多级引导:
' w. M( x& k, u) R9 I. ^1 T$ z比如分为如下所示的三级引导过程: 9 W, D+ c; \' `2 n& g6 W% G
(1) firstMBRC ! I* C( q3 R% m6 N4 w8 t
第一级引导程序需要符合BROM引导所需要的格式,会调用BROM中的驱动函数把secondMBRC拷贝到shareRAM中校验,并跳转执行,这个都是独立代码,一般使用汇编来做。 * A- U+ y& |9 J% P# _* n
(2) secondMBRC(uboot-spl) `8 k" x% {7 m7 S
第二级引导程序的功能是调用BROM中的驱动函数把mainMBRC拷贝到DDR 中校验,并跳转执行。第二阶段可以使用uboot中的spl来实现,也可以由自己独立代码实现。 $ e, d% z2 X+ H2 L% s0 w. i ~
(3) mainMBRC(uboot)
# t9 O2 k5 L: w" n) Q$ I% O, X第三级是主要的引导程序,前面的两级引导都是为了加载mainMBRC,它的主要功能是显示启动logo,加载kernel、dtb、rootfs文件系统,并且启动kernel。一般使用uboot来做。
4 C: c( a. A% U7 N* h所以在boot分区,我们要烧写入这三部分的引导代码,mbrc、uboot-spl、uboot。 |
|