MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
FTMRx Flash Driver

Overview

The flash provides the FTMRx Flash driver of MCUXpresso SDK devices with the FTMRx Flash module inside. The flash driver provides general APIs to handle specific operations on the FTMRx Flash module. The user can use those APIs directly in the application. In addition, it provides internal functions called by the driver. Although these functions are not meant to be called from the user's application directly, the APIs can still be used.

Data Structures

struct  pflash_protection_status_t
 PFlash protection status - full. More...
 
struct  flash_prefetch_speculation_status_t
 Flash prefetch speculation status. More...
 
struct  flash_protection_config_t
 Active flash protection information for the current operation. More...
 
struct  flash_operation_config_t
 Active flash information for the current operation. More...
 
union  function_run_command_t
 Flash execute-in-RAM command. More...
 
struct  flash_execute_in_ram_function_config_t
 Flash execute-in-RAM function information. More...
 
struct  flash_config_t
 Flash driver state information. More...
 

Typedefs

typedef void(* flash_callback_t )(void)
 A callback type used for the Pflash block.
 

Enumerations

enum  flash_user_margin_value_t {
  kFLASH_ReadMarginValueNormal = 0x0000U,
  kFLASH_UserMarginValue1 = 0x0001U,
  kFLASH_UserMarginValue0 = 0x0002U
}
 Enumeration for supported flash user margin levels. More...
 
enum  flash_factory_margin_value_t {
  kFLASH_FactoryMarginValue1 = 0x0003U,
  kFLASH_FactoryMarginValue0 = 0x0004U
}
 Enumeration for supported factory margin levels. More...
 
enum  flash_margin_value_t {
  kFLASH_MarginValueNormal,
  kFLASH_MarginValueUser,
  kFLASH_MarginValueFactory,
  kFLASH_MarginValueInvalid
}
 Enumeration for supported flash margin levels. More...
 
enum  flash_security_state_t {
  kFLASH_SecurityStateNotSecure,
  kFLASH_SecurityStateBackdoorEnabled,
  kFLASH_SecurityStateBackdoorDisabled
}
 Enumeration for the three possible flash security states. More...
 
enum  flash_protection_state_t {
  kFLASH_ProtectionStateUnprotected,
  kFLASH_ProtectionStateProtected,
  kFLASH_ProtectionStateMixed
}
 Enumeration for the three possible flash protection levels. More...
 
enum  flash_property_tag_t {
  kFLASH_PropertyPflashSectorSize = 0x00U,
  kFLASH_PropertyPflashTotalSize = 0x01U,
  kFLASH_PropertyPflashBlockSize = 0x02U,
  kFLASH_PropertyPflashBlockCount = 0x03U,
  kFLASH_PropertyPflashBlockBaseAddr = 0x04U,
  kFLASH_PropertyPflashFacSupport = 0x05U,
  kFLASH_PropertyEepromTotalSize = 0x15U,
  kFLASH_PropertyFlashMemoryIndex = 0x20U,
  kFLASH_PropertyFlashCacheControllerIndex = 0x21U,
  kFLASH_PropertyEepromBlockBaseAddr = 0x22U,
  kFLASH_PropertyEepromSectorSize = 0x23U,
  kFLASH_PropertyEepromBlockSize = 0x24U,
  kFLASH_PropertyEepromBlockCount = 0x25U,
  kFLASH_PropertyFlashClockFrequency = 0x26U
}
 Enumeration for various flash properties. More...
 
enum  {
  kFLASH_ExecuteInRamFunctionMaxSizeInWords = 16U,
  kFLASH_ExecuteInRamFunctionTotalNum = 2U
}
 Constants for execute-in-RAM flash function. More...
 
enum  flash_memory_index_t {
  kFLASH_MemoryIndexPrimaryFlash = 0x00U,
  kFLASH_MemoryIndexSecondaryFlash = 0x01U
}
 Enumeration for the flash memory index. More...
 
enum  flash_cache_controller_index_t {
  kFLASH_CacheControllerIndexForCore0 = 0x00U,
  kFLASH_CacheControllerIndexForCore1 = 0x01U
}
 Enumeration for the flash cache controller index. More...
 
