Intel® Stratix® 10 Hard Processor System Remote System Update User Guide
A newer version of this document is available. Customers should click here to go to the newest version.
Visible to Intel only — GUID: mdq1571167428437
Ixiasoft
Visible to Intel only — GUID: mdq1571167428437
Ixiasoft
7.1.1. Using U-Boot to Perform Basic Operations
- Querying the RSU status.
- Querying the number of slots and the information about them.
- Adding a new application image.
- Verifying that an application image was written correctly.
- Requesting a specific application image to be loaded.
- Power cycle the board and press any key when prompted, to get to the U-Boot command prompt:
U-Boot 2021.01-12712-ge59d8e9eaa-dirty (Jun 23 2021 - 16:58:43 -0500)socfpga_stratix10 CPU: Intel FPGA SoCFPGA Platform (ARMv8 64bit Cortex-A53) Model: SoCFPGA Stratix 10 SoCDK DRAM: 4 GiB WDT: Started with servicing (10s timeout) MMC: dwmmc0@ff808000: 0 Loading Environment from MMC... *** Warning - bad CRC, using default environment In: serial0@ffc02000 Out: serial0@ffc02000 Err: serial0@ffc02000 Net: Warning: ethernet@ff800000 (eth0) using random MAC address - b6:d7:c2:24:38:99 eth0: ethernet@ff800000 Hit any key to stop autoboot: 5 0 SOCFPGA #
- Run the rsu command without parameters, to display its help message, and usage options:
SOCFPGA # rsu rsu - Stratix 10 SoC Remote System Update Usage: rsu dtb - Update Linux DTB qspi-boot parition offset with spt0 value list - List down the available bitstreams in flash slot_by_name <name> - find slot by name and display the slot number slot_count - display the slot count slot_disable <slot> - remove slot from CPB slot_enable <slot> - make slot the highest priority slot_erase <slot> - erase slot slot_get_info <slot> - display slot information slot_load <slot> - load slot immediately slot_load_factory - load factory immediately slot_priority <slot> - display slot priority slot_program_buf <slot> <buffer> <size> - program buffer into slot, and make it highest priority slot_program_buf_raw <slot> <buffer> <size> - program raw buffer into slot slot_program_factory_update_buf <slot> <buffer> <size> - program factory update buffer into slot, and make it highest priority slot_rename <slot> <name> - rename slot slot_delete <slot> - delete slot slot_create <name> <address> <size> - create slot slot_size <slot> - display slot size slot_verify_buf <slot> <buffer> <size> - verify slot contents against buffer slot_verify_buf_raw <slot> <buffer> <size> - verify slot contents against raw buffer status_log - display RSU status update <flash_offset> - Initiate firmware to load bitstream as specified by flash_offset notify <value> - Let SDM know the current state of HPS software clear_error_status - clear the RSU error status reset_retry_counter - reset the RSU retry counter display_dcmf_version - display DCMF versions and store them for SMC handler usage display_dcmf_status - display DCMF status and store it for SMC handler usage display_max_retry - display max_retry parameter, and store it for SMC handler usage restore_spt <address> - restore SPT from an address save_spt <address> - save SPT to an address create_empty_cpb - create a empty CPB restore_cpb <address> - restore CPB from an address save_cpb <address> - save CPB to an address check_running_factory - check if currently running the factory image
- Run the rsu list command to display the RSU partitions, CPBs, the currently running image and the status:
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: 0x00110000 Flag : 0x00000003 FACTORY_IMAGE Offset: 0x0000000000110000 Length: 0x00800000 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
Note: The rsu list U-Boot command does not have a RSU client equivalent. Instead, the same information can be retrieved using other commands, as shown next. - Run the rsu status_log command to display the RSU status:
SOCFPGA # rsu status_log Current Image : 0x01000000 Last Fail Image : 0x00000000 State : 0x00000000 Version : 0x00000202 Error location : 0x00000000 Error details : 0x00000000 Retry counter : 0x00000000
Application image P1 is loaded, as it is the highest priority in the CPB. There are no errors.
- Run the rsu display_dcmf_version to query and display the decision firmware versions:
SOCFPGA # rsu display_dcmf_version DCMF0 version = 22.1.0 DCMF1 version = 22.1.0 DCMF2 version = 22.1.0 DCMF3 version = 22.1.0
- Display information about the slots:
SOCFPGA # rsu slot_count Number of slots = 3. SOCFPGA # rsu slot_get_info 0 NAME: P1 OFFSET: 0x0000000001000000 SIZE: 0x01000000 PRIORITY: 1 SOCFPGA # rsu slot_get_info 1 NAME: P2 OFFSET: 0x0000000002000000 SIZE: 0x01000000 PRIORITY: [disabled] SOCFPGA # rsu slot_get_info 2 NAME: P3 OFFSET: 0x0000000003000000 SIZE: 0x01000000 PRIORITY: [disabled] SOCFPGA # rsu slot_size 0 Slot 0 size = 16777216. SOCFPGA # rsu slot_size 1 Slot 1 size = 16777216. SOCFPGA # rsu slot_size 2 Slot 2 size = 16777216.
- Erase slot 1 and add the application2.rpd image to slot 1:
SOCFPGA # rsu slot_erase 1 Slot 1 erased SOCFPGA # load mmc 0:1 $loadaddr application2.rpd 3358720 bytes read in 153 ms (20.9 MiB/s) SOCFPGA # rsu slot_program_buf 1 $loadaddr $filesize Slot 1 was programmed with buffer=0x0000000002000000 size=3358720.
- Verify that the application image was written correctly:
SOCFPGA # rsu slot_verify_buf 1 $loadaddr $filesize Slot 1 was verified with buffer=0x0000000002000000 size=3358720.
- Confirm that slot 1 (partition P2) contains now the highest priority image:
SOCFPGA # rsu slot_get_info 1 NAME: P2 OFFSET: 0x0000000002000000 SIZE: 0x01000000 PRIORITY: 1
- Power-cycle the board, stop U-Boot and check the RSU status log:
SOCFPGA # rsu status_log Current Image : 0x02000000 Last Fail Image : 0x00000000 State : 0x00000000 Version : 0x00000202 Error location : 0x00000000 Error details : 0x00000000 Retry counter : 0x00000000
The application image from slot 1 (partition P2) was loaded, because it is marked as the highest priority in the CPB.
- Load the application image from slot 0 (partition P1) by running any of the following two commands:
SOCFPGA # rsu update 0x01000000 RSU: RSU update to 0x0000000001000000
or
SOCFPGA # rsu slot_load 0
- Load the newly requested image. Stop at U-Boot prompt and check the status log to confirm it:
SOCFPGA # rsu status_log Current Image : 0x01000000 Last Fail Image : 0x00000000 State : 0x00000000 Version : 0x00000202 Error location : 0x00000000 Error details : 0x00000000 Retry counter : 0x00000000
Note: In U-Boot, the effect of requesting a specific image is immediate. On Linux, it only takes effect on the next reboot command.