マイクロセミLGOO

Microchip UG0881 PolarFire SoC FPGA の起動と設定

Microchip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-製品

保証

Microsemi は、ここに含まれる情報、または特定の目的に対する製品およびサービスの適合性に関して、いかなる保証、表明、または保証も行わず、Microsemi は、製品または回路のアプリケーションまたは使用から生じるいかなる責任も負いません。 ここに記載されている製品および Microsemi が販売するその他の製品は限定的なテストを受けており、ミッション クリティカルな機器またはアプリケーションと組み合わせて使用​​することはできません。 性能仕様は信頼できると考えられていますが、検証されていません。購入者は、製品のすべての性能およびその他のテストを、単独で、または最終製品と一緒に、または最終製品に取り付けて実施し、完了する必要があります。 購入者は、Microsemi が提供するデータおよび性能仕様またはパラメータに依存してはなりません。 製品の適合性を独自に判断し、同じことをテストおよび検証することは、購入者の責任です。 Microsemi が提供する情報は、「現状のまま」、すべての欠陥とともに提供され、そのような情報に関連するすべてのリスクは完全に購入者にあります。 Microsemi は、明示的または黙示的に、いかなる当事者に対しても、そのような情報自体またはそのような情報によって記述されたものに関して、特許権、ライセンス、またはその他の知的財産権を付与しません。 この文書に記載されている情報は Microsemi の所有物であり、Microsemi は、この文書の情報または製品やサービスを予告なしにいつでも変更する権利を留保します。

Microsemiについて

Microchip Technology Inc.(Nasdaq:MCHP)の完全子会社であるMicrosemiは、航空宇宙および防衛、通信、データセンター、および産業市場向けの半導体およびシステムソリューションの包括的なポートフォリオを提供しています。 製品には、高性能で耐放射線性のあるアナログミックスドシグナル集積回路、FPGA、SoC、およびASICが含まれます。 電力管理製品; タイミングおよび同期デバイスと正確な時間ソリューション。時間の世界標準を設定します。 音声処理装置; RFソリューション; ディスクリートコンポーネント; エンタープライズストレージおよび通信ソリューション、セキュリティテクノロジー、スケーラブルなアンチamper製品; イーサネットソリューション; Power-over-EthernetICとミッドスパン。 カスタム設計機能とサービスだけでなく。 詳細については、 www.microsemi.com.

起動と構成

PolarFire SoC FPGA は、高度なパワーアップ回路を使用して、パワーアップおよびリセット時の信頼性の高いパワーオンを保証します。 電源投入およびリセット時に、PolarFire SoC FPGA の起動シーケンスは、パワーオン リセット (POR)、デバイス ブート、デザインの初期化、マイクロコントローラ サブシステム (MSS) プリブート、および MSS ユーザー ブートの後に続きます。 このドキュメントでは、MSS プリブートと MSS ユーザー ブートについて説明します。 POR、デバイス ブート、およびデザインの初期化の詳細については、UG0890: PolarFire SoC FPGA Power-Up and Resets User Guide を参照してください。
MSS 機能の詳細については、UG0880: PolarFire SoC MSS ユーザー ガイドを参照してください。

起動シーケンス
起動シーケンスは、PolarFire SoC FPGA の電源投入またはリセット時に開始されます。 プロセッサがアプリケーション プログラムを実行する準備ができたときに終了します。 このブート シーケンスは、数秒にわたって実行されます。tagプログラムの実行を開始する前に。
ハードウェアのパワーオン リセット、ペリフェラルの初期化、メモリの初期化、ユーザー定義アプリケーションの不揮発性メモリから揮発性メモリへの実行のためのロードなど、ブートアップ プロセス中に一連の操作が実行されます。

次の図は、起動シーケンスのさまざまなフェーズを示しています。

図1  起動シーケンスMicrochip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 1

MSS プリブート

デザインの初期化が正常に完了すると、MSS プリブートが実行を開始します。 すべての通常の起動手順が完了すると、MSS はリセットから解放されます。 システム コントローラは、デバイスのプログラミング、初期化、および構成を管理します。 プログラムされたデバイスがシステム コントローラのサスペンド モードに設定されている場合、MSS プリブートは発生しません。
初期化の MSS プリブート フェーズは、システム コントローラー ファームウェアによって調整されますが、MSS コア コンプレックスの E51 を使用して、プリブート シーケンスの特定の部分を実行する場合があります。
次のイベントは、MSS プリブート中に発生します。tage:

  • MSS 組み込み不揮発性メモリ (eNVM) の電源投入
  • MSS Core Complex L2 キャッシュに関連する冗長修復の初期化
  • ユーザー ブート コードの認証 (ユーザー セキュア ブート オプションが有効な場合)
  • 運用 MSS をユーザー ブート コードに引き渡す