enum  flash_prefetch_speculation_option_t
 Enumeration for the two possible options of flash prefetch speculation.
 
enum  flash_cache_clear_process_t {
  kFLASH_CacheClearProcessPre = 0x00U,
  kFLASH_CacheClearProcessPost = 0x01U
}
 Flash cache clear process code. More...
 

Flash version

enum  _flash_driver_version_constants {
  kFLASH_DriverVersionName = 'F',
  kFLASH_DriverVersionMajor = 2,
  kFLASH_DriverVersionMinor = 1,
  kFLASH_DriverVersionBugfix = 0
}
 Flash driver version for ROM. More...
 
#define MAKE_VERSION(major, minor, bugfix)   (((major) << 16) | ((minor) << 8) | (bugfix))
 Constructs the version number for drivers. More...
 
#define FSL_FLASH_DRIVER_VERSION   (MAKE_VERSION(2, 1, 0))
 Flash driver version for SDK. More...
 

Flash configuration

#define FLASH_SSD_CONFIG_ENABLE_EEPROM_SUPPORT   0
 Indicates whether to support EEPROM in the Flash driver. More...
 
#define FLASH_SSD_IS_EEPROM_ENABLED   FLASH_SSD_CONFIG_ENABLE_EEPROM_SUPPORT
 Indicates whether the EEPROM is enabled in the Flash driver.
 
#define FLASH_SSD_CONFIG_ENABLE_SECONDARY_FLASH_SUPPORT   1
 Indicates whether to support Secondary flash in the Flash driver. More...
 
#define FLASH_SSD_IS_SECONDARY_FLASH_ENABLED   (0)
 Indicates whether the secondary flash is supported in the Flash driver.
 
#define FLASH_DRIVER_IS_FLASH_RESIDENT   1
 Flash driver location. More...
 
#define FLASH_DRIVER_IS_EXPORTED   0
 Flash Driver Export option. More...
 
#define FLASH_ENABLE_STALLING_FLASH_CONTROLLER   1
 Enable flash stalling controller.
 

Flash status

enum  {
  kStatus_FLASH_Success = MAKE_STATUS(kStatusGroupGeneric, 0),
  kStatus_FLASH_InvalidArgument = MAKE_STATUS(kStatusGroupGeneric, 4),
  kStatus_FLASH_SizeError = MAKE_STATUS(kStatusGroupFlashDriver, 0),
  kStatus_FLASH_AlignmentError,
  kStatus_FLASH_AddressError = MAKE_STATUS(kStatusGroupFlashDriver, 2),
  kStatus_FLASH_AccessError,
  kStatus_FLASH_ProtectionViolation,
  kStatus_FLASH_CommandFailure,
  kStatus_FLASH_UnknownProperty = MAKE_STATUS(kStatusGroupFlashDriver, 6),
  kStatus_FLASH_EraseKeyError = MAKE_STATUS(kStatusGroupFlashDriver, 7),
  kStatus_FLASH_RegionExecuteOnly,
  kStatus_FLASH_ExecuteInRamFunctionNotReady,
  kStatus_FLASH_PartitionStatusUpdateFailure,
  kStatus_FLASH_SetFlexramAsEepromError,
  kStatus_FLASH_RecoverFlexramAsRamError,
  kStatus_FLASH_SetFlexramAsRamError = MAKE_STATUS(kStatusGroupFlashDriver, 13),
  kStatus_FLASH_RecoverFlexramAsEepromError,
  kStatus_FLASH_CommandNotSupported = MAKE_STATUS(kStatusGroupFlashDriver, 15),
  kStatus_FLASH_SwapSystemNotInUninitialized,
  kStatus_FLASH_SwapIndicatorAddressError,
  kStatus_FLASH_ReadOnlyProperty = MAKE_STATUS(kStatusGroupFlashDriver, 18),
  kStatus_FLASH_InvalidPropertyValue,
  kStatus_FLASH_InvalidSpeculationOption,
  kStatus_FLASH_ClockDivider = MAKE_STATUS(kStatusGroupFlashDriver, 21),
  kStatus_FLASH_EepromDoubleBitFault,
  kStatus_FLASH_EepromSingleBitFault
}
 Flash driver status codes. More...
 
#define kStatusGroupGeneric   0
 Flash driver status group. More...
 
