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

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

1.2.2. 第1ステージ:ブートROM

ブートROMコードのサイズは64 kBで、アドレス0xFFFD0000から0xFFFDFFFFのオンチップROMに位置しています。ブートROMコードの役割は、ブート・ソースの決定、リセット後のHPSの初期化、プリローダへのジャンプです。第2ステージ・ブートローダ・イメージが既にフラッシュ・メモリからオンチップRAMへロードされている場合、ブートROMはオンチップRAMロケーションへジャンプします。ブートROMはHPSを初期化する際、以下の動作を実行します。

  • CPU0のNEONベクタ・ユニット、命令キャッシュ、分岐予測、浮動小数点をイネーブルします。
  • level 4(L4)watchdog 0タイマを設定します。
  • Boot Select(BSEL)設置をもとに専用ピンをコンフィギュレーションします。
  • フラッシュ・コントローラをデフォルト設定に初期化します。
フラッシュ・メモリからボンディングを行う際、ブートROMコードはオンチップRAMの上部32 Bをデータ・ワークスペースとして使用します。このエリアはリセット後、ブートROMコードが第2ステージ・ブートローダにソフトウェア・コントロールを移譲するまで、ブートROMコード用に予約されます。第2ステージ・ブートローダの最大サイズは、認証化を行う場合であれば208 KBで、認証化を行わない場合224 KBとなります。RAMからのウォーム・ブートあるいはFPGAからのブートの場合、ブートROMコードはオンチップRAMの上部32 KBを保存しません。また、ユーザはブートROMによって上書きされることなく、このエリアにユーザ・データを配置することができます。
注: ブートROMは、使用するオンチップRAMの32 KB内の部分のみを初期化します。オンチップRAM内で第2ステージ・ブートローダがECCを必要とする場合は、コールド・リセットですべてのRAMをクリアするセキュリティ・ヒューズをイネーブルします。セキュリティ・ヒューズの詳細については、Arria 10 Hard Processor System Technical Reference ManualSoC Securityの章を参照してください。

ブート・プロセスは、CPU0がリセット状態を終了すると開始します。ブートROMコードはCPU0でのみ実行されます。CPU1はユーザ・ソフトウェアによってリリースされるまでリセット状態を維持します。CPU0がリセットを完了すると、リセット例外アドレスでコードの実行を開始します。

ブートROM実行中、クロック・コントロール・ヒューズの情報はクロック・マネージャに、そしてメモリ・コントロール・ヒューズの情報はリセット・マネージャにそれぞれ自動で送信され、その他のヒューズ機能(認証、暗号化、プライベートおよびパブリック・キー・ソース、ハッシュ関数) は、ブート・コードがリードできるようにメモリ・マップされた箇所に格納されます。通常の動作では、ブートROMはリセット例外アドレスにマップされるため、コードはブートROM内で実行を開始します。

CPU0がブートROMコードを完了し、ユーザ・ソフトウェアの実行を開始する際、ブートROMアクセスはディセーブルされます。CPU0で実行するユーザ・ソフトウェアは、ユーザ・ソフトウェア例外ベクタを0x0(これは以前ブートROM例外ベクタにマップされたものです)にマッピングする必要があり、また必要であればCPU1をリセットからリリースします。CPU1がリセットからリリースされる際、CPU1はブートROMではなくユーザ・ソフトウェア例外を実行します。