这是故事。
它是一个安全关键项目,需要以 20KHz 运行时间关键功能例程。现在的设计是将功能程序放在一个20KHz的FIQ中断中,同时安全中断也放在FIQ中。那是系统中仅有的两个 FIQ。(当然MCU中启用了几个IRQ)
我知道将任务上下文放在中断 ISR 中是不好的,这是设置标记并在 OS 任务中运行的正确方法。但似乎当前的设计不会伤害任何人。
该例程大约需要 10us(主时钟 300MHz),所以基本上它不会阻塞 IRQ/FIQ 到不可接受的时间。与使用 OS 任务运行功能例程相比,它甚至可以节省额外的上下文切换时间。对我来说,目前感觉这个设计违背了大学教科书上写的每一条原则,却找不到拒绝的理由。
我如何说服自己将功能例程从 ISR 转移到 OS?我是不是该?