#define kStatusGroupFlashDriver   1
 
#define MAKE_STATUS(group, code)   ((((group)*100) + (code)))
 Constructs a status code value from a group and a code number. More...
 

Flash API key

enum  _flash_driver_api_keys { kFLASH_ApiEraseKey = FOUR_CHAR_CODE('k', 'f', 'e', 'k') }
 Enumeration for Flash driver API keys. More...
 
#define FOUR_CHAR_CODE(a, b, c, d)   (((d) << 24) | ((c) << 16) | ((b) << 8) | ((a)))
 Constructs the four character code for the Flash driver API key. More...
 

Initialization

status_t FLASH_Init (flash_config_t *config)
 Initializes the global flash properties structure members. More...
 
status_t FLASH_SetCallback (flash_config_t *config, flash_callback_t callback)
 Sets the desired flash callback function. More...
 
status_t FLASH_PrepareExecuteInRamFunctions (flash_config_t *config)
 Prepares flash execute-in-RAM functions. More...
 

Erasing

status_t FLASH_EraseAll (flash_config_t *config, uint32_t key)
 Erases entire flash. More...
 
status_t FLASH_Erase (flash_config_t *config, uint32_t start, uint32_t lengthInBytes, uint32_t key)
 Erases the flash sectors encompassed by parameters passed into function. More...
 
status_t FLASH_EraseAllUnsecure (flash_config_t *config, uint32_t key)
 Erases the entire flash, including protected sectors. More...
 

Programming

status_t FLASH_Program (flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes)
 Programs flash with data at locations passed in through parameters. More...
 
status_t FLASH_ProgramOnce (flash_config_t *config, uint32_t index, uint32_t *src, uint32_t lengthInBytes)
 Programs Program Once Field through parameters. More...
 

Reading

status_t FLASH_ReadOnce (flash_config_t *config, uint32_t index, uint32_t *dst, uint32_t lengthInBytes)
 Reads the Program Once Field through parameters. More...
 

Security

status_t FLASH_GetSecurityState (flash_config_t *config, flash_security_state_t *state)
 Returns the security state via the pointer passed into the function. More...
 
status_t FLASH_SecurityBypass (flash_config_t *config, const uint8_t *backdoorKey)
 Allows users to bypass security with a backdoor key. More...
 

Verification

status_t FLASH_VerifyEraseAll (flash_config_t *config, flash_margin_value_t margin)
 Verifies erasure of the entire flash at a specified margin level. More...
 
status_t FLASH_VerifyErase (flash_config_t *config, uint32_t start, uint32_t lengthInBytes, flash_margin_value_t margin)
 Verifies an erasure of the desired flash area at a specified margin level. More...
 

Protection

status_t FLASH_IsProtected (flash_config_t *config, uint32_t start, uint32_t lengthInBytes, flash_protection_state_t *protection_state)
 Returns the protection state of the desired flash area via the pointer passed into the function. More...
 

Properties

status_t FLASH_GetProperty (flash_config_t *config, flash_property_tag_t whichProperty, uint32_t *value)
 Returns the desired flash property. More...
 
status_t FLASH_SetProperty (flash_config_t *config, flash_property_tag_t whichProperty, uint32_t value)
 Sets the desired flash property. More...
 

Flash Protection Utilities

status_t FLASH_PflashSetProtection (flash_config_t *config, pflash_protection_status_t *protectStatus)
 Sets the PFlash Protection to the intended protection status. More...
 
status_t FLASH_PflashGetProtection (flash_config_t *config, pflash_protection_status_t *protectStatus)
 Gets the PFlash protection status. More...
 

Flash Speculation Utilities

status_t FLASH_PflashSetPrefetchSpeculation (flash_prefetch_speculation_status_t *speculationStatus)
 Sets the PFlash prefetch speculation to the intended speculation status. More...
 
status_t FLASH_PflashGetPrefetchSpeculation (flash_prefetch_speculation_status_t *speculationStatus)
 Gets the PFlash prefetch speculation status. More...
 

Data Structure Documentation

struct pflash_protection_status_t

Data Fields

uint8_t fprotvalue
 FPROT[7:0] . More...
 

Field Documentation

