Intel® Stratix® 10 Hard Processor System Remote System Update User Guide

ID 683021
Date 11/10/2021
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

7.5.5.2. Corrupted Decision Firmware Data

This example uses the RSU client to demonstrate detecting that the decision firmware data is corrupted, and recovering it by running a decision firmware update image.
Note: The commands listed in this example assume the initial flash image (JIC) was written to flash, with no other changes.
  1. Power cycle the board, boot to Linux, and query RSU status:
    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

    There are no errors.

  2. Reboot power cycle the board, stop at U-Boot prompt, and corrupt decision firmware data:
    SOCFPGA # sf probe 
    SF: Detected mt25qu02g with page size 256 Bytes, erase size 4 KiB, total 256 MiB
    SOCFPGA # sf erase 0x100000 0x1000
    SF: 4096 bytes @ 0x100000 Erased: OK
  3. Power cycle the board, boot to Linux and query the status:
    root@linux:~# ./rsu_client --log
          VERSION: 0x0DCF0202
            STATE: 0xF004D00F
    CURRENT IMAGE: 0x0000000000110000
       FAIL IMAGE: 0x0000000000100000
        ERROR LOC: 0x00000000
    ERROR DETAILS: 0x00000000
    RETRY COUNTER: 0x00000000
    Operation completed

    The State contains the special error code 0xF004D00F indicating that the decision firmware data was corrupted. The current image is listed as the factory image. The error source is listed as 0xDCF, meaning the error was reported by the decision firmware. The Last Fail Image is set to 0x00100000, which is a special value indicating an error was reported by the decision firmware.

  4. Erase an unused slot, add the decision firmware update image to the slot, verify it was written fine, and confirm it is now the highest priority running slot:
    root@linux:~# ./rsu_client --erase 2
    Operation completed
    root@linux:~# ./rsu_client --add-factory-update decision_firmware_update.rpd --slot 2
    Operation completed
    root@linux:~# ./rsu_client --verify decision_firmware_update.rpd --slot 2
    Operation completed
    root@linux:~# ./rsu_client --list 2
          NAME: P3
        OFFSET: 0x0000000003000000
          SIZE: 0x01000000
      PRIORITY: 1
    Operation completed
  5. Pass control to the devision firmware update image:
    root@linux:~# ./rsu_client --request 2
    Operation completed
    root@linux:~# reboot
  6. Linux shuts down, then the decision firmware update image writes new decision firmware copies and new decision firmware data to flash, remove itself from CPB, then pass control to the highest priority image.
  7. In Linux, query the RSU status:
    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

    The highest priority image is loaded, and there are no errors. The decision firmware data was restored.