2015年12月23日水曜日

ZYBO 25 ( I2S コントローラの作成 16 )

遂に、スクラッチ音が出来るようになった。 \(^_^)/



ここまでのデータ一式をGitHubに置いた。

https://github.com/BravoFpga/I2S-control-IP-for-ZYBO-zynq-/blob/master/my_I2S_20151227.zip

Rawをクリックするとzipファイルをダウンロードできる。

2015年12月6日日曜日

ZYBO 24 ( I2S コントローラの作成 15 )

久しぶりのI2Sコントローラだ。
ちょうど 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という関数の引数の仕様が変わったようだ。


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





TE0720 No.4 (BNN-PYNQを動かしてみる 2)

TE0720でBNN-PYNQを動かすことが出来た。 以下は前回に続いてBNN-PYNQが動くまでの記録。 gdb (GNU debugger)で例外が出る原因を調べてみた。 例外が発生しているのはシェアードライブラリ(python_hw-cnv-pynq.so)の中であ...