我是一名工科学生,目前在研究皮质m3处理器及其异常处理模型。 我已经使用相应的故障处理程序生成并测试了使用故障,总线故障,硬故障。
但我不知道如何产生内存管理故障 (不在上下文中使用MPU)
还有其他方法可以产生内存管理故障吗?
提前致谢
答案 0 :(得分:1)
引用Architecture Reference Manual(强调我的):
对于指令和数据存储器事务,MemManage故障处理由内存保护单元或固定内存保护约束确定的内存保护错误。
换句话说,如果你不想对MPU进行编程,那么你将不得不寻找其中一个固定的约束,而开始寻找的显而易见的地方是the memory map。执行从不听起来像是对我的约束,果然,虽然Cortex-M3 TRM有点模糊(“故障异常”),但架构说:
XN表示执行从不区域。任何从XN区域执行代码的尝试都会出错,从而生成MemManage异常。
我们走了。看起来最简单的方法是简单地分支到系统区域(0xE0000000 - 0xFFFFFFFF),因为无论MPU配置如何,它始终是XN。