MSS コア コンプレックスは、1 つのモードのいずれかで起動できます。 次の表に、sNVM に設定およびプログラムできる MSS プリブート オプションを示します。 ブート モードは、ユーザー パラメーター U_MSS_BOOTMODE[0:3] によって定義されます。 追加のブート コンフィギュレーション データはモードに依存し、ユーザー パラメーター U_MSS_BOOTCFG によって定義されます (4 ページの表 5 および 6 ページの表 XNUMX を参照)。

表1• MSS コア コンプレックス ブート モード

U_MSS_ブートモード[1:0] モード 説明
0 アイドルブート MSS が構成されていない場合、MSS コア コンプレックスはブート ROM から起動します
1 非セキュア ブート MSS コア コンプレックスは、U_MSS_BOOTADDR によって定義されたアドレスから直接起動します。
2 ユーザーセキュアブート MSS コア コンプレックスは sNVM から起動します
3 工場セキュアブート ファクトリ セキュア ブート プロトコルを使用した MSS コア コンプレックス ブート

ブート オプションは、Libero デザイン フローの一部として選択されます。 モードの変更は、新しい FPGA プログラミングの生成によってのみ実現できます。 file.

図 2 • MSS プリブート フロー Microchip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 2

アイドルブート

MSS が構成されていない場合 (例:ample、空のデバイス)、MSS コア コンプレックスは、デバッガーがターゲットに接続するまで、すべてのプロセッサを無限ループに保持するブート ROM プログラムを実行します。 ブート ベクター レジスタは、デバイスがリセットされるか、新しいブート モード コンフィギュレーションがプログラムされるまで、その値を維持します。 構成されたデバイスの場合、このモードは
Libero コンフィギュレーターの U_MSS_BOOTMODE=0 ブート オプション。

注記: このモードでは、U_MSS_BOOTCFG は使用されません。

次の図は、アイドル ブート フローを示しています。
図 3 • アイドル ブート フローMicrochip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 3

非セキュア ブート

このモードでは、MSS コア コンプレックスは指定された eNVM アドレスから認証なしで実行されます。 最速の起動オプションを提供しますが、コード イメージの認証はありません。 アドレスは、Libero Configurator で U_MSS_BOOTADDR を設定することで指定できます。 このモードは、FIC を介して任意の FPGA ファブリック メモリ リソースから起動するためにも使用できます。 このモードは、
U_MSS_BOOTMODE=1 起動オプション。
MSS コア コンプレックスは、U_MSS_BOOTCFG によって定義されたブート ベクターを使用してリセットから解放されます (次の表を参照)。

表2• 非セキュア ブート モードでの U_MSS_BOOTCFG の使用法 1

オフセット (バイト)  

サイズ(バイト)

 

名前

 

説明

0 4 ブートベック0 E51 のブート ベクター
4 4 ブートベック1 U540 のブート ベクター
8 4 ブートベック2 U541 のブート ベクター
16 4 ブートベック3 U542 のブート ベクター
20 4 ブートベック4 U543 のブート ベクター

次の図は、非セキュア ブート フローを示しています。
図 4 • 非セキュア ブート フローMicrochip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 4

ユーザーセキュアブート
このモードでは、ユーザーは独自のカスタム セキュア ブートを実装でき、ユーザーのセキュア ブート コードは sNVM に配置されます。 sNVM は、組み込みの Physically Unclonable Function (PUF) によって保護できる 56 KB の不揮発性メモリです。 ROM としてマークされた sNVM ページは不変であるため、このブート方法は安全であると見なされます。 電源投入時に、システム コントローラーはユーザー セキュア ブート コードを sNVM から E51 Monitor コアの Data Tightly Integrated Memory (DTIM) にコピーします。 E51 は、ユーザー セキュア ブート コードの実行を開始します。
ユーザー セキュア ブート コードのサイズが DTIM のサイズより大きい場合、ユーザーはブート コードを XNUMX つに分割する必要があります。tagエス。 sNVM には、次の s が含まれる場合があります。tag次のブートの認証を実行するユーザー ブート シーケンスの etage ユーザー認証/復号化アルゴリズムを使用します。
認証または暗号化されたページが使用されている場合は、同じ USK キー (つまり、
U_MSS_BOOT_SNVM_USK) は、すべての認証/暗号化されたページに使用する必要があります。
認証が失敗した場合、MSS コア コンプレックスはリセットされ、BOOT_FAIL tamper フラグを立てることができます。 このモードは、U_MSS_BOOTMODE=2 ブート オプションを使用して実装されます。

