Usage: mkimage -l image -l ==>list image header information
mkimage [-x]-A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image -A ==>set architecture to 'arch' //用于指定CPU类型,比如ARM -O ==>set operating system to 'os' //用于指定操作系统,比如Linux -T ==>set image type to 'type'//用于指定image类型,比如Kernelramdisk -C ==>set compression type 'comp'//指定压缩类型 -a ==>set load address to 'addr'(hex)//指定image的载入地址 -e ==>set entry point to 'ep'(hex)//内核的入口地址,一般是:image的载入地址+0x40(信息头的大小) -n ==>set image name to 'name'//image在头结构中的命名 -d ==> use image data from 'datafile'//无头信息的image文件名 -x ==>set XIP (execute in place)//设置执行位置即不进行文件的拷贝,在当前位置执行
mkimage [-D dtc_options]-f fit-image.its fit-image
对于ARM Linux我们可以这样使用各个参数:
对于ARM linux内核映象用法: -A arm -------- 架构是arm -O linux -------- 操作系统是linux -T kernel -------- 类型是kernel -C none/bzip/gzip -------- 压缩类型 -a 20008000 ---- image的载入地址(hex),通常为0xX00008000 -e 200080XX---- 内核的入口地址(hex),XX为0x40或者0x00 -n linux-XXX --- image的名字,任意 -d nameXXX ---- 无头信息的image文件名,你的源内核文件
uImageXXX ---- 加了头信息之后的image文件名,任意取
[U-Boot@mini2440]#tftp 30000000 rootfs.img
dm9000 i/o: 0x20000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
operating at 100M full duplex mode Using dm9000 device
TFTP from server 10.27.10.48; our IP address is 10.27.10.23
Filename 'rootfs.img'.
Load address: 0x30000000
Loading:################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ####
done
Bytes transferred = 7339200 (6ffcc0 hex) [U-Boot@mini2440]#nand erase 0x560000
NAND erase: device 0 offset 0x560000, size 0x7aa0000
Erasing at 0x7fe000007aa0000 -- 0% complete.
OK [U-Boot@mini2440]#nand write.yaffs2 0x30000000 0x560000 0x6ffcc0
NAND write: device 0 offset 0x560000, size 0x6ffcc0
skip first good block 56000000020000
Writing at 0xc4000000020000 --100% is complete 7116800 bytes written: OK