インテル® Agilex™ ハード・プロセッサー・システム (HPS) のリモート・システム・アップデート・ユーザーガイド
このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。
インテルのみ表示可能 — GUID: ack1606327036542
Ixiasoft
インテルのみ表示可能 — GUID: ack1606327036542
Ixiasoft
7.5.5.3. 破損したコンフィグレーション・ポインター・ブロック
- ボードの電源を入れ直し、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
エラーはありません。
- ボードを再起動または電源を入れ直し、U-Bootプロンプトで停止して、対応するフラッシュ領域を消去することにより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
- ボードの電源を入れ直します。U-Bootが実行され、Linuxを起動する前に、いくつかのRSUコマンドが実行されます。これにより、rsu_init が呼び出され、CPB1コピーからCPB0を復元します。
FW detects corrupted CPB0 but CPB1 is fine Restoring CPB0
- Linuxが起動したら、RSUのステータスを照会します。
root@linux:~# ./rsu_client --log librsu: load_cpb(): FW detects corrupted CPB0, fine CPB1 [LOW] librsu: load_cpb(): warning: Restoring CPB0 [LOW] VERSION: 0x0DCF0202 STATE: 0xF004D010 CURRENT IMAGE: 0x0000000001000000 FAIL IMAGE: 0x0000000000100000 ERROR LOC: 0x00000000 ERROR DETAILS: 0x00000000 RETRY COUNTER: 0x00000000 Operation completed
State フィールドには、特別なエラーコード 0xF004D010 があります。これは、CPB0が破損していることを示します。Last Fail Image には、この場合に使用される特別な値 0x00100000 があります。Version フィールドは、エラーが決定ファームウェア (0xDCF) によって報告されたことを示します。U-BootはすでにCPB1からCPB0を回復しましたが、ファームウェアはまだCPB0が破損していると報告し、LibRSUはそれを再び回復します。
- エラーステータスをクリアして、ファームウェアがCPB0の破損の報告を停止し、RSUステータスを再度照会して、エラーがないことを確認します。
root@linux:~# ./rsu_client --clear-error-status librsu: load_cpb(): FW detects corrupted CPB0, fine CPB1 [LOW] librsu: load_cpb(): warning: Restoring CPB0 [LOW] Operation completed 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
- ボードの電源を入れ直し、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
- CPBの内容をファイルに保存して、後でリカバリー用に使用できるようにします。また、sync コマンドを呼び出して、ファイルがストレージに保存されていることを確認します。
root@linux:~# ./rsu_client --save-cpb cpb-backup.bin Operation completed root@linux:~# sync
- 再起動または電源を入れ直し、U-Bootで停止して、その位置のフラッシュを消去することにより両方の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
- ボードの電源を入れ直し、Linuxで起動して、RSUステータスを照会します。
root@linux:~# ./rsu_client --log librsu: load_cpb(): FW detects both CPBs corrupted [LOW] VERSION: 0x0DCF0202 STATE: 0xF004D011 CURRENT IMAGE: 0x0000000000110000 FAIL IMAGE: 0x0000000000100000 ERROR LOC: 0x00000000 ERROR DETAILS: 0x00000000 RETRY COUNTER: 0x00000000 Operation completed
予想どおり、Current Image はファクトリー・イメージとして報告されます。State フィールドには、特別なエラーコード 0xF004D011 があります。これは、両方のCPBが破損していることを示します。Last Fail Image には、この場合に使用される特別な値 0x00100000 があります。Version フィールドは、エラーが決定ファームウェア (0xDCF) によって報告されたことを示します。LibRSUは、両方のCPBの破損を報告しました。
- 有効なCPBを必要とするコマンドの実行を試し、それが拒否されることを確認します。
root@linux:~# ./rsu_client --list 1 librsu: load_cpb(): FW detects both CPBs corrupted [LOW] librsu: rsu_cpb_corrupted_info(): corrupted CPB -- [LOW] librsu: rsu_cpb_corrupted_info(): run rsu_client create-empty-cpb or [LOW] librsu: rsu_cpb_corrupted_info(): rsu_client restore_cpb <file_name> first [LOW] ERROR: Failed to get slot attributes
- エラーをクリアして、CPBがファームウェアによって破損していると報告されないようにします。
root@linux:~# ./rsu_client --clear-error-status librsu: load_cpb(): FW detects both CPBs corrupted [LOW] Operation completed root@linux:~# ./rsu_client --log librsu: load_cpb(): Bad CPB1 is bad [MED] librsu: load_cpb(): Bad CPB0 is bad [MED] librsu: load_cpb(): error: found both corrupted CPBs [LOW] VERSION: 0x00000202 STATE: 0x00000000 CURRENT IMAGE: 0x0000000000110000 FAIL IMAGE: 0x0000000000000000 ERROR LOC: 0x00000000 ERROR DETAILS: 0x00000000 RETRY COUNTER: 0x00000000 Operation completed
- 作成したバックアップ・ファイルから保存したCPBを復元します。
root@linux:~# ./rsu_client --restore-cpb cpb-backup.bin librsu: load_cpb(): Bad CPB1 is bad [MED] librsu: load_cpb(): Bad CPB0 is bad [MED] librsu: load_cpb(): error: found both corrupted CPBs [LOW] Operation completed
- RSUステータスを再度照会し、エラーがないことを確認します。
root@linux:~# ./rsu_client --log VERSION: 0x00000202 STATE: 0x00000000 CURRENT IMAGE: 0x0000000000110000 FAIL IMAGE: 0x0000000000000000 ERROR LOC: 0x00000000 ERROR DETAILS: 0x00000000 RETRY COUNTER: 0x00000000 Operation completed
- 有効なCPBを必要とするコマンドの実行を試し、それが拒否されることを確認します。
root@linux:~# ./rsu_client --list 1 NAME: P2 OFFSET: 0x0000000002000000 SIZE: 0x01000000 PRIORITY: [disabled] Operation completed