![]() |
MCUXpresso SDK API Reference Manual
Rev 2.16.000
NXP Semiconductors
|
Files | |
| file | fsl_flash_ffr.h |
Data Structures | |
| struct | cfpa_cfg_info_t |
| flash cfpa configure struct. More... | |
Macros | |
| #define | ALIGN_DOWN(x, a) ((x) & (uint32_t)(-((int32_t)(a)))) |
| Alignment(down) utility. More... | |
| #define | ALIGN_UP(x, a) (-((int32_t)((uint32_t)(-((int32_t)(x))) & (uint32_t)(-((int32_t)(a)))))) |
| Alignment(up) utility. More... | |
Enumerations | |
| enum | flash_ffr_page_offset { kFfrPageOffset_CFPA = 0U, kFfrPageOffset_CFPA_Scratch = 0U, kFfrPageOffset_CFPA_CfgPing = 1U, kFfrPageOffset_CFPA_CfgPong = 2U, kFfrPageOffset_CMPA = 3U, kFfrPageOffset_CMPA_Cfg = 3U, kFfrPageOffset_CMPA_Key = 4U, kFfrPageOffset_NMPA = 7U, kFfrPageOffset_NMPA_Romcp = 7U, kFfrPageOffset_NMPA_Repair = 9U, kFfrPageOffset_NMPA_Cfg = 15U, kFfrPageOffset_NMPA_End = 16U } |
| flash FFR page offset. More... | |
| enum | flash_ffr_page_num { kFfrPageNum_CFPA = 3U, kFfrPageNum_CMPA = 4U, kFfrPageNum_NMPA = 13U } |
| flash FFR page number. More... | |
| enum | flash_ffr_block_size |
| flash FFR block size. | |
| enum | cfpa_cfg_cmpa_prog_status |
| flash cmpa status. | |
| enum | cmpa_prog_process_t |
| flash cmpa program status. | |
FFR APIs | |
| status_t | FFR_Init (flash_config_t *config) |
| Initializes the global FFR properties structure members. More... | |
| status_t | FFR_Lock (flash_config_t *config) |
| Enable firewall for all flash banks. More... | |
| status_t | FFR_SecLibInit (flash_config_t *config, uint32_t *context) |
| Initialize the Security Library for FFR driver. More... | |
| status_t | FFR_InfieldPageWrite (flash_config_t *config, uint8_t *page_data, uint32_t valid_len) |
| APIs to access CFPA pages. More... | |
| status_t | FFR_GetCustomerInfieldData (flash_config_t *config, uint8_t *pData, uint32_t offset, uint32_t len) |
| APIs to access CFPA pages. More... | |
| status_t | FFR_CustFactoryPageWrite (flash_config_t *config, uint8_t *page_data, bool seal_part) |
| APIs to access CMPA pages. More... | |
| status_t | FFR_GetCustomerData (flash_config_t *config, uint8_t *pData, uint32_t offset, uint32_t len) |
| APIs to access CMPA page. More... | |
| status_t | FFR_GetCustKeystoreData (flash_config_t *config, uint8_t *pData, uint32_t offset, uint32_t len) |
| The API is used for getting the customer key store data from the customer key store region(0x3e400 - 0x3e600), and the API should be called after the FLASH_Init and FFR_Init. More... | |
| status_t | FFR_CustKeystoreWrite (flash_config_t *config, ffr_key_store_t *pKeyStore) |
| This routine writes the 3 pages allocated for Key store data. More... | |
| status_t | FFR_GetUUID (flash_config_t *config, uint8_t *uuid) |
| APIs to access CMPA page. More... | |
| struct cfpa_cfg_info_t |
Data Fields | |
| uint32_t | header |
| [0x000-0x003] | |
| uint32_t | version |
| [0x004-0x007] | |
| uint32_t | secureFwVersion |
| [0x008-0x00b] | |
| uint32_t | nsFwVersion |
| [0x00c-0x00f] | |
| uint32_t | imageKeyRevoke |
| [0x010-0x013] | |
| uint32_t | ivPrince [3] |
| [0x014-0x01f] | |
| uint32_t | ivIped [4] |
| [0x020-0x02f] | |
| uint32_t | custCtr [8] |
| [0x030-0x03f] | |
| uint32_t | rotkhRevoke |
| [0x018-0x01b] | |
| uint32_t | vendorUsage |
| [0x050-0x053] | |
| uint32_t | dcfgNsPin |
| [0x058-0x05b] | |
| uint32_t | dcfgNsDflt |
| [0x05c-0x05f] | |
| uint32_t | enableFaMode |
| [0x060-0x063] | |
| uint32_t | cmpaProgInProgress |
| [0x064-0x067] | |
| uint32_t | imageCmacUpdateEn |
| [0x068-0x06b] | |
| uint32_t | cfpaVersion |
| [0x06c-0x06f] | |
| uint32_t | img0Cmac [4] |
| [0x070-0x07f] | |
| uint32_t | img1Cmac [4] |
| [0x080-0x08f] | |
| uint8_t | reserved2 [348] |
| [0x090-0x1eb] | |
| uint32_t | cfpaCrc |
| [0x1eb-0x1ef] | |
| uint32_t | cfpaCmac [4] |
| [0x1f0-0x1ff] | |
| #define ALIGN_DOWN | ( | x, | |
| a | |||
| ) | ((x) & (uint32_t)(-((int32_t)(a)))) |
| #define ALIGN_UP | ( | x, | |
| a | |||
| ) | (-((int32_t)((uint32_t)(-((int32_t)(x))) & (uint32_t)(-((int32_t)(a)))))) |
| enum flash_ffr_page_num |
| status_t FFR_Init | ( | flash_config_t * | config | ) |
| config | A pointer to the storage for the driver runtime state. |
| kStatus_FLASH_Success | API was executed successfully. |
| status_t FFR_Lock | ( | flash_config_t * | config | ) |
CFPA, CMPA, and NMPA flash areas region will be locked, After this function executed; Unless the board is reset again.
| config | A pointer to the storage for the driver runtime state. |
| kStatus_FLASH_Success | An invalid argument is provided. |
| status_t FFR_SecLibInit | ( | flash_config_t * | config, |
| uint32_t * | context | ||
| ) |
| config | A pointer to the storage for the driver runtime state. |
| context | A pointer to the storage for the nboot data. |
| kStatus_FLASH_Success | An invalid argument is provided. |
| kStatus_FLASH_InvalidArgument | An invalid argument is provided. |
| status_t FFR_InfieldPageWrite | ( | flash_config_t * | config, |
| uint8_t * | page_data, | ||
| uint32_t | valid_len | ||
| ) |
This routine will erase CFPA and program the CFPA page with passed data.
| config | A pointer to the storage for the driver runtime state. |
| page_data | A pointer to the source buffer of data that is to be programmed into the CFPA. |
| valid_len | The length, given in bytes, to be programmed. |
| kStatus_FLASH_Success | The desire page-data were programed successfully into CFPA. |
| kStatus_FLASH_SizeError | Error size |
| kStatus_FLASH_ReadHidingAreaDisallowed | Flash hiding read is not allowed |
| kStatus_FLASH_AlignmentError | Parameter is not aligned with the specified baseline |
| kStatus_FLASH_ModifyProtectedAreaDisallowed | Flash firewall page locked erase and program are not allowed |
| kStatus_FLASH_InvalidArgument | An invalid argument is provided. |
| kStatus_FLASH_AddressError | Address is out of range. |
| kStatus_FLASH_FfrBankIsLocked | The CFPA was locked. |
| kStatus_FLASH_OutOfDateCfpaPage | It is not newest CFPA page. |
| kStatus_FLASH_CommandFailure | access error. |
| kStatus_FLASH_CommandNotSupported | Flash API is not supported |
| kStatus_FLASH_EccError | A correctable or uncorrectable error during command execution. |
| kStatus_FLASH_RegulationLoss | A loss of regulation during read. |
| status_t FFR_GetCustomerInfieldData | ( | flash_config_t * | config, |
| uint8_t * | pData, | ||
| uint32_t | offset, | ||
| uint32_t | len | ||
| ) |
Generic read function, used by customer to read data stored in 'Customer In-field Page'.
| config | A pointer to the storage for the driver runtime state. |
| pData | A pointer to the dest buffer of data that is to be read from 'Customer In-field Page'. |
| offset | An offset from the 'Customer In-field Page' start address. |
| len | The length, given in bytes, to be read. |
| kStatus_FLASH_Success | Get data from 'Customer In-field Page'. |
| kStatus_FLASH_InvalidArgument | An invalid argument is provided. |
| kStatus_FLASH_AddressError | Address is out of range. |
| kStatus_FLASH_AlignmentError | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_ReadHidingAreaDisallowed | Flash hiding read is not allowed |
| kStatus_FLASH_CommandFailure | access error. |
| kStatus_FLASH_CommandNotSupported | Flash API is not supported |
| kStatus_FLASH_EccError | A correctable or uncorrectable error during command execution. |
| kStatus_FLASH_RegulationLoss | A loss of regulation during read. |
| status_t FFR_CustFactoryPageWrite | ( | flash_config_t * | config, |
| uint8_t * | page_data, | ||
| bool | seal_part | ||
| ) |
This routine will erase "customer factory page" and program the page with passed data. If 'seal_part' parameter is TRUE then the routine will compute SHA256 hash of the page contents and then programs the pages. 1.During development customer code uses this API with 'seal_part' set to FALSE. 2.During manufacturing this parameter should be set to TRUE to seal the part from further modifications 3.This routine checks if the page is sealed or not. A page is said to be sealed if the SHA256 value in the page has non-zero value. On boot ROM locks the firewall for the region if hash is programmed anyways. So, write/erase commands will fail eventually.
| config | A pointer to the storage for the driver runtime state. |
| page_data | A pointer to the source buffer of data that is to be programmed into the "customer factory page". |
| seal_part | Set fasle for During development customer code. |
| kStatus_FLASH_Success | The desire page-data were programed successfully into CMPA. |
| kStatus_FLASH_InvalidArgument | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_AddressError | Address is out of range. |
| kStatus_FLASH_AlignmentError | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_EraseKeyError | API erase key is invalid. |
| kStatus_FLASH_ModifyProtectedAreaDisallowed | Flash firewall page locked erase and program are not allowed |
| kStatus_Fail | Generic status for Fail. |
| kStatus_FLASH_CommandFailure | access error. |
| kStatus_FLASH_CommandNotSupported | Flash API is not supported |
| kStatus_FLASH_EccError | A correctable or uncorrectable error during command execution. |
| kStatus_FLASH_RegulationLoss | A loss of regulation during read. |
| status_t FFR_GetCustomerData | ( | flash_config_t * | config, |
| uint8_t * | pData, | ||
| uint32_t | offset, | ||
| uint32_t | len | ||
| ) |
Read data stored in 'Customer Factory CFG Page'.
| config | A pointer to the storage for the driver runtime state. |
| pData | A pointer to the dest buffer of data that is to be read from the Customer Factory CFG Page. |
| offset | Address offset relative to the CMPA area. |
| len | The length, given in bytes to be read. |
| kStatus_FLASH_Success | Get data from 'Customer Factory CFG Page'. |
| kStatus_FLASH_InvalidArgument | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_AlignmentError | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_AddressError | Address is out of range. |
| kStatus_FLASH_CommandFailure | access error. |
| kStatus_FLASH_CommandNotSupported | Flash API is not supported |
| kStatus_FLASH_EccError | A correctable or uncorrectable error during command execution. |
| kStatus_FLASH_RegulationLoss | A loss of regulation during read. |
| kStatus_FLASH_ReadHidingAreaDisallowed | Flash hiding read is not allowed |
| status_t FFR_GetCustKeystoreData | ( | flash_config_t * | config, |
| uint8_t * | pData, | ||
| uint32_t | offset, | ||
| uint32_t | len | ||
| ) |
| config | A pointer to the storage for the driver runtime state. |
| pData | A pointer to the dest buffer of data that is to be read from the Customer Factory CFG Page. |
| offset | Address offset relative to the CMPA area. |
| len | The length, given in bytes to be read. |
| kStatus_FLASH_Success | Get data from 'Customer Factory CFG Page'. |
| kStatus_FLASH_InvalidArgument | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_AddressError | Address is out of range. |
| kStatus_FLASH_AlignmentError | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_ReadHidingAreaDisallowed | Flash hiding read is not allowed |
| kStatus_FLASH_CommandFailure | access error. |
| kStatus_FLASH_CommandNotSupported | Flash API is not supported |
| kStatus_FLASH_EccError | A correctable or uncorrectable error during command execution. |
| kStatus_FLASH_RegulationLoss | A loss of regulation during read. |
| status_t FFR_CustKeystoreWrite | ( | flash_config_t * | config, |
| ffr_key_store_t * | pKeyStore | ||
| ) |
| config | A pointer to the storage for the driver runtime state. |
| pKeyStore | A pointer to the source buffer of data that is to be programmed into the "Key store". |
| kStatus_FLASH_Success | Get data from 'Customer Factory CFG Page'. |
| kStatus_FLASH_InvalidArgument | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_CommandFailure | access error. |
| kStatus_FLASH_CommandNotSupported | Flash API is not supported |
| kStatus_FLASH_EccError | A correctable or uncorrectable error during command execution. |
| kStatus_FLASH_RegulationLoss | A loss of regulation during read. |
| kStatus_FLASH_SealedFfrRegion | The FFR region is sealed. |
| kStatus_FLASH_FfrBankIsLocked | The FFR bank region is locked. |
| kStatus_FLASH_AddressError | Address is out of range |
| kStatus_FLASH_AlignmentError | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_ModifyProtectedAreaDisallowed | Flash firewall page locked erase and program are not allowed |
| status_t FFR_GetUUID | ( | flash_config_t * | config, |
| uint8_t * | uuid | ||
| ) |
1.SW should use this API routine to get the UUID of the chip. 2.Calling routine should pass a pointer to buffer which can hold 128-bit value.
| kStatus_FLASH_Success | Get data from 'Customer Factory CFG Page'. |
| kStatus_FLASH_InvalidArgument | Parameter is not aligned with the specified baseline. |
| kStatus_FLASH_ReadHidingAreaDisallowed | Flash hiding read is not allowed |
| kStatus_FLASH_CommandFailure | Run-time error during command execution. |
| kStatus_FLASH_CommandNotSupported | Flash API is not supported |
| kStatus_FLASH_RegulationLoss | A loss of regulation during read. |