uint8_t pflash_protection_status_t::fprotvalue
struct flash_prefetch_speculation_status_t

Data Fields

flash_prefetch_speculation_option_t instructionOption
 Instruction speculation. More...
 
flash_prefetch_speculation_option_t dataOption
 Data speculation. More...
 

Field Documentation

flash_prefetch_speculation_option_t flash_prefetch_speculation_status_t::instructionOption
flash_prefetch_speculation_option_t flash_prefetch_speculation_status_t::dataOption
struct flash_protection_config_t

Data Fields

uint32_t lowRegionStart
 Start address of flash protection low region. More...
 
uint32_t lowRegionEnd
 End address of flash protection low region. More...
 
uint32_t highRegionStart
 Start address of flash protection high region. More...
 
uint32_t highRegionEnd
 End address of flash protection high region. More...
 

Field Documentation

uint32_t flash_protection_config_t::lowRegionStart
uint32_t flash_protection_config_t::lowRegionEnd
uint32_t flash_protection_config_t::highRegionStart
uint32_t flash_protection_config_t::highRegionEnd
struct flash_operation_config_t

Data Fields

uint32_t convertedAddress
 A converted address for the current flash type. More...
 
uint32_t activeSectorSize
 A sector size of the current flash type. More...
 
uint32_t activeBlockSize
 A block size of the current flash type. More...
 
uint32_t blockWriteUnitSize
 The write unit size. More...
 
uint32_t sectorCmdAddressAligment
 An erase sector command address alignment. More...
 
uint32_t sectionCmdAddressAligment
 A program/verify section command address alignment. More...
 
uint32_t programCmdAddressAligment
 A program flash command address alignment. More...
 

Field Documentation

uint32_t flash_operation_config_t::convertedAddress
uint32_t flash_operation_config_t::activeSectorSize
uint32_t flash_operation_config_t::activeBlockSize
uint32_t flash_operation_config_t::blockWriteUnitSize
uint32_t flash_operation_config_t::sectorCmdAddressAligment
uint32_t flash_operation_config_t::sectionCmdAddressAligment
uint32_t flash_operation_config_t::programCmdAddressAligment
union function_run_command_t
struct flash_execute_in_ram_function_config_t

Data Fields

uint32_t activeFunctionCount
 Number of available execute-in-RAM functions. More...
 
function_run_command_t runCmdFuncAddr
 Execute-in-RAM function: flash_run_command. More...
 

Field Documentation

uint32_t flash_execute_in_ram_function_config_t::activeFunctionCount
function_run_command_t flash_execute_in_ram_function_config_t::runCmdFuncAddr
struct flash_config_t

An instance of this structure is allocated by the user of the flash driver and passed into each of the driver APIs.

Data Fields

uint32_t PFlashBlockBase
 A base address of the first PFlash block.
 
uint32_t PFlashTotalSize
 The size of the combined PFlash block. More...
 
uint8_t PFlashBlockCount
 A number of PFlash blocks. More...
 
uint8_t FlashMemoryIndex
 0 - primary flash; 1 - secondary flash
 
uint8_t FlashCacheControllerIndex
 0 - Controller for core 0; 1 - Controller for core 1
 
uint8_t Reserved0
 Reserved field 0.
 
uint32_t PFlashSectorSize
 The size in bytes of a sector of PFlash. More...
 
flash_callback_t PFlashCallback
 The callback function for the flash API. More...
 
uint32_t * flashExecuteInRamFunctionInfo
 An information structure of the flash execute-in-RAM function. More...
 
uint32_t EEpromTotalSize
 For the FlexNVM device, this is the size in bytes of the EEPROM area which was partitioned from FlexRAM. More...
 
uint32_t EEpromBlockBase
 This is the base address of the Eeprom. More...
 
uint8_t EEpromBlockCount
 A number of EEPROM blocks. More...
 
uint8_t EEpromSectorSize
 The size in bytes of a sector of EEPROM. More...
 
uint8_t Reserved1 [2]
 Reserved field 1.
 
uint32_t PFlashClockFreq
 The flash peripheral clock frequency.
 
uint32_t PFlashMarginLevel
 The margin level.
 

Field Documentation

