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

ID 683184
日付 6/09/2023
Public
ドキュメント目次

7.3.5.3. 破損した構成ポインタ ブロック

このセクションでは、U-Boot コマンドを使用して、構成ポインター ブロックの破損を検出して回復する方法を示します。
注: この例にリストされているコマンドは、初期フラッシュ イメージ (JIC) がフラッシュに書き込まれ、その他の変更は行われていないことを前提としています。
  1. ボードの電源を入れ、U-Boot プロンプトで停止します。
  2. を実行します。 リスト コマンドを使用して、すべてのパーティションを含む詳細なステータスを表示し、SPT の場所を特定します。
    SOCFPGA # rsu list
    RSU: Remote System Update Status
    Current Image   : 0x01000000
    Last Fail Image : 0x00000000
    State           : 0x00000000
    Version         : 0x00000202
    Error location  : 0x00000000
    Error details   : 0x00000000
    Retry counter   : 0x00000000
    RSU: Sub-partition table 0 offset 0x00910000
    RSU: Sub-partition table 1 offset 0x00918000
    SF: Detected mt25qu02g with page size 256 Bytes, erase size 4 KiB, total 256 MiB
    RSU: Sub-partition table content
           BOOT_INFO	Offset: 0x0000000000000000	Length: 0x00210000	Flag : 0x00000003
       FACTORY_IMAGE	Offset: 0x0000000000210000	Length: 0x00700000	Flag : 0x00000003
                  P1	Offset: 0x0000000001000000	Length: 0x01000000	Flag : 0x00000000
                SPT0	Offset: 0x0000000000910000	Length: 0x00008000	Flag : 0x00000001
                SPT1	Offset: 0x0000000000918000	Length: 0x00008000	Flag : 0x00000001
                CPB0	Offset: 0x0000000000920000	Length: 0x00008000	Flag : 0x00000001
                CPB1	Offset: 0x0000000000928000	Length: 0x00008000	Flag : 0x00000001
                  P2	Offset: 0x0000000002000000	Length: 0x01000000	Flag : 0x00000000
                  P3	Offset: 0x0000000003000000	Length: 0x01000000	Flag : 0x00000000
    RSU: CMF pointer block offset 0x00920000
    RSU: CMF pointer block's image pointer list
    Priority 1 Offset: 0x0000000001000000 nslot: 0
  3. 対応するフラッシュ領域を消去して CPB0 を破壊します。
    SOCFPGA # sf probe
    SF: Detected mt25qu02g with page size 256 Bytes, erase size 4 KiB, total 256 MiB
    SOCFPGA # sf erase 0x0920000 0x1000
    SF: 4096 bytes @ 0x920000 Erased: OK
  4. ボードの電源を入れ直し、停止して U-Boot プロンプトを表示し、RSU ステータスをクエリします。
    SOCFPGA # rsu status_log
    FW detects corrupted CPB0 but CPB1 is fine
    Restoring CPB0
    Current Image   : 0x01000000
    Last Fail Image : 0x00000000
    State           : 0xf004d010
    Version         : 0x0dcf0202
    Error location  : 0x00000000
    Error details   : 0x00000000
    Retry counter   : 0x00000000

    フィールドに特別なエラー コードがあります 0xf004d010 これは、CPB0 が破損していることを示しています。の バージョン フィールドは、エラーが決定ファームウェア (0xDCF)。の rsu_init U-Boot RSU コマンドが初めて実行されたときに呼び出される関数が CPB の破損を検出し、CPB1 から CPB0 を回復しました。

  5. CPB の内容をファイルに保存し、後でリカバリに使用します。
    SOCFPGA # rsu save_cpb ${loadaddr}
    4100 bytes CPB data saved
    SOCFPGA # fatwrite mmc 0:1 ${loadaddr} cpb-backup.bin ${filesize}
    4100 bytes written
  6. 両方の CPB の位置にあるフラッシュを消去して、両方の CPB を破壊します。
    SOCFPGA # sf probe
    SF: Detected mt25qu02g with page size 256 Bytes, erase size 4 KiB, total 256 MiB
    SOCFPGA # sf erase 0x0920000 0x1000
    SF: 4096 bytes @ 0x920000 Erased: OK
    SOCFPGA # sf erase 0x0928000 0x1000
    SF: 4096 bytes @ 0x928000 Erased: OK
  7. ボードの電源を入れ直し、U-Boot プロンプトを起動して、RSU ステータスをクエリします。
    SOCFPGA # rsu status_log
    FW detects both CPBs corrupted
    Current Image   : 0x00210000
    Last Fail Image : 0x00000000
    State           : 0xf004d011
    Version         : 0x0dcf0202
    Error location  : 0x00000000
    Error details   : 0x00000000
    Retry counter   : 0x00000000

    現在のイメージ 予想どおり、工場出荷時のイメージとして報告されます。の フィールドに特別なエラー コードがあります 0xf004d011 これは、両方の CPB が破損していることを示しています。の バージョン フィールドは、エラーが決定ファームウェア (0xDCF)。の rsu_init U-Boot RSU コマンドが初めて実行されるときに呼び出される関数が検出され、両方の CPB が破損していることが報告されました。

  8. 有効な CPB を必要とするコマンドを実行しようとすると、拒否されます。
    SOCFPGA # rsu slot_get_info 0
    corrupted CPB --run rsu create_empty_cpb or rsu restore_cpb <address> first
  9. 作成したバックアップ ファイルから保存した CPB を復元します。
    SOCFPGA # fatload mmc 0:1 ${loadaddr} cpb-backup.bin
    4100 bytes read in 3 ms (1.3 MiB/s)
    SOCFPGA # rsu restore_cpb ${loadaddr}
  10. CPB が復元されたため、ファームウェアによって報告されたエラーをクリアします。
    SOCFPGA # rsu clear_error_status
    Alternatively you can also power cycle or assert nCONFIG to clear the errors reported by firmware.
  11. 有効な CPB を必要とするコマンドの実行を再試行します - 成功します。
    SOCFPGA # rsu slot_get_info 1
    NAME: P2
    OFFSET: 0x0000000002000000
    SIZE: 0x01000000
    PRIORITY: 1