实时事件驱动编程与UML状态机:原理、应用与优势
1. 实时内核与事件处理
在实时系统中,中断服务程序(ISRs)能够随时抢占活动对象的执行。对于“普通”内核而言,每个ISR执行完后都会返回到被抢占的精确位置。若ISR向某个活动对象发布事件,该事件的处理要等到当前的运行到完成(RTC)步骤结束后才会开始。这种情况下,最高优先级活动对象的事件可能被延迟的最长时间,被称为任务级响应时间。
在非抢占式的“普通”内核里,任务级响应时间等同于系统中所有活动对象最长的RTC步骤时长。不过,“普通”内核的任务级响应时间仍比传统的“超级循环”(即main + ISRs)架构要好很多。
以下是不同内核任务级响应时间的对比表格:
| 内核类型 | 任务级响应时间特点 |
| ---- | ---- |
| 非抢占式“普通”内核 | 等于系统中所有活动对象最长的RTC步骤时长 |
| 传统“超级循环”架构 | 任务级响应时间较差 |
简单的“普通”内核的任务级响应时间在很多应用场景中是足够的。这是因为状态机本质上能快速处理事件,无需忙等待事件到来。状态机执行完当前任务后会进入休眠状态,直到下一个事件到来。而且,我们可以通过将较长的RTC步骤拆分成较短的步骤,来加快任务级响应时间,例如使用“提醒”状态模式。
2. QK抢占式内核
在某些情况下,将长的RTC步骤拆分成足够短的片段可能非常困难,这会导致非抢占式“普通”内核的任务级响应时间过长。以GPS接收器为例,它需要在定点CPU上进行大量的浮点运算来计算GPS位置,同时还要以亚毫秒级的间隔跟踪GPS卫星信号。将位置计算任务拆分成足够短的RTC步骤以实现
超级会员免费看
订阅专栏 解锁全文
9206

被折叠的 条评论
为什么被折叠?



