test

Dependencies:   mbed Watchdog

Dependents:   STM32-MC_node

Committer:
ommpy
Date:
Mon Jul 06 17:18:59 2020 +0530
Revision:
0:d383e2dee0f7
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ommpy 0:d383e2dee0f7 1 /** \addtogroup hal */
ommpy 0:d383e2dee0f7 2 /** @{*/
ommpy 0:d383e2dee0f7 3
ommpy 0:d383e2dee0f7 4 /* mbed Microcontroller Library
ommpy 0:d383e2dee0f7 5 * Copyright (c) 2017 ARM Limited
ommpy 0:d383e2dee0f7 6 * SPDX-License-Identifier: Apache-2.0
ommpy 0:d383e2dee0f7 7 *
ommpy 0:d383e2dee0f7 8 * Licensed under the Apache License, Version 2.0 (the "License");
ommpy 0:d383e2dee0f7 9 * you may not use this file except in compliance with the License.
ommpy 0:d383e2dee0f7 10 * You may obtain a copy of the License at
ommpy 0:d383e2dee0f7 11 *
ommpy 0:d383e2dee0f7 12 * http://www.apache.org/licenses/LICENSE-2.0
ommpy 0:d383e2dee0f7 13 *
ommpy 0:d383e2dee0f7 14 * Unless required by applicable law or agreed to in writing, software
ommpy 0:d383e2dee0f7 15 * distributed under the License is distributed on an "AS IS" BASIS,
ommpy 0:d383e2dee0f7 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ommpy 0:d383e2dee0f7 17 * See the License for the specific language governing permissions and
ommpy 0:d383e2dee0f7 18 * limitations under the License.
ommpy 0:d383e2dee0f7 19 */
ommpy 0:d383e2dee0f7 20 #ifndef MBED_FLASH_API_H
ommpy 0:d383e2dee0f7 21 #define MBED_FLASH_API_H
ommpy 0:d383e2dee0f7 22
ommpy 0:d383e2dee0f7 23 #include "device.h"
ommpy 0:d383e2dee0f7 24 #include <stdint.h>
ommpy 0:d383e2dee0f7 25
ommpy 0:d383e2dee0f7 26 #if DEVICE_FLASH
ommpy 0:d383e2dee0f7 27
ommpy 0:d383e2dee0f7 28 #define MBED_FLASH_INVALID_SIZE 0xFFFFFFFF
ommpy 0:d383e2dee0f7 29
ommpy 0:d383e2dee0f7 30 typedef struct flash_s flash_t;
ommpy 0:d383e2dee0f7 31
ommpy 0:d383e2dee0f7 32 #if TARGET_FLASH_CMSIS_ALGO
ommpy 0:d383e2dee0f7 33 #include "flash_data.h"
ommpy 0:d383e2dee0f7 34 #endif
ommpy 0:d383e2dee0f7 35
ommpy 0:d383e2dee0f7 36 #ifdef __cplusplus
ommpy 0:d383e2dee0f7 37 extern "C" {
ommpy 0:d383e2dee0f7 38 #endif
ommpy 0:d383e2dee0f7 39
ommpy 0:d383e2dee0f7 40 /**
ommpy 0:d383e2dee0f7 41 * \defgroup flash_hal Flash HAL API
ommpy 0:d383e2dee0f7 42 * @{
ommpy 0:d383e2dee0f7 43 */
ommpy 0:d383e2dee0f7 44
ommpy 0:d383e2dee0f7 45 /** Initialize the flash peripheral and the flash_t object
ommpy 0:d383e2dee0f7 46 *
ommpy 0:d383e2dee0f7 47 * @param obj The flash object
ommpy 0:d383e2dee0f7 48 * @return 0 for success, -1 for error
ommpy 0:d383e2dee0f7 49 */
ommpy 0:d383e2dee0f7 50 int32_t flash_init(flash_t *obj);
ommpy 0:d383e2dee0f7 51
ommpy 0:d383e2dee0f7 52 /** Uninitialize the flash peripheral and the flash_t object
ommpy 0:d383e2dee0f7 53 *
ommpy 0:d383e2dee0f7 54 * @param obj The flash object
ommpy 0:d383e2dee0f7 55 * @return 0 for success, -1 for error
ommpy 0:d383e2dee0f7 56 */
ommpy 0:d383e2dee0f7 57 int32_t flash_free(flash_t *obj);
ommpy 0:d383e2dee0f7 58
ommpy 0:d383e2dee0f7 59 /** Erase one sector starting at defined address
ommpy 0:d383e2dee0f7 60 *
ommpy 0:d383e2dee0f7 61 * The address should be at sector boundary. This function does not do any check for address alignments
ommpy 0:d383e2dee0f7 62 * @param obj The flash object
ommpy 0:d383e2dee0f7 63 * @param address The sector starting address
ommpy 0:d383e2dee0f7 64 * @return 0 for success, -1 for error
ommpy 0:d383e2dee0f7 65 */
ommpy 0:d383e2dee0f7 66 int32_t flash_erase_sector(flash_t *obj, uint32_t address);
ommpy 0:d383e2dee0f7 67
ommpy 0:d383e2dee0f7 68 /** Read data starting at defined address
ommpy 0:d383e2dee0f7 69 *
ommpy 0:d383e2dee0f7 70 * This function has a WEAK implementation using memcpy for backwards compatibility.
ommpy 0:d383e2dee0f7 71 * @param obj The flash object
ommpy 0:d383e2dee0f7 72 * @param address Address to begin reading from
ommpy 0:d383e2dee0f7 73 * @param data The buffer to read data into
ommpy 0:d383e2dee0f7 74 * @param size The number of bytes to read
ommpy 0:d383e2dee0f7 75 * @return 0 for success, -1 for error
ommpy 0:d383e2dee0f7 76 */
ommpy 0:d383e2dee0f7 77 int32_t flash_read(flash_t *obj, uint32_t address, uint8_t *data, uint32_t size);
ommpy 0:d383e2dee0f7 78
ommpy 0:d383e2dee0f7 79 /** Program pages starting at defined address
ommpy 0:d383e2dee0f7 80 *
ommpy 0:d383e2dee0f7 81 * The pages should not cross multiple sectors.
ommpy 0:d383e2dee0f7 82 * This function does not do any check for address alignments or if size is aligned to a page size.
ommpy 0:d383e2dee0f7 83 * @param obj The flash object
ommpy 0:d383e2dee0f7 84 * @param address The sector starting address
ommpy 0:d383e2dee0f7 85 * @param data The data buffer to be programmed
ommpy 0:d383e2dee0f7 86 * @param size The number of bytes to program
ommpy 0:d383e2dee0f7 87 * @return 0 for success, -1 for error
ommpy 0:d383e2dee0f7 88 */
ommpy 0:d383e2dee0f7 89 int32_t flash_program_page(flash_t *obj, uint32_t address, const uint8_t *data, uint32_t size);
ommpy 0:d383e2dee0f7 90
ommpy 0:d383e2dee0f7 91 /** Get sector size
ommpy 0:d383e2dee0f7 92 *
ommpy 0:d383e2dee0f7 93 * @param obj The flash object
ommpy 0:d383e2dee0f7 94 * @param address The sector starting address
ommpy 0:d383e2dee0f7 95 * @return The size of a sector
ommpy 0:d383e2dee0f7 96 */
ommpy 0:d383e2dee0f7 97 uint32_t flash_get_sector_size(const flash_t *obj, uint32_t address);
ommpy 0:d383e2dee0f7 98
ommpy 0:d383e2dee0f7 99 /** Get page size
ommpy 0:d383e2dee0f7 100 *
ommpy 0:d383e2dee0f7 101 * The page size defines the writable page size
ommpy 0:d383e2dee0f7 102 * @param obj The flash object
ommpy 0:d383e2dee0f7 103 * @return The size of a page
ommpy 0:d383e2dee0f7 104 */
ommpy 0:d383e2dee0f7 105 uint32_t flash_get_page_size(const flash_t *obj);
ommpy 0:d383e2dee0f7 106
ommpy 0:d383e2dee0f7 107 /** Get start address for the flash region
ommpy 0:d383e2dee0f7 108 *
ommpy 0:d383e2dee0f7 109 * @param obj The flash object
ommpy 0:d383e2dee0f7 110 * @return The start address for the flash region
ommpy 0:d383e2dee0f7 111 */
ommpy 0:d383e2dee0f7 112 uint32_t flash_get_start_address(const flash_t *obj);
ommpy 0:d383e2dee0f7 113
ommpy 0:d383e2dee0f7 114 /** Get the flash region size
ommpy 0:d383e2dee0f7 115 *
ommpy 0:d383e2dee0f7 116 * @param obj The flash object
ommpy 0:d383e2dee0f7 117 * @return The flash region size
ommpy 0:d383e2dee0f7 118 */
ommpy 0:d383e2dee0f7 119 uint32_t flash_get_size(const flash_t *obj);
ommpy 0:d383e2dee0f7 120
ommpy 0:d383e2dee0f7 121 /** Get the flash erase value
ommpy 0:d383e2dee0f7 122 *
ommpy 0:d383e2dee0f7 123 * @param obj The flash object
ommpy 0:d383e2dee0f7 124 * @return The flash erase value
ommpy 0:d383e2dee0f7 125 */
ommpy 0:d383e2dee0f7 126 uint8_t flash_get_erase_value(const flash_t *obj);
ommpy 0:d383e2dee0f7 127
ommpy 0:d383e2dee0f7 128 /**@}*/
ommpy 0:d383e2dee0f7 129
ommpy 0:d383e2dee0f7 130 #ifdef __cplusplus
ommpy 0:d383e2dee0f7 131 }
ommpy 0:d383e2dee0f7 132 #endif
ommpy 0:d383e2dee0f7 133
ommpy 0:d383e2dee0f7 134 #endif
ommpy 0:d383e2dee0f7 135
ommpy 0:d383e2dee0f7 136 #endif
ommpy 0:d383e2dee0f7 137
ommpy 0:d383e2dee0f7 138 /** @}*/