gpt4 book ai didi

c - 为什么不将任务上下文置于中断中

转载 作者:太空狗 更新时间:2023-10-29 15:34:31 25 4
gpt4 key购买 nike

这是故事。

这是一个安全关键项目,需要以 20KHz 的频率运行时间关键的功能例程。现在的设计是将功能程序放在一个20KHz的FIQ中断中,同时安全中断也在FIQ中。那是系统中仅有的两个 FIQ。 (当然 MCU 中启用了几个 IRQ)

我知道将任务上下文放在中断 ISR 中是不好的,正确的方法是在操作系统任务中设置标记和运行。但似乎目前的设计伤害了任何人。

例程耗时10us左右(主时钟300MHz),所以基本上不会阻塞IRQ/FIQ Not Acceptable 时间。与使用 OS 任务运行功能例程相比,它甚至可以节省额外的上下文切换时间。对我来说,目前感觉这个设计违背了大学教科书上写的所有原则,但找不到拒绝的理由。

我如何说服自己将功能例程从 ISR 转移到 OS?我应该吗?

最佳答案

让我们记忆一下你的情况:

  1. 您正在编写一个安全关键系统
  2. 没有指定软件架构,否则你不会问手头的问题
  3. 系统要求没有得到正确处理,否则 2) 不会有问题
  4. 有人告诉您“在安全关键系统中尽可能使用最少的中断”
  5. 您想为“只是一些数学作业”使用最高优先级和不可中断的代码

抱歉有点苛刻,但我不想使用/进入您的安全关键系统。

针对您的实际问题:你必须确保两件事

  • FIQ 中的代码必须是确定性的并且经过 WCET 测试
  • 定时器的寄存器必须受到保护和监督。为什么?较低安全级别的代码对定时器寄存器的不必要/错误操作会使 CPU 非常拥塞,以至于实际上除了中断之外没有其他任何东西得到处理。

所有这一切都假设您的安全状态完全取决于外部硬件看门狗。

PS:你们系统的用户有哪些危害?烦恼?受伤?致命?您处于 SIL 或 ASIL 环境中吗?

关于c - 为什么不将任务上下文置于中断中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47215626/

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