ZCU111 PetalinuxとSDKのビルド及びプロジェクト作成

  • 投稿日:
  • by
  • カテゴリ:

ZCU111開発続き。

PetalinuxのインストールとSDK。
ハード・ソフトのデザイン追加変更においてPetalinuxが必要なので、それをやる。
Petalinuxで準備してSDKのpathを設定してVivadoを使う、といった順番。
※そこそこ時間がかかる。
(パソコンのスペックによるが、数時間はかかる)

主な参考資料
Xilinx Wiki:Creating Linux application targeting the RFDC driver in SDK 2018.3Petalinux 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

2021-02-12 (5).png
こんな感じ。

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 >

2021-03-18.png

TemplatesはLinux Empty Applicationを選択。
2021-03-18 (1).png


プロジェクトが作成されたら、左側のProject Explorer内のフォルダを右クリックして「C/C++ Build Settings」を選択。


まずSettingsでARM v8 Linux gcc linker内のMiscellaneousを選択し、Linker Flagsに --sysroot="<sysrootの場所>" を入力。

2021-03-18 (2).png

続いてLibrariesを選択して、
Other Optionsに「m」、「rfdc」、「metal」
Other Objectsにsysroot内のlibとusr\libのパスを入力。
2021-03-18 (3).png

次にARM v8 Linux gcc compilerのSymbolsを選択し、Defined symbolsにXPS_BOARD_ZCU111と入力。
2021-03-18 (4).png

これでBuild Settingsは完了。

Importします
srcフォルダを右クリックしてImportを選択。
GeneralのFile Systemを選んで次へ。
2021-03-18 (5).png

ソースコードを選んでFinish。

上で作ったrftoolのソースを選択。

Xilinx\SDK\2019.1\data\embeddedsw\XilinxProcessorIPLib\drivers\rfdc_v5_0
のsrcフォルダにヘッダーファイル等が、exampleフォルダ内にサンプルがあるはず。
例えばこんな感じ。
2021-03-18 (6).png

※もし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 内に必要なヘッダーファイル等がある。