第1章 さまざまな技術が使われる基盤となる
組み込みシステム開発の基礎知識
 用語解説特集の導入として,さまざまな技術が集約されるインフラとしての「組み込みシステム」の基礎を解説する.まず,組み込みシステムがどういうもので,どんな特徴をもつものかを解説する.そして,組み込みシステムを開発する環境の「いままで・これから」を,課題やさまざまなトピックも含めて,ていねいに解説する.

(編集部)

はじめに

 携帯電話,ディジタルカメラ,プリンタなど,多くの身近な機器にはコンピュータが組み込まれています.このような機器のことを組み込みシステムと呼びます.組み込みシステムにおけるコンピュータは,メインフレームやミニコンピュータ,パーソナルコンピュータ(PC)などがもつ「普通」のコンピュータとしての機能を提供するのではなく,各機器がもつ機能 注1 の実現を,目に見えないところで強力にサポートしています.

 そこで,このような機器ごとに異なる使用方法を提供する組み込みシステムは一体,どのような開発環境で開発されていくのか,それに使用されるソフトウェア開発の基礎知識を中心に解説します.

1 組み込みシステム

 組み込みシステムの例を図1に示します.

〔図1〕組み込みシステムの例

 半導体技術の進歩にともない,安価で高機能なコンピュータが提供されるようになりました.その結果,多くの機器にコンピュータが組み込まれるようになり,機器の付加価値を増大させています.今日では,現代社会を支えるもっとも重要なインフラになっているといっても過言ではありません.

1.1 組み込みシステムの特徴

 組み込みシステムは非常に幅広い機器で使用されるため,その性質も分野により異なりますが,一般的に組み込みシステムの特徴としては,次のようなことがあげられます.

● ハードウェアリソースの制約

 組み込みシステムは,とくに大量生産される場合,コストに対する要求が厳しいため,ハードウェアリソースがしばしば制限されます.これによりソフトウェアには表1のような制約が課せられます.

〔表1〕ハードウェアによる制限
ハードウェア 該当ハードウェアがプログラムに課す制限
CPU 処理速度:低速CPUかつ許容処理時間が短い場合,同じ機能モジュールをできるだけ少ないステップ数でプログラミングする必要がある
メモリ プログラムサイズ:限定された容量のメモリにプログラムを格納する必要がある
タイマ 処理速度:一定周期で発生するタイマ割り込みをタイマ 処理するプログラムは頻繁に実行されるため,処理時間を最小限に抑えないと,システムに負荷がかかる

● 応答時間(リアルタイム性)

 組み込みシステムでもっとも考慮しなければならない要件が応答時間です.リアルタイム性ともいいます.ほとんどの組み込みシステムでは,何らかのイベント(システムに応答を要求する事態)が発生すると,それに対して一定時間内に何らかの応答を返すことを要求されます.さまざまなイベントに対して制限された時間内に応答するためには,システム内にそれに即したしくみが必要となります.このようなシステムをリアルタイムシステムと呼びます.

 大半の組み込みシステムではリアルタイム処理を必要とします.たとえば,自動車を走行中,ハンドル操作を誤り電柱に激突したとします.その場合,激突したというイベントが発生してから,制限時間内に応答としてエアーバッグが開かなければ,命にかかわる最悪の事態を招くでしょう.携帯電話の電話帳にアドレスを登録している最中に,電話がかかるというイベントが発生したにもかかわらず,応答として着信音が鳴らなければ,相手はしびれを切らして,通話を断念するかもしれません(図2).

〔図2〕電話がつながらない

● 非常に高い信頼性・安定性

 組み込みシステムでは,長時間ノンストップで使っても故障しないことはもちろん,PCのようにハングアップしないことが要求とされます.たとえば,情報家電では不特定多数の人間による誤操作に対しても正常に動作することが求められます.また,分野(航空機や自動車関連など)によってはフェイルセーフ性(故障時安全性)やフォールトトレラント性(耐故障性)がきわめて重要視される場合があります.

1.2 リアルタイムOS
RTOS:Real-Time Operating System

 組み込みシステムの多くには,リアルタイム性を保証するしくみをもったOS(オペレーティングシステム)が使用されています.このようなOSをリアルタイムOS(RTOS)と呼びます.RTOSはOSが一般的に提供する機能要求を満たすだけではなく,多くの組み込みシステムに要求される厳しい時間制約の中で,効率よく処理するしくみ(リアルタイム処理機能)も提供する必要があります.

 リアルタイム処理機能を司るソフトウェアが,RTOSの中核であるカーネルです.カーネルのリアルタイム処理機能の良し悪しが,組み込みシステムの性能を大きく左右する場合があります.

● リアルタイム処理機能

 カーネルは,アプリケーションが制限時間内に応答できるしくみを提供します.発生するイベントが一つの場合,すぐに応答が可能です.その応答時間が制限時間内に収まりきれないのであれば,ハードウェアの改善などを行うしかありません.ところが,あるイベントの処理を行っている最中に,別のイベントが発生することがあります.システムはどちらのイベントを優先して処理するかを決定しなければなりません.その決定処理をスケジューリングといいます.カーネルは,このスケジューリング機能を提供しています.

 図3(a)では,イベント2が発生してもイベント1の処理を実行し続け,イベント1の処理が終了後,イベント2の処理を開始しています.逆に図3(b)では,イベント2が発生すると同時にイベント2の処理を優先的に実行し,イベント2の処理が終了後,中断されたイベント1の処理の続きを開始しています.

〔図3〕複数イベントのスケジューリング

 このように,カーネルのスケジューリング機能により,どの処理を優先的に実行させるかを決定する指標を優先度といいます.優先度が高いイベントが優先的に実行されます.

 次に,優先度の低い順に複数のイベントが発生した場合の処理について,説明します.

 図4は,もっともわかりやすい複数イベントの処理の流れを示したものです.ここでは,イベントの発生順の問題を取り上げているわけではなく,次のことを理解してください.

(1) 最優先度のイベントの応答時間=そのイベントの処理に必要な時間
(2) ある優先度のイベントの応答時間=そのイベントの処理に必要な時間+自分より高優先度のイベントの処理に必要な時間

 組み込みシステムは,すべてのイベントの応答時間に制限があります.図4から読み取れるように,応答の制限時間が短いイベントほど高優先度で処理することは合理的であるといえます.

● RTOSの選択

 RTOSを用いるだけでリアルタイムシステムを構築できるものではありません.アプリケーション側でもリアルタイム性を考慮した設計を行うことにより,初めてリアルタイムシステムを構築できるのです.構築したい組み込みシステムは,非常に厳しい制限時間内での応答処理が要求されるのか,比較的緩やかな応答時間を保証すればいいのか,という点を考慮し,使用するRTOSの性能をチェックする必要があるでしょう.さらに,使用するCPUでの採用実績は豊富か? 使用可能なソフトウェア部品はそろっているか? ライセンスフィーはどうか? など,あらゆる判断基準をもとに搭載するRTOSの選定をする必要があります.

〔図4〕各イベントの応答時間


注1:携帯電話は会話,メールの送受信やインターネット接続,ディジタルカメラは画像処理,プリンタは紙面への印刷といったように

Copyright 2003 宮原淳一