手臂处理器中的外部中止[关闭]

Posted

技术标签:

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

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

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

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

【问题讨论】:

为什么会被搁置?需要了解 ARM CPU 才知道这不是太宽泛。 可能相关:What do these kernel panic messages mean 【参考方案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(也称为硬件)的一些外部,通常情况下应用程序不会获得外部中止。应用程序不应直接处理硬件。

【讨论】:

以上是关于手臂处理器中的外部中止[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

当 AXI 事务回复错误时关闭或处理数据中止

.NET 中的线程中止

如何在火花中处理 Integer.MAX_VALUE? [关闭]

STM32CubeMX之外部中断

在英特尔(i7)和手臂上映射不同的行为?

中断简介