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

ID 683184
日付 11/10/2021
Public

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

ドキュメント目次

7.4.5.4. 破損したサブ・パーティション表

この例では、U-Bootコマンドを使用して、サブ・パーティション表の破損を検出および回復する方法を示します。
注: この例で一覧表示されているコマンドは、初期フラッシュイメージ (JIC) が他の変更なしでフラッシュに書き込まれたことを前提としています。
  1. ボードの電源を入れ、U-Bootプロンプトまで起動し、RSUステータスを照会します。
    SOCFPGA # rsu status_log
    Current Image   : 0x01000000
    Last Fail Image : 0x00000000
    State           : 0x00000000
    Version         : 0x00000202
    Error location  : 0x00000000
    Error details   : 0x00000000
    Retry counter   : 0x00000000

    最も優先度の高いイメージが実行されており、エラーはありません。

  2. その位置でフラッシュを消去して、SPT0ファイルを破損します。
    SOCFPGA # sf probe 
    SF: Detected mt25qu02g with page size 256 Bytes, erase size 4 KiB, total 256 MiB
    SOCFPGA # sf erase 0x0910000 0x1000
    SF: 4096 bytes @ 0x910000 Erased: OK
  3. ボードの電源を入れ直し、U-Bootプロンプトまで停止して、RSUステータスを照会します。
    SOCFPGA # rsu status_log
    SF: Detected mt25qu02g with page size 256 Bytes, erase size 4 KiB, total 256 MiB
    Bad SPT0 magic number 0xFFFFFFFF
    Restoring SPT0
    Current Image   : 0x01000000
    Last Fail Image : 0x00000000
    State           : 0x00000000
    Version         : 0x00000202
    Error location  : 0x00000000
    Error details   : 0x00000000
    Retry counter   : 0x00000000

    決定ファームウェアは、最も優先度の高いイメージをロードし、SPTを確認しません。rsu_init 関数は、最初のRSU U-Bootコマンドが実行されたときに呼び出され、SPT0が破損していることを検出し、SPT1から回復します。

  4. バックアップの目的で、現在使用されているSPTをファイルに保存します。
    SOCFPGA # rsu save_spt ${loadaddr}
    4100 bytes SPT data saved
    SOCFPGA # fatwrite mmc 0:1 ${loadaddr} spt-backup.bin ${filesize}
    4100 bytes written
  5. 両方のSPTの位置でフラッシュを消去することにより、両方のCPBを破損します。
    SOCFPGA # sf probe
    SF: Detected mt25qu02g with page size 256 Bytes, erase size 4 KiB, total 256 MiB
    SOCFPGA # sf erase 0x910000 0x1000
    SF: 4096 bytes @ 0x910000 Erased: OK
    SOCFPGA # sf erase 0x918000 0x1000
    SF: 4096 bytes @ 0x918000 Erased: OK
  6. ボードの電源を入れ直し、U-Bootプロンプトまで停止して、RSUステータスを照会します。
    SOCFPGA # rsu status_log
    Bad SPT1 magic number 0xFFFFFFFF
    Bad SPT0 magic number 0xFFFFFFFF
    no valid SPT0 and SPT1 found
    Current Image   : 0x01000000
    Last Fail Image : 0x00000000
    State           : 0x00000000
    Version         : 0x00000202
    Error location  : 0x00000000
    Error details   : 0x00000000
    Retry counter   : 0x00000000

    決定ファームウェアは、最も優先度の高いイメージをロードし、SPTを確認しません。rsu_init 関数は、最初のRSU U-Bootコマンドが実行され、両方のSPTが破損していることを検出したときに呼び出されます。

  7. 有効なSPTを必要とするRSUコマンドの実行を試すと、失敗します。
    SOCFPGA # rsu slot_count
    corrupted SPT --run rsu restore_spt <address> first
  8. 作成したバックアップ・コピーからSPTを復元します。
    SOCFPGA # fatload mmc 0:1 ${loadaddr} spt-backup.bin
    4100 bytes read in 2 ms (2 MiB/s)
    SOCFPGA # rsu restore_spt ${loadaddr}
  9. ボードの電源を入れ直し、最も優先度の高いイメージをロードすると、すべての機能が使用可能になります。この電源の入れ直しは、U-Bootで rsu_init 関数を呼び出すために必要です。これは、最初のRSUコマンドが呼び出されたときに1回だけ呼び出されるためです。