是否允许在 ISR 内锁定中断?

问题描述 投票:0回答:1

我有一个设备,它接收来自外部设备的多个中断,并最终向 ARM 处理器发送一个中断信号。我所做的是编写一个驱动程序,其中包含在操作系统中注册的 ISR。

ISR 的工作是检查寄存器,找出哪个外部设备正在触发中断,然后在通过寄存器写入清除外部中断之前采取一些适当的操作。

我注意到的一件事是我的 RTOS 提供了锁定和解锁 CPU 的所有中断的能力,但文档真正说的是要谨慎使用它。

在我的用例中使用类似的东西可以吗?或者说这让人皱眉?我设想的是 ISR 中的一个关键区域,在解锁 CPU 中断之前,我会在其中读取外部中断、传递它并清除它。我想这样做的原因是为了防止任何形式的潜在抢占,即使我还没有遇到任何问题。

embedded driver interrupt rtos
1个回答
0
投票

ISR 中可以禁用中断(RTOS 切换任务时需要禁用中断)以保护关键代码。当然,正如你所说,需要谨慎使用,并且禁用中断的时间应该尽可能短。

© www.soinside.com 2019 - 2024. All rights reserved.