Let's Vitis(11) - 「SDカードの生成」

今回はUltra96V2で動作するSDカードを生成します。

ZynqMPSoCのSDカード構成

ZynqMPSoCを起動するSDカードは第一パーティションがFATファイルシステムでそのファイルシステムにあるboot.binを呼び出して起動します。

これが最小構成です。

今回はLinuxディストリビューションもあるので第二パーティションにLinuxシステムのルートファイルを置きます。

したがって、作成するSDカードの構成は次のようになります。

パーティション番号 ファイルシステム 容量 備考
1 VFAT 500MB程度 boot.bin、Linux Kernelや他にコピーしたいファイルの容量を確保します
2 ext4 1GB程度 Linuxシステムのルートファイルを展開できるだけの容量を確保します

SDカードのフォーマット

SDカードのフォーマットはfdiskで紹介されることが多いですが今回はpartedを使用してパーティションを作成します。

SDカードは/dev/sdbに認識されていることを前提に次のように実行します。

DEVICE=/dev/sdb

sudo umount ${DEVICE}*
sudo parted -s -a optimal ${DEVICE} mklabel msdos
sudo parted -s -a optimal ${DEVICE} mkpart primary fat32 1 512
sudo parted -s -a optimal ${DEVICE} mkpart primary ext4 513 100%
sudo mkfs.vfat -n BOOT ${DEVICE}1
sudo mkfs.ext4 -F -L ROOT ${DEVICE}2

これでパーティションの作成とファイルシステムのフォーマットが完了します。

必要なファイル

SDカードに必要なファイルは前回生成したboot.binの他にLinuxファイルシステムのファイルが必要であり、次のとおりです。

  • boot.bin(ZynqMPSoC起動用バイナリ)
  • uEnv.txt(u-bootの追加環境設定)
  • Image(Linux Kernelバイナリ)
  • zynqmp-ultra96-v2.dtb(Linux KernelのDevice Tree Blob)
  • core-image-minimal-ultra96v2.tar.gz(Linuxルートファイル)

これらを作業ディレクトリにコピーしましょう。

$ cd create_sd
$ cp /home/hidemi/yocto/yocto_zeus/build_ultra96v2/tmp/deploy/images/ultra96v2/Image .
$ cp /home/hidemi/yocto/yocto_zeus/build_ultra96v2/tmp/deploy/images/ultra96v2/uEnv.txt .
$ cp /home/hidemi/yocto/yocto_zeus/build_ultra96v2/tmp/deploy/images/ultra96v2/zynqmp-ultra96-v2.dtb .
$ cp /home/hidemi/yocto/yocto_zeus/build_ultra96v2/tmp/deploy/images/ultra96v2/core-image-minimal-ultra96v2.tar.gz .

SDカードへの展開

コピーしたファイルを次のように展開します。

sudo mount ${DEVICE}1 /mnt
sudo cp boot.bin /mnt
sudo cp Image /mnt
sudo cp uEnv.txt /mnt
sudo cp zynqmp-ultra96-v2.dtb /mnt
sync
sudo umount ${DEVICE}*
sudo mount ${DEVICE}2 /mnt
sudo tar xzvf core-image-minimal-ultra96v2.tar.gz -C /mnt
sync
sudo umount ${DEVICE}*

これでUltra96V2で動作するSDカードが生成できました。

起動確認

できあがったSDカードでUltra96V2が起動するか確認しましょう。

次回予告

次回は「Platformの作成」を勉強しましょう。