在介绍protothread前,我们先了解下他的作者,瑞典计算机科学院(SICS)大名鼎鼎的:Adam Dunkels,他是uip,lwip,contiki的作者,他还成立了公司,专门做物联网相关的产品。lwip就不介绍了,开源的轻量级TCP/IP协议栈,使用的非常广泛;但是它比uip网络协议栈要复杂的多,uip属于精简版的以太网网络协议栈,作者在写这个uip时,为了解析各种网络栈协议,就发明了protothread,这个翻译过来就是:原始线程等意思;后来uip被合并到contiki维护了,自然地protothread也就代入到了contiki中,contiki是一个开源的,占用资源极小的RTOS,一般用在资源紧缺的8位或16位MCU中,contiki中的线程模型就是protothread实现的。
一、protothread是什么
简单来说,它就是一种编程技术,具体来说就是采用下面的代码来实现switch case语句的控制跳转。有人认为它是状态机,也有人认为它是协程,我理解它就是一种编程技术,具体起什么名字,我就不纠结啦。
typedef unsigned short lc_t;
#define LC_INIT(s) s = 0;
#define LC_RESUME(s) switch(s) { case 0:
#define LC_SET(s) s = __LINE__; case __LINE__:
#define LC_END(s) }
二、protothread的源代码
1、源码首先可以在uip的源码中找到,是比较老了,最新的代码可以在contiki或contiki-ng中找到,这2份代码中的protothread代码是一样的,用哪个都行
2、美国康纳尔大学的ECE4760课程对proto

Protothread是由Adam Dunkels发明的一种编程技术,用于实现轻量级的线程控制,常见于资源受限的嵌入式系统。它是uip、lwip和contiki等项目的基础,特别适用于8位或16位MCU。本文介绍了Protothread的起源、原理及在开源项目中的应用。
最低0.47元/天 解锁文章
286

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



