Cmod A7のSPIFlashにSDKのプロジェクトを書き込む
概要
Digilent社のCmodA7というFPGAボードにMicroBlazeを実装したBitstreamとそのSDKプロジェクトをSPI Flashに書き込む方法についてです。
この方法はDigilent社の公式HPに、そのやり方が書いてあるのですが、かなり省略された説明でわかりにくかったため、
分かりにくかったところを追記しようと思います。
基本的にはDigilent社のページを見ながらやって見てください。
How To Store Your SDK Project in SPI Flash [Reference.Digilentinc]
vivadoプロジェクトの作成
公式HPの説明ですと、Vivadoプロジェクトについて
「Before you start; this guide assumes that you already have a Microblaze system built complete with Quad SPI, External Memory, and Uart cores, and that you have the appropriate QSpi mode jumper setting. This tutorial takes place in SDK.」
としか書かれていません。
この部分について実際に作ってみましょう。
プロジェクトの作成
プロジェクト名:任意
ボードファイル:CmodA7-XXT (使う予定のボードに合わせてボードファイルを定義してください。)
でプロジェクトを作成してください。
BlockDesignの作成
BlockDesignの名前は適当につけてください。
まず、MicroBlazeを追加して、Run Block Automationを実行します。
このときの設定は、
Preset | None |
Local Memory | 32kB |
Local Memory ECC | None |
Cache Configuration | None |
Debug Module | Debug Only |
Peripheral AXI Port | Enabled |
Interrupt Controller | Checked |
Clock Connection | New Clocking Wizard |
としました。
メモリのサイズは適当です。
私は最初、Interrupt Controllerにチェックマークを入れず、自分でAXI Interrupt Controllerを入れていたのですが、なぜかこれでは後にSDKでエラーになってしまい、
かなり苦労しました。
この後は、画像のようにBoardタブより
・System Clock
・Cell Ram
・QSPI Flash
・Reset
・USB UART
を追加して、Run Connection Automationを実行しました。
次に、AXI UARTとAXI QUAD SPIからInterrupt ControllerにInterrupt信号を接続しましたが、これが必要かはわかりません。。。
ここまで終わったら、Generate Bitstreamを実行します。
公式HPに書いてあるBitstreamの圧縮は任意で行ってください。
SDKプロジェクトの作成
ここは公式HPどおりです。
Cmod-A7では、4MBのn25q032a13ef440fというSPI Flashを使っているため、
FLASH_IMAGE_BASEADDRは0x00300000
Program Flash MemoryのFlash Typeはn25q32-3.3v-spi-x1_x2_x4
に設定するというところに気をつける必要があります。
さいごに
結局、Interrput Controllerを今回の方法で設定したらうまくいくようになったんですが、理由はよくわかりません。