34 #if (defined(BL_TARGET_FLASH) || defined(BL_TARGET_ROM) || defined(BL_TARGET_RAM)) 37 #include "fsl_device_registers.h" 38 #include "bootloader_common.h" 40 #include "fsl_common.h" 57 #if !defined(MAKE_VERSION) 58 #define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix)) 62 #define FSL_FLASH_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) 65 enum _flash_driver_version_constants 79 #if !defined(FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT) 80 #define FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT 1 84 #define FLASH_SSD_IS_FLEXNVM_ENABLED (FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT && FSL_FEATURE_FLASH_HAS_FLEX_NVM) 87 #if !defined(FLASH_DRIVER_IS_FLASH_RESIDENT) 88 #if (!defined(BL_TARGET_ROM) && !defined(BL_TARGET_RAM)) 89 #define FLASH_DRIVER_IS_FLASH_RESIDENT 1 91 #define FLASH_DRIVER_IS_FLASH_RESIDENT 0 96 #if !defined(FLASH_DRIVER_IS_EXPORTED) 97 #if (defined(BL_TARGET_ROM) || defined(BL_TARGET_FLASH)) 98 #define FLASH_DRIVER_IS_EXPORTED 1 100 #define FLASH_DRIVER_IS_EXPORTED 0 110 #if defined(kStatusGroup_FlashDriver) 111 #define kStatusGroupGeneric kStatusGroup_Generic 112 #define kStatusGroupFlashDriver kStatusGroup_FlashDriver 113 #elif defined(kStatusGroup_FLASH) 114 #define kStatusGroupGeneric kStatusGroup_Generic 115 #define kStatusGroupFlashDriver kStatusGroup_FLASH 117 #define kStatusGroupGeneric 0 118 #define kStatusGroupFlashDriver 1 122 #if !defined(MAKE_STATUS) 123 #define MAKE_STATUS(group, code) ((((group)*100) + (code))) 135 MAKE_STATUS(kStatusGroupFlashDriver, 1),
138 MAKE_STATUS(kStatusGroupFlashDriver, 3),
140 kStatusGroupFlashDriver, 4),
142 MAKE_STATUS(kStatusGroupFlashDriver, 5),
147 MAKE_STATUS(kStatusGroupFlashDriver, 9),
149 MAKE_STATUS(kStatusGroupFlashDriver, 10),
151 MAKE_STATUS(kStatusGroupFlashDriver, 11),
153 MAKE_STATUS(kStatusGroupFlashDriver, 12),
156 MAKE_STATUS(kStatusGroupFlashDriver, 14),
159 MAKE_STATUS(kStatusGroupFlashDriver, 16),
161 MAKE_STATUS(kStatusGroupFlashDriver, 17),
170 #if !defined(FOUR_CHAR_CODE) 171 #define FOUR_CHAR_CODE(a, b, c, d) (((d) << 24) | ((c) << 16) | ((b) << 8) | ((a))) 190 typedef enum _flash_margin_value
201 typedef enum _flash_security_state
211 typedef enum _flash_protection_state
221 typedef enum _flash_execute_only_access_state
231 typedef enum _flash_property_tag
263 typedef struct _flash_execute_in_ram_function_config
273 typedef enum _flash_read_resource_option
285 #if (FSL_FEATURE_FLASH_IS_FTFE == 1) 298 #
if 0x20000U == (FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT * FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE)
300 #elif 0x40000U == (FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT * FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE) 302 #elif 0x80000U == (FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT * FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE) 303 kFLASH_ResourceRangePflashSwapIfrStart = 0x20000U,
305 kFLASH_ResourceRangePflashSwapIfrStart = 0,
308 (kFLASH_ResourceRangePflashSwapIfrStart + 0xFFU),
317 typedef enum _flash_flexram_function_option
328 kFLASH_AccelerationRamSize = 0x400U
334 typedef enum _flash_swap_function_option
343 typedef enum _flash_swap_control_option
355 typedef enum _flash_swap_state
368 typedef enum _flash_swap_block_status
379 typedef struct _flash_swap_state_config
389 typedef struct _flash_swap_ifr_field_config
393 uint8_t reserved0[4];
394 #if (FSL_FEATURE_FLASH_IS_FTFE == 1) 395 uint8_t reserved1[2];
397 uint8_t reserved2[4];
404 typedef union _flash_swap_ifr_field_data
406 uint32_t flashSwapIfrData[2];
413 typedef enum _flash_partition_flexram_load_option
426 typedef struct _flash_operation_config
443 typedef struct _flash_config
470 #if defined(__cplusplus) 512 #if FLASH_DRIVER_IS_FLASH_RESIDENT 580 #if defined(FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD) && FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD 679 #if defined(FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD) && FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD 704 #if FLASH_SSD_IS_FLEXNVM_ENABLED 738 #if defined(FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD) && FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD 884 uint32_t lengthInBytes,
885 const uint32_t *expectedData,
887 uint32_t *failedAddress,
888 uint32_t *failedData);
933 uint32_t lengthInBytes,
956 uint32_t lengthInBytes,
1000 #if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD 1028 #if defined(FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD) && FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD 1031 flash_swap_control_option_t option,
1052 #if defined(FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP) && FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP 1078 #if defined(FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD) && FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD 1080 flash_partition_flexram_load_option_t option,
1081 uint32_t eepromDataSizeCode,
1082 uint32_t flexnvmPartitionCode);
1140 #if FLASH_SSD_IS_FLEXNVM_ENABLED 1159 #if FLASH_SSD_IS_FLEXNVM_ENABLED 1179 #if FLASH_SSD_IS_FLEXNVM_ENABLED 1197 #if FLASH_SSD_IS_FLEXNVM_ENABLED 1203 #if defined(__cplusplus) Definition: src/drivers/flash/fsl_flash.h:215
Flash Swap IFR field data.
Definition: src/drivers/flash/fsl_flash.h:404
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 desired flash area via the pointer passed into the function...
Definition: fsl_flash.c:1367
Definition: src/drivers/flash/fsl_flash.h:357
Definition: src/drivers/flash/fsl_flash.h:205
uint32_t sectionCmdAddressAligment
Definition: src/drivers/flash/fsl_flash.h:433
uint32_t PFlashSectorSize
Definition: src/drivers/flash/fsl_flash.h:448
Definition: src/drivers/flash/fsl_flash.h:239
flash_swap_block_status_t currentSwapBlockStatus
Definition: src/drivers/flash/fsl_flash.h:382
_flash_read_resource_range
Enumeration for the range of special-purpose flash resource.
Definition: src/drivers/flash/fsl_flash.h:283
Definition: src/drivers/flash/fsl_flash.h:150
uint16_t swapEnableWord
Definition: src/drivers/flash/fsl_flash.h:392
uint16_t swapDisableWord
Definition: src/drivers/flash/fsl_flash.h:396
Definition: src/drivers/flash/fsl_flash.h:257
flash_swap_state_t flashSwapState
Definition: src/drivers/flash/fsl_flash.h:381
status_t FLASH_GetSecurityState(flash_config_t *config, flash_security_state_t *state)
Returns the security state via the pointer passed into the function.
Definition: fsl_flash.c:1152
Definition: src/drivers/flash/fsl_flash.h:370
flash_swap_block_status_t
Definition: src/drivers/flash/fsl_flash.h:368
status_t FLASH_ReadResource(flash_config_t *config, uint32_t start, uint32_t *dst, uint32_t lengthInBytes, flash_read_resource_option_t option)
Read resource with data at locations passed in through parameters.
Definition: fsl_flash.c:1056
Definition: src/drivers/flash/fsl_flash.h:157
Definition: src/drivers/flash/fsl_flash.h:152
uint8_t * flashCacheClearCommand
Definition: src/drivers/flash/fsl_flash.h:267
Definition: src/drivers/flash/fsl_flash.h:290
uint32_t resourceCmdAddressAligment
Definition: src/drivers/flash/fsl_flash.h:434
Definition: src/drivers/flash/fsl_flash.h:183
void(* flash_callback_t)(void)
callback type used for pflash block
Definition: src/drivers/flash/fsl_flash.h:421
Definition: src/drivers/flash/fsl_flash.h:361
flash_swap_state_t
Enumeration for the possible flash swap status.
Definition: src/drivers/flash/fsl_flash.h:355
Definition: src/drivers/flash/fsl_flash.h:415
uint16_t swapIndicatorAddress
Definition: src/drivers/flash/fsl_flash.h:391
Flash Swap IFR fields.
Definition: src/drivers/flash/fsl_flash.h:389
status_t FLASH_VerifyErase(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, flash_margin_value_t margin)
Verifies erasure of desired flash area at specified margin level.
Definition: fsl_flash.c:1236
Definition: src/drivers/flash/fsl_flash.h:337
Definition: src/drivers/flash/fsl_flash.h:234
uint32_t DFlashBlockBase
Definition: src/drivers/flash/fsl_flash.h:457
Definition: src/drivers/flash/fsl_flash.h:256
Definition: src/drivers/flash/fsl_flash.h:145
uint32_t activeBlockSize
Definition: src/drivers/flash/fsl_flash.h:430
Definition: src/drivers/flash/fsl_flash.h:193
status_t FLASH_Erase(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, uint32_t key)
Erases flash sectors encompassed by parameters passed into function.
Definition: fsl_flash.c:604
status_t FLASH_DflashGetProtection(flash_config_t *config, uint8_t *protectStatus)
Get DFLASH Protection Status.
Definition: fsl_flash.c:1914
Definition: src/drivers/flash/fsl_flash.h:288
Definition: src/drivers/flash/fsl_flash.h:291
Flash Swap information.
Definition: src/drivers/flash/fsl_flash.h:379
flash_partition_flexram_load_option_t
Enumeration for FlexRAM load during reset option.
Definition: src/drivers/flash/fsl_flash.h:413
Definition: src/drivers/flash/fsl_flash.h:358
Definition: src/drivers/flash/fsl_flash.h:67
uint32_t sectorCmdAddressAligment
Definition: src/drivers/flash/fsl_flash.h:432
flash_read_resource_option_t
Enumeration for the two possible options of flash read resource command.
Definition: src/drivers/flash/fsl_flash.h:273
Definition: src/drivers/flash/fsl_flash.h:359
flash_callback_t PFlashCallback
Definition: src/drivers/flash/fsl_flash.h:449
uint32_t blockWriteUnitSize
Definition: src/drivers/flash/fsl_flash.h:431
Definition: src/drivers/flash/fsl_flash.h:155
status_t FLASH_VerifyProgram(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, const uint32_t *expectedData, flash_margin_value_t margin, uint32_t *failedAddress, uint32_t *failedData)
Verifies programming of desired flash area at specified margin level.
Definition: fsl_flash.c:1295
Definition: src/drivers/flash/fsl_flash.h:141
Definition: src/drivers/flash/fsl_flash.h:160
_flash_execute_in_ram_function_constants
Constants for execute-in-ram flash function.
Definition: src/drivers/flash/fsl_flash.h:254
status_t FLASH_VerifyEraseAll(flash_config_t *config, flash_margin_value_t margin)
Verifies erasure of entire flash at specified margin level.
Definition: fsl_flash.c:1222
status_t FLASH_Swap(flash_config_t *config, uint32_t address, flash_swap_function_option_t option)
Swap the lower half flash with the higher half flaock.
Definition: fsl_flash.c:1731
Definition: src/drivers/flash/fsl_flash.h:247
Flash execute-in-ram function information.
Definition: src/drivers/flash/fsl_flash.h:263
Definition: src/drivers/flash/fsl_flash.h:233
status_t FLASH_EepromGetProtection(flash_config_t *config, uint8_t *protectStatus)
Get DFLASH Protection Status.
Definition: fsl_flash.c:1957
uint32_t activeSectorSize
Definition: src/drivers/flash/fsl_flash.h:429
status_t FLASH_VerifyEraseAllExecuteOnlySegments(flash_config_t *config, flash_margin_value_t margin)
Verifies if the program flash executeonly segments have been erased to the specified read margin leve...
Definition: fsl_flash.c:1353
Definition: src/drivers/flash/fsl_flash.h:235
Definition: src/drivers/flash/fsl_flash.h:195
uint32_t PFlashBlockCount
Definition: src/drivers/flash/fsl_flash.h:447
status_t FLASH_EepromWrite(flash_config_t *config, uint32_t start, uint8_t *src, uint32_t lengthInBytes)
Programs EEPROM with data at locations passed in through parameters.
Definition: fsl_flash.c:974
status_t FLASH_PflashSetProtection(flash_config_t *config, uint32_t protectStatus)
Set PFLASH Protection to the intended protection status.
Definition: fsl_flash.c:1860
Definition: src/drivers/flash/fsl_flash.h:243
status_t FLASH_EraseAll(flash_config_t *config, uint32_t key)
Erases entire flash.
Definition: fsl_flash.c:568
Definition: src/drivers/flash/fsl_flash.h:372
status_t FLASH_ProgramSection(flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes)
Programs flash with data at locations passed in through parameters via Program Section command...
Definition: fsl_flash.c:845
Definition: src/drivers/flash/fsl_flash.h:240
Definition: src/drivers/flash/fsl_flash.h:347
Definition: src/drivers/flash/fsl_flash.h:224
Definition: src/drivers/flash/fsl_flash.h:133
Definition: src/drivers/flash/fsl_flash.h:143
_flash_status
Flash driver status codes.
Definition: src/drivers/flash/fsl_flash.h:129
uint32_t PFlashAccessSegmentCount
Definition: src/drivers/flash/fsl_flash.h:451
Definition: src/drivers/flash/fsl_flash.h:246
Definition: src/drivers/flash/fsl_flash.h:241
Definition: src/drivers/flash/fsl_flash.h:289
Definition: src/drivers/flash/fsl_flash.h:237
uint8_t * flashRunCommand
Definition: src/drivers/flash/fsl_flash.h:266
flash_protection_state_t
Enumeration for the three possible flash protection levels.
Definition: src/drivers/flash/fsl_flash.h:211
uint32_t convertedAddress
Definition: src/drivers/flash/fsl_flash.h:428
status_t FLASH_SecurityBypass(flash_config_t *config, const uint8_t *backdoorKey)
Allows user to bypass security with a backdoor key.
Definition: fsl_flash.c:1190
Definition: src/drivers/flash/fsl_flash.h:238
Definition: src/drivers/flash/fsl_flash.h:275
Definition: src/drivers/flash/fsl_flash.h:132
uint32_t * flashExecuteInRamFunctionInfo
Definition: src/drivers/flash/fsl_flash.h:452
_flash_acceleration_ram_property
Enumeration for acceleration ram property.
Definition: src/drivers/flash/fsl_flash.h:326
Definition: src/drivers/flash/fsl_flash.h:287
flash_flexram_function_option_t
Enumeration for the two possilbe options of set flexram function command.
Definition: src/drivers/flash/fsl_flash.h:317
Definition: src/drivers/flash/fsl_flash.h:348
Definition: src/drivers/flash/fsl_flash.h:242
Definition: src/drivers/flash/fsl_flash.h:286
flash_property_tag_t
Enumeration for various flash properties.
Definition: src/drivers/flash/fsl_flash.h:231
status_t FLASH_Init(flash_config_t *config)
Initializes global flash properties structure members.
Definition: fsl_flash.c:468
flash_swap_block_status_t nextSwapBlockStatus
Definition: src/drivers/flash/fsl_flash.h:383
Definition: src/drivers/flash/fsl_flash.h:154
Definition: src/drivers/flash/fsl_flash.h:362
status_t FLASH_EraseAllUnsecure(flash_config_t *config, uint32_t key)
Erases entire flash, including protected sectors.
Definition: fsl_flash.c:676
Definition: src/drivers/flash/fsl_flash.h:310
status_t FLASH_PrepareExecuteInRamFunctions(flash_config_t *config)
Prepare flash execute-in-ram functions.
Definition: fsl_flash.c:549
uint32_t EEpromTotalSize
Definition: src/drivers/flash/fsl_flash.h:461
Definition: src/drivers/flash/fsl_flash.h:349
Definition: src/drivers/flash/fsl_flash.h:213
status_t FLASH_SetCallback(flash_config_t *config, flash_callback_t callback)
Set the desired flash callback function.
Definition: fsl_flash.c:536
Definition: src/drivers/flash/fsl_flash.h:204
Definition: src/drivers/flash/fsl_flash.h:417
Definition: src/drivers/flash/fsl_flash.h:336
flash_swap_control_option_t
Enumeration for the possible options of Swap Control commands.
Definition: src/drivers/flash/fsl_flash.h:343
status_t FLASH_GetProperty(flash_config_t *config, flash_property_tag_t whichProperty, uint32_t *value)
Returns the desired flash property.
Definition: fsl_flash.c:1588
flash_swap_ifr_field_config_t flashSwapIfrField
Definition: src/drivers/flash/fsl_flash.h:407
uint32_t FlexRAMBlockBase
Definition: src/drivers/flash/fsl_flash.h:453
flash_security_state_t
Enumeration for the three possible flash security states.
Definition: src/drivers/flash/fsl_flash.h:201
uint32_t PFlashTotalSize
Definition: src/drivers/flash/fsl_flash.h:446
Definition: src/drivers/flash/fsl_flash.h:277
Definition: src/drivers/flash/fsl_flash.h:236
flash_margin_value_t
Enumeration for supported flash margin levels.
Definition: src/drivers/flash/fsl_flash.h:190
Definition: src/drivers/flash/fsl_flash.h:320
Definition: src/drivers/flash/fsl_flash.h:148
status_t FLASH_EepromSetProtection(flash_config_t *config, uint8_t protectStatus)
Set EEPROM Protection to the intended protection status.
Definition: fsl_flash.c:1933
status_t FLASH_EraseAllExecuteOnlySegments(flash_config_t *config, uint32_t key)
Erases all program flash execute-only segments defined by the FXACC registers.
Definition: fsl_flash.c:713
status_t FLASH_SwapControl(flash_config_t *config, uint32_t address, flash_swap_control_option_t option, flash_swap_state_config_t *returnInfo)
Configure Swap function or Check the swap state of Flash Module.
Definition: fsl_flash.c:1686
Definition: src/drivers/flash/fsl_flash.h:131
_flash_driver_api_keys
Enumeration for flash driver API keys.
Definition: src/drivers/flash/fsl_flash.h:181
Definition: src/drivers/flash/fsl_flash.h:360
Flash driver state information.
Definition: src/drivers/flash/fsl_flash.h:443
Definition: src/drivers/flash/fsl_flash.h:223
Definition: src/drivers/flash/fsl_flash.h:346
Definition: src/drivers/flash/fsl_flash.h:139
uint32_t checkCmdAddressAligment
Definition: src/drivers/flash/fsl_flash.h:435
Definition: src/drivers/flash/fsl_flash.h:136
Definition: src/drivers/flash/fsl_flash.h:134
status_t FLASH_PflashGetProtection(flash_config_t *config, uint32_t *protectStatus)
Get PFLASH Protection Status.
Definition: fsl_flash.c:1877
status_t FLASH_ProgramOnce(flash_config_t *config, uint32_t index, uint32_t *src, uint32_t lengthInBytes)
Programs Program Once Field through parameters.
Definition: fsl_flash.c:808
uint32_t FlexRAMTotalSize
Definition: src/drivers/flash/fsl_flash.h:455
flash_execute_only_access_state_t
Enumeration for the three possible flash execute access levels.
Definition: src/drivers/flash/fsl_flash.h:221
uint32_t PFlashAccessSegmentSize
Definition: src/drivers/flash/fsl_flash.h:450
Definition: src/drivers/flash/fsl_flash.h:203
Definition: src/drivers/flash/fsl_flash.h:158
status_t FLASH_DflashSetProtection(flash_config_t *config, uint8_t protectStatus)
Set DFLASH Protection to the intended protection status.
Definition: fsl_flash.c:1890
Definition: apps/flash_driver_api/src/fsl_flash.h:224
Definition: src/drivers/flash/fsl_flash.h:194
Definition: src/drivers/flash/fsl_flash.h:137
Definition: src/drivers/flash/fsl_flash.h:192
Definition: src/drivers/flash/fsl_flash.h:225
uint32_t activeFunctionCount
Definition: src/drivers/flash/fsl_flash.h:265
Definition: src/drivers/flash/fsl_flash.h:68
status_t FLASH_SetFlexramFunction(flash_config_t *config, flash_flexram_function_option_t option)
Set FlexRAM Function command.
Definition: fsl_flash.c:1662
status_t FLASH_IsExecuteOnly(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, flash_execute_only_access_state_t *access_state)
Returns the access state of desired flash area via the pointer passed into the function.
Definition: fsl_flash.c:1505
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:121
Definition: src/drivers/flash/fsl_flash.h:146
Definition: src/drivers/flash/fsl_flash.h:144
Definition: src/drivers/flash/fsl_flash.h:311
Definition: src/drivers/flash/fsl_flash.h:69
Definition: src/drivers/flash/fsl_flash.h:214
Definition: src/drivers/flash/fsl_flash.h:244
Definition: src/drivers/flash/fsl_flash.h:319
flash_swap_function_option_t
Enumeration for the possible options of Swap function.
Definition: src/drivers/flash/fsl_flash.h:334
status_t FLASH_ProgramPartition(flash_config_t *config, flash_partition_flexram_load_option_t option, uint32_t eepromDataSizeCode, uint32_t flexnvmPartitionCode)
Prepares the FlexNVM block for use as data flash, EEPROM backup, or a combination of both and initial...
Definition: fsl_flash.c:1823
uint32_t DFlashTotalSize
Definition: src/drivers/flash/fsl_flash.h:459
Definition: src/drivers/flash/fsl_flash.h:245
Active flash information for current operation.
Definition: src/drivers/flash/fsl_flash.h:426
status_t FLASH_ReadOnce(flash_config_t *config, uint32_t index, uint32_t *dst, uint32_t lengthInBytes)
Read Program Once Field through parameters.
Definition: fsl_flash.c:1116
Definition: src/drivers/flash/fsl_flash.h:345
uint32_t PFlashBlockBase
Definition: src/drivers/flash/fsl_flash.h:445
Definition: src/drivers/flash/fsl_flash.h:70
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.
Definition: fsl_flash.c:741