潮声隔雨深 · 2020年02月12日

Memory Protection Unit -R7

我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,就不会跑飞了。

1 个回答 得票排序 · 时间排序
一知半解 · 2020年02月12日

在开启MPU之前需要指定region0的base和size然后才能使能,不然你code/data都不知道在哪,肯定跑飞了

你的回答