各位专家,您好!
我enable R7的MPU后,发生软件跑飞的情况,不知道怎样入手调试。麻烦各位专家指导下,谢谢!
调试信息如下:
/* Now we can safely enable the MPU in SCTLR register. */ mrc p15, #0, r0, c1, c0, #0 orr r0, r0, #MK_MPU_ENABLE dsb mcr p15, #0, r0, c1, c0, #0 isb
(1)执行完上面的 mcr p15, #0, r0, c1, c0, #0后,SCTLR寄存器的M位就被置1了,就使能MPU了,但执行完后,软件就跑飞了
(2)在开启MPU前,通过在debug工具手动开启background region或者讲region 0的大小改为4G,就不会跑飞了。
在开启MPU之前需要指定region0的base和size然后才能使能,不然你code/data都不知道在哪,肯定跑飞了
感谢专家的解答。我应该是指定了region 0的base的size了的。使能MPU之前,相关寄存器的值如下图:
章政,您好!
请问指定region的base和size是不是在启动文件的汇编代码中做的?
加在这段汇编代码前面加上就好了