新闻中心

EEPW首页>嵌入式系统>设计应用> 利用Protothread实现实时多任务系统

利用Protothread实现实时多任务系统

作者::长沙威胜仪表集团 罗光平 湖南大学 郭卫锋 时间:2008-07-09 来源:单片机与嵌入式系统应用 收藏

  设计思路:

本文引用地址://m.amcfsurvey.com/article/85487.htm

  将TaskB和TaskC分成若干步,每步运行时间不超过10 ms(这个时间可视系统需求而定,例如TaskA若为40 ms内响应,则每步可扩至20 ms)。任务以3个的方式运行。首先执行TaskA,在TaskA执行完成1次后,释放执行权限,让TaskB和TaskC执行。TaskB或TaskC在每执行1步之前检查运行时间,一旦发现30 ms内不够执行1步时,阻塞运行,让出执行权限给TaskA。同样,TaskB和TaskC的调度关系也类似,先运行TaskB,完成时释放执行权限,让TaskC执行;TaskC在每执行1步之前检查运行时间,若发现200 ms内不够执行1步时,阻塞运行,让出执行权限重新交给TaskB。

  源程序(Task0TimeCounter、Task1TimeCounter为计数器,每毫秒加1):

  模拟运行结果如表1所列。运行结果显示,3个任务的运行情况完全满足系统的设计要求。从资源需求来看,完成此例的系统设计,共需要12个字节的RAM空间。笔者进一步对定义文件做了少许修改和优化,最终仅耗费6个字节。

  表1 模拟运行结果运行

结语

  本文旨在解决资源紧张型应用的、多任务环境下的实时性问题。 通过借助的阻塞运行机制, 成功实现了低开销的实时

参考文献

  [1] Adam Dunkels, Oliver Schmidt, Thiemo Voigt. Using Protothreads for Sensor Node Programming[C]. REALWSN'05 Workshop on RealWorld Wireless Sensor Networks, Stockholm, Sweden, June 2005

  [2] Adam Dunkels, Oliver Schmidt, Thiemo Voigt, et al. Protothreads: Simplifying EventDriven Programming of MemoryConstrained Embedded Systems[C]. In Proceedings of the Fourth ACM Conference on Embedded Networked Sensor Systems (SenSys 2006), Boulder, Colorado, USA, November 2006.

  [3] Labrosse Jean J. MicroC/OSII The Real Time Kernel Second Edition[M]. CMP Books, CMP Media.

  [4] 冉全. 单片机中基于多线程机制的实时多任务研究[J] .微型机与应用,2003(8): 39-40.

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