カメラを扱う上でよく参考にされるPcam5CのデモプロジェクトがXilinxから公開されています.LeastのリリースではVivado2019.1で配布されています.
問題
リポジトリのReadmeにプロジェクトの動かしかたが書いてありますが,XIlinxSDK時代のVivado2018までのやりかたで,vivado2019のVitisを使ったやり方に更新されていません.
In the toolbar at the top of the Vivado window, select File -> Launch SDK. Select
as both the workspace location and exported location, then click OK....
XilinxSDKとVitisは使い方が結構違うのでやり方がわからず困っていました.
解決策
端的に言うとここにやり方が議論されていました.https://forums.xilinx.com/t5/Vitis-Acceleration-SDAccel-SDSoC/Xilinx-Vitis-Zybo-Z7-20-Pcam-5C/td-p/1123608
やってみる
実際にやってみます.本当はダメですが手持ちのVivado2019.2で動きました.
リリースから2019のプロジェクトをダウンロードして展開します.
プロジェクトの中にあるxprファイルをVivadoで開きます.
論理合成を行います.
完了したらFile→Export→Export HardwareでInclude Bitstreamにチェックを入れてOkします.
Vitisを起動します.起動するとワークスペースを指定しろと言われるので適当にプロジェクト/vitisを作ってそこを指定しました.(本当はどうすればいいのかわからないのですがこれでいいのでしょうか?)
File→New→Platform Projectでプロジェクト名を決めます.適当にPcam5C-2019とかにしておきました.
Create from hardware specification(XSA)を選択してNEXT.
4でExportしたXSAの場所を指定してFinishです.
New→Application projectで適当に名前をつけます.
Select a platform from repoでさっき作ったやつを選択します.
Empty appをそのまま選択して完了です.するとExploreでsystemというのが出ると思います,これがおそらくPSのソフトプロジェクトです. Systemというのがでてくる
このままだとなにもないのでビルドもできません.Pcamのソースをインポートしましょう.エクスプローラーの_system/-app/srcを右クリックしてImport Sourcesをします.
From directoryからgithubからダウンロードしたappsource/pcam_vdma_hdmiを選択します.そうするとその中で何をインポートするかチェックボックスが出てくるので全部選択してFinishします.そうするとAppsourceの内容がインポートされると思います.
_systemを選択してProject→Buildします.ここでさっきC++を選択してないと失敗します.
ZyboにPcamを繋ぎ,ACアダプタを接続し,USBケーブルを接続します.ここはReadme通りにやればOKです.
17.ようやく動かします._systemを右クリックしてRun as→launch on hardware 上のバーからRunします.RunするとFPGAに回路が書き込まれ,PSのソフトが書き込まれJTAG経由で起動します.VitisからProgramFPGAしてPSのソフトを起動するという手順が一括して自動で行ってくれるようになりました.Vitisえらい!
- Pcamが動いてHDMI出力されるようになります.ここから先はReadmeにあるように動くはずですのでそちらをみてください.
Vivadoで回路を変更した場合
回路を変更した場合は,再度論理合成をして,回路の情報をExportし直す必要があります.3,4のところですね.さらにVitisで手動で読み込み直す必要があります.(ここ注意)ちなみにXilinxSDKの時はHardwareの情報が更新されたら検出して読み込み直すか確認してくれたのですが,Vitisでは変更されたことを認識してくれなくなってしまいました.読み込み直さなければエクスポートしても古い回路のままなので気を付けましょう. Vitisなにかと便利なんだけど,唯一ここだけ改悪されてしまったポイント...悲しみ.
読み込み直す方法
Pcam5-2019を右クリックしてUpdate hardware specificationを選択します.確認画面でOKを押します.これをすることで書き換えた回路情報をVitisで更新してくれるようになります,この手順は回路を書き換えたら毎回やる必要があります. 更新したらビルドをしなおしましょう.なお,エラーが発生した場合はCleanビルドすると解決することもあるとされています.