- User record commands
- SACI_CMD_MISC_GET_CCFG_USER_REC
- Allows the user
record to be read out (only if CCFG is valid)
- Typically invoked prior to a chip erase command when the
contents of user record need to be programmed back in after
image update
- SACI_CMD_FLASH_PROG_CCFG_USER_REC
- Program the user record with provided data (only if the user
record is fully blank)
- Typically invoked either as part of some commissioning
procedure long after the flash image was originally
programmed, or as part of a flash image update to restore
the previous user record content
- Flash erasure commands
- SACI_CMD_FLASH_ERASE_CHIP
- First invalidates CCFG, then erases all (non-retained) MAIN
sectors, then finally erases CCFG fully.
- CCFG considered as invalid from here on out
- Boot may not
continue after flash programming commands complete: device must
be reset and rebooted
- Typically invoked at the beginning of a flash programming
session
- Flash programming commands
- Flash verification commands
- Note that all flash programming commands perform a full integrity
check during programming as well, so verification is not strictly
required
- SACI_CMD_FLASH_VERIFY_CCFG_SECTOR
- Used for verification of CCFG sector, as one of:
- Blank check: returns whether CCFG is fully unprogrammed
or not
- Integrity check: checks each part of CCFG against the
embedded CRC32 checksums and reports whether all parts
are valid or not. User record can be skipped
- Identity check: computes checksum of each part of CCFG
and compares against user provided CRC32 values to
report whether all match or not. User record can be
skipped
- Only allowed if allowFlashVerify == ALLOW
- Designed to prevent an outside attacker from gaining any
information about the contents of CCFG
- SACI_CMD_FLASH_VERIFY_MAIN_SECTORS
- Used for verification of one or more whole MAIN sectors
(optionally -4B to allow a CRC32 to be appended at end), as one
of:
- Blank check: return whether range is fully unprogrammed
or not
- Integrity/identity check: computes CRC32 over range and
compares against user provided CRC32 value to report
whether the value matches or not.
- Only allowed if allowFlashVerify == ALLOW
- Designed to prevent an outside attacker from gaining any
information about flash contents
For full details see Section 8.3.