























@huangya #16 其实你只要理解硬件的中断优先级是手动管理的,硬件编程和软件编程不一样,如何调度何时调度都是固定的,所以每秒留给按钮处理程序多少时间一般就是提前设计好的,几乎不会有明显波动,所以一般来说就人的反应来说并不会出现来不及处理的情况,而且吧就算是嵌入式程序,设计合理严谨的程序也不会直接在中断里直接完成逻辑处理,一般都只是获取完状态然后创建任务交给主程序完成业务逻辑,那么这种情况下,每个中断的处理时间是完全精确到了具体的时钟周期,提前就可以完全精确的算出了每个中断耗时和冲突情况,既然如此按钮能否正常处理提前就能知道啊
而对于有操作系统的像树莓派这种,一般来说应用程序层面接收到的都是内核给的软中断,一般不是驱动程序的话并不能直接接收到硬件中断吧,否则岂不是应用程序处理异常就会导致内核直接崩溃,换句话说内核负责管理了中断优先级和调度延时,同样一般内核也能保证硬件中断能得到及时处理,毕竟硬件中断并不会受到系统负载的影响,而对于网卡、USB 之类需要处理大量数据的这种设备,其实硬件已经通过 DMA 把数据直接存到内存了,硬件中断只是告诉操作系统有新数据已经保存到内存,之后同样转有软中断处理,所以硬件中断所做的事情是非常少的,不能及时处理的可能性很小,软中断自然收到操作系统调度影响但是此时程序设计本身就能支持不确定延时了吧
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。