2023/01/03

vitis platformのためにz-turnのpetalinuxのビルドをする

XILINX   

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が起動するはずだ

Prev:«

Next: »