表3•  U_MSS_BOOTCFG ユーザー セキュア ブートでの使用

オフセット (バイト) サイズ(バイト) 名前 説明
0 1 U_MSS_BOOT_SNVM_PAGE SNVM の開始ページ
1 3 予約済み アライメント用
4 12 U_MSS_BOOT_SNVM_USK 認証/暗号化されたページの場合

次の図は、ユーザー セキュア ブート フローを示しています。
図 5 • ユーザー セキュア ブート フローMicrochip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 5

ファクトリ セキュア ブート
このモードでは、システム コントローラーが eNVM からセキュア ブート イメージ証明書 (SBIC) を読み取り、SBIC を検証します。 検証が成功すると、システム コントローラーは工場出荷時のセキュア ブート コードをプライベートなセキュア メモリ領域からコピーし、E51 モニター コアの DTIM にロードします。 デフォルトのセキュア ブートは、eNVM に保存されている SBIC を使用して eNVM イメージの署名チェックを実行します。 エラーが報告されない場合、リセットは MSS コア コンプレックスにリリースされます。 エラーが報告されると、MSS コア コンプレックスがリセットされ、BOOT_FAIL tamper フラグが立てられます。 次に、システム コントローラがampユーザー アクションのために FPGA ファブリックに信号をアサートする er フラグ。 このモードは、U_MSS_BOOTMODE=3 ブート オプションを使用して実装されます。

SBIC には、保護されたバイナリ BLOB のアドレス、サイズ、ハッシュ、楕円曲線デジタル署名アルゴリズム (ECDSA) 署名が含まれています。 ECDSA は、楕円曲線暗号を使用するデジタル署名アルゴリズムの変形を提供します。 また、各ハードウェアのリセット ベクターも含まれています。
システム内のスレッド/コア/プロセッサ コア (Hart)。

表4•  セキュア ブート イメージ証明書 (SBIC)

オフセット サイズ(バイト) 価値 説明
0 4 イメージアドレス MSS メモリ マップ内の UBL のアドレス
4 4 イメージレン UBL のサイズ (バイト単位)
8 4 ブートベック0 E51 の UBL のブート ベクター
12 4 ブートベック1 U540 の UBL のブート ベクター
16 4 ブートベック2 U541 の UBL のブート ベクター
20 4 ブートベック3 U542 の UBL のブート ベクター
24 4 ブートベック4 U543 の UBL のブート ベクター
28 1 オプション[7:0] SBIC オプション
28 3 予約済み  
32 8 バージョン SBIC/画像版
40 16 DSSN オプションの DSN バインディング
56 48 H UBL イメージ SHA-384 ハッシュ
104 104 コードジグ DER でエンコードされた ECDSA 署名
合計 208 バイト  

DSSN
DSN フィールドがゼロ以外の場合、デバイス自体のシリアル番号と比較されます。 比較が失敗した場合、boot_fail tamper フラグが設定され、認証が中止されます。

バージョン
U_MSS_REVOCATION_ENABLE によって SBIC 失効が有効になっている場合、VERSION の値が失効しきい値以上でない限り、SBIC は拒否されます。

SBIC失効オプション
SBIC 取り消しが U_MSS_REVOCATION_ENABLE によって有効にされ、OPTIONS[0] が「1」である場合、VERSION よりも小さいすべての SBIC バージョンは、SBIC の認証が完了すると取り消されます。 失効しきい値は、OPTIONS[0] = '1' およびより高い VERSION フィールドを持つ将来の SBIC によって再び増加するまで、新しい値のままです。 失効しきい値は、このメカニズムを使用してのみインクリメントでき、ビットストリームによってのみリセットできます。
失効しきい値が動的に更新される場合、パスコードに使用される冗長ストレージ スキームを使用してしきい値が格納されるため、デバイスの起動中の電源障害によって後続のデバイスの起動が失敗することはありません。 失効しきい値の更新が失敗した場合、しきい値が新しい値または以前の値のいずれかであることが保証されます。

表5• ファクトリ ブート ローダー モードでの U_MSS_BOOTCFG の使用法

オフセット (バイト)  

サイズ(バイト)

 

名前

 

説明

0 4 U_MSS_SBIC_ADDR MSS アドレス空間における SBIC のアドレス
4 4 U_MSS_REVOCATION_ENABLE ゼロ以外の場合は SBIC 失効を有効にする

次の図は、工場出荷時のセキュア ブート フローを示しています。
図 6 • ファクトリ セキュア ブート フローMicrochip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 6 Microchip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 7

