FC2カウンター FPGAの部屋 2019年08月18日
FC2ブログ

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

FPGAの部屋

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

Ultra96-V2 でカメラ画像をDisplayPort に出力する2(Ultra96-V2 の環境整備)

Ultra96-V2 でカメラ画像をDisplayPort に出力する1(ブロックデザイン)”の続き。

前回は、Ultra96-V2 でPMOD 拡張ボードに搭載したOV5642 カメラの画像をUltra96-V2 のDisplayPort から出力したいということで、Ultra96-V1 のブロックデザインの内のZynq UltraScale+ MPSoC のDDR の設定をUltra96-V2 用に変更して、論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。今回は、bin ファイルを作成し、Ultra96-V2 のDebian を起動して、環境の整備を行う。

最初に、Vivado 2018.2 でビットストリームが生成できたので、ハードウェアをエクスポートして、SDK を立ち上げた。 cam_dp_183.sdk ディレクトリに新たに cam_dp_wrapper_hw_platform_1 が生成された。
cam_dp_V2_7_190818.png

カメラ画像をDisplayPortに出力する7(binファイルの生成)”の cam_dp_wrapper.bif と bootgen.sh を作成した。bootgen.sh に実行権限を与えて、実行した。
chmod +x bootgen.sh
./bootgen.sh


cam_dp_wrapper.bin が生成された。これをUltra96-V2 の /home/fpga/examples/cam_dp_V2/ ディレクトリにSFTP でアップロードした。
cam_dp_V2_9_190818.png

次に、Ultra96-V2 の /home/fpga/examples/cam_dp_V2/ ディレクトリに入った。
fpga-load.dts を作った。これからのファイルは、”カメラ画像をDisplayPortに出力する8(Ultra96 での準備)”のコードをコピーして作っている。ただし、fclk01-zynqmp.dts は修正してある。
cam_dp_V2_10_190818.png

fclk01-zynqmp.dts を示す。このファイルは、、”カメラ画像をDisplayPortに出力する8(Ultra96 での準備)”のコードを修正してある。(注)画像の pl_clk0 は 200 MHz ですが、コードの方の 220 MHz に修正済みです。
cam_dp_V2_11_190818.png

/dts-v1/;/plugin/;
/ {
    fragment@0 {
        target-path = "/amba_pl@0";
        __overlay__ {
            fclk0 {
                compatible    = "ikwzm,fclkcfg-0.10.a";
                clocks        = <&zynqmp_clk 0x47 &zynqmp_clk 0>;
                insert-rate   = "220000000";
                insert-enable = <1>;
                remove-rate   = "1000000";
                remove-enable = <0>;
            };
            
            fclk1 {
                compatible    = "ikwzm,fclkcfg-0.10.a";
                clocks        = <&zynqmp_clk 0x48 &zynqmp_clk 1>;
                insert-rate   = "24000000";
                insert-enable = <1>;
                remove-rate   = "1000000";
                remove-enable = <0>;
            };
        };
    };
};



cam_dp.dts を示す。
cam_dp_V2_12_190818.png

dtc_script.sh を示す。
cam_dp_V2_13_190818.png

lddtovary.sh を示す。
cam_dp_V2_14_190818.png

rmdtovary.sh を示す。
cam_dp_V2_15_190818.png

.sh のファイルに実行権限を与えた。
chmod +x *.sh
cam_dp_V2_16_190818.png

./dtc_script.sh
でDTS ファイルをコンパイルして、DTB ファイルを出力した。
cam_dp_V2_17_190818.png

./lddtovary.sh
を実行してデバイスツリーをロードした。ログを示す。
cam_dp_V2_18_190818.png

fclkcfg でエラーが出ている。

zynqmp_clk_divider_set_rate() set divider failed for pl0_ref_div1, ret = -22


これのせいか? 220 MHz のはずの pl_clk0 が 99999999 Hz になってしまっている。

/sys/class/uio は uio0 〜 uio 9 まであった。この内の uio4 〜 uio9 までが cam_dp.dtb でデバイスツリーに追加した uio だ。
cam_dp_V2_19_190818.png

udmabuf4 もデバイスツリーに追加されていた。
cam_dp_V2_20_190818.png
  1. 2019年08月18日 15:47 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0