Prismjs

2019年1月17日木曜日

QSPI・SDからZYBOを起動(FPGAをブート)する


今まではJTAG経由でZYBOに書き込みをしていたため、電源を落としたらもう一度PCと接続し書き込みをしなければなりませんでした。今回はZYBOの電源を落としても回路情報などが消えないように、SDカードやQSPIからブートしてみます。

 

VivadoでBitstreamファイルが作成済みかつ、SDKでアプリケージョンが作成済み(ビルドしてelfファイル生成済み&デバッグで動作確認済)のプロジェクトを用意してください。
elfファイルが生成されているかどうかはSDKのProject Explorerのプロジェクトファイル内のBinariesに.elfファイルがあるかどうかで確認できます。


FSBLを生成してBOOT.binを作成する

FSBLは電源投入後PLやPS、ソフト(SDKで作成したアプリケーション)をコンフィギュレーションするために必要なアプリケーション(elfファイル)です。今まではFSBLや回路情報が含まれたファイル(= BOOT.bin)をUSBケーブルを通してJTAGで書き込んでいました。
ZYBOはJP5を切り替えることでBOOT.binをどこから(SDカード、QSPI、JTAG)読むかを切り替えることができます。

VivadoのFile→Launch SDKからXilinx SDKを起動します。

SDKメニューのFile→New→Application Projectをクリックして新規プロジェクトを作成します。
プロジェクト名を適当に付けて(今回はTESTにした)、Nextをクリックし、TemplatesはZynq FSBLを選択してFinishをクリックします。

プロジェクトが作成できたらメニューのProject→CleanでClean all projectsを選択してOKをクリックしクリーンした後、Project→Build Projectでプロジェクトのビルドを行います。(クリーンはしなくても大丈夫かもしれません)
すると、Project Explorerの先ほど作成したプロジェクト内のBinariesに.elfファイルが生成されます。

もともと用意してあったプロジェクトファイル(アプリケーションプロジェクト)を右クリックしてCreate Boot Imageをクリックします。

デフォルトのままでCreate Imageをクリックします。

もともと用意してあったプロジェクトファイルのフォルダ下のbootimageというフォルダにBOOT.binというファイルが追加されます。


 SDカードからブートする

先ほど作成したBOOT.binをSDカード(microSD)にコピーしてZYBOに挿して、JP5をSDに切り替えて電源ONすれば、SDカードからブートされ動作します。


QSPIからブートする

JP5をJTAGにしたZYBOをPCに接続し電源を入れます。

Xilinx SDKメニューのXilinx→Program Flashをクリックします。

Image Fileには先ほど作成したBOOT.binを指定します。(特に変更していなければ、Vivadoのプロジェクトフォルダの○○.sdkフォルダのアプリケーションフォルダのbootimage内にあるはずです)
FSBLファイルには先ほど作成したFSBL(elfファイル)を指定します。(特に変更していなければ、Vivadoのプロジェクトフォルダの○○.sdkフォルダのFSBLアプリケーションフォルダのDebug内にあるはずです)
ProgramをクリックするとQSPIへの書き込みが行われます。数十秒から数分かかります。

SDKのConsoleにFlash Operation Successfulと表示されたらQSPIへの書き込みは完了です。

一度ZYBOの電源をOFFしてからJP5をQSPIに切り替えて電源をONすればQSPIからブートされ動作します。

0 件のコメント:

コメントを投稿