注:文章轉(zhuǎn)自他處,未找到原創(chuàng)作者,有不妥之處請(qǐng)?jiān)瓌?chuàng)作者聯(lián)系筆者。
本文介紹了 Contiki 是什么献联、contiki 的特點(diǎn)、Contiki 事件驅(qū)動(dòng)(Event-driven) 編程模型厕吉、contiki 包含的無線網(wǎng)絡(luò)協(xié)議棧 6Lowpan/RPL/Coap酱固、仿真工具 Cooja/MSPsim、文件系統(tǒng) Coffee File system(CFS)头朱、shell 命令工具等,指出了 Contiki 的應(yīng)用領(lǐng)域运悲。最后給出了 Contiki 相關(guān)網(wǎng)站、教程和代碼等项钮。
Contiki操作系統(tǒng)介紹
Contiki 是一個(gè)開源的班眯、高度可移植的多任務(wù)操作系統(tǒng),適用于聯(lián)網(wǎng)嵌入式 系統(tǒng)和無線傳感器網(wǎng)絡(luò),由瑞典計(jì)算機(jī)科學(xué)學(xué)院(Swedish Institute of Computer Science)的 Adam Dunkels 和他的團(tuán)隊(duì)開發(fā)。Contiki 完全采用 C 語言開發(fā),可移 植性非常好,對(duì)硬件的要求極低,能夠運(yùn)行在各種類型的微處理器及電腦上,目 前已經(jīng)移植到 8051 單片機(jī)烁巫、MSP430署隘、AVR、ARM亚隙、PC 機(jī)等硬件平臺(tái)上磁餐。Contiki 適用于存儲(chǔ)器資源十分受限的嵌入式單片機(jī)系統(tǒng),典型的配置下 Contiki 只占用 約 2Kbytes 的 RAM 以及 40Kbytes 的 Flash 存儲(chǔ)器。Contiki 是開源的操作系統(tǒng), 適用于 BSD 協(xié)議,即可以任意修改和發(fā)布,無需任何版權(quán)費(fèi)用,因此已經(jīng)應(yīng)用 在許多項(xiàng)目中阿弃。
Contiki 操作系統(tǒng)是基于事件驅(qū)動(dòng)(Event-driven)內(nèi)核的操作系統(tǒng),在此內(nèi) 核上,應(yīng)用程序可以在運(yùn)行時(shí)動(dòng)態(tài)加載,非常靈活诊霹。在事件驅(qū)動(dòng)內(nèi)核基礎(chǔ)上, Contiki 實(shí)現(xiàn)了一種輕量級(jí)的名為 protothread 的線程模型,來實(shí)現(xiàn)線性的、類似 于線程的編程風(fēng)格渣淳。該模型類似于 Linux 和 windows 中線程的概念,多個(gè)線程共 享同一個(gè)任務(wù)棧,從而減少 RAM 占用脾还。Contiki 還提供一種可選的任務(wù)搶占機(jī)制、 基于事件和消息傳遞的進(jìn)程間通信機(jī)制入愧。Contiki 中還包括一個(gè)可選的 GUI 子系統(tǒng),可以提供對(duì)本地串口終端鄙漏、基于 VNC 的網(wǎng)絡(luò)化虛擬顯示或者 Telnet 的圖形 化支持嗤谚。
Contiki 系統(tǒng)內(nèi)部集成了兩種類型的無線傳感器網(wǎng)絡(luò)協(xié)議棧:uIP 和 Rime。 uIP 是一個(gè)小型的符合 RFC 規(guī)范的 TCP/IP 協(xié)議棧,使得 contiki 可以直接和 Internet 通信怔蚌。uIP 包含了 IPv4 和 IPv6 兩種協(xié)議棧版本,支持 TCP巩步、UDP、ICMP 等協(xié)議,但是編譯時(shí)只能二選一,不可以同時(shí)使用媚创。Rime 是一個(gè)輕量級(jí)為低功 耗無線傳感器網(wǎng)絡(luò)設(shè)計(jì)的協(xié)議棧,該協(xié)議棧提供了大量的通信原語,能夠?qū)崿F(xiàn)從 簡(jiǎn)單的一跳廣播通信,到復(fù)雜的可靠多跳數(shù)據(jù)傳輸?shù)韧ㄐ殴δ堋?/p>
Contiki操作系統(tǒng)特點(diǎn)
-
事件驅(qū)動(dòng)(Event-driven)的多任務(wù)內(nèi)核
Contiki 基于事件驅(qū)動(dòng)模型,即多個(gè)任務(wù)共享同一個(gè)棧(stack),而不是每個(gè) 任務(wù)分別占用獨(dú)立的棧(如 uCOS渗钉、FreeRTOS彤恶、Linux 等)钞钙。Contiki 每個(gè)任務(wù)只 占用幾個(gè)字節(jié)的 RAM,可以大大節(jié)省 RAM 空間,更適合節(jié)點(diǎn)資源十分受限的 無線傳感器網(wǎng)絡(luò)應(yīng)用。
-
低功耗無線傳感器網(wǎng)絡(luò)協(xié)議棧
Contiki 提供完整的 IP 網(wǎng)絡(luò)和低功耗無線網(wǎng)絡(luò)協(xié)議棧声离。對(duì)于 IP 協(xié)議棧,支 持 IPv4 和 IPv6 兩個(gè)版本,IPv6 還包括 6Lowpan 幀頭壓縮適配器,ROLL RPL 無線網(wǎng)絡(luò)組網(wǎng)路由協(xié)議芒炼、CoRE/CoAP 應(yīng)用層協(xié)議,還包括一些簡(jiǎn)化的 Web 工具, 包括 Telnet、http 和 web 服務(wù)等术徊。Contiki 還實(shí)現(xiàn)了無線傳感器網(wǎng)絡(luò)領(lǐng)域知名的 MAC 和路由層協(xié)議,其中 MAC 層包括 X-MAC本刽、CX-MAC、ContikiMAC赠涮、 CSMA-CA子寓、LPP 等,路由層包括 AODV、RPL 等笋除。
-
集成無線傳感器網(wǎng)絡(luò)仿真工具
Contiki 提供了 Cooja 無線傳感器網(wǎng)絡(luò)仿真工具,能夠多對(duì)協(xié)議在電腦上進(jìn)行仿真,仿真通過后才下載到節(jié)點(diǎn)上進(jìn)行實(shí)際測(cè)試,有利于發(fā)現(xiàn)問題,減少調(diào)試工作量斜友。除此之外,Contiki 還提供 MSPsim 仿真工具,能夠?qū)?MSP430 微處理 器進(jìn)行指令級(jí)模擬和仿真。仿真工具對(duì)于科研垃它、算法和協(xié)議驗(yàn)證鲜屏、工程實(shí)施規(guī)劃、 網(wǎng)絡(luò)優(yōu)化等很有幫助国拇。
-
集成 Shell 命令行調(diào)試工具
無線傳感器網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量多,節(jié)點(diǎn)的運(yùn)行維護(hù)是一個(gè)難題,contiki 可以通 過多種交互方式,如 Web 瀏覽器,基于文本的命令行接口,或者存儲(chǔ)和顯示傳 感器數(shù)據(jù)的專用程序等洛史。基于文本的命令行接口是類似于 Unix 命令行的 Shell 工具,用戶通過串口輸入命令可以查看和配置傳感器節(jié)點(diǎn)的信息酱吝、控制其運(yùn)行狀 態(tài),是部署也殖、維護(hù)中實(shí)用而有效的工具。
-
基于Flash的小型文件系統(tǒng):CoffeeFileSystem
Contiki 實(shí)現(xiàn)了一個(gè)簡(jiǎn)單务热、小巧忆嗜、易于使用的文件系統(tǒng),稱為 Coffee File System (CFS),它是基于 Flash 的文件系統(tǒng),用于在資源受限的的節(jié)點(diǎn)上存儲(chǔ)數(shù)據(jù)和程 序。CFS 是充分傳感器網(wǎng)絡(luò)數(shù)據(jù)采集陕习、數(shù)據(jù)傳輸需求以及硬件資源受限的特點(diǎn)而 設(shè)計(jì)的,因此在耗損平衡霎褐、壞塊管理、掉電保護(hù)方面该镣、垃圾回收冻璃、映射機(jī)制方等 方面進(jìn)行優(yōu)化,具有使用的存儲(chǔ)空間少、支持大規(guī)模存儲(chǔ)的特點(diǎn)。CFS 的編程方 法與常用的 C 語言編程類似,提供 open省艳、read娘纷、write、close 等函數(shù),易于使用跋炕。
-
集成功耗分析工具
為了延長(zhǎng)傳感器網(wǎng)絡(luò)的生命周期,控制和減少傳感器節(jié)點(diǎn)的功耗至關(guān)總重 要,無線傳感器網(wǎng)絡(luò)領(lǐng)域提出的許多網(wǎng)絡(luò)協(xié)議都圍繞降低功耗而展開赖晶。為了評(píng)估 網(wǎng)絡(luò)協(xié)議以及算法能耗性能,需要測(cè)量出每個(gè)節(jié)點(diǎn)的能量消耗,由于節(jié)點(diǎn)數(shù)量多, 使用儀器測(cè)試幾乎不可行。Contiki 提供了一種基于軟件的能量分析工具,自動(dòng) 記錄每個(gè)傳感器節(jié)點(diǎn)的工作狀態(tài)辐烂、時(shí)間,并計(jì)算出能量消耗,在不需要額外的硬 件或儀器的情況下就能完成網(wǎng)絡(luò)級(jí)別的能量分析遏插。Contiki 的能量分析機(jī)制既可 用于評(píng)價(jià)傳感器網(wǎng)絡(luò)協(xié)議,也可用于估算傳感器網(wǎng)絡(luò)的生命周期。
-
開源免費(fèi)
Contiki 采用 BSD 授權(quán)協(xié)議,用戶可以下載代碼,用戶科研和商業(yè),且可以任意修改代碼,無需任何專利以及版權(quán)費(fèi)用,是徹底的開源軟件纠修。盡管是開源軟 件,但是 contiki 開發(fā)十分活躍,在持續(xù)不斷更新和改進(jìn)之中胳嘲。Contiki 的作者 Adam 是一個(gè)編程的天才,它發(fā)明了 LwIP、uIP扣草、Protothred了牛、contiki 等軟件,都在工 業(yè)界得到廣泛應(yīng)用,大家熟知的 LwIP 就是一個(gè)例子。Adam 還是 IPSO 組織的發(fā) 起人之一,未來將會(huì)不斷推進(jìn) 6Lowpan 的標(biāo)準(zhǔn)化及應(yīng)用辰妙。
總結(jié)
Contiki 完全 C 語言開發(fā)鹰祸、易于移植、支持大量的硬件平臺(tái)和開發(fā)工具密浑、事 件驅(qū)動(dòng)機(jī)制占用內(nèi)存小蛙婴、集成了多種無線傳感器網(wǎng)絡(luò)協(xié)議、無專利和版權(quán)費(fèi)肴掷、集 成仿真工具等特點(diǎn)和優(yōu)勢(shì),已經(jīng)成為無線傳感器網(wǎng)絡(luò)學(xué)術(shù)研究和產(chǎn)品開發(fā)的理想 平臺(tái),在歐洲已經(jīng)得到廣泛應(yīng)用,并逐漸得到其它地區(qū)開發(fā)人員的支持敬锐。隨著物 聯(lián)網(wǎng)、無線傳感器網(wǎng)絡(luò)的發(fā)展,IP 地址將耗盡,骨干網(wǎng)絡(luò)必將升級(jí)到 IPv6,因 此 6Lowpan 標(biāo)準(zhǔn)被越來越多的標(biāo)準(zhǔn)化組織所采納,研發(fā) 6lowpan 的人員將越來 越多,這將使得 contiki 很可能成為嵌入系統(tǒng)中的 Linux,在物聯(lián)網(wǎng)領(lǐng)域得到廣泛 應(yīng)用,發(fā)揮重要作用呆瞻。
參考資料
Contiki 官方網(wǎng)站
Contiki Wiki
Instant Contiki 開發(fā)環(huán)境
物聯(lián)網(wǎng)開發(fā)論壇
Contiki 源代碼文檔
Contiki 代碼下載
或者使用Git 工具下載 contiki 代碼:
git clone git://contiki.git.sourceforge.net/gitroot/contiki/contiki