z-turn向けのvitis platformを作成する。versionは、2022.1を使用しています。まずはpetalinuxのビルドを行う。
petalinuxプロジェクトの作成
以下で作成したxsaファイルを使用します。
プロジェクトを作成する
petalinux-create -t project --template zynq --name base
cd base
プロジェクトの設定
Vivadoで作成したHW情報を読み取る。引数には、Vivadoのxsaファイルがあるディレクトリを指定します。
petalinux-config --get-hw-description= ../vitis_hw_platform/ --silent
このままビルドすると、以下のエラーが発生します。
INFO: [Hsi 55-2053] elapsed time for repository (/opt/pkg/petalinux/2022.1/tools/xsct/data/embeddedsw) loading 0 seconds
| zocl:true
| ext_platform:
| Failed to find amba_pl node !!!
| ERROR: [Hsi 55-1545] Problem running tcl command ::sw_device_tree::generate : Failed to find amba_pl node !!!
そのため、PLのDevice treeの生成をDisableします。
petalinux-config
DTG Setting –> remove PL from device tree を選択します。
vitis aiをダウンロードしておきます
git clone https://github.com/Xilinx/Vitis-AI
cd Vitis-AI
git checkout 469a4b7bc7b7213d76507c34eeb258580322befd
xrtを有効にします。
sed -i 's/# CONFIG_xrt is not set/CONFIG_xrt=y/g' project-spec/configs/rootfs_config
petalinxにVitis-AI-Libraryを追加
cp -r ../Vitis-AI/setup/petalinux/recipes-vitis-ai ./project-spec/meta-user/
rootfsコンフィグの修正。project-spec/meta-user/conf/user-rootfsconfig に追加する。
CONFIG_vitis-ai-library
CONFIG_vitis-ai-library-dev
CONFIG_vitis-ai-library-dbg
petalinux-config -c rootfsで、user package →vitis-ai-libraryを追加
ビルド
そして、ビルドします。
petalinux-build
ブート用ファイルの作成
petalinux-package --boot --u-boot
petalinux-package --prebuilt --fpga ../../project_2/project_2.runs/impl_1/design_1_wrapper.bit
SDカードの準備
z-turnの起動用のSDカードを準備する。Linuxのフォーマットする。SDカードは、/dev/sdaとする
fdiskをして、fat領域とext4領域に分ける
fdisk /dev/sda
コマンド (m でヘルプ): d
パーティション番号 (1,2, 既定値 2)
パーティション 2 を削除しました。
コマンド (m でヘルプ): d
パーティション 1 を選択
パーティション 1 を削除しました。
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 primary, 0 extended, 4 free)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (1-4, 既定値 1): 1
最初のセクタ (2048-7829503, 既定値 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-7829503, 既定値 7829503): +1G
新しいパーティション 1 をタイプ Linux、サイズ 1 GiB で作成しました。
パーティション #1 には vfat 署名が書き込まれています。
署名を削除しますか? [Y]es/[N]o: Y
署名は write (書き込み)コマンドを実行すると消えてしまいます。
コマンド (m でヘルプ):
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (1 primary, 0 extended, 3 free)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (2-4, 既定値 2):
最初のセクタ (2099200-7829503, 既定値 2099200):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-7829503, 既定値 7829503):
新しいパーティション 2 をタイプ Linux、サイズ 2.7 GiB で作成しました。
パーティション #2 には ext4 署名が書き込まれています。
署名を削除しますか? [Y]es/[N]o: Y
署名は write (書き込み)コマンドを実行すると消えてしまいます。
コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。
fat領域をフォーマットする
umount /dev/sda1
umount /dev/sda2
mkfs.vfat /dev/sda1
ext4領域をフォーマットする
mkfs.ext4 /dev/sda2
fat領域にBOOT用のファイルをコピーする
mkdir tt
mount /dev/sda1 ./tt
cp pre-built/linux/images/BOOT.bin ./tt
cp pre-built/linux/images/boot.scr ./tt
cp pre-built/linux/images/image.ub ./tt
umount /dev/sda1
ext4領域にルートファイルシステムを作成する
mount /dev/sda2 ./tt
cp pre-built/linux/images/rootfs.tar.gz ./tt
cd tt
tar xfz rootfs.tar.gz
cd ..
umount /dev/sda2
起動
Z-trunにSDカードをさして、電源をいれて、RESETボタンを押すとLinuxが起動するはずだ