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
に表示することができた。