|
http://blog.csdn.net/rikeyone/article/details/51483018
1 H) Z( h! E5 _/ L8 Q
3 a$ k8 s$ I, T( R2 z9 J: u3 o可以把第二阶段引导分为多级引导:
' L+ s' ]- b! r4 |9 D4 P- v, B. @$ G比如分为如下所示的三级引导过程:
) ^- E0 u, e1 H(1) firstMBRC
1 Y/ d( h9 a2 a, t3 M* l第一级引导程序需要符合BROM引导所需要的格式,会调用BROM中的驱动函数把secondMBRC拷贝到shareRAM中校验,并跳转执行,这个都是独立代码,一般使用汇编来做。 4 M: i( q; ?) x: |" t ~
(2) secondMBRC(uboot-spl)
2 x" P7 I8 X4 ^3 ?& O/ F% Q1 K第二级引导程序的功能是调用BROM中的驱动函数把mainMBRC拷贝到DDR 中校验,并跳转执行。第二阶段可以使用uboot中的spl来实现,也可以由自己独立代码实现。
4 n$ ]/ t8 D. A+ g/ R, u(3) mainMBRC(uboot) 3 P( Q/ s% D0 f4 Z
第三级是主要的引导程序,前面的两级引导都是为了加载mainMBRC,它的主要功能是显示启动logo,加载kernel、dtb、rootfs文件系统,并且启动kernel。一般使用uboot来做。 & n' }0 m+ \# T
所以在boot分区,我们要烧写入这三部分的引导代码,mbrc、uboot-spl、uboot。 |
|