前言:近期在学习U-Boot,学习过程不外乎学习文档,阅读代码。U-BOOT源码树提供的README文档讲得比较详细,可以作为一个起点,看了下网上似乎也没有完全的中文翻译,因此才有翻译的打算,一方面可以共享,另一方面今后自己查阅起来也比较方便。本系列翻译的内容来源于U-BOOT 1.3.4源码目录下的README文件,不足之处,还请各位大侠批评指正。 概述: =====
本目录包含U- Boot的源代码。U-Boot是一个用于嵌入式单板的bootloader,支持PowerPC, ARM, MIPS及其它几种处理器。它可以安装在boot ROM中,用来对硬件进行初始化和测试,或者下载及运行应用代码。
U-Boot的开发与Linux联系紧密:有一部分代码来源于Linux内核代码树,两者有一些相同的头文件,并且U-Boot为支持Linux映像的启动也提供了特别的支持。
为了使该软件能易于配置及扩展,我们已经做了一些工作。比如所有操作命令都以相同的调用接口实现,这样便于添加新的命令。此外,你还可以在monitor上动态地加载及运行代码,而不是向monitor添加不太常用的代码(比如硬件测试程序)。 状态: =====
对于在Makefile中存在配置的单板,一般是经过一定的测试,并可以为是\可工作的\。实际上,很多单板也正式地在生产中使用。
遇到问题时,请在CHANGELOG和CREDITS两个文件中查找一个具体的移植是由谁贡献的。MAINTAINERS文件列出了单板维护者。
获取帮助: =========
如果你对U-Boot有疑问,或者想为U-Boot贡献,你应该向U-Boot邮件列表 boot-users@lists.sourceforge.net>发送消息。在提问前,请搜索邮件列表的历史记录:http://lists.sourceforge.net/lists/listinfo/u-boot-users/ 获取源代码: =========== U-Boot源代码使用git仓库维护,地址为:git://www.denx.de/git /u-boot.git;你也可以在线浏览:http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git; a=summary 该页面的\链接允许你下载任一版本的源码树。官方发布可以通过FTP下载:ftp://ftp.denx.de/pub/u-boot/ 预编译(并经过测试)的映像可以从这里下载:ftp://ftp.denx.de/pub/u-boot/images/ 我们来自哪里: ============= - 从8xxrom源代码开始 - 建立了 PPCBoot 项目 (http://sourceforge.net/projects/ppcboot) - 清理代码 - 让代码更易于添加自定义单板 - 可以添加其它类型的 [PowerPC] CPU - 扩展了函数,特别是: * 为 Linux 引导程序提供了扩展的接口 * 下载 S-Record * 从网络引导 * 从 PCMCIA / CompactFlash / ATA disk / SCSI ... 等设备引导 - 建立了ARMBoot项目 (http://sourceforge.net/projects/armboot) - 添加了其它CPU家族 (从ARM开始) - 建立了 U-Boot 项目 (http://sourceforge.net/projects/u-boot) - 当前项目的主页: http://www.denx.de/wiki/U-Boot 命名与拼写: =========== 本项目的官方名称为\。在所有文档中都应使用\。比如: 这是U-Boot项目的README文件。 文件名等,也应基于u-boot字符串。比如: include/asm-ppc/u-boot.h #include 变量名,宏定义等,也需要基于u_boot或者U_BOOT来定义。比如: U_BOOT_VERSION u_boot_logo IH_OS_U_BOOT u_boot_hush_start 版本编号: ========= U-Boot使用3级版本编号,包含一个版本,子版本及补丁级别:\表示版本2,子版本34,补丁级别4。 补丁级别用于表示发行版本间的某个阶段,比如,官方发布版本的补丁级别总是0。 目录结构: ==================== - board 与单板相关的文件 - common 一些与架构无关的函数 - cpu 针对特定CPU的文件 - 74xx_7xx 针对Freescale MPC74xx 和 7xx CPU 的文件 - arm720t 针对ARM 720 CPU 的文件 - arm920t 针对ARM 920 CPU 的文件 - at91rm9200 针对Atmel AT91RM9200 CPU 的文件 - imx 针对Freescale MC9328 i.MX CPU 的文件 - s3c24x0 针对Samsung S3C24X0 CPU 的文件 - arm925t 针对ARM 925 CPU 的文件 - arm926ejs 针对ARM 926 CPU 的文件 - arm1136 针对ARM 1136 CPU 的文件 - at32ap 针对Atmel AVR32 AP CPU 的文件 - i386 针对i386 CPU 的文件 - ixp 针对Intel XScale IXP CPU 的文件 - leon2 针对Gaisler LEON2 SPARC CPU 的文件 - leon3 针对Gaisler LEON3 SPARC CPU 的文件 - mcf52x2 针对Freescale ColdFire MCF52x2 CPU 的文件 - mcf5227x 针对Freescale ColdFire MCF5227x CPU 的文件 - mcf532x 针对Freescale ColdFire MCF5329 CPU 的文件 - mcf5445x 针对Freescale ColdFire MCF5445x CPU 的文件 - mcf547x_8x 针对Freescale ColdFire MCF547x_8x CPU 的文件 - mips 针对MIPS CPU 的文件 - mpc5xx 针对Freescale MPC5xx CPU 的文件 - mpc5xxx 针对Freescale MPC5xxx CPU 的文件 - mpc8xx 针对Freescale MPC8xx CPU 的文件 - mpc8220 针对Freescale MPC8220 CPU 的文件 - mpc824x 针对Freescale MPC824x CPU 的文件 - mpc8260 针对Freescale MPC8260 CPU 的文件 - mpc85xx 针对Freescale MPC85xx CPU 的文件 - nios 针对Altera NIOS CPU 的文件 - nios2 针对Altera Nios-II CPU 的文件 - ppc4xx 针对AMCC PowerPC 4xx CPU 的文件 - pxa 针对Intel XScale PXA CPU 的文件 - s3c44b0 针对Samsung S3C44B0 CPU 的文件 - sa1100 针对Intel StrongARM SA1100 CPU 的文件 - disk 处理磁盘驱动器分区的代码 - doc 文档 (不要报太大期望^_^) - drivers 常用的设备驱动 - dtt 数字温度计及调节器的驱动 - examples 示范代码 - include 头文件 - lib_arm 针对ARM架构的文件 - lib_avr32 针对AVR32架构的文件 - lib_generic 针对所有架构的文件 - lib_i386 针对i386架构的文件 - lib_m68k 针对m68k架构的文件 - lib_mips 针对MIPS架构的文件 - lib_nios 针对NIOS架构的文件 - lib_ppc 针对PowerPC 架构的文件 - lib_sparc 针对SPARC架构的文件 - libfdt 支持平坦设备树(flattened device trees)的库文件 - net 网络代码 - post 上电自检 - rtc 实时时钟驱动 - tools 编译S-Record或U-Boot映像等相关工具 软件配置: ======================= 配置一般使用宏定义实现;使用宏的原因是避免可能存在的不可达代码。 有两类配置变量: * _OPTIONS_ 配置: 这类配置以\开始,用户可以自行选择。 * _SETTINGS_ 配置: 这类配置以\开始,与硬件相关。如果你不清楚它的含义,则不要随便修改。 后面我们会添加一个配置工具,可能类似于Linux Kernel配置工具。目前,我们还得手动完成配置,比如建一些软链接,编辑一些配置文件。下面我们使用TQM8xxL单板作为范例。 选择处理器架构与单板类型: