TinyOS 开发:任务、分阶段调用与应用实践
1. 任务与事件处理
在系统开发中,任务的简短性对组件的实现方式,特别是事件处理程序,有着直接影响。例如,BaseStationP 不在其接收事件处理程序中直接发送数据包,而是通过发布任务来实现。这是因为底层无线电栈在一个任务中发出接收信号,可能经过了一些计算。如果发送调用需要大量的周期,那么底层无线电组件在发送完成之前将无法从应用程序获得新的缓冲区。更普遍地说,如果接收处理程序中有大量的计算,那么无线电必须等待这些计算完成,才能有一个缓冲区来接收下一个数据包。
一个事件处理程序可能代表多个软件层。例如,一个网络组件可能处理一个接收事件,根据数据包进行一些小的计算,然后将其信号传递到下一层。因此,任何给定的组件可能只是一长串事件处理程序中的一部分。如果一个处理程序需要进行大量的计算,最好发布一个任务,这样可以防止调用链中有多个这样的处理程序。
编程提示 16 :如果一个事件处理程序需要进行可能长时间执行的命令调用,发布一个任务来进行这些调用。
虽然任务在理论上可能需要等待一段时间才能运行,但实际上任务往往非常短,因此发布和执行之间的延迟很小。
2. 任务与分阶段调用
任务不仅提供了一种使用单个堆栈来维持系统响应性的方法,还使 nesC 程序能够拥有灵活的硬件/软件边界,让软件组件的行为类似于硬件。为了理解这一点,我们需要先了解大多数外设(如传感器和无线电)的工作方式。
2.1 硬件与软件
分阶段调用代表了大多数外设的工作方式。软件向设备发出命令,一段时间后,设备通常通过中断指示操作完成。设
超级会员免费看
订阅专栏 解锁全文
6

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



