Visible to Intel only — GUID: elq1540272320025
Ixiasoft
Visible to Intel only — GUID: elq1540272320025
Ixiasoft
2.4. Modifying the List of Application Images
When the direct factory fallback option is not enabled, the SDM uses the configuration pointer block to determine priority of application images. When the direct factory image fallback option is enabled, only the first application image in the configuration pointer block is tried, and if that fails, the factory image is loaded.
- On a sector erase, all the sector flash bits become 1’s.
- A program operation can only turn 1’s into 0’s.
- All 1’s – the entry is unused. The client can write a pointer to this entry. This is the state after a quad SPI erase operation occurs on the pointer block.
- All 0’s – the entry has been previously used and then canceled.
- A combination of 1's and 0's – a valid pointer to an application image.
When the configuration pointer block is erased, all entries are marked as unused. To add an application image to the list, the client finds the first unused location and writes the application image address to this location. To remove an application image from the list, the client finds the application image address in the pointer block list and writes all 0's to this address.
If the configuration pointer block runs out of space for new application images, the client compresses the pointer block by completing the following actions:
- Read all the valid entries from the configuration
- Erase the pointer block
- Add all previously valid entries
- Add the address of the new image
When using HPS to manage RSU, both the U-Boot and LIBRSU clients implement the block compression. For designs that drive RSU from FPGA logic, you can implement pointer block compression many different ways, including Nios® II code, a scripting language, or a state machine.
Pointer block compression does not occur frequently because the pointer block has up to 508 available entries.
There are two configuration pointer blocks: a primary (CPB0) and a backup (CPB1). Two blocks enable the list of application images to be protected if a power failure occurs just after erasing one of them. When a CPB is erased and re-created, the header is written last. The CPB header is checked prior to use to prevent accidental use if a power failure occurred. For more information, refer to the Configuration Pointer Block Layout topic. When compressing, the client compresses (erases and rewrites) the primary CPB completely. Once the primary CPB is valid, it is safe to modify the secondary CPB. When rewriting, the magic number at the start of a CPB is the last word written in the CPB. After this number is written only image pointer slot values can be changed.