gpt4 book ai didi

embedded - 在 ARM CPU 上启用外部中止

转载 作者:行者123 更新时间:2023-12-01 05:12:07 25 4
gpt4 key购买 nike

来自 Cortex-R reference manual , 可能不是 Cortex-R 特定的

Asynchronous abort masking

The nature of asynchronous aborts means that they can occur while the processor is handling a different abort. If an asynchronous abort generates a new exception in such a situation, the r14_abt and SPSR_abt values are overwritten. If this occurs before the data is pushed to the stack in memory, the state information about the first abort is lost. To prevent this from happening, the CPSR contains a mask bit, the A-bit, to indicate that an asynchronous abort cannot be accepted. When the A-bit is set, any asynchronous abort that occurs is held pending by the processor until the A-bit is cleared, when the exception is actually taken. The A-bit is automatically set when abort, IRQ or FIQ exceptions are taken, and on reset. You must only clear the A-bit in an abort handler after the state information has either been stacked to memory, or is no longer required.


我的问题是,如果我有 A重置后位屏蔽 我怎么知道异步中止是否挂起?可以在不取消屏蔽的情况下清除未决的外部中止 A位和异常(exception)?或者更一般地说,是否有关于清除 A 的建议?复位后位?
显然,我当前启动链中的某些内容有一个未决的外部中止(但仅在硬通电之后)。我想启用外部中止,但对于异常代码中的第一个外部中止特殊情况似乎相当麻烦。

最佳答案

在实现安全扩展的系统上,中断状态寄存器 ISR 可以告诉您是否存在未决的外部中止。遗憾的是,如果您使用的是没有实现它们的 R4,这并没有多大帮助。

否则,我在架构中看不到任何东西来识别或处理中止,而不是像你所说的那样处理异常。这并不让我感到惊讶 - 一般来说,可以安全地忽略的外部信息是一种特殊情况。

如果系统中的错误无法修复(引导加载程序是否以错误的顺序或类似的顺序探测设备?)那么解决方法,无论多么繁琐,都是当天的顺序 - 如果有一些相当简单的方法来告诉感冒从热复位启动我可以想象一个非常简单的自包含垫片来处理它,所以主代码永远不需要知道。

关于embedded - 在 ARM CPU 上启用外部中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23962450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com