Contiki学习笔记(一)

笔者初步学习Contiki,本文暂只堆砌学习过程中做的笔记,一段时间后有所积累再做整理,方便大家参考阅读。

线程

所有线程以宏定义 PROCESS_BEGIN()开始,以 PROCESS_END()结束,两 者之间为线程执行的代码。注意线程里面绝对不允许使用 C 语言的 switch 语句,将导致程序语法错误,无法编译代码。这是因为 Contiki 的 protothread 本身就是用 switch 语句实现的。

Contiki 是非抢占式操作系统,线程只有主动放弃 CPU 时,才会执行其它线 程,因此,线程的执行时间不可过长,导致其它线程很长时间无法响应。

Contiki 系统中多个线程共享同一个 stack 空间,这与 uCOS、Linux 等不同, 这些系统中每个线程具有独立的 stack。Contiki 线程切换时,线程中的所有 局部变量不保存,数据将被丢弃,因此,线程中需要长期保存的数据必须使 用 static 修饰符进行定义。这些变量将被存放在全局的 data 段,在整 个程序运行过程中数据都被不会被覆盖。当然,这些变量会增大 RAM 的占 用量。

PROCESS_YIELD():这是 contiki 中定义的与线程调度相关的宏,执行该语 句,contiki 进行一次线程调度,挂起当前的线程。tt

线程通信

PROCESS_ THREAD(process_name, ev, data)宏定义中,3 个参数中 ev 表示事 件,datavoid *类型,对应于传递的数据,当线程 A 发送事件和数据给线 程 B 后,B 被调度执行时,B 能够通过访问它的 evdata 变量,分别来获 取 A 传递的事件和数据。

注:void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

系统事件

Contiki 中定义的所有系统事件,请参考 sys/process.h

定时机制

Contiki 提供多种定时机制,包括 clock_delay_usec、rtimer、etimer、ctimer、 stimer 等,相应的时间精度和应用场合不同,常用的是 etimer,在实时性要 求高的场合用 rtimer。

etimer 以系统时钟的 tick 为基准,时间长度为(1/128)秒,rtimer 以相应的计时器最小时钟为基准,时间长度为(1/15625)秒,约 64 微妙。

rtimer 用于短时间精确定时,etimer 用于普通定时,产生一个事件,ctimer 具有 etimer 的功能,同时在超时时自动执行预先设置好的回调函数,stimer用于时钟计时。

若干宏定义:CLOCK_SECOND 是一秒钟对应的 etimer 的 tick 数量,值为
128,RTIMER_SECOND 是一秒钟对应的 rtimer 的 tick 数量,值为 15625, RTIMER_NOW()获取当前的 rtimer 的 tick 计数值,clock_time()获得当前的 etimer 的 tick 计数值,clock_seconds()获得当前的秒钟数。

传感器

Contiki 对传感器进行抽象,使用 struct sensors_sensor 结构体进行描述

Contiki 的传感器抽象包含两个部分: 公共部分(sensors.c)以及具体传感
器的代码部分

RPL

RPL是contiki中的组网和路由协议,能够自动建立邻居表,并更新路由表, 从而实现多跳转发

开启RPL协议只需要把一个节点作为root节点发起建立DODAG,其余的节 点会自动加入到网络中,用户无需关心组网的细节。

RPL 是 6lowpan 默认的路由协议,是面向 LLN(Low Losyy Network)网络 的专门制定的组网协议。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • 名称 libev - 一个 C 编写的功能全面的高性能事件循环。 概要 示例程序 关于 libev Libev 是...
    hanpfei阅读 14,815评论 0 5
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,544评论 25 707
  • 过去的三十年随着经济的日益增长人民被蒙住眼睛向外追求意义一群有胆识敢冒险的人取得了成功可怕的是中国古话有云富而不贵...
    承谦阅读 186评论 0 1
  • 柳哲 我研究柳氏文化20年,收藏的柳氏家谱就有100余种。其中有一套韩国《文化柳氏世谱》,资料特别丰富,史料价值极...
    柳志儒阅读 1,223评论 1 1