注:文章轉自他處,未找到原創做者,有不妥之處請原創做者聯繫筆者。git
本文介紹了 Contiki 是什麼、contiki 的特色、Contiki 事件驅動(Event-driven) 編程模型、contiki 包含的無線網絡協議棧 6Lowpan/RPL/Coap、仿真工具 Cooja/MSPsim、文件系統 Coffee File system(CFS)、shell 命令工具等,指出了 Contiki 的應用領域。最後給出了 Contiki 相關網站、教程和代碼等。github
Contiki 是一個開源的、高度可移植的多任務操做系統,適用於聯網嵌入式 系統和無線傳感器網絡,由瑞典計算機科學學院(Swedish Institute of Computer Science)的 Adam Dunkels 和他的團隊開發。Contiki 徹底採用 C 語言開發,可移 植性很是好,對硬件的要求極低,可以運行在各類類型的微處理器及電腦上,目 前已經移植到 8051 單片機、MSP430、AVR、ARM、PC 機等硬件平臺上。Contiki 適用於存儲器資源十分受限的嵌入式單片機系統,典型的配置下 Contiki 只佔用 約 2Kbytes 的 RAM 以及 40Kbytes 的 Flash 存儲器。Contiki 是開源的操做系統, 適用於 BSD 協議,便可以任意修改和發佈,無需任何版權費用,所以已經應用 在許多項目中。web
Contiki 操做系統是基於事件驅動(Event-driven)內核的操做系統,在此內 核上,應用程序能夠在運行時動態加載,很是靈活。在事件驅動內核基礎上, Contiki 實現了一種輕量級的名爲 protothread 的線程模型,來實現線性的、相似 於線程的編程風格。該模型相似於 Linux 和 windows 中線程的概念,多個線程共 享同一個任務棧,從而減小 RAM 佔用。Contiki 還提供一種可選的任務搶佔機制、 基於事件和消息傳遞的進程間通訊機制。Contiki 中還包括一個可選的 GUI 子系統,能夠提供對本地串口終端、基於 VNC 的網絡化虛擬顯示或者 Telnet 的圖形 化支持。算法
Contiki 系統內部集成了兩種類型的無線傳感器網絡協議棧:uIP 和 Rime。 uIP 是一個小型的符合 RFC 規範的 TCP/IP 協議棧,使得 contiki 能夠直接和 Internet 通訊。uIP 包含了 IPv4 和 IPv6 兩種協議棧版本,支持 TCP、UDP、ICMP 等協議,可是編譯時只能二選一,不能夠同時使用。Rime 是一個輕量級爲低功 耗無線傳感器網絡設計的協議棧,該協議棧提供了大量的通訊原語,可以實現從 簡單的一跳廣播通訊,到複雜的可靠多跳數據傳輸等通訊功能。shell
Contiki 基於事件驅動模型,即多個任務共享同一個棧(stack),而不是每一個 任務分別佔用獨立的棧(如 uCOS、FreeRTOS、Linux 等)。Contiki 每一個任務只 佔用幾個字節的 RAM,能夠大大節省 RAM 空間,更適合節點資源十分受限的 無線傳感器網絡應用。編程
Contiki 提供完整的 IP 網絡和低功耗無線網絡協議棧。對於 IP 協議棧,支 持 IPv4 和 IPv6 兩個版本,IPv6 還包括 6Lowpan 幀頭壓縮適配器,ROLL RPL 無線網絡組網路由協議、CoRE/CoAP 應用層協議,還包括一些簡化的 Web 工具, 包括 Telnet、http 和 web 服務等。Contiki 還實現了無線傳感器網絡領域知名的 MAC 和路由層協議,其中 MAC 層包括 X-MAC、CX-MAC、ContikiMAC、 CSMA-CA、LPP 等,路由層包括 AODV、RPL 等。windows
Contiki 提供了 Cooja 無線傳感器網絡仿真工具,可以多對協議在電腦上進行仿真,仿真經過後才下載到節點上進行實際測試,有利於發現問題,減小調試工做量。除此以外,Contiki 還提供 MSPsim 仿真工具,可以對 MSP430 微處理 器進行指令級模擬和仿真。仿真工具對於科研、算法和協議驗證、工程實施規劃、 網絡優化等頗有幫助。瀏覽器
無線傳感器網絡中節點數量多,節點的運行維護是一個難題,contiki 能夠通 過多種交互方式,如 Web 瀏覽器,基於文本的命令行接口,或者存儲和顯示傳 感器數據的專用程序等。基於文本的命令行接口是相似於 Unix 命令行的 Shell 工具,用戶經過串口輸入命令能夠查看和配置傳感器節點的信息、控制其運行狀 態,是部署、維護中實用而有效的工具。網絡
Contiki 實現了一個簡單、小巧、易於使用的文件系統,稱爲 Coffee File System (CFS),它是基於 Flash 的文件系統,用於在資源受限的的節點上存儲數據和程 序。CFS 是充分傳感器網絡數據採集、數據傳輸需求以及硬件資源受限的特色而 設計的,所以在耗損平衡、壞塊管理、掉電保護方面、垃圾回收、映射機制方等 方面進行優化,具備使用的存儲空間少、支持大規模存儲的特色。CFS 的編程方 法與經常使用的 C 語言編程相似,提供 open、read、write、close 等函數,易於使用。函數
爲了延長傳感器網絡的生命週期,控制和減小傳感器節點的功耗相當總重 要,無線傳感器網絡領域提出的許多網絡協議都圍繞下降功耗而展開。爲了評估 網絡協議以及算法能耗性能,須要測量出每一個節點的能量消耗,因爲節點數量多, 使用儀器測試幾乎不可行。Contiki 提供了一種基於軟件的能量分析工具,自動 記錄每一個傳感器節點的工做狀態、時間,並計算出能量消耗,在不須要額外的硬 件或儀器的狀況下就能完成網絡級別的能量分析。Contiki 的能量分析機制既可 用於評價傳感器網絡協議,也可用於估算傳感器網絡的生命週期。
Contiki 採用 BSD 受權協議,用戶能夠下載代碼,用戶科研和商業,且能夠任意修改代碼,無需任何專利以及版權費用,是完全的開源軟件。儘管是開源軟 件,可是 contiki 開發十分活躍,在持續不斷更新和改進之中。Contiki 的做者 Adam 是一個編程的天才,它發明了 LwIP、uIP、Protothred、contiki 等軟件,都在工 業界獲得普遍應用,你們熟知的 LwIP 就是一個例子。Adam 仍是 IPSO 組織的發 起人之一,將來將會不斷推動 6Lowpan 的標準化及應用。
Contiki 徹底 C 語言開發、易於移植、支持大量的硬件平臺和開發工具、事 件驅動機制佔用內存小、集成了多種無線傳感器網絡協議、無專利和版權費、集 成仿真工具等特色和優點,已經成爲無線傳感器網絡學術研究和產品開發的理想 平臺,在歐洲已經獲得普遍應用,並逐漸獲得其它地區開發人員的支持。隨着物 聯網、無線傳感器網絡的發展,IP 地址將耗盡,骨幹網絡必將升級到 IPv6,因 此 6Lowpan 標準被愈來愈多的標準化組織所採納,研發 6lowpan 的人員將越來 越多,這將使得 contiki 極可能成爲嵌入系統中的 Linux,在物聯網領域獲得普遍 應用,發揮重要做用。
Contiki 官方網站
Contiki Wiki
Instant Contiki 開發環境
物聯網開發論壇
Contiki 源代碼文檔
Contiki 代碼下載
或者使用Git 工具下載 contiki 代碼:git clone git://contiki.git.sourceforge.net/gitroot/contiki/contiki