ZCU111開発続き。
PetalinuxのインストールとSDK。
ハード・ソフトのデザイン追加変更においてPetalinuxが必要なので、それをやる。
Petalinuxで準備してSDKのpathを設定してVivadoを使う、といった順番。
※そこそこ時間がかかる。
(パソコンのスペックによるが、数時間はかかる)
主な参考資料
Xilinx Wiki:Creating Linux application targeting the RFDC driver in SDK 2018.3、Petalinux Build Tutorial for ZU+ RFSoC ZCU111 2019.1
PetaLinux ツール資料リファレンス ガイド:UG1144
Petalinuxを使うためにUbuntuとwslをインストールして、Linuxを使えるようにしておく。
以下二つのファイルが必要。(ファイルの場所、バージョン等については前の記事を参照のこと。)
・petalinux-v2019.1-final-installer.run
・xilinx-zcu111-v2019.1-final.bsp
この二つをwslのホームディレクトリに置いておく。
※以下2019.1の部分は自分の使うバージョンに応じて置き換える。
Petalinuxのインストール
まず準備でパッケージ等インストールする。
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install build-essential python diffstat chrpath socat xterm autoconf libtool unzip texinfo zlib1g-dev gcc-multilib libncurses5-dev zlib1g:i386
これで必要なものはすべてインストールされる(はず)。以降足りないものがあれば適宜インストールしてください。
UserNameは自分のユーザー名に変えて実行。
$ sudo install -o UserName -g UserName -d /opt/pkg/petalinux/2019.1
$ cd /opt/pkg/petalinux/2019.1
$ bash /home/UserName/petalinux-v2019.1-final-installer.run ./
※ライセンス関係のメッセージがいくつか出るので、読む→qで抜ける→yで承認。
※WARNING: PetaLinux installation directory: /opt/pkg/petalinux/2019.1/. is not empty! と言われたらyでOK。
※「tftp-serverが無い」と言われるが、あってもなくても問題ない。
$ cd /opt/pkg
$ sudo mkdir zcu111/
$ sudo chown -R UserName:UserName zcu111
$ cd zcu111
$ cp /home/UserName/xilinx-zcu111-v2019.1-final.bsp ./
$ petalinux-create -t project -s xilinx-zcu111-v2019.1-final.bsp
$ cd xilinx-zcu111-2019.1/
以下xilinx-zcu111-2019.1のディレクトリ内にあるREADME II.d.4 にやることが書いてあるので、適宜参考に。
ファイルにコンフィグを追加
$ cat >> project-spec/meta-user/conf/user-rootfsconfig << EOF
CONFIG_peekpoke
CONFIG_gpio-demo
CONFIG_rfdc
CONFIG_rfdc-read-write
CONFIG_rfdc-selftest
CONFIG_libsdfecusrintf
CONFIG_sdfec-demo
EOF
続いて、このコマンドを実行すると画面が切り替わる(はず)。
$ petalinux-config -c rootfs

こんな感じ。
1 user packageで以下3つをチェック。
rfdc
rfdc-read-write
rfdc-selftest
libsdfecusrintf
sdfec-demo
※チェック済みのはず。取り消し線のある下二つはチェックの必要なし。
2 appで以下二つをチェック
gpio-demo
peekpoke
以上1と2が終わったらexit。
$ petalinux-config
再び画面が切り替わるが、何もせずにexit。
$ petalinux-build
$ petalinux-build --sdk
petalinuxとsdkのbuild。この二つは結構時間がかかる。
以上が終わったら
$ /opt/pkg/petalinux/zcu111/xilinx-zcu111-2019.2/images/linux/sdk.sh
この時展開するディレクトリを聞かれるので、任意のディレクトリを指定。
これでSDKの本体が出来上がり、aarch64-xilinx-linuxがSDKを含んだsysrootになる。
最後に
$ zip -r sdkroot.zip aarch64-xilinx-linux
として、aarch64-xilinx-linuxを圧縮してwindows側に持ってくる。これも時間がかかる。
移動が終わったら解凍。
SDKを使う際、ここで作ったsysrootにpathを通せばライブラリ等使えるようになるはず。
SDKのプロジェクト作成
参考:XilinxWiki Creating Linux Application in SDK
SDKを開くと最初にwork spaceの場所を聞かれるので、任意のディレクトリを指定。
左上のFile→New→Application Projectを選択すると下のような画面が出るので、
適当なプロジェクト名を付けて画像の通りにOS Platform、Processor Type等を設定。
Linux System Rootへのパスは上で作ったsysrootの場所を指定してNext >

TemplatesはLinux Empty Applicationを選択。

プロジェクトが作成されたら、左側のProject Explorer内のフォルダを右クリックして「C/C++ Build Settings」を選択。
まずSettingsでARM v8 Linux gcc linker内のMiscellaneousを選択し、Linker Flagsに --sysroot="<sysrootの場所>" を入力。

続いてLibrariesを選択して、
Other Optionsに「m」、「rfdc」、「metal」
Other Objectsにsysroot内のlibとusr\libのパスを入力。

次にARM v8 Linux gcc compilerのSymbolsを選択し、Defined symbolsにXPS_BOARD_ZCU111と入力。

これでBuild Settingsは完了。
Importします
srcフォルダを右クリックしてImportを選択。
GeneralのFile Systemを選んで次へ。

ソースコードを選んでFinish。
上で作ったrftoolのソースを選択。
Xilinx\SDK\2019.1\data\embeddedsw\XilinxProcessorIPLib\drivers\rfdc_v5_0
のsrcフォルダにヘッダーファイル等が、exampleフォルダ内にサンプルがあるはず。
例えばこんな感じ。

※もしsrcフォルダがなかったら下の補足へ。
これでSDKのプロジェクト作成準備はOK。
補足
もし上のsrcフォルダ、あるいはフォルダ内にヘッダーファイル等がなかった場合、Ubuntuでrftoolのソースファイルを作成。
rdf0476-zcu111-rf-dc-eval-tool-2019-1\apu\rfsoc_petalinux_bsp.bsp
をUbuntuにコピー。petalinuxで
petalinux-create -t project -s rfsoc_petalinux_bsp.bsp
を実行するとプロジェクトが出来上がる。
その中の rfsoc_petalinux_bsp/project-spec/meta-user/recipes-apps/rftool/files 内に必要なヘッダーファイル等がある。