From 7476a2953e228607247aef6f80f471f653ace00b Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Tue, 31 Aug 2021 17:59:21 -0400 Subject: [PATCH] boards: CUAV H7 boards clear MPU early in board init - needed if the bootloader configures the memory protection unit (MPU) --- boards/cuav/nora/src/init.c | 12 ++++++++++++ boards/cuav/x7pro/src/init.c | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/boards/cuav/nora/src/init.c b/boards/cuav/nora/src/init.c index eacc5e7862..a1450d25bc 100644 --- a/boards/cuav/nora/src/init.c +++ b/boards/cuav/nora/src/init.c @@ -60,6 +60,8 @@ #include #include +#include + __BEGIN_DECLS extern void led_init(void); extern void led_on(int led); @@ -127,6 +129,16 @@ __EXPORT void board_on_reset(int status) ************************************************************************************/ __EXPORT void stm32_boardinitialize(void) { + // clear all existing MPU configuration from bootloader + for (int region = 0; region < CONFIG_ARM_MPU_NREGIONS; region++) { + putreg32(region, MPU_RNR); + putreg32(0, MPU_RBAR); + putreg32(0, MPU_RASR); + + // save + putreg32(0, MPU_CTRL); + } + /* Reset PWM first thing */ board_on_reset(-1); diff --git a/boards/cuav/x7pro/src/init.c b/boards/cuav/x7pro/src/init.c index eacc5e7862..a1450d25bc 100644 --- a/boards/cuav/x7pro/src/init.c +++ b/boards/cuav/x7pro/src/init.c @@ -60,6 +60,8 @@ #include #include +#include + __BEGIN_DECLS extern void led_init(void); extern void led_on(int led); @@ -127,6 +129,16 @@ __EXPORT void board_on_reset(int status) ************************************************************************************/ __EXPORT void stm32_boardinitialize(void) { + // clear all existing MPU configuration from bootloader + for (int region = 0; region < CONFIG_ARM_MPU_NREGIONS; region++) { + putreg32(region, MPU_RNR); + putreg32(0, MPU_RBAR); + putreg32(0, MPU_RASR); + + // save + putreg32(0, MPU_CTRL); + } + /* Reset PWM first thing */ board_on_reset(-1);