【问题标题】:How to generate memory management fault in cortex m3 based microcontroller如何在基于 Cortex M3 的微控制器中生成内存管理故障
【发布时间】:2017-04-28 20:19:57
【问题描述】:

我是一名工科学生,目前正在学习 cortex m3 处理器及其异常处理模型。 我已经使用相应的故障处理程序生成并测试了使用故障、总线故障、硬故障。

但我不知道如何生成内存管理错误 (不考虑 MPU)

有没有其他方法可以产生内存管理故障?

提前致谢

【问题讨论】:

  • 我没有在低级别使用 m3 的直接经验,所以我不能肯定地回答,但我相信执行 Illegal Access 指令会导致 MM 错误。您应该可以使用调试器单步执行,也可以编写代码在运行时发送指令。

标签: exception-handling cortex-m3


【解决方案1】:

引用Architecture Reference Manual(强调我的):

MemManage 故障处理内存保护故障由内存保护单元或固定内存保护约束确定,用于指令和数据内存事务。

换句话说,如果您不想对 MPU 进行编程,您将不得不寻找其中一个固定约束,而显而易见的起点是 the memory map。 Execute Never 对我来说听起来像是一个约束,果然,虽然 Cortex-M3 TRM 有点模糊(“故障异常”),但架构说:

XN 表示从不执行区域。任何从 XN 区域执行代码的尝试都会出错,从而生成 MemManage 异常。

我们去吧。看起来最简单的方法是简单地分支到系统区域 (0xE0000000 - 0xFFFFFFFF),因为无论 MPU 配置如何,它始终是 XN。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    相关资源
    最近更新 更多