1、 U-Boot 简介
U-Boot,全称 Universal Boot Loader,是遵循 GPL 条款的开源项目。从 FADSROM、8xxROM、PPCBoot、ARMBoot 逐步发展演化而来。U-Boot 不仅支持嵌入式 Linux 系统,它还可用于 NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS 等嵌入式操作系统的引导。 U-Boot 除了支持 PowerPC 系列的处理器外,还能支持 MIPS、 x86、 ARM、 NIOS、 XScale等多种常见架构的处理器。
2、编译 U-Boot
请把光盘资料中的 bootloader.tar.bz2 文件复制到 Linux 主机的工作目录,然后解压该压缩包:
vmuser@Linux-host: ~$ tar -jxvf bootloader.tar.bz2
然后得到一个 bootloader 目录。进入该目录,u-boot-2009.08 目录内是 U-Boot 的源代码文件,把这些源文件编译后可得到 u-boot 文件,该 u-boot 文件需要通过 imx-bootlets-src-10.12.01 [1] 目录下的工程进一步编译成 imx28_ivt_uboot.sb 文件(用于烧写到 NAND Flash 的文件)。elftosb 目录则提供了 32bit 和 64bit Linux 系统适用的 elftosb [2] 转换工具。
生成适用于开发套件的 U-Boot 文件需要按如下步骤进行操作:
首先,进入 u-boot-2009.08 目录,清除原有的编译文件,其对应的终端命令如下:
vmuser@Linux-host: ~$ cd bootloader/u-boot-2009.08
vmuser@Linux-host: ~/bootloader/u-boot-2009.08$ make ARCH=arm
CROSS_COMPILE=arm-fsl-linux-gnueabi- distclean↲
注意:distclean 前面是有一个空格的;此外,为了方便读者阅读,在容易出错的命令后面添加了一个显式的回车符,表示一句完整命令的结束。
其次,需要配置 U-Boot 的平台为 mx28_evk_config,对应的终端命令如下:
vmuser@Linux-host: ~/bootloader/u-boot-2009.08$ make ARCH=arm
CROSS_COMPILE=arm-fsl-linux-gnueabi- mx28_evk_config↲
Configuring for mx28_evk board...
然后,执行编译,对应的终端命令如下:
vmuser@Linux-host: ~/bootloader/u-boot-2009.08$ make ARCH=arm
CROSS_COMPILE=arm-fsl-linux-gnueabi-↲
编译完成后将在 u-boot-2009.08 目录的根目录下得到 u-boot 文件。但是 u-boot 文件并不能作为固件在开发套件的 NAND Flash 中直接烧写后启动。u-boot 文件需要使用imx-bootlets-src-10.12.01 目录下的工具进一步编译成带电源配置的 imx28_ivt_uboot.sb 固件文件。
把 u-boot 复制到 imx-bootlets-src-10.12.01 目录下:
vmuser@Linux-host: ~/bootloader/u-boot-2009.08$ cp u-boot ../ imx-bootlets-src-10.12.01
进行 u-boot 转换前需要先将 elftosb 目录下的“elftosb_32bit 或 elftosb_64bit”文件改名为“elftosb”并复制到“/usr/bin/”目录下(请以用户搭建的 Linux 上位机系统位宽为准)。复制完后需要给 elftosb 赋予可执行的权限
vmuser@Linux-host: ~/bootloader/u-boot-2009.08$ cd ../elftosb/
vmuser@Linux-host: ~/bootloader/elftosb$ mv elftosb_64bit elftosb
# 请根据实际情况进行选择
vmuser@Linux-host: ~/bootloader/elftosb$ sudo cp elftosb /usr/bin/
vmuser@Linux-host: ~/bootloader/elftosb$ sudo chmod 777 /usr/bin/elftosb
进入 imx-bootlets-src-10.12.01 目录,然后执行编译命令:
vmuser@Linux-host: ~/bootloader/elftosb$ cd ../ imx-bootlets-src-10.12.01
vmuser@Linux-host: ~/bootloader/imx-bootlets-src-10.12.01$ ./ build
编译完成后 imx-bootlets-src-10.12.01 目录下的 imx28_ivt_uboot.sb 文件就是可以烧写到NAND Flash 的固件文件。
3、U-Boot 基本命令
在 U-Boot 启动阶段,在串口终端按任意键(如空格键)即可进入 U-Boot 的命令行模式,可以输入已支持的命令对 U-Boot 进行配置。
U-Boot 1.3.3 (Feb 10 2009 - 10:09:52)
DRAM: 64 MB
NAND: 256 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
MX28 U-Boot >
在 U-Boot >提示符下,输入?或者 help 可以查看 U-Boot 所支持的全部命令以及对应介绍。
4、U-Boot Tools
U-Boot 提供了一些有用的小工具,存放在 U-Boot 源码目录下的 tools 文件夹中。这些工具都是在主机上使用的。编译完毕,可以将这些小工具复制到系统目录(如/usr/bin)中,以方便使用。
其中的 mkimage 工具,在编译内核的时候需要用到,务必复制到系统/usr/bin 目录下(如使用 ZLG 官网提供的 ubuntu,不需这一步),或者将 U-Boot 的 tools 目录添加到 PATH 环境变量当中。该工具可以生成 U-Boot 格式的文件,以配合 U-Boot 使用。
先进入 tools 目录,复制 mkimage 到/usr/bin 目录
vmuser@Linux-host: ~/bootloader/u-boot-2009.08$ cd tools/
vmuser@Linux-host: ~/bootloader/u-boot-2009.08/tools$ cp mkimage /usr/bin/