uint32_t flash_config_t::PFlashTotalSize
uint8_t flash_config_t::PFlashBlockCount
uint32_t flash_config_t::PFlashSectorSize
flash_callback_t flash_config_t::PFlashCallback
uint32_t* flash_config_t::flashExecuteInRamFunctionInfo
uint32_t flash_config_t::EEpromTotalSize

For the non-FlexNVM device, this field is unused

uint32_t flash_config_t::EEpromBlockBase

For the non-Eeprom device, this field is unused

uint8_t flash_config_t::EEpromBlockCount

For the non-Eeprom device, this field is unused

uint8_t flash_config_t::EEpromSectorSize

For the non-Eeprom device, this field is unused

Macro Definition Documentation

#define MAKE_VERSION (   major,
  minor,
  bugfix 
)    (((major) << 16) | ((minor) << 8) | (bugfix))
#define FSL_FLASH_DRIVER_VERSION   (MAKE_VERSION(2, 1, 0))

Version 2.1.0.

#define FLASH_SSD_CONFIG_ENABLE_EEPROM_SUPPORT   0

Disables the EEPROM support.

#define FLASH_SSD_CONFIG_ENABLE_SECONDARY_FLASH_SUPPORT   1

Enables the secondary flash support by default.

#define FLASH_DRIVER_IS_FLASH_RESIDENT   1

Used for the flash resident application.

#define FLASH_DRIVER_IS_EXPORTED   0

Used for the MCUXpresso SDK application.

#define kStatusGroupGeneric   0
#define MAKE_STATUS (   group,
  code 
)    ((((group)*100) + (code)))
#define FOUR_CHAR_CODE (   a,
  b,
  c,
 
)    (((d) << 24) | ((c) << 16) | ((b) << 8) | ((a)))

Enumeration Type Documentation

Enumerator
kFLASH_DriverVersionName 

Flash driver version name.

kFLASH_DriverVersionMajor 

Major flash driver version.

kFLASH_DriverVersionMinor 

Minor flash driver version.

kFLASH_DriverVersionBugfix 

Bugfix for flash driver version.

anonymous enum
Enumerator
kStatus_FLASH_Success 

API is executed successfully.

kStatus_FLASH_InvalidArgument 

Invalid argument.

kStatus_FLASH_SizeError 

Error size.

kStatus_FLASH_AlignmentError 

Parameter is not aligned with the specified baseline.

kStatus_FLASH_AddressError 

Address is out of range.

kStatus_FLASH_AccessError 

Invalid instruction codes and out-of bound addresses.

kStatus_FLASH_ProtectionViolation 

The program/erase operation is requested to execute on protected areas.

kStatus_FLASH_CommandFailure 

Run-time error during command execution.

kStatus_FLASH_UnknownProperty 

Unknown property.

kStatus_FLASH_EraseKeyError 

API erase key is invalid.

kStatus_FLASH_RegionExecuteOnly 

The current region is execute-only.

kStatus_FLASH_ExecuteInRamFunctionNotReady 

Execute-in-RAM function is not available.

kStatus_FLASH_PartitionStatusUpdateFailure 

Failed to update partition status.

kStatus_FLASH_SetFlexramAsEepromError 

Failed to set FlexRAM as EEPROM.

kStatus_FLASH_RecoverFlexramAsRamError 

Failed to recover FlexRAM as RAM.

kStatus_FLASH_SetFlexramAsRamError 

Failed to set FlexRAM as RAM.

kStatus_FLASH_RecoverFlexramAsEepromError 

Failed to recover FlexRAM as EEPROM.

kStatus_FLASH_CommandNotSupported 

Flash API is not supported.

kStatus_FLASH_SwapSystemNotInUninitialized 

Swap system is not in an uninitialzed state.

kStatus_FLASH_SwapIndicatorAddressError 

The swap indicator address is invalid.

kStatus_FLASH_ReadOnlyProperty 

The flash property is read-only.

kStatus_FLASH_InvalidPropertyValue 

The flash property value is out of range.

kStatus_FLASH_InvalidSpeculationOption 

The option of flash prefetch speculation is invalid.

kStatus_FLASH_ClockDivider 

Flash clock prescaler is wrong.

kStatus_FLASH_EepromDoubleBitFault 

A double bit fault was detected in the stored parity.

