Describes predefine macros for mbed online compiler (armcc)

Committer:
MACRUM
Date:
Thu Mar 16 21:58:09 2017 +0900
Revision:
6:40e873bbc5f7
Add licence header info

Who changed what in which revision?

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