Cooja Contiki ネットワーク シミュレーターで IPv6-RPL-6LoWPAN ネットワークを形成する 41 個のノードで実行されている Contiki 2.6 を示す Ubuntu システムのスクリーンショット。 | |
| 開発者 | アダム・ダンケルス |
|---|---|
| ソースモデル | オープンソース |
| 初回リリース | 2003年3月10日 |
| 最終リリース | 3.0 / 2015年8月25日 |
| リポジトリ | github.com/contiki-os/contiki |
| ライセンス | BSD-3条項 |
| 公式サイト | 詳しくはこちら |
| 安定版リリース | 4.9 / 2023年6月17日 |
|---|---|
| リポジトリ | github.com/contiki-ng/contiki-ng |
| Webサイト | www.contiki-ng.org |
Contikiは、低電力ワイヤレスIoTデバイスに重点を置いた、ネットワーク化されたメモリ制約のあるシステム向けのオペレーティングシステムです。Contikiは、街路照明、スマートシティの音響監視、放射線監視、警報などのシステムに使用されています。 [ 1 ]これはBSD - 3 - Clauseライセンスの 下でリリースされたオープンソースソフトウェアです。
Contikiは2002年にAdam Dunkelsによって開発され[2]、その後Texas Instruments、Atmel、Cisco、ENEA、ETH Zurich、Redwire、RWTH Aachen University、Oxford University、SAP、Sensinode、Swedish Institute of Computer Science、ST Microelectronics、Zolertiaなど世界中の開発者チームによって開発が進められてきました。[3] Contikiは、組み込みのTCP/IPスタックと、イベント駆動型カーネルによる軽量のプリエンプティブスケジューリング[4]により人気を博しました。これはIoTにとって非常に魅力的な機能です。Contikiという名前は、トール・ヘイエルダールの有名なコンティキ号に由来しています。
Contikiはマルチタスクと組み込みのインターネットプロトコルスイート(TCP/IPスタック)を提供しますが、必要なランダムアクセスメモリ(RAM)は約10キロバイト、読み取り専用メモリ(ROM)は30キロバイトだけです。[1]グラフィカルユーザーインターフェイスを含む完全なシステムには、約30キロバイトのRAMが必要です。[5]
最近、Contiki-NGと呼ばれる新しいブランチが作成されました。これは、次世代IoTデバイス用のOSです。
ハードウェア
Contiki は、メモリ、電力、処理能力、通信帯域幅が厳しく制限されているタイプのハードウェア デバイスで実行できるように設計されています。一般的な Contiki システムは、数キロバイトのメモリ、ミリワットの電力バジェット、メガヘルツ単位の処理速度、および数百キロビット/秒の通信帯域幅を備えています。このようなシステムには、多くの種類の組み込みシステムや古い8 ビットコンピューターが含まれます。
ネットワーキング
Contiki は、3 つのネットワーク メカニズムを提供します。uIP TCP/IP スタック[6]はIPv4ネットワークを提供し、uIPv6 スタック[7]はIPv6ネットワークを提供し、Rime スタックは低電力ワイヤレス ネットワーク用に設計されたカスタム軽量ネットワーク プロトコルのセットです。IPv6 スタックは Cisco によって提供され、リリース時にIPv6 Ready認定を受けた最小の IPv6 スタックでした。[8] IPv6 スタックには、低電力損失 IPv6ネットワーク用の Routing Protocol for Low power and Lossy Networks (RPL) ルーティング プロトコルと、IEEE 802.15.4リンク用の6LoWPANヘッダー圧縮およびアダプテーション レイヤーも含まれています。
Rime は、IPv4 または IPv6 スタックのオーバーヘッドが許容できないときに使用する代替ネットワーク スタックです。Rime スタックは、低電力ワイヤレス システム用の通信プリミティブのセットを提供します。デフォルトのプリミティブは、シングル ホップ ユニキャスト、シングル ホップ ブロードキャスト、マルチ ホップ ユニキャスト、ネットワーク フラッディング、およびアドレスフリー データ収集です。プリミティブは単独で使用することも、組み合わせてより複雑なプロトコルやメカニズムを形成することもできます。[9]
低消費電力動作
多くの Contiki システムは電力に厳しい制約があります。電池駆動の無線センサーは、何年も無人運転する必要があり、電池の充電や交換の手段がほとんどありません。Contiki は、それが実行されるシステムの電力消費を削減するための一連のメカニズムを提供します。無線の低電力動作を実現するためのデフォルトのメカニズムは、ContikiMAC と呼ばれます。[10] ContikiMAC を使用すると、ノードは低電力モードで実行されていても、無線メッセージを受信して中継することができます。
シミュレーション
Contiki システムには、Contiki ノードをシミュレートする Cooja と呼ばれるセンサー シミュレータが含まれています。[11]ノードは、次の 3 つのクラスのいずれかに属します。a) エミュレートされた Cooja ノード、b) シミュレーション ホストでコンパイルおよび実行される Contiki コード、c) Java ノード (ノードの動作は Java クラスとして再実装する必要があります)。1 つの Cooja シミュレーションには、3 つのクラスのいずれかのセンサー ノードが混在している場合があります。エミュレートされたノードは、シミュレートされたネットワークに非 Contiki ノードを含めるためにも使用できます。
Contiki 2.6 では、TI MSP430およびAtmel AVRマイクロコントローラを搭載したプラットフォームをエミュレートできます。
プログラミングモデル
メモリの少ないシステムで効率的に実行するために、Contiki プログラミング モデルはプロトスレッドに基づいています。[12] [13]プロトスレッドは、マルチスレッドとイベント駆動型プログラミングの両方の機能を共有し、各プロトスレッドのメモリ オーバーヘッドを低く抑えた、メモリ効率の高いプログラミング抽象化です。カーネルは、内部イベントまたは外部イベントに応答してプロセスのプロトスレッドを呼び出します。内部イベントの例としては、起動するタイマーや他のプロセスから送信されるメッセージなどがあります。外部イベントの例としては、トリガーとなるセンサーや無線ネイバーからの受信パケットなどがあります。
プロトスレッドは協調的にスケジュールされます。したがって、Contiki プロセスは常に一定の間隔でカーネルに明示的に制御を戻す必要があります。Contiki プロセスは、特別なプロトスレッド構造を使用して、各イベント呼び出しの間にカーネルに制御を渡す間、イベントの待機をブロックする場合があります。
特徴

Contiki は、プロセスごとのオプションのプリエンプティブ マルチスレッド、イベントを介したメッセージパッシングを使用したプロセス間通信、およびローカル接続された端末の直接グラフィック サポートまたは仮想ネットワーク コンピューティング(VNC) または Telnet 経由のネットワーク仮想ディスプレイのいずれかを備えたオプションのグラフィカル ユーザー インターフェイス(GUI) サブシステムをサポートします。
Contiki のフルインストールには次の機能が含まれます。
- マルチタスクカーネル
- オプションのアプリケーションごとのプリエンプティブマルチスレッド
- プロトスレッド
- IPv6を含むインターネット プロトコル スイート(TCP/IP)ネットワーク
- ウィンドウシステムとGUI
- 仮想ネットワークコンピューティングを使用したネットワークリモートディスプレイ
- ウェブブラウザ(世界最小と主張)
- 個人用ウェブサーバー
- シンプルなTelnetクライアント
- スクリーンセーバー
ContikiはwolfSSLなどの一般的なSSL/TLSライブラリでサポートされており、wolfSSLの3.15.5リリースにはポートが含まれています。[14]
ポート

マイクロコントローラ
- アトメル– ARM、AVR
- NXPセミコンダクターズ– LPC1768、[15] LPC2103、MC13224
- マイクロチップ– dsPIC、PIC32 (PIC32MX795F512L)
- Texas Instruments – MSP430、CC2430、CC2538、CC2630、CC2650、CC2538: cctv、Firefly、Zoul (CC2538 と CC1200 を 1 つのモジュール形式で構成)
- STマイクロエレクトロニクス– STM32 W
コンピューター
- アップルII [a]
- Atari 8ビットコンピュータ[a]
- アタリST
- アタリポートフォリオ
- ポケットビューアー
- コモドールPET [a]
- VIC-20 , [a]
- コモドール64、[a] コモドール128 [a]
- オリック語
- NEC PC-6001
- シャープウィザード
- x86ベースのUnix系システム、GTK+上、またはより直接的にはX Window Systemを使用[16]
ゲーム機
参照
注記
- ^ abcdefghi cc65ベースの開発
参考文献
- ^ コンティキOSについて。
- ^ Contiki: センサーネットワークに IP を導入
- ^ 「コミュニティ」、Contiki OS。
- ^ Dunkels, Adam (2004)、「Contiki – 小型ネットワークセンサー向けの軽量で柔軟なオペレーティングシステム」、第 29 回 IEEE 国際ローカルコンピュータネットワーク会議の議事録、 pp. 455–462。
- ^ オープンに:モノのインターネットを支配するあまり知られていないオープンソース OS
- ^ Dunkels, Adam (2003 年 5 月)、「8 ビット アーキテクチャ向けの完全な TCP/IP」、モバイル システム、アプリケーション、サービスに関する第 1 回 ACM/Usenix 国際会議 (MobiSys) の議事録、サンフランシスコ
{{citation}}: CS1 maint: location missing publisher (link) - ^ Durvy, Mathilde; Abeillé, Julien; Wetterwald, Patrick; O'Flynn, Colin; Leverett, Blake; Gnoske, Eric; Vidales, Michael; Mulligan, Geoff; Tsiftes, Nicolas; Finne, Niclas; Dunkels, Adam (2008 年 11 月)、「センサー ネットワークを IPv6 対応にする」、第 6 回 ACM ネットワーク組み込みセンサー システム会議 (SenSys) (ポスター セッション)の議事録、米国ノースカロライナ州ローリー: ACM
- ^ ニュースルーム、シスコ、2008 年。
- ^ Dunkels, Adam; Österlind, Fredrik; He, Zhitao (2007 年 11 月)、「ワイヤレス センサー ネットワークの適応型通信アーキテクチャ」、第 5 回 ACM ネットワーク組み込みセンサー システム会議 (SenSys) の議事録、シドニー、オーストラリア
{{citation}}: CS1 maint: location missing publisher (link)。 - ^ Dunkels, Adam、「ContikiMAC 無線デューティ サイクリング プロトコル」(PDF)。
- ^ 「スタート」、Contiki OS。
- ^ Dunkels, Adam; Schmidt, Oliver; Voigt, Thiemo; Ali, Muneeb (2006 年 11 月)、「Protothreads: メモリ制約のある組み込みシステムのイベント駆動型プログラミングの簡素化」、第 4 回 ACM 組み込みネットワーク センサー システム会議 (SenSys) の議事録、米国コロラド州ボルダー
{{citation}}: CS1 maint: location missing publisher (link) Dunkels, A.; Schmidt, O.; Voigt, T.; Ali, M. (2006). 「Protothreads」。組み込みネットワーク センサー システムに関する第 4 回国際会議の議事録 - Sen Sys '06 。p . 29。doi :10.1145/ 1182807.1182811。ISBN 1595933433. S2CID 983128。(PDF、プレゼンテーションスライド) - ^ 「Protothread」、コード。
- ^ 「wolfSSL CONTIKI OS ポート - wolfSSL」。2018 年 12 月 18 日。2019 年 1 月 9 日閲覧。
- ^ 「Contiki オペレーティングシステム / [Contiki-developers] LPC1768 arm プロセッサ用の Contiki ポート」。2020 年 12 月 19 日。
- ^ Stein, H, Windows、Trix での Contiki の実行、2003-12-09 のオリジナルからアーカイブ。
外部リンク
- 公式サイト