MSS ユーザー ブート 

システム コントローラーから MSS コア コンプレックスに制御が渡されると、MSS ユーザー ブートが実行されます。 MSS プリブートが成功すると、システム コントローラは MSS コア コンプレックスへのリセットを解放します。 MSS は、次のいずれかの方法で起動できます。

  • ベアメタル アプリケーション
  • Linux アプリケーション
  • AMP 応用

ベアメタル アプリケーション

PolarFire SoC のベア メタル アプリケーションは、SoftConsole ツールを使用して開発できます。 このツールは出力を提供します fileLibero フローでプログラミング ビットストリームに含めるために使用できる .hex 形式の s file. 同じツールを使用して、J を使用してベア メタル アプリケーションをデバッグできます。TAG
インタフェース。
次の図は、E51 Monitor コアを含む XNUMX つのハート (コア) を持つ SoftConsole Bare Metal アプリケーションを示しています。

図 7 • SoftConsole プロジェクト Microchip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 8

Linux アプリケーション

このセクションでは、すべての U54 コアで実行されている Linux のブート シーケンスについて説明します。
一般的なブート プロセスは、XNUMX つのtages。 最初のtage ブート ローダー (FSBL) は、オンチップ ブート フラッシュ (eNVM) から実行されます。 FSBL は XNUMX 番目の s をロードします。tagブート デバイスから外部 RAM またはキャッシュへのブート ローダー (SSBL)。 ブート デバイスは、eNVM または組み込みメモリ マイクロコントローラー (eMMC) または外部 SPI フラッシュにすることができます。 SSBL は Linux オペレーティング システムをブート デバイスから外部 RAM にロードします。 XNUMX番目のsでtage、Linuxは外部RAMから実行されます。

次の図は、Linux のブート プロセス フローを示しています。
図 8 • 一般的な Linux ブート プロセス フローMicrochip-UG0881-PolarFire-SoC-FPGA-Booting-And-Configuration-図 9

FSBL、デバイス ツリー、Linux、および YOCTO ビルドの詳細、Linux のビルドおよび構成方法は、このドキュメントの今後のリリースで提供される予定です。

AMP 応用
Libero MSS Configurator の詳細な説明と、SoftConsole を使用してマルチプロセッサ アプリケーションをデバッグする方法は、このドキュメントの今後のリリースで提供される予定です。

起動のさまざまなソース
このドキュメントの将来のバージョンで更新されます。

ブート構成
このドキュメントの将来のバージョンで更新されます。

頭字語

このドキュメントでは、次の頭字語が使用されています。

表1•  頭字語一覧

頭字語の拡張

  • AMP 非対称マルチプロセッシング
  • DTIM データ密に統合されたメモリ (SRAM とも呼ばれます)
  • ECDSA 楕円曲線デジタル署名アルゴリズム
  • ENVM 組み込み不揮発性メモリ
  • FSBL 最初のStagブートローダー
  • ハート ハードウェア スレッド/コア/プロセッサ コア
  • 原稿 マイクロプロセッサ サブシステム
  • ポルトガル パワーオンリセット
  • PUF 物理的にクローンできない機能
  • ロム 読み取り専用メモリ
  • SCB システム コントローラ ブリッジ
  • sNVM 安全な不揮発性メモリ

改訂履歴

改訂履歴には、ドキュメントに実装された変更が記載されています。 変更は、現在の出版物から、改訂ごとにリストされています。

改訂 2.0
以下は、この改訂で行われた変更の概要です。

  • Factory Secure Boot に関する情報が更新されました。
  • ベアメタルアプリの情報を更新しました。

改訂 1.0
このドキュメントの最初の発行。

マイクロセミ本社
One Enterprise、Aliso Viejo、
カリフォルニア 92656 米国
米国内: +1 800-713-4113
米国外: +1 949-380-6100
販売: +1 949-380-6136
ファックス: +1 949-215-4996
メールアドレス: sales.support@microsemi.com
www.microsemi.com

©2020Microsemi、Microchip TechnologyInc。の完全所有子会社。無断転載を禁じます。 MicrosemiおよびMicrosemiのロゴは、MicrosemiCorporationの登録商標です。 その他のすべての商標およびサービスマークは、それぞれの所有者に帰属します。

ドキュメント / リソース

Microchip UG0881 PolarFire SoC FPGA の起動と設定 [pdf] ユーザーガイド
UG0881 PolarFire SoC FPGA の起動と構成、UG0881、PolarFire SoC FPGA の起動と構成、起動と構成

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *