”
Vitis 2019.2 で自作カーネルを使用してストーミング接続を試す4(ChipScope で波形を確認する1)”の続き。
前回は、Vitis 2019.2 の streaming_lap_filter プロジェクトの Run Configuration を作成して、実機動作を行ったが、成功しなかった原因を探るために、ChipScope を入れて波形を確認しようということで、--dk オプションを使用した ILA IP コアの挿入を行った。今回は引き続き、設定を行ってChipScope 波形を観察してみよう。
前回までで、ビルドは終了している。ChipScope とVitis の制御がかち合ってしまうとまずいと思ったので、gtkterm から作業した。しかし、今やってみたが、Vitis からやっても何ら問題なかった。今度からVitis GUI でやろうと思う。
さて、gtkterm からの作業ということで、scp コマンドで BOOT.BIN, streaming_lap_filter.exe, streaming_lap_filter.xclbin を SFTP で Ultra96-V2 の PetaLinux にアップロードした。
scp BOOT.BIN 192.168.3.23:/run/media/mmcblk0p1
scp streaming_lap_filter.exe 192.168.3.23:/mnt
scp streaming_lap_filter.xclbin 192.168.3.23:/mnt

Ultra96-V2 の PetaLinux 上で zocl ドライバをロードして、XRT のパスを設定して、/mnt ディレクトリに入った。
insmod /lib/modules/4.19.0-xilinx-v2019.2/extra/zocl.ko
export XILINX_XRT=/usr
cd /mnt
Vivado を立ち上げて、Tasks から Open Hardware Manager をクリックした。

HARDWARE MANAGER が立ち上がる。
Open Target をクリックして、Auto Connect を選択した。

hw_ila_1 が開いた。まだ波形が表示されていない。
Trigger_Setup ウインドウにある Specify the probe file and refresh the device をクリックする。

streaming_lap_filter/Hardware/streaming_lap_filter.ltx ファイルを選択して Refresh ボタンをクリックする。

すると波形が表示された。

波形ウインドウをフロートして、設定を行う。
Settings ウインドウの Trigger position in window を 10 に設定した。
Trigger Setup ウインドウでは、dma_read の ARVALID = 1 でトリガをかけるように設定した。

gtkterm で streaming_lap_filter.exe を実行した。
./streaming_lap_filter.exe streaming_lap_filter.xclbin
すると、ChipScope のトリガがかかった。

dma_read の AXI4 Master のトランザクションが 4 個見える。
16 バースト 4 個なので、64 ピクセルをRead していることになる。ちょうど 1 行分のピクセルだ。
AXI4 Stream インターフェースも少し動作しているのが見える。krnl_lap_filter の入力はかなり入ってるが、出力は少ししか出て行っていない。

次に、AXI4 Lite インターフェースを見てみると、dma_read と krnl_lap_filter は AXI4 Lite の Read トランザクションが見えるが、dma_write はRead トランザクションが見えない。

dma_read のトランザクションはアドレス・オフセット 0 番地をRead しているので、終了を判定していると思われる。

krnl_lap_filter の Read トランザクションも同様だ。

dma_write の AXI4 Lite インターフェースのARVALID でトリガかけてみたが、引っかからない。

dma_write が起動していないんじゃないか?少なくともケアされていない疑惑が生じている。
なお、ひでみさんに起動できるカーネルは 2 個じゃないか?ということを聞いたので、カーネルを 2 個にして確かめてみよう。
ChipScope を使う際にエラーが出る場合はケーブルドライバをインストールしてあるかどうか?を確認したほうが良い。
ケーブルドライバのインストール方法はここを参照ください。ホスト・アプリケーションソフトを一時停止するための関数として wait_for_enter() 関数が”
UG1393 (v2019.2) 2019 年 11 月 11 日Vitis アプリケーション アクセラレーション開発”の 238 ページの”ハードウェア デバッグでの ILA トリガーのイネーブル”、”カーネル開始前に ILA トリガーを追加”に書かれている。
- 2020年02月07日 04:56 |
- Vitis
-
| トラックバック:0
-
| コメント:0