PetaLinux

Docker 上のUbuntu 16.04 のPetaLinux 2018.2 でビルドしてみた1
    ”Ultra96-PYNQをビルドしてみた”のDocker Container にはPetaLinux 2018.2 がインストールしてあるので、試しにビルドを行う。
Docker 上のUbuntu 16.04 のPetaLinux 2018.2 でビルドしてみた2
前回は、”Ultra96-PYNQをビルドしてみた”のDocker Container にはPetaLinux 2018.2 がインストールしてあるので、試しにビルドを行うということで、petalinux-build までを行った。今回は残りのビルドをやっていこう。
Docker 上のUbuntu 16.04 のPetaLinux 2018.2 でビルドしてみた3
前回は、uImage と BOOT.BIN を生成した。petalinux-boot には失敗してしまったが、Ultra96 をブートするに必要なファイルは揃った。そういう訳で、今回はMirco SD カードにファイルを書いてUltra96 でブートしてみよう。

Docker上ののUbuntu 16.04にPetaLinux 2018.3をインストールする
武内先生の”Petalinux2018.3環境を整える”を参考にさせていただいて、Docker 上のUbuntu 16.04 にPetaLinux 2018.3 をインストールしてみよう。やはりエラーになってしまった。
Docker上のの Ubuntu 16.04にPetaLinux 2018.3をインストールする2(インストールできた)
前回は、武内先生の”Petalinux2018.3環境を整える”を参考にさせていただい て、Docker 上のUbuntu 16.04 にPetaLinux 2018.3 をインストールしてみたが”ERROR: Failed to install Yocto SDK for aarch64.”でエラーになってしまってインストールできなかった。全く原因は分からない。そこで、PetaLinux 2018.2 をインストールしてみて、その結果から何のパッケージが足りないか?を探って行った。結局PetaLinux 2018.2 がインストールできたら、PetaLinux 2018.3 もインストールできた。
Docker 上のUbuntu 16.04 のPetaLinux 2018.3でRootFSを使用するUltra96のPetaLinuxをビルドする1
Docker コンテナにUbuntu 16.04 のPetaLinux 2018.3をインストールできたので、今度はUltra96 用のPetaLinux をビルドしてみよう。
Docker 上のUbuntu 16.04 のPetaLinux 2018.3でRootFSを使用するUltra96のPetaLinuxをビルドする2
Ultra96 用のPetaLinux 2018.3 をMicroSD カードの第2パーティションに入れたRoot File system でブートしたいということで前回は、petalinux-build までやってみた。今回は、uImage, BOOT.BIN を作成してUltra96 ボードでMicroSD カードから起動した。しか し、”Waiting for root device /dev/mmcblk0p2...”で止まってしまい、Linux をブートできなかった。
Docker 上のUbuntu 16.04 のPetaLinux 2018.2でRootFSを使用するUltra96のPetaLinuxをビルドする
Ultra96 用のPetaLinux 2018.3 を使用して、MicroSD カードの第2パーティションに入れたRoot File system でブートしたいということで、前回は、uImage, BOOT.BIN を作成してUltra96 ボードでMicroSD カードから起動したのだが、”Waiting for root device /dev/mmcblk0p2...”で止まってしまい、Linux をブートできなかった。今回は、PetaLinux 2018.2 を使用したら MicroSD カードの第2パーティションに入れたRoot File system でブートできたので、紹介する。
Docker 上のUbuntu 16.04 のPetaLinux 2018.3でRootFSを使用するUltra96のPetaLinuxをビルドしたが失敗した
前回、PetaLinux 2018.2 を使用したら MicroSD カードの第2パーティションに入れたRoot File system でブートできたので、PetaLinux 2018.3 を使って同様に MicroSD カードの第2パーティションに入れたRoot File system でブートできるかどうか?やってみたら失敗した。
Docker 上のUbuntu 16.04 のPetaLinux 2018.2で、Vivado 2018.3のSDKのディレクトリを使用してRootFSを使用するUltra96のPetaLinuxをビルドする(Ultra96 BSPを使用)
今回は、”Docker 上のUbuntu 16.04 のPetaLinux 2018.3でRootFSを使用するUltra96のPetaLinuxをビルドしたが失敗した”で使用したVivado 2018.3 の cam_dp_183 プロジェクトの SDK ディレクトリを使用して、Ultra96 のPetaLinux 2018.2 のBSP を使用してPetaLinux 2018.2 でビルドするとどうなるか?を確かめてみよう。Ultra96 でPetaLinux をブートできた。
Docker 上のUbuntu 16.04 のPetaLinux 2018.2で、Vivado 2018.3のSDKのディレクトリを使用してRootFSを使用するUltra96のPetaLinuxをビルドする(Ultra96 BSPを使用)にUIOを追加した
前回、Linux 起動時に ls /sys/class してみたところ uio が入っていなかったと思うので、今回は、”Docker 上のUbuntu 16.04 のPetaLinux 2018.2で、Vivado 2018.3のSDKのディレクトリを使用してRootFSを使用するUltra96のPetaLinuxをビルドする(Ultra96 BSPを使用)”にUIO を追加する。ついでに、”Ultra96 のuEnv.txt のbootargs に cpuidle.off=1を追加した”に書いたようにLinux 起動時にハングアップしないように、Linux のブートオプションに cpuidle.off=1 も追加する。
Docker 上のUbuntu 16.04 のPetaLinux 2018.2で、Vivado 2018.3のSDKのディレクトリを使用してRootFSを使用するUltra96のPetaLinuxをビルドする(Ultra96 BSPを使用)にPLのUIOを追加した
前回は、Linux のブートオプションに uio_pdrv_genirq.of_id=generic-uio cpuidle.off=1 を追加して、UIOを活かした。今回は、PL のIP をUIO として設定できた。
udmabufを PetaLinuxで使用する(ホストパソコンでudmabufをmakeして、udmabuf.koをPetaLinuxにコピーしたが失敗)
”Docker 上のUbuntu 16.04 のPetaLinux 2018.2で、Vivado 2018.3のSDKのディレクトリを使用してRootFSを使用するUltra96のPetaLinuxをビルドする(Ultra96 BSPを使用)にPLのUIOを追加した”でPetaLinux にPL のIP のUIO を追加することができた。cam_dp_183 プロジェクトで作成したビットストリームを動作させるには、どうしても udmabuf が必要なので、udmabuf をインストールしよう。
udmabufを PetaLinuxで使用する(ホストパソコンでudmabufをmake したが致命的エラー)
前回の make は X86 用のカーネルモジュールを生成してしまい、Ultra96 のPetaLinux に持っていったがinsmod でエラーになった。今回は、arm64 用に make を行ってみよう。なお、arm64 用のコンパイル環境は、source /tools/Xilinx/Vivado/2018.3/settings64.sh を起動することにより確保している。
udmabufを PetaLinux 2018.2でビルドする
前回は、arm64 用にホストパソコン上で make でudmabuf をビルドしようとしたが、致命的エラーになってビルドできなかった。今回は、素直にPetaLinux 2018.2 を使用して、PetaLinux 上でビルドしてみよう。
Ultra96 のPetaLinux2018.2 で無線LANを設定する
前回は、udmabuf をPetaLinux 2018.2 上でビルドしてみたところ、Ultra96 のPetaLinux で insmod することができた。今回は、無線LANを設定してネットワークを使用できるようにしてみよう。
Ultra96 のPetaLinux2018.2 でhelloworld アプリケーションを作る(ただし、rootfs を使用)
前回は、無線LANを設定してネットワークを使用できるように設定を行った。今回は、 PetaLinux の手順でhelloworld アプリケーションを作成してみよう。
Ultra96 で動作するPetaLinux 2018.2 へSDKリモートデバックを行ったが失敗した
Ultra96 で動作するPetaLinux 2018.2 へSDKリモートデバックを行ったが失敗した。
使用するのは、”Ultra96 のPetaLinux2018.2 でhelloworld アプリケーションを作る(ただし、rootfs を使用)”のシステムだ。
Ultra96 で動作するPetaLinux 2018.2 へSDKリモートデバックを行ったが失敗した2
前回は、”TCF agent を使ってLinaro Ubuntu14.04LTSが動作してるZYBO へパソコンのSDK からリモートデバッグする2”の手順でSDK リモートデバック(つまりホストパソコンからSDK を使用してUltra96 のPetaLinux へリモートデバックする)してみたが失敗した。今回は、PetaLinux のリファレンス・ガイド(UG1144)の手順でやってみたが同様に失敗した。
Docker 上のUbuntu 16.04 のPetaLinux 2018.2でuioとudmabufの動作をテストする(DMA_pow2_testを使用)
今まで、cam_dp_183 のVivado 2018.3 プロジェクトを使用して、PetaLinux をいろいろと試してみたが、uio と udmabuf の動作テストをする場合に、カメラをDisplayPort に表示して、BMP ファイルの落とすソフトウェアはOpenCV の関数を使用していてハードルが高い。そこで、DMA_pow2_test のVivado 2018.2 プロジェクトを使用して uio と udmabuf のテストをすることにした。
”Docker 上のUbuntu 16.04 のPetaLinux 2018.2でuioとudmabufの動作をテストする(DMA_pow2_testを使用)”にPLのIPのUIOを追加する
前回は、DMA_pow2_test のVivado 2018.2 プロジェクトを使用して uio と udmabuf のテストをすることにした。ということで、PetaLinux 2018.2 のプロジェクトを作成して、ビルドを行い、BOOT.BIN の作成まで行った。今回は、それにPL のIP のUIO を追加しよう。
”Docker 上のUbuntu 16.04 のPetaLinux 2018.2でuioとudmabufの動作をテストする(DMA_pow2_testを使用)”にudmabufを追加する
PetaLinux 2018.2 のプロジェクトを作成して、ビルドを行い、BOOT.BIN の作成したものに、PL のIP(DMA_pow2)のUIO を追加した。今回は、それに udmabuf を追加する。
”Docker 上のUbuntu 16.04 のPetaLinux 2018.2でuioとudmabufの動作をテストする(DMA_pow2_testを使用)”で2乗IPを動作させることができた
PetaLinux 2018.2 のプロジェクトを作成して、ビルドを行い、BOOT.BIN の作成したものに、PL のIP(DMA_pow2)のUIO を追加し、さらに udmabuf.ko をビルドした。今回は、DMApow2Test2.c を作成し、ビルドして、Ultra96 のPetaLinux 上でテストする。
”Docker 上のUbuntu 16.04 のPetaLinux 2018.2でuioとudmabufの動作をテストする(DMA_pow2_testを使用)”のRootFSをUbuntu 18.04に変更した
前回は、PetaLinux 2018.2 のプロジェクトを作成して、ビルドを行い、BOOT.BIN の作成したものに、PL のIP(DMA_pow2)のUIO を追加し、さらに udmabuf.ko をビルドした。そして、DMApow2Test2.c を作成し、ビルドして、Ultra96 のPetaLinux 上でテストしたところ成功した。今回は、そのPetaLinux のRootFS をUbuntu 18.04.2 に変更する。
”Docker 上のUbuntu 16.04 のPetaLinux 2018.2でuioとudmabufの動作をテストする(DMA_pow2_testを使用)”のRootFSをUbuntu 18.04に変更した2
前回は、PetaLinux 2018.2 のプロジェクトを作成して、ビルドを行い、BOOT.BIN の作成したものに、PL のIP(DMA_pow2)のUIO を追加し、さらに udmabuf.ko をビルドした。そして、DMApow2Test2.c を作成し、ビルドして、Ultra96 のPetaLinux 上でテストしたところ成功した。そしてそのPetaLinux のRootFS をUbuntu 18.04.2 に変更したところうまく起動した。今回は、Ubuntu 18.04.2 のUIOの状況を見ていこう。
/sys/devices/platform/amba_pl@0/80000000.DMA_pow2 はあったので、デバイスツリーは認識されているが、UIO には入っていないようだ。

