u-boot 编译及其简单应用

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/

你可能感兴趣的:(u-boot 编译及其简单应用)