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
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:65be27845400 1
AnnaBridge 172:65be27845400 2 /** \addtogroup hal */
AnnaBridge 172:65be27845400 3 /** @{*/
AnnaBridge 172:65be27845400 4 /* mbed Microcontroller Library
AnnaBridge 172:65be27845400 5 * Copyright (c) 2018-2018 ARM Limited
AnnaBridge 172:65be27845400 6 *
AnnaBridge 172:65be27845400 7 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 172:65be27845400 8 * you may not use this file except in compliance with the License.
AnnaBridge 172:65be27845400 9 * You may obtain a copy of the License at
AnnaBridge 172:65be27845400 10 *
AnnaBridge 172:65be27845400 11 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 172:65be27845400 12 *
AnnaBridge 172:65be27845400 13 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 172:65be27845400 14 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 172:65be27845400 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 172:65be27845400 16 * See the License for the specific language governing permissions and
AnnaBridge 172:65be27845400 17 * limitations under the License.
AnnaBridge 172:65be27845400 18 */
AnnaBridge 172:65be27845400 19 #ifndef MBED_MPU_API_H
AnnaBridge 172:65be27845400 20 #define MBED_MPU_API_H
AnnaBridge 172:65be27845400 21
AnnaBridge 172:65be27845400 22 #include "device.h"
AnnaBridge 172:65be27845400 23 #include <stdbool.h>
AnnaBridge 172:65be27845400 24
AnnaBridge 172:65be27845400 25 #ifdef __cplusplus
AnnaBridge 172:65be27845400 26 extern "C" {
AnnaBridge 172:65be27845400 27 #endif
AnnaBridge 172:65be27845400 28
AnnaBridge 172:65be27845400 29 #if DEVICE_MPU
AnnaBridge 172:65be27845400 30
AnnaBridge 172:65be27845400 31 /**
AnnaBridge 172:65be27845400 32 * \defgroup hal_mpu MPU hal
AnnaBridge 172:65be27845400 33 *
AnnaBridge 172:65be27845400 34 * The MPU hal provides a simple MPU API to enhance device security by preventing
AnnaBridge 172:65be27845400 35 * execution from ram.
AnnaBridge 172:65be27845400 36 *
AnnaBridge 172:65be27845400 37 * # Defined behavior
AnnaBridge 172:65be27845400 38 * * The function ::mbed_mpu_init is safe to call repeatedly - Verified by ::mpu_init_test
AnnaBridge 172:65be27845400 39 * * The function ::mbed_mpu_free disables MPU protection - Verified by ::mpu_free_test
AnnaBridge 172:65be27845400 40 * * Execution from RAM results in a fault when execute never is enabled.
AnnaBridge 172:65be27845400 41 * This RAM includes heap, stack, data and zero init - Verified by ::mpu_fault_test_data,
AnnaBridge 172:65be27845400 42 * ::mpu_fault_test_bss, ::mpu_fault_test_stack and ::mpu_fault_test_heap.
AnnaBridge 172:65be27845400 43 * * Writing to ROM results in a fault when write never is enabled - Not verified
AnnaBridge 172:65be27845400 44 *
AnnaBridge 172:65be27845400 45 * # Undefined behavior
AnnaBridge 172:65be27845400 46 * * Calling any function other than ::mbed_mpu_init before the initialization of the MPU.
AnnaBridge 172:65be27845400 47 *
AnnaBridge 172:65be27845400 48 * @see hal_mpu_tests
AnnaBridge 172:65be27845400 49 *
AnnaBridge 172:65be27845400 50 * @{
AnnaBridge 172:65be27845400 51 */
AnnaBridge 172:65be27845400 52
AnnaBridge 172:65be27845400 53 /**
AnnaBridge 172:65be27845400 54 * \defgroup hal_mpu_tests MPU hal tests
AnnaBridge 172:65be27845400 55 * The MPU test validates proper implementation of the MPU hal.
AnnaBridge 172:65be27845400 56 *
AnnaBridge 172:65be27845400 57 * To run the MPU hal tests use the command:
AnnaBridge 172:65be27845400 58 *
AnnaBridge 172:65be27845400 59 * mbed test -t <toolchain> -m <target> -n tests-mbed_hal-mpu*
AnnaBridge 172:65be27845400 60 */
AnnaBridge 172:65be27845400 61
AnnaBridge 172:65be27845400 62
AnnaBridge 172:65be27845400 63 /**
AnnaBridge 172:65be27845400 64 * Initialize the MPU
AnnaBridge 172:65be27845400 65 *
AnnaBridge 172:65be27845400 66 * Initialize or re-initialize the memory protection unit.
AnnaBridge 172:65be27845400 67 * After initialization or re-initialization, ROM and RAM protection
AnnaBridge 172:65be27845400 68 * are both enabled.
AnnaBridge 172:65be27845400 69 */
AnnaBridge 172:65be27845400 70 void mbed_mpu_init(void);
AnnaBridge 172:65be27845400 71
AnnaBridge 172:65be27845400 72 /**
AnnaBridge 172:65be27845400 73 * Enable or disable ROM MPU protection
AnnaBridge 172:65be27845400 74 *
AnnaBridge 172:65be27845400 75 * This function is used to mark all of ROM as read and execute only.
AnnaBridge 172:65be27845400 76 * When enabled writes to ROM cause a fault.
AnnaBridge 172:65be27845400 77 *
AnnaBridge 172:65be27845400 78 * By default writes to ROM are disabled.
AnnaBridge 172:65be27845400 79 *
AnnaBridge 172:65be27845400 80 * @param enable true to disable writes to ROM, false otherwise
AnnaBridge 172:65be27845400 81 */
AnnaBridge 172:65be27845400 82 void mbed_mpu_enable_rom_wn(bool enable);
AnnaBridge 172:65be27845400 83
AnnaBridge 172:65be27845400 84 /**
AnnaBridge 172:65be27845400 85 * Enable or disable ram MPU protection
AnnaBridge 172:65be27845400 86 *
AnnaBridge 172:65be27845400 87 * This function is used to mark all of RAM as execute never.
AnnaBridge 172:65be27845400 88 * When enabled code is only allowed to execute from flash.
AnnaBridge 172:65be27845400 89 *
AnnaBridge 172:65be27845400 90 * By default execution from RAM is disabled.
AnnaBridge 172:65be27845400 91 *
AnnaBridge 172:65be27845400 92 * @param enable true to disable execution from RAM, false otherwise
AnnaBridge 172:65be27845400 93 */
AnnaBridge 172:65be27845400 94 void mbed_mpu_enable_ram_xn(bool enable);
AnnaBridge 172:65be27845400 95
AnnaBridge 172:65be27845400 96 /** Deinitialize the MPU
AnnaBridge 172:65be27845400 97 *
AnnaBridge 172:65be27845400 98 * Powerdown the MPU in preparation for powerdown, reset or jumping to another application.
AnnaBridge 172:65be27845400 99 */
AnnaBridge 172:65be27845400 100 void mbed_mpu_free(void);
AnnaBridge 172:65be27845400 101
AnnaBridge 172:65be27845400 102 /**@}*/
AnnaBridge 172:65be27845400 103
AnnaBridge 172:65be27845400 104 #else
AnnaBridge 172:65be27845400 105
AnnaBridge 172:65be27845400 106 #define mbed_mpu_init()
AnnaBridge 172:65be27845400 107
AnnaBridge 172:65be27845400 108 #define mbed_mpu_enable_rom_wn(enable) (void)enable
AnnaBridge 172:65be27845400 109
AnnaBridge 172:65be27845400 110 #define mbed_mpu_enable_ram_xn(enable) (void)enable
AnnaBridge 172:65be27845400 111
AnnaBridge 172:65be27845400 112 #define mbed_mpu_free()
AnnaBridge 172:65be27845400 113
AnnaBridge 172:65be27845400 114 #endif
AnnaBridge 172:65be27845400 115
AnnaBridge 172:65be27845400 116 #ifdef __cplusplus
AnnaBridge 172:65be27845400 117 }
AnnaBridge 172:65be27845400 118 #endif
AnnaBridge 172:65be27845400 119
AnnaBridge 172:65be27845400 120 #endif
AnnaBridge 172:65be27845400 121
AnnaBridge 172:65be27845400 122 /** @}*/