Contiki学习笔记
chunhua.jiang
这个作者很懒,什么都没留下…
展开
-
Contiki协议栈:索引目录
协议栈概述Rime协议栈引入《Contiki协议栈Rime:引子introduction》基础部分《Contiki协议栈Rime:节点地址linkaddr》 《Contiki协议栈Rime:包属性packetbuf_attr》 《Contiki协议栈Rime:缓冲区管理packetbuf management》 《Contiki协议栈Rime:通道channel》 《》 《》 《》 《原创 2016-05-24 12:49:44 · 1378 阅读 · 0 评论 -
Contiki协议栈Rime:广播ibc
1 概述广播的英文全称是identified broad cast,简称ibc。广播也是向本节点覆盖范围内的其它节点发送消息,但与匿名广播abc消息不同的是,ibc中携带了本发送节点的节点地址。 相关代码位于contiki/core/net/rime/broadcast.[ch]。2 相关定义attributesstatic const struct packetbuf_attrlist attr原创 2016-05-27 23:22:47 · 1050 阅读 · 0 评论 -
Contiki协议栈Rime:实验ibc和abc相互通信
1 概述为了更好得理解前面博客的内容,我们通过cooja仿真器做一个简单的实现。有两个节点,其中一个节点烧写ibc程序,另一个节点烧写abc程序,然后启动两个节点,看他们的通信情况。2 代码实验用的代码在contiki/example/rime目录下的abc和ibc的基础之上进行很小的改动,使其能够通信。abc的代码#include "contiki.h"#include "net/rime/ri原创 2016-05-27 23:28:58 · 1375 阅读 · 0 评论 -
Contiki之MAC协议:MAC协议架构
1 概述通过前面的学习,我们已经知道,Rime协议栈中的子协议都直接或者间接地运行在匿名广播abc之上,当他妈需要发送消息的时候,最终会调用到abc_send,而abc_send会调用Rime协议栈的接口rime_output,然后经过链路安全层llsec,最终调用mac层协议,最终通过无线收发器将数据包发送出去。2 架构框图原创 2016-05-28 19:22:16 · 3589 阅读 · 1 评论 -
Contiki教程——链表list
1 相关宏1.1 LIST_CONCAT#define LIST_CONCAT2(s1, s2) s1##s2#define LIST_CONCAT(s1, s2) LIST_CONCAT2(s1, s2)LIST_CONCAT(s1, s2)作用非常简单,将s1,s2拼接在一起。其中,##起连接作用,编译器在预处理时负责将s1,s2连接在一起。比如hello_##world经过编译器预处理后就变原创 2016-05-20 16:17:40 · 1600 阅读 · 0 评论 -
Contiki之MAC协议:802.15.4帧frame
1 概述Rime协议栈传递下来的数据(包括由变色龙的头部转换模块生成的头部),都传入到FRAMER层。FRAMER层这这些数据的基础之上,按照IEEE 802.15.4协议规范,在数据的前面加上帧头,封装成一个完整的帧。 这部分的博客涉及到IEEE802.15.4协议的知识,必须先了解一下IEEE802.15.4协议,建议阅读这篇论文:《基于 Contiki/Cooja 平台的 IEEE 802.原创 2016-05-28 21:36:07 · 2935 阅读 · 2 评论 -
Contiki协议栈Rime:匿名广播abc
1 概述终于再次看到引子博客了,兴奋~ 匿名广播的英文是Anonymous Broad Cast,简称abc。匿名广播是Rime协议栈最基础的协议,它会向节点覆盖范围内的所有节点发送消息,并接收从其它节点发送过来的匿名广播消息。 相关代码位于contiki/core/net/rime/abc.[ch]。2 相关定义attributesstatic const struct packetbuf_a原创 2016-05-27 22:45:29 · 1544 阅读 · 0 评论 -
Contiki协议栈Rime:头部转换模块chameleon-bitopt
变色龙位操作(chameleon-bitopt)有被叫做头部转换模块,负责将从Rime协议栈传递下来的包属性组装成头部,且对头部进行优化,减小头部尺寸。原创 2016-05-26 22:06:21 · 1090 阅读 · 0 评论 -
Contiki协议栈Rime:原始变色龙chameleon-raw
1 概述在Contiki中,默认的变色龙模块是chameleon_bitopt,它能让不同层的协议头进行跨层位组合处理,减小总体头部尺寸。 我们也可以在contiki-conf.h中自定义变色龙头处理模块为chameleon_raw:#define CHAMELEON_CONF_MODULE chameleon_raw之所以将chamelon_raw叫做原始变色龙,因为它是chameleon_bi原创 2016-05-24 14:28:31 · 1890 阅读 · 0 评论 -
Contiki协议栈Rime:通道channel
1 概述 在变色龙架构中,不同的协议使、程序用不同的逻辑通道进行通信。每个通道都有自己的一些列协议和包属性。在下图中,应用程序1使用运行在Rime协议栈之上的组网路由协议,应用程序2直接使用Rime协议栈,这两个应用程序各自拥有自己的逻辑通道。 简而言之,如果不同节点的两个应用程序需要进行通信,它们必须具有相同的逻辑通道。2 相关定义struct channelstruct channe原创 2016-05-23 21:03:14 · 1393 阅读 · 0 评论 -
Contiki协议栈Rime:缓冲区管理packetbuf management
packetbuf management原创 2016-05-23 14:25:49 · 1894 阅读 · 1 评论 -
Contiki协议栈Rime:包属性packetbuf_attr
1 概述 关于Rime的缓冲区管理这一块,能在网上搜到很多博客,但是我想说的是,99%+都是过时的,坑爹啊!Contiki的开发非常活跃,所以对代码的改进很多,而Rime的缓冲区管理这也在今年二月份进行了优化,由之前难以理解的、晦涩的“双头栈”改为了现在通俗易懂的结构。双头栈有多晦涩,你将contiki的代码reset到今年二月份之前去看看就知道了。 不过不要马虎,虽然现在的缓冲管理变简单了原创 2016-05-23 13:59:11 · 1352 阅读 · 0 评论 -
Contiki协议栈Rime:引子introduction
思来想去,既然是程序员,当然还是用一个程序引入比较好。当然,这个程序必须满足以下几点:足够简单,不会把大家给吓着了能够引入足够多的知识点,可以串起来能够说明包如何在网络中传输然后我就找啊找,找到了Contiki的一个demo例程:examples/rime/example-abc.c匿名广播例程#include "contiki.h"#include "net/rime/rime.h"#原创 2016-05-22 11:20:51 · 4209 阅读 · 2 评论 -
Contiki协议栈Rime:变色龙接口chameleon
1 概述 变色龙模块的作用是将Rime协议栈传递下来的数据进行处理,生成包头。 相关源文件位于:contiki/core/net/rime/chameleon.[ch]。2 相关定义struct chameleon_modulestruct chameleon_module { struct channel *(* input)(void); int (* output)(struc原创 2016-05-24 13:45:20 · 1500 阅读 · 0 评论 -
Contiki协议栈Rime: 节点链接地址linkaddr
linkaddr模块是对Rime中地址的抽象表示,用来标识节点在无线传感器网络中的地址。 linkaddr相关源码位于contiki/core/net/linkaddr.[ch]1. 地址的定义 在Rime协议中,节点地址有两种定义:linkaddr_t、linkaddr_extended_t。之所以有两种地址定义,估计是为了兼容更多的MAC层协议,比如在IEEE 802.15.4协议中,就原创 2016-05-23 12:51:03 · 1942 阅读 · 0 评论 -
Contiki协议栈学习计划
写在前面 由于希望在下次招聘中进入Cisco,所以比较关注Cisco的招聘工作。第一次看到Contiki这个名词是在Cisco的物联岗位网招聘中,里面有一条加分项是这样说的: Familiarity with Contiki or Tiny OS programming is a PLUS. 然后就在网上疯狂搜索这条招聘中的相关专业术语,最后打算以Contiki作为切入点。Contiki作原创 2016-05-22 09:07:48 · 3292 阅读 · 0 评论