uboot启动流程

分两阶段,第一阶段主要用汇编完成,第二阶段主要用c完成。

个人觉得两个阶段的分工并没有什么明显的要求,很多硬件的初始化可以放到第一阶段也可以放到第二阶段。只不过有一些复杂工作用汇编比较麻烦。

 

  一般来说第一阶段工作:

1. 硬件设备初始化。

2. 为加载bootloader的第二阶段代码准备RAM空间。

3. 复制bootloader的第二阶段代码到RAM空间中。

4. 设置好栈。

5. 跳转到第二阶段代码的c入口点。

 

第二阶段:

1. 初始化本阶段要用到的硬件设备。

2. 检测系统内存映射。

3. 将内核映像和根文件系统映像从flash督导RAM空间。

4. 为内核设置启动参数。

5. 调用内核。

 

Bootloader与内核的交互:

Bootloader与内核的交互是单向的,他们不能同时运行,bootloader将各类参数放在某一个约定好的位置,再启动内核,内核启动后从这个位置获得参数(比如内存的起始和结束地址)。

 

下面这个文件就是某个bootloader设计的详细架构。

 





posted @ 2016-03-08 21:44  DChipNau  阅读(260)  评论(0编辑  收藏  举报