U-Boot,通用Bootloader,是遵循GPL条款的开放源代码项目,其前身是德国DENX软件工程中心的Wolfgang Denk基于8xxROM的源码创建的PPCBOOT工程,后来整理代码结构使得非常容易增加其它类型的开发板、其他架构的CPU,增加更多的功能,比如起动Linux、下载S-Record格式的文件、通过网络启动、通过PCMCIA/CompactFLash/ATA dik/SCSI等方式起动。增加ARM架构CPU及其他更多CPU的支持后,改名为U-Boot。
它的名字“通用”有两层含义:可以引导多种操作系统、支持多种架构的CPU。它支持如下操作系统:Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等,支持如下架构的CPU:PowerPC、MIPS、x86、ARM、NIOS、XScale等。
以U-Boot-1.1.6为例,它的根目录下面有26个子目录,可以分为4类:
(1)平台相关的或者开发板相关的。
(2)通用的函数。
(3)通用的设备驱动程序。
(4)U-Boot工具、示例程序、文档。
这26个子目录的功能和作用:
board:开发板相关的,对应不同配置的电路板(即使CPU相同),比如smdk2410,sbc2410x
cpu:平台相关的,对应不同的CPU,比如arm920t、arm925t、i386等;在它们的子目录下仍可以进一步细分,比如arm920t下就有at91rm9200、s3c24x0
lib_xxx:平台相关,某一架构通用的文件
include:通用的函数,头文件和开发板配置文件,开发板的配置文件都放在include/configs目录下,U-Boot没有make menuconfig类似的菜单来进行可视化配置,需要手动地修改配置文件中的宏定义
lib_generic:通用的函数库,比如printf等
common:通用的函数,多是对下一层驱动程序的进一步封装。
disk:硬盘接口程序
drivers:各类具体设备的驱动程序,基本上都可以通用,他们是通过宏从外面引入平台/开发板相关的函数
dtt:数字温度测量器或者传感器的驱动
fs:文件系统
nand_spl:U-Boot一般从ROM、NOR Flash等设备启动,现在开始支持从NAND Flash启动,但是支持的CPU种类还不多
net:各种网络协议
post:上电自检程序
rtc:实时时钟的驱动
doc:开发、使用文档
examples:示例程序,一些测试程序,可以使用U-Boot下载后运行。
tools:工具,制作S-Record、U-Boot格式映像的工具,比如mkimage
目前U-Boot-1.1.6支持10种架构,根目录下有10个类似lib_i386的目录;31个型号的CPU,cpu目录下有31个子目录;214中开发板,board目录下有214个子目录,很容易从中找到与自己的板子相似的配置,在上面稍作修改即可使用。
|