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

ID 683184
日付 11/10/2021
Public

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

ドキュメント目次

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

この例では、RSUクライアントを使用して、サブ・パーティション表の破損を検出および回復する方法を示します。また、U-Bootを使用してSPTを破損します。これは、SPTでより便利に実行されるためです。
注: この例に一覧表示されているコマンドは、初期フラッシュイメージ (JIC) が他の変更なしでフラッシュに書き込まれたことを前提としています。
  1. ボードの電源を入れ直し、Linuxで起動して、RSUステータスを照会します。
    root@linux:~# ./rsu_client --log
          VERSION: 0x00000202
            STATE: 0x00000000
    CURRENT IMAGE: 0x0000000001000000
       FAIL IMAGE: 0x0000000000000000
        ERROR LOC: 0x00000000
    ERROR DETAILS: 0x00000000
    RETRY COUNTER: 0x00000000
    Operation completed

    エラーはありません。

  2. ボードを再起動または電源を入れ直し、U-Bootプロンプトで停止して、対応するフラッシュ領域を消去することにより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が実行され、Linuxを起動する前に、いくつかのRSUコマンドが実行されます。最初のコマンドを実行すると、rsu_init が呼び出されます。SPT0を検出し、SPT1から回復させます。
    Bad SPT0 magic number 0xFFFFFFFF
    Restoring SPT0
  4. Linuxを起動し、RSUステータスを照会します。
    root@linux:~# ./rsu_client --log
          VERSION: 0x00000202
            STATE: 0x00000000
    CURRENT IMAGE: 0x0000000001000000
       FAIL IMAGE: 0x0000000000000000
        ERROR LOC: 0x00000000
    ERROR DETAILS: 0x00000000
    RETRY COUNTER: 0x00000000
    Operation completed

    エラーはありません。

  5. バックアップのために、現在使用されているSPTをファイルに保存します。 また、sync コマンドを呼び出して、ファイルがフラッシュにコミットされていることを確認します。
    root@linux:~# ./rsu_client --save-spt spt-backup.bin
    Operation completed
    root@linux:~# sync
  6. 再起動または電源を入れ直し、U-Bootで停止して、両方のSPTの位置でフラッシュを消去することにより両方のSPTを破損します。
    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
  7. ボードの電源を入れ直し、Linuxで起動して、RSUステータスを照会します。
    root@linux:~# ./rsu_client --log
    librsu: load_spt(): Bad SPT1 magic number 0xFFFFFFFF [MED]
    librsu: load_spt(): Bad SPT0 magic number 0xFFFFFFFF [MED]
    librsu: load_spt(): error: No valid SPT0 or SPT1 found [LOW]
          VERSION: 0x00000202
            STATE: 0x00000000
    CURRENT IMAGE: 0x0000000001000000
       FAIL IMAGE: 0x0000000000000000
        ERROR LOC: 0x00000000
    ERROR DETAILS: 0x00000000
    RETRY COUNTER: 0x00000000

    決定ファームウェアは、最も優先度の高いイメージをロードし、SPTを確認しません。LibRSUは、両方のSPTが破損していることを検出します。

  8. 有効なSPTを必要とするRSUクライアント・コマンドの実行を試すと、失敗します。
    root@linux:~# ./rsu_client --count
    librsu: load_spt(): Bad SPT1 magic number 0xFFFFFFFF [MED]
    librsu: load_spt(): Bad SPT0 magic number 0xFFFFFFFF [MED]
    librsu: load_spt(): error: No valid SPT0 or SPT1 found [LOW]
    librsu: rsu_spt_corrupted_info(): corrupted SPT -- [LOW]
    librsu: rsu_spt_corrupted_info(): run rsu_client restore-spt <file_name> first
     [LOW]
    ERROR: Failed to get number of slots
  9. 作成したバックアップ・コピーからSPTを復元します。
    root@linux:~# ./rsu_client --restore-spt spt-backup.bin
    librsu: load_spt(): Bad SPT1 magic number 0xFFFFFFFF [MED]
    librsu: load_spt(): Bad SPT0 magic number 0xFFFFFFFF [MED]
    librsu: load_spt(): error: No valid SPT0 or SPT1 found [LOW]
    Operation completed
  10. 有効なSPTを必要とするRSUクライアント・コマンドを再実行すると、コマンドは正常に機能します。
    root@linux:~# ./rsu_client --count
    number of slots is 3
    Operation completed