Visible to Intel only — GUID: jod1540272333244
Ixiasoft
1. Overview
2. Use Cases
3. Quad SPI Flash Layout
4. Intel® Quartus® Prime Software and Tool Support
5. Software Support
6. Flash Corruption - Detection and Recovery
7. Remote System Update Example
8. Version Compatibility Considerations
9. Intel Agilex® 7 Hard Processor System Remote System Update User Guide Archives
10. Document Revision History for the Intel Agilex® 7 Hard Processor System Remote System Update User Guide
A. Configuration Flow Diagrams
B. RSU Status and Error Codes
C. U-Boot RSU Reference Information
D. LIBRSU Reference Information
E. Combined Application Images
2.1. Manufacturing
2.2. Application Image Boot
2.3. Factory Image Boot
2.4. Modifying the List of Application Images
2.5. Querying RSU Status
2.6. Loading a Specific Image
2.7. Protected Access to Flash
2.8. Remote System Update Watchdog
2.9. RSU Notify
2.10. Updating the Factory Image
2.11. Updating the Decision Firmware
2.12. Retrying when Configuration Fails
2.13. Querying the Decision Firmware Version
7.1.1. Setting up the Environment
7.1.2. Building the Hardware Projects
7.1.3. Building Arm* Trusted Firmware
7.1.4. Building Linux*
7.1.5. Building U-Boot
7.1.6. Building U-Boot Script
7.1.7. Creating the Initial Flash Image
7.1.8. Creating the Application Image
7.1.9. Creating the Factory Update Image
7.1.10. Creating the Decision Firmware Update Image
7.1.11. Building ZLIB
7.1.12. Building LIBRSU and RSU Client
7.1.13. Building the Root File System
7.1.14. Building the SD Card
C.6.1. rsu_init
C.6.2. rsu_exit
C.6.3. rsu_slot_count
C.6.4. rsu_slot_by_name
C.6.5. rsu_slot_get_info
C.6.6. rsu_slot_size
C.6.7. rsu_slot_priority
C.6.8. rsu_slot_erase
C.6.9. rsu_slot_program_buf
C.6.10. rsu_slot_program_factory_update_buf
C.6.11. rsu_slot_program_buf_raw
C.6.12. rsu_slot_verify_buf
C.6.13. rsu_slot_verify_buf_raw
C.6.14. rsu_slot_enable
C.6.15. rsu_slot_disable
C.6.16. rsu_slot_load
C.6.17. rsu_slot_load_factory
C.6.18. rsu_slot_rename
C.6.19. rsu_slot_delete
C.6.20. rsu_slot_create
C.6.21. rsu_status_log
C.6.22. rsu_notify
C.6.23. rsu_clear_error_status
C.6.24. rsu_reset_retry_counter
C.6.25. rsu_dcmf_version
C.6.26. rsu_max_retry
C.6.27. rsu_dcmf_status
C.6.28. rsu_create_empty_cpb
C.6.29. rsu_restore_cpb
C.6.30. rsu_save_cpb
C.6.31. rsu_restore_spt
C.6.32. rsu_save_spt
C.6.33. rsu_running_factory
C.7.1. dtb
C.7.2. list
C.7.3. slot_by_name
C.7.4. slot_count
C.7.5. slot_disable
C.7.6. slot_enable
C.7.7. slot_erase
C.7.8. slot_get_info
C.7.9. slot_load
C.7.10. slot_load_factory
C.7.11. slot_priority
C.7.12. slot_program_buf
C.7.13. slot_program_buf_raw
C.7.14. slot_program_factory_update_buf
C.7.15. slot_rename
C.7.16. slot_delete
C.7.17. slot_create
C.7.18. slot_size
C.7.19. slot_verify_buf
C.7.20. slot_verify_buf_raw
C.7.21. status_log
C.7.22. update
C.7.23. notify
C.7.24. clear_error_status
C.7.25. reset_retry_counter
C.7.26. display_dcmf_version
C.7.27. display_dcmf_status
C.7.28. display_max_retry
C.7.29. restore_spt
C.7.30. save_spt
C.7.31. create_empty_cpb
C.7.32. restore_cpb
C.7.33. save_cpb
C.7.34. check_running_factory
D.6.1. librsu_init
D.6.2. librsu_exit
D.6.3. rsu_slot_count
D.6.4. rsu_slot_by_name
D.6.5. rsu_slot_get_info
D.6.6. rsu_slot_size
D.6.7. rsu_slot_priority
D.6.8. rsu_slot_erase
D.6.9. rsu_slot_program_buf
D.6.10. rsu_slot_program_factory_update_buf
D.6.11. rsu_slot_program_file
D.6.12. rsu_slot_program_factory_update_file
D.6.13. rsu_slot_program_buf_raw
D.6.14. rsu_slot_program_file_raw
D.6.15. rsu_slot_verify_buf
D.6.16. rsu_slot_verify_file
D.6.17. rsu_slot_verify_buf_raw
D.6.18. rsu_slot_verify_file_raw
D.6.19. rsu_slot_program_callback
D.6.20. rsu_slot_program_callback_raw
D.6.21. rsu_slot_verify_callback
D.6.22. rsu_slot_verify_callback_raw
D.6.23. rsu_slot_copy_to_file
D.6.24. rsu_slot_enable
D.6.25. rsu_slot_disable
D.6.26. rsu_slot_load_after_reboot
D.6.27. rsu_slot_load_factory_after_reboot
D.6.28. rsu_slot_rename
D.6.29. rsu_slot_delete
D.6.30. rsu_slot_create
D.6.31. rsu_status_log
D.6.32. rsu_notify
D.6.33. rsu_clear_error_status
D.6.34. rsu_reset_retry_counter
D.6.35. rsu_dcmf_version
D.6.36. rsu_max_retry
D.6.37. rsu_dcmf_status
D.6.38. rsu_save_spt
D.6.39. rsu_restore_spt
D.6.40. rsu_save_cpb
D.6.41. rsu_create_empty_cpb
D.6.42. rsu_restore_cpb
D.6.43. rsu_running_factory
D.7.1. count
D.7.2. list
D.7.3. size
D.7.4. priority
D.7.5. enable
D.7.6. disable
D.7.7. request
D.7.8. request-factory
D.7.9. erase
D.7.10. add
D.7.11. add-factory-update
D.7.12. add-raw
D.7.13. verify
D.7.14. verify-raw
D.7.15. copy
D.7.16. log
D.7.17. notify
D.7.18. clear-error-status
D.7.19. reset-retry-counter
D.7.20. display-dcmf-version
D.7.21. display-dcmf-status
D.7.22. display-max-retry
D.7.23. create-slot
D.7.24. delete-slot
D.7.25. restore-spt
D.7.26. save-spt
D.7.27. create-empty-cpb
D.7.28. restore-cpb
D.7.29. save-cpb
D.7.30. check-running-factory
D.7.31. help
Visible to Intel only — GUID: jod1540272333244
Ixiasoft
3.2.3. Configuration Pointer Block Layout
The configuration pointer block contains a list of application image addresses. The SDM tries the images in sequence until one of them is successful or all fail. The structure contains the following information:
Offset | Size (in bytes) | Description |
---|---|---|
0x00 | 4 | Magic number 0x57789609 |
0x04 | 4 | Size of pointer block header (0x18 for this document) |
0x08 | 4 | Size of pointer block (4096 for this document) |
0x0C | 4 | Reserved |
0x10 | 4 | Offset to image pointers (IPTAB) |
0x14 | 4 | Total number of image pointer slots allocated = 508 |
0x18 | 8 | Reserved |
0x20 (IPTAB) 8 | 8 | First (lowest priority) image pointer slot (IPTAB) |
8 | Second (2nd lowest priority) image pointer slot | |
8 | … | |
8 | Last (highest priority) image pointer |
The configuration pointer block can contain up to 508 application image pointers. A typical configuration pointer block update procedure consists of adding a new pointer and potentially clearing an older pointer. Typically, the pointer block update uses one new slot. Consequently, you can make 508 updates before the pointer block must be erased. The erase procedure is called pointer block compression. This procedure is power failure safe, as there are two copies of the pointer block. The copies are in different flash erase sectors. While one copy is being updated the other copy is still valid.
Note: In order to successfully update SPTs and CPBs, the HPS software (U-Boot or Linux) must be configured to support a minimum QSPI erase granularity smaller or equal to CPB and SPT sizes. All supported flash devices offer erase granularities of 4 KB, 32 KB, and 64 KB. HPS software is typically configured with either 4 KB or 64 KB erase granularity. When the HPS software is configured with 64 KB erase granularity, the CPB and SPT sizes must be configured in Programming File Generator to be 64 KB instead of the default 32 KB.
8 The offset may vary in future firmware updates.