インテルのみ表示可能 — GUID: jto1540272334080
Ixiasoft
インテルのみ表示可能 — GUID: jto1540272334080
Ixiasoft
5.4.2.5. アプリケーション・イメージのレイアウト
アプリケーション・イメージは、SDMファームウェアとコンフィグレーション・データで構成されます。コンフィグレーション・データは最大4つのセクションを含みます。SDMファームウェアにはこれらのセクションへのポインターが含まれています。次の表は、アプリケーション・イメージ内のセクション数とセクションポインターの位置を示しています。
デフォルトで、アドレスオフセット0x1FC0から始まるアプリケーション・イメージ * .rpdの最初の16バイトは0です。ただし、この16バイトを使用してバージョンIDを格納し、アプリケーション・イメージを識別することが可能です。このバージョンIDを提供することにより、フラッシュメモリーに格納されたイメージを後で確認することができるようになります。
オフセット | サイズ (バイト) | 説明 |
---|---|---|
0x1F00 | 4 | セクション数 |
… | ||
0x1F08 | 8 | 最初のセクションのアドレス |
0x1F10 | 8 | 2番目のセクションのアドレス |
0x1F18 | 8 | 3番目のセクションのアドレス |
0x1F20 | 8 | 4番目のセクションのアドレス |
… | ||
0x1FFC | 4 | 0x1000から0x1FFBのCRC32 |
セクションポインターは、フラッシュ内のFPGAイメージの実際の位置と一致する必要があります。この要件を満たすために、2つのオプションが使用可能です。
- クワッドSPIフラッシュメモリー内の実際の位置に一致するアプリケーション・イメージを生成することができます。システムによって更新のセットが異なる場合があるため、このオプションは実用的ではありません。
- アドレス0に位置していると仮定してアプリケーション・イメージを生成し、その後実際の位置に一致するようにポインターを更新することができます。
- INITIAL_ADDRESSをターゲットにするアプリケーション・イメージを作成します。
- アプリケーション・イメージのオフセット0xF100から32ビット値を読み取り、セクションの数を特定します。
- <s>= 1 to number_of_sectionsの場合
- section_pointer = 0xF100 + (s * 8) から64ビットのセクションポインターを読み取ります
- section_pointerからINITIAL_ADDRESSを引きます
- NEW_ADDRESSをsection_pointerに加えます
- 更新されたsection_pointerを格納します
- アドレス0x1000から0x1FFBのCRC32を再計算します。新しい値をオフセット0x1FFCに格納します。CRC32の値は、次の手順を使用してデータのコピー上で計算する必要があります。
- 各バイトのビットを入れ替え、ビットが逆の順に発生するようにしてCRCを計算します
- 計算したCRC32の値のバイトを入れ替え、逆の順序で表示されるようにします
- CRC32の値の各バイトのビットを入れ替えます
- CRC32の値をフラッシュに書き込みます
HPSを使用してRSUを管理している場合、U-BootクライアントとLIBRSUクライアントはどちらも上記の手順を実装し、アドレス0をターゲットにしているアプリケーション・イメージを実際の目的のスロットアドレスに再配置します。