Intel Agilex® 7コンフィグレーションのユーザーガイド

ID 683673
日付 4/28/2023
Public
ドキュメント目次

5.4.2.4. アプリケーション・イメージのリストの変更

SDMは、コンフィグレーション・ポインター・ブロックを使用して、アプリケーション・イメージの優先度を決定します。

ポインター・ブロックは、クアッドSPIフラッシュメモリー の次の特性を考慮して動作します。
  • セクター消去では、すべてのセクターフラッシュビットが1になります。
  • プログラム操作では、1を0にしか変換できません。
ポインター・ブロックには、次の意味を持つ値の配列が含まれています。
  • すべて1–エントリーは未使用です。クライアントは、このエントリーへのポインタを書き込むことができます。これは、ポインターブロックでクワッドSPI消去操作が発生した後の状態です。
  • すべて0 : エントリーは以前に使用され、その後キャンセルされました。
  • 1と0の組み合わせ – アプリケーション・イメージへの有効なポインター。

コンフィグレーション・ポインター・ブロックが消去されると、すべてのエントリーが未使用としてマークされます。アプリケーション・イメージをリストに追加するために、クライアントは最初の未使用の場所を見つけて、アプリケーション・イメージのアドレスをこの場所に書き込みます。リストからアプリケーション・イメージを削除するために、クライアントはポインター・ブロックリストでアプリケーション・イメージ・アドレスを見つけ、このアドレスにすべて0を書き込みます。

コンフィグレーション・ポインター・ブロックが新しいアプリケーション・イメージ用のスペースを使い果たした場合、クライアントは次のアクションを実行してポインター・ブロックを圧縮します。

  1. コンフィグレーションからすべての有効なエントリーを読み出します。
  2. ポインター・ブロックを消去します。
  3. 以前に有効だったすべてのエントリーを追加します。
  4. 新しいイメージのアドレスを追加します。

HPSを使用してRSUを管理する場合、U-BootクライアントとLIBRSUクライアントの両方がブロック圧縮を実装します。 FPGAロジックからRSUを駆動するデザインの場合、 Nios® II コード、スクリプト言語、またはステートマシンを含むポインター・ブロック圧縮をさまざまな方法で実装できます。

ポインター・ブロックには最大508の使用可能なエントリーがあるため、ポインター・ブロックの圧縮は頻繁には発生しません。

プライマリー(CPB0)とバックアップ(CPB1)の2つのコンフィギュレーション・ポインター・ブロックがあります。 2つのブロックを使用すると、アプリケーション・イメージの1つを消去した直後に電源障害が発生した場合に、アプリケーション・イメージのリストを保護できます。 CPBが消去されて再作成されると、ヘッダーが最後に書き込まれます。停電が発生した場合の偶発的な使用を防ぐために、CPBヘッダーは使用前にチェックされます。詳細については、コンフィグレーション・ポインター・ブロックのレイアウト トピックを参照してください。圧縮する場合、クライアントはプライマリーCPBを完全に圧縮(消去および書き換え)します。プライマリCPBが有効になったら、セカンダリーCPBを安全に変更できます。書き換える場合、CPBの先頭にあるマジックナンバーは、CPBに書き込まれる最後の単語です。 (この番号を書き込んだ後は、イメージ・ポインター・スロットの値のみを変更できます。)

クライアントがアプリケーション・イメージをフラッシュに書き込むとき、最初の署名ブロックのメイン・イメージ・ポインター内のポインターが、フラッシュ内の正しい場所を指すように更新されていることを確認します。 HPSを使用してRSUを管理する場合、U-BootクライアントとLIBRSUクライアントの両方が必要なポインター更新を実装します。
注: CPB圧縮を正常に実行するには、HPSソフトウェア(U-BootまたはLinux)で32 KB 以下のQSPI消去の粒度が次のようにコンフィグレーションされている必要があります。より粗い消去粒度でコンフィグレーションされている場合(たとえば64 KB )、操作は失敗します。サポートされているすべてのフラッシュデバイスは、 4 KB32 KB、 と 64 KBの消去粒度を提供し、現在のHPSソフトウェアのデフォルトは 4 KBです。