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

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

FPGAの部屋

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

@ikwzmさんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”をやってみる4

@ikwzmさんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”をやってみる3”の続き。

前回は、実行ファイルを実行した後で、一旦ドライバを取り外して異なるマスタの回路をロードして、マスタ用の実行ファイルを実行することができた。今回は、”ZYBO-Z7-20のDebianにOpenCV 3.1.0をインストール”で ZYBO-Z7-20 の Debian に OpenCV 3.1.0 をインストールすることができたので、”reVISION-Zybo-Z7-20をやってみた6(Zybo-Z7-20 で確認)”でやったバイラテラル・フィルタや、”reVISION-Zybo-Z7-20をやってみた8(Dense Non-Pyramidal Optical Flow)”でやった Dense Non-Pyramidal Optical Flow を @ikwzm さんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”でやってみることにする。

まずはバイラテラル・フィルタからやってみよう。
まずは、ZYBO-Z7-20 の Debian の ~/sdsoc_test ディレクトリに bilateral_ex と dnp_of の 2 つのディレクトリを作成した。
~/sdsoc_test/bilateral_ex ディレクトリには、_p0_.dts と xlink.dts と reVISION-Zybo-Z7-20 で生成したバイラテラル・フィルタの Debug/sd_card ディレクトリをSFTP してコピーした sd_card ディレクトリがある。なお、_p0_.dts と xlink.dts については、”@ikwzmさんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”をやってみる2”を参照のこと。

sd_card/_sds/_p0_.bin を /lib/firmware/ にコピーして、 _p0_.dts をロードした。更に xlink.dts をロードした。
./sd_card/bilateral_ex.elf を実行したところ libv4l2subdev.so.0 共有ライブラリが無いというエラーになってしまった。
sudo cp sd_card/_sds/_p0_.bin /lib/firmware/
sudo dtbocfg.rb --install _p0_ --dts _p0_.dts
sudo dtbocfg.rb --install xlnk --dts xlnk.dts
sudo ./sd_card/bilateral_ex.elf

SDSoC_ikwzm_34_180406.png

エラー内容を示す。

./sd_card/bilateral_ex.elf: error while loading shared libraries: libv4l2subdev.so.0: cannot open shared object file: No such file or directory


reVISION-Zybo-Z7-20 の Micro SD カードのROOTFS パーテションを libv4l2subdev.so.0 で検索すると /usr/lib/ ディレクトリで発見した。
SDSoC_ikwzm_35_180406.png

”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”の Micro SD カードの元から /usr/lib/に入ってたファイルを作成した old_lib にコピーした。
SDSoC_ikwzm_36_180406.png

reVISION-Zybo-Z7-20 の Micro SD カードのROOTFS パーテションの libv4l2subdev.so.0 を”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”の Micro SD カードの /usr/lib/ にコピーした。(異なるターミナルでコピーを行った)
その後もう一度、バイラテラル・フィルタの実行ファイルを実行した。
sudo ./sd_card/bilateral_ex.elf
すると、libmediactl.so.0 が足りないと言われた。エラー内容を示す。

./sd_card/bilateral_ex.elf: error while loading shared libraries: libmediactl.so.0: cannot open shared object file: No such file or directory


同様に、reVISION-Zybo-Z7-20 の Micro SD カードのROOTFS パーテションの libmediactl.so.0 を”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”の Micro SD カードの /usr/lib/ にコピーした。(異なるターミナルでコピーを行った)
そして、
sudo ./sd_card/bilateral_ex.elf
今度は動作したが、im0.jpg を指定するのを忘れていた。
sudo ./sd_card/bilateral_ex.elf ./sd_card/im0.jpg
今度は成功した。実行時のレポートを示す。

sigma_color: 7.72211 sigma_space: 0.901059
elapsed time 14358244
Minimum error in intensity = 0
Maximum error in intensity = 1
Percentage of pixels above error threshold = 0.00236304 Count: 4


SDSoC_ikwzm_37_180406.png

SDSoC_ikwzm_38_180406.png

ZYBO-Z7-20 の Debian の ~/sdsoc_test/bilateral/ex/ ディレクトリを nautilus で見たところだ、error.png, hls_out.jpg, output_ocv.png が生成されている。
SDSoC_ikwzm_40_180406.png

