U-Boot 介绍
U-Boot是目前使用率最高的一种Bootloader。
U-Boot已经能够支持PowerPC、ARM、x86、MIPS体结构,由DENX的Wolfgang Denk维护。
U-Boot的源码包可以从ftp://ftp.denx.de/pub/u-boot/下载,也可以从sourceforge网站下载,还可以订阅该网站活跃的U-Boot Users邮件论坛,这个邮件对于U-Boot的使用和开发都很有用。
U-Boot 常用命令
help:查看当前U-Boot支持的命令,会显示命令列表,并且每一条命令后面有简单的命令说明。
U-Boot还提供了更加详细的命令帮助,通过help可以查看,例如查看printenv命令:
help printenv
printenv:用于查看u-boot的环境变量。
setenv:设置环境变量。
saveenv:保存环境变量。
设置变量bootdelay为5:saveenv bootdelay 5
设置的环境变量如果没有保存重启后会失效,保存环境变量:
saveenv
loadb:通过串口下载二进制格式文件。
loadb 0x43e00000(其中0x43e00000是指定下载文件到板子的内存的地址)。
go:用于执行裸机程序。
go 0x43e00000 注:0x43e00000是待运行的程序所在的内存地址
ping:测试网络是否联通。
注:显示is alive表示网络是连通的。
tftp:通过TFTP协议下载文件到板子内存里。
打开串口终端输入下面的命令:
tftp uImage
……
注:如果下载失败,可能是网络不通,可能是IP不对,查看板子和计算机的网卡地址是否在同网段;查看板子serverip设置是否和TFTP服务端软件所在的计算机网卡IP一致。
bootm:运行内核uImage。
bootm 0x43e00000
注:0x43e00000就是用于存放内核uImage的内存地址。
movi:操作emmc(类似于Flash)指令。
movi write kernel 0x43e00000
注:把在内存0x43e00000处的内核烧写到EMMC上。
U-Boot 源码结构
通过tar -xvf u-boot-2013.01.tar.gz解压后就可以看到全部U-Boot源程序。在顶层目录下有多个子目录,分别存放和管理不同的源程序。这些目录中所要存放的文件有其规则,可以分为3类。
第1类目录与处理器体系结构或者开发板硬件直接相关。
第2类目录是一些通用的函数或者驱动程序。
第3类目录是U-Boot的应用程序、工具或者文档。
U-Boot的源代码包含对几十种处理器、数百种开发板的支持。可以对于特定的开发板,配置编译过程中需要其中的部分程序。
目录 | 特性 | 解释说明 |
board | 平台依赖 | 存放电路板相关的目录文件,例如:sumsung /smdk2410(arm920t)、samsung/origen(Exynos4412) |
arch | 平台依赖 | 存放CPU体系结构相关的目录文件,例如:arm/cpu/920t、arm/cpu/armv7/exynos、powerpc/cpu/mpc8xx、x86等 |
include | 通用 | 头文件和开发板配置文件,所有开发板的配置文件都在configs目录下 |
common | 通用 | 通用的多功能函数实现 |
lib | 通用 | 通用库函数的实现 |
Net | 通用 | 存放网络的程序 |
Fs | 通用 | 存放文件系统的程序 |
Post | 通用 | 存放上电自检程序 |
drivers | 通用 | 通用的设备驱动程序 |
Disk | 通用 | 硬盘接口程序 |
examples | 应用程序 | 一些独立运行的应用程序的例子,例如:helloworld |
tools | 工具 | 存放制作S-Record或者U-Boot格式的映像等工具,例如:mkimage |
Doc | 文档 | 开发使用文档 |