KR260

Kria KR260 ロボティクス スターター キットが届いた
AMD XILINX TECH DAY TOKYO 2022 から家に帰ってきたら、Kria KR260 ロボティクス スターター キットが届いていた。

”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみた1
去年の 9 月に買ってから積み基板になっていた KR260 を使ってみたい。
最初に Xilinx 社の”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみることにした。
”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみた2
Xilinx 社の”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみることにしたということで、前回は、iot-limerick-kria-classic-desktop-2204- x06-20220614-78.img.xz がダウンロードして Micro SD カードに書き込んだ。今回は、その Micro SD カードを KR260 に挿入して、Ubuntu 22.04 を起動したが、途中でブートが止まってしまった。合計 3 枚の Micro SD カードに Ubuntu イメージを書き込んだが、同様に途中でブートが止まってしまう。困っていたが、Xilinx サポートのアンサーを見て、USB ケーブルを外したところ Ubuntu 22.04 がブートした。

”Creating a Vitis Platform”をやってみたが make で失敗した
”Kria KR260 Robotics Starter Kit Applications”の”Creating a Vitis Platform”をやってみたが make でエラーになってしまった。
”Creating a Vitis Platform”をやってみたが make で失敗した2
前回は、”Creating a Vitis Platform”をやってみたが、ビルドに失敗した。今回は、なぜビルドに失敗したのかを探っていこう。

KR260 で Vitis アクセラレーション・プラットフォームを作成する1
KR260 で Vitis アクセラレーション・プラットフォームを作成してみようということ で、今回は、”Getting Started with the Kria KR260 in Vivado 2022.1”に従ってVivado 2022.1 で kr260_custom プロジェクトを作成し、Zynq UltraScale+ MPSoC IP を Add IP して、”Add Peripheral Support to Kria KR260 Vivado 2022.1 Project”に従って設定を行った。これは、KR260 のファンのコントロールを取り入れたいからだ。
KR260 で Vitis アクセラレーション・プラットフォームを作成する2
前回は、”Getting Started with the Kria KR260 in Vivado 2022.1”に従ってVivado 2022.1 で kr260_custom プロジェクトを作成し、Zynq UltraScale+ MPSoC IP を Add IP して、”Add Peripheral Support to Kria KR260 Vivado 2022.1 Project”に従って設定を行った。今回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考にブロック・デザインを完成させた。
KR260 で Vitis アクセラレーション・プラットフォームを作成する3
前回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考にブロック・デザインを完成させた。今回は、同様に、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考に Platform Setup を行って、ブロック・デザインを生成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。ハードウェアをエクスポートして、XSA ファイルを生成した。
KR260 で Vitis アクセラレーション・プラットフォームを作成する4
前回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考に Platform Setup を行って、ブロック・デザインを生成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。ハードウェアをエクスポートして、XSA ファイルを生成した。今回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考にして、petalinux-create で、Petalinux 2022.1 プロジェクトを作成し、petalinux-config を行い、petalinux-build でビルドしたところ成功した。
KR260 で Vitis アクセラレーション・プラットフォームを作成する5
前回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考にして、petalinux-create で、Petalinux 2022.1 プロジェクトを作成し、petalinux-config を行い、petalinux-build でビルドしたところ成功した。今回は、その続きで、sdk.sh を作成し、BOOT.BIN を作成した。最後に SD カードのイメージを作成し、SD カードに書き込んだ。

KR260 の Petalinux 2022.1 を設定する 1 (pcmafm をインストール)
”KR260 で Vitis アクセラレーション・プラットフォームを作成する5”で作成した Petalinux 2022.1 の MicroSD カードを KV260 に挿入して電源 ON したところ、Petalinux 2022.1 が起動した。
KR260 の Petalinux 2022.1 を設定する 2 (OpenCV の動作を確認)
前回は、”KR260 で Vitis アクセラレーション・プラットフォームを作成する5”で Petalinux 2022.1 の MicroSD カードを作ったので、KR260 に挿入して電源を ON したところ、Petalinux 2022.1 が起動した。ファイルマネージャーとして、pcmanfm をインストールした。今回は、packagegroup-petalinux-opencv-dbg をインストールして、OpenCV の Python のサンプル・アプリケーションを 2 つ動作せることができた。そのために、SFTP ができる様に openssh-sftp-server.cortexa72_cortexa53 をインストールした。
KR260 の Petalinux 2022.1 を設定する 3 (l3afpad と gtk-play をインストール)
前回は、、packagegroup-petalinux-opencv-dbg をインストールして、OpenCV の Python のサンプル・アプリケーションを 2 つ動作せることができた。そのために、SFTP ができる様に openssh-sftp-server.cortexa72_cortexa53 をインストールした。今回は、l3afpad と gtk-play をインストールした。

KR260 で Vitis アクセラレーション・プラットフォームを作成する6
KR260 で Vitis アクセラレーション・プラットフォームを作成してみようということで、前回は、sdk.sh を作成し、BOOT.BIN を作成した。最後に SD カードのイメージを作成し、SD カードに書き込んだ。今回は、Vitis ディレクトリ構造を作成して、xsct を使用したデバイスツリー・オーバレイを作成した。
KR260 で Vitis アクセラレーション・プラットフォームを作成する7
前回は、Vitis ディレクトリ構造を作成して、xsct を使用したデバイスツリー・オーバレイを作成した。今回は、Vitis 2022.1 を立ち上げて kr260_custom プラットフォームを作成した。
KR260 で Vitis アクセラレーション・プラットフォームを作成する8
前回は、Vitis 2022.1 を立ち上げて kr260_custom プラットフォームを作成した。今回は、kr260_vadd アプリケーション・プロジェクトを作成し、ビルドを行ったら失敗してしまった。原因は system.dtb が無いためだったので、KR260/kr260_custom_platform/kr260_custom_platform/pfm/boot ディレクトリの system-zynqmp-sck-kr-g-revB.dtb の名前を system.dtb に変更して、kr260_custom をクリーンしてからビルドした。もう一度、kr260_vadd アプリケーション・プロジェクトをビルドしたところビルドに成功した。
KR260 で Vitis アクセラレーション・プラットフォームを作成する9
前回は、kr260_vadd アプリケーション・プロジェクトを作成し、ビルドを行ったら失敗してしまった。原因は system.dtb が無いためだったので、KR260/kr260_custom_platform/kr260_custom_platform/pfm/boot ディレクトリの system-zynqmp-sck-kr-g-revB.dtb の名前を system.dtb に変更して、kr260_custom をクリーンしてからビルドした。もう一度、kr260_vadd アプリケーション・プロジェクトをビルドしたところビルドに成功した。今回は、KR260 にファイルを転送して kr260_vadd を実行したところ成功した。
KR260 で Vitis アクセラレーション・プラットフォームを作成する10
前回は、KR260 にファイルを転送して kr260_vadd を実行したところ成功した。今回は、Vitis のビルド時に作成された Vitis HLS プロジェクトと Vivado プロジェクトを見てみよう。

