トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

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