Top > OS > 組込みOS


マイコンで利用できるOS

Linux

Linux とは本来、OS の基盤となる中核ソフトウェア「カーネル」のみを指す呼称であるが、今日ではこの Linux カーネルに GNU Project のソフトウェアや、X Window System など、別のプロジェクトやライセンスのもとで開発が行われたソフトウェア製品群をパッケージ化し、Linux カーネルと同時に配布する Linux ディストリビューションを指して、単にLinux と呼ぶこともある。
Linux カーネルを用いて構築された OS 環境は、一般的には UNIX 系 OS、 UNIX 互換OS 等として分類される。 ただし厳密には、UNIX の標準的な API などを定めた仕様である POSIX を概ね満たし ているものの、たとえ実質的に POSIX を満たしていたとしても、

  • ほとんどのディストリビューションが POSIX 自体を取得していない
  • UNIX の商標を取得していない(商標 UNIX ではない)
  • 既存の UNIX からの fork やソースコードの流用等も行われていない(血統上の UNIX でもない)

などから、本来のUNIX と混同して扱うことは適切ではない。 Linux カーネルはその名の通り、OS の根幹としてコンピュータのシステム資源を統括するカーネルであり、これを用いて具体的な応用を可能とする OS を構成する場合には、他の多数のソフトウェアの助力を必要とする。


μITRON 系

TRON は1980 年代に日本の国策として進められたコンピュータの OS およびハードウェアの開発プロジェクトである。 もともとは、組込み機器用の CPU や OS だけでなく、デスクトップパソコンやFA(Factory Automation)、交換機制御など幅広い分野に適用可能な リアルタイムシステムの構築を目指していた。 TRON プロジェクトは 1984 年に開発され、 リアルタイム OS 仕様(TRON 仕様) が策定されたほか、 TRON の実行を目的としたプロセッサの開発が各社で進められていた。 しかし、日米貿易摩擦に関して、TRON プロジェクトが国外メーカーを排除している というような非難が海外から寄せられ、その圧力に押されて TRON プロジェクトは 縮小に向かった。 TRON は他の OS とは異なり、TRON 仕様のみ標準化し、実装は各自に任せられている。TRON という OS があるわけではなく、標準化された TRON 仕様があり、 それに準じたOS が各社/各人で作成されている、と考えることができる。


MES

MES(Micro Embeded System) は、みついわゆきお氏によって開発された マイコン用の組込み OS である。 当初は H8/OS の後継 OS として H8 系のマイコンをターゲットとして開発されたが、 後に SuperH 系に対応するようになった。 現在は SuperH を主なターゲットとして開発されている。 MES の特徴は、パソコンで広く利用された MS-DOS に類似したシステムコールを 備えている点である。 パソコン上のプログラミングに慣れた人に馴染み易い OS と言える。 デバイスドライバも豊富で、液晶パネルの駆動などが楽に行える。 また、最新バージョンではネットワークタスクがサポートされており、TCP/IP の通信をシステムコールを使って容易に実装できる。


uClinux

Linux を組込み用に利用すると言う話は、最近よく耳にするはずである。 携帯電話や AV 機器に Linux を採用しようとする活発的な動きがあるためである。Linux 自体は非常に規模が大きい OS であり、実装するには CPU がいくつかの 要件を満たしていなければならない。 従って、Linux を採用するには、それなりの規模の組込み用 CPU(32 ビットで、 ある程度高速であり、メモリ管理システムがあるなど)がターゲットになっている。 そこで、Linux カーネルとは別系統で開発が進められていたのが uClinux である。uClinux は、本流の Linux カーネルがサポートしていない、 メモリ管理システムを持たない 16 ビット CPU でも利用できる Linux として 開発された。uClinux には Linux とは異なる部分があるが、Linux 上の アプリケーションの一部は uClinux 上で動作させることができる。 Linux 上の豊富なアプリケーションが使えることが uClinux の特徴である。


OS を採用すべきケースと選定

組込み用 OS として、Linux まで選べるなら、パソコンのプログラミングと 何ら違わないように感じるが、実際には OS を採用するかどうかが最初の思案の しどころとなる。 組込み用マイコンには、様々なものがあり、扱えるメモリサイズ、パフォーマンスも 様々である。当然の事ながら、規模が小さいマイコンほど安価であり、 規模が大きくなるほど高価になる。
一方、OS を動作させるには、相当の規模が必要となってくる。ユーザープログラム+OS が常駐するわけなので、相応のメモリサイズが必要であり、OS が複雑なものであればオーバーヘッドを含め CPU にもパフォーマンスが要求されるようになるからである。 OS が必要かどうかは、作成しようとする機器の複雑さによって決まると言ってよい。 例えば、「外気の温度に応じてモーターの回転速度を変えたい」というような ケースでは、OS を使う必要はほとんどの場合ないはずである。 非常に小規模な組込み用マイコンで足りるため、そのマイコンで動作する 小さなプログラムを自作したほうが手っ取り早く、コストも安く済む。

しかし、多数のセンサーがあり、多数のモーターを制御する、という具合に規模が大きくなると OS の採用を検討する価値が出てくる。 センサーから値を取得するタスク、モーターを制御するタスク、という具合に 複数のタスクに分けてマルチタスクで実装した方が楽であり、 結果としてバグが少なく、スムーズな制御が可能になる場合もある。 この例のように、規模に応じて OS の要・不要を検討し、 その上で適切なOS を選ぶことになる。 モーターの制御の例なら、複数のタスクが動作すればよく、サイズが小さなμITRON が 最適な解となる。 さらに進んで、ネットワークに接続してネットワーク経由でモーターを制御する、 というような作例では、ネットワークタスクが実装された OS が選択肢に挙がる。 先に紹介した例なら MES や uClinux が候補に考えられる。 いずれにしても、OS を利用するかどうか、またどのようなOS を採用すべきかは、 マイコンで作成しようとする機器の規模に応じて、

  • 許されるハードウェアの規模
  • コスト
  • 実装の手間(OS があった方が楽か、そうではないか)

を考慮しなければならない。


リロード   凍結解除 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 13 May 2011 00:20:12 JST (2626d)