因为程序在某些时候跑飞,想查找异常,但是无奈没有类似于ARM的“取指异常”与“访问异常”等异常,如对0地址的读写操作。
但看到MPU大概可以实现这个功能;,无奈相关资料太少;
并且<SPRUH79A>上说的MPU REVID(0x4E810101)与实际器件(0x4E814901)不一致.
找到另外一篇:
KeyStone Architecture Memory Protection Unit (MPU)
Literature Number: SPRUGW5A
June 2013
版本ID能对上,但按时间操作并无引起异常;
程序如下(仿真器调试):
HWREG(SOC_MPU_0_REGS + MPU0_PROG1_MPSAR) = 0x00000000;
HWREG(SOC_MPU_0_REGS + MPU0_PROG1_MPEAR) = 0x00000000 + 0x00700000 - 1;
HWREG(SOC_MPU_0_REGS + MPU0_PROG1_MPPA) = 0x03FFFE00;
p = (void*)1;
*p = 0x11;
val = *p;
按我理解应该是会引起异常的,虽然中断没开,至少“FLTSTAT”等寄存器会有变化;
是否有更详细的资料或参考代码;“C6748_StarterWare”中没有此部分例程。