インテル® Stratix® 10コンフィグレーション・ユーザーガイド

ID 683762
日付 12/16/2019
Public
ドキュメント目次

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

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

デフォルトで、アドレスオフセット0x1FC0から始まるアプリケーション・イメージ * .rpdの最初の16バイトは0です。ただし、この16バイトを使用してバージョンIDを格納し、アプリケーション・イメージを識別することが可能です。このバージョンIDを提供することにより、フラッシュメモリーに格納されたイメージを後で確認することができるようになります。

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

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

  • クワッドSPIフラッシュメモリー内の実際の位置に一致するアプリケーション・イメージを生成することができます。システムによって更新のセットが異なる場合があるため、このオプションは実用的ではありません。
  • アドレス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クライアントはどちらも上記の手順を実装し、アドレス0をターゲットにしているアプリケーション・イメージを実際の目的のスロットアドレスに再配置します。

注: ファクトリー・アップデート・イメージの形式は異なります。ファクトリー・アップデート・イメージの正しい生成手順に関しては、ファクトリー・アップデート・イメージの生成を参照してください。