【问题标题】:external abort in arm processor [closed]手臂处理器中的外部中止[关闭]
【发布时间】:2015-10-23 14:23:09
【问题描述】:

ARM 处理器上的典型外部异常终止是什么?

它与普通数据中止和预取中止有何不同?

它如何通知应用程序外部中止?

【问题讨论】:

标签: arm abort mmu


【解决方案1】:

通常 ARM 处理器带有协处理器,其中一个协处理器是 cp15,它充当 MMU。

如果有任何这样的虚拟地址,MMU 无法找到任何页面,或者遇到称为数据或预取中止的转换错误,取决于各自的路径(I Cache 或 D Cache)。

http://infocenter.arm.com/help/index.jsptopic=/com.arm.doc.ddi0438d/BABFFDFD.html

假设你遇到这样一个虚拟地址,它在映射中有一个有效的物理地址,但物理地址本身是无效的(或者该地址属于安全世界,即信任区),系统总线会在这种情况下产生中止,因为它无法解码物理地址。

简而言之,所有不会被 MMU 检测到的中止称为外部中止,应用程序将收到 SIGBUS 信号通知


ARM 处理器上的典型外部异常终止是什么?

典型的外部中止是与硬件相关的。用户进程通常不可能导致这种情况。典型原因是未启用 SOC 模块的时钟和/或初始化相关的 SOC 块(总线配置、引脚多路复用等)。当访问受保护的内存(即来自正常世界的安全内存)时,TrustZone 也会发生这种情况。

它与普通数据中止和预取中止有何不同?

正常数据中止和预取正在使用未由 MMU 映射的内存。映射了外部中止,但是当 CPU 运行总线周期时,物理地址处的外设没有响应(或将错误发送回 CPU)。

它如何通知应用程序外部中止?

由于外部中止意味着CPU(也称为硬件)的一些外部,通常情况下应用程序不会获得外部中止。应用程序不应直接处理硬件。

【讨论】:

    猜你喜欢
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 2010-10-05
    • 2013-02-05
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多