イメージを eMMC に書き込む
このページでは、ボードの eMMC に完全なイメージを書き込む方法を説明します。たとえば、生産ラインで 書き込む場合、自社で設計したボードに書き込む場合、公開リリースではないイメージを書き込む場合などが該当します。 すべての手順を自分で実行するため、手元にあるどのイメージファイルでも使用できます。
DevKit を SiMa.ai の公開リリースにアップデートする場合は、代わりに ファームウェアアップデートを使用してください。 すでに起動できるボードでカーネル、デバイスツリー、または U-Boot のみを置き換える場合は、 アーティファクトをインストールするを参照してください。
始める前に
-
U-Boot プロンプトまで到達できるボード 。
-
ボードの U-Boot/Linux UART へのシリアル接続(115200 ボー、ハードウェアフロー制御は無効)。 シリアル接続の設定を参照してください。
-
書き込むイメージ:
イメージ ファイル eLxr elxr-palette-modalix-<version>-arm64.imgYocto simaai-image-minimal-modalix.rootfs.wic.gzとsimaai-image-minimal-modalix.rootfs.wic.bmapYocto のファイル名は、Yocto で完全なイメージをビルドするで 生成されるものです。別のイメージレシピでは、ファイル名が異なります。
-
イーサネットと TFTP サーバーを備えたホスト、または SD カードのいずれか。
ボードがブートソースを選択する仕組み
ボードは、eMMC から起動している間はその eMMC を上書きできないため、まずネットワークまたは SD カードから
起動します。U-Boot は boot_targets に記載されたソースを順番に試します。
| ターゲット | 起動元 |
|---|---|
mmc1 | SD カード |
mmc0 | eMMC |
dhcp | DHCP で検出された TFTP サーバー |
net | 固定 IP アドレスの TFTP サーバー |
デフォルトの順序は mmc1 mmc0 dhcp net です。変更するには、シリアルコンソールで自動ブートを中断し、
順序を設定して保存します。
sima$ env set boot_targets mmc1 mmc0 net dhcp; saveenv
Saving Environment to FAT... OK
sima$ printenv boot_targets
boot_targets=mmc1 mmc0 net dhcp
sima$ boot
ステップ 1. ネットワークまたは SD カードから起動する
テストステーションでは、SD カードからの起動をお勧めします。イーサネットポートが空くため、 ネットワークのストレステストに使用できます。
ネットワークから起動する
この方法では独自の TFTP サーバーを使用するため、配信する内容を自分で選択できます。
ネットワークブートによる復旧でも同じことを
sima-cli で行えます。こちらは公開リリースのダウンロードと配信を自動で行います。
-
ブートファイルを TFTP サーバーのルートディレクトリにコピーします。
netboot.scr.uimgImage- デバイスツリーバイナリ(
*.dtb) - ルートファイルシステムのアーカイブ:eLxr の場合は
elxr-palette-modalix-arm64.cpio.gz、 Yocto の場合はsimaai-image-palette-modalix.cpio.gz
-
ホストをボードの最初のイーサネットポート(
eth0)に接続します。ボードは192.168.1.20を使用するため、ホストには192.168.1.0/24内のアドレスを割り当てます。sima-user@sima-user-machine:~$ sudo ifconfig <interface_name> 192.168.1.10 up -
ボードの電源を入れて自動ブートを中断し、
netを最初のブートソースにします。sima$ env set boot_targets net mmc0 mmc1 dhcp; saveenvsima$ boot -
Linux が起動したら、ビルドを確認し、ルートファイルシステムが RAM 上にあること (
root=/dev/ram0)を確認します。root@modalix:~# cat /etc/buildinforoot@modalix:~# cat /proc/cmdline
SD カードから起動する
-
イメージを SD カードに書き込みます。ホストから ブートイメージの作成を使って書き込むか、 SD カードを挿入した状態でネットワークから起動したボード上で書き込みます (
/dev/mmcblk1)。eLxr の場合:
root@modalix:~# dd if=/tmp/elxr-palette-modalix-<version>-arm64.img of=/dev/mmcblk1 bs=4M status=progress conv=fsyncYocto の場合は、
.wic.gzファイルと.wic.bmapファイルの両方をコピーしてから、次を実行します。root@modalix:~# bmaptool copy /tmp/simaai-image-minimal-modalix.rootfs.wic.gz /dev/mmcblk1次に、パーティションテーブルを修復します。イメージはカードより小さいため、
partedで移動するまで バックアップ GPT ヘッダーはデバイスの末尾にありません。root@modalix:~# printf "fix\n" | parted ---pretend-input-tty /dev/mmcblk1 print -
再起動して自動ブートを中断し、
mmc1が最初になっていることを確認します。デフォルトでは 最初になっています。sima$ env set boot_targets mmc1 mmc0 dhcp net; saveenvsima$ boot -
Linux が起動したら、
/etc/buildinfoを確認し、/proc/cmdlineにroot=/dev/mmcblk1p*が含まれていることを確認します。
ステップ 2. イメージを eMMC に書き込む
以下の手順は、ボードがネットワークまたは SD カードから起動している状態で、ボード上で root として 実行します。
-
イメージをホストからボードの
/tmpにコピーします。eLxr の場合:
sima-user@sima-user-machine:~$ scp elxr-palette-modalix-<version>-arm64.img root@192.168.1.20:/tmp/Yocto の場合は、
.wic.gzファイルと.wic.bmapファイルの両方をコピーします。sima-user@sima-user-machine:~$ scp simaai-image-minimal-modalix.rootfs.wic.* root@192.168.1.20:/tmp/ -
イメージを eMMC(
/dev/mmcblk0)に書き込みます。eLxr の場合:
root@modalix:~# dd if=/tmp/elxr-palette-modalix-<version>-arm64.img of=/dev/mmcblk0 bs=4M status=progress conv=fsyncYocto の場合:
root@modalix:~# bmaptool copy /tmp/simaai-image-minimal-modalix.rootfs.wic.gz /dev/mmcblk0 -
パーティションテーブルを修復します。
root@modalix:~# printf "fix\n" | parted ---pretend-input-tty /dev/mmcblk0 print
ステップ 3. eMMC から起動する
-
ネットワークから起動した場合は、デフォルトのブート順序に戻します。
sima$ env set boot_targets mmc1 mmc0 dhcp net; saveenvSD カードから起動した場合は、SD カードを取り外します。
-
ボードを再起動するか電源を入れ直し、eMMC から起動することを確認します。