2 U-Boot分析与移植
2.1 U-Boot工程简介
U-Boot,全称为Universal BootLoader,即通用Bootloader,是遵循GPL条款的开放源代码项目。其前身是由德国DENX软件工程中心的WolfgangDenk基于8xxROM的源码创建的PPCBOOT工程。后来整理代码结构使得非常容易增加其他类型的开发板、其他架构的CPU(原来只支持PowerPC);增加更多的功能,比如启动Linux、下载S-Record格式的文件、通过网络启动、通过PCMCIA/CompactFLash/ATA disk/SCSI等方式启动。增加ARM架构CPU及其他更多CPU的支持后,改名为U-Boot。
它的名字“通用”有两层含义:可以引导多种操作系统、支持多种架构的CPU。它支持如下操作系统:Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等,
支持如下架构的CPU:PowerPC、MIPS、x86、ARM、NIOS、XScale等。
U-Boot有如下特性:
开放源码;
支持多种嵌入式操作系统内核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;
支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;
较高的可靠性和稳定性;
高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;
丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
较为丰富的开发调试文档与强大的网络技术支持;
支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统
支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;
可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤对Linux支持最为强劲;
支持目标板环境变量多种存储方式,如FLASH、NVRAM、EEPROM;
CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好;
上电自检功能:SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;
特殊功能:XIP内核引导;
可以从获得U-Boot的最新版本,如果使用过程中碰到问题或是发现Bug,可以通过邮件列表网站获得帮助。
最新的更新代码地址
2.2 U-Boot源码结构
本书在u-boot-1.1.6的基础上进行分析和移植,从sourceforge网站下载u-boot-1.1.6.tar.bz2后解压即得到全部源码。U-Boot源码目录结构比较简单、独立,目录结构也比较浅,很容易全部掌握。
u-boot-1.1.6根目录下共有26个子目录,可以分为4类:
(1)平台相关的或开发板相关的。
(2)通用的函数。
(3)通用的设备驱动程序。
(4)U-Boot工具、示例程序、文档。
先将这26个目录的功能与作用如表15.2所示。
表2 U-Boot顶层目录说明
<table fck__showtableborders?="">
目录
特性
解释说明
board
开发板相关
对应不同配置的电路板(即使CPU相同),比如smdk2410、sbc2410x
cpu
平台相关
对应不同的CPU,比如arm920t、arm925t、i386等;在它们的子目录下仍可以进一步细分,比如arm920t下就有at91rm9200、s3c24x0
lib_i386类似
某一架构下通用的文件
include
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-5.html
年纪轻轻就挨了不少刀了
那些去抢苹果手机的脑残该醒醒了