1.Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。
2.Bootloader的多种启动方式:
网络启动方式
磁盘启动方式
Flash启动方式
3.Flash启动方式介绍:
NOR Flash可以支持随机访问,所以代码是可以直接在Flash上执行的。Bootloader一般是存储在Flash芯片上的。另外,Linux内核映像和RAMDISK也可以存储在Flash上。通常需要把Flash分区使用,每个区的大小应该是Flash擦除块大小的整数倍。
Bootloader一般放在Flash的底端或者顶端;
分配参数区作为Bootloader的参数保存区域;
内核映像区,Bootloader引导Linux内核,就是要从这个地方把内核映像解压到RAM中去,然后跳转到内核映像入口执行;
文件系统区,如果使用JFFS2文件系统,将直接挂接为根文件系统;
数据区。
4.Bootloader的种类:
LILO
GRUB
Loadlin
ROLO
Etherboot
LinuxBIOS
BLOB
U-boot
RedBoot
5.关于U-boot:
ARM处理器的芯片商很多,所以每种芯片的开发板都有自己的Bootloader。结果ARM bootloader也变得多种多样。最早有为ARM720处理器的开发板的固件,又有了armboot,StrongARM平台的blob,还有S3C2410处理器开发板上的vivi等。现在armboot已经并入了U-Boot,所以U-Boot也支持ARM/XSCALE平台。U-Boot已经成为ARM平台事实上的标准Bootloader。
6.U-Boot源码结构:
文件分为3类:
第1类目录与处理器体系结构或者开发板硬件直接相关;
第2类目录是一些通用的函数或者驱动程序;
第3类目录是U-Boot的应用程序、工具或者文档。
7.U-Boot的源码顶层目录说明:
目 录 特 性 解 释 说 明
board 平台依赖 存放电路板相关的目录文件,例如:RPXlite(mpc8xx)、smdk2410(arm920t)、sc520_cdp(x86) 等目录
cpu 平台依赖 存放CPU相关的目录文件,例如:mpc8xx、ppc4xx、arm720t、arm920t、 xscale、i386等目录
lib_ppc 平台依赖 存放对PowerPC体系结构通用的文件,主要用于实现PowerPC平台通用的函数
lib_arm 平台依赖 存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数
lib_i386 平台依赖 存放对X86体系结构通用的文件,主要用于实现X86平台通用的函数
include 通用 头文件和开发板配置文件,所有开发板的配置文件都在configs目录下
common 通用 通用的多功能函数实现
lib_generic 通用 通用库函数的实现
Net 通用 存放网络的程序
Fs 通用 存放文件系统的程序
Post 通用 存放上电自检程序
drivers 通用 通用的设备驱动程序,主要有以太网接口的驱动
Disk 通用 硬盘接口程序
Rtc 通用 RTC的驱动程序
Dtt 通用 数字温度测量器或者传感器的驱动
examples 应用例程 一些独立运行的应用程序的例子,例如helloworld
tools 工具 存放制作S-Record 或者 U-Boot格式的映像等工具,例如mkimage
Doc 文档 开发使用文档