SDx のUltra96-V2 用プラットフォームを作る5(PetaLinuxプロジェクト1)
前回、SDx でプラットフォームを作成する時に使用されるDSA ファイルを生成した。今回は、PetaLinuxのプロジェクトを作成しよう。

pythonのバージョンを切 り替える(anaconda使用の場合)
”SDx のUltra96-V2 用プラットフォームを作る5(PetaLinuxプロジェクト1)”で petalinux-config がERROR になってしまったが、python がバージョン 3.6.5 だったためだった。
python で動作するpython は 2系にしないといけないようだが、PetaLinux 動作させる時以外は python は 3系にしたい。ということで、python コマンドを 2系と 3系で切り替えられるようにした。

SDx のUltra96-V2 用プラットフォームを作る6(PetaLinuxプロジェクト2)
前回は、PetaLinux 2018.3 のプロジェクトを作成し、petalinux-config を行ったが、Python が 3系だったので、エラーになってしまった。その対策として、”pythonのバージョンを切り替える(anaconda使用の場合)”で Python を 2系に切り替えた。今回は、再度、petalinux-config を行っていく。
SDx のUltra96-V2 用プラットフォームを作る7(PetaLinuxプロジェクト3)
前回は、PetaLinux 2018.3 のプロジェクトの petalinux-config を行った。今回は、petalinux-build を行って、elf ファイルやLinux イメージを生成し、それらをSDx で利用しやすいように環境を整える。
SDx のUltra96-V2 用プラットフォームを作る8(PetaLinuxプロジェクト4)
前回は、petalinux-build を行って、elf ファイルやLinux イメージを生成し、それらをSDx で利用しやすいように環境を整えた。今回は、PetaLinux 2018.3 からスタテック・リンクされていたライブラリ(libsds_lib.so)がダイナミック・リンクに変更になっているので、その処理を行う。

