Skip to content

Latest commit

 

History

History
130 lines (76 loc) · 5.37 KB

File metadata and controls

130 lines (76 loc) · 5.37 KB

Ultra96-V2 で Raspberry Pi Camera Module V2 (Sony IMX219) を DisplayPort から表示

概要

Ultra96-V2 で Raspberry Pi Camera Module V2 (Sony IMX219) をDisplayPortから表示するサンプルです。

環境

このような環境で実施しております。

基本的な環境構築はこちらのブログでも紹介しておりますので参考にしてください。

Debian GNU/Linux (v2021.1版) ブートイメージ 環境にて試しております。

image       : https://github.com/ikwzm/ZynqMP-FPGA-Linux/tree/v2021.1.1
Description : Debian GNU/Linux 11
kernel      : 5.10.0-xlnx-v2021.1-zynqmp-fpga

PC側の合成環境には Vivado 2021.2 を利用しております。

動かし方

gitリポジトリ取得

git clone https://github.com/ryuz/jelly.git

で一式取得してください。

Vivadoで bit ファイルを作る

projects/ultra96v2/ultra96v2_imx219_display_port/syn/vivado2021.2

に移動して Vivado から ultra96v2_imx219_display_port.xpr を開いてください。

最初に BlockDesign を tcl から再構成する必要がります。

Vivado メニューの「Tools」→「Run Tcl Script」で、プロジェクトと同じディレクトリにある update_design.tcl を実行すると再構築を行うようにしています。

うまくいかない場合は、既に登録されている i_design_1 を手動で削除してから、design_1.tcl を実行しても同じことができるはずです。

design_1 が生成されたら「Flow」→「Run Implementation」で合成を行います。正常に合成できれば

ultra96v2_imx219_display_port.runs/impl_1

に ultra96v2_imx219_display_port.bit が出来上がります。

Debian起動時のパラメータ設定(CMA領域増量)

今回の動作では、IMX219イメージセンサーからPL経由で画像を取り込みますが、その際に ikwzm氏の udmabuf を用いて、CMA(DMA Contiguous Memory Allocator)領域から領域を割り当てます。

Ultra96V2 で実行

projects/ultra96v2/ultra96v2_imx219_display_port/app の内容一式と先ほど合成した ultra96v2_imx219_display_port.bit を、Ultra96V2 の Debian で作業できる適当なディレクトリにコピーします。bitファイルも同じappディレクトリに入れてください。

Ultra96V2 側では Debian が起動済みで ssh などで接続ができている前提ですので scp や samba などでコピーすると良いでしょう。app に関しては Ultra96V2 から git で clone することも可能です。

この時、

  • OpenCV や bootgen など必要なツールがインストールできていること
  • ssh ポートフォワーディングなどで、PCに X-Window が開く状態にしておくこと
  • /dev/uio や /dev/i2c-4 などのデバイスのアクセス権が得られること
  • sudo 権限のあるユーザーで実行すること

などの下準備がありますので、ブログなど参考に設定ください。

問題なければ、app をコピーしたディレクトリでb

make all

と実行すれば ultra96v2_imx219_display_port.out という実行ファイルが生成されます。

ここで

make run

とすると、Device Tree overlay によって、bit ファイルの書き込みなどを行った後にプログラムが起動し、ホストPCの方の X-Window に、カメラ画像が表示されるはずです。

なお、Device Tree overlay のロード/アンロードは

make load
make unload

といったコマンドで実施可能です。

なお、デフォルトで 1280x720サイズでの撮影モードで起動しますが、

make load
./ultra96v2_imx219_display_port.out 1000fps

のようにすれば、640x132での 1000fps モードにも切り替わります(カメラが1000fpsで動くだけで、表示は間引かれて60fpsです)。

その他の細かいコマンドは main.cpp の中を確認ください。

参考情報