fumiLab

fumimakerが作ったもの、やったことについて書いていきます。

Pcam5CのHDMI表示デモをVivado2019.1+Vitisで動かす

カメラを扱う上でよく参考にされるPcam5CのデモプロジェクトがXilinxから公開されています.LeastのリリースではVivado2019.1で配布されています.

github.com

問題

リポジトリの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で動きました.

  1. リリースから2019のプロジェクトをダウンロードして展開します.

  2. プロジェクトの中にあるxprファイルをVivadoで開きます.

  3. 論理合成を行います.

  4. 完了したらFile→Export→Export HardwareでInclude Bitstreamにチェックを入れてOkします.

  5. Vitisを起動します.起動するとワークスペースを指定しろと言われるので適当にプロジェクト/vitisを作ってそこを指定しました.(本当はどうすればいいのかわからないのですがこれでいいのでしょうか?)

    f:id:fumimaker:20200912230631p:plain
    保存先を決める

  6. File→New→Platform Projectでプロジェクト名を決めます.適当にPcam5C-2019とかにしておきました.

    f:id:fumimaker:20200912230637p:plain
    Platform project
    f:id:fumimaker:20200912230641p:plain

  7. Create from hardware specification(XSA)を選択してNEXT. f:id:fumimaker:20200912230645p:plain

  8. 4でExportしたXSAの場所を指定してFinishです. f:id:fumimaker:20200912230649p:plain

  9. New→Application projectで適当に名前をつけます.

  10. Select a platform from repoでさっき作ったやつを選択します. f:id:fumimaker:20200913150554p:plain

  11. LanguageはC++にしましょう.PcamのプロジェクトはC++で書かれています.Cにするとエラーになります.

  12. Empty appをそのまま選択して完了です.するとExploreでsystemというのが出ると思います,これがおそらくPSのソフトプロジェクトです.

    f:id:fumimaker:20200913155319p:plain
    このようにSystemというのがでてくる

  13. このままだとなにもないのでビルドもできません.Pcamのソースをインポートしましょう.エクスプローラーの_system/-app/srcを右クリックしてImport Sourcesをします. f:id:fumimaker:20200913155036p:plain

  14. From directoryからgithubからダウンロードしたappsource/pcam_vdma_hdmiを選択します.そうするとその中で何をインポートするかチェックボックスが出てくるので全部選択してFinishします.そうするとAppsourceの内容がインポートされると思います. f:id:fumimaker:20200913154852p:plain

    f:id:fumimaker:20200913155233p:plain
    インポートするとこうなる

  15. _systemを選択してProject→Buildします.ここでさっきC++を選択してないと失敗します. f:id:fumimaker:20200912230654p:plain

  16. ZyboにPcamを繋ぎ,ACアダプタを接続し,USBケーブルを接続します.ここはReadme通りにやればOKです.

17.ようやく動かします._systemを右クリックしてRun as→launch on hardware 上のバーからRunします.RunするとFPGAに回路が書き込まれ,PSのソフトが書き込まれJTAG経由で起動します.VitisからProgramFPGAしてPSのソフトを起動するという手順が一括して自動で行ってくれるようになりました.Vitisえらい!

f:id:fumimaker:20200912230657p:plain

  1. Pcamが動いてHDMI出力されるようになります.ここから先はReadmeにあるように動くはずですのでそちらをみてください.
    f:id:fumimaker:20200913155925j:plain
    動いた

Vivadoで回路を変更した場合

回路を変更した場合は,再度論理合成をして,回路の情報をExportし直す必要があります.3,4のところですね.さらにVitisで手動で読み込み直す必要があります.(ここ注意)ちなみにXilinxSDKの時はHardwareの情報が更新されたら検出して読み込み直すか確認してくれたのですが,Vitisでは変更されたことを認識してくれなくなってしまいました.読み込み直さなければエクスポートしても古い回路のままなので気を付けましょう. Vitisなにかと便利なんだけど,唯一ここだけ改悪されてしまったポイント...悲しみ.

読み込み直す方法

Pcam5-2019を右クリックしてUpdate hardware specificationを選択します.確認画面でOKを押します.これをすることで書き換えた回路情報をVitisで更新してくれるようになります,この手順は回路を書き換えたら毎回やる必要があります.

f:id:fumimaker:20200912230701p:plain
Updateする必要がある
更新したらビルドをしなおしましょう.なお,エラーが発生した場合はCleanビルドすると解決することもあるとされています.