SDx 2019.1 のUltra96-V2 用プラットフォームを作る2(PetaLinux1)
前回は、Vivado 2018.3 で作ってあったSDx のハードウェア・プラットフォームをVivado 2019.1 に変換し、DSA ファイルを生成した。今回は、PetaLinux をコンフィギュレーションして、ビルドしていこう。
SDx 2019.1 のUltra96-V2 用プラットフォームを作る3(PetaLinux2)
前回は、PetaLinux のプロジェクトを生成して、petalinux-config を行った。今回は、カーネルの petalinux-config とRoot File System の petalinux-config を行って、プロジェクトをビルドしていこう。
SDx 2019.1 のUltra96-V2 用プラットフォームを作る4(PetaLinux3)
前回は、カーネルの petalinux-config とRoot File System の petalinux-config を行って、プロジェクトをビルドした。今回は、boot, image ディレクトリを作り、boot.bif を作成し、mylib と mylib2 を作成する。

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる2(ソフトウェア・コンポーネントの作成1)
前回は、Vivado 2019.2 の組み込みプロセッサ プラットフォームを作ってみようということで、SDx 2019.1 用に作ったハードウェア・プラットフォーム用のVivado 2019.2 のプロジェクトをVivado 2019.2 にアップグレードして、XSA ファイルを生成した。今回は、”Vitis Unified Software Development Platform Documentation”の”
Embedded Processor Platform Development”の”Creating the Software Component”を参照しながら、Vitis 2019.2 のソフトウェア・コンポーネントを作成していこう。
Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる3(ソフトウェア・コンポーネントの作成2)
前回は、”Creating the Software Component”を参照しながら、PetaLinux 2019.2 を使用して、Vitis 2019.2 のソフトウェア・コンポーネントを作成していったが、petalinux-build までとなった。今回は sysroot を作成して、linux.bif を作成する。

Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方2(ソフトウェア・コンポーネント編)
Ultra96-V2 の Vitis アクセラレーション・プラットフォームのハードウェア・コンポーネント編の続きで、ソフトウェア・コンポーネント編をやっていこう。PetaLinux 2019.2 で実装して行く。

