Arria 10 SoCブート・ユーザーガイド

ID 683735
日付 10/30/2015
Public
ドキュメント目次

1.2.3.1.1. 一般的なブート・フロー(非セキュア)

非セキュアの第2ステージ・ブート・プロセスは通常、以下の図に示すフローに従います。

図 8. 一般的な第2ステージ・ブートローダのフロー(非セキュア)

下位レベルの初期化のステップには、L4ウォッチドッグ0タイマのリコンフィギュレーションとディセーブル、命令キャッシュと分岐予測の無効化、最下位メモリ領域へのオンチップRAMの再マッピング、およびデータ・エリアの設定が含まれます。

第2ステージ・ブートローダに進むと、L4ウォッチドッグ0タイマがアクティブとなります。第2ステージ・ブートローダは、このウォッチドッグ・タイマをディセーブル、リコンフィギュレーションすることや、あるいは変更させない状態にしておくことが可能です。リセット後にイネーブルされると、ウォッチドッグ・タイマをディセーブルすることは不可能で、停止あるいはリセットのみ選択可能です。

ブートROMコードによってこれより前にイネーブルされていた命令キャッシュと分岐予測を無効化する必要があります。第2ステージ・ブートローダがデータ・キャッシュをイネーブルし使用する場合、イネーブルを行う前に全レベルのデータ・キャッシュを初期化する必要があります。

例外ベクタが依然ブートROM内で例外ハンドラに向けられているため、第2ステージ・ブートローダは実行開始時に例外ベクタ・テーブルを再マップする必要があります。システム・インタコネクトをビット0から1に再マップするよう設定することで、オンチップRAMはメモリ・マップの最下位領域を反映します。この再マップ実行は、例外ベクタはブートローダ・イメージ内で例外ハンドラを使用します。

次の図は、再マップ実行前と実行後のメモリ・マップを表しています。

図 9. オンチップRAMの再マップ

第2ステージ・ブートローダは、すべてのHPSクロックをリコンフィギュレーションすることが可能です。クロックのリコンフィギュレーション中、ブートローダはクロックの変更に影響を受けるHPSのペリフェラルにリセットを挿入します。

HPSのI/Oアサインメントは、第2ステージ・ブートローダでIOCSRコンフィギュレーションの一部としてコンフィギュレーションされます。I/Oアサインメントを含むビットストリームは効率的に第2ステージ・ブートローダ内で初期化コードの一部としてデバイスへ送信されます。FPGAを介してFPGAファブリックとI/Oがコンフィギュレーションされていない場合、HPSはSDRAMにアクセスする必要があり、共有およびハード・メモリ・コントローラI/Oをコンフィギュレーションするために、フルあるいは早期I/Oリリース・コンフィギュレーション手法を使用するようHPSをプログラムすべきです。フルあるいは早期I/Oリリース・コンフィギュレーションについての詳細は、Arria 10 Hard Processor System Technical Reference Manualの付録「Booting and Configuration」の項「FPGA Configuration」を参照してください。

第2ステージ・ブートローダは、ミラー・イメージ内のブート・イメージ検証データとチェックサムを検査することで次のステージのブート・デバイス内で有効な次のステージのブート・イメージを検索します。検証後、第2ステージ・ブートローダは次のステージのブート・デバイスからSDRAMへ次のステージのブート・イメージ(OSあるいはアプリケーション・イメージ)をコピーします。

ソフトウェアがコントロールを次のステージのブート・ソフトウェアに渡す前、第2ステージ・ブートローダはシステム・マネージャのromcode_initswstateレジスタに有効な値(0x49535756)をライトすることができます。この値は、オンチップRAM内に有効なブート・イメージが存在することを表します。romcode_initiswlastldレジスタは、ブート・デバイスからブートROMによってロードされた最後の第2ステージ・ブートローダ・ソフトウェア・イメージを保持します。ウォーム・リセット発生時、BSELの値が最後のブートと等しい場合、ブートROMはromcode_initswlastldレジスタによって示されるイメージをロードします。