The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /*
AnnaBridge 171:3a7713b1edbc 2 * The Clear BSD License
AnnaBridge 171:3a7713b1edbc 3 * Copyright (c) 2016, Freescale Semiconductor, Inc.
AnnaBridge 171:3a7713b1edbc 4 * Copyright 2016-2017 NXP
AnnaBridge 171:3a7713b1edbc 5 * All rights reserved.
AnnaBridge 171:3a7713b1edbc 6 *
AnnaBridge 171:3a7713b1edbc 7 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 171:3a7713b1edbc 8 * are permitted (subject to the limitations in the disclaimer below) provided
AnnaBridge 171:3a7713b1edbc 9 * that the following conditions are met:
AnnaBridge 171:3a7713b1edbc 10 *
AnnaBridge 171:3a7713b1edbc 11 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 171:3a7713b1edbc 12 * of conditions and the following disclaimer.
AnnaBridge 171:3a7713b1edbc 13 *
AnnaBridge 171:3a7713b1edbc 14 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 171:3a7713b1edbc 15 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 171:3a7713b1edbc 16 * other materials provided with the distribution.
AnnaBridge 171:3a7713b1edbc 17 *
AnnaBridge 171:3a7713b1edbc 18 * o Neither the name of the copyright holder nor the names of its
AnnaBridge 171:3a7713b1edbc 19 * contributors may be used to endorse or promote products derived from this
AnnaBridge 171:3a7713b1edbc 20 * software without specific prior written permission.
AnnaBridge 171:3a7713b1edbc 21 *
AnnaBridge 171:3a7713b1edbc 22 * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
AnnaBridge 171:3a7713b1edbc 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 171:3a7713b1edbc 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 171:3a7713b1edbc 25 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 171:3a7713b1edbc 26 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 171:3a7713b1edbc 27 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 171:3a7713b1edbc 28 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 171:3a7713b1edbc 29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 171:3a7713b1edbc 30 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 171:3a7713b1edbc 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 171:3a7713b1edbc 32 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 171:3a7713b1edbc 33 */
AnnaBridge 171:3a7713b1edbc 34
AnnaBridge 171:3a7713b1edbc 35 #ifndef _FSL_FLASHIAP_H_
AnnaBridge 171:3a7713b1edbc 36 #define _FSL_FLASHIAP_H_
AnnaBridge 171:3a7713b1edbc 37
AnnaBridge 171:3a7713b1edbc 38 #include "fsl_common.h"
AnnaBridge 171:3a7713b1edbc 39
AnnaBridge 171:3a7713b1edbc 40 /*!
AnnaBridge 171:3a7713b1edbc 41 * @addtogroup flashiap_driver
AnnaBridge 171:3a7713b1edbc 42 * @{
AnnaBridge 171:3a7713b1edbc 43 */
AnnaBridge 171:3a7713b1edbc 44
AnnaBridge 171:3a7713b1edbc 45 /*! @file */
AnnaBridge 171:3a7713b1edbc 46
AnnaBridge 171:3a7713b1edbc 47 /*******************************************************************************
AnnaBridge 171:3a7713b1edbc 48 * Definitions
AnnaBridge 171:3a7713b1edbc 49 ******************************************************************************/
AnnaBridge 171:3a7713b1edbc 50
AnnaBridge 171:3a7713b1edbc 51 /*! @name Driver version */
AnnaBridge 171:3a7713b1edbc 52 /*@{*/
AnnaBridge 171:3a7713b1edbc 53 #define FSL_FLASHIAP_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
AnnaBridge 171:3a7713b1edbc 54 /*@}*/
AnnaBridge 171:3a7713b1edbc 55
AnnaBridge 171:3a7713b1edbc 56 /*!
AnnaBridge 171:3a7713b1edbc 57 * @brief Flashiap status codes.
AnnaBridge 171:3a7713b1edbc 58 */
AnnaBridge 171:3a7713b1edbc 59 enum _flashiap_status
AnnaBridge 171:3a7713b1edbc 60 {
AnnaBridge 171:3a7713b1edbc 61 kStatus_FLASHIAP_Success = kStatus_Success, /*!< Api is executed successfully */
AnnaBridge 171:3a7713b1edbc 62 kStatus_FLASHIAP_InvalidCommand = MAKE_STATUS(kStatusGroup_FLASHIAP, 1U), /*!< Invalid command */
AnnaBridge 171:3a7713b1edbc 63 kStatus_FLASHIAP_SrcAddrError =
AnnaBridge 171:3a7713b1edbc 64 MAKE_STATUS(kStatusGroup_FLASHIAP, 2U), /*!< Source address is not on word boundary */
AnnaBridge 171:3a7713b1edbc 65 kStatus_FLASHIAP_DstAddrError =
AnnaBridge 171:3a7713b1edbc 66 MAKE_STATUS(kStatusGroup_FLASHIAP, 3U), /*!< Destination address is not on a correct boundary */
AnnaBridge 171:3a7713b1edbc 67 kStatus_FLASHIAP_SrcAddrNotMapped =
AnnaBridge 171:3a7713b1edbc 68 MAKE_STATUS(kStatusGroup_FLASHIAP, 4U), /*!< Source address is not mapped in the memory map */
AnnaBridge 171:3a7713b1edbc 69 kStatus_FLASHIAP_DstAddrNotMapped =
AnnaBridge 171:3a7713b1edbc 70 MAKE_STATUS(kStatusGroup_FLASHIAP, 5U), /*!< Destination address is not mapped in the memory map */
AnnaBridge 171:3a7713b1edbc 71 kStatus_FLASHIAP_CountError =
AnnaBridge 171:3a7713b1edbc 72 MAKE_STATUS(kStatusGroup_FLASHIAP, 6U), /*!< Byte count is not multiple of 4 or is not a permitted value */
AnnaBridge 171:3a7713b1edbc 73 kStatus_FLASHIAP_InvalidSector =
AnnaBridge 171:3a7713b1edbc 74 MAKE_STATUS(kStatusGroup_FLASHIAP,
AnnaBridge 171:3a7713b1edbc 75 7), /*!< Sector number is invalid or end sector number is greater than start sector number */
AnnaBridge 171:3a7713b1edbc 76 kStatus_FLASHIAP_SectorNotblank = MAKE_STATUS(kStatusGroup_FLASHIAP, 8U), /*!< One or more sectors are not blank */
AnnaBridge 171:3a7713b1edbc 77 kStatus_FLASHIAP_NotPrepared =
AnnaBridge 171:3a7713b1edbc 78 MAKE_STATUS(kStatusGroup_FLASHIAP, 9U), /*!< Command to prepare sector for write operation was not executed */
AnnaBridge 171:3a7713b1edbc 79 kStatus_FLASHIAP_CompareError =
AnnaBridge 171:3a7713b1edbc 80 MAKE_STATUS(kStatusGroup_FLASHIAP, 10U), /*!< Destination and source memory contents do not match */
AnnaBridge 171:3a7713b1edbc 81 kStatus_FLASHIAP_Busy =
AnnaBridge 171:3a7713b1edbc 82 MAKE_STATUS(kStatusGroup_FLASHIAP, 11U), /*!< Flash programming hardware interface is busy */
AnnaBridge 171:3a7713b1edbc 83 kStatus_FLASHIAP_ParamError =
AnnaBridge 171:3a7713b1edbc 84 MAKE_STATUS(kStatusGroup_FLASHIAP, 12U), /*!< Insufficient number of parameters or invalid parameter */
AnnaBridge 171:3a7713b1edbc 85 kStatus_FLASHIAP_AddrError = MAKE_STATUS(kStatusGroup_FLASHIAP, 13U), /*!< Address is not on word boundary */
AnnaBridge 171:3a7713b1edbc 86 kStatus_FLASHIAP_AddrNotMapped =
AnnaBridge 171:3a7713b1edbc 87 MAKE_STATUS(kStatusGroup_FLASHIAP, 14U), /*!< Address is not mapped in the memory map */
AnnaBridge 171:3a7713b1edbc 88 kStatus_FLASHIAP_NoPower = MAKE_STATUS(kStatusGroup_FLASHIAP, 24U), /*!< Flash memory block is powered down */
AnnaBridge 171:3a7713b1edbc 89 kStatus_FLASHIAP_NoClock =
AnnaBridge 171:3a7713b1edbc 90 MAKE_STATUS(kStatusGroup_FLASHIAP, 27U), /*!< Flash memory block or controller is not clocked */
AnnaBridge 171:3a7713b1edbc 91 };
AnnaBridge 171:3a7713b1edbc 92
AnnaBridge 171:3a7713b1edbc 93 /*!
AnnaBridge 171:3a7713b1edbc 94 * @brief Flashiap command codes.
AnnaBridge 171:3a7713b1edbc 95 */
AnnaBridge 171:3a7713b1edbc 96 enum _flashiap_commands
AnnaBridge 171:3a7713b1edbc 97 {
AnnaBridge 171:3a7713b1edbc 98 kIapCmd_FLASHIAP_PrepareSectorforWrite = 50U, /*!< Prepare Sector for write */
AnnaBridge 171:3a7713b1edbc 99 kIapCmd_FLASHIAP_CopyRamToFlash = 51U, /*!< Copy RAM to flash */
AnnaBridge 171:3a7713b1edbc 100 kIapCmd_FLASHIAP_EraseSector = 52U, /*!< Erase Sector */
AnnaBridge 171:3a7713b1edbc 101 kIapCmd_FLASHIAP_BlankCheckSector = 53U, /*!< Blank check sector */
AnnaBridge 171:3a7713b1edbc 102 kIapCmd_FLASHIAP_ReadPartId = 54U, /*!< Read part id */
AnnaBridge 171:3a7713b1edbc 103 kIapCmd_FLASHIAP_Read_BootromVersion = 55U, /*!< Read bootrom version */
AnnaBridge 171:3a7713b1edbc 104 kIapCmd_FLASHIAP_Compare = 56U, /*!< Compare */
AnnaBridge 171:3a7713b1edbc 105 kIapCmd_FLASHIAP_ReinvokeISP = 57U, /*!< Reinvoke ISP */
AnnaBridge 171:3a7713b1edbc 106 kIapCmd_FLASHIAP_ReadUid = 58U, /*!< Read Uid isp */
AnnaBridge 171:3a7713b1edbc 107 kIapCmd_FLASHIAP_ErasePage = 59U, /*!< Erase Page */
AnnaBridge 171:3a7713b1edbc 108 kIapCmd_FLASHIAP_ReadMisr = 70U, /*!< Read Misr */
AnnaBridge 171:3a7713b1edbc 109 kIapCmd_FLASHIAP_ReinvokeI2cSpiISP = 71U /*!< Reinvoke I2C/SPI isp */
AnnaBridge 171:3a7713b1edbc 110 };
AnnaBridge 171:3a7713b1edbc 111
AnnaBridge 171:3a7713b1edbc 112 /*! @brief IAP_ENTRY API function type */
AnnaBridge 171:3a7713b1edbc 113 typedef void (*IAP_ENTRY_T)(uint32_t cmd[5], uint32_t stat[4]);
AnnaBridge 171:3a7713b1edbc 114
AnnaBridge 171:3a7713b1edbc 115 /*******************************************************************************
AnnaBridge 171:3a7713b1edbc 116 * API
AnnaBridge 171:3a7713b1edbc 117 ******************************************************************************/
AnnaBridge 171:3a7713b1edbc 118
AnnaBridge 171:3a7713b1edbc 119 #if defined(__cplusplus)
AnnaBridge 171:3a7713b1edbc 120 extern "C" {
AnnaBridge 171:3a7713b1edbc 121 #endif
AnnaBridge 171:3a7713b1edbc 122
AnnaBridge 171:3a7713b1edbc 123 /*!
AnnaBridge 171:3a7713b1edbc 124 * @brief IAP_ENTRY API function type
AnnaBridge 171:3a7713b1edbc 125 *
AnnaBridge 171:3a7713b1edbc 126 * Wrapper for rom iap call
AnnaBridge 171:3a7713b1edbc 127 *
AnnaBridge 171:3a7713b1edbc 128 * @param cmd_param IAP command and relevant parameter array.
AnnaBridge 171:3a7713b1edbc 129 * @param status_result IAP status result array.
AnnaBridge 171:3a7713b1edbc 130 *
AnnaBridge 171:3a7713b1edbc 131 * @retval None. Status/Result is returned via status_result array.
AnnaBridge 171:3a7713b1edbc 132 */
AnnaBridge 171:3a7713b1edbc 133 static inline void iap_entry(uint32_t *cmd_param, uint32_t *status_result)
AnnaBridge 171:3a7713b1edbc 134 {
AnnaBridge 171:3a7713b1edbc 135 ((IAP_ENTRY_T)FSL_FEATURE_SYSCON_IAP_ENTRY_LOCATION)(cmd_param, status_result);
AnnaBridge 171:3a7713b1edbc 136 }
AnnaBridge 171:3a7713b1edbc 137
AnnaBridge 171:3a7713b1edbc 138 /*!
AnnaBridge 171:3a7713b1edbc 139 * @brief Prepare sector for write operation
AnnaBridge 171:3a7713b1edbc 140
AnnaBridge 171:3a7713b1edbc 141 * This function prepares sector(s) for write/erase operation. This function must be
AnnaBridge 171:3a7713b1edbc 142 * called before calling the FLASHIAP_CopyRamToFlash() or FLASHIAP_EraseSector() or
AnnaBridge 171:3a7713b1edbc 143 * FLASHIAP_ErasePage() function. The end sector must be greater than or equal to
AnnaBridge 171:3a7713b1edbc 144 * start sector number.
AnnaBridge 171:3a7713b1edbc 145 *
AnnaBridge 171:3a7713b1edbc 146 * @param startSector Start sector number.
AnnaBridge 171:3a7713b1edbc 147 * @param endSector End sector number.
AnnaBridge 171:3a7713b1edbc 148 *
AnnaBridge 171:3a7713b1edbc 149 * @retval #kStatus_FLASHIAP_Success Api was executed successfully.
AnnaBridge 171:3a7713b1edbc 150 * @retval #kStatus_FLASHIAP_NoPower Flash memory block is powered down.
AnnaBridge 171:3a7713b1edbc 151 * @retval #kStatus_FLASHIAP_NoClock Flash memory block or controller is not clocked.
AnnaBridge 171:3a7713b1edbc 152 * @retval #kStatus_FLASHIAP_InvalidSector Sector number is invalid or end sector number
AnnaBridge 171:3a7713b1edbc 153 * is greater than start sector number.
AnnaBridge 171:3a7713b1edbc 154 * @retval #kStatus_FLASHIAP_Busy Flash programming hardware interface is busy.
AnnaBridge 171:3a7713b1edbc 155 */
AnnaBridge 171:3a7713b1edbc 156 status_t FLASHIAP_PrepareSectorForWrite(uint32_t startSector, uint32_t endSector);
AnnaBridge 171:3a7713b1edbc 157
AnnaBridge 171:3a7713b1edbc 158 /*!
AnnaBridge 171:3a7713b1edbc 159 * @brief Copy RAM to flash.
AnnaBridge 171:3a7713b1edbc 160
AnnaBridge 171:3a7713b1edbc 161 * This function programs the flash memory. Corresponding sectors must be prepared
AnnaBridge 171:3a7713b1edbc 162 * via FLASHIAP_PrepareSectorForWrite before calling calling this function. The addresses
AnnaBridge 171:3a7713b1edbc 163 * should be a 256 byte boundary and the number of bytes should be 256 | 512 | 1024 | 4096.
AnnaBridge 171:3a7713b1edbc 164 *
AnnaBridge 171:3a7713b1edbc 165 * @param dstAddr Destination flash address where data bytes are to be written.
AnnaBridge 171:3a7713b1edbc 166 * @param srcAddr Source ram address from where data bytes are to be read.
AnnaBridge 171:3a7713b1edbc 167 * @param numOfBytes Number of bytes to be written.
AnnaBridge 171:3a7713b1edbc 168 * @param systemCoreClock SystemCoreClock in Hz. It is converted to KHz before calling the
AnnaBridge 171:3a7713b1edbc 169 * rom IAP function.
AnnaBridge 171:3a7713b1edbc 170 *
AnnaBridge 171:3a7713b1edbc 171 * @retval #kStatus_FLASHIAP_Success Api was executed successfully.
AnnaBridge 171:3a7713b1edbc 172 * @retval #kStatus_FLASHIAP_NoPower Flash memory block is powered down.
AnnaBridge 171:3a7713b1edbc 173 * @retval #kStatus_FLASHIAP_NoClock Flash memory block or controller is not clocked.
AnnaBridge 171:3a7713b1edbc 174 * @retval #kStatus_FLASHIAP_SrcAddrError Source address is not on word boundary.
AnnaBridge 171:3a7713b1edbc 175 * @retval #kStatus_FLASHIAP_DstAddrError Destination address is not on a correct boundary.
AnnaBridge 171:3a7713b1edbc 176 * @retval #kStatus_FLASHIAP_SrcAddrNotMapped Source address is not mapped in the memory map.
AnnaBridge 171:3a7713b1edbc 177 * @retval #kStatus_FLASHIAP_DstAddrNotMapped Destination address is not mapped in the memory map.
AnnaBridge 171:3a7713b1edbc 178 * @retval #kStatus_FLASHIAP_CountError Byte count is not multiple of 4 or is not a permitted value.
AnnaBridge 171:3a7713b1edbc 179 * @retval #kStatus_FLASHIAP_NotPrepared Command to prepare sector for write operation was not executed.
AnnaBridge 171:3a7713b1edbc 180 * @retval #kStatus_FLASHIAP_Busy Flash programming hardware interface is busy.
AnnaBridge 171:3a7713b1edbc 181 */
AnnaBridge 171:3a7713b1edbc 182 status_t FLASHIAP_CopyRamToFlash(uint32_t dstAddr, uint32_t *srcAddr, uint32_t numOfBytes, uint32_t systemCoreClock);
AnnaBridge 171:3a7713b1edbc 183
AnnaBridge 171:3a7713b1edbc 184 /*!
AnnaBridge 171:3a7713b1edbc 185 * @brief Erase sector
AnnaBridge 171:3a7713b1edbc 186
AnnaBridge 171:3a7713b1edbc 187 * This function erases sector(s). The end sector must be greater than or equal to
AnnaBridge 171:3a7713b1edbc 188 * start sector number. FLASHIAP_PrepareSectorForWrite must be called before
AnnaBridge 171:3a7713b1edbc 189 * calling this function.
AnnaBridge 171:3a7713b1edbc 190 *
AnnaBridge 171:3a7713b1edbc 191 * @param startSector Start sector number.
AnnaBridge 171:3a7713b1edbc 192 * @param endSector End sector number.
AnnaBridge 171:3a7713b1edbc 193 * @param systemCoreClock SystemCoreClock in Hz. It is converted to KHz before calling the
AnnaBridge 171:3a7713b1edbc 194 * rom IAP function.
AnnaBridge 171:3a7713b1edbc 195 *
AnnaBridge 171:3a7713b1edbc 196 * @retval #kStatus_FLASHIAP_Success Api was executed successfully.
AnnaBridge 171:3a7713b1edbc 197 * @retval #kStatus_FLASHIAP_NoPower Flash memory block is powered down.
AnnaBridge 171:3a7713b1edbc 198 * @retval #kStatus_FLASHIAP_NoClock Flash memory block or controller is not clocked.
AnnaBridge 171:3a7713b1edbc 199 * @retval #kStatus_FLASHIAP_InvalidSector Sector number is invalid or end sector number
AnnaBridge 171:3a7713b1edbc 200 * is greater than start sector number.
AnnaBridge 171:3a7713b1edbc 201 * @retval #kStatus_FLASHIAP_NotPrepared Command to prepare sector for write operation was not executed.
AnnaBridge 171:3a7713b1edbc 202 * @retval #kStatus_FLASHIAP_Busy Flash programming hardware interface is busy.
AnnaBridge 171:3a7713b1edbc 203 */
AnnaBridge 171:3a7713b1edbc 204 status_t FLASHIAP_EraseSector(uint32_t startSector, uint32_t endSector, uint32_t systemCoreClock);
AnnaBridge 171:3a7713b1edbc 205
AnnaBridge 171:3a7713b1edbc 206 /*!
AnnaBridge 171:3a7713b1edbc 207
AnnaBridge 171:3a7713b1edbc 208 * This function erases page(s). The end page must be greater than or equal to
AnnaBridge 171:3a7713b1edbc 209 * start page number. Corresponding sectors must be prepared via FLASHIAP_PrepareSectorForWrite
AnnaBridge 171:3a7713b1edbc 210 * before calling calling this function.
AnnaBridge 171:3a7713b1edbc 211 *
AnnaBridge 171:3a7713b1edbc 212 * @param startPage Start page number
AnnaBridge 171:3a7713b1edbc 213 * @param endPage End page number
AnnaBridge 171:3a7713b1edbc 214 * @param systemCoreClock SystemCoreClock in Hz. It is converted to KHz before calling the
AnnaBridge 171:3a7713b1edbc 215 * rom IAP function.
AnnaBridge 171:3a7713b1edbc 216 *
AnnaBridge 171:3a7713b1edbc 217 * @retval #kStatus_FLASHIAP_Success Api was executed successfully.
AnnaBridge 171:3a7713b1edbc 218 * @retval #kStatus_FLASHIAP_NoPower Flash memory block is powered down.
AnnaBridge 171:3a7713b1edbc 219 * @retval #kStatus_FLASHIAP_NoClock Flash memory block or controller is not clocked.
AnnaBridge 171:3a7713b1edbc 220 * @retval #kStatus_FLASHIAP_InvalidSector Page number is invalid or end page number
AnnaBridge 171:3a7713b1edbc 221 * is greater than start page number
AnnaBridge 171:3a7713b1edbc 222 * @retval #kStatus_FLASHIAP_NotPrepared Command to prepare sector for write operation was not executed.
AnnaBridge 171:3a7713b1edbc 223 * @retval #kStatus_FLASHIAP_Busy Flash programming hardware interface is busy.
AnnaBridge 171:3a7713b1edbc 224 */
AnnaBridge 171:3a7713b1edbc 225 status_t FLASHIAP_ErasePage(uint32_t startPage, uint32_t endPage, uint32_t systemCoreClock);
AnnaBridge 171:3a7713b1edbc 226
AnnaBridge 171:3a7713b1edbc 227 /*!
AnnaBridge 171:3a7713b1edbc 228 * @brief Blank check sector(s)
AnnaBridge 171:3a7713b1edbc 229 *
AnnaBridge 171:3a7713b1edbc 230 * Blank check single or multiples sectors of flash memory. The end sector must be greater than or equal to
AnnaBridge 171:3a7713b1edbc 231 * start sector number. It can be used to verify the sector eraseure after FLASHIAP_EraseSector call.
AnnaBridge 171:3a7713b1edbc 232 *
AnnaBridge 171:3a7713b1edbc 233 * @param startSector : Start sector number. Must be greater than or equal to start sector number
AnnaBridge 171:3a7713b1edbc 234 * @param endSector : End sector number
AnnaBridge 171:3a7713b1edbc 235 * @retval #kStatus_FLASHIAP_Success One or more sectors are in erased state.
AnnaBridge 171:3a7713b1edbc 236 * @retval #kStatus_FLASHIAP_NoPower Flash memory block is powered down.
AnnaBridge 171:3a7713b1edbc 237 * @retval #kStatus_FLASHIAP_NoClock Flash memory block or controller is not clocked.
AnnaBridge 171:3a7713b1edbc 238 * @retval #kStatus_FLASHIAP_SectorNotblank One or more sectors are not blank.
AnnaBridge 171:3a7713b1edbc 239 */
AnnaBridge 171:3a7713b1edbc 240 status_t FLASHIAP_BlankCheckSector(uint32_t startSector, uint32_t endSector);
AnnaBridge 171:3a7713b1edbc 241
AnnaBridge 171:3a7713b1edbc 242 /*!
AnnaBridge 171:3a7713b1edbc 243 * @brief Compare memory contents of flash with ram.
AnnaBridge 171:3a7713b1edbc 244
AnnaBridge 171:3a7713b1edbc 245 * This function compares the contents of flash and ram. It can be used to verify the flash
AnnaBridge 171:3a7713b1edbc 246 * memory contents after FLASHIAP_CopyRamToFlash call.
AnnaBridge 171:3a7713b1edbc 247 *
AnnaBridge 171:3a7713b1edbc 248 * @param dstAddr Destination flash address.
AnnaBridge 171:3a7713b1edbc 249 * @param srcAddr Source ram address.
AnnaBridge 171:3a7713b1edbc 250 * @param numOfBytes Number of bytes to be compared.
AnnaBridge 171:3a7713b1edbc 251 *
AnnaBridge 171:3a7713b1edbc 252 * @retval #kStatus_FLASHIAP_Success Contents of flash and ram match.
AnnaBridge 171:3a7713b1edbc 253 * @retval #kStatus_FLASHIAP_NoPower Flash memory block is powered down.
AnnaBridge 171:3a7713b1edbc 254 * @retval #kStatus_FLASHIAP_NoClock Flash memory block or controller is not clocked.
AnnaBridge 171:3a7713b1edbc 255 * @retval #kStatus_FLASHIAP_AddrError Address is not on word boundary.
AnnaBridge 171:3a7713b1edbc 256 * @retval #kStatus_FLASHIAP_AddrNotMapped Address is not mapped in the memory map.
AnnaBridge 171:3a7713b1edbc 257 * @retval #kStatus_FLASHIAP_CountError Byte count is not multiple of 4 or is not a permitted value.
AnnaBridge 171:3a7713b1edbc 258 * @retval #kStatus_FLASHIAP_CompareError Destination and source memory contents do not match.
AnnaBridge 171:3a7713b1edbc 259 */
AnnaBridge 171:3a7713b1edbc 260 status_t FLASHIAP_Compare(uint32_t dstAddr, uint32_t *srcAddr, uint32_t numOfBytes);
AnnaBridge 171:3a7713b1edbc 261
AnnaBridge 171:3a7713b1edbc 262 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 263 }
AnnaBridge 171:3a7713b1edbc 264 #endif
AnnaBridge 171:3a7713b1edbc 265
AnnaBridge 171:3a7713b1edbc 266 /*@}*/
AnnaBridge 171:3a7713b1edbc 267
AnnaBridge 171:3a7713b1edbc 268 #endif /* _FSL_FLASHIAP_H_ */