ultra96v2_min2 プラットフォームのPeteLinux 2019.2 が動作するUltra96-V2 にSFTP できた
    ultra96v2_min2プラットフォームのPeteLinux 2019.2 が動作するUltra96-V2 にSFTP ができました。
ultra96v2_min2 プラットフォームのPeteLinux 2019.2 が動作するUltra96-V2 にSFTP できた2
”ultra96v2_min2プラットフォームのPeteLinux 2019.2 が動作するUltra96-V2 にSFTPできた”で、Ubuntu 18.04 の scp コマンドで、Ubuntu 18.04 の自分のパソコンから Ultra96-V2 のPetaLinux 2019.2 にファイルをアップロードすることができた。今回は、Ultra96-V2 のPetaLinux 2019.2 から Ubuntu 18.04 の自分のパソコンにファイルをダウンロードしてみよう。これは、ラプラシアン・フィルタ処理した画像ファイルを確認するのに使用する。

PetaLinux 2020.1 のインストール
PetaLinux 2020.1 のインストール方法を書いておく。

””設計開始 Kria KV260 ビジョン AI スターター キット使用”をやってみる1”の PetaLinux を dnf で update
””設計開始 Kria KV260 ビジョン AI スターター キット使用”をやってみる1”で MicroSD カードの書いた PetaLinux には dnf がインストールされているので、dnfを使ってみる。

