ちょうど Vivado 2015.4 がリリースされたので、2015.4をインストールしてI2Sの開発を再開しようとしたらハマってしまった。
Vivado 2015.4でプロジェクトを開きBlock Designで使われている各IPをUpgradeして合成、bitstreamの生成と進み出来上がったbitstreamとHardwareをSDKにexportしてSDKを立ち上げた。そしたら、割込みを使っているプログラムがエラーとなってコンパイル出来なくなってしまった。エラーの内容を見ると、I2S IPの割込み番号を定義しているマクロ(XPAR_FABRIC_I2S_CTL_INTR)が存在しないとある。

XPAR_FABRIC_I2S_CTL_INTRは本来であればxparameters.h内に定義されているもので、xparameters.hはBoard Support Package(**_bsp)下のincludeディレクトリにある。
xparameters.hを開いて検索したが、やはりそのマクロは見つからなかった。

Board Support Packageを再生成してみたが状況は変わらなかった。

Board Support Packageはsystem_wrapper_hw_platform_* 配下の情報を元に生成されるようであり、この時点では古い方(system_wrapper_hw_platform_0)を参照している。
bspが参照しているsystem_wrapper_hw_platformを途中で変更することが出来ないようなので、新たに、system_wrapper_hw_platform_1を参照するBoard Support Packageを生成することにした。



生成したBoard Support Packageのxparameters.hを確認すると、XPAR_FABRIC_I2S_CTL_INTRが定義されていた。

次に、アプリケーションプログラムが新しく作成したBoard Support Packageを参照するように変更する。

これでOKかと思ったら、今度は別のエラーが出た。

xilffs (Generic Fat File System Library)のバージョンが上がって、f_mountという関数の引数の仕様が変わったようだ。


そこで、新しい仕様に合わせてプログラムを修正したらコンパイルが通った。

0 件のコメント:
コメントを投稿