37 #include "hal_platform.h" 39 #ifdef HAL_MPU_MODULE_ENABLED 143 HAL_MPU_STATUS_INVALID_PARAMETER = -6,
144 HAL_MPU_STATUS_ERROR_BUSY = -5,
145 HAL_MPU_STATUS_ERROR_REGION = -4,
146 HAL_MPU_STATUS_ERROR_REGION_ADDRESS = -3,
147 HAL_MPU_STATUS_ERROR_REGION_SIZE = -2,
148 HAL_MPU_STATUS_ERROR = -1,
149 HAL_MPU_STATUS_OK = 0
154 HAL_MPU_REGION_0 = 0,
155 HAL_MPU_REGION_1 = 1,
156 HAL_MPU_REGION_2 = 2,
157 HAL_MPU_REGION_3 = 3,
158 HAL_MPU_REGION_4 = 4,
159 HAL_MPU_REGION_5 = 5,
160 HAL_MPU_REGION_6 = 6,
161 HAL_MPU_REGION_7 = 7,
167 HAL_MPU_REGION_SIZE_MIN = 3,
168 HAL_MPU_REGION_SIZE_32B = 4,
169 HAL_MPU_REGION_SIZE_64B = 5,
170 HAL_MPU_REGION_SIZE_128B = 6,
171 HAL_MPU_REGION_SIZE_256B = 7,
172 HAL_MPU_REGION_SIZE_512B = 8,
173 HAL_MPU_REGION_SIZE_1KB = 9,
174 HAL_MPU_REGION_SIZE_2KB = 10,
175 HAL_MPU_REGION_SIZE_4KB = 11,
176 HAL_MPU_REGION_SIZE_8KB = 12,
177 HAL_MPU_REGION_SIZE_16KB = 13,
178 HAL_MPU_REGION_SIZE_32KB = 14,
179 HAL_MPU_REGION_SIZE_64KB = 15,
180 HAL_MPU_REGION_SIZE_128KB = 16,
181 HAL_MPU_REGION_SIZE_256KB = 17,
182 HAL_MPU_REGION_SIZE_512KB = 18,
183 HAL_MPU_REGION_SIZE_1MB = 19,
184 HAL_MPU_REGION_SIZE_2MB = 20,
185 HAL_MPU_REGION_SIZE_4MB = 21,
186 HAL_MPU_REGION_SIZE_8MB = 22,
187 HAL_MPU_REGION_SIZE_16MB = 23,
188 HAL_MPU_REGION_SIZE_32MB = 24,
189 HAL_MPU_REGION_SIZE_64MB = 25,
190 HAL_MPU_REGION_SIZE_128MB = 26,
191 HAL_MPU_REGION_SIZE_256MB = 27,
192 HAL_MPU_REGION_SIZE_512MB = 28,
193 HAL_MPU_REGION_SIZE_1GB = 29,
194 HAL_MPU_REGION_SIZE_2GB = 30,
195 HAL_MPU_REGION_SIZE_4GB = 31,
196 HAL_MPU_REGION_SIZE_MAX
197 } hal_mpu_region_size_t;
201 HAL_MPU_NO_ACCESS = 0,
202 HAL_MPU_PRIVILEGED_ACCESS_ONLY = 1,
203 HAL_MPU_PRIVILEGED_READ_WRITE_UNPRIVILEGED_READ_ONLY = 2,
204 HAL_MPU_FULL_ACCESS = 3,
205 HAL_MPU_UNPREDICTABLE = 4,
206 HAL_MPU_PRIVILEGED_READ_ONLY = 5,
208 } hal_mpu_access_permission_t;
230 uint32_t mpu_region_address;
231 hal_mpu_region_size_t mpu_region_size;
232 hal_mpu_access_permission_t mpu_region_access_permission;
233 uint8_t mpu_subregion_mask;
235 } hal_mpu_region_config_t;
253 hal_mpu_status_t hal_mpu_init(
const hal_mpu_config_t *mpu_config);
260 hal_mpu_status_t hal_mpu_deinit(
void);
267 hal_mpu_status_t hal_mpu_enable(
void);
274 hal_mpu_status_t hal_mpu_disable(
void);
283 hal_mpu_status_t hal_mpu_region_enable(hal_mpu_region_t region);
292 hal_mpu_status_t hal_mpu_region_disable(hal_mpu_region_t region);
305 hal_mpu_status_t hal_mpu_region_configure(hal_mpu_region_t region,
const hal_mpu_region_config_t *region_config);