KR260 の Vitis アクセラレーション・プラットフォームで DPU サンプルを実行してみよう1
”KR260 で Vitis アクセラレーション・プラットフォームを作成する7”で作成された kr260_custom プラットフォームを使用して、”KR260 で Vitis アクセラレーション・プラットフォームを作成する9”で Vector Addtion サンプル・アプリケーションを実行することができた。サンプル・アプリケーションをもう 1 個やってみよう。DPU Kernel をやってみることにした が、失敗した。

KR260 のブートファームウェアを更新した
”KV260 のブートファームウェアを更新した”を参考にして、Petalinux 2022.1 上で KR260 のブートファームウエアを BOOT_xilinx-k26-starterkit-v2022.1-09152304_update3.BIN に更新した。
再度 KR260 で Ubuntu 22.04 LTS を起動した
””Kria KR260 ロボティクス スターター キットで 設計開始”をやってみた2”で KR260 で Ubuntu 22.04 LTS を起動したが、USB ケーブルを差し込んだ状態でのブートに問題があって、USB ケーブルを抜くと動作するという状態だった。また、SSH でログインすると不安定で使い物にならない状態だった。
”KR260 のブートファームウェアを更新した”で KR260 のブートファームウェアを更新したので、もう一度、KR260 で Ubuntu 22.04 LTS を試してみたが、問題なく使用できている。

KR260 で Kria-PYNQ をやってみる1(インストール)
”再度 KR260 で Ubuntu 22.04 LTS を起動した”で安定的に KR260 で Ubuntu 22.04 が動作したので、Kria-PYNQ をやってみよう。
今回は、Kria-PYNQ のインストールを行った。
KR260 で Kria-PYNQ をやってみる2(resizer_ps.ipynb)
KR260 で Kria-PYNQ をやってみようということで、前回は、Kria-PYNQ のインストールを行った。今回は、resizer_ps.ipynb をやってみよう。
KR260 で Kria-PYNQ をやってみる3(resizer_pl.ipynb)
KR260 で Kria-PYNQ をやってみようということで、前回は、resizer_ps.ipynb をやってみて成功した。今回は、PL を使用した resizer_pl.ipynb をやってみよう。
KR260 で Kria-PYNQ をやってみる4(dpu_mnist_classifier.ipynb)
KR260 で Kria-PYNQ をやってみようということで、前回は、PL を使用した resizer_pl.ipynb をやって成功した。今回は、pynq-dpu ディレクトリの中の dpu_mnist_classifier.ipynb をやってみよう

KR260 の PMOD ピン番号表
KR260 の PMOD のピン番号表を作ってみた。

”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる1
”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみようということで、今回は、”KR260 で Vitis アクセラレーション・プラットフォームを作成する2”のブロック・デザインに axi_gpio を 4 個追加して、論理合成、インプリメンテーション、ビットストリームの生成を行った。そして、ハードウェアをエクスポートした。
”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる2
”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみようということで、前回は、”KR260 で Vitis アクセラレーション・プラットフォームを作成する2”のブロック・デザインに axi_gpio を 4 個追加して、論理合成、インプリメンテーション、ビットストリームの生成を行った。そして、ハードウェアをエクスポートした。今回は、Petalinux 2022.1 の linux_os プロジェクトに XSA ファイルをインポートし、ビルドを行って成功した。wic イメージ・ファイルを作成した。
”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる3
前回は、Petalinux 2022.1 の linux_os プロジェクトに XSA ファイルをインポートし、ビルドを行って成功した。wic イメージ・ファイルを作成した。今回は、wic イメージ・ファイルを balenaEtcher を使用して MicroSD カードに書き込み、KR260 に挿入して Petalinux 2022.1 を起動した。
”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる4
前回は、wic イメージ・ファイルを balenaEtcher を使用して MicroSD カードに書き込み、KR260 に挿入して Petalinux 2022.1 を起動した。今回は、KR260 の Petalinux 2022.1 に必要なパッケージをインストールした。
”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる5
前回は、KR260 の Petalinux 2022.1 に必要なパッケージをインストールした。今回は、PL デザインのデバイスツリー・オーバレイを生成して、KR260 の Petalinux に転送するファイルを集めて転送した。
”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる6
前回は、PL デザインのデバイスツリー・オーバレイを生成して、KR260 の Petalinux に転送するファイルを集めて転送した。今回は、/lib/firmware ディレクトリにファイルをコピーし、PL デザインやデバイスツリー・オーバレイをロードした。/sys/class/gpio を確認し、また操作して、PMOD1 の 1 番ピンの LED を点灯させることができた。

Xilinx の Petalinux イメージの KR260 に gcc をインストールする
””RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる3”で作成したXilinx の Petalinux 2022.1 イメージの KR260 に gcc をインストールした。

”RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をベースにプログラムで Lチカしてみる
””RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる6”を使用して、LED を点滅させるアプリケーション・ソフトウェアの blink_led.c を作成し、コンパイルし、動作させた。

