U-boot简介及启动过程

2012-01-03 由 创建在标签 开发

U-Boot简介

U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD、VxWorks、 QNX、 RTEMS、ARTOS、LynxOS嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD、NetBSD、FreeBSD、4.4BSD、Linux、SVR4、Esix、Solaris、Irix、SCO、Dell、NCR、VxWorks、LynxOS、pSOS、QNX、RTEMS、ARTOS。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心WolfgangDenk本人精湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。

选择U-Boot的理由:

  1. 开放源码;
  2. 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, ynxOS;
  3. 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;
  4. 较高的可靠性和稳定性;
  5. 较高的可靠性和稳定性;
  6. 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;
  7. 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
  8. 较为丰富的开发调试文档与强大的网络技术支持;

U-boot源码结构

解压就可以得到全部u-boot源程序。在顶层目录下有18个子目录,分别存放和管理不同的源程序。这些目录中所要存放的文件有其规则,可以分为3类。

  • 第1类目录与处理器体系结构或者开发板硬件直接相关;
  • 第2类目录是一些通用的函数或者驱动程序;
  • 第3类目录是u-boot的应用程序、工具或者文档。

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 文档 开发使用文档

设备启动过程

开机或者重启后分为两个步骤处理,处理器先完成基本的初始化,然后将执行权交给U-boot来完成初始化。

处理器执行如下步骤:

  1. 执行主引导配置,初始化中断向量、异常向量、时钟和SDRAM;
  2. 将U-Boot的代码从Flash解压到RAM;
  3. 将执行控制权交给U-Boot;

U-boot执行如下几个步骤:

  1. 配置的以太网MAC地址、Flash、串口;
  2. 加载存储在非易失性内存中的环境变量的设置;
  3. 过几秒钟(可编程的时间长度),自动启动预先安装内核;

U-boot相关参考站点

  1. 官方网站源码包(http://sourceforge.net/projects/U-Boot);
  2. U-Boot官方网站的DULG(The DENX U-Boot and Linux Guide)文档http://www.denx.de/twiki/bin/view/DULG/Manual);
标签:,

无评论

发表评论