Genasys ZU を使用して Adam Taylor さんの”
High Performance Imaging”をやってみることにした。
Vivado 2019.1 を使用する。 Vivado 2019.2 ではビットファイルを生成する時にDRC エラーが出てしまう。この辺りを対処しないと(たぶん出力する信号を削れば良いと思うのだが)行けないようだ。
まずは Vivado 2019.1 のプロジェクトを git clone した。
git clone https://github.com/ATaylorCEngFIET/Genesys_ZU_MIPI_PCAM.git
Vivado 2019.1 を立ち上げて display_port.xpr を読み込んだ。
4 つほど IP をアップグレードするかも知れない?一度やったら IP をアップグレードする必要がないのかも知れない?今回でブログ書くのに 2 回目なのだが、今回は IP のアップグレードが無かった。
プロジェクトを示す。

ブロックデザインを開いた。

ブロックデザインを見やすいように書き換えた。

Address Editor を示す。

論理合成、インプリメンテーション、ビットストリームの生成を行った。
Project Summary を示す。なお、タイミングはメットしていないが、クロック間のタイミングが違反しているので、動かしても大丈夫だろう?

File メニューから Export -> Export Hardware... を選択した。
Export Hardware ダイアログが開いた。
Include bitstream にチェックを入れて、OKボタンをクリックした。

File メニューから Launch SDK を選択した。
Launch SDK ダイアログが開いた。
デフォルトのまま、OKボタンをクリックした。

SDK が立ち上がった。(懐かしい。。。)
すでにハードウェア・プラットフォームの design_1_wrapper_hw_platform_0 が存在しているが、今回の Export Hardware により、ハードウェア・プラットフォームの design_1_wrapper_hw_platform_1 が生成された。

ハードウェア・プラットフォームの design_1_wrapper_hw_platform_1 を使用して dispport2 アプリケーション・プロジェクトを作成する。
SDK の File メニューから New -> Application Project を選択した。
New Project ダイアログが開いた。
Application Project 画面で Project name: に dispport2 と入力した。Next > ボタンをクリックした。

Templates 画面では、Empty Application を選択して、 Finish ボタンをクリックした。

dispport2 アプリケーション・プロジェクトが生成された。
dispport アプリケーション・プロジェクトの src の内容を dispport2 アプリケーション・プロジェクトの src にコピーする。
dispport アプリケーション・プロジェクトの src ディレクトリの lscript.ld 以外のファイルをすべて選択して dispport2 アプリケーション・プロジェクトの src にドラック&ドロップした。

File Operation ダイアログが表示された。
コピーでOK なので、そのまま OK ボタンをクリックした。

ビルドでエラーが表示された。

エラー内容を示す。
Invoking: ARM v8 gcc linker
aarch64-none-elf-gcc -Wl,-T -Wl,../src/lscript.ld -L../../dispport2_bsp/psu_cortexa53_0/lib -o "dispport2.elf" ./src/helloworld.o ./src/platform.o ./src/xdpdma_video_example.o ./src/xdppsu_interrupt.o -Wl,--start-group,-lxil,-lgcc,-lc,--end-group
/media/masaaki/Ubuntu_Disk/tools/Xilinx/SDK/2019.1/gnu/aarch64/lin/aarch64-none/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld: ./src/helloworld.o: in function `gamma_calc':
makefile:36: recipe for target 'dispport2.elf' failed
/media/masaaki/Ubuntu_Disk/HDL/Genesys_zu/2019.1/Genesys_ZU_MIPI_PCAM/display_port.xpr/display_port/display_port.sdk/dispport2/Debug/../src/helloworld.c:260: undefined reference to `pow'
collect2: error: ld returned 1 exit status
make: *** [dispport2.elf] Error 1
21:20:07 Build Finished (took 840ms)
pow リファレンスが無いということらしい。

検索したところ、”
AR# 52971 14.4 - SDK - sin、cos、tan 関数を含むアプリケーションをSDK の ARM コンパイラでコンパイルするとエラーになる”が引っかかった。これによると、
演算 (math) の -m オプションを C/C++ Build 設定のライブラリに次のように指定する必要があります。
とのことだった。
SDK の Project Explorer で dispport2 を選択して、右クリックし、右クリックメニューから Properties を選択する。
Properties for dispport2 ダイアログが開く。
C/C++ Build の Settings を開いて、ARM v8 gcc linker -> Libraries を選択して、Libraries (-l) の Add... ボタンをクリックする。

Enter Value ダイアログが開く。
m を入力する。OKボタンをクリックする。

Libraries (-l) に m が入力された。
OKボタンをクリックする。

ビルドが成功して、elf ファイルができた。

SDK の Xilinx メニューから Program FPGA を選択する。
Program FPGA ダイアログが開く。
Program ボタンをクリックした。

FPGA のコンフィグレーションが成功した。
SDK の Project Explorer で dispport2 を選択して、Run As ボタンをクリックした。

Run As ダイアログが表示された。
Launch on Hardware (System Debugger) のまま、OKボタンをクリックした。

dispport2 アプリケーションが起動した。

カメラの画像が Display Port に表示された。成功だ。
Genesys ZU ボードを撮影している。

現在の Genesys ZU ボードの様子を示す。
コンフィグレーション・ケーブルとして、JTAG-HS1 が接続されている。MIPI A に PCam 5C が接続されている。
- 2020年08月18日 05:00 |
- Genesys_ZU
-
| トラックバック:0
-
| コメント:0