Contiki學(xué)習(xí)筆記(一)

筆者初步學(xué)習(xí)Contiki,本文暫只堆砌學(xué)習(xí)過程中做的筆記,一段時(shí)間后有所積累再做整理虹茶,方便大家參考閱讀困后。

線程

所有線程以宏定義 PROCESS_BEGIN()開始,以 PROCESS_END()結(jié)束,兩 者之間為線程執(zhí)行的代碼搅裙。注意線程里面絕對(duì)不允許使用 C 語言的 switch 語句,將導(dǎo)致程序語法錯(cuò)誤,無法編譯代碼。這是因?yàn)?Contiki 的 protothread 本身就是用 switch 語句實(shí)現(xiàn)的。

Contiki 是非搶占式操作系統(tǒng),線程只有主動(dòng)放棄 CPU 時(shí),才會(huì)執(zhí)行其它線 程,因此,線程的執(zhí)行時(shí)間不可過長(zhǎng),導(dǎo)致其它線程很長(zhǎng)時(shí)間無法響應(yīng)。

Contiki 系統(tǒng)中多個(gè)線程共享同一個(gè) stack 空間,這與 uCOS倦春、Linux 等不同, 這些系統(tǒng)中每個(gè)線程具有獨(dú)立的 stack。Contiki 線程切換時(shí),線程中的所有 局部變量不保存,數(shù)據(jù)將被丟棄,因此,線程中需要長(zhǎng)期保存的數(shù)據(jù)必須使 用 static 修飾符進(jìn)行定義。這些變量將被存放在全局的 data 段,在整 個(gè)程序運(yùn)行過程中數(shù)據(jù)都被不會(huì)被覆蓋睁本。當(dāng)然,這些變量會(huì)增大 RAM 的占 用量尿庐。

PROCESS_YIELD():這是 contiki 中定義的與線程調(diào)度相關(guān)的宏,執(zhí)行該語 句,contiki 進(jìn)行一次線程調(diào)度,掛起當(dāng)前的線程。tt

線程通信

PROCESS_ THREAD(process_name, ev, data)宏定義中,3 個(gè)參數(shù)中 ev 表示事 件,datavoid *類型,對(duì)應(yīng)于傳遞的數(shù)據(jù),當(dāng)線程 A 發(fā)送事件和數(shù)據(jù)給線 程 B 后,B 被調(diào)度執(zhí)行時(shí),B 能夠通過訪問它的 evdata 變量,分別來獲 取 A 傳遞的事件和數(shù)據(jù)呢堰。

注:void的字面意思是“無類型”抄瑟,void *則為“無類型指針”,void *可以指向任何類型的數(shù)據(jù)暮胧。

系統(tǒng)事件

Contiki 中定義的所有系統(tǒng)事件,請(qǐng)參考 sys/process.h

定時(shí)機(jī)制

Contiki 提供多種定時(shí)機(jī)制,包括 clock_delay_usec锐借、rtimer问麸、etimer往衷、ctimer、 stimer 等,相應(yīng)的時(shí)間精度和應(yīng)用場(chǎng)合不同,常用的是 etimer,在實(shí)時(shí)性要 求高的場(chǎng)合用 rtimer严卖。

etimer 以系統(tǒng)時(shí)鐘的 tick 為基準(zhǔn),時(shí)間長(zhǎng)度為(1/128)秒,rtimer 以相應(yīng)的計(jì)時(shí)器最小時(shí)鐘為基準(zhǔn),時(shí)間長(zhǎng)度為(1/15625)秒,約 64 微妙席舍。

rtimer 用于短時(shí)間精確定時(shí),etimer 用于普通定時(shí),產(chǎn)生一個(gè)事件,ctimer 具有 etimer 的功能,同時(shí)在超時(shí)時(shí)自動(dòng)執(zhí)行預(yù)先設(shè)置好的回調(diào)函數(shù),stimer用于時(shí)鐘計(jì)時(shí)。

若干宏定義:CLOCK_SECOND 是一秒鐘對(duì)應(yīng)的 etimer 的 tick 數(shù)量,值為
128,RTIMER_SECOND 是一秒鐘對(duì)應(yīng)的 rtimer 的 tick 數(shù)量,值為 15625, RTIMER_NOW()獲取當(dāng)前的 rtimer 的 tick 計(jì)數(shù)值,clock_time()獲得當(dāng)前的 etimer 的 tick 計(jì)數(shù)值,clock_seconds()獲得當(dāng)前的秒鐘數(shù)哮笆。

傳感器

Contiki 對(duì)傳感器進(jìn)行抽象,使用 struct sensors_sensor 結(jié)構(gòu)體進(jìn)行描述

Contiki 的傳感器抽象包含兩個(gè)部分: 公共部分(sensors.c)以及具體傳感
器的代碼部分

RPL

RPL是contiki中的組網(wǎng)和路由協(xié)議,能夠自動(dòng)建立鄰居表,并更新路由表, 從而實(shí)現(xiàn)多跳轉(zhuǎn)發(fā)

開啟RPL協(xié)議只需要把一個(gè)節(jié)點(diǎn)作為root節(jié)點(diǎn)發(fā)起建立DODAG,其余的節(jié) 點(diǎn)會(huì)自動(dòng)加入到網(wǎng)絡(luò)中,用戶無需關(guān)心組網(wǎng)的細(xì)節(jié)来颤。

RPL 是 6lowpan 默認(rèn)的路由協(xié)議,是面向 LLN(Low Losyy Network)網(wǎng)絡(luò) 的專門制定的組網(wǎng)協(xié)議。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稠肘,一起剝皮案震驚了整個(gè)濱河市福铅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌项阴,老刑警劉巖滑黔,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異环揽,居然都是意外死亡略荡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門歉胶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汛兜,“玉大人,你說我怎么就攤上這事通今≈嗝” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵辫塌,是天一觀的道長(zhǎng)漏策。 經(jīng)常有香客問我,道長(zhǎng)璃氢,這世上最難降的妖魔是什么哟玷? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上巢寡,老公的妹妹穿的比我還像新娘喉脖。我一直安慰自己,他們只是感情好抑月,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布树叽。 她就那樣靜靜地躺著,像睡著了一般谦絮。 火紅的嫁衣襯著肌膚如雪题诵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天层皱,我揣著相機(jī)與錄音性锭,去河邊找鬼。 笑死叫胖,一個(gè)胖子當(dāng)著我的面吹牛草冈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓮增,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼怎棱,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了绷跑?” 一聲冷哼從身側(cè)響起拳恋,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砸捏,沒想到半個(gè)月后谬运,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡带膜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年吩谦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膝藕。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡式廷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芭挽,到底是詐尸還是另有隱情滑废,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布袜爪,位于F島的核電站蠕趁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辛馆。R本人自食惡果不足惜俺陋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一豁延、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腊状,春花似錦诱咏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至映屋,卻和暖如春苟鸯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棚点。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工早处, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乙濒。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓陕赃,卻偏偏與公主長(zhǎng)得像卵蛉,于是被迫代替她去往敵國和親颁股。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 名稱 libev - 一個(gè) C 編寫的功能全面的高性能事件循環(huán)傻丝。 概要 示例程序 關(guān)于 libev Libev 是...
    hanpfei閱讀 15,280評(píng)論 0 5
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評(píng)論 25 707
  • 過去的三十年隨著經(jīng)濟(jì)的日益增長(zhǎng)人民被蒙住眼睛向外追求意義一群有膽識(shí)敢冒險(xiǎn)的人取得了成功可怕的是中國古話有云富而不貴...
    承謙閱讀 208評(píng)論 0 1
  • 柳哲 我研究柳氏文化20年甘有,收藏的柳氏家譜就有100余種。其中有一套韓國《文化柳氏世譜》葡缰,資料特別豐富亏掀,史料價(jià)值極...
    柳志儒閱讀 1,280評(píng)論 1 1