FC2カウンター FPGAの部屋 2018年04月09日

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

FPGAの部屋

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

reVISION-Zybo-Z7-20をやってみた9(再びDense Non-Pyramidal Optical Flow)

reVISION-Zybo-Z7-20をやってみた8(Harrisコーナー検出)”の続きではあるのだが、”@ikwzmさんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”をやってみる4”でエラーになった Dense Non-Pyramidal Optical Flow の対処方法を @ikwzm さんに教えて頂いたので、もう一度やってみようと思う。@ikwzm さん、お世話になり、ありがとうございました。

まずは、Linux 上では、CMA (Contiguous Memory Allocator) 領域という領域を SDSoC は使用している。CMA 領域は連続なメモリ領域を取ることができる。通常のメモリ領域を malloc() などで確保した場合はソフトウェア側から連続に見えても MMU (Memory Management Unit) がページごとに物理メモリを割り振っていて、ページを超えると物理アドレスが連続していないということが良くあり得る。その場合には、FPGAがメモリにDMA する場合は、ページごとにDMA の再起動が必要となる(ちなみにAXI4 インターフェースは 4Kバイト境界でバーストをやめる必要があります)。ページごとにアドレスを入れ替えるために Scatter Gather DMA がある。だが、連続領域にDMA するほうが絶対に効率が良い。そこで、物理メモリ的に連続領域を確保できる CMA 領域の出番がある。

Dense Non-Pyramidal Optical Flow のエラーは、その CMA 領域を確保しようとしたがメモリが足りないよというエラーだった。
よってCMA 領域を増やせば良いということになる。現在は 16 MB を確保している。それを 64 MB に増やすことにした。
増やし方は、ZYBO-Z7-20 の Micro SD カードの第1パーティションの uEnv.txt を書き換えることだ。なお、この書き方は、@ikwzm さんに教えて頂いた。

ZYBO-Z7-20 の Debian 上では /boot にマウントされている ディレクトリの uEnv.txt を書き換える。

linux_boot_cmd=setenv bootargs console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait uio_pdrv_genirq.of_id=generic-uio && bootz 0x03000000 - 0x02A00000



linux_boot_cmd=setenv bootargs console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait uio_pdrv_genirq.of_id=generic-uio cma=64M && bootz 0x03000000 - 0x02A00000


にした。つまり bootargs に cma=64M を追加した。
reVISION-Zybo-Z7-20_124_120409.png

リブートして、dmesg を見ると、CMA 領域が 64MB になった。
reVISION-Zybo-Z7-20_125_120409.png

それでは、もう一度、Dense Non-Pyramidal Optical Flow を@ikwzm さんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”の環境で動作させてみよう。

cd ~/sdsoc_test/dnp_of
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
cd sd_card/
sudo ./dnp_of.elf im0.jpg im1.jpg

今度はエラー無しに実行できた。
reVISION-Zybo-Z7-20_113_120408.png

~/sdsoc_test/dng_of/ ディレクトリを示す。
reVISION-Zybo-Z7-20_114_120408.png

~/sdsoc_test/dng_of/sd_card/ ディレクトリを示す。
reVISION-Zybo-Z7-20_115_120408.png

out_0.jpg ができている。開いてみると、
reVISION-Zybo-Z7-20_116_120408.jpg

うまく行っている。成功だ。
  1. 2018年04月09日 04:13 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0