error.png を示す。
SDSoC_ikwzm_41_180406.jpg

hls_out.jpg を示す。
SDSoC_ikwzm_42_180406.jpg

output_ocv.png を示す。
SDSoC_ikwzm_43_180406.jpg

次に、ドライバを削除して Dense Non-Pyramidal Optical Flow をやってみよう。
cd ~/sdsoc_test/dnp_of
sudo dtbocfg.rb --remove _p0_
sudo dtbocfg.rb --remove xlnk
sudo cp sd_card/_sds/_p0_.bin /lib/firmware/
sudo dtbocfg.rb --install _p0_ --dts _p0_.dts
sudo dtbocfg.rb --install xlnk --dts xlnk.dts

SDSoC_ikwzm_44_180406.png

cd sd_card/
sudo ./dnp_of.elf im0.jpg im1.jpg

dnp_of.elf を実行するとエラーになってしまった。
SDSoC_ikwzm_45_180406.png

エラー内容を示す。

Failed to allocate memory

Failed to allocate memory

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.414190] Internal error: Oops: 17 [#1] PREEMPT SMP ARM

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.505378] Process dnp_of.elf (pid: 4117, stack limit = 0xe25b4218)

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.511714] Stack: (0xe25b5e00 to 0xe25b6000)

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.516061] 5e00: 00000000 c0113bc4 00000000 ee477600 000007e8 00000000 00000002 00000000

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.524220] 5e20: 001fa400 00000001 00000005 e32b007c 600f0013 00000000 00000014 ee7ed840

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.532378] 5e40: 83c00743 00000000 bebdf230 00000000 c0045808 bebdf230 e25b4000 00000000

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.540538] 5e60: 00000000 bf0376d0 00000000 e25b5ed0 00000000 00000001 e25b5ea4 00000000

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.548697] 5e80: e297adb8 83c00703 00000000 00000000 00000000 ffefe70c ef29a734 00000000

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.556856] 5ea0: efaac420 ee477300 d5480010 00000000 00000000 00000000 007e9000 00000000

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.565015] 5ec0: 00000000 00000000 00000002 00000000 00000000 b659a000 00032030 0000002c

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.573175] 5ee0: bebdf2b4 00000000 00000001 001fa400 00000000 0002f258 00032030 0000002c

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.581334] 5f00: 0016b790 bebdf230 ee6cc508 ee4f7780 c0045808 bebdf230 e25b4000 00000000

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.589492] 5f20: 00000000 c01f89fc bebdf230 c01f9288 00000000 00000000 ef29a700 00000000

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.597653] 5f40: ef085de0 ae43e000 e3324300 ef085de8 ef29a704 c01d0804 00000009 c02033ac

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.605811] 5f60: 00000009 0002f258 007e9000 c0045808 00000009 ee4f7781 ee4f7780 c0045808

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.613971] 5f80: bebdf230 e25b4000 00000000 c01f93cc 00000001 0002f258 007e9000 00000036

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.622130] 5fa0: c0107ac4 c01078e0 00000001 0002f258 00000009 c0045808 bebdf230 0002ff48

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.630288] 5fc0: 00000001 0002f258 007e9000 00000036 00000002 00000000 00000000 00000000

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.638448] 5fe0: 0002f2e4 bebdf22c 0001b66c b653f716 000f0030 00000009 04050607 00020103

Message from syslogd@debian-fpga at Apr 6 05:03:36 ...
kernel:[ 4499.686451] Code: eb44a1dc e15b0006 0a000011 e7990106 (e5903014)

^CApplication Terminated by User


”Failed to allocate memory”が 2 回出ているが malloc() はソース上で 3 回実行されている。1 回めは通っても 2 回め、3 回めは通らなかったのだろうか?

reVISION-Zybo-Z7-20 のバイラテラル・フィルタは実行できたが、Dense Non-Pyramidal Optical Flow は”Failed to allocate memory”で実行できなかった。
  1. 2018年04月07日 04:19 |
  2. SDSoC
  3. | トラックバック:0
  4. | コメント:0