📑

U-boot 用のイメージを作るコマンド mkimage のメモ

2021/07/15に公開

mkimage 概要

  • U-boot ではカーネルイメージに uImage フォーマットが要求される
    • その uImage を作るためのコマンドが mkimage
  • カーネルイメージ (つまりuImage) はあらかじめメモリにロードしておく
    • bootp を使えば tftp でダウンロードしてくれるのでいちいちメモリにロードする手順を踏まずに済むらしい
  • bootm ではそのメモリのアドレスを指定する
    • bootm <Linux uImage address> <mkimage wrapped ramdisk address> <device tree (dtb) address>
    • Linux uImage address: メモリにロードしたカーネルイメージのアドレス
    • mkimage wrapped ramdisk address: メモリにロードした ramdisk イメージのアドレス
    • device tree (dtb) address: メモリにロードした DTB イメージのアドレス
  • uImage は 「Legacy Image」 といった名前でも呼ばれる
  • uImage は mkimage で作る mkimage -n 'Kernel Image' -A arm64 -O linux -C none -T kernel -a 0x8000 -e 0x8000 -d Image uImage
  • イメージが設置されている場所によってメモリにロードする手段は異なる
    • tftp を使う場合: tftpboot を使う
    • NAND を使う場合: nand read を使う
    • シリアル通信 (kermit) を使う場合: loadb を使う
    • シリアル通信で S レコード形式を使う場合: loads を使う
  • ただし U-boot のコマンドは U-boot のバージョンや、 ボードのメーカーが提供する U-boot によって実装されているコマンドが異なる

参考

Discussion