|
http://blog.csdn.net/rikeyone/article/details/51483018
! k9 O- T. t, ]+ n9 A7 @) f6 x1 R
$ i% O1 [$ F0 o! x( Q可以把第二阶段引导分为多级引导: 4 |) u$ X8 I* }5 r" A
比如分为如下所示的三级引导过程: - f. a, y( T" N3 {8 ~5 O0 m
(1) firstMBRC
) l+ V$ I7 C* v) ^: S2 S9 P第一级引导程序需要符合BROM引导所需要的格式,会调用BROM中的驱动函数把secondMBRC拷贝到shareRAM中校验,并跳转执行,这个都是独立代码,一般使用汇编来做。 7 V+ w% z, l" q1 ~7 @- [. z. ]
(2) secondMBRC(uboot-spl)
; `4 p1 g: s) `& T& R6 c2 E第二级引导程序的功能是调用BROM中的驱动函数把mainMBRC拷贝到DDR 中校验,并跳转执行。第二阶段可以使用uboot中的spl来实现,也可以由自己独立代码实现。 ! Q) v; H" q3 o: R
(3) mainMBRC(uboot)
/ s/ }# x) x, W) N7 b5 u9 X0 ]9 I0 u第三级是主要的引导程序,前面的两级引导都是为了加载mainMBRC,它的主要功能是显示启动logo,加载kernel、dtb、rootfs文件系统,并且启动kernel。一般使用uboot来做。 # X. A. v; ]& D- s: m8 p$ p1 M
所以在boot分区,我们要烧写入这三部分的引导代码,mbrc、uboot-spl、uboot。 |
|