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

ID 683184
日付 7/10/2020
Public

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

ドキュメント目次

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

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

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

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

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

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

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

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

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

クライアントがアプリケーション・イメージをフラッシュに書き込むとき、最初の署名ブロックのメイン・イメージ・ポインター内のポインターが、フラッシュ内の正しい場所を指すように更新されていることを確認します。 HPSを使用してRSUを管理する場合、U-BootクライアントとLIBRSUクライアントの両方が必要なポインター更新を実装します。 詳細については、アプリケーション・イメージのレイアウトのセクションを参照してください。