1. 概要 (IP 等も含めた構成図)
このコンテンツでは、On Chip RAM から Nios® II プロセッサーを起動させる為に、最低限必要な IP の各種パラメーターと BSP Editor の設定、各種ファイルの生成方法を説明します。
ソフトウェア・ファイルを初期値ファイルとして、 On Chip RAM に格納します。
Boot する必要がないので、FPGA の電源が立ち上がった後すぐに Nios® II を起動させることができます。
Boot Option の違いについては、以下のコンテンツを参照ください。
・Nios® II Boot の種類 と 各 Boot Option における設定方法について
最低限必要な IP は下記の通りです。(インテル® Quartus® Prime 開発ソフトウェア ver 18.1 の場合)
- Nios® II Processor
- On-Chip Memory (RAM or ROM) Intel® FPGA IP: ソフトウェア 実行/格納メモリー
Platform Designer で構築すると 図1 の様になります。
図1:Platform Designer 構成
以降、各種パラメーターの設定について説明します。
1-1. Nios® II Processor
Reset Vector / Exception Vector を 図2 の様に、On Chip RAM に設定してください。
図2: Nios® II パラメーター設定
1-2. On-Chip Memory (RAM or ROM) Intel® FPGA IP
図3 の様に、ソフトウェア実行に必要な Total Memory Size を設定してください。
図3:On-Chip Memory パラメーターの設定例
On Chip RAM の初期値ファイルとしてソフトウェア・ファイルを格納しますので、Memory Initialization の設定をします。初期値ファイルの登録方法によって Memory Initialization の設定が異なります。
1-2-1. meminit.qip を使用して、On Chip RAM の初期値ファイルを登録する方法
図4 の様に "Initialize memory content" 設定にチェックを入れ、Quartus® Prime のデザインとして meminit.qip を登録します。
meminit.qip は On Chip RAM の初期値設定用の IP であり、プロジェクトに登録するだけで On Chip RAM の初期値を設定できます。
図4: meminit.qip を使用する際の Memory Initialization 設定
1-2-2. On-Chip RAM のパラメーター設定で、初期値ファイルを指定する方法
図5 の様に "Enable non-default initialization file" にもチェックを入れ、初期値ファイル <On_Chip_RAM_NAME>.hex のパスを登録します。
図5:初期値ファイルのパスを登録する際の Memory Initialization 設定
1-3. Quartus® Prime Settings
Assignment tab → Device → Device and Pin Options → Configuration を開いてください。
- Configuration scheme: FPGA の Configuration 方式を設定
- Active serial clock source : FPGA を Configuration するときのクロック周波数を設定
図6:Quartus® Prime の Device and Pin Options
2. Nios® II SBT の BSP Editor 設定
Nios® II Software Build Tools (SBT) for Eclipse を起動し、Application と BSP を生成します。
BSP Editor を起動し、Linker Script 設定、hal.linker 設定を行います。
Linker Script は 図7 の様に設定します。
すべての Section を On-Chip RAM に設定します。
図7: Linker Script 設定
そして、Main タブにある Settings → Advanced → hal → linker の項目で、 hal.linker オプションを 図8 の様に "allow_code_at_reset" だけチェックを入れます。
図8: hal.linker 設定
注記:Nios® II Core に Reset を入れて再起動することがある場合、enable_alt_load と enable_alt_load_copy_rwdata を有効にしてください。
参考:Nios® II Software Developer Handbook > 5.10.4. Run from Initialized Memory Configuration
If your software has a .rwdata section that must be reinitialized at processor reset, turn on the hal.linker.enable_alt_load_copy_rwdata setting in the BSP.
これで、On Chip RAM から Boot させる為の設定は完了しました。
次は、On Chip RAM に持たせる HEX ファイルと Programming ファイル の生成になります。
3. Programming ファイルの生成方法
Nios® II SBT にてソフトウェアのコンパイルが終了し ELF ファイルを生成したら、次は HEX ファイルを生成します。HEX ファイルを On Chip RAM の初期値としてプロジェクトに登録することで、ソフトウェア・ファイルを持った SOF ファイルが生成でき、Nios® II を Boot させることが可能になります。
3-1. HEX ファイルの生成
ELF ファイルの生成が終了したら、図9 の様に Nios® II アプリケーションを右クリックし、
Make Targets → Build... → mem_init_generate → Build で HEX ファイルを生成します。
図9: mem_init_generate for HEX
mem_init_generate で生成されるファイルは主に 3種類です。
- meminit.qip:On Chip RAM の初期値ファイル用の IP 。プロジェクトに登録して使用(登録方法は 1-2-1 を参照)
- <On_Chip_RAM_NAME>.hex:On Chip RAM から Boot する際の RAM の初期値ファイル(登録方法は 1-2-2 を参照)
- <On_Chip_Flash_NAME>.hex: JIC ファイルに持たせるソフトウェア・ファイル(今回は使用しません)
生成したファイルを 登録方法に沿って登録します。
3-2. POF ファイルと JIC ファイルについて
On Chip RAM から Boot する際は、初期値ファイルとしてソフトウェア・ファイルを登録していますので、SOF ファイルにソフトウェア情報が含まれています。
従って、SOF ファイルから通常通り POF ファイル、JIC ファイルを生成することで、ソフトウェア情報を Programming ファイルに反映させることができます。
Quartus® Prime をフルコンパイルせずに、更新した HEX ファイルを SOF ファイルに反映させる方法は、こちらを参照してください。
おすすめページ
弊社では Nios® II に関する各種情報とまとめた「Nios® II まとめページ」をご用意しております。本記事以外にも有用な情報が満載ですのでこちらも併せてご確認ください。