KV260 の Petalinux の ls コマンド出力に色を付ける
”lsコマンドの色を変更する方法”を参考にして、KV260 の Petalinux の ls コマンド出力に色を付けた。

u-dma-buf を Petalinux 2021.1 でビルドする
kv260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる1”で連続領域のメモリにマップできる u-dma-buf の必要性を痛感したので、Petalinux 2021.1 で u-dma-buf をビルドし成功した。
Petalinux 2021.1 でビルドした u-dma-buf を insmod する
”u-dma-buf を Petalinux 2021.1 でビルドする”で作成した u-dma-buf.ko を KV260 の Petalinux に SFTP してコピーし、insmod してみたところ、無事に u-dma-buf がロードできた。

v260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる2
前回は、medianf_pf.cpp を作成したが、メモリ上にDMA 用の連続領域を取れないというバグがあった。今回は、”u-dma-buf を Petalinux 2021.1 でビルドする”で作成した u-dma-buf.ko を使用して、メモリ上に連続領域を取れることになったので、u-dma-buf を利用するように medianf_pf.cpp を書き直して、ビルドして成功した。
kv260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる3
現在行っていることは、kv_median_platform でメディアン・フィルタ付きのプラットフォームを作成したので、プラットフォームのメディアン・フィルタを動作させてみたいということだ。プラットフォームにメディアン・ フィルタが付いているとそのプラットフォームを元に作成した Vitis アクセラレーション・アプリケーションのカーネルもメディアン・フィルタ付きになる。
前回は、”u-dma-buf を Petalinux 2021.1 でビルドする”で作成した u-dma-buf.ko を使用して、メモリ上に連続領域を取れることになったので、u-dma-buf を利用するように medianf_pf.cpp を書き直して、ビルドして成功した。今回は、前回作成された medianf_pf 実行ファイルを実行してメディアン・フィルタ処理後のファイルを作成したが、画像のノイズが除去されていない。
kv260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる4
前回は、medianf_pf 実行ファイルを実行してメディアン・フィルタ処理後のファイルを作成したが、ノイズが取れていなかった。今回は、ソースコードを見直して、やり直してみたが、今度は真っ黒 な画像だった。
kv260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる5
前回は、メディアン・フィルタを動作させるソースコードを見直して、やり直してみたが、今度は 真っ黒な画像だった。今回は、Vitis アクセラレーション・アプリケーション・プロジェクト vadd_xrt の Vivado 2021.1 プロジェクトのブロック・デザインに ILA を挿入して、vadd.bit.bin を作成した。
kv260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる6
前回は、Vitis アクセラレーション・アプリケーション・プロジェクト vadd_xrt の Vivado 2021.1 プロジェクトのブロック・デザインに ILA を挿入して、vadd.bit.bin を作成した。今回は、vadd.bit.bin を KV260 の Petalinux にアップロードし、KV260 上でロードして、ILA ダッシュボードを開いてデバッグする。とりあえず、median_axis_RGB_0 の設定を確認した。

u-dma-buf を Petalinux 2022.1 でビルドする
Petalinux 2022.1 で u-dma-buf をビルドしてみよう。
Petalinux 2021.1 ではすでに u-dma-buf をビルド済みなので、それを参考にして Petalinux 2022.1 でビルドする。
Petalinux 2022.1 でビルドした u-dma-buf を insmod する
”u-dma-buf を Petalinux 2022.1 でビルドする”で作成した u-dma-buf.ko を KV260 の Petalinux に SFTP してコピーし、insmod してみたところ、無事に u-dma-buf がロードできた。

Petalinux で petalinux-build が失敗するときの一解決方法
家の Ubuntu 18.04 のパソコンでは Petalinux のビルドに成功するのに職場の Ubuntu 18.04 のパソコンでは Petalinux のビルドに失敗することが多かった。
その原因は Petalinux のインストール・ディスクと異なるディスクで Petalinux のビルドをしていたからだった。同じディスクでビルドすればビルドが成功した。

ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる1
今まで ZUBoard 1CG の PYNQ Linux で動作させてきた i4filters プロジェクトの回路を Petalinux で動作させてみよう。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる2
今まで ZUBoard 1CG の PYNQ Linux で動作させてきた i4filters プロジェクトの回路を Petalinux で動作させてみようということで、前回は、Petalinux 2022.2 で zub1cg_i4flilters プロジェクトを作成し、i4filters プロジェクトのハードウェアをインポートした。RootFS に sudo, dnf, OpenCV の設定を行ってから、ビルドを行って成功した。ファイルを MicroSD カードに書いて、ZUBoard 1CG でブートしたところ、ブートの途中でエラーで停止した。今回は、異なるハードウェアだが、うまく行った”MicroZed Chronicles: UIO をやってみる3”の設定を使用してやってみたところ、ビルドが成功して、Micro SD カードに書いて ZUBoard 1CG でブートしたところ、Petalinux 2022.2 が起動した。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる3
前回は、異なるハードウェアだが、うまく行った”MicroZed Chronicles: UIO をやってみる3”の設定を使用してやってみたところ、ビルドが成功して、Micro SD カードに書いて ZUBoard 1CG でブートしたところ、Petalinux 2022.2 が起動した。今回は、ZUBoard 1CG で起動した Petalinux 2022.2 で uio を確認した。sftp を試したところ、ZUBoard 1CG の Petalinux 2022.2 にログインできなかった。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる4
前回は、ZUBoard 1CG で起動した Petalinux 2022.2 で uio を確認した。sftp を試したところ、ZUBoard 1CG の Petalinux 2022.2 にログインできなかった。今回は、sftp で ZUBoard 1CG で起動した Petalinux 2022.2 にログインできるように openssh-sftp-server パッケージをインストールしたら sftp でログインすることができた。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる5
前回は、sftp で ZUBoard 1CG で起動した Petalinux 2022.2 にログインできるように openssh-sftp-server パッケージをインストールしたら sftp でログインすることができた。pcmanfm を動作させることができた。今回は、Vitis 2022.2 を起動して、 zub1cg_i4filters_pf プラットフォーム・プロジェクトと zub1cg_i4filters_system アプリケーション・プロジェクトを作成した。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6
前回は、Vitis 2022.2 を起動して、 zub1cg_i4filters_pf プラットフォーム・プロジェクトと zub1cg_i4filters_system アプリケーション・プロジェクトを作成した。今回は、アプリケーション・プロジェクトでソフトウェアを書きながら OpenCV のインストールを試していたのだが、やはりインストールできなかった。仕方がないので、bmp_header.h を使用して、BMP ファイルをロードしてやることにしたが、そのためにはハードウェアを変更する必要がある。ということで、ハードウェアを変更することにした。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる7
前回は、アプリケーション・プロジェクトでソフトウェアを書きながら OpenCV のインストールを試していたのだが、やはりインストールできなかった。仕方がないので、bmp_header.h を使用して、BMP ファイルをロードしてやることにしたが、そのためにはハードウェアを変更する必要がある。ということで、ハードウェアを変更することにした。今回は、そのハードウェアに合 わせて、Petalinux プロジェクトを作成し、ビルドした。BOOT.BIN を作成し、Micro SD カードにファイルをコピーして、Petalinux 2022.2 を起動した。

u-dma-buf を ZUBoard 1CG 用の Petalinux 2022.2 でビルドする
”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6”の AXI DMA IP を動作させるために u-dma-buf が必要となるので、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる7”の Petalinux 2022.2 で u-dma-buf をビルドした。

ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる8
前回は、そのハードウェアに合わせて、Petalinux プロジェクトを作成し、ビルドした。BOOT.BIN を作成し、Micro SD カードにファイルをコピーして、Petalinux 2022.2 を起動した。今回は、”u-dma-buf を ZUBoard 1CG 用の Petalinux 2022.2 でビルドする”でビルドした u-dma-buf.ko を SFTP で ZUBoard 1CG の Petalinux 2022.2 にアップロードして、動作を確認した。UIO の状態も確認できた。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる9
前回は、”u-dma-buf を ZUBoard 1CG 用の Petalinux 2022.2 でビルドする”でビルドした u-dma-buf.ko を SFTP で ZUBoard 1CG の Petalinux 2022.2 にアップロードして、動作を確認した。UIO の状態も確認できた。今回は、Vits 2022.2 を起動して、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6”の XSA ファイルを使用して、zub1cg_i4filters_peta_pf プラットフォーム・プロジェクトと zub1cg_i4filters_peta_system アプリケーション・プロジェクトを作成した。zub1cg_i4filters_peta.c と bmp_header.h を追加して、ビルドし成功した。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる10
前回は、Vits 2022.2 を起動して、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6”の XSA ファイルを使用して、zub1cg_i4filters_peta_pf プラットフォーム・プロジェクトと zub1cg_i4filters_peta_system アプリケーション・プロジェクトを作成した。zub1cg_i4filters_peta.c と bmp_header.h を追加して、ビルドし成功した。今回は、前回作成した zub1cg_i4filters_peta.elf をデバック・モードで起動したが、u-dma-buf のメモリを使用するところで、Segmentation violation でエラーになった。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる11
前回は、zub1cg_i4filters_peta.elf をデバック・モードで起動したが、u-dma-buf のメモリを使用するところで、Segmentation violation でエラーになった。今回は、エラーの原因がわかったので、修正して、もう一度試してみたところ、ソーベル・フィルタ処理後の画像ファイルが生成された。成功だ。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる12
”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる11”でガウシアン・フィルタ、メディアン・フィルタ、ソーベル・フィルタの回路を C 言語のソースコードで動作させることができた。
しかし、それは、PYNQ で使用している回路ではなく、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6”で作成した回路だった。
FPGAの部屋の過去の記事を見返してみると、”kv260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる24”が見つかって、その記事での C ソースコードは、Python の PIL ライブラリの image() で読み込める形にできるようなので、これを元に、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる11”を書き換えようと思う。
”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる5”で Vitis 2022.2 のプラットフォームとアプリケーション・プロジェクトは作成済みなので、そこにソースコードを追加しよう。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる13
”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる5”で作成した Vitis 2022.2 のアプリケーション・プロジェクトに C 言語のソースコードを書いて、PYNQ で動作させている回路で、動かしたところ、成功した。



inserted by FC2 system