arm 处理器中的外部中止

external abort in arm processor

什么是 arm 处理器上的典型外部中止?

它与正常的数据中止和预取中止有何不同?

它如何通知应用程序有关外部中止的信息?

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

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

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

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

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


What is a typical external abort on an arm processor?

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

How does it differ from a normal data abort and prefetch abort?

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

How does it inform an application about external abort?

作为外部中止意味着外部到CPU(又名硬件),通常情况并非如此应用程序将获得外部中止。应用程序不应直接与硬件打交道。