”
ZYBOにHDLで書いたラプラシアンフィルタを実装する9(devicetreeの生成、/sys, /devディレクトリ)”の続き。
前回は、devicetree.dtb を生成して、Micro SDカードに、BOOT.bin と devicetree.dtb を書き込んで、ZYBOに挿入してUbuntu をブートし、/sys ディレクトリと /dev ディレクトリを観察した。
今回は、制御ソフトウェアを作製してZYBO でHDLで書いたラプラシアンフィルタを動作させる。
ドライバ・ソフトウェアだが、本来はVivado HLS で書いたAXI4 Lite Slave モジュールを頂いているので、それ用のドライバ・ソフトウェアがあるはずなのだが、昔に作ったので、そのVivado HLS のプロジェクトが無くなったか?もしくは削除してしまっていてわからない?
そこで、もう一度Vivado HLS 2015.3 でラプラシアンフィルタのCソースコードを使ってIP 化してドライバ・ソフトウェアを生成することにした。
Vivado HLS 2015.3 で、lap_fil_hdl_axim() というTop Function のCソースコードをIP化して、xlap_fil_hdl_axim.h をHDLで書いたラプラシアンフィルタの lap_filter_axim_LiteS_if.v のアドレス・オフセットに合うように書き換えた。
なお、Cソースコードのディレクティブを変更してある。変更は、cam_addr ポートのインターフェースを ap_hs に、lap_addr ポートのインターフェースを ap_vld に変更した。
下にそのVivado HLS 2015.3 のプロジェクトを示す。

ZYBO の電源を入れてUbuntu 14.04 を起動する。
BOOT.bin も devicetree.dtb も問題なく起動できた。
home/linaro/Apps の下に、lap_fil_hdl_1shot ディレクトリを作製した。
ドライバ・ソフトウェアはWindows のパソコン上にあるので、WinSCP でZYBO に接続して、ドライバ・ソフトウェアをZYBO のlap_fil_hdl_1shot ディレクトリにアップロードした。

ドライバ・ソフトウェアをZYBO のlap_fil_hdl_1shot ディレクトリにアップロードできた。

次に、
lap_fil_hls_1shot.c をコピー&ペーストして、修正して lap_fil_hdl_1shot.c を作製した。

簡単な Makefile を作製した。
make を行った。バイナリ(lap_fil_hdl_1shot)ができた。
cam_disp_uio と lap_fil_hls_1shot をこのディレクトリにコピーした。
./cam_disp_uio を実行して、カメラをディスプレイに表示した後で、
./lap_fil_hdl_1shot を実行したが、エラーになってしまった。
./lap_fil_hls_1shot は通常に実行することができる。

試しに、Vivado HLS のラプラシアンフィルタのUIO エントリをコメント・アウトしたデバイスツリーを作ってコンパイルしてやってみた。

これだと、lap_fil_hdl_1shot が動作した。
どうやら、UIO で制御できるデバイスはデフォルトでは5個までのようだ。

動作時間は 10.05 ms 程度で一番速い。
ラプラシアンフィルタ処理はまだバグが残っている。最初のラプラシアンフィルタ処理は正しいようだが、2番めは上のエッジだけ、3番目は下のエッジだけになる。4番目は最初のラプラシアンフィルタ処理に戻る。
最初のラプラシアンフィルタ処理結果

2番め

3番目

バグが残っているが、動作確認はできるので、良しとすることにしよう。何処か完全に終了していない部分があるのだと思う。
次は、Linuxカーネルを修正してUIOを10 個までエントリできるようにしてみたい。
- 2015年11月09日 05:28 |
- ZYBO
-
| トラックバック:0
-
| コメント:0