根据 ARM,Cortex-M3 的默认行为是阻止从某些内存区域执行。这里的信息:http: //infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/ CIHDHAEF.html
根据上面的信息页面:“可选的 MPU 可以覆盖默认的内存访问行为”。这一切都很好,因为我们希望从特定于实现的 0xF0000000 区域执行代码,默认情况下该区域设置了 XN“从不执行”标志。
我们能够对 MPU 进行编程以对内存区域施加额外的限制,因此 MPU 显然可以工作。但是如果我们将 MPU 设置为允许在 0xF0000000 区域执行,当我们尝试在 0xF0000000 执行时,CPU 仍然会进入异常。
有谁知道 Cortex-M3 MPU 是否应该能够解除默认限制,正如 ARM 页面所建议的那样?