kr260_gpio 用の Vitis アクセラレーション・プラットホームを作成する1
””RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる1”用の Vitis アクセラレーション・プラットホームを作成してみたいということで、今回は、sdk.sh と BOOT.bin を作成する。また、pfm/boot ディレクトリを更新し、sdk.sh を起動して、sysroot を更新した。
kr260_gpio 用の Vitis アクセラレーション・プラットホームを作成する2
””RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる1”用の Vitis アクセラレーション・プラットホームを作成してみたいということで、前回は、sdk.sh と BOOT.bin を作成する。また、pfm/boot ディレクトリを更新し、sdk.sh を起動して、sysroot を更新した。今回は、”KR260 で Vitis アクセラレーション・プラットフォームを作成する7”で作成した kr260_custom アクセラレーション・プラットホームを更新し、”KR260 で Vitis アクセラレーション・プラットフォームを作成する8”で作成した kr260_vadd アプリケーション・プロジェクトを再ビルドを行った。
kr260_gpio 用の Vitis アクセラレーション・プラットホームを作成する3
前回は、”KR260 で Vitis アクセラレーション・プラットフォームを作成する7”で作成した kr260_custom アクセラレーション・プラットホームを更新し、”KR260 で Vitis アクセラレーション・プラットフォームを作成する8”で作成した kr260_vadd アプリケーション・プロジェクトを再ビルドを行った。今回は、kr260_vadd で生成された Vitis HLS 2022.1 のプロジェクトと Vivado 2022.1 のプロジェクトを見た。
kr260_gpio 用の Vitis アクセラレーション・プラットホームをテストする
前回は、kr260_vadd で生成された Vitis HLS 2022.1 のプロジェクトと Vivado 2022.1 のプロジェクトを見たが、4 個の GPIO が実装されていて安心した。今回は、”kr260_gpio 用の Vitis アクセラレーション・プラットホームを作成する2”で作成した。vadd アクセラレーション・アプリケーションを KR260 に転送して、動作させたところ成功した。しかも /sys/class/gpio に axi gpio も実装されていた。

Vitis HLS 2022.1 で KR260 用の multi_axi4ls IP を作成する
””RPi+PMOD Connector GPIO with Custom PL Design in Kria KR260”をやってみる1”の axi gpio を 4 こ追加した kr260_bd ブロック・デザインに追加するために”Vitis HLS 2022.1 で multi_axi4ls IP を作成する”の multi_axi4ls IP を KR260 用に作り直した。

KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する1
KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加してみようということで、今回は、の multi_axi4ls と DMA_pow2、そして、Xilinx 社の IP の axi timer、axi dma を Vivado 2022.1 の kr260_custom プロジェクトに追加する。
KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する2
KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加してみようということで、前回は、の multi_axi4ls と DMA_pow2、そして、Xilinx 社の IP の axi timer、axi dma を Vivado 2022.1 の kr260_custom プロジェクトに追加して、XSA ファイルを生成した。今回は、Petalinux 2022.1 の linux_os プロジェクトに XSA ファイルをインポートし、ビルドを行って成功した。wic イメージ・ファイルを作成した。wic ファイルを MicroSD カードに書き込んで、KR260 に挿入し、Petalinux 2022.1 を起動した。
KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する3
前回は、Petalinux 2022.1 の linux_os プロジェクトに XSA ファイルをインポートし、ビルドを行って成功した。wic イメージ・ファイルを作成した。wic ファイルを MicroSD カードに書き込んで、KR260 に挿入し、Petalinux 2022.1 を起動した。今回は、KR260 の Petalinux 2022.1 に必要なパッケージをインストールした。
KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する4
前回は、KR260 の Petalinux 2022.1 に必要なパッケージをインストールした。今回は、PL デザインのデバイスツリー・オーバレイを生成して、KR260 の Petalinux に転送するファイルを集めて転送した。
KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する5
前回は、、PL デザインのデバイスツリー・オーバレイを生成して、KR260 の Petalinux に転送するファイルを集めて転送した。今回は、/lib/firmware ディレクトリにファイルをコピーし、PL デザインやデバイスツリー・オーバレイをロードした。/sys/devices/virtual/devlink/platform:firmware:zynqmp- firmware:clock-controller--platform: にプラットホームの IP がロードされているのが確認できた。
KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する6
前回は、/lib/firmware ディレクトリにファイルをコピーし、PL デザインやデバイスツリー・オーバレイをロードした。/sys/devices/virtual/devlink/platform:firmware:zynqmp- firmware:clock-controller--platform: にプラットホームの IP がロードされているのが確認できた。しかし、ハードウェア・プラットホームの IP を使用する方法は分からなかった。今回は、”KV260でVexRiscv動作させた”を参考にして、pl.dtsi を書き換えて、ハードウェア・プラットホーム上の IP を generic-uio に書き換えてみたい。そのため、Petalinux のカーネルを設定して、UIO ドライバをインストールし、UIO ドライバを起動オプションでロードするように設定した。その後、Petalinux をビルドして、SD カードを作成し、KR260 に挿入して Petalinux を起動し、設定を行った。
KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する7
前回は、”KV260でVexRiscv動作させた”を参考にして、pl.dtsi を書き換えて、ハードウェア・プラットホーム上の IP を generic-uio に書き換えてみたい。そのため、Petalinux のカーネルを設定して、UIO ドライバをインストールし、UIO ドライバを起動オプションでロードするように設定した。その後、Petalinux をビルドして、SD カードを作成し、KR260 に挿入して Petalinux を起動し、設定を行った。今回は、pl.dtsi のハードウェア・プラットホームに追加した IP の compatible を generic-uio に書き換えてコンパイルし、pl.dtbo を生成した。再生成した pl.dtbo を kr260_ip.dtbo に名前を変更し、kr260_ip.bin, shell.json と共に SFTP で KR260 の Petalinux 2022.1 に転送した。それらのファイルを /lib/firmware/xilinx/kr260_ip ディレクトリを新規作成してコピーした。既存のアプリケーションをアンロードし、kr260_ip をロードしたところ、/sys/class/uio ディレクトリに新しく uio が生成された。

IP を追加した KR260 の kr260_custom アクセラレーション・プラットホームで multi_axi4ls を動作させた
”KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する7”でハードウェア・プラットホームに実装した IP を UIO にマップすることができた。今回は、その内の multi_axi4ls IP を動作させることができた。

u-dma-buf を KR260 用の Petalinux 2022.1 でビルドする
multi_axi4ls IP の次に AXI Master インターフェースを持つ DMA_pow2 IP を動作させるために u-dma-buf をビルドした。

IP を追加した KR260 の kr260_custom アクセラレーション・プラットホームで DMA_pow2 IP を動作させた
”KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する7”でハードウェア・プラットホームに実装した IP を UIO にマップすることができた。”u-dma-buf を KR260 用の Petalinux 2022.1 でビルドする”で u-dma-buf.ko を作成して、Petalinux 2022.1 に実装し、DMA_pow2 IP を動作させたところ、成功した。

