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

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

7.3.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 ファイルの場所にあるフラッシュを消去して、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 の位置にあるフラッシュを消去して、両方の 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
  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
    Bad SPT1 magic number 0xFFFFFFFF
    Bad SPT0 magic number 0xFFFFFFFF
    no valid SPT0 and SPT1 found
    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. ボードの電源を入れ直し、最優先のイメージがロードされ、すべての機能が使用可能になります。この電源サイクルは、次の現象を引き起こすために必要です。 rsu_init この関数は、最初の RSU コマンドが呼び出されたときに 1 回だけ呼び出されるため、U-Boot で呼び出されます。