1. はじめに
Nios® II プロセッサーは CPU なので Boot させる必要があり、Boot Copier と Execute in Place (XIP) の 2種類 の Boot 方式 に対応しています。さらに、サポートしている Boot Memory は
- User Flash Memory (UFM)
- EPCS/EPCQ/EPCQA
- QSPI Flash
- CFI Flash
- On Chip RAM
があり、Boot 方式と Boot Memory の組み合わせにより、Nios® II を Boot させる方法 (Boot Option) は 9種類に分かれます。(9種類の内訳は、「3. 各 Boot Option の紹介 」で説明します)
この記事は、その 9種類の Boot Option と各種設定方法についてのまとめになります。
2. Boot 方式の種類
Nios® IIを Boot する際には、下記種類の Boot 方式 があります。
- Boot Copier
- Execute in Place (XIP)
それぞれのメリットは 表1 の通りです。
表1:Boot Copier と XIP のメリットとデメリット
Boot 方式 | メリット | デメリット |
Boot Copier |
・XIP と比較すると処理性能が高い ・Boot Copier を編集することによる柔軟性 |
・Application コードを展開するための RAM 領域が必要 |
XIP |
・RAM 領域を削減できる ・即時起動が可能 |
・処理時間が遅い |
Boot Copier について
Boot Copier は On Chip RAM もしくは External RAM に Application コードを展開して実行する方法です。例として、インテル® MAX® 10 FPGA を用いた場合について説明します。
MAX® 10 の UFM に Application コードを保存し、リセット解除で、以下の Boot Copier のフローで Nios® II が実行されます。
① Nios® II のリセットを解除
② UFM 上の Boot Copier を Nios® II が実行
③ Application コードを On Chip RAM にコピー
④ On Chip RAM 上の Application コードを Nios® II が実行
図1:MAX® 10 における Boot Copier のフロー
Boot Copier を使用するメリットとして、On Chip RAM 上で Application を実行するため、XIP よりも処理性能を高くすることができます。但し、実行用の内部 RAM が必要になるため、FPGA 内部のメモリー・リソース必要量が XIP よりも大きくなります。
他にも、メーカーの標準提供ではなくなるため若干ハードルが高くなりますが参考資料に記載がある通り、Boot Copier をカスタマイズする事で、Application コードを圧縮して、Memory の容量を節約する事や Application コードを複数用意して切り替えて実行するなど柔軟な対応が可能です。
<参考資料> Embedded Design Handbook > 5.3. Alternative Nios II Boot Methods
Execute in Place (XIP) について
XIP は Boot Memory に Application コードを保存しておき、On Chip RAM や External RAM を介さずに Boot Memory 上で、Nios® II を実行する方法です。
例として、MAX® 10 を用いた場合について説明します。
MAX® 10 の UFM に Application コードを保存し、リセット解除で以下の XIP のフローで Nios® II が実行されます。
① Nios® II のリセットを解除
② UFM 上の Application コードを UFM で Nios® II が実行
図2:MAX® 10 における XIP のフロー
XIP を用いる利点としては、実行用の RAM を節約できる事や RAM へのコピー処理が必要ない為、即時起動が可能である事です。
Boot Copier と XIP それぞれの特徴をご理解頂いたうえで、どちらがお客様の仕様に合っているかご検討下さい。
XIP 構成の Run As / Debug As の手順は Boot Copier と異なっていますので、下記コンテンツを参照ください。
3. 各Boot Option の紹介
上記で説明した通り、Boot 方式と Boot Memory の組み合わせによって、Nios® II を Boot させる方法 (Boot Option) は、表2 の通り、9種類に分かれます。
Boot Memory の種類ごとに、コンテンツが用意されていますので、各種概要は 表2 のリンクからご参照ください。
表2:Boot Option の種類
サポートしている Boot Memory |
Boot Option の種類 |
Application コードの格納先 |
Application 実行時の場所 |
Boot Copier |
Embedded |
(MAX® 10 のみ) |
UFM から XIP で実行 |
UFM |
UFM (XIP) + On chip RAM / External RAM (alt_load() 使用時) |
alt_load() 関数 | |
UFM から Boot Copier で実行 |
UFM | On chip RAM / External RAM |
Memcpy-based boot copier |
||
EPCQ Flash |
EPCQ Flash から XIP で実行 |
EPCQ Flash |
EPCQ Flash (XIP) + On chip RAM / External RAM (alt_load() 使用時) |
alt_load() 関数 | User Guide |
EPCQ Flash から Boot Copier で実行 | EPCQ Flash | On chip RAM/ External RAM |
Memcpy-based boot copier |
||
QSPI Flash |
QSPI Flash から XIP で実行 |
QSPI Fash |
QSPI Flash (XIP) + On chip RAM / External RAM (alt_load() 使用時) |
alt_load() 関数 | User Guide |
QSPI Flash から Boot Copier で実行 | QSPI Fash | On chip RAM / External RAM |
Memcpy-based boot copier |
||
On chip RAM から XIP で実行 |
On chip RAM | On chip RAM | Boot Copier なし | User Guide | |
CFI Flash |
CFI Flash から XIP で実行 |
CFI Flash |
CFI Fash (XIP) + On chip RAM / External RAM (alt_load() 使用時) |
alt_load() 関数 | User Guide |
CFI Flash から Boot Copier で実行 |
CFI Flash | On chip RAM / Extenal RAM |
Memcpy-based boot copier |
Generic Serial Flash Interface Intel® FPGA IP を使用した Boot 方法は下記コンテンツをご参照ください。
・ Nios® II Boot Option ~ Generic Serial Flash Interface を使った Boot 方法 ~
下記参考資料の Nios® II Configuration and Booting Solutions 項目の最後のページに各種設定のサマリーが記載されていますので、そちらもご参照ください。
<参考資料>
おすすめページ
弊社では Nios® II に関する各種情報とまとめた「Nios® II まとめページ」をご用意しております。本記事以外にも有用な情報が満載ですのでこちらも併せてご確認ください。