センサーノード向けに振り切りまくったRTOS「Contiki」が「Contiki-NG」へ進化:リアルタイムOS列伝(16)(1/4 ページ)
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第16回は、センサーノード向けにいろいろと振り切りまくったRTOS「Contiki」とその進化版「Contiki-NG」を紹介する。
“Contiki”とは、インカ帝国の神の名前(Apu-Kon-Tiki-Uira-Cocha:略称の一つがCon-Tiki Viracocha)が起源らしいが、むしろその名前を冠して1947年にトール・ヘイエルダール博士らによって建造された「コンティキ号」という大型の筏の方が有名かもしれない。この筏の方にちなんだのが、今月ご紹介するリアルタイムOS(RTOS)の「Contiki」と、その後継の「Contiki-NG」である。
RAMのフットプリントが極小ともいうべきサイズに
もともとのContikiは2002年にAdam Dunkels氏が開発したものだ。実はDunkels氏はContiki以外にも「Protothreads」(軽量なThread:実装を見ているとFiberの一種ではないかと思う)や、lwIP(Lightweight IP)、μIP(8/16ビットMCU向けTCP/IPスタック)、μVNC/Miniweb/phpstack/μBASICなど、さまざまなソフトウェアを手掛けており、その幾つかは現在も広範に利用されている。こうしたものもContikiに取り込まれている。
Dunkels氏は2000年にスウェーデンのルレオ工科大学を卒業後、SICS(Swedish Institute of Computer Science)に在籍。当初はリサーチャー、2006年からはHead of Research Groupとして活動していた。これと並行してSICSで博士号も取得しているのだが、それはともかくとして2004年ごろの氏のプレゼンテーションを見ていると、どうもセンサーネットワークの研究を行っており、このためにセンサーノード向けの軽量なOSが必要ということになったらしい。Dunkels氏はContikiに先駆けて2000年からlwIPの実装を始めており、このlwIPを動かすプラットフォームとしてContikiを作った、というのが実情のようだ。
図1は、2004年のIEEE EmNetS-IでDunkels氏らが行った発表資料からの抜粋だが、既にこの時点でMSP430やAVR、HC12やZ80など、8〜32ビットに幅広く移植されたセンサーノード向けOS、としている。ターゲットは“Mote”クラスのデバイス、まぁ今で言うならIoT(モノのインターネット)のフレームワークでよく用いられるConstrained Device(制約されたデバイス)という分類であろうが、要するにMCUの開発キット(それも結構安い方)で動くことを想定した構成である(図2)。
図1 HC12や6502など、えらい代物が並んでいるが、実際にcontiki-osのGitHubを見てみると、3年前にtoolsから“Removed Apple][ mouse driver file.”とあるあたり、Apple][にも移植されていたらしい[クリックで拡大]
図2 問題はMCUそのものよりも通信側で、ここの消費電力をどう抑えるかではあるとは思うが、それはともかくとしてこうしたセンサーノードでは低コスト化も重要な要素であり、それに向けてフットプリントを最小にすることが求められる[クリックで拡大]
図3に示したのが、MSP430とAVR8でのフットプリントだが、ROM(というかフラッシュ)の占有量もさることながら、RAMのフットプリントが極小ともいうべきサイズになっているのが分かる。
Copyright © ITmedia, Inc. All Rights Reserved.