Analog Devices の IP を使う
(有)シンビー
りょうす
2016/10/1
この情報は
• Zynq で Analog Devices の IP を使ってみた
• なんかちょっと彼らのソースが古い
• そしてはまった
情報を公開することで他の人の開発の助けになれば幸いです。
Analog Devices が情報をアップデートしたら意味がなくなるかも。
なので、これを読む人は日付をチェックしてね。
現時点のアナデバのgithub
• https://github.com/analogdevicesinc/hdl
• 最終更新日は
Commits on May 26, 2016
• どういうわけか Vivado の対応が
[Vivado 2015.2.1]
• 2015.2 にさらにパッチが当たってます。
Vivado 2015.2.1
• まず最初のはまりどころ
– Vivado 2015.2.1 じゃないと合成できない
– 2015.2 でもエラーになる
– もしかしたら簡単なパッチでうまくいくかもしれな
いけど自信がないので、、、
• Vivado 2015.2.1 をインストール
– これで1日目終了
それにしても地味だな
絵がない
wiki を見ながら合成
• https://wiki.analog.com/resources/fpga/docs/
hdl
– たぶんこの辺見ながら合成したのだと思う。(もう覚えてない、、、)
– 時間もかかる
• 合成済みの IP コアを置いておくので使ってく
ださい。
– http://www.sinby.com/download/ip
core/analog_devices_hdl_library_160930.zip
変なところで URL が
切れているのは SPAM 対策のつもり
効果があるのかどうかは不明
ADV7511 を使いたい
• 今回使いたかったのは ADV7511
• ターゲットは ZC706
– projects/adv7511/zc706/ を合成した(2015.2.1 で)
• 他のターゲットを見ると
– ac701,kc705,kcu105,mitx045,vc707,zc702,zed
• でも、2015.2.1 はインストールしたくない(で
しょ?)
モチベーションの提示が遅い!!
合成されたバイナリがある
• https://github.com/analogdevicesinc/no-OS
– ここから clone する
• no-OS/adv7511/evaluate のしたに各ボードに
対応した bit と elf がある。
> ls
ac701/ kc705/ vc707/ zc702/ zc706/ zed/
> ls zc706
evaluate.bat evaluate.tcl ps7_init.tcl sw.elf system.bit
> ls zed
evaluate.bat evaluate.tcl ps7_init.tcl sw.elf system.bit
バッチファイル確認
• バッチファイル evaluate.bat を実行。
– 中身は次のようになっている。
• 14.6 に依存
• XMD に依存
> cat zc706/evaluate.bat
@echo off
IF "%PROCESSOR_ARCHITECTURE%"=="x86" set
XMD_DIR=C:Xilinx14.6ISE_DSEDKbinnt
IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" set
XMD_DIR=C:Xilinx14.6ISE_DSEDKbinnt64
%XMD_DIR%xmd.exe -tcl evaluate.tcl
pause
動かす
• Xmd を起動して tcl を実行すれば動く
– 実行すべき evaluate.tcl は単純なのでバージョン
に依存していないようだ。
– ちょこっとかえればバッチファイルもそのまま動
く、、、でしょう。
– Zed とかもあるので(当方動作は未確認)これも動
くに違いない。
動かない!?
• まずちゃんと HDMI からモニタにちゃんとつな
ぐ。
– 立ち上げ時は 640x480 VGA
– 後からつないでもだめ(I2Cの通信を最初にして、
つながっていることを確認しているようだ)
• コンソールもちゃんとつないでメッセージを見
る
説明の順番が逆だ、、、
最初に機器設定してね。
ZC706
HDMI コネクタ-> モニタ
USB シリアル -> PC + TeraTerm
ここまできたら合成してみる
• 結局、合成するのか、、、
• http://qiita.com/yuichiroTCY/items/aa621b1b
432f7ceaf909
– なんだ、もう誰かがやってるじゃん。
– これをよむとちょろっと書き換えると 2015.2 で動く
らしい。
ソフトウェアの作成
• wiki が参考になるが
https://wiki.analog.com/resources/fpga/xilinx
/kc705/adv7511
• このままやってもはまります。
まずはプロジェクトの作成
Empty Application を選ぶ
Wiki の通りに import する
• インポートすると次のディレクトリができるは
ず
– inc
– lib
– src
• 勝手のコンパイルが始まるとややこしいので、
Build Automatically はオフにしておいた方が
よい
コンパイラの設定
• パスの設定:include のパス
コンパイラの設定
• フラグの削除:vfp と neon を削除
-mfpu=vfpv3 –mfloat-abi=hard を削除
リンカの設定
• ディレクトリの追加:lib のパス
リンカの設定
• ライブラリの追加: HDMI_ZynqLib
HDMI_ZynqLib のソースは公開され
ていない模様。そして、このライブラ
リが古い、、、
リンカの設定
• フラグの削除:vfp と neon を削除
-mfpu=vfpv3 –mfloat-abi=hard だけを削除
間違って他を削除しないように!
BSP の Makefile 修正
• フラグの削除:vfp と neon を削除
-mfpu=vfpv3 –mfloat-abi=hard だけを削除
2か所あるぞ
BSPソースの修正
• NEON をオフに:asm_vectors.S を修正
(ここでは undef を追加した)
BSPソースの修正
• VFP に関連する記述を削除:boot.S を修正
(ここでは #if 0 を追加した)
これでうまくコンパイルできるはず
• ここまで書いていてなんだけど、、、
– Analog Devices のライブラリは
• ソースが提供されてなさそうだから気を付けろ
• ライブラリは古くて NEON と VFP3 に対応していないか
ら気を付けろ
• アプリケーションコンパイル時にオプションを気を付け
ろ
• BSP も修正が必要だ
– ってつぶやいただけでよかったりして
Analog Devices の IP コアを使う

Analog Devices の IP コアを使う