|
http://blog.csdn.net/rikeyone/article/details/51483018
7 y1 F, ]3 I+ c7 c
$ z6 T& I& q% @9 i5 F可以把第二阶段引导分为多级引导: 0 ^" W5 }' b- D" r, I
比如分为如下所示的三级引导过程: : r' `; P, L% _. ^* M: W% \9 N
(1) firstMBRC
7 N- a/ t% Z: M0 ~, c( e: i, r第一级引导程序需要符合BROM引导所需要的格式,会调用BROM中的驱动函数把secondMBRC拷贝到shareRAM中校验,并跳转执行,这个都是独立代码,一般使用汇编来做。 2 s/ {4 p- {3 B
(2) secondMBRC(uboot-spl)
% Z1 J2 |4 K, ^) R) O) p6 }# q/ i第二级引导程序的功能是调用BROM中的驱动函数把mainMBRC拷贝到DDR 中校验,并跳转执行。第二阶段可以使用uboot中的spl来实现,也可以由自己独立代码实现。 , O8 k3 I3 F1 m' {- J# N. ?5 r% @
(3) mainMBRC(uboot) # c1 @5 N% x9 p6 I( `3 @
第三级是主要的引导程序,前面的两级引导都是为了加载mainMBRC,它的主要功能是显示启动logo,加载kernel、dtb、rootfs文件系统,并且启动kernel。一般使用uboot来做。 # e$ X. r4 Q) v/ m" R) O
所以在boot分区,我们要烧写入这三部分的引导代码,mbrc、uboot-spl、uboot。 |
|