0.前言

这篇博文是我个人的阶段性总结。大概1年半之前,我在图书馆中找到了一本书《基于IP的物联网架构、技术与应用》,书中描述了IPv6技术在物联网中的应用,我觉得这或许是物联网发展的方向,书中描述了contiki操作系统,contiki区别于zigbee pro是基于IPV6、6LowPAN技术的开源操作系统。当时我便下定决心要把这个contiki“用起来”,实现哪怕实现点对点的无线通信。今天我实现了,也痛哭了一场。虽然点对点通信是一件看似非常简单的事情,但是却需要非常多的基础知识。下面我就说说我个人的学习经历,希望对各位有用,也非常欢迎交流。

1.不要为专业找借口

学习contiki需要非常多的基础知识,包括嵌入式硬件、嵌入式软件、通信、网络、射频、嵌入式操作系统等等。只要觉得对contiki有兴趣就可以入手学习,我也坚信一定可以学好用好。本人专业机械工程,你没有看错我也没有写错,我的确是学习机械工程的。说实话在嵌入式上面的基础比较薄弱,所以我也告诉自己更加需要努力学习。既然机械工程的能把contiki用起来,那么我坚信电子信息工程、通信、计算机等相关专业入手学习contiki也一定会有所收获。

2.做好规划,耐心学习

contiki现在算是“小众”操作系统(希望以后不是),所以网上的资料较少,学习起来真的比较困难。也不可能今天刚听说contiki可以实现IPV6,明天IPV6报文就可以在RF芯片之间飞来飞去了。所以我在一年之前做了一个规划,我当时在自己的笔记本上记下了日期——2012年4月27日。那天给自己做了一个路线图,一条是IPV4学习路线,一条是CC2430/CC2530学习路线,两条路线一合并,加上6LowPAN技术的学习,把contiki“用起来”也变成顺理成章的事情。现在回过头来看看,我真的是这么做的。虽然中途多次想要放弃,学习的历程也是断断续续,但是终于有了一个结果也算没有白费。

3.用好嵌入式以太网

contiki是面向IPV6的操作系统,要想深入理解IPV6我个人认为应该先学好IPv4,为IPv6的学习与应用打好基础。在我个人路线图的第一个分支中细分为两步,第一步是ENC28J60的学习,第二步是uIP的学习应用。在《基于IP的物联网架构、技术与应用》一书中介绍,contiki通过uIPV6实现6lowPAN,uIPv6即从uIP演化而来。有了想法便开始逐渐实施,购买带以太网接口的STM32开发板,仔细分析ENC28J60的驱动代码,阅读uIP的手册等等。期间购买了很多图书,虽然花了不少钱(当时还是学生非常拮据)但是收获颇丰。国外有一个开源的以太网项目名为AVRNET。我通过这个项目学习了ENC28J60的驱动代码,并在STM32平台上逐步修改AVRNET项目中的以太网协议栈代码,从ENC28J60驱动,ARP协议,ICMP协议,UDP协议,TCP协议和HTTP协议,一步一步学习稳步实现,这样TCP IP协议本身的学习就完成了,我个人认为效果还不错。经过前面的学习,uIP、套接字这些内容的学习便比较顺利。如果非要从uIP或者lwIP开始学习嵌入式以太网,我觉得可能会面临更大的困难(诶,自己本科的时候并没有学习过TCP IP的相关课程,所以只能慢慢自学)。总之建议大家稍稍耐心一点。

【STM32NET学习笔记 ARP和Ethernet部分】

【uIP学习笔记】

4.认真研究一款无线RF芯片

开始研究contiki之前,自己也从未使用过一款无线RF芯片。我个人喜欢看书而不喜欢在网上狂找资料,我买了一本《ZigBee技术实践教程——基于CC2430/CC2431的无线传感网络解决方案》,在这本书中学习了无线传感网络的基本知识。不过也有少许遗憾,书中关于RF的部分讲解不多。之后便详细分析了CC2430 software example,CC2430的无线部分也逐步熟悉了。随后CC2430逐渐被CC2530取代,研究contiki的进度也非常缓慢,自然想过放弃。当时告诉自己,若contiki不成功就实现zigbee pro吧。又购入了一本图书《ZigBee无线传感网络设计与实现》,书中言简意赅的展示了zigbee pro的实现和使用,在学习的过程中又加深了RF芯片的理解。

【CC2530 RF部分使用 ——实现点对点收发】

5.学习一款嵌入式操作系统

contiki本质来说是一款操作系统,虽然是事件触发机制而不是freertos或ucos的抢占机制,但是殊途同归,contiki从某些层面来说和freertos和ucos相似。若能够熟练使用ucos的话,对学习contiki也大有帮助。总是,和前面3点一样,耐心打好基础才是王道,最后做到触类旁通。

【FreeRTOS STM32移植笔记】

【FreeRTOS学习笔记——任务间使用队列同步数据】

6.总结

contiki的使用经验特别是IPV6部分的内容会在以后的博文中和大家慢慢分享。在这里我特别感谢一下我的老婆,感谢她的鼓励,感谢她每天都坚持提醒我早点休息。

呵呵,不多说了,还是低头继续努力吧!

【学习contiki还顺带学习了linux的知识,这就是“树莓派”的故事了】

contiki学习心路历程相关推荐

  1. 鸽巢原理分析、实用技巧、部分定理证明以及组合数学学习心路历程

    鸽巢原理 天上有十个鸽子,这十个鸽子要飞到九个鸽巢里,无论怎样飞,我们会发现至少会有一   个鸽巢里面放两个鸽子,这一现象就是我们所说的"鸽巢原理".鸽巢定理由狄里克利于1834 ...

  2. Android-嵌入式蓝牙 多年蓝牙产品开发学习心路历程分享-A2DP音频流的建立、A2DP播放暂停音乐命令交互、HFP、AVRCP、RFCOMM、OPP、AVDTP

    序言 当你点进来看到这段话的时候,证明你真心想学好蓝牙,哈哈哈,本来想搜索蓝牙某个协议,却成了一大段废话文,但此时,别退出去,如果你是一个牛逼的蓝牙开发者,只是想了解蓝牙某个协议或者知识点,那么直接点 ...

  3. Python学习心路历程

    刚刚开始学Python也是零基础学这个,凭的完全是个人的兴趣,后面发现其实对学习有帮助的是视频,便疯狂看视频,然后看了慕课.黑马教育等视频,最后发现了一个比较好的视频资源: 基本上囊括了语言本身绝大多 ...

  4. android checkbox监听另一个checkbox选中和不选中_一个真正0基础小白学习前端开发的心路历程...

    摘要:真正的0基础小白学习前端开发的心路历程. 距离第一阶段的结束敲响了末尾的声音,抱着初心从开始8号的学习到第一阶段的结束这期间要应付期末考试应付自己的各种事情学习时间总是挤出来的这次学习让我受益匪 ...

  5. 一个真正0基础小白学习前端开发的心路历程

    摘要:真正的0基础小白学习前端开发的心路历程. 距离第一阶段的结束敲响了末尾的声音,抱着初心从开始8号的学习到第一阶段的结束这期间要应付期末考试应付自己的各种事情学习时间总是挤出来的这次学习让我受益匪 ...

  6. 人工智能AI工程师学习路线心路历程和总结分享

    背景: 刚开始接触人工智能AI的时候,感觉很新鲜.很新颖,是一个未来的方向.充满了无限的憧憬,给自己定了一个目标:学习人工智能.接下来的问题:怎么学习?开始想过报名培训班,经过咨询之后,费用是一大笔开 ...

  7. 一个老产品的心路历程

    一个产品经理的经历可以分为三个阶段:无知者无畏.初出茅庐.渐行渐远. 近日,心中一直颇不平静,像如今这样的日子,17年前也曾经历,只不过那时候我还是一个高一的学生,现在回想起来,只记得当初得到了一个漫 ...

  8. 【博客话题】我的linux心路历程

    2011年的某一天,程程同学在QQ上跟我说"linux 20周年了,有没有关于linux话题的好点子",回神一想,是啊,linux都20周年了,是应该搞一个有意义的话题了,我就建议 ...

  9. 心路历程(六)-一个人的后台

    回想一下,心路历程(五)是2016年2月份写的了,距离现在(2017/07/17)已经是一年多了.那是的是还是一个刚自学完的矛头小子,为找工作,房子,生存而烦恼的应届生.而在今年(2017)的3.24 ...

最新文章

  1. curl用法:获取网站的header头及状态码
  2. 想通关「限流」?只要这一篇
  3. monkeyrunner无法运行的问题解决方案总结
  4. 手把手教你用jQuery实现手动自动轮播
  5. 【ArcGIS微课1000例】0012:ArcGIS创建及连接ArcSDE企业级地理数据库实例
  6. macOS下的视频格式转换器
  7. 从「及格线」到优等生,威马只用一台W6
  8. jquery插件:图片截取工具jquery.imagecropper.js
  9. MongoDB高级查询详细
  10. Android学习笔记一:Android基本组件和Activity生命周期
  11. openwrt udp服务器_开启tftp服务器 tftp服务器的含义
  12. 迅雷11抢先体验版,免费2T空间可离线不限速取回
  13. go分析和kegg分析_一些GO及KEGG分析的知识
  14. 考研英语语法_Day05_状语和状语从句
  15. linux命令 - tail:查看文件最后几行的命令
  16. 小米路由硬盘版搭建ftp服务和博客
  17. 2022-4-7 基于单片机的篮球记分器(LCD1602)(公众号:风吹摇铃 奔赴星海)
  18. mybatis的几种锁
  19. Python二级--奖学金评选2
  20. php ean-13,用php生成EAN_13标准的条形码_php

热门文章

  1. 如何查找APP漏洞并渗透测试 解决网站被黑客攻击
  2. 通信原理包络是什么意思_科学奇问:光纤通信为什么那么快?光靠什么传递信息的?原理是啥...
  3. English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三
  4. 使用爬虫获取四川省各市的降雨量
  5. 在Centos7中配置NIS的详细过程
  6. 大三上学期实训——基于SpringBoot的电影后台管理系统
  7. ELF可执行文件的理解
  8. English 背单词
  9. HMS Core华为分析丨受众细分,多场景促进精益运营
  10. 视频监控存储所需容量大小计算