kStatus_FLASH_EepromSingleBitFault 

A single bit fault was detected in the stored parity.

Note
The resulting value is built with a byte order such that the string being readable in expected order when viewed in a hex editor, if the value is treated as a 32-bit little endian value.
Enumerator
kFLASH_ApiEraseKey 

Key value used to validate all flash erase APIs.

Enumerator
kFLASH_ReadMarginValueNormal 

Use the 'normal' read level for 1s.

kFLASH_UserMarginValue1 

Apply the 'User' margin to the normal read-1 level.

kFLASH_UserMarginValue0 

Apply the 'User' margin to the normal read-0 level.

Enumerator
kFLASH_FactoryMarginValue1 

Apply the 'Factory' margin to the normal read-1 level.

kFLASH_FactoryMarginValue0 

Apply the 'Factory' margin to the normal read-0 level.

Enumerator
kFLASH_MarginValueNormal 

Use the 'normal' read level for 1s.

kFLASH_MarginValueUser 

Apply the 'User' margin to the normal read-1 level.

kFLASH_MarginValueFactory 

Apply the 'Factory' margin to the normal read-1 level.

kFLASH_MarginValueInvalid 

Not real margin level, Used to determine the range of valid margin level.

Enumerator
kFLASH_SecurityStateNotSecure 

Flash is not secure.

kFLASH_SecurityStateBackdoorEnabled 

Flash backdoor is enabled.

kFLASH_SecurityStateBackdoorDisabled 

Flash backdoor is disabled.

Enumerator
kFLASH_ProtectionStateUnprotected 

Flash region is not protected.

kFLASH_ProtectionStateProtected 

Flash region is protected.

kFLASH_ProtectionStateMixed 

Flash is mixed with protected and unprotected region.

Enumerator
kFLASH_PropertyPflashSectorSize 

Pflash sector size property.

kFLASH_PropertyPflashTotalSize 

Pflash total size property.

kFLASH_PropertyPflashBlockSize 

Pflash block size property.

kFLASH_PropertyPflashBlockCount 

Pflash block count property.

kFLASH_PropertyPflashBlockBaseAddr 

Pflash block base address property.

kFLASH_PropertyPflashFacSupport 

Pflash fac support property.

kFLASH_PropertyEepromTotalSize 

EEPROM total size property.

kFLASH_PropertyFlashMemoryIndex 

Flash memory index property.

kFLASH_PropertyFlashCacheControllerIndex 

Flash cache controller index property.

kFLASH_PropertyEepromBlockBaseAddr 

EEPROM block base address property.

kFLASH_PropertyEepromSectorSize 

EEPROM sector size property.

kFLASH_PropertyEepromBlockSize 

EEPROM block size property.

kFLASH_PropertyEepromBlockCount 

EEPROM block count property.

kFLASH_PropertyFlashClockFrequency 

Flash peripheral clock property.

anonymous enum

_flash_execute_in_ram_function_constants

Enumerator
kFLASH_ExecuteInRamFunctionMaxSizeInWords 

The maximum size of execute-in-RAM function.

kFLASH_ExecuteInRamFunctionTotalNum 

Total number of execute-in-RAM functions.

Enumerator
kFLASH_MemoryIndexPrimaryFlash 

Current flash memory is primary flash.

kFLASH_MemoryIndexSecondaryFlash 

Current flash memory is secondary flash.

Enumerator
kFLASH_CacheControllerIndexForCore0 

Current flash cache controller is for core 0.

kFLASH_CacheControllerIndexForCore1 

Current flash cache controller is for core 1.

Enumerator
kFLASH_CacheClearProcessPre 

Pre flash cache clear process.

kFLASH_CacheClearProcessPost 

Post flash cache clear process.

Function Documentation

status_t FLASH_Init ( flash_config_t config)

This function checks and initializes the Flash module for the other Flash APIs.

