CosyOS-II 有关中断的部分说明
一、什么是零中断延迟?...略。
二、零中断延迟基本原理...略。
三、零中断延迟的意义
MCU的核心价值在于中断的使用,实现对紧急事件的及时响应并处理。如果RTOS内核以关闭总中断的方式来处理内核服务、保护临界段,则意味着可能会丢失对高速中断的响应,并导致处理延误。而 “丢失响应” 往往是致命的,“处理延误” 可能会引发不良后果。
- 误区
即使关闭了总中断,中断被触发后标志位仍可置位,当开启总中断后仍可响应中断。
首先,这已经导致了“处理延误”,如果延误时间超出了允许范围,危害是可想而知的。
其次,如果关闭总中断期间,某个高速中断发生了两次或多次,当开启总中断后,也仅能响应并处理一次,即“丢失响应”。而有的事件,发生一次就得处理一次,如果有遗漏将导致致命的错误。 - 示例
高速通讯(接收丢帧)
高速捕获(丢失脉冲)
高速PWM
高速ADC
事实上,RTOS以关闭总中断的方式来保护临界段,是最为直接有效的,可实现最少的指令。CosyOS通过特殊的方法来保护临界段,必然是走了一条弯路,需要执行更多的指令,牺牲了整体的运行效率,但同时确换取了零中断延迟,这一点与RTOS通过牺牲整体的运行效率来换取实时性(对紧急事件的优先处理)是相同的道理。
四、中断使用注意事项- 在CosyOS中,中断是系统脱管的,用户对中断的使用与裸机编程是一样的。
- 只要中断不是最低优先级,就可实现零中断延迟。因此,用户中断应尽量避免使用最低优先级。[注1]
- 用户中断应遵循快进快出的原则,对事件仅做必要的紧急处理,再以同步方式通知 中断服务任务 做后续处理。
- 用户中断的最大执行时间应远小于系统滴答周期,这将促使整个系统更加良性的运行。
注1:其实,即使用户中断是最低优先级,也可能是零中断延迟的(当任务临界区未使用BASEPRI寄存器时),只不过
系统中断可能会与其抢占。而系统中断相对来说还是会占用更多的时间,可能会导致用户中断丢失响应或处理延误。
零中断延迟是CosyOS的宗旨,是原则和底线,必须坚决贯彻落实。
|