メインコンテンツまでスキップ

イメージを eMMC に書き込む

このページでは、ボードの eMMC に完全なイメージを書き込む方法を説明します。たとえば、生産ラインで 書き込む場合、自社で設計したボードに書き込む場合、公開リリースではないイメージを書き込む場合などが該当します。 すべての手順を自分で実行するため、手元にあるどのイメージファイルでも使用できます。

DevKit を SiMa.ai の公開リリースにアップデートする場合は、代わりに ファームウェアアップデートを使用してください。 すでに起動できるボードでカーネル、デバイスツリー、または U-Boot のみを置き換える場合は、 アーティファクトをインストールするを参照してください。

始める前に​

  • U-Boot プロンプトまで到達できるボード。

  • ボードの U-Boot/Linux UART へのシリアル接続(115200 ボー、ハードウェアフロー制御は無効)。 シリアル接続の設定を参照してください。

  • 書き込むイメージ:

    イメージファイル
    eLxrelxr-palette-modalix-<version>-arm64.img
    Yoctosimaai-image-minimal-modalix.rootfs.wic.gz と simaai-image-minimal-modalix.rootfs.wic.bmap

    Yocto のファイル名は、Yocto で完全なイメージをビルドするで 生成されるものです。別のイメージレシピでは、ファイル名が異なります。

  • イーサネットと TFTP サーバーを備えたホスト、または SD カードのいずれか。

ボードがブートソースを選択する仕組み​

ボードは、eMMC から起動している間はその eMMC を上書きできないため、まずネットワークまたは SD カードから 起動します。U-Boot は boot_targets に記載されたソースを順番に試します。

ターゲット起動元
mmc1SD カード
mmc0eMMC
dhcpDHCP で検出された 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 で行えます。こちらは公開リリースのダウンロードと配信を自動で行います。

  1. ブートファイルを TFTP サーバーのルートディレクトリにコピーします。

    • netboot.scr.uimg
    • Image
    • デバイスツリーバイナリ(*.dtb)
    • ルートファイルシステムのアーカイブ:eLxr の場合は elxr-palette-modalix-arm64.cpio.gz、 Yocto の場合は simaai-image-palette-modalix.cpio.gz
  2. ホストをボードの最初のイーサネットポート(eth0)に接続します。ボードは 192.168.1.20 を使用するため、ホストには 192.168.1.0/24 内のアドレスを割り当てます。

    sima-user@sima-user-machine:~$ sudo ifconfig <interface_name> 192.168.1.10 up
  3. ボードの電源を入れて自動ブートを中断し、net を最初のブートソースにします。

    sima$ env set boot_targets net mmc0 mmc1 dhcp; saveenv
    sima$ boot
  4. Linux が起動したら、ビルドを確認し、ルートファイルシステムが RAM 上にあること (root=/dev/ram0)を確認します。

    root@modalix:~# cat /etc/buildinfo
    root@modalix:~# cat /proc/cmdline
SD カードから起動する
  1. イメージを SD カードに書き込みます。ホストから ブートイメージの作成を使って書き込むか、 SD カードを挿入した状態でネットワークから起動したボード上で書き込みます (/dev/mmcblk1)。

    eLxr の場合:

    root@modalix:~# dd if=/tmp/elxr-palette-modalix-<version>-arm64.img of=/dev/mmcblk1 bs=4M status=progress conv=fsync

    Yocto の場合は、.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
  2. 再起動して自動ブートを中断し、mmc1 が最初になっていることを確認します。デフォルトでは 最初になっています。

    sima$ env set boot_targets mmc1 mmc0 dhcp net; saveenv
    sima$ boot
  3. Linux が起動したら、/etc/buildinfo を確認し、/proc/cmdline に root=/dev/mmcblk1p* が含まれていることを確認します。

ステップ 2. イメージを eMMC に書き込む​

以下の手順は、ボードがネットワークまたは SD カードから起動している状態で、ボード上で root として 実行します。

  1. イメージをホストからボードの /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/
  2. イメージを eMMC(/dev/mmcblk0)に書き込みます。

    eLxr の場合:

    root@modalix:~# dd if=/tmp/elxr-palette-modalix-<version>-arm64.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync

    Yocto の場合:

    root@modalix:~# bmaptool copy /tmp/simaai-image-minimal-modalix.rootfs.wic.gz /dev/mmcblk0
  3. パーティションテーブルを修復します。

    root@modalix:~# printf "fix\n" | parted ---pretend-input-tty /dev/mmcblk0 print

ステップ 3. eMMC から起動する​

  1. ネットワークから起動した場合は、デフォルトのブート順序に戻します。

    sima$ env set boot_targets mmc1 mmc0 dhcp net; saveenv

    SD カードから起動した場合は、SD カードを取り外します。

  2. ボードを再起動するか電源を入れ直し、eMMC から起動することを確認します。

次のステップ​