According to ARM, the default behaviour of Cortex-M3 is to prevent execution from certain memory regions. Information here: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/CIHDHAEF.html
According to the above information page: "The optional MPU can override the default memory access behavior". That is all good, because we would like to execute code from the implementation specific 0xF0000000 region, which by default has the XN "Execute Never" flag set.
We are able to program the MPU to put additional restrictions on a memory region, so clearly the MPU works. But if we set the MPU to allow execution in the 0xF0000000 region, the CPU still enters exception when we try to execute at 0xF0000000.
Does anyone know if the Cortex-M3 MPU is supposed to be able to lift a default restriction, as the ARM page suggests?
0xE0100000- 0xFFFFFFFF
isImplementation-specific
. I think you should look at specific datasheet of your MPU/SoC – LPsarm
tag. It has quite a few more followers thancortex-m3
. – D Krueger