前回image_v2.7
をベースにビルド方法と動作確認を実施しましたが、その後v3.0
が出てきたので、ZCU102向けにビルドしました。
本バージョンではUbuntu 22.04ベースにカーネルのバージョンが5.15と大幅に上がりました。
今回もいろいろ大変だったので備忘録として残しておきます。
前提となる環境
- Ubuntu 18.04
- Vitis 2022.1
- Petalinux 2022.1
Ubuntuは20.04でもOKです。
VitisとPetalinuxはバージョンが固定されており、上記の組み合わせ以外ではビルドはできません。
事前準備
次のファイルを~/に用意します。
- ZCU102 BSP 2022.1 (xilinx-zcu102-v2022.1-final.bsp) (from: https://japan.xilinx.com/support/download.html)
- 執筆現在、XilinxのダウンロードサイトからダウンロードできるBSPファイルの名前は
xilinx-zcu102-v2022.1-04191534.bsp
なので、これをxilinx-zcu102-v2022.1-final.bsp
にリネームして下さい。
- 執筆現在、XilinxのダウンロードサイトからダウンロードできるBSPファイルの名前は
- ARM64向けPYNQ rootfs(jammy.aarch64.3.0.1.tar.gz) (from: http://www.pynq.io/board.html/)
- PYNQソースコード (pynq-3.0.1.tar.gz) (from: https://pypi.org/project/pynq/#files)
ビルド実行
以下のスクリプトを実行します。
スクリプトの中の./scripts/setup_host.sh
の時点でQEMU等をコンパイル・インストールするので、Ubuntu 18.04のroot権限が必要です。
# pynq
git clone https://github.com/Xilinx/PYNQ.git -b v3.0.1 --depth 1
cd PYNQ
# ZCU102 setting
cp -rf ./boards/ZCU104 ./boards/ZCU102
rm -rf ./boards/ZCU102/petalinux_bsp/
mv ./boards/ZCU102/ZCU104.spec ./boards/ZCU102/ZCU102.spec
sed -i -e "s/104/102/g" ./boards/ZCU102/ZCU102.spec
# copy files
cp ~/xilinx-zcu102-v2022.1-final.bsp ./boards/ZCU102/
cp ~/pynq-3.0.1.tar.gz ./sdbuild/prebuilt/pynq_sdist.tar.gz
cp ~/jammy.aarch64.3.0.1.tar.gz ./sdbuild/prebuilt/pynq_rootfs.aarch64.tar.gz
# install qemu,crosstool-ng
cd ./sdbuild/
./scripts/setup_host.sh
# path
PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH
source /<path>/<to>/xilinx/Petalinux/2022.1/settings.sh
source /<path>/<to>/xilinx//Vitis/2022.1/settings64.sh
# build
sudo echo
make BOARDS=ZCU102
動作確認
ビルドが完了すると、PYNQ/sdbuild/output
にZCU102-3.0.1.img
という名でイメージファイル(約9.2GB)が生成されます。
これをSDカードに書き込みます。
自分はWindowsにコピーして、rufusでSDカードに書き込みました。
SDカードをZCU102に挿入してブートさせると、DisplayPort出力からPYNQのデスクトップ環境が立ち上がります。
今回はブラウザがインストールされておりません。ip
コマンド等でIPアドレスを調べ、他のPCからそのIPアドレスをブラウザに入力するとupyter Notebookに入ることができます。パスワードはxilinx
です。
ビルド時間等
CPUがRyzen 9 5950X搭載のUbuntu 18.04でビルドは約1時間と、前回と比較すると格段に短縮されました。
またPYNQディレクトリ全体で約33GB消費します。