Parameters
configPointer to the storage for the driver runtime state.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_ClockDividerFlash clock prescaler is wrong.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
status_t FLASH_SetCallback ( flash_config_t config,
flash_callback_t  callback 
)
Parameters
configPointer to the storage for the driver runtime state.
callbackA callback function to be stored in the driver.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
status_t FLASH_PrepareExecuteInRamFunctions ( flash_config_t config)
Parameters
configPointer to the storage for the driver runtime state.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
status_t FLASH_EraseAll ( flash_config_t config,
uint32_t  key 
)
Parameters
configPointer to the storage for the driver runtime state.
keyA value used to validate all flash erase APIs.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_EraseKeyErrorAPI erase key is invalid.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during command execution.
kStatus_FLASH_EepromSingleBitFaultEEPROM single bit fault error code.
kStatus_FLASH_EepromDoubleBitFaultEEPROM double bit fault error code.
status_t FLASH_Erase ( flash_config_t config,
uint32_t  start,
uint32_t  lengthInBytes,
uint32_t  key 
)

This function erases the appropriate number of flash sectors based on the desired start address and length.

Parameters
configThe pointer to the storage for the driver runtime state.
startThe start address of the desired flash memory to be erased. The start address does not need to be sector-aligned but must be word-aligned.
lengthInBytesThe length, given in bytes (not words or long-words) to be erased. Must be word-aligned.
keyThe value used to validate all flash erase APIs.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_AlignmentErrorThe parameter is not aligned with the specified baseline.
kStatus_FLASH_AddressErrorThe address is out of range.
kStatus_FLASH_EraseKeyErrorThe API erase key is invalid.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during the command execution.
status_t FLASH_EraseAllUnsecure ( flash_config_t config,
uint32_t  key 
)
Parameters
configPointer to the storage for the driver runtime state.
keyA value used to validate all flash erase APIs.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_EraseKeyErrorAPI erase key is invalid.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during command execution.
kStatus_FLASH_EepromSingleBitFaultEEPROM single bit fault error code.
kStatus_FLASH_EepromDoubleBitFaultEEPROM double bit fault error code.
status_t FLASH_Program ( flash_config_t config,
uint32_t  start,
uint32_t *  src,
uint32_t  lengthInBytes 
)

This function programs the flash memory with the desired data for a given flash area as determined by the start address and the length.

Parameters
configA pointer to the storage for the driver runtime state.
startThe start address of the desired flash memory to be programmed. Must be word-aligned.
srcA pointer to the source buffer of data that is to be programmed into the flash.
lengthInBytesThe length, given in bytes (not words or long-words), to be programmed. Must be word-aligned.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_AlignmentErrorParameter is not aligned with the specified baseline.
kStatus_FLASH_AddressErrorAddress is out of range.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during the command execution.
status_t FLASH_ProgramOnce ( flash_config_t config,
uint32_t  index,
uint32_t *  src,
uint32_t  lengthInBytes 
)

This function programs the Program Once Field with the desired data for a given flash area as determined by the index and length.

Parameters
configA pointer to the storage for the driver runtime state.
indexThe index indicating which area of the Program Once Field to be programmed.
srcA pointer to the source buffer of data that is to be programmed into the Program Once Field.
lengthInBytesThe length, given in bytes (not words or long-words), to be programmed. Must be word-aligned.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during the command execution.
status_t FLASH_ReadOnce ( flash_config_t config,
uint32_t  index,
uint32_t *  dst,
uint32_t  lengthInBytes 
)

This function reads the read once feild with given index and length.

Parameters
configA pointer to the storage for the driver runtime state.
indexThe index indicating the area of program once field to be read.
dstA pointer to the destination buffer of data that is used to store data to be read.
lengthInBytesThe length, given in bytes (not words or long-words), to be programmed. Must be word-aligned.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during the command execution.
status_t FLASH_GetSecurityState ( flash_config_t config,
flash_security_state_t state 
)

This function retrieves the current flash security status, including the security enabling state and the backdoor key enabling state.

Parameters
configA pointer to storage for the driver runtime state.
stateA pointer to the value returned for the current security status code:
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
status_t FLASH_SecurityBypass ( flash_config_t config,
const uint8_t *  backdoorKey 
)

If the MCU is in secured state, this function unsecures the MCU by comparing the provided backdoor key with ones in the flash configuration field.

Parameters
configA pointer to the storage for the driver runtime state.
backdoorKeyA pointer to the user buffer containing the backdoor key.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during the command execution.
status_t FLASH_VerifyEraseAll ( flash_config_t config,
flash_margin_value_t  margin 
)

