今天偶然翻看以前的比较,突然发现一些基础的东西,跟大家分享下
Bootloader主要任务是:1初始化硬件,2启动操作系统
那么为什么要移植bootloader呢,1没种不同的CPU体系结构不同。2具体嵌入式板级设备的配置不同。3基于同一种cpu,但他们硬件资源配置可能不一致。
bootloader分两阶段启动:
第一阶段:1硬件设备初始化
(汇编) 2设置好堆栈 (这两步在flash中为第二阶段C语言准备好环境)
第二阶段: 1硬件设备初始化
(C语言) 2将内核映像和根文件系统映像从flash上读到RAM中
3调用内核
下面说一下我们经常用的Uboot
Uboot:支持多种嵌入式操作系统,支持多种嵌入式CPU
目录结构
Board:和开发板相关的文件
common:实现Uboot所支持的命令
cpu:与特定cpu架构相关的代码。每一款Uboot下支持的cpu在该目录下对应一个子目录。
Disk:对磁盘的支持。
doc:文档目录。
Drivers:Uboot支持的设备驱动程序都放在该目录,比如各种网卡,支持CFI的flash,串口,USB等。
FS:文件系统的支持。
include:头文件 .config目录下,有与开发板相关的配置头文件。
NET:与网络协议栈相关的代码。
Tools:生成Uboot的工具。