diff --git a/include/arch/arm/cortex_m/mpu/nxp_mpu.h b/include/arch/arm/cortex_m/mpu/nxp_mpu.h index caf9ad94423..c4b58d49b0c 100644 --- a/include/arch/arm/cortex_m/mpu/nxp_mpu.h +++ b/include/arch/arm/cortex_m/mpu/nxp_mpu.h @@ -118,6 +118,12 @@ #define REGION_USER_RO_ATTR {(MPU_REGION_READ | \ MPU_REGION_SU)} +/* ENET device (Master 3) will not be able to access RAM when +ram region is dynamically disabled in NXP MPU. +DEBUGGER (Master 1) can't be disabled in Region 0. */ +#define REGION_DEBUGGER_AND_DEVICE_ATTR {((MPU_REGION_SU) | \ + ((UM_READ | UM_WRITE) << BM3_UM_SHIFT))} + #define REGION_DEBUG_ATTR {MPU_REGION_SU} #define REGION_BACKGROUND_ATTR {MPU_REGION_SU_RW} diff --git a/soc/arm/nxp_kinetis/k6x/nxp_mpu_regions.c b/soc/arm/nxp_kinetis/k6x/nxp_mpu_regions.c index e4907c243c2..54186711bc7 100644 --- a/soc/arm/nxp_kinetis/k6x/nxp_mpu_regions.c +++ b/soc/arm/nxp_kinetis/k6x/nxp_mpu_regions.c @@ -8,10 +8,13 @@ static const struct nxp_mpu_region mpu_regions[] = { /* Region 0 */ + /* Debugger access can't be disabled; ENET devices will not be able to + * access RAM when it's region is dynamically disabled in NXP MPU. + */ MPU_REGION_ENTRY("DEBUGGER_0", 0, 0xFFFFFFFF, - REGION_DEBUG_ATTR), + REGION_DEBUGGER_AND_DEVICE_ATTR), /* The NXP MPU does not give precedence to memory regions like the ARM * MPU, which means that if one region grants access then another