新しい記事も参考→
Xilinx SDK上にPynquinoの開発環境を構築する(その2)
http://d.hatena.ne.jp/seinzumtode/20180815/1534292975
B. Xilinx SDKでPynquino対応のBSPを作成する
0. PYNQ用のBSPライブラリとBSPドライバの場所を外部レポジトリに指定する
Xilinx>Repositoriesを起動
Xilinxが提供するPYNQのBSPライブラリ(pynqmb)とドライバ(interrupt_gpioとmailbox_bram)(バージョンはv2.1):
https://github.com/Xilinx/PYNQ/tree/image_v2.1/boards/sw_repo
上のバージョンにはpynqmbライブラリにUARTのバグがあるのでパッチを当てる
以下のように作業する
cd /path/to/sw_repo cd pynqmb/src/ wget https://raw.githubusercontent.com/shohei/PYNQ/b8928631b1b8b118b046d204b2c2dbeeeb063648/boards/sw_repo/pynqmb/src/uart.c uart.c wget https://raw.githubusercontent.com/shohei/PYNQ/b8928631b1b8b118b046d204b2c2dbeeeb063648/boards/sw_repo/pynqmb/src/uart.h uart.h
Pynquino用のBSPライブラリ(Arduion APIのMicroBlazeへのポーティング):
https://github.com/shohei/pynquino-bsp-library/tree/master/pynquino_v1_0
1. Pynquino BSPライブラリとpynqmb BSPライブラリを適用する
BSPプロジェクトの上で右クリック→Board support pacakage setingsを起動
OverviewのSupported Librariesで、pynqmbとpynquinoにチェックを入れる
standaloneのstdinとstdoutの両者を iop_arduino_lmb_lmb_bram_if_cntlr に変更する
driversでドライバを以下のように変更する
iop_arduino_intr -> intrgpio
iop_arduino_lmb_lmb_bram_if_cntlr -> mailbox_bram
OKを押してダイアログを閉じると、BSPが自動的にビルドされる。
C. アプリケーションプログラムの対応
0. リンカースクリプトを修正する
Xilinx>Generate Linker Scriptでリンカースクリプトをアップデート
(BRAMのサイズ256Kに合うように調整される)
新規にアプリケーションプログラムを作成する場合は必要ない(自動で256Kに合うようなlscript.dが生成される)
1. 自動生成されたmakefileを修正する
この状態ではアプリケーションのコンパイルエラーが出る。
このエラーの原因は、pynqmbはビルドしたあとlibxil.aのアーカイブファイルに固められるのだが、自動生成されたmakefileがlibpynqmb.aを要求してしまうことである。
Debug/objects.mkを開いて手動で削除してやればいい
Debug/objects.mk
- LIBS := -Wl,--start-group,-lxil,-lgcc,-lc,--end-group -Wl,--start-group,\ -llibpynqmb,\ -lxil,-lgcc,-lc,--end-group -Wl,--start-group,-lpynquino,-lxil,-lgcc,-lc,--end-group + LIBS := -Wl,--start-group,-lpynquino,-lxil,-lgcc,-lc,--end-group