MPU 受保护区域不受 EEFC_FCR ES 擦除保护(皮质 m4)

问题描述 投票:0回答:1

我在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 是否无法防止闪存控制器擦除操作?

security arm embedded cortex-m
1个回答
0
投票

片上闪存的闪存擦除不是内存映射操作。由Flash控制器直接管理,独立于CPU和MPU。

此外,Cortex-M4 没有定义闪存控制器,这将取决于制造商。 EEFC_FCR 特定于 Microchip/NXP AT-SAM 设备,而不是 Cortex-M4 寄存器。

对于片上闪存,写保护通常通过 MCU 的闪存控制器进行管理。 EEFC 具有三种形式的保护:

  • 提供“锁定区域”擦除/写入保护的锁定位,一个锁定区域是一个16Kb的块,锁定位的数量由总闪存大小决定。
  • 安全位 - 阻止读取。对整个闪存进行写入和擦除操作。
  • 寄存器写保护 - 阻止对 EEFC 寄存器的写访问,这间接阻止闪存擦除和写操作。
© www.soinside.com 2019 - 2024. All rights reserved.