IP を追加した kr260_ip 用の Vitis アクセラレーション・プラットホームを作成する1
”KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する1”用の Vitis アクセラレーション・プラットホームを作成してみたいということで、今回は、sdk.sh と BOOT.bin を作成する。また、pfm/boot ディレクトリを更新し、sdk.sh を起動して、sysroot を更新した。
IP を追加した kr260_ip 用の Vitis アクセラレーション・プラットホームを作成する2
前回は、sdk.sh と BOOT.bin を作成する。また、pfm/boot ディレクトリを更新し、sdk.sh を起動して、sysroot を更新した。今回は、kr260_custom アクセラレーション・プラットホームを更新したが、プラットホームをビルドし、kr260_vadd アプリケーション・プロジェクトをビルドしても、Vivado のブロック・デザインに追加した IP が実装されていなかった。次に、プラットホーム・プロジェクトとアプリケーション・プロジェクトを削除して、もう一度 kr260_custom アクセラレーション・プラットホームと kr260_vadd アプリケーション・プロジェクトをビルドしたところ、追加した IP が Vivado のブロック・デザインに追加されていた。
IP を追加した kr260_ip 用の Vitis アクセラレーション・プラットホームをテストする
”KR260 の kr260_custom アクセラレーション・プラットホームを”IP を追加した kr260_ip 用の Vitis アクセラレーション・プラットホームを作成する2”で作成することができて、kr260_vadd アクセラレーション・アプリケーション・プロジェクトもビルドが成功した。今回は、kr260_vadd を KR260 で動作させることができた。
vadd.cpp を書き換えて、multi_axi4ls と DMA_pow2 も動作させる
”IP を追加した kr260_ip 用の Vitis アクセラレーション・プラットホームをテストする”で vadd を動作させた環境で、multi_axi4ls と DMA_pow2_test アプリケーション・ソフトウェアも動作を確認できた。それでは、アクセラレーション・アプリケーションのホストのソフトウェアの vadd.cpp を書き換えて、multi_axi4ls と DMA_pow2 の動作を確認してみよう。当然ながら vadd も同時に動作させてみる。これができればハードウェア・プラットホーム上の IP を動作させながら、アクセラレーション・ハードウェアも同時に動作させることができる。結果は、問題なく動作した。

Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる1
Vitis アクセラレーション・プラットホームを使用してハードウェアを完成させ、それを自作アプリケーション・ソフトウェアで動作させてみたいということで、今回は、 kr260_custom アクセラレーション・プラットホームを使用して、vadd サンプル・アプリケーション・プロジェクトを作成し、ホスト・ソフトウェアの vadd.cpp の main() 関数内を削除して、ビルドしたところ成功した。生成された Vivado プロジェクトを確認して、ハードウェアをエクスポートした。
Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる2
前回は、kr260_custom アクセラレーション・プラットホームを使用して、vadd サンプル・アプリケーション・プロジェクトを作成し、ホスト・ソフトウェアの vadd.cpp の main() 関数内を削除して、ビルドしたところ成功した。生成された Vivado プロジェクトを確認して、ハードウェアをエクスポートした。今回は、PL デザインの pl.dtsi を生成し、pl.dtsi 上の動作させる IP の compatible を generic-uio に変更して、コンパイルして pl.dtbo を生成した。
Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる3
前回は、PL デザインの pl.dtsi を生成し、pl.dtsi 上の動作させる IP の compatible を generic-uio に変更して、コンパイルして pl.dtbo を生成した。今回は、ip_vadd2_file_transfer ディレクトリを作成し、ファイルを集めて、KR260 の Petalinux に転送した。そして、現在、ロードされているアクセラレーション・アプリケーションをアンロードして、kr260_ip_vadd2 をロードしたが、Vitis で生成された krnl_vadd IP は uio として生成されなかった。
Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる4
前回は、ip_vadd2_file_transfer ディレクトリを作成し、ファイルを集めて、KR260 の Petalinux に転送した。そして、現在、ロードされているアクセラレーション・アプリケーションをアンロードして、kr260_ip_vadd2 をロードしたが、Vitis で生成された krnl_vadd IP は uio として生成されなかった。今回は、Petalinux の kernel コンフィグレーションで Userspace platform driver with generic IRQ handling を M にしていて、常時組み込まれる * にしてなかったことが気になるので、もう一度 Petalinux のビルドからやってみることにした。Petalinux のビルド後、イメージ・ファイルを生成して、MicroSD カードに書いた。KR260 に MicroSD カードを挿入して Petalinux 2022.1 を起動した。Petalinux にモジュールをインストールして、環境を整えた。
Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる5
前回は、Petalinux の kernel コンフィグレーションで Userspace platform driver with generic IRQ handling を M にしていて、常時組み込まれる * にしてなかったことが気になるので、もう一度 Petalinux のビルドからやってみることにした。Petalinux のビルド後、イメージ・ファイルを生成して、MicroSD カードに書いた。KR260 に MicroSD カードを挿入して Petalinux 2022.1 を起動した。Petalinux にモジュールをインストールして、環境を整えた。今回は、ロードされているアクセラレーション・アプリケーションをアンロードして、kr260_ip_vadd2 をロードしたが、やはり、Vitis で生成された krnl_vadd IP は uio として生成されなかった。
Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる6
前回は、ロードされているアクセラレーション・アプリケーションをアンロードして、 kr260_ip_vadd2 をロードしたが、やはり、Vitis で生成された krnl_vadd IP は uio として生成されなかった。今回は、pl.dtsi の krnl_vadd セクションを最小限にして、コンパイルし、Petalinux に転送して、ロードしたところ、krnl_vadd が uio8 として実装できた。
Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる7
前回は、pl.dtsi の krnl_vadd セクションを最小限にして、コンパイルし、Petalinux に転送して、ロードしたところ、krnl_vadd が uio8 として実装できた。今回は、uio ドライバを使用して、multi_axi4ls IP と DMA_pow2 IP、krnl_vadd IP を使用するアプリケーション・ソフトウェアを作成し、動作を確認した。

