ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

cf_context_init関数(どこまでも続くよSDx)

cd_context_init()がオープンできない原因がわからないので、デバイスサイズが同じZed Boardで同じソースコードでプロジェクトを作成して検証することにした。

Zedの環境にはOpenCVは無いので、OpenCVでエラーが発生するのは問題なく、確認したいのはcf_context_init()が通過するかどうかである。

無理やり環境を作成して、試した結果・・・

sh-4.3# /mnt/OpenCV_Sample4-1.elf
cf_context_init()
cf_get_current_context()
axi_lite_open()
axi_lite_open()
axi_lite_open()
accel_open()
libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data
accel_close()
axi_lite_close()
axi_lite_close()
axi_lite_close()

とりあえず、Zed Board環境であればcf_context_init()が通過して、曲がりなりにもOpenCVの関数を実行したようだ。

Z-TurnとZed Boardの環境での相違点はPlatformがメーカ製か自作かというところまで絞ることができた。

と、いうことはZ-TurnのPlatformに問題があるということだな。

Hardware Platform

SDxのVivadoプロジェクトは正常にビルドできているようだ。

![]()

SDxはM_AXI_GP1とS_AXI_ACPを追加して、conv_data()を実装したようだ。

アドレスも0x83C0_0000に割り振っている。

じゃぁ、Zed Boardの環境は0x43C0_0000に割り振っている。

GP0とGP1の違いだから問題ないはずだよなぁ。

Software Platform

設定ファイル自体は問題ないと思う・・・

もしかして、問題はu-bootのSPLか?

SDxでM_AXI_GP1とM_AXI_ACPを使用したのだが、この情報がu-bootのSPLに入っていなかった。

Platformを作成したVivadoプロジェクトからps7_initを抜き出してu-bootのSPLを作成していたのでM_AXI_GP1とM_AXI_ACPがDisableになっていたのだ。

だから、アプリケーションからFPGAにアクセスしようとしても応答なし状態になってエラーになったんだ。

と、仮定してみた。

トライしたけど同じ結果でダメだった。

そこでZedの環境を見てみると・・・

あれ、FSBLはPlaformで定義したものを使っている。

つまり、SDxのVivadoで生成したものは使っていない。

もしかして、最初から「全砲門開けぇ〜!!!」のFSBLを用意しているということなのか?

と、いうかわからなくなってきた。