インテル® Agilex™ ハード・プロセッサー・システム (HPS) のリモート・システム・アップデート・ユーザーガイド

ID 683184
日付 7/10/2020
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

3.2.4. アプリケーション・イメージのレイアウト

アプリケーション・イメージは、SDMファームウェアおよびコンフィグレーション・データで構成されます。コンフィグレーション・データは最大4つのセクションを含みます。SDMファームウェアには、これらのセクションへのポインターが含まれています。次の表は、アプリケーション・イメージ内のセクション数およびセクションポインターの位置を示しています。

表 8.  アプリケーション・イメージのセクションポインター
オフセット サイズ (バイト) 説明
0x1F00 4 セクション数
   
0x1F08 8 最初のセクションのアドレス
0x1F10 8 2番目のセクションのアドレス
0x1F18 8 3番目のセクションのアドレス
0x1F20 8 4番目のセクションのアドレス
   
0x1FFC 4 0x1000から0x1FFBのCRC32

セクションポインターは、フラッシュ内のFPGAイメージの実際の位置と一致する必要があります。この要件を満たすには、2つのオプションが使用可能です。

  • クアッドSPIフラッシュメモリー内の実際の場所に一致するアプリケーション・イメージを生成することができます。システムによって更新のセットが異なる場合があるため、このオプションは実用的ではありません。その結果、新しいアプリケーション・イメージを格納するのに適したスロットは異なる場合があります。
  • アドレス0に位置していると仮定してアプリケーション・イメージを生成し、その後実際の位置に一致するようにポインターを更新することができます。

HPSを使用してRSUを管理する場合、U-BootクライアントおよびLIBRSUクライアントの両方は以下の手順を実装し、アドレス0をターゲットにしているアプリケーション・イメージを実際の送信先スロットアドレスに再配置します。

INITIAL_ADDRESS 用に作成されたアプリケーション・イメージから NEW_ADDRESS にポインターを更新する手順は次のとおりです。
  1. INITIAL_ADDRESS をターゲットにするアプリケーション・イメージを作成します。
  2. アプリケーション・イメージのオフセット0xF100から32ビット値を読み出し、セクションの数を特定します。
  3. <s>= 1 to number_of_sections の場合、
    1. section_pointer = 0xF100 + (s * 8) から64ビットのセクションポインターを読み出します。
    2. section_pointer から INITIAL_ADDRESS を引きます。
    3. NEW_ADDRESSsection_pointer に加えます。
    4. 更新された section_pointer を格納します。
  4. アドレス0x1000から0x1FFBのCRC32を再計算します。新しい値をオフセット0x1FFCに格納します。CRC32の値は、次の手順を使用してデータのコピー上で計算する必要があります。
    1. 各バイトのビットを入れ替え、ビットが逆の順に発生するようにしてCRCを計算します。
    2. 計算したCRC32の値のバイトを入れ替え、逆の順序で表示されるようにします。
    3. CRC32の値の各バイトのビットを入れ替えます。
    4. CRC32の値をフラッシュに書き込みます。
注: ファクトリー・アップデート・イメージの形式は異なります。ポインター・アップデートには異なる手順が必要です。HPSを使用してRSUを管理する場合、U-BootクライアントおよびLIBRSUクライアントの両方が、ファクトリー・アップデート・イメージを再配置するためにこの手順を実装します。