|
发表于 2017-1-18 14:12:39
|
显示全部楼层
http://blog.csdn.net/rikeyone/article/details/51483018
; w) ?+ Y, p V* d; A
, N" N) U) c5 ~1 q5 \) j可以把第二阶段引导分为多级引导:
; \' ~6 }$ H: x* ^3 G% n比如分为如下所示的三级引导过程: ( x7 |7 S0 `& `) y* i/ K
(1) firstMBRC : N5 M3 c0 M# X* w4 b" l+ `( D
第一级引导程序需要符合BROM引导所需要的格式,会调用BROM中的驱动函数把secondMBRC拷贝到shareRAM中校验,并跳转执行,这个都是独立代码,一般使用汇编来做。
$ N' Z: }8 i) k( v(2) secondMBRC(uboot-spl)
/ e8 k* o8 v W第二级引导程序的功能是调用BROM中的驱动函数把mainMBRC拷贝到DDR 中校验,并跳转执行。第二阶段可以使用uboot中的spl来实现,也可以由自己独立代码实现。 ' }5 Y$ a7 u- e3 m$ Q+ l, k
(3) mainMBRC(uboot)
5 p( x2 s0 S" H" D2 l第三级是主要的引导程序,前面的两级引导都是为了加载mainMBRC,它的主要功能是显示启动logo,加载kernel、dtb、rootfs文件系统,并且启动kernel。一般使用uboot来做。 H, @. Q( ]/ D" B' u
所以在boot分区,我们要烧写入这三部分的引导代码,mbrc、uboot-spl、uboot。 |
|