セカンダリ ブート プロセスとデバイスの選択 - 2023.2 日本語

Versal アダプティブ SoC システム ソフトウェア開発者向けガイド (UG1304)

Document ID
UG1304
Release Date
2023-10-18
Version
2023.2 日本語

ブート プロセスには、オプションでセカンダリ ブート デバイスを含めることもできます。この場合、プライマリ ブート デバイスからロードした PLM およびその他の初期イメージを使用してブート プロセスが開始します。次に、残りのイメージが PLM によって設定されたセカンダリ ブート デバイスからロードされます。セカンダリ ブート デバイスには PDI が格納され、この中にはセカンダリ ブート デバイスからロードする必要のあるイメージとコンフィギュレーション データが含まれます。このセカンダリ ブート デバイスには、PLM やブート ヘッダーは含まれません。POR/システム リセットが実行されると、ブート プロセスはプライマリ ブートから開始します。このプロセスは、プライマリ ブート プロセスと同じです。

BootROM
  • ブート モード レジスタを読み出し、プライマリ ブート デバイスを決定する
  • 指定されたプライマリ ブート デバイスから PPU RAM に PLM をロードする
  • PPU のリセットを解除して PLM を実行する
    注記: セカンダリ ブート プロセスは、PDI メタ ヘッダーのフィールドにセカンダリ ブート デバイスが指定されている場合に実行されます。
PLM
  • PDI メタ ヘッダーのフィールドを読み出し、指定されたセカンダリ ブートデバイスを決定する
  • 指定されたセカンダリ ブート デバイスを使用して、PDI コンテンツの残りをロードする

セカンダリ ブート デバイスのオプションを次に示します。

  • eMMC0、eMMC1
    注記: コントローラーは、eMMC0 と eMMC1 の 2 つがあります。各コントローラーに 2 つの異なる MIO セットを割り当てるか、1 つの EMIO を割り当てることができます。eMMC0 および eMMC1 上でセカンダリ ブートをサポートするには、これらのデバイス用にコンフィギュレーションされた MIO が、ほかのブート デバイスの MIO ピンと競合しないようにする必要があります。
  • イーサネット
    注記: イーサネットがセカンダリ ブート デバイスとして使用される場合、プライマリ ブート デバイスで Versal デバイスが起動され、次に U-Boot が起動されます。その後、U-Boot がイーサネットを使用してブート プロセスを完了できます。
  • OSPI
  • PCIe® インターフェイス
    1. まず、指定されたプライマリ ブート デバイスから PPU RAM に PLM がロードされます。
    2. 次に、PLM が実行されて PCIe Endpoint (EP) モードの CCIX (Cache Coherent Interconnect for Accelerators) PCIe Gen4 モジュール (CPM) ブロックを初期化します。
    3. 最後に、PCIe ホストがセカンダリ ブート デバイスとして、残りのイメージをロードします。
      注記: PCIe インターフェイスはセカンダリ ブート デバイスとしてのみサポートされます。
  • QSPI
  • SD0、SD1
  • USB: セカンダリ PDI は dfu_util を使用して固定 DDR メモリ アドレス (0x50000000) にダウンロードされます。dfu_util は、Windows および Linux 用に提供されているオープンソース ユーティリティです。その後、PLM が PDI を処理します。

    USB をセカンダリ ブート モードとして示すには、BIF ファイルで USB を boot_device 属性として指定します。

  • SelectMAP (SMAP): SelectMAP をセカンダリ ブート モードにするには、BIF ファイルで smap をブート デバイス属性として指定します。
  • Image Store: BIF ファイルで imagestore 属性と PDI ID を指定することで、セカンダリ ブート デバイスのソースとして使用できます。

セカンダリ ブートの組み合わせ例

  • SD/eMMC 以外の任意のプライマリ ブートと、セカンダリ ブート モードの SD/eMMC
  • eMMC ブート パーティション 1/2 のプライマリ ブートと、eMMC ユーザー領域のセカンダリ ブート