本文主要是介绍Contiki协议栈学习计划,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在前面
由某个物联网岗位招聘中,里面有一条加分项是这样说的:
Familiarity with Contiki or Tiny OS programming is a PLUS.
然后就在网上疯狂搜索这条招聘中的相关专业术语,最后打算以Contiki作为切入点。Contiki作为一个操作系统,综合了多门学科知识,比如C语言、操作系统、数据结构、计算机网络,而Contiki在网络这一块又包含了很多网络协议,比如TCP/IP的简化版uIP,比如Contiki的基础协议Rime,再比如各种应用协议等等。因此可以说,Contiki是一个绝佳的学习宝库。
经过长达一个月的预热期,现在已经对Contiki基本架构有了一定的了解,比如Contiki的protothread机制,事件驱动机制。这里主要要感谢Jelline和陈广老师,他们的Contiki学习笔记对我又很大的启发。Jelline的学习笔记是好几年前的了,而又由于Contiki的开发很活跃,所以很多代码都比较老了,与现在的代码有很大的差别。陈广老师的学习笔记是今年才开始写的,但是他最开始依赖的Contiki是2.7,与现在github上最新的代码也有一定的差距(这两天在看packetbuf这一块,其实现方法有很大的不同)。
在这一个月的预热期中,还特意去巩固了一些大学里的基础知识,比如《计算机网络》。还看了一些Adum的论文,目前翻译了三篇,两篇半成品[点击这里]。还翻译了世界上唯一的一本以Contiki为蓝本的书《IoT in five days》[点击这里]。自己还fork了Contiki仓库,翻译了部分Contiki Wiki[点击这里](还产生了一件有趣的事儿,刚开始不懂,翻译到官方的Contiki上面去了,后来还有老外提出issue,“咦,为啥Wiki的文字是中文的,我看不懂啊”,O(∩_∩)O哈哈~[点击这里])。
变色龙架构
在Contiki中,Adam将协议栈架构叫做变色龙架构,这是因为Contiki不指定要传输、接收的包的包头的具体格式,因此可以兼容各种可能的协议(甚至将来才会开发出来的协议)。
在预热学习中,已经对Rime栈,Chameleon,MAC层都有了一定的了解,因此我目前的学习主要集中在这上面,深入研究其源码。
关于更具体的学习计划,请参考我的下一篇博客: Contiki学习笔记:引入
参考学习资料
Jelline博客:
http://blog.chinaunix.net/uid-9112803-id-2978041.html陈广老师博客:
http://cgbluesky.blog.163.com/blog/#m=0&t=1&c=fks_085067093087088067084083094095086082080065087083083075Adam论文集合:
http://download.csdn.net/detail/tidyjiang/9527568Contiki Wiki:
https://github.com/tidyjiang8/contiki/wiki
https://github.com/contiki-os/contiki/wikiContiki tutorials:
http://anrg.usc.edu/contiki/index.php/Contiki_tutorials学堂在线视频:
http://www.xuetangx.com/courses/course-v1:NTHU+MOOC_01_004+sp/courseware/136d91d9553b42eba4bdf93a66944c34/56f535c1a9f14935a32b5e9fde641359/
http://www.xuetangx.com/courses/course-v1:UST+UST001+sp/courseware/57be39eedfa34649ac8939c4a7494b76/4f99140085b84a939a04cd5eb4306898/IoT in 5 days:
https://www.gitbook.com/book/tidyjiang8/iot-in-5-days/details1
这篇关于Contiki协议栈学习计划的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!