II-24-8. 組み込みシステムにおけるネットワークのソフトウェア

組み込みシステムで利用できる各種の通信デバイスに関して、ソフトウェアからの利用方法を説明する。また通信するデータや通信対象、通信手段の選択方法や、組み込みシステムで利用できる通信ミドルウェアについて解説する。

【学習の要点】

* 組み込みシステムにおけるネットワークのソフトウェアで利用される言語は、C, アセンブラ、C++, Javaの順である。Cとアセンブラの組合せが組み込みソフトウェアの開発において一番利用され、安定している言語セットである。

* 組み込みシステムにおけるネットワークのソフトウェアの開発ではOSが利用されることが日常化している。

* 組み込みインターネットでは通常の汎用PCと同様のネットワークソフトウェアが利用される。

* 組み込みインターネットを利用する場合はOSを利用する場合が多い。

図II-24-8. 組み込みシステムで利用される言語とOS

 

【解説】

1) 組み込みシステムにおけるネットワークのソフトウェアにおける言語

* C言語
現在組み込みシステムにおいて最も利用されている言語はC言語である。C言語はデバイスドライバなどのハードウェアに直接アクセスするプログラムの作成に向いている。

* アセンブラ
C言語の次に組み込みで利用されているのがアセンブラである。未だにアセンブラが利用されているのは、割り込み処理などはC言語を利用していてもアセンブラが必要であること、C言語よりもパフォーマンスがよいこと、などがあげられる。ただし、命令セットがプロセッサごとに異なるために、ソフトウェアの再利用性が低くなる。

* C++
C++は大規模な組み込みシステムを中心に広がっているが、あまり十分に広がっているとは言えない状況である。その理由として、例外処理やテンプレートなどを不用意に利用してしまうとコードサイズが巨大になってしまうこと、メモリ配置を静的に決められないのでメモリの最適化を意図的に実現することができないこと、などがある。

* Java
Javaは携帯電話のような、マシンが独立で比較的小さなバイトコードをダウンロードして利用する場合に利用されているだけで、十分に広まっていない。その理由はVM (Virtual Machine)のオーバーヘッドが無視できないほど大きいこと、ガベージコレクションによりリアルタイム性を著しく失うことなどがある。

2) オペレーティングシステム

* プロセッサの処理能力性能の向上と、機能要件の肥大化の波が押し寄せた結果、組み込みシステムにおいてオペレーティングシステム(OS)が採用されるケースが急増している。

* 多くの組み込みシステムではリアルタイム性が求められることから、リアルタイムOS(RTOS)が利用されることが多い。このようなRTOSとして、ITRONおよび後継のT-Engine, RTLinux, VxWorks, Embeded Windows CEなどがよく使われる。

* 最近では組み込み機器であっても、プロセッサ性能とメモリ容量が拡大したことから、LinuxやWindowsの汎用OSがそのまま搭載されることさえある。

3) 組み込みインターネット

* 携帯電話や情報家電をはじめとして、組み込み機器を利用してインターネット上のサービスを活用する機会が増えてきた。これを組み込みインターネットという。典型的な利用方法が、携帯電話からのWebブラウジングや動画ストリーミング、メール閲覧である。

* 組み込みインターネットでは通常の汎用PCと同様、TCP/IP通信の上にHTTPプロトコルやIMAPプロトコルを利用したり、UDP/IPの上にストリーミング形式のプロトコルを利用したりする。

* インターネットに対応するミドルウェアとしてのソフトウェアスタックが必要になるため、その一部として利用可能であるOSを採用する場合が多い。

* 組み込みインターネットに対するソフトウェアスタックが無い場合は、スクラッチから開発することになるが、既にコモディティとなっているインターネットソフトウェアスタックを開発するかどうかは、十分に検討する必要がある。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。