|
http://blog.csdn.net/rikeyone/article/details/51483018
& G9 h2 ~9 b( W2 y. a& Q3 L5 k: I
' P# u! R; `% _1 g5 o可以把第二阶段引导分为多级引导: ! E2 Y/ Z: f5 { a; @2 L7 y& q
比如分为如下所示的三级引导过程: ) E( G! |6 D$ U; W5 G
(1) firstMBRC ! ~1 g/ V) o, ~9 U3 i$ W! r: M' x
第一级引导程序需要符合BROM引导所需要的格式,会调用BROM中的驱动函数把secondMBRC拷贝到shareRAM中校验,并跳转执行,这个都是独立代码,一般使用汇编来做。 ! R" m- p3 j! }! H
(2) secondMBRC(uboot-spl) 5 _6 G! ^, h0 j% @4 b8 G
第二级引导程序的功能是调用BROM中的驱动函数把mainMBRC拷贝到DDR 中校验,并跳转执行。第二阶段可以使用uboot中的spl来实现,也可以由自己独立代码实现。 / O) i6 l* j; z4 k" T- s
(3) mainMBRC(uboot) 1 O# M4 x* G, z9 ~, l- s: q: W
第三级是主要的引导程序,前面的两级引导都是为了加载mainMBRC,它的主要功能是显示启动logo,加载kernel、dtb、rootfs文件系统,并且启动kernel。一般使用uboot来做。
. X, v" Y. M) P2 p. H所以在boot分区,我们要烧写入这三部分的引导代码,mbrc、uboot-spl、uboot。 |
|