FC2カウンター FPGAの部屋 2020年04月29日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Ultra96-V2 のカメラ入力、ディスプレイ出力付き Vitis アクセラレーション・プラットフォームの作成5(実機確認編)

Ultra96-V2 のカメラ入力、ディスプレイ出力付き Vitis アクセラレーション・プラットフォームの作成4(Vitis アプリケーション・プロジェクト作成編)”の続き。

前回は、lap_filter_axis_dma を使用して Vitis アプリケーション・プロジェクトを作成した。今回は、Ultra96-V2 の実機で確認を行う。環境は ikwzm さんの Ubuntu 18.04 でやってみよう。
なお、ここで注意しなくてはいけないのが、あくまで、アクセラレーション・ハードウェアを動作させるだけのソースコードだったことだ。つまり、プラットフォームに追加されているハードウェアを動作させるコードはない。これは後で追加する予定だ。

まずは、Ultra96-V2 の Ubuntu 18.04 の fpga ユーザーのホームディレクトリの環境を整備する。
ホームディレクトリの下に Vitis_work/work_192 ディレクトリを作って、そこに dtbocfg.rb と template.bif 、 zocl.dts をコピーした。テンプレートとして使用するためだ。
その下に、lap_axis_dma_cam_dp ディレクトリを作成した。
ultra96v2_cam_dp_81_200428.png

lap_axis_dma_cam_dp ディレクトリには、 lap_axis_dma_cam_dp.bif と lap_axis_dma_cam_dp.dts を作成した。
lap_axis_dma_cam_dp.bif を示す。

all:
{
    [destination_device = pl] lap_axis_dma_cam_dp.bit
}


lap_axis_dma_cam_dp.dts を示す。

/dts-v1/; /plugin/;
/ {
    fragment@0 {
        target-path = "/fpga-full";
        __overlay__ {
                firmware-name = "lap_axis_dma_cam_dp.bin";
        };
    };
    fragment@1 {
        target-path = "/amba_pl@0";
        __overlay__ {
            #address-cells = <2>;
            #size-cells = <1>;
            zyxclmm_drm {
                compatible = "xlnx,zocl";
                status = "okay";
                reg = <0x0 0xB0000000 0x10000>;
            };
           fclk0 {
                compatible    = "ikwzm,fclkcfg-0.10.a";
                clocks        = <&zynqmp_clk 0x47>;
                insert-rate   = "100000000";
                insert-enable = <1>;
                remove-rate   = "1000000";
                remove-enable = <0>;
            };
        };
    };
};


Vitis で Run Configuration を作成する。
Viits の GUI の左下の Assistant ウインドウで lap_axis_dma_cam_dp_system -> lap_axis_dma_cam_dp -> Hardware を右クリックし、右クリックメニューから Run -> Run Configuration... を選択する。
ultra96v2_cam_dp_83_200428.png

Run Configurations ダイアログが開く。
Single Application Debug をダブルクリックしてインスタンスを作成する。
ultra96v2_cam_dp_84_200428.png

Debugger_lap_axis_cam_dp-Defult ができた。
Enable Profiling のチェックを外した。
Connection で New ボタンをクリックして Ultra96-V2 ボードへのコネクションを作成する。
ultra96v2_cam_dp_85_200428.png

Ultra96-V2 の IP アドレスのコネクションを作成した。
ultra96v2_cam_dp_86_200428.png

Connection にいま作成したコネクションが表示された。
ultra96v2_cam_dp_87_200428.png

Application タブでは、Remote File Path と Woking directory に先程 Ultra96-V2 に作成した lap_axis_dma_cam_dp ディレクトリのパスを指定した。
ultra96v2_cam_dp_88_200428.png

Apply ボタンをクリックし、Run ボタンをクリックして一旦走らせた。
ultra96v2_cam_dp_89_200428.png

test.bmp が無いということで停止した。これを実行した目的は、lap_axis_dma_cam_dp.exe と lap_axis_dma_cam_dp.xclbin を SFTP でアップロードして欲しかったからだ。
Ultra96-V2 の lap_axis_dma_cam_dp ディレクトリを見ると、lap_axis_dma_cam_dp.exe と lap_axis_dma_cam_dp.xclbin がアップロードされていた。test.bmp も以前の Vitis アクセラレーション・アプリケーションを動作させたディレクトリからコピーしてきた。

次に、Ultra96-V2 の Ubuntu 18.04 上で、 XRT の環境を設定した。
source /opt/xilinx/xrt/setup.sh
ultra96v2_cam_dp_90_200428.png

xclbin ファイルから bit ファイルを抜き出す。
xclbinutil --input lap_axis_dma_cam_dp.xclbin --dump-section BITSTREAM:RAW:lap_axis_dma_cam_dp.bit
ultra96v2_cam_dp_91_200428.png

bit ファイルから bin ファイルを生成する。
bootgen -arch zynqmp -image lap_axis_dma_cam_dp.bif -o lap_axis_dma_cam_dp.bin

bin ファイルを /lib/firmware/ ディレクトリにコピーして、zocl ドライバなどをロードする。
上のディレクトリの dtbocfg.rb を使用して zocl などのドライバをロードする。
sudo cp lap_axis_dma_cam_dp.bin /lib/firmware/
sudo ../dtbocfg.rb --install zocl --dts zocl_laps_dma_cam_dp.dts

ultra96v2_cam_dp_92_200428.png

ドライバがうまくロードされているか?を確認する。
dmesg | tail -18
ultra96v2_cam_dp_93_200428.png

大丈夫そうだ。
Vitis で Debugger_lap_axis_cam_dp-Defult の Run Configuration を起動した。
ultra96v2_cam_dp_94_200428.png

成功だ。実行時間は約 948 us だった。

lap_axis_dma_cam_dp ディレクトリには、 temp_lap.bmp が生成された。
ultra96v2_cam_dp_95_200428.png

temp_lap.bmp を見ると正常にエッジが検出されている。
ultra96v2_cam_dp_96_200428.png
  1. 2020年04月29日 04:39 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0