PetaLinuxを使ってみる

はじめに

偶然にもXilinx社の基板とPetaLinuxを触る機会があったので、PetaLinuxの利用方法についてまとめてみました。もっと実用的なTIPSは他にも沢山あるかもしれませんが、まずは、入門から始めてみましょう。

注意

この検証用Linux環境を作るにあたり、必要となるのはXilinxのアカウントを用意する事となります。Xilinxのアカウントは無償で作成可能です。このアカウントはPetaLinuxのツールをダウンロードするのに必要となります。PetaLinuxのツールを利用してビルド・実行するだけならXilinxのツール・ライセンスは不要です。

Linux環境を用意する

ネイティブ、VM(VMware, VirtualBox)どちらでも構いません。ディスク容量はOSを含めて200GB程度必要となります。実際、PetaLinuxと言ってますが、実態はYocto+Xilinx依存部なのでYocto Linuxのビルドで必要なリソースは要求されます。
今回は、OSとしてUbuntu 18.04.5を利用しました。これは、将来的にXilinx社の論理合成ツールや他社のベンダツールを共存して動かす動作環境として利用できる環境としてOSバージョンの星取をした結果このOSの選定結果となったものです。

Ubuntu上で以下のパッケージをインストールを実行する

一般に開発に必要とされるパッケージ一式となります。

sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev zlib1g:i386 screen pax gzip

XilinxのサイトからPetaLinuxをダウンロードする

PetaLinuxの開発環境のインストーラと対象ボードのBSPファイルをダウンロードします。
今回は、以下を利用。
インストーラ: petalinux-v2020.2-final-installer.run
BSPファイル: xilinx-zcu104-v2020.2-final.bsp

PetaLinux環境のインストール
手順


sudo mkdir /opt/pkt/petalinux
sudo chown 自分のユーザ名:自分のユーザグループ /opt/pkt/petalinux
chmod a+x ./petalinux-v2020.2-final-installer.run
./peta-linux-v2020.2-final-installer.run -d /opt/pkt/petalinux

PetaLinuxのプロジェクト作成

念のため、ディレクトリを作成してその下で作業します。

mkdir zcu104-linux
cd zcu104-linux
source /opt/pkt/petalinux/settings.sh (利用環境がC-Shellの場合はsettings.cshを利用してください)
petalinux-create -t project -s ../xilinx-zcu104-v2020.2-final.bsp

ビルド確認

この状態でビルド可能な筈です。なにも設定していないので最小構成のLinuxが作成されます。ビルドの速さは利用しているLinux環境の論理CPUの数に依存します。
論理CPUの数に合わせて、ビルドの並行処理が行われます。
petalinux-build

BOOT.binの作成

petalinux-package --boot --force --fsbl images/linux/zynqmp_fsbl.elf --u-boot

ここでimages/linuxにBOOT.binとimage.ubが作成されていれば、ボードでLinuxを動かす事ができます。

SDCardへのコピー(入門編)

ここで作成したLinuxはRAMベースで動くのでスクリプト等を編集したり実行ファイルを配置してもリブートまたは電源OFFで全て消えてしまいます。

1. SDCardをFAT32でフォーマット
2. SDCardにBOOT.binとimage.ubをコピー
3. SDCardからmicroSDを抜き出してボードに挿入するとボード上でLinuxが動きます。

設定を変えたい場合

これまでは最小構成でした。ここから構成を自分の使う用途向けに変更します。

変更は3種類、設定できます。注意点として画面上のターミナルは80x25以上の大きさになるようにしてください。キャラクターベースのメニュー画面が出ますが、これを表示できないとしてエラーとなってしまいます。

変更した場合は、メニューを抜ける前にSaveを選択して保存して下さい。念のため、メニューでもExitを選択するとSaveするか問い合わせされますが、手違いがあるとビルドと起動検証の時間を多く採られるので注意が必要です。

petalinux-config

引数なしで起動した場合petalinuxそのものの設定となります。特に、ファイルシステムの設定が重要で、デフォルトでは、QSPIフラッシュメモリ上にファイルシステムを用意するJFFS2となっています。SDCardの残り領域を利用する場合には、EXT4にする必要があります。

petalinux-conifg -c kernel

この場合、Linuxカーネルそのものの設定となります。
最小限のデバイスしかサポートしていないので、デバイスドライバの設定でカーネルに組み込むもの、PnPでinsmodされるものを設定します。

petalinux-config -c rootfs

ルートファイルシステムの設定となります。
設定が紛らわしい部分があり、Pythonに至っては、Python2とPython3の設定が、それぞれ存在します。両方を選択してしまった場合、環境変数でどちらの処理系を李ようするかを実行前に宣言する必要があります。
その他、今回の基板環境では外部のデバイスからシリアルでデータを送受信するため、実験用としてminicomが欲しくなると考えられます。
そういった細かなアプリケーションについて、ここでは設定をします。
viはXilinxが用意したプレインストール用イメージにはありますが、コンフィグではOffになっていました。この点、必要なものは必要として設定します。

再度ビルドを実行する

petalinux-build

このとき、最初の最小構成でのビルドの差分でビルドされます。
デバイスドライバがカーネルに組み込まれたかは、以下のコマンドで確認できます。
nm|images/linux/vmlinux

実機確認


SDCardにファイルをコピーして実機を起動して確認します。

To Be Continue...

この記事が気に入ったらサポートをしてみませんか?