uboot 介绍

来源:互联网 发布:知乎企业号注册 编辑:程序博客网 时间:2024/05/16 06:42

uboot wiki的网站http://www.denx.de/wiki/U-Boot

uboot 的ftp服务器http://ftp.denx.de/pub/u-boot/



下面来自http://www.dz863.com/Embedded-Systems-Design/Embedded-Design/U-BOOT-bootloader.htm

U-BOOT简介 

  U-BOOT是由德国的工程师Wolfgang Denk从8XXROM代码发展而来的,它支持很多处理器,比如PowerPC、ARM、MIPS和x86。目前,U-BOOT源代码在 sourceforge网站的社区服务器中,Internet上有一群自由开发人员对其进行维护和开发,它的项目主页是http: //sourceforge.net/projects/U-BOOT。U-BOOT的最新版本源代码可以在Sourceforge的CVS服务器中匿名获得。 
#cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT login 
#cvs -z6 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT \ co -P modulename 


1.2 U-BOOT的特点 

  U-BOOT支持SCC/FEC以太网、OOTP/TFTP引导、IP和MAC的预置功能,这一点和其它BootLoader(如BLOB和RedBoot等)类似。但U-BOOT还具有一些特有的功能。 

◆ 在线读写Flash、DOC、IDE、IIC、EEROM、RTC,其它的BootLoader根本不支持IDE和DOC的在线读写。 
◆ 支持串行口kermit和S-record下载代码,U-BOOT本身的工具可以把ELF32格式的可执行文件转换成为 S-record格式,直接从串口下载并执行。 
◆ 识别二进制、ELF32、uImage格式的Image,对Linux引导有特别的支持。U-BOOT对Linux 内核进一步封装为uImage。封装如下: 
#{CROSS_COMPILE}-objcopy -O binary -R.note -R.comment -S vmlinux \ linux.bin 
#gzip -9 linux.bin 
#tools/mkimage -A arm -O linux -T kernel -C gzip -a 0xc0008000 -e\ 
0xc0008000 -n “Linux-2.4.20” -d linux.bin.gz /tftpboot/uImage 
即在Linux内核镜像vmLinux前添加了一个特殊的头,这个头在include/image.h中定义,包括目标操作系统的种类(比如Linux, VxWorks等)、目标CPU的体系机构(比如ARM、PowerPC等)、映像文件压缩类型(比如gzip、bzip2等)、加载地址、入口地址、映像名称和映像的生成时间。当系统引导时,U-BOOT会对这个文件头进行CRC校验,如果正确,才会跳到内核执行。如下所示: 
WT-ARM9# bootm 0xc1000000 
## Checking Image at 0xc100000 ... 
Image Name: Linux-2.4.20 
Created: 2004-07-02 22:10:11 UTC 
Image Type: ARM Linux Kernel Image (gzip compressed) 
Data Size: 550196 Bytes = 537 kB = 0 MB 
Load Address: 0xc0008000 
Entry Point: 0xc0008000 
Verifying Checksum ... OK 
Uncompressing Kernel Image ……… OK 
◆ 单任务软件运行环境。U-BOOT可以动态加载和运行独立的应用程序,这些独立的应用程序可以利用U-BOOT控制台的I/O函数、内存申请和中断服务等。这些应用程序还可以在没有操作系统的情况下运行,是测试硬件系统很好的工具。 
◆ 监控(minitor)命令集:读写I/O,内存,寄存器、内存、外设测试功能等 
◆ 脚本语言支持(类似BASH脚本)。利用U-BOOT中的autoscr命令,可以在U-BOOT中运行“脚本”。首先在文本文件中输入需要执行的命令,然后用tools/mkimage封装,然后下载到开发板上,用autoscr执行就可以了。 
① 编辑如下的脚本example.script。 
echo 
echo Network Configuration: 
echo ---------------------- 
echo Target: 
printenv ipaddr hostname 
echo 
echo Server: 
printenv serverip rootpath 
echo 
② 用tools/mkimage对脚本进行封装。 
# mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "autoscr example script" -d example.script /tftpboot/example.img 
Image Name: autoscr example script 
Created: Wes Sep 8 01:15:02 2004 
Image Type: ARM Linux Script (uncompressed) 
Data Size: 157 Bytes = 0.15 kB = 0.00 MB 
Load Address: 0x00000000 
Entry Point: 0x00000000 
Contents: 
Image 0: 149 Bytes = 0 kB = 0 MB 
③ 在U-BOOT中加载并执行这个脚本。 
WT-ARM9# tftp 100000 /tftpboot/example.img 
ARP broadcast 1 
TFTP from server 10.0.0.2; our IP address is 10.0.0.99 
Filename '/tftpboot/TQM860L/example.img'. 
Load address: 0x100000 
Loading: # 
done 
Bytes transferred = 221 (dd hex) 
WT-ARM9# autoscr 100000 
## Executing script at 00100000 
Network Configuration: 
---------------------- 
Target: 
ipaddr=10.0.0.99 
hostname=arm 
Server: 
serverip=10.0.0.2 
rootpath=/nfsroot 
WT-ARM9# 
◆ 支持WatchDog、LCD logo和状态指示功能等。如果系统支持splash screen,U-BOOT启动时,会把这个图像显示到LCD上,给用户更友好的感觉。 
◆ 支持MTD和文件系统。U-BOOT作为一种强大的BootLoader,它不仅支持MTD,而且可以在MTD基础上实现多种文件系统,比如cramfs、fat和jffs2等。 
◆ 支持中断。由于传统的BootLoader都分为stage1和stage2,所以在stage2中添加中断处理服务十分困难,比如BLOB;而U-BOOT是把两个部分放到了一起,所以添加中断服务程序就很方便。 

◆ 详细的开发文档。由于大多数BootLoader都是开源项目,所以文档都不是很充分。U-BOOT的维护人员意识到了这



原创粉丝点击