FC2カウンター FPGAの部屋 ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル2
FC2ブログ

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

FPGAの部屋

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

ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル2

ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル”の続き。

前回、Vivado HLS 2014.4 で作製したラプラシアンフィルタIPのAXI4 Lite Slave ポートにアクセスしたが、バスエラーになってしまった。今回はその原因を探った。

原因は分かった。”Vivado HLS 2014.4でラプラシアン・フィルタ関数をaxi masterモジュールにする5(BOOT.bin, devicetree.dtb の生成)”で Creater Zynq Boot Image ダイアログが開いた時の画面を見ると、V_ZYBO_CAMDfL_wrapper_hw_platform_0\V_ZYBO_CAMfL_wrapper.bit が入っている。
Vivado_HLS_lap_filter_49_150213.png

Vivado HLS で作ったラプラシアンフィルタIPを追加した時の Vivado からSDK にハードウェアをエクスポートした時に、V_ZYBO_CAMDfL_wrapper_hw_platform_1 ができてしまったので、V_ZYBO_CAMDfL_wrapper_hw_platform_0 は古いハードウェア・プラットフォームになった。
Vivado_HLS_lap_filter_47_150213.png

よって、以前のビットストリームをBOOT.bin として同梱してしまったようだ。

もう一度、V_ZYBO_CAMDfL_wrapper_hw_platform_1\V_ZYBO_CAMfL_wrapper.bit を入れてBOOT.bin を作り直すことにする。

まずは、V_ZYBO_CAMDfL_wrapper_hw_platform_0 から FSBLが作られていると思うので、FSBL と FSBL_bsp を一旦消去した。

FSBL と FSBL_bsp を Hardware Platform をV_ZYBO_CAMDfL_wrapper_hw_platform_1 として作りなおした。
Vivado_HLS_lap_filter_65_150224.png

次に、BOOT.bin を作りなおした。
Vivado_HLS_lap_filter_64_150224.png

新しいBOOT.bin をMicroSDカードの第1パーティション ZYBO_BOOT のBOOT.bin と入れ替えた。
MicroSDカードをZYBO に挿入して電源ONした。

SSHで linaro ユーザーとしてログインした。

Apps ディレクトリに入って ./cam_disp_uio を実行してカメラ画像を表示した。

lap_fil_hls_1shot ディレクトリに入って、./lap_fil_hls_1shot を実行して、Vivado HLS 2014.4 で生成したラプラシアンフィルタIPを起動した。

起動後、激しく画面が乱れた。
lap_fil_hls_test_5_150225.jpg

約28秒間画面が乱れた後にラプラシアンフィルタ処理された画像が表示された。
lap_fil_hls_test_6_150225.jpg

経過時間は 27.6 秒だった。長すぎる。なにかおかしい?(追記参照)(制御ソフトの lap_fil_hls_1shot.c は”ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル”記事を参照下さい)
lap_fil_hls_test_7_150225.png

./lap_fil_hls_1shot を実行して、Vivado HLS 2014.4 で生成したラプラシアンフィルタIPを起動して、画面が乱れいている時は、コンソールでは、5 を表示した所で止まっている。
lap_fil_hls_test_8_150225.png

これは、

while(!XLap_filter_axim_IsDone(lap_fil_lsalvep)) ;

で止まっていることになる。
つまり、done ビットが 1 になるまで待っているルーチンなので、ラプラシアンフィルタ処理の終了までに28秒近くかかったことになる。

次は、独自の処理ソフトウェアで、どうなるかをみてみよう。
2015/02/27 追記:Vivado HLS 2014.4 の生成した C で書かれたドライバーを読んでみたが、至極妥当なコードだった。これで動作しなければ、自作ドライバー・ソフトウェアも動作しない。

(追記) Vivado HLS で合成したラプラシアンフィルタの処理時間が27秒かかるバグの原因は、古いバグありラプラシアンフィルタのCソースコードを使用したためでした。正しいラプラシアンフィルタのCソースコードについては、”Vivado HLS 2014.4で生成したラプラシアンフィルタIPをシミュレーション3(原因が分かった)”をご覧ください。

とりあえず、バグ無しのラプラシアンフィルタ処理を実行した経過については、”ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル4(うまく行った)”をご覧ください。
  1. 2015年02月24日 05:51 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/3085-62f1c526
この記事にトラックバックする(FC2ブログユーザー)