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