Vitis アクセラレーション・プラットホームを使用して作ったハードウェアを KR260 の Ubuntu 22.04 で動作させる1
”Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる7”で動作させたハードウェアとソフトウェアを KR260 の Ubuntu 22.04 で動作させて見ようと思う。つまり、今までは、KR260 の Petalinux 2022.1 で動作させていたハードウェアとソフトウェアを Ubuntu 22.04 で動作させてみたい。
Vitis アクセラレーション・プラットホームを使用して作ったハードウェアを KR260 の Ubuntu 22.04 で動作させる2
”Vitis アクセラレーション・プラットホームを使用してハードウェアを作り、それを自作アプリケーション・ソフトウェアで動作させる7”で動作させたハードウェアとソフトウェアを KR260 の Ubuntu 22.04 で動作させてみたいということで、前回は、xmutil コマンドの動作を確認し、u-dma-buf.ko を生成した。今回は、ホスト・パソコンの ip_vadd2_file_transfer の内容を KR260 の Ubuntu 22.04 に転送した。ファイルを /lib/firmware/xilinx/kr260_ip_vadd2 ディレクトリにコピーして、kr260_ip_vadd2 をロードしたが、interrupt-controller が uio として実装されなかった。
Vitis アクセラレーション・プラットホームを使用して作ったハードウェアを KR260 の Ubuntu 22.04 で動作させる3
前回は、ホスト・パソコンの ip_vadd2_file_transfer の内容を KR260 の Ubuntu 22.04 に転送した。ファイルを /lib/firmware/xilinx/kr260_ip_vadd2 ディレクトリにコピーして、kr260_ip_vadd2 をロードしたが、interrupt-controller が uio として実装されなかった。今回は、もう一度、pl.dtsi の interrupt-controller@80000000 の項目を減らして、コンパイルして、KR260 の Petalinux 2022.1 に転送して、kr260_ip_vadd2 をロードしたところ、interrupt-controller が uio に追加された。
Vitis アクセラレーション・プラットホームを使用して作ったハードウェアを KR260 の Ubuntu 22.04 で動作させる4
前回は、もう一度、pl.dtsi の interrupt-controller@80000000 の項目を減らして、コンパイルして、KR260 の Petalinux 2022.1 に転送して、kr260_ip_vadd2 をロードしたところ、interrupt-controller が uio に追加された。今回は、uio のリストが変わってしまったので、アプリケーション・ソフトウェアの kr260_ip_vadd2.c を変更して、コンパイルした。環境を整えて kr260_ip_vadd2 を起動したところ、multi_axi4ls と DMA_pow2 は動作したが、krnl_vadd が終了しなかった。
Vitis アクセラレーション・プラットホームを使用して作ったハードウェアを KR260 の Ubuntu 22.04 で動作させる5
前回は、uio のリストが変わってしまったので、アプリケーション・ソフトウェアの kr260_ip_vadd2.c を変更して、コンパイルした。環境を整えて kr260_ip_vadd2 を起動したところ、multi_axi4ls と DMA_pow2 は動作したが、krnl_vadd が終了しなかった。今回は、Vivado の prj プロジェクトの kr260_bd_wrapper.bin ファイル(KR260/kr260_custom_platform/kr260_custom_platform /kr260_vadd2_system_hw_link/Hardware/binary_container_1.build/link/vivado/vpl/prj/prj.runs/impl_1/kr260_bd_wrapper.bin を binary_container_1.bin の代わりに使用して、自作アプリケーションを実行したが、krnl_vadd の出力は 0 だった。

KR260 を使用した次の課題
KR260 には 4 個の PMOD があるので、これに秋月電子の OV5642 を付けてみたい。
秋月電子の OV5642 は Ultra96 でも使っているので、そのプロジェクトが参考になるはず。
そして、DisplayPort にも出力してみたい。DisplayPort も Ultra96 や KV260 で使用している。

KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する1
今までやってきた KR260 の Vitis アクセラレーション・プラットホーム作成を踏まえて、DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成しよう。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する2
今までやってきた KR260 の Vitis アクセラレーション・プラットホーム作成を踏まえて、DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成しようということで、前回は、Vivado 2022.1 の kr260_cam_disp プロジェクトと kr260_bd ブロック・デザインを作成し、Zynq UltraScale+ MPSoC IP の設定を行った。今回は、kr260_bd ブロック・デザインの Diagram を完成させた。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する3
前回は、kr260_bd ブロック・デザインの Diagram を完成させた。今回は、Platform ウインドウを設定し、kr260_bd の HDL Wrapper file を作成して、論理合成、インプリメンテーション、ビットストリームの生成を行ったが、論理合成でエラーになった。mt9d111_inf_axis IP と axis2video_out IP 内の pixel_fifo を作り直して、論理合成してもエラーになってしまった。mt9d111_inf_axis IP の pixel_fifo を削除して、cam_pixel_fifo に名前を変更したら論理合成が通った。しかし、write_bitstream でエラーになってしまった。外部入出力ピンの制約が無いのがエラーの原因だ。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する4
前回は、Platform ウインドウを設定し、kr260_bd の HDL Wrapper file を作成して、論理合成、インプリメンテーション、ビットストリームの生成を行ったが、論理合成でエラーになった。mt9d111_inf_axis IP と axis2video_out IP 内の pixel_fifo を作り直して、論理合成してもエラーになってしまった。mt9d111_inf_axis IP の pixel_fifo を削除して、cam_pixel_fifo に名前を変更したら論理合成が通った。しかし、write_bitstream でエラーになってしまった。今回は、前回のエラーはカメラ・インターフェース信号を制約していかなかったことが原因なので、その制約を追加して、 Generate Bitstream したところ、place_desin_ERROR になってしまった。pclk のクロック制約を追加して、やっと、論理合成、インプリメンテーション、ビットストリームの生成が成功した。その後、プラットホームをエクスポートした。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する5
前回は、前々回のエラーはカメラ・インターフェース信号を制約していかなかったことが原因なの で、その制約を追加して、Generate Bitstream したところ、place_desin_ERROR になってしまった。pclk のクロック制約を追加して、やっと、論理合成、インプリメンテーション、ビットストリームの生成が成功した。その後、プラットホームをエクスポートした。今回は、 Petalinux 2022.1 を使用して、petalinux-create で、Petalinux 2022.1 プロジェクトを作成し、petalinux-config を行い、petalinux-build でビルドしたところ成功した。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する6
前回は、Petalinux 2022.1 を使用して、petalinux-create で、Petalinux 2022.1 プロジェクトを作成し、petalinux-config を行い、petalinux-build でビルドしたところ成功した。今回は、sdk.sh を作成し、BOOT.BIN を作成した。最後に MicroSD カードのイメージを作成し、MicroSD カードに書き込んだ。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する7
前回は、sdk.sh を作成し、BOOT.BIN を作成した。最後に MicroSD カードのイメージを作成し、MicroSD カードに書き込んだ。今回は、。KR260 に MicroSD カードを挿入して Petalinux 2022.1 を起動した。Petalinux に必要なモジュールをインストールして、環境を整えた。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する8
前回は、KR260 に MicroSD カードを挿入して Petalinux 2022.1 を起動した。Petalinux に必要なモジュールをインストールして、環境を整えた。今回は、Vitis ディレクトリ構造を作成して、xsct を使用したデバイスツリー・オーバレイを作成し、pl.dtsi 上の動作させる IP の compatible を generic-uio に変更して、コンパイルして pl.dtbo を生成した。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する9
前回は、Vitis ディレクトリ構造を作成して、xsct を使用したデバイスツリー・オーバレイを作成し、pl.dtsi 上の動作させる IP の compatible を generic-uio に変更して、コンパイルして pl.dtbo を生成した。今回は、Vitis 2022.1 を立ち上げて kr260_cam_disp プラットフォームを作成し、kr260_vadd アプリケーション・プロジェクトを作成し、ビルドを行って成功した。Vivado のプロジェクトの kr260_bd ブロック・デザインを確認した。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する10
前回は、Vitis 2022.1 を立ち上げて kr260_cam_disp プラットフォームを作成し、kr260_vadd アプリケーション・プロジェクトを作成し、ビルドを行って成功した。Vivado のプロジェクトの kr260_bd ブロック・デザインを確認した。今回は、、KR260 にファイルを転送して kr260_vadd を実行したところ成功した。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する11
前回は、KR260 にファイルを転送して kr260_vadd を実行したところ成功した。今回は、ロードされているアクセラレーション・アプリケーションをアンロードして、kr260_vadd をロードした時の、uio の状態を観察した。kr260_vadd をロードしたら、uio4 〜 uio9 が増えた。


KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームにラプラシアン・フィルタを実装する1
”KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する9”で作成した DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホーム上に”Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI Masterバージョン1”のラプラシアン・フィルタを載せてみよう。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームにラプラシアン・フィルタを実装する2
”KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する9”で作成した DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホーム上に”Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI Masterバージョン1”のラプラシアン・フィルタを載せてみようということで、前回は、Vitis 2022.1 で laplacian_filter1 アクセラレーション・アプリケーション・プロジェクトを作成し、ソースコードを用意して、ビルドを行って成功した。今回は、KR260 の Petalinux 2022.1 に必要なファイルを転送し、kr260_lap アクセラレーション・アプリケーションをロードして、laplacian_filter1 を実行したところ、"Success HW and SW results match”が表示され、temp_lap.bmp が生成された。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームにラプラシアン・フィルタを実装する3
前回は、KR260 の Petalinux 2022.1 に必要なファイルを転送し、kr260_lap アクセラレーション・アプリケーションをロードして、laplacian_filter1 を実行したところ、"Success HW and SW results match”が表示され、temp_lap.bmp が生成された。今回は、u-dma-buf の用意と OpenCV の C++ ソフトウェアのコンパイルと実行を行えるように環境を整備した。

KR260 の Petalinux 2022.1 上で memread と memwrite を生成した
KR260 の Petalinux 2022.1 上で メモリを読み出す memread 実行ファイルとメモリに書き込む memwrite 実行ファイルをソースコードをコンパイルして生成した。

KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームにラプラシアン・フィルタを実装する4
前回は、u-dma-buf の用意と OpenCV の C++ ソフトウェアのコンパイルと実行を行えるように環境を整備した。今回は、”カメラ画像をDisplayPortに出力する9(アプリを作成、完成)”の cam_dp_ov5642.cpp をコピーし、KR260 の kr260_cam_disp プラットホーム用に uio の番号を変更した。その後、cmake を行い、make を行って実行ファイルを生成した。
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームにラプラシアン・フィルタを実装する5
前回は、”カメラ画像をDisplayPortに出力する9(アプリを作成、完成)”の cam_dp_ov5642.cpp をコピーし、KR260 の kr260_cam_disp プラットホーム用に uio の番号を変更した。その後、cmake を行い、make を行って実行ファイルを生成した。今回は、前回作成した cam_dp_ov5642 実行ファイルを実行してみたところ、DisplayPort に画像は映ったが同期が掛かってない感じで画像が流れていた。BMP ファイルを表示してみたが、正常に表示されたので、カメラやカメラ回路は正常に動作しているようだ。

KR260 の Petalinux 2022.1 における DispalyPort レジスタの値
現在分かってる KR260 の Petalinux 2022.1 における DispalyPort レジスタの値を調べてみよう。

KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームにラプラシアン・フィルタを実装する6
前回は、前々回作成した cam_dp_ov5642 実行ファイルを実行してみたところ、DisplayPort に画像は映ったが同期が掛かってない感じで画像が流れていた。BMP ファイルを表示してみたが、正常に表示されたので、カメラやカメラ回路は正常に動作しているようだ。今回は、”カメラ画像をDisplayPortに出力する9(アプリを 作成、完成)”の cam_dp_ov5642.cpp は 1 つ GPIO が多かったので、その GPIO の設定を削除した。また、DisplayPort DMA の方から映像の同期信号をもらう回路になっているので、HD 解像度にする必要があった。そこで、HD 解像度に設定してみたが、カメラ画像は正常に映らなかった。

KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.0 を動作させてみる
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.0 を動作させようとしたが、SD カード起動時にエラーになった。
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.0 を動作させてみる2
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.0 を動作させてみようということで、前回、MicroSD カードに Debian11 を書いて、起動してみたが、ブート途中で止まってしまった。今回、ikwzm さんに修正していただいた Debian11 を起動してみた。前回よりは長く動いたが、やはり途中で止まってしまった。
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.2 を動作させてみる3
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.0 を動作させてみよう(現在は ZynqMP-FPGA-Debian11-0.1.2)ということで、前回、再度、MicroSD カードに Debian11 を書いて、起動してみたが、ブート途中で止まってしまった。今回、ikwzm さんに修正していただいた Debian11 を起動してみたところ、見事に起動した。
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.0 を動作させてみる4(環境を整備)
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.0 を動作させてみようということで、前回、ikwzm さんに修正していただいた Debian11 を起動してみたところ、見事に起動した。更に、Linux イメージ・パッケージをインストールした。今回は、LAN に接続して、SSH でログインし、環境を設定した。
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-1.0.0 を動作させてみる
KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-0.1.x を動作させて来たが、正式版の KR260 用 ZynqMP-FPGA-Debian11-1.0.0 が出たのでそれに入れ替えてみた。

KR260 で DisplayPort にカメラ画像を出力する回路をデバックする1
”KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームにラプラシアン・フィルタを実装する6”でカメラ画像が DisplayPort に正常に出力されなかった。そこで、デバックするために回路をベアメタル・アプリケーションで動作させて System ILA を入れて波形を観察することにした。
KR260 で DisplayPort にカメラ画像を出力する回路をデバックする2
前回は、”KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームにラプラシアン・フィルタを実装する6”でカメラ画像が DisplayPort に正常に出力されなかった。そこで、デバックするために回路をベアメタル・アプリケーションで動作させて System ILA を入れて波形を観察することにした。今回は、ハードウェアをエクスポートし、Vitis を起動して、プラットホームを作成し、アプリケーション・プロジェクトを作成した。アプリケーション・ソフトウェアを作成し、ビルドして動作させたが、動作しなかった。更 に、デバックも難しい。
KR260 で DisplayPort にカメラ画像を出力する回路をデバックする4
前回、ベアメタルでのデバックが難しいので、Petalinux 上でデバックをすることにした。laplacian_filter1 の Vitis アクセラレーション・プロジェクトで生成された Vivado プロジェクトを使用して、System ILA を実装して、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。ハードウェアをエクスポートして、XSA ファイルを生成した。今回は、KR260 の Petalinux 2022.1 の examples ディレクトリの下に kr260_lap_ila ディレクトリを作成した。/lib/firmware/xilinx に kr260_lap_ila ディレクトリを作成して、前回作成した bin ファイルなどをコピーした。kr260_lap_ila を xmutil コマンドでロードした。その後、cam_dp_ov5642 アプリケーション・ソフトウェアを起動して、DisplayPort に表示された。更に、System ILA のキャプチャ結果を検討した。
KR260 で DisplayPort にカメラ画像を出力する回路をデバックする5
前回、KR260 の Petalinux 2022.1 の examples ディレクトリの下に kr260_lap_ila ディレクトリを作成した。/lib/firmware/xilinx に kr260_lap_ila ディレクトリを作成して、前回作成した bin ファイルなどをコピーした。kr260_lap_ila を xmutil コマンドでロードした。その後、cam_dp_ov5642 アプリケーション・ソフトウェアを起動して、DisplayPort に表示された。更に、System ILA のキャプチャ結果を検討した。今回は、hsync の間隔を見るために、System ILA の設定を変更し、前回と同様に ILA ダッシュボードで hsync の間隔を測定したが、2080 クロックだった。HD 解像度としては妥当だと思う。

トリプル・バッファの AXI4-Stream 出力 DMA を KR260 用に変更する
”ZYBO Z7-20 用カメラ画像表示システムの作成1”のディスプレイ回路を KR260 の DisplayPort 出力に利用しようということで、今回は、トリプル・バッファの AXI4-Stream 出力 DMA (DMA2axis_3buf)を KR260 用に変更しよう。
AXI4-Stream 入出力のビットマップ・ディスプレイ・コントローラを KR260 対応にする
”ビットマップ・ディスプレイ・コントローラをAXI4-Stream対応にする 6(Vivado 2022.1 で IP作成)”の bitmap_disp_cont_axis IP を KR260 対応に変更しよう
KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホーム3を作成する1
KR260 で PS の DisplayPort の同期信号に合わせてカメラ画像を出力し、DisplayPort に出力しようとしてきたが、うまくカメラ画像が表示できない。そこで、今度は、同期信号を自分で作成し、カメラ画像を PS の DiaplayPort から出力しようと思う。
KR260 ディレクトリ上に kr260_cam_disp3_platform ディレクトリを作成した。
もう一度、KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する1
Vivado 2022.1 で KR260 対応の kr260_cam_disp3 プロジェクトの kr260_bd ブロック・デザインを作成していて、kr260_cam_disp プロジェクトのバグが分かったので、もう一度、KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成しよう。
もう一度、KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する2
Vivado 2022.1 で KR260 対応の kr260_cam_disp3 プロジェクトの kr260_bd ブロック・デザインを作成していて、kr260_cam_disp プロジェクトのバグが分かったので、もう一度、KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成しようということで、前回は、KR260 対応の kr260_cam_disp3 プロジェクトの kr260_bd ブロック・デザインを修正して、論理合成、インプリメンテーション、ビットストリームの生成を行って、XSA ファイルを生成した。今回は、Vitis 2022.1 の kr260_cam_disp プラットホームをアップデートしてビルドし、kr260_vadd と laplacian_filter1 アプリケーション・プロジェクトをビルドした。その後、laplacian_filter1 アプリケーション・プロジェクトの Vivado プロジェクトの kr260_bd ブロック・デザインを確認し、アップデートされていることを確認した。
もう一度、KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する3
前回は、Vitis 2022.1 の kr260_cam_disp プラットホームをアップデートしてビルドし、kr260_vadd と laplacian_filter1 アプリケーション・プロジェクトをビルドした。その後、laplacian_filter1 アプリケーション・プロジェクトの Vivado プロジェクトの kr260_bd ブロック・デザインを確認し、アップデートされていることを確認した。今回は、xsct を使用したデバイスツリー・オーバレイを作成し、pl.dtsi 上の動作させる IP の compatible を generic-uio に変更して、コンパイルして pl.dtbo を生成した。
もう一度、KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する4
前回は、xsct を使用したデバイスツリー・オーバレイを作成し、pl.dtsi 上の動作させる IP の compatible を generic-uio に変更して、コンパイルし pl.dtbo を生成した。今回は、file_transfer/lap2_file_transfer ディレクトリを作成し、KR260 の Petalinux 2022.1 に転送するファイルを集めて、examples/kr260_lap2 ディレクトリに転送した。KR260 の Petalinux 2022.1 で /lib/firmware/xilinx に kr260_lap2 ディレクトリを作成して、転送されたファイルの一部をコピーした。kr260_lap2 を xmutil コマンドでロード後に、/sys/class/uio ディレクトリを見たところ、uio0 〜 uio11 が実装されていた。
もう一度、KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを作成する5
前回は、file_transfer/lap2_file_transfer ディレクトリを作成し、KR260 の Petalinux 2022.1 に転送するファイルを集めて、examples/kr260_lap2 ディレクトリに転送した。KR260 の Petalinux 2022.1 で /lib/firmware/xilinx に kr260_lap2 ディレクトリを作成して、転送されたファイルの一部をコピーした。kr260_lap2 を xmutil コマンドでロード後に、/sys/class/uio ディレクトリを見たところ、uio0 〜 uio11 が実装されていた。今回は、アプリケーション・ソフトウェアの cam_dp_ov5642.cpp を用意して、make して、実行形式ファイルを生成した。その実行形式ファイルを実行したところ、カメラ画像が DisplayPort に表示された。成功だ。。。

KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを使用してラプラシアン・フィルタを動作させる
前回で、KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを使用した Vitis のラプラシアン・フィルタ・プロジェクトのビットストリームを使用して、カメラ画像を KR260 の DisplayPort に出力することができた。今回は、ラプラシアン・フィルタ結果も表示する様にアプリケーション・ソフトウェアの cam_dp_ov5642.cpp を変更して、コンパイルし、カメラ画像だけでなく、ラプラシアン・フィルタ処理画像も表示できるようにした。

KR260 のファンの音を静かにしたい
KR260 のファンの音がうるさいので、静かにしたいと思っていた。ikwzm さんにやり方を教えてもらったので、やってみたがうまく行かなかった。
Petalinux を起動している時に KR260 のファンの音を静かにしたい2
前回は、KR260 の Petalinux が起動した後で Petalinux の設定を確認したところ、”CONFIG_SENSORS_PWM_FAN=y”だったので、pwm_fan0 のエントリを pl.dtsi に追加して、コンパイルし、できた pl.dtbo を使用したが、ファンの音は静かにならなかった。今回は、デバイスツリーの system-user.dtsi に ttc0 のエントリを追加して、Petalinuxをビルドした。再生成された dtb ファイルを KR260 の Petalinux ブート用 MicroSD カードの boot パーティションの dtb と入れ替えたら、ファンが静かになった。成功だ。

KR260 の Ubuntu 22.04 で Vitis アクセラレーション・アプリケーションの laplacian_filter1 を動作させる
Vitis アクセラレーション・アプリケーションの laplacian_filter1 を KR260 の Ubuntu 22.04 で動作させてみたが、”Segmentation fault (core dumped)”だった。

KR260 の Ubuntu 22.04 上で memread, memwrite を生成した
”KR260 の Petalinux 2022.1 上で memread と memwrite を生成した”を参考に、KR260 の Ubuntu 22.04 上で memread, memwrite を生成した。

KR260 の Ubuntu 22.04 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを使用してラプラシアン・フィルタを動作させる1
今回は、cmake, make を使用して、cam_dp_ov5642 実行ファイルを生成したのだが、kr260_lap2 をロードして、/sys/class/uio を見ると、Petalinux とは uio の数が違っていたので、cam_dp_ov5642.cpp を書き換える必要があるようだ。
KR260 の Ubuntu 22.04 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを使用してラプラシアン・フィルタを動作させる2
前回は、cmake, make を使用して、cam_dp_ov5642 実行ファイルを生成したのだが、kr260_lap2 をロードして、/sys/class/uio を見ると、Petalinux とは uio の数が違っていたので、cam_dp_ov5642.cpp を書き換える必要がある。今回は、cam_dp_ov5642.cpp を書き換えて、make して、実行ファイルを生成した。その後、環境を整えて、実行ファイルを実行してみたが、カメラ画像が DiaplayPort に出力されなかった。どうやら、Ubuntu 22.04 はスクリーン・セーバーが起動して画面が消えているようだ。カメラ画像はメモリのバッファに正常に保存されていた。

KR260 用 ZynqMP-FPGA-Debian11で Vitis で作成したラプラシアン・フィルタを実行する1
”KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-1.0.0 を動作させてみる”で作成した ZynqMP-FPGA-Debian11 上で、”KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを使用してラプラシアン・フィルタを動作させる”のラプラシアン・フィルタを動作させたい。
KR260 用 ZynqMP-FPGA-Debian11で Vitis で作成したラプラシアン・フィルタを実行する2
”KR260 で ikwzm さんの ZynqMP-FPGA-Debian11-1.0.0 を動作させてみる”で作成した ZynqMP-FPGA-Debian11 上で、”KR260 で DisplayPort にカメラ画像を出力する Vitis アクセラレーション・プラットホームを使用してラプラシアン・フィルタを動作させる”のラプラシアン・フィルタを動作させたいということで、前回は、ファイルを用意し、環 境を整えて、dtbocfg.rb でデバイス・ツリーをロードしたが、dtbocfg.rb が無かった。今回は、ikwzm さんに教えていただいた dtbo-config を使って、デバイス・ツリーをロードした。その後、/sys/class/uio ディレクトリを調べたら uio が増えていた。

KR260 の Debian11 に OpenCV 3.4.16 をインストールした
ラプラシアン・フィルタの実行ファイル cam_dp_ov5642 の実行には、OpenCV が必要だったということで、”ZYBO Z7-20 の PYNQ 2.7 に OpenCV 3.4.16 をインストールする1”と”ZYBO Z7-20 の PYNQ 2.7 に OpenCV 3.4.16 をインストールする2”を参考に、OpenCV 3.4.16 をインストールした。

KR260 の Debian11 上で memread, memwrite を生成した
”KR260 の Petalinux 2022.1 上で memread と memwrite を生成した”を参考に、KR260 の Debian11 上で memread, memwrite を生成した。

KR260 用 ZynqMP-FPGA-Debian11で Vitis で作成したラプラシアン・フィルタを実行する3
前回は、ikwzm さんに教えていただいた dtbo-config を使って、デバイス・ツリーをロードした。その後、/sys/class/uio ディレクトリを調べたら uio が増えていた。今回は、cam_dp_ov5642.cpp を書き換えて、make して、実行ファイルを生成した。その後、環境を整えて、実行ファイルを実行したところ、カメラ画像とラプラシアン・フィルタ画像を DisplayPort に表示することができた。





inserted by FC2 system