Contiki 介紹及參考資料

注:文章轉自他處,未找到原創做者,有不妥之處請原創做者聯繫筆者。git

本文介紹了 Contiki 是什麼、contiki 的特色、Contiki 事件驅動(Event-driven) 編程模型、contiki 包含的無線網絡協議棧 6Lowpan/RPL/Coap、仿真工具 Cooja/MSPsim、文件系統 Coffee File system(CFS)、shell 命令工具等,指出了 Contiki 的應用領域。最後給出了 Contiki 相關網站、教程和代碼等。github

Contiki操做系統介紹

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操做系統特色

  • 事件驅動(Event-driven)的多任務內核

    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 微處理 器進行指令級模擬和仿真。仿真工具對於科研、算法和協議驗證、工程實施規劃、 網絡優化等頗有幫助。瀏覽器

  • 集成 Shell 命令行調試工具

    無線傳感器網絡中節點數量多,節點的運行維護是一個難題,contiki 能夠通 過多種交互方式,如 Web 瀏覽器,基於文本的命令行接口,或者存儲和顯示傳 感器數據的專用程序等。基於文本的命令行接口是相似於 Unix 命令行的 Shell 工具,用戶經過串口輸入命令能夠查看和配置傳感器節點的信息、控制其運行狀 態,是部署、維護中實用而有效的工具。網絡

  • 基於Flash的小型文件系統:CoffeeFileSystem

    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

相關文章
相關標籤/搜索