メモ置き場

メモ置き場です.開発したものや調べたことについて書きます.

[tex: ]

ZYBO-Z7でPcam-5Cのデモをやった

そろそろZynqのPLも触っていきたい,ということでPcamのデモを動かしてみた.
reference.digilentinc.com

本当にデモを動かしただけなので,オリジナリティは何もない.

ソースの取得

git repositoryがあるので,cloneしてくる.
GitHub - Digilent/Zybo-Z7-20-pcam-5c
注意してほしいのは,このデモはVivado 2017.4用に作成されたものらしいので,他のバージョンだと単にコピーするだけだと動かないと思う.特にzip形式でダウンロードした場合はIP周りでエラーが起こりうるかも.
僕はVivado 2018.2を使ってやろうとして,少しハマってしまった.
vivado 2018.2 · Issue #7 · Digilent/Zybo-Z7-20-pcam-5c · GitHub
こんなQ&Aがあった.上記デモのリポジトリを取ってくるときに,recursiveに取ってこないとダメみたい.

$ git clone --recursive git@github.com:Digilent/Zybo-Z7-20-pcam-5c.git
$ ls 
hw_handoff  proj  README.md  repo  sdk  src

Vivadoでビットストリームファイルの作成

projディレクトリに移動して,次のコマンドを打つ.vivadoが立ち上がってブロックデザインを勝手に作ってくれる.

$ cd proj
$ vivado -source create_project.tcl

後はGenerate bitstreamをすれば良い.必要に応じてUpgrade IPをやらないとダメかもしれない.僕がやったときは特に何もなくbitstreamが作成できた.

SDKで実行ファイルを作成する

bitstreamが出来たら,hdfファイルを出力してSDKを立ち上げる.sdkディレクトリにサンプルプログラムがあるので,import projectからプロジェクトをインポートする.
File→importをクリックすると下のような画面が出てくるので,General→Existing Project into Workspaceを選択してNextをクリック
f:id:okchan08:20190207154320p:plain
Select root directory でcloneしてきたsdkディレクトリを選択する.選択するとProjectsの中にfsblやpcam_vdma_hdmiといったプロジェクトが現れるので,Select Allを押してFinishをクリック.自動でプロジェクトがビルドされる.
f:id:okchan08:20190207154517p:plain

今回はプロジェクトを動かすだけなので,pcam_vdma_hdmiの方を使う.

プログラムの実行

プログラムを実行する.
SDKを使ってZynqでプログラムを実行する.

写真のようにケーブルをつなぐ.
f:id:okchan08:20190207174809j:plain

このプロジェクトは消費電力が多いのか,5Vの外部電源を使う必要があるらしい.外部電源はこちらを使っている.
www.amazon.co.jp
センタープラスで外径5.5mm,内径2.1mm,DC電圧5Vのものならなんでもいいと思う.僕は電流は3Aのものを使っている.外部電源から供給するためにジャンパーピンをWALLに設定する.
micorUSBは開発用のホストマシンに接続する.起動メニューを決めるジャンパーピンJP5は,JTAGモードにしておく.またmicroSDカードは抜いておいた.
HDMIケーブルをHDMI TXポートに接続する.ZYBO Z7は入力用(HDMI RX)と出力用(HDMI TX)で2個ポートがあるので間違えないよう注意する.
最後にPcam 5Cカメラを接続してボードの準備は完了である.

ボードの電源を入れてSDKからPLをConfigurationする.
SDKのメニューバーにあるProgram FPGAを実行する.bitstreamファイルの選択画面が出てくるので,Vivadoで作成したものを選択してProgramボタンをクリックする.
ジャンパーピンなど正しく設定しておけばconfigurationが完了するはず.


ホストマシンでシリアルコンソールを立ち上げ,ZynqのURAT出力を見ておく.
Zynqでプログラムを動かすにはfsbl→アプリケーションプログラムの順に実行する必要がある.
まずfsblプロジェクトで右クリックしてRun As→Launch on Hardware(System Debugger)を実行.5秒位でfsblの実行が完了する.このfsblは特に何も出力してくれないようで,シリアルコンソールには何も表示されない.
次にpcam_vdma_hdmiプロジェクトを右クリックしてRun As→Launch on Hardware(System Debugger)を押す.すると実行ファイルのダウンロードが始まりアプリケーションが起動する.アプリケーションが動き始めたら,HDMIにカメラの画像が出力されるようになる.アプリケーションの操作方法についてはDigilentのサイトに書いてあるので参考に.解像度など色々設定可能.
f:id:okchan08:20190207173831p:plain

実行したときの様子

www.youtube.com

ディスプレイに表示させたときの様子.

最後に

とりあえずHDMI出力ができるようになった.
このサンプルプログラムではLinuxを使わずにベアメタルアプリケーションとして実行している.
VivadoデザインとSDKプロジェクトの中身を調べてみようと思う.特にこのデザインは割り込みを使っているようなので,Zynqでの割り込みの勉強として役に立ちそう.アプリケーションをLinuxで実行できるように移植してみたい.

あと,カメラモジュール用の治具が欲しい.カメラモジュールの基盤とZYBO-Z7の基盤が接触するとショートしたりして怖い.良さげなのないかな…