1. 概要 (IP 等も含めた構成図)
このコンテンツでは、Boot Copier 又は XIP で インテル® MAX® 10 FPGA の UFM から Nios® II プロセッサーを Boot させる為に、最低限必要な IP の各種パラメーターと BSP Editor の設定、各種ファイルの生成方法を説明します。
XIP と Boot Copier の違いについては、以下のコンテンツを参照ください。
・Nios® II Boot の種類 と 各Boot Option における設定方法について
また、弊社のホームページにて、同様のコンテンツを用意しておりますので、そちらもご参照ください。
・MAX® 10 の UFM で Nios® II をブートさせてみよう [前編]
最低限必要な IP は下記の通りです (インテル® Quartus® Prime 開発ソフトウェア ver 18.1 の場合)。
- Nios® II Processor
- On-Chip Memory (RAM or ROM) Intel® FPGA IP:実行メモリー
- On-Chip Flash Intel® FPGA IP:Boot メモリー (UFM)
Platform Designer で構築すると 図1 のようになります。
図1:Platform Designer 構成
以降、各種パラメーターの設定について説明します。
1-1. Nios® II Processor
Reset Vector / Exception Vector を設定します。
XIP か Boot Copier のどちらの方式を使用するかによって設定が異なりますので、
「2. UFM から XIP で実行する際の Nios® II 設定」
「3. UFM からBoot Copier で実行する際の Nios® II 設定」
で説明します。
1-2. On-Chip Memory (RAM or ROM) Intel® FPGA IP
図2 のように、ソフトウェア実行に必要な Total Memory Size を設定してください。
図2:On-Chip Memory パラメーターの設定例
1-3. On-Chip Flash Intel® FPGA IP
Configuration Mode / Flash Initialization を設定します。
図3:On-Chip Flash パラメーター設定例
1-3-1. Configuration Mode
UFM Boot をサポートする Configuration Mode は、
- Single Uncompressed Image
- Single Compressed Image
- Dual Compressed Images
の3つです。システム仕様に応じて選択してください。
また、下記のユーザガイドにて UFM の詳細な仕様を確認できます。
・[Intel® MAX® 10 User Flash Memory User Guide]
・[Intel® MAX® 10 FPGA Configuration User Guide]
1-3-2. Flash Initialization
Boot させるソフトウェア・ファイル (HEX ファイル) を UFM に保存させる方法は2つあり、
方法によって Flash Initialization の設定が異なります。
主に、UFM の初期値ファイルとして HEX ファイルを登録するかどうかで設定が変わります。
<方法1:SOF ファイルに、UFM の初期値として、HEX ファイルを持たせる方法>
- Flash Initialization > Initialize flash content を ON
- Nios® II Software Build Tools (SBT) for Eclipse の Make Target > mem_init_geenrate で生成される meminit.qip をプロジェクトに登録し、Convert Programming Files で SOF ファイルを POF ファイルに変換
これで HEX ファイルを UFM の初期値として SOF ファイルに持たせることができ、POF ファイルにも HEX ファイルを持たせることができます。
図4: SOF ファイルに UFM の初期値として HEX ファイルを持たせる方法の設定
<方法2:POF ファイルに、SOF ファイルと UFM に書き込む HEX ファイルを持たせる方法>
- Flash Initialization > Initialize flash content を OFF
- Nios® II SBT で Make Target > mem_init_geenrate で生成される HEX ファイルを Convert Programming Files で SOF ファイルと共に POF ファイルに変換
これで、HEX ファイルを SOF ファイルと共に、POF ファイルに持たせることができます。
図5: POF ファイルに HEX ファイルを持たせる方法の設定
ファイルの生成方法は、「4. Programming File の生成方法」 で詳しく説明します。
2. UFM から XIP で実行する際の Nios® II 設定
Nios® II Processor の Reset Vector / Exception Vector の設定や BSP Editor の設定を説明します。
XIP で Nios® II を Boot させる場合、Nios® II Processor の Vectors 設定は 2種類あります。
- Reset Vector / Exception Vector 共に UFM を設定
- Reset Vector に UFM、Exception Vector に On-Chip RAM 又は 外部 RAM を設定
図6: Nios® II Vectors 設定 (XIP)
Exception Vector に RAM を設定することで、Flash に比べて例外処理を高速に動作させることができますので、Nios® II のパフォーマンスを上げることができます。
また、Exception Vector を UFM から On-Chip RAM もしくは 外部 RAM にコピーする処理は alt_load() 関数で実現するため、Boot Copier は不要となります。
Nios® II SBT を起動し、Application と BSP を生成します。
BSP Editor を起動し、Linker Script 設定、alt_load() 関数のオプション設定を行います。
Linker Script は 図7 のように設定します。
.text Section は、UFM に設定し、それ以外の Section は On-Chip RAM か外部 RAM に設定します。
図7: XIP 構成における Linker Script 設定
そして、Main タブにある Settings > Advanced > hal > linker の項目で alt_load() 関数のオプションを図8 のように設定します。
上記で記載した、2種類ある Nios® II Processor の Vectors 設定によって設定項目が異なります。
図8: XIP 構成における alt_load() 関数 設定
これで、XIP 構成を実現するための各種設定が終わりました。
次は、UFM に持たせる HEX ファイルと Programming Files の生成方法を参照ください。
3. UFM から Boot Copier で実行する際のNios® II 設定
Nios® II Processor の Reset Vector / Exception Vector の設定や BSP Editor の設定を説明します。
Boot Copier を使用して、Nios® II を Boot させる場合、Nios® II Processor の Vectors 設定は 1種類です。
- Reset Vector に UFM、Exception Vector に On-Chip RAM 又は 外部 RAM を設定
図9:Nios® II Vectors 設定 (Boot Copier)
Nios® II SBT を起動し Application と BSP を生成します。
BSP Editor を起動し Linker Script 設定、alt_load() 関数のオプション設定を行います。
Linker Script は 図10 のように設定します。
.text Section は On-Chip RAM か外部 RAM に設定し、それ以外の Section も On-Chip RAM か外部RAM に設定します。
図10 :Boot Copier を使用する構成における Linker Script 設定
そして、Main タブにある Settings > Advanced > hal > linker の項目で alt_load() 関数のオプションを図11 のように設定します。
Boot Copier の構成は alt_load() を使用しないので、すべてのチェックボックスを外してください。
図11:Boot Copier を使用する構成における alt_load() 関数 設定
これで、Boot Copier を使用する構成を実現するための各種設定が終わりました。
次は、UFM に持たせる HEX ファイルと Programming Files の生成方法を参照ください。
4. Programming File の生成方法
Nios® II SBT にてソフトウェアのコンパイルが終了し ELF ファイルを生成したら、次は HEX ファイルを生成します。HEX ファイルを SOF ファイルと共に POF ファイルに変換することで、UFM に HEX ファイルを持たせることができます。
4-1. HEX ファイルの生成
ELF ファイルの生成が終了したら、図12 のように Nios® II アプリケーションを右クリックし、
Make Targets > Build... > mem_init_generate > Build で HEX ファイルを生成します。
図12: mem_init_generate for HEX
mem_init_generate で生成されるファイルは主に 3種類です。
- meminit.qip:「方法1:SOF ファイルに UFM の初期値として、HEX ファイルを持たせる方法」で使用
- on_chip_ram.hex:RAMの初期値ファイルとして使用
- <On_Chip_Flash_NAME>.hex:「方法2:POFファイルに、SOF ファイルと UFM に書き込む HEX ファイルを持たせる方法」で使用
4-2. POF ファイルの生成
HEX ファイルが生成できたら、Convert Programming Files で SOF ファイル と HEX ファイルを含んだ POF ファイルを生成します。
Quartus® Prime > file tab > Convert Programming Files を起動してください。図13 のように、Programming file type を Programmer Object File (.pof) に設定、Mode を Internal Configuration に設定します。
図13: Convert Programming Files
Option / Boot info ... の設定は、
- 「方法1:SOF ファイルに UFM の初期値として HEX ファイルを持たせる方法」(図14 を参照)
- 「方法2:POFファイルに SOF ファイルと UFM に書き込む HEX ファイルを持たせる方法」(図15を参照)
の設定 (Initialize flash content の ON/OFF ) によって異なります。
4-2-1. 方法1 の場合
図14:Convert Programming Files Boot info... (Initialize flash content:ON)
4-2-2. 方法2 の場合
図15: Convert Programming Files Boot info... (Initialize flash content:OFF)
Convert Programming Files で POF ファイルを生成し、実際に MAX® 10 デバイスにプログラミングして動作をご確認ください。
おすすめページ
弊社では Nios® II に関する各種情報とまとめた「Nios® II まとめページ」をご用意しております。本記事以外にも有用な情報が満載ですのでこちらも併せてご確認ください。