From 965f11e923d6569939e44a2ae88a387b87586798 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 31 Aug 2021 23:39:05 +0200 Subject: [PATCH] MRO: Set up MPU after boot to app This is needed in case the bootloader configured the MPU, which could interfere with the app as the bootloader memory map / configuration is different. --- boards/mro/ctrl-zero-h7-oem/src/init.c | 12 ++++++++++++ boards/mro/ctrl-zero-h7/src/init.c | 12 ++++++++++++ boards/mro/pixracerpro/src/init.c | 12 ++++++++++++ 3 files changed, 36 insertions(+) diff --git a/boards/mro/ctrl-zero-h7-oem/src/init.c b/boards/mro/ctrl-zero-h7-oem/src/init.c index a7fd31a20c..02a4a2eb7a 100644 --- a/boards/mro/ctrl-zero-h7-oem/src/init.c +++ b/boards/mro/ctrl-zero-h7-oem/src/init.c @@ -60,6 +60,8 @@ #include #include +#include + __BEGIN_DECLS extern void led_init(void); extern void led_on(int led); @@ -121,6 +123,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/mro/ctrl-zero-h7/src/init.c b/boards/mro/ctrl-zero-h7/src/init.c index a7fd31a20c..02a4a2eb7a 100644 --- a/boards/mro/ctrl-zero-h7/src/init.c +++ b/boards/mro/ctrl-zero-h7/src/init.c @@ -60,6 +60,8 @@ #include #include +#include + __BEGIN_DECLS extern void led_init(void); extern void led_on(int led); @@ -121,6 +123,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/mro/pixracerpro/src/init.c b/boards/mro/pixracerpro/src/init.c index 5a5748918b..7085a45233 100644 --- a/boards/mro/pixracerpro/src/init.c +++ b/boards/mro/pixracerpro/src/init.c @@ -60,6 +60,8 @@ #include #include +#include + __BEGIN_DECLS extern void led_init(void); extern void led_on(int led); @@ -121,6 +123,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);