Kinetis Bootloader  2.0.0
Common bootloader for Kinetis devices
src/drivers/flash/fsl_flash.h
1 /*
2  * Copyright (c) 2013-2016, Freescale Semiconductor, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * o Redistributions of source code must retain the above copyright notice, this list
9  * of conditions and the following disclaimer.
10  *
11  * o Redistributions in binary form must reproduce the above copyright notice, this
12  * list of conditions and the following disclaimer in the documentation and/or
13  * other materials provided with the distribution.
14  *
15  * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef _FSL_FLASH_H_
32 #define _FSL_FLASH_H_
33 
34 #if (defined(BL_TARGET_FLASH) || defined(BL_TARGET_ROM) || defined(BL_TARGET_RAM))
35 #include <assert.h>
36 #include <string.h>
37 #include "fsl_device_registers.h"
38 #include "bootloader_common.h"
39 #else
40 #include "fsl_common.h"
41 #endif
42 
43 /*******************************************************************************
44  * Definitions
45  ******************************************************************************/
46 
57 #if !defined(MAKE_VERSION)
58 #define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix))
59 #endif
60 
62 #define FSL_FLASH_DRIVER_VERSION (MAKE_VERSION(2, 1, 0))
65 enum _flash_driver_version_constants
66 {
71 };
79 #if !defined(FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT)
80 #define FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT 1
81 #endif
82 
84 #define FLASH_SSD_IS_FLEXNVM_ENABLED (FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT && FSL_FEATURE_FLASH_HAS_FLEX_NVM)
85 
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
90 #else
91 #define FLASH_DRIVER_IS_FLASH_RESIDENT 0
92 #endif
93 #endif
94 
96 #if !defined(FLASH_DRIVER_IS_EXPORTED)
97 #if (defined(BL_TARGET_ROM) || defined(BL_TARGET_FLASH))
98 #define FLASH_DRIVER_IS_EXPORTED 1
99 #else
100 #define FLASH_DRIVER_IS_EXPORTED 0
101 #endif
102 #endif
103 
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
116 #else
117 #define kStatusGroupGeneric 0
118 #define kStatusGroupFlashDriver 1
119 #endif
120 
122 #if !defined(MAKE_STATUS)
123 #define MAKE_STATUS(group, code) ((((group)*100) + (code)))
124 #endif
125 
130 {
131  kStatus_FLASH_Success = MAKE_STATUS(kStatusGroupGeneric, 0),
132  kStatus_FLASH_InvalidArgument = MAKE_STATUS(kStatusGroupGeneric, 4),
133  kStatus_FLASH_SizeError = MAKE_STATUS(kStatusGroupFlashDriver, 0),
135  MAKE_STATUS(kStatusGroupFlashDriver, 1),
136  kStatus_FLASH_AddressError = MAKE_STATUS(kStatusGroupFlashDriver, 2),
138  MAKE_STATUS(kStatusGroupFlashDriver, 3),
140  kStatusGroupFlashDriver, 4),
142  MAKE_STATUS(kStatusGroupFlashDriver, 5),
143  kStatus_FLASH_UnknownProperty = MAKE_STATUS(kStatusGroupFlashDriver, 6),
144  kStatus_FLASH_EraseKeyError = MAKE_STATUS(kStatusGroupFlashDriver, 7),
145  kStatus_FLASH_RegionExecuteOnly = MAKE_STATUS(kStatusGroupFlashDriver, 8),
147  MAKE_STATUS(kStatusGroupFlashDriver, 9),
149  MAKE_STATUS(kStatusGroupFlashDriver, 10),
151  MAKE_STATUS(kStatusGroupFlashDriver, 11),
153  MAKE_STATUS(kStatusGroupFlashDriver, 12),
154  kStatus_FLASH_SetFlexramAsRamError = MAKE_STATUS(kStatusGroupFlashDriver, 13),
156  MAKE_STATUS(kStatusGroupFlashDriver, 14),
157  kStatus_FLASH_CommandNotSupported = MAKE_STATUS(kStatusGroupFlashDriver, 15),
159  MAKE_STATUS(kStatusGroupFlashDriver, 16),
161  MAKE_STATUS(kStatusGroupFlashDriver, 17),
162 };
170 #if !defined(FOUR_CHAR_CODE)
171 #define FOUR_CHAR_CODE(a, b, c, d) (((d) << 24) | ((c) << 16) | ((b) << 8) | ((a)))
172 #endif
173 
182 {
183  kFLASH_ApiEraseKey = FOUR_CHAR_CODE('k', 'f', 'e', 'k')
184 };
190 typedef enum _flash_margin_value
191 {
197 
201 typedef enum _flash_security_state
202 {
207 
211 typedef enum _flash_protection_state
212 {
217 
221 typedef enum _flash_execute_only_access_state
222 {
227 
231 typedef enum _flash_property_tag
232 {
250 
255 {
258 };
259 
263 typedef struct _flash_execute_in_ram_function_config
264 {
266  uint8_t *flashRunCommand;
269 
273 typedef enum _flash_read_resource_option
274 {
276  0x00U,
279 
284 {
285 #if (FSL_FEATURE_FLASH_IS_FTFE == 1)
293 #else /* FSL_FEATURE_FLASH_IS_FTFL == 1 or FSL_FEATURE_FLASH_IS_FTFA = =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,
304 #else
305  kFLASH_ResourceRangePflashSwapIfrStart = 0,
306 #endif
308  (kFLASH_ResourceRangePflashSwapIfrStart + 0xFFU),
309 #endif
312 };
313 
317 typedef enum _flash_flexram_function_option
318 {
322 
327 {
328  kFLASH_AccelerationRamSize = 0x400U
329 };
330 
334 typedef enum _flash_swap_function_option
335 {
339 
343 typedef enum _flash_swap_control_option
344 {
351 
355 typedef enum _flash_swap_state
356 {
364 
368 typedef enum _flash_swap_block_status
369 {
371  0x00U,
373  0x01U,
375 
379 typedef struct _flash_swap_state_config
380 {
381  flash_swap_state_t flashSwapState;
382  flash_swap_block_status_t currentSwapBlockStatus;
383  flash_swap_block_status_t nextSwapBlockStatus;
385 
389 typedef struct _flash_swap_ifr_field_config
390 {
392  uint16_t swapEnableWord;
393  uint8_t reserved0[4];
394 #if (FSL_FEATURE_FLASH_IS_FTFE == 1)
395  uint8_t reserved1[2];
396  uint16_t swapDisableWord;
397  uint8_t reserved2[4];
398 #endif
400 
404 typedef union _flash_swap_ifr_field_data
405 {
406  uint32_t flashSwapIfrData[2];
409 
413 typedef enum _flash_partition_flexram_load_option
414 {
416  0x00U,
419 
421 typedef void (*flash_callback_t)(void);
422 
426 typedef struct _flash_operation_config
427 {
428  uint32_t convertedAddress;
429  uint32_t activeSectorSize;
430  uint32_t activeBlockSize;
437 
443 typedef struct _flash_config
444 {
445  uint32_t PFlashBlockBase;
446  uint32_t PFlashTotalSize;
447  uint32_t PFlashBlockCount;
448  uint32_t PFlashSectorSize;
453  uint32_t FlexRAMBlockBase;
455  uint32_t FlexRAMTotalSize;
457  uint32_t DFlashBlockBase;
459  uint32_t DFlashTotalSize;
461  uint32_t EEpromTotalSize;
465 
466 /*******************************************************************************
467  * API
468  ******************************************************************************/
469 
470 #if defined(__cplusplus)
471 extern "C" {
472 #endif
473 
492 
503 
512 #if FLASH_DRIVER_IS_FLASH_RESIDENT
514 #endif
515 
538 status_t FLASH_EraseAll(flash_config_t *config, uint32_t key);
539 
563 status_t FLASH_Erase(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, uint32_t key);
564 
580 #if defined(FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD) && FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD
581 status_t FLASH_EraseAllUnsecure(flash_config_t *config, uint32_t key);
582 #endif
583 
599 
630 status_t FLASH_Program(flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes);
631 
652 status_t FLASH_ProgramOnce(flash_config_t *config, uint32_t index, uint32_t *src, uint32_t lengthInBytes);
653 
679 #if defined(FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD) && FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD
680 status_t FLASH_ProgramSection(flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes);
681 #endif
682 
704 #if FLASH_SSD_IS_FLEXNVM_ENABLED
705 status_t FLASH_EepromWrite(flash_config_t *config, uint32_t start, uint8_t *src, uint32_t lengthInBytes);
706 #endif
707 
738 #if defined(FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD) && FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD
740  flash_config_t *config, uint32_t start, uint32_t *dst, uint32_t lengthInBytes, flash_read_resource_option_t option);
741 #endif
742 
762 status_t FLASH_ReadOnce(flash_config_t *config, uint32_t index, uint32_t *dst, uint32_t lengthInBytes);
763 
784 
802 status_t FLASH_SecurityBypass(flash_config_t *config, const uint8_t *backdoorKey);
803 
828 
852 status_t FLASH_VerifyErase(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, flash_margin_value_t margin);
853 
883  uint32_t start,
884  uint32_t lengthInBytes,
885  const uint32_t *expectedData,
886  flash_margin_value_t margin,
887  uint32_t *failedAddress,
888  uint32_t *failedData);
889 
905 
932  uint32_t start,
933  uint32_t lengthInBytes,
934  flash_protection_state_t *protection_state);
935 
955  uint32_t start,
956  uint32_t lengthInBytes,
957  flash_execute_only_access_state_t *access_state);
958 
978 status_t FLASH_GetProperty(flash_config_t *config, flash_property_tag_t whichProperty, uint32_t *value);
979 
1000 #if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD
1001 status_t FLASH_SetFlexramFunction(flash_config_t *config, flash_flexram_function_option_t option);
1002 #endif
1003 
1028 #if defined(FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD) && FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD
1030  uint32_t address,
1031  flash_swap_control_option_t option,
1032  flash_swap_state_config_t *returnInfo);
1033 #endif
1034 
1052 #if defined(FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP) && FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP
1053 status_t FLASH_Swap(flash_config_t *config, uint32_t address, flash_swap_function_option_t option);
1054 #endif
1055 
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);
1083 #endif
1084 
1107 status_t FLASH_PflashSetProtection(flash_config_t *config, uint32_t protectStatus);
1108 
1122 status_t FLASH_PflashGetProtection(flash_config_t *config, uint32_t *protectStatus);
1123 
1140 #if FLASH_SSD_IS_FLEXNVM_ENABLED
1141 status_t FLASH_DflashSetProtection(flash_config_t *config, uint8_t protectStatus);
1142 #endif
1143 
1159 #if FLASH_SSD_IS_FLEXNVM_ENABLED
1160 status_t FLASH_DflashGetProtection(flash_config_t *config, uint8_t *protectStatus);
1161 #endif
1162 
1179 #if FLASH_SSD_IS_FLEXNVM_ENABLED
1180 status_t FLASH_EepromSetProtection(flash_config_t *config, uint8_t protectStatus);
1181 #endif
1182 
1197 #if FLASH_SSD_IS_FLEXNVM_ENABLED
1198 status_t FLASH_EepromGetProtection(flash_config_t *config, uint8_t *protectStatus);
1199 #endif
1200 
1203 #if defined(__cplusplus)
1204 }
1205 #endif
1206 
1209 #endif /* _FSL_FLASH_H_ */
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