U-Boot,全称 Universal Boot Loader,即通用引导程序,是遵循GPL条款的开放源码项目。它的源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。U-Boot不仅仅支持嵌入式Linux系统的引导,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。
U-Boot的工作模式有启动加载模式和下载模式。启动加载模式是Bootloader的正常工作模式,嵌入式产品发布时,Bootloader必须工作在这种模式下,Bootloader将嵌入式操作系统从FLASH中加载到SDRAM中运行,整个过程是自动的。下载模式就是Bootloader通过某些通信手段将内核映像或根文件系统映像等从PC机中下载到目标板的FLASH中。用户可以利用Bootloader提供的一些命令接口来完成自己想要的操作。
Android体系中U-Boot的大致引导流程:
U-Boot的源码目录结构
1、board:开发板相关的配置文件,一个子文件对应一个开发板配置;
2、common:通用的多功能函数实现,比如环境,命令,控制台相关函数等;
3、cpu:存放特定CPU结构相关的目录;
4、disk:硬盘接口程序;