封装为 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