Skip to content

Commit f83f6e7

Browse files
committed
alif/mpu: Add function to set read-only bit on MRAM MPU region.
To allow writing to MRAM region. Signed-off-by: Damien George <[email protected]>
1 parent d895a62 commit f83f6e7

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

ports/alif/mpu.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
*/
2626

2727
#include "py/mpconfig.h"
28+
#include "irq.h"
2829
#include "mpu.h"
2930
#include ALIF_CMSIS_H
3031

@@ -76,3 +77,13 @@ void MPU_Load_Regions(void) {
7677
// Load the MPU regions from the table.
7778
ARM_MPU_Load(0, mpu_table, sizeof(mpu_table) / sizeof(ARM_MPU_Region_t));
7879
}
80+
81+
void mpu_config_mram(bool read_only) {
82+
uintptr_t atomic = disable_irq();
83+
ARM_MPU_Disable();
84+
MPU->RNR = MP_MPU_REGION_MRAM;
85+
MPU->RBAR = ARM_MPU_RBAR(MRAM_BASE, ARM_MPU_SH_NON, read_only, 1, 0);
86+
MPU->RLAR = ARM_MPU_RLAR(MRAM_BASE + MRAM_SIZE - 1, MP_MPU_ATTR_NORMAL_WT_RA);
87+
ARM_MPU_Enable(MPU_CTRL_PRIVDEFENA_Msk | MPU_CTRL_HFNMIENA_Msk);
88+
enable_irq(atomic);
89+
}

ports/alif/mpu.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
* THE SOFTWARE.
2525
*/
2626

27+
#include <stdbool.h>
28+
2729
#define MP_MPU_ATTR_NORMAL_WT_RA_TRANSIENT (0)
2830
#define MP_MPU_ATTR_DEVICE_nGnRE (1)
2931
#define MP_MPU_ATTR_NORMAL_WB_RA_WA (2)
@@ -37,3 +39,5 @@
3739
#define MP_MPU_REGION_OSPI_REGISTERS (4)
3840
#define MP_MPU_REGION_OSPI0_XIP (5)
3941
#define MP_MPU_REGION_OPENAMP (6)
42+
43+
void mpu_config_mram(bool read_only);

0 commit comments

Comments
 (0)