This function checks whether the flash is erased to the specified read margin level.

Parameters
configA pointer to the storage for the driver runtime state.
marginRead margin choice.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during the command execution.
kStatus_FLASH_EepromSingleBitFaultEEPROM single bit fault error code.
kStatus_FLASH_EepromDoubleBitFaultEEPROM double bit fault error code.
status_t FLASH_VerifyErase ( flash_config_t config,
uint32_t  start,
uint32_t  lengthInBytes,
flash_margin_value_t  margin 
)

This function checks the appropriate number of flash sectors based on the desired start address and length to check whether the flash is erased to the specified read margin level.

Parameters
configA pointer to the storage for the driver runtime state.
marginRead margin choice.
startThe start address of the desired flash memory to be verified. The start address does not need to be sector-aligned but must be word-aligned.
lengthInBytesThe length, given in bytes (not words or long-words), to be verified. Must be word-aligned.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_AlignmentErrorParameter is not aligned with specified baseline.
kStatus_FLASH_AddressErrorAddress is out of range.
kStatus_FLASH_ExecuteInRamFunctionNotReadyExecute-in-RAM function is not available.
kStatus_FLASH_AccessErrorInvalid instruction codes and out-of bounds addresses.
kStatus_FLASH_ProtectionViolationThe program/erase operation is requested to execute on protected areas.
kStatus_FLASH_CommandFailureRun-time error during the command execution.
status_t FLASH_IsProtected ( flash_config_t config,
uint32_t  start,
uint32_t  lengthInBytes,
flash_protection_state_t protection_state 
)

This function retrieves the current flash protect status for a given flash area as determined by the start address and length.

Parameters
configA pointer to the storage for the driver runtime state.
startThe start address of the desired flash memory to be checked. Must be word-aligned.
lengthInBytesThe length, given in bytes (not words or long-words) to be checked. Must be word-aligned.
protection_stateA pointer to the value returned for the current protection status code for the desired flash area.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_AlignmentErrorParameter is not aligned with specified baseline.
kStatus_FLASH_AddressErrorThe address is out of range.
status_t FLASH_GetProperty ( flash_config_t config,
flash_property_tag_t  whichProperty,
uint32_t *  value 
)
Parameters
configA pointer to the storage for the driver runtime state.
whichPropertyThe desired property from the list of properties in enum flash_property_tag_t
valueA pointer to the value returned for the desired flash property.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_UnknownPropertyAn unknown property tag.
status_t FLASH_SetProperty ( flash_config_t config,
flash_property_tag_t  whichProperty,
uint32_t  value 
)
Parameters
configA pointer to the storage for the driver runtime state.
whichPropertyThe desired property from the list of properties in enum flash_property_tag_t
valueA to set for the desired flash property.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_UnknownPropertyAn unknown property tag.
kStatus_FLASH_InvalidPropertyValueAn invalid property value.
kStatus_FLASH_ReadOnlyPropertyAn read-only property tag.
status_t FLASH_PflashSetProtection ( flash_config_t config,
pflash_protection_status_t protectStatus 
)
Parameters
configA pointer to storage for the driver runtime state.
protectStatusThe expected protect status to set to the PFlash protection register.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
kStatus_FLASH_CommandFailureRun-time error during command execution.
status_t FLASH_PflashGetProtection ( flash_config_t config,
pflash_protection_status_t protectStatus 
)
Parameters
configA pointer to the storage for the driver runtime state.
protectStatusProtect status returned by the PFlash IP.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidArgumentAn invalid argument is provided.
status_t FLASH_PflashSetPrefetchSpeculation ( flash_prefetch_speculation_status_t speculationStatus)
Parameters
speculationStatusThe expected protect status to set to the PFlash protection register. Each bit is
Return values
kStatus_FLASH_SuccessAPI was executed successfully.
kStatus_FLASH_InvalidSpeculationOptionAn invalid speculation option argument is provided.
status_t FLASH_PflashGetPrefetchSpeculation ( flash_prefetch_speculation_status_t speculationStatus)
Parameters
speculationStatusSpeculation status returned by the PFlash IP.
Return values
kStatus_FLASH_SuccessAPI was executed successfully.