Avnet社Ultra96ボードで動作するPYNQ v2.4を自前でビルドする手順です。
単にUltra96-PYNQを使うだけなら、ビルド済のイメージをAvnetのページからダウンロードしてSDカードに書き込めばOKですが、カーネルの設定を変えたいなどの場合は一からビルドする必要があると思います。
おおまかな手順はUltra96-PYNQリポジトリのREADME.mdに書いてある通りです。備忘録として詳細をまとめました。
準備
OS
Ubuntu 16.04をインストールしたマシンを用意します。
ディスクの空き容量は200GB130GBぐらい必要です。メモリは最低8GB必要とのことです。
Xilinx開発環境のインストール
SDSoC 2018.3
Xilinxのダウンロードページから「Linux 64 用 SDSoC 2018.3 ウェブ インストーラー」をダウンロードしてインストールします。
PetaLinuxツール 2018.3
同じくXilinxのダウンロードページから「PetaLinux 2018.3 インストーラー」をダウンロードしてインストールします。
足りないパッケージがある場合は適宜sudo apt installします。
zshを使っている場合、設定スクリプトのsettings.shを次の通り書き換えるとよいです。
(インストールしたディレクトリは /opt/petalinux-v2018.3-final )
SETTINGS_FILE='settings.sh'
# The right location will be replaced by the installer
-XIL_SCRIPT_LOC="./"
+XIL_SCRIPT_LOC="/opt/petalinux-v2018.3-final/"
if [ $# != 0 ]; then
# The first argument is the location of PetaLinux Installation
@@ -14,18 +14,18 @@
XIL_SCRIPT_LOC="$1"
else
# XIL_SCRIPT_LOC should point to script location
- if [ "$0" == "ksh" ]; then
+ if [ "$0" = "ksh" ]; then
XIL_SCRIPT_LOC_TMP_UNI=`readlink -f ${XIL_ARG_}`
else
XIL_SCRIPT_LOC_TMP_UNI=$BASH_SOURCE
fi
XIL_SCRIPT_LOC_TMP_UNI=${XIL_SCRIPT_LOC_TMP_UNI%/*}
if [ "$XIL_SCRIPT_LOC_TMP_UNI" != "" ]; then
- if [ "$XIL_SCRIPT_LOC_TMP_UNI" == "settings.sh" ]; then
+ if [ "$XIL_SCRIPT_LOC_TMP_UNI" = "settings.sh" ]; then
XIL_SCRIPT_LOC_TMP_UNI="./"
fi
XIL_SCRIPT_LOC_TMP_UNI=`readlink -f ${XIL_SCRIPT_LOC_TMP_UNI}`
- if [ $? == 0 ]; then
+ if [ $? = 0 ]; then
XIL_SCRIPT_LOC=${XIL_SCRIPT_LOC_TMP_UNI}
fi
fi
それぞれのツールにパスを通します。
$ source /opt/sdsoc.2018.3/SDx/2018.3/settings64.sh
$ source /opt/petalinux-v2018.3-final/settings.sh
Ultra96-PYNQのビルド
Ultra96-PYNQの取得
Ultra96-PYNQをGitHubからcloneします。
$ git clone https://github.com/Avnet/Ultra96-PYNQ
最新のimage_v2.4ブランチをチェックアウトします。2018.3より古いXilinxツールをインストールしている場合は適当なブランチに変更して下さい。
$ git checkout image_v2.4
PYNQの取得
PYNQをGitHubからcloneします。
$ git clone https://github.com/Xilinx/PYNQ
image_v2.4ブランチをチェックアウトします。
$ git checkout image_v2.4
ビルド
ビルド用のディレクトリに移動します。
$ cd PYNQ/sdbuild
PYNQのビルドに必要なパッケージとQEMUとCrosstool-NGは、スクリプトでまとめてインストールするようになっています。スクリプトの途中sudoを使っているところがあるため、パスワードなしでsudoできるようにしておきます。
$ sudo visudo
で設定ファイルを開き、
<ユーザ名> ALL=NOPASSWD: ALL
を最後の行に追加します。
ビルドのセットアップスクリプトを実行します。
$ scripts/setup_host.sh
QEMUとCrosstool-NGのインストールディレクトリにパスを通します。
$ export PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH
これで準備が整いました。Ultra96-PYNQをcloneしたパスを指定してビルドします。
$ make clean
$ make BOARDDIR=/home/okuhata/Ultra96-PYNQ
かなり時間がかかります。パスワードなしでsudoができない場合、ビルド途中でパスワード入力を求められます。
完了
ビルドしてできたイメージはPYNQ/sdbuild/output/Ultra96-2.4.img
にあります。
出来上がったイメージをmicroSDカードに書き込み、Ultra96ボードに挿入して起動します。