我在Cortex-M4上设置了一个MPU区域,AP编码为000(无法访问),
MPU->RBAR = address | (1 << 4) | (1 << 0);
MPU->RASR = (1 << 17) | (1 << 3) | (1 << 0);
MPU->CTRL = 0b111;
SCB->SHCSR |= (1 << 16);
如果我尝试从后台区域写入该区域,确实会出现错误。
但是,使用 EEFC_FCR 寄存器中的 ES 命令擦除该区域执行时没有任何问题。 MPU 是否无法防止闪存控制器擦除操作?
片上闪存的闪存擦除不是内存映射操作。由Flash控制器直接管理,独立于CPU和MPU。
此外,Cortex-M4 没有定义闪存控制器,这将取决于制造商。 EEFC_FCR 特定于 Microchip/NXP AT-SAM 设备,而不是 Cortex-M4 寄存器。
对于片上闪存,写保护通常通过 MCU 的闪存控制器进行管理。 EEFC 具有三种形式的保护: