Diary/2019-11-3
PYNQ v2.5 ビルド
ちょっとZybo Z7-20のPYNQ環境を刷新したくなったので,
Xilinxの2019.1なツールセットに対応しているv2.5をビルド.
(対応バージョン は https://pynq.readthedocs.io/en/latest/pynq_sd_card.html の 表に)
生活マシンがUbuntu 18.04なのでVirtualBoxでUbuntu 16.04を動かしてビルドする.
- Ubuntu 18.04での準備
Vivado SDSoC 2019.1 と PetaLinuxをインストールしておく
- /opt/Xilinx/SDx/2019.1
- $HOME/tools/petalinux-v2019.1
とか.
- 共有フォルダの準備
Vivadoやらツール一式はホストに入れてるものを使いたいので,
/optとホームディレクトリを共有フォルダに設定ゲストでmount.
sudo mount -t vboxsf opt /mnt sudo mount -t vboxsf -o uid=1000,gid=1000 miyo $HOME/mnt
ホームディテクトリの方はuidのマッピングをする.
Vivadoやらは,パスをあわせたいので
sudo ln -sf /mnt/Xilinx /opt/ ln -sf $HOME/mnt/tools $HOME/
としておく
- PYNQのclone
PYNQはゲスト上でclone.適当な作業ディレクトリ$WORKを用意して,
mkdir -p $WORK cd $WORK git clone https://github.com/Xilinx/PYNQ cd PYNQ git checkout refs/tags/v2.5
- PYNQのための環境準備
ゲストで作業.環境準備用スクリプト
./setup_host.sh
でうまくいくはずなのだけど,dokcer-ceが上手く入らないみたい.
なので,先にdocker-ceをインストール
sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common # GPGキーの登録 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 検証 sudo apt-key fingerprint 0EBFCD88 # リポジトリの追加 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt update sudo apt install docker-ce
でOK.
あと,unzipがないとおこられたので,それもインストール.
sudo apt install unzip
で,
cd $HOME/mnt/src/PYNQ/sdbuild/scripts ./setup_host.sh
で環境が準備できる.
- ビルドスクリプト準備
ビルドスクリプト置き場を,
mkdir -p $WORK/PYNQ/myboards/Z7-20
とか作って,
ARCH_Z7-20 := arm BSP_Z7-20 := BITSTREAM_Z7-20 := base.bit STAGE4_PACKAGES_Z7-20 := pynq ethernet
という内容のZ7-20.specを作る.
- Vivadoで作ったリソースをコピー.
bitファイルとhdfをコピーしてくる.
bitファイルはVivadoのプロジェクトディレクトリ$PROJECTの下の$PROJECT.runs/impl_1に,
hdfファイルはVivadoのFileメニューからExport→Export Hardware...を選ぶと,
$PROJECT.sdkの下にできている.
cp ~/mnt/どこか/$PROJECT/$PROJECT.runs/impl_1/*.bit \ $WORK/PYNQ/myboards/Z7-20/base.bit mkdir -p $WORK/PYNQ/myboards/Z7-20/petalinux_bsp/hardware_project cp ~/mnt/どこか/$PROJECT/$PROJECT.sdk/design_1_wrapper.hdf \ $WORK/PYNQ/myboards/Z7-20/
mybords以下は,次のようになっているはず.
myboards/ └── Z7-20 ├── Z7-20.spec ├── base.bit └── petalinux_bsp └── hardware_project └── design_1_wrapper.hdf
- ビルド
準備できたらPetaLinux使ってビルド...の前にビルド変数をセット.
cd $PYNQ/sdbuild export PATH="/opt/crosstool-ng/bin:/opt/qemu/bin:$PATH" source /opt/Vivado/2019.1/settings64.sh source /opt/Xilinx/SDK/2019.1/settings64.sh source /home/miyo/tools/petalinux-v2019.1/settings.sh petalinux-util --webtalk off source /opt/Xilinx/SDx/2019.1/settings64.sh
PetaLinuxの環境変数をはじめてロードするのであれば,
WARNING: /bin/sh is not bash!
と,警告がでるかもしれない.
sudo dpkg-reconfigure dash
でNoを選ぶ.あと,
ERROR: You are missing the following system tools required by PetaLinux: - diffstat - xterm
みたいに足りないものリストがでてくるので適宜インストールして,再度,
source /home/miyo/tools/petalinux-v2019.1/settings.sh
する.
で,ビルド
make BOARDDIR=$WORK/PYNQ/myboards BOARDS=Z7-20