簡介
Contiki 是一個小型的,開源的,極易移植的多任務作業系統。它專門設計以適用於一系列的記憶體受限的網路系統,包括8位微處理器的嵌入系統。它的名字來自於托爾·海爾達爾的康提基號。
Contiki只需幾kilobyte的代碼和幾百位元組的記憶體就能提供多任務環境和內建TCP/IP支持。
特點
Contiki可以在每個進程內選擇是否支持先占式多執行緒,進程間通訊通過事件利用訊息來實現。Contiki中還包括一個可選的GUI子系統,可以提供對本地終端、基於VNC的網路化虛擬顯示或者Telnet的圖形化支持。
完整的Contiki系統包括以下特性:
•多任務核心
•每個應用程式中可選的先占式多執行緒
•Protothreads模型
•TCP/IP網路支持,包括IPv6
•視窗系統與GUI
•基於VNC的網路化遠程顯示
•網頁瀏覽器
•個人網路伺服器
•簡單的Telnet客戶端
•螢幕保護程式
設計
Contiki適用於只有極少量記憶體的嵌入式系統。在一個較為典型的配置中,Contiki系統只需2Kb的RAM與40Kb的ROM。 Contiki包括了一個事件驅動的核心,因此可以在運行時動態載入上層應用程式 。Contiki中使用輕量級的protothreads進程模型,可以在事件驅動核心上提供一種線性的、類似於執行緒的編程風格。
平台比較
Contiki可運行於各種平台上,包括嵌入式微控制器(例如TI MSP430及Atmel AVR)以及舊的家用電腦。程式代碼量只有幾K,存儲器的使用量也只有幾十Kb。
Contiki是一個專門針對物聯網或者無線感測器網路套用的作業系統和協定棧 ,在科研以及產業化方面得到廣泛的套用。在該領域,還有一個知名的類似的系統- TinyOS,兩者都實現了網路協定,兩者的比較如下:
性能指標 | TinyOS | Contiki |
所屬領域 | 無線感測器網路、物聯網 | 無線感測器網路、物聯網 |
軟體類型 | 小型OS +無線網路協定棧 | 小型OS +無線網路協定棧 |
OS 特性 | 非搶占、共享棧空間 | 非搶占、共享棧空間 |
協定支持 | 802.15.4、6Lowpan、RPL、CoAP | 802.15.4、6Lowpan、RPL、CoAP |
開發語言 | 專用NesC語言,入門較難,其它領域幾乎不使用(有可能導致失業) | 通用的C語言,入門容易,在各領域廣泛使用 |
編譯器 | 專用的編譯器,性能和穩定性未經過驗證,無商用編譯器支持 | 通用的C編譯器,如GCC、IAR等 |
開發環境 | Linux、Cygwin,命令行模式,開發調試困難,門檻高 | Linux Eclipse、或者Windows IAR,IAR圖形化集成開發環境,功能強大 |
可移植性 | 需要移植編譯器,很難 | C語言很好移植 |
支持的硬體 | 少數幾種類型的處理器 | 8位、16位、32位幾乎所有的處理器類型 |
開發團隊 | 主要由Berkeley大學開發,核心人員已經去CISCO,不再開發,TinyOS很少更新代碼 | 由LWIP的作者Adam dunkels團隊以及ETH大學開發,已經成立公司全職開發,每周都有代碼更新 |
發展趨勢 | TinyOS從一開始就主要做科研仿真,用戶逐年驟減,基本上無產品 | Contiki可以做科研,也有不少產品,2014年Adam團隊的目標是要將Contiki作成物聯網領域的首要選擇 |
移植版本
Contiki作業系統已被移植到以下系統中:
•電腦:
•Apple II family
•Atari 8-bit
•雅達利ST
•Atari Portfolio
•Casio Pocketview
•Commodore PET
•Commodore VIC-20
•Commodore 64
•Commodore 128
•Oric
•PC-6001
•Sharp Wizard
•遊戲機平台:
•PC Engine
•FC遊戲機
•雅達利Jaguar
•手持遊戲機平台:
•Game Boy
•Game Boy Advance
•GP32
•微型控制器:
•Atmel AVR
•LPC2103
•TI MSP430
•TI CC2430
參見
•自由軟體主題
•BeRTOS
•ERIKA Enterprise
•RIOT
•SymbOS
•TinyOS
•Wheels (operating system)
•Comparison of real-time operating systems