MENU

Zybo (Zynq) でPetalinuxを動かしてみた

ZyboでPetalinuxを動かしてみました。その際の手順をこちらにまとめておきます。

目次

動作確認環境

開発環境(ホストPC)

Ubuntu 20.04 LTS(Windows 10 PC上のWSL)

ツールバージョン

Vivado 2021.2

FPGAボード

初代Zybo

動作させるPetalinuxのバージョン

Petalinux 2021.2

ZyboについてはDigilentのサイトに詳しいマニュアルが載っています。

https://digilent.com/reference/programmable-logic/zybo/start

また、動作確認を行うにあたってこちらの記事を参考にさせていただきました。

Petalinuxのインストール

Petalinuxのインストーラをダウンロードします。

https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html

Petalinuxについては日本語のリファレンスガイドが用意されています。

https://docs.xilinx.com/r/ja-JP/ug1144-petalinux-tools-reference-guide

リファレンスガイドには以下のように記載されています。

Petalinuxは、FPGA ベースのシステム オン チップ (SoC) デザインを開発するためのエンベデッド Linux ソフトウェア開発キット (SDK)です

PetalinuxとはLinuxのディストリビューションというわけではなく、開発環境全体の総称のようです。

ダウンロードしたインストーラを実行します。

$ mkdir -p ${HOME}/tools/petalinux
$ cd ${HOME}/tools/petalinux
$ chmod u+x petalinux-v2021.2-final-installer.run
$ ./petalinux-v2021.2-final-installer.run

何回かLicense Agreementについての確認がありますが、全てYesとします。

インストール先のディレクトリに「settings.sh」というスクリプトが生成されるので、これを「.bashrc」でログイン時に読み込むようにしておきます。

$ source ${HOME}/tools/petalinux/settings.sh >& /dev/null

これで次回のログイン時から「petalinux-create」「petalinux-config」等のコマンドが使えるようになりました。

プロジェクトの作成・ビルド

「petalinux-create」コマンドでプロジェクトを作成します。ZyboのようなZynq-7000シリーズを搭載したFPGAの場合は、templateオプションに「Zynq」と指定します。

$ petalinux-create --type project --template zynq --name <project_name>
$ cd <project_name>

VivadoでExportしたxsaファイル(Vivado上で作成したデザイン情報を含むファイル)を指定してコンフィグします。Vivado上での操作については、また別の記事にしたいと思います。

$ petalinux-config --get-hw-description=<path_to_xsa_file>

ターミナル上で以下のようなコンフィグ設定画面が表示されます。ここではデフォルト設定のまま<Exit>を選択しました。

最後にビルドを実行します。

$ petalinux-build

これでビルドが開始されます。ビルド完了まで数時間かかるので気長に待ちます。

ビルドが完了すると、images/linux以下にファイルが生成されます。生成されたファイルを使ってブートのためのバイナリ (BOOT.BIN) を生成します。

$ petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot

ブート用SDカードの作成

SDカード上にFAT32とext4のパーティションを作成します。SDカードの準備方法については、こちらの記事を参考にしてください。

SDカードの先頭の512MBをFAT32、それ以外の領域をext4としてパーティショニングを行い、FAT32の領域とext4の領域にそれぞれ生成したバイナリ等をコピーします。

$ cp images/linux/BOOT.bin <path_to_fat32>
$ cp images/linux/boot.scr <path_to_fat32>
$ cp images/linux/image.ub <path_to_fat32>
$ cp images/linux/rootfs.tar.gz <path_to_ext4>

コピーしたルートファイルシステムを展開し、SDカードをアンマウントします。

$ cd <path_to_ext4>
$ tar zxvf rootfs.tar.gz
$ sudo umount /dev/sdX1 # Xには「a」や「b」などのアルファベットが入ります
$ sudo umount /dev/sdX2

Zyboの起動

J11のMicro-USBコネクタでPCと接続しTeratermを起動します。シリアルポートを開きボーレートを「115200」に設定しておきます。Digilentのリファレンスマニュアルを見ながら、JP5のブートモードを選択するためのジャンパーピンを「micro SD Boot Mode」となるよう設定します。

SDカードをボードに差し込み、ボードに電源を投入するとTeraterm上に無事ブートメッセージが表示されました。

  • URLをコピーしました!

この記事を書いた人

映像処理ハードウェアの研究開発をしています。ASIC, FPGA, 機械学習などの話題に興味があります。このブログでは、自分が最近勉強したことなどを中心にマイペースに発信していきます。

目次