The mkimage command is used to create images for use with the U-Boot boot loader
更新記錄
item | note |
---|---|
20150615 | 第一版 |
目錄
mkimage說明
- 參考linux-3.0.y/driver/blackfin/Kconfig裡說明,在產生kernel時會採用mkimage包裝image
uboot要load kernel image,需要知道kernel一些訊息(architecture,os,compression type等)
For example, the bootable U-Boot format (created with
mkimage) has a 64 byte header (0x40). So while the image
you write to flash might start at say 0x20080000, you have
to add 0x40 to get the kernel’s ROM base as it will come
after the header.
目前採用mkimage來包裝更新檔
- image_header_t 大小為64byte(0x40)
1 |
|
- 使用mkimage -l xxx,查看訊息
- 此為7個檔案組合
1 | xx$ mkimage -l xx.bin |
- 使用od查看檔頭內容,在64byte之後,開始存放每個image大小
0x250800 -> 2457600
0x04b000 -> 307200
0x0389cf0 -> 3710192
0x0ca0000 -> 13238272
0x0e57000 -> 15036416
0x0360000 -> 3538944
0x0047334 -> 291636
0x0000000 -> 表示結束
1 | xx$ od -t x xx.bin |more |
簡易mkimage extract 工具
- 由已知的檔頭訊息及mkimage -l 可取出各另image
- 採用dd來分解檔案
- IMG0_SIZE 為image size
- IMG0_SKIP_SIZE 為需要刪除的檔頭byte數
1 | dd if=$file_name of=$IMG_TMP bs=$skip_len skip=1 |
參考來原
- mkimage Linux man page
- linux-3.0.y/driver/blackfin/Kconfig
- extract-mkimage download