You can use the LibRSU HAL APIs when the SPTs or CPBs in flash are corrupted, but with reduced functionality. Altera provides specialized APIs to restore a saved SPT or CPB, and also to create an empty CPB. After the CPBs and SPTs are repaired using these APIs, the full RSU functionality is available.
| Data Corruption | Impact |
|---|---|
| Single SPT or Single CPB | The librsu_init function restores it from the good copy. |
| Both SPTs | The librsu_init is still successful (return code 0) but some of the functions returns the error code ECORRUPTED_SPT when called. Both SPTs being corrupted cause librsu_init to not be able to identify the location of the CPBs, and the CPBs is also considered as corrupted. |
| Both CPBs | The librsu_init is still successful (return code 0) but some of the functions returns the error code ECORRUPTED_CPB when called. |
Note: When the processor implements the Functions, the processor needs to call the function librsu_init at the beginning of the whole application, and ends with librsu_exit This is not necessary for RSU Client API.
The table below lists which APIs require valid SPT or CPB.
| Functions | Requires Valid SPT | Requires Valid CPB |
|---|---|---|
| librsu_init | ||
| librsu_exit | ||
| rsu_slot_count | Yes | |
| rsu_slot_by_name | Yes | |
| rsu_slot_get_info | Yes | Yes |
| rsu_slot_size | Yes | |
| rsu_slot_priority | Yes | Yes |
| rsu_slot_erase | Yes | Yes |
| rsu_slot_program_buf | Yes | Yes |
| rsu_slot_verify_buf | Yes | Yes |
| rsu_slot_program_callback | Yes | Yes |
| rsu_slot_verify_callback | Yes | Yes |
| rsu_slot_copy_to_buf | Yes | Yes |
| rsu_slot_enable | Yes | Yes |
| rsu_slot_disable | Yes | Yes |
| rsu_slot_load | Yes | Yes |
| rsu_slot_load_factory | Yes | |
| rsu_slot_rename | Yes | |
| rsu_slot_delete | Yes | Yes |
| rsu_slot_create | Yes | |
| rsu_status_log | ||
| rsu_clear_error_status | ||
| rsu_dcmf_version | ||
| rsu_max_retry | ||
| rsu_dcmf_status | ||
| rsu_create_empty_cpb | ||
| rsu_restore_cpb | ||
| rsu_save_cpb | Yes | |
| rsu_restore_spt | ||
| rsu_save_spt | Yes | |
| rsu_running_factory | Yes |