いろいろな機械や機器に組み込まれて，その制御を行うコンピュータシステムのことを，組み込みシステム（embedded system）と呼ぶ．本章では，組み込みシステムとはどのようなシステムであるかを説明し，組み込みシステムの特性やそのソフトウェア（組み込みソフトウェア）開発の特徴について述べる．また，組み込みソフト
ウェア開発の最近の動向についても紹介する．

1.1

組み込みシステムとは組み込みシステムの適用分野と適用した機器の例を表 1.1 に挙げる．組み込みシステムとは，「機械や機器に組み込まれて，その制御を行うコンピュータシステム」のことだと述べたが，この定義には曖昧なところがある．
実際，どのようなシステムのことを組み込みシステムと呼ぶのかは，人によって異なっている．
たとえば，最近のプラント制御システムには，パーソナルコンピュータ（PC）ベースのハードウェアが用いられる場合も多い．この場合，ハードウェア的には PC そのものであり，「組み込まれて」いるとは考えにくい．そのため，プラント制御システムは組み込みシステムではないと考える人も多い．しかし，工場という大規模な「機械」に組み込まれて，それを制御しているコンピュータシステムであると考えれば，上の定義にあてはまることになる．実際，プラント制御システムには，次節で述べる組み込みシステムの特性の多くがあてはまる．
別の例として，ゲームマシンが挙げられる．ゲームマシンの形態によっては，中にコンピュータが組み込まれていると考えるのが自然なものもあれば，コンピュータそのものであると考えたほうが自然なものもある．最近のゲームマシンには，PC を小型化・簡略化して作られているものもあり，その場合には，ハードウェア構成やソ〔表 1.1〕
組み込みシステムの適用分野と機器の例

適用分野
家電機器
AV 機器
娯楽 / 教育機器
個人用情報機器
パソコン周辺機器
OA 機器
端末
通信機器
ネットワーク設備
運輸機器
工業制御 /FA 機器
設備機器
医用機器 / 福祉機器
宇宙 / 軍事その他の業務用機器
その他の計測機器

利 用 例
電子レンジ，炊飯器，冷蔵庫，洗濯機，乾燥機，エアコン
テレビ，ビデオ，ディジタルカメラ，オーディオ機器
ゲームマシン，電子楽器，カラオケ，パチンコ
PDA，電子手帳，カーナビ
プリンタ，スキャナ，ディスクドライブ，DVD ドライブ
コピー，FAX携帯電話機，留守番電話機
ネットワークルータ，ハブ，携帯電話基地局，PBX，交換機
自動車，信号機，鉄道車両，鉄道制御，航空機，船舶
プラント制御，NC 工作機械，工業用ロボット
ビル用照明，ビル用空調，ビル用電力システム，エレベータ
血圧計，心電計，レントゲン，CT スキャナ
ロケット，人工衛星，ミサイル
業務用データ端末，POS 端末，自動販売機
シンクロスコープ，IC テスタ，電力メータ

7

フトウェア構成の面でも PC に近いものになっている．
組み込みシステムを，上のような例まで含めて広くとらえると，PC やワークステーションなどのいわゆる汎用システムを除くほとんどのコンピュータシステムが，組み込みシステムであるということになる．汎用システム以外であることを言い換えると，ある応用に専用化されたコンピュータシステムを，組み込みシステムと呼んでいることになる．
上に例で挙げたゲームマシンは，ゲームという応用に専用化されているとも捉えられるし，多種類のゲームができるようになるという意味では，汎用という捉え方もできる．このことから，ゲームマシンは，組み込みシス
テムと汎用システムの中間的なものと考えるのがよいだろう．実際，ゲームマシンに関しては，次節で述べる組
み込みシステムの特性で，あてはまらないものも多い．また，PDA についても同様のことがいえる．
組み込みソフトウェアとは，一般には組み込みシステムのソフトウェアのことをいうが，「機械や機器に固定されていて変更されることのないソフトウェア」とする定義もわかりやすい注 1．後者の定義では，一つのシステムを構成するソフトウェアも，組み込みソフトウェアとそうでない部分に分けることができる．たとえば，PC のBIOS は組み込みソフトウェアということになる．

1.2

組み込みシステムの特性

組み込みシステムは，制御対象である機械や機器の多様性を反映して，極めて多様である．システムの規模の面では，8 ビットのワンチップマイコンを用いた小規模なシステムから，32 ビット，さらには 64 ビットのプロセ
ッサを複数用いた大規模なシステムまで含まれる．また，システムに対する要求事項の面でも，自動車や航空機の制御システムのように高い信頼性とリアルタイム性の確保が最重要課題となるシステムもあれば，家電製品やAV 機器のようにコストダウン要求が厳しいシステムもある．
そのため，すべての組み込みシステムに共通する特性はないといっても過言ではない．とはいえ，多くの組み込みシステムに共通する特性はある（そうでなければ，「組み込みシステム向け」のソフトウェア開発技術は存在しえない！）．以下で述べる四つの特性は，特に多くの組み込みシステムに共通するものである．

1.2.1 専用化されたシステム
先に述べたとおり，組み込みシステムをもっとも広く捉えると，ある応用に専用化されたコンピュータシステ
ムということになり，この特性は組み込みシステムの定義であるということもできる．
ある応用に専用化されたシステムという特性は，システムを最適に設計するためには有利な特性である．応用が限定されていることから，ハードウェアや OS の使われ方も限定される．そのため，ハードウェアや OS は，ア
プリケーションプログラムが使う機能のみを備えていればよい．また，頻繁に使う機能や高速化したいプログラ
ムで使う機能を高速に処理できるように，ハードウェアや OS を最適化することもできる．

1.2.2 厳しいリソース制約
プロセッサの処理能力やメモリ容量などの計算リソースに対して，厳しい制約が課されているシステムが多い．
言い換えると，処理能力の低いプロセッサを使うことや，使用するメモリ量を少なくすることが強く求められる．
このような要求がシステムのコストダウンの要求からくることは理解しやすいだろう．大量生産される機器に組み込まれるシステムの場合，部品のコストを少しでも下げることができれば，全体では大きなコストダウンにつながる．
簡単な計算をしてみる．組み込みシステムの中には，携帯電話のように一つの機種で 100 万台以上も生産するものもある．このようなシステムでは，100 円安いプロセッサを使うことができれば，全体では 1 億円以上のコス

注 1 ：これをファームウェアと呼ぶ場合もあるが，ファームウェアという言葉は違う意味で使われることもあるので注意が必要である．

8

第1章

組み込みシステム概論

トダウンになる．
それに加えて，低消費電力化に対する要求や小型化・軽量化の要求，さらには動作温度条件や EMC といった動作環境から，厳しいリソース制約が生じる場合もある．とくに，携帯機器では消費電力を下げることが極めて重要で，そのためには，プロセッサの動作クロック周波数をできる限り低くするほうが有利である．

1.2.3 高い信頼性
機械や機器を制御することから，組み込みシステムには高い信頼性が求められるのが通常である．プラントや自動車の制御といった応用では，システムの誤動作が人命にかかわる事態につながるため，システムには極めて高い信頼性が要求される．家電製品などの民生機器の場合でも，システムの誤動作が重大な事態を引き起こす可能性を否定できない．
また，大量生産される機器の場合には，システムに問題があった場合には，一度販売した機器を回収（リコール）
してシステムの修正を行う必要がある．回収には高いコストがかかることに加えて，メーカーのブランドに対する信頼が損なわれるおそれもあるため，機器の出荷前に徹底的にシステム検証を行うことが求められる．
さらに，技術的な要因ではないが，ユーザーが機械や機器の信頼性を期待している（それに対して，PC の信頼性は低いものとあきらめている）
ことも，組み込みシステムが高い信頼性を求められる理由の一つである．

1.2.4 リアルタイム性
リアルタイム性とは，単に計算処理速度が速いことやレスポンス時間が短いことをいうのではなく，システムが定められた時間要件を満たして動作する性質をいう．多くの組み込みシステムは，やはり機械や機器を制御することから，制御する対象の機械や機器によって定まる時間条件を満たして動作しなければならない．つまり，リアルタイム性が求められることになる．
ここに述べたこと以外にも，一部の組み込みシステムにあてはまる特性をいくつか挙げることができる．たとえば，組み込みシステムの中には，極めて寿命の長いシステムがある．家電製品であっても 10 年程度は使用する
し，プラント制御や公共系のシステムでは，寿命が 20 年というものも珍しくはない．その一方で，寿命の短いシ
ステムもあり，汎用コンピュータと比べて特徴的ではあるものの，多くの組み込みシステムに共通とはいえない．
また，人工衛星の制御システムのように，実稼働が始まると保守ができないか，できたとしても極めて難しいシ
ステムもある．
以上で挙げた特性が，組み込みシステムのハードウェアおよびソフトウェアの設計・開発を特徴づけている．
次節では，組み込みソフトウェア開発の特徴について見ていく．

1.3

組み込みソフトウェア開発の特徴

ここでは，組み込みシステムのソフトウェア開発に見られる，汎用システムにはない特徴について整理する．
これらの特徴の多くは，前節で述べた組み込みシステムの特性と関係している．繰り返しになるが，これらの特徴があてはまらないシステムもある．

1.3.1 ハードウェアに密着したプログラミング
組み込みシステムのハードウェア構成は，制御する対象の機械や機器によって異なる．機械や機器の種類に応じて，各種のセンサやアクチュエータ，通信インターフェースをもっており，周辺デバイスも特殊なものが多い．
そのため，ソフトウェア開発の中で，デバイスドライバなど，ハードウェアを直接扱う部分の比率が大きい．
ハードウェアを直接扱うソフトウェアの開発は，ハードウェアに関する知識が必要であることに加えて，動作がタイミングに依存する場合も多く，開発が難しいといわれている．そのため，ノウハウに負う部分が大きいのが現状である．

9

〔図 1.1〕
リモート開発環境の例

ターゲットシステム

ホストシステム1.3.2 開発環境とターゲットシステムの分離
組み込みソフトウェアの開発においては，ソフトウェアを動作させるターゲットシステムがソフトウェア開発に必要な機能をもっているとは限らず，開発環境を動作させるホストシステムとターゲットシステムが分離しているのが通常である（図 1.1）．そのため，クロスコンパイラやクロスアセンブラ，リモートデバッガ，ICE（InCircuit Emulator）などの組み込みソフトウェア開発に独特な開発ツールが用いられる．これらの開発ツールについては，第 3 章で詳しく述べる．
リアルタイム性を必要とするシステムの中には，システムの検証やデバッグ中であっても，システムを停止させてはならないものがある．また，デバッガを使うことで実行時間が変わることが許されない場合もある．上で挙げたツールの中で，ICE はこのようなシステムの検証・デバッグを支援するためのツールとしても重要である．
最近では，チップの外部にバスが出ていないことが多いため，ICE が使えない場面が増えている．ICE を代替する機能として，多くのプロセッサがオンチップデバッグ機能を備えるようになってきた．

1.3.3 ハードウェアとの並行開発とコ・デザインの可能性
組み込みシステムでは，そのシステム専用にハードウェアが開発されることが多いが，その場合，ハードウェ
アが完成する前にソフトウェアの開発を始める並行開発が行われるのが一般的である．ハードウェアとソフトウ
ェアの並行開発は，システムの開発期間を短縮するために有効である．
さらに，開発期間を短縮するためには，ハードウェアが完成する前にソフトウェアの検証・デバッグができることが望ましい．そのために，シミュレータを用いてソフトウェアの検証やデバッグを行うことも多い．また，設計したハードウェアとソフトウェアを一体でシミュレーションするコ・シミュレーション（協調シミュレーショ
ン）ツールが使われることもある．さらに，ソフトウェアを効率的に実行するために求められるハードウェアの要件を明確にし，それにしたがってハードウェアを設計するコ・デザイン（協調設計）
技術が適用されることも多い．
ハードウェアとソフトウェアを並行開発する場合には，ハードウェアは正しく動作するという前提でソフトウ
ェアのデバッグを行うことはできない．問題が生じた場合には，ソフトウェアに原因があるのかハードウェアの問題なのかを切り分けることが必要になる．さらにいうと，開発環境（コンパイラやデバッガ）や OS も新規に開発されたものである場合も多く，問題の切り分けにはそれぞれの技術に関する広範な知識をもった技術者が求められる．

1.3.4 多様なハードウェアと多様な OS
組み込みシステムは，規模の面でも要求事項の面でも多様であることから，用いられるプロセッサや OS も極めて多様である．
そのため，ソフトウェアの再利用性を上げようとすると，プロセッサや OS に依存しないようにすることが重要である．たとえば，組み込みシステム用のリアルタイム OS（RTOS）の多くは，プロセッサの違いを隠蔽するための仕組み（HAL ：ハードウェア抽象化レイヤ）の上にプロセッサに依存しない部分を載せる形で実現されているし，
RTOS の上で動作するソフトウェア部品は，RTOS の違いを隠蔽するための仕組みをもっていることが多い．
さらに，DSP（Digital Signal Processor）やメディアプロセッサなどの応用に特化したプロセッサが用いられる

10

第1章

組み込みシステム概論

ことも多いが，このようなプロセッサにはコンパイラがないか，あったとしても生成されるコードの効率が悪い
場合が多く，いまだにアセンブリ言語でのソフトウェア開発が必要な場面も多い．

1.3.5 システム内のソフトウェアは信頼できるという前提
組み込みソフトウェアは，機械や機器に固定されて提供され，それを制御することのみを目的に開発されるのが通常である．開発者は，システム内でどのようなソフトウェアが動作しているかを把握しており，システムの動作を妨害するようなソフトウェアが組み込まれるおそれはない．そのため，ソフトウェアの検証が完了すれば，システム内のソフトウェアは信頼できるという前提が成り立つ．
組み込みシステム用の RTOS の多くが保護のための機能をもっていないのは，保護機能を実現するためのオーバヘッドが大きいことに加えて，この前提が成り立っているためである．

1.4

組み込みシステムの簡単な歴史と現状

コンピュータが高価であった時代には，（広い意味での）組み込みシステムの適用分野も，高価な機械の制御に限定されていた．具体的には，プラント制御などの工業制御の分野から始まって，大規模な交通制御（鉄道制御や航空管制）や通信システムなどへと徐々に広がっていった．
組み込みシステムの適用分野が急速に広がったのは，1970 年代の初めにマイクロプロセッサが発明されて以降である．最初のマイクロプロセッサである 4004 は電卓に使うために開発されたので，広い意味での組み込みシス
テム用途であったということができる．低コスト化が可能なマイクロプロセッサの登場により，組み込みシステ
ムの適用分野は急速に拡大していった．
1980 年代の初めころにはマイクロプロセッサの低コスト化が進み，家電製品などの民生機器分野にまで，組み込みシステムが使われるようになった．ただし，民生機器分野で使われたのは，処理能力の低い 4 ビットや 8 ビットのプロセッサがほとんどであった．マイクロプロセッサで動作する RTOS が登場したのはこの頃である．
1990 年代半ばころからは，PC やインターネットなどの情報インフラの普及と，半導体技術の進歩により高性能なマイクロプロセッサが低コストで利用できるようになったことから，機械や機器のネットワーク化・ディジタ
ル化が急速に進展した．ネットワーク化やディジタル化により，組み込みシステムに求められる処理能力は一段と大きくなり，その役割を一層大きいものとした．また，そのソフトウェアも急速に大規模化・複雑化している．
以下では，2000 年度にトロン協会が行ったアンケート調査結果注 2 に基づいて，組み込みシステム開発の現状を見ていく．この調査結果は，国内の組み込みシステム技術者を中心に約 600 名からの回答を集計したものであり，最近開発された組み込みシステムにどのような技術が適用されているかを概観することができる．
最初に，図 1.2 からは，最近開発された組み込みシステムの過半数に 32 ビットプロセッサが用いられていることがわかる．ただし，ここで示すグラフはあくまでも開発者ベースの数であり，製品の出荷数ベースの比率はこれとは大きく異なる．というのは，4 ビットや 8 ビットなどの低コストなプロセッサを用いた機器には大量生産されるものが多く，またシステムの規模も小さいために，開発者の数は少なくても，出荷数は極めて多い場合があるためである．マイクロプロセッサの出荷数ベースでは，まだまだ 8 ビットや 16 ビットプロセッサが多数を占めている．
図 1.3 は，組み込みシステムのプログラムサイズを示す．プログラムサイズが 256K バイト以上の機器が過半数を占め，組み込みソフトウェアが大規模化しているようすがわかる．一方で，プログラムサイズが 64K バイト以下のシステムもまだまだ残っている．
図 1.4 からは，大部分の組み込みシステム開発において，主に C 言語が用いられていることがわかる．ただし，
C 言語と回答した技術者の約半分はアセンブリ言語も併用したと回答しており，アセンブリ言語によるプログラ

注 2 ：元のデータは，http://www.ertl.jp/TRON/ にある．

11

〔図 1.2〕最近開発した組み込みシステムに用いたプロセッサの種別（トロン協会のホームページより）
その他
0.5％

〔図 1.3〕最近開発した組み込みシステムのプログラムサイズ（トロン協会のホームページより）
16MB以上
5.4％

4ビット
0.2％

専用プロセッサ
1.0％

8ビット
10.2％

16MB未満
4.5％

DSP
3.2％

4MB未満
20.3％

16ビット
25.1％

64ビット
2.2％

64KB未満
17.1％

32ビット
57.6％

256KB未満
24.8％

1MB未満
28.0％
有効回答数：404

有効回答数：410

ムを完全に回避することは難しいのが現状である．C++ や Java などのオブジェクト指向は，比率的には大きくな
いものの，徐々に利用が広がりつつある．
組み込んだ OS の比率を図 1.5 に示す．このグラフからは，大部分の組み込みシステムに OS が使われていることがわかる．また，使われた OS のほとんどは，リアルタイム OS に分類されるものである．
一方で，使われた OS は多種多様であり，どの OS のシェアも 10%に満たない．これは，開発するシステムや開発現場の要求事項に合わせて，最適な OS が選ばれているためと考えられる．また，このグラフには正確な数値は示されていないが，全体の約 4 割のシステムで ITRON 仕様に準拠した OS が利用されており，ITRON 仕様がデフ
ァクト標準仕様として定着していることがわかる．
OS の利用状況をより詳しくみるために，プロセッサ別やプログラムサイズ別に OS の利用率を集計したものを
図 1.6 と図 1.7 に示す．これらのグラフからは，システムの大規模化とともに OS の利用率が上がることが確認できるが，組み込みシステム開発技術者には，自分の開発するシステムに OS を組み込むべきかどうかの目安として役立つものと思う．

1.5

組み込みシステムの適用例

本節では，組み込みシステムの実際の適用例として，自動車に使われている組み込みシステムの概要と，その〔図 1.4〕最近開発した組み込みシステムに用いたプログラミング言語（トロン協会のホームページより）アセンブリ言語
11.4％
C++/EC++
8.4％
Java
1.2％
C言語
78.5％

その他
0.5％

有効回答数：42812〔図 1.5〕最近開発した組み込みシステムに用いた OS（トロン協会のホームページより）
有効回答数：410
問題があり不使用
3.4％
その他フリーのOS
0.7％

必要なし
16.6％

自社用OS
22.4％
（半数弱が
ITRON仕様）

その他のソフトメーカー製
19.8％（大半がITRON
仕様）
Windows NT
1.5％
QNX
1.5％
OS-9
1.7％
NucleusPlus
2.0％

Linux
2.2％

pSOS
2.4％

半導体メーカー製OS
9.0％（大半がITRON仕様）
VxWorks
6.1％
Windows CE
4.6％
MS-DOS
3.4％
Win3.1/95/98/2000
2.7％

第1章
〔図 1.6〕プロセッサ別の OS 利用率（トロン協会のホームページより）
0％

20％

40％

60％

80％

組み込みシステム概論〔図 1.7〕プログラムサイズ別の OS 利用率（トロン協会のホームページより）
100％

0％

8ビット

64kB未満

16ビット

64kB〜256kB未満

20％ 40％ 60％ 80％ 100％

256kB〜1MB未満

32ビット

1MB〜4MB未満
64ビット

4MB〜16MB未満

DSP/その他

16MB以上ITRON仕様
その他
使っていない有効回答数：352

ITRON仕様
その他
使っていない有効回答数：352

中の一つであるエンジン制御システムについて紹介する．また，自動車内のネットワークについても紹介する．
自動車は，身近なシステムであり，前に述べた組み込みシステムに特徴的な性質を備えている．

1.5.1 自動車内の組み込みシステムの特徴
1 台の自動車の中に使われているコンピュータ（または，マイクロプロセッサ）の数は年々増加しており，最近の自動車では 20 個〜 70 個にもなる．これらの多くが相互に接続されており，一種の分散システムを構成している．
自動車は，一つの機械・機器に例外的に多くのコンピュータが使われている例であるが，その理由として，自動車内の配線ケーブル（業界用語ではワイヤハーネスと呼ばれる）の重量の削減が大きな課題となっていることが挙げられる．
自動車にコンピュータを用いる目的としては，省エネルギや低排気ガスに対する要求にこたえるために，より精密な制御が必要となっていることに加えて，安全性や利便性・快適性を上げることによって製品の付加価値を高めること，コンピュータによる制御でセンサなどのハードウェアを置き換えてコストダウンを図ることが挙げられる．
自動車に使われている数多くのコンピュータシステムを分類すると，たとえば次のように分類することができる．
パワートレイン系（または駆動系）
シャシー系（または走行系）
ボディ系
情報・エンターテイメント系
これらのシステムごとに，システムに求められる要件は異なり，自動車内だけでも組み込みシステムの多様性を見ることができる．たとえば，走行系のシステム（例，ブレーキ制御システム）と，エンターテイメント系のシステム（例，カーオーディオ）では，信頼性要件が大きく異なることはいうまでもない．以下に挙げる特徴は，自動車内の多くの組み込みシステムに共通する特性である．
1）製造個数が多く，部品のコストを下げることが重視される．そのため，リソース制約が厳しい．
2）動作温度範囲が広く，ノイズの多い環境で動作しなければならないなど，環境条件が厳しい．このことも，厳しいリソース制約につながる．
3）誤動作が人命にかかわる場合もあるため，極めて高い信頼性が求められる．
4）高速に動作する機械を制御するため，高いリアルタイム性が求められる．

1.5.2 エンジン制御システム
自動車の中に使われる制御用のコンピュータユニットは，自動車業界では ECU（Electronic Control Unit）と呼ばれている．エンジン制御システムはパワートレイン系の中心となるシステムで，自動車を制御するためのシステムとしては，規模の大きいものである．メーカーにもよるが，最近では 32 ビットプロセッサが使われ始めてお13

り，メモリや I/O ポートまで一つのチップに集積した 1 チップマイコンが使われている場合が多い．また，ECU
内には，1 チップマイコンに加えて，センサやアクチュエータを接続するための A-D 変換回路などが実装されている．このコンピュータユニットが，エンジンルームや助手席の足元などに置かれている．
エンジン制御システムの働きは，スロットル開度やクランクの回転角，吸気温や排気中の酸素濃度などを計測する各種のセンサからのデータを元に，燃料の噴射量や点火タイミングなどを計算し，アクチュエータに出力することである．これらの処理を，各気筒に対して 1 サイクル
（4 サイクルエンジンでは 2 回転）
ごとに繰り返して行う．
エンジン制御システムの特性としては，高速に回転するエンジンを精密に制御するために，短い応答時間（方式にもよるが，ソフトウェアレベルで 100 μ s オーダ）が求められることと，排ガス規制や省エネルギに対する要求をクリアするために制御が複雑化しており，ソフトウェアが大規模化していることが挙げられる．最近では，ソフトウェアの大規模化に伴って，ソフトウェアの開発や保守を容易にするために，リアルタイム OS が使われるよ
うになってきている．
エンジン制御システムの場合，制御に失敗すると，エンジンが停止したり故障したりする場合もあるため，高い信頼性が求められるのはいうまでもない．また，燃料の噴射量や点火タイミングの計算は，それぞれのタイミ
ングに間に合わなければ全く意味がなく，厳密なリアルタイム性が求められる．
ただし，計算が間に合わない場合に前回の計算結果を用いても，制御の精度は若干下がるが直ちにエンジンが停止するわけではない．そのため，すべての処理のリアルタイム性を厳格に守らなければならないわけではない．

1.5.3 自動車内のネットワークシステム
前に述べたとおり，自動車内のコンピュータの多くは相互に接続されて，一種の分散システムを構成している．
従来は，この接続にはシリアル通信が使われることが多かったが，最近では車載ネットワーク（車載 LAN）の適用が進みつつある．
車載ネットワークに求められる要件も，システムごとの特性によって異なる．たとえば，走行系のシステムを接続するネットワークは，高い信頼性と高速の応答性が求められるが，データ量は少ない．それに対して，情報系のネットワークは，データ量が多くなる．
そのため自動車内には，求められる要件に応じて，異なる規格に基づいた複数のネットワークが敷設される．
また，複数のネットワーク間でデータを中継するゲートウェイが必要になる．たとえば，次のようなネットワー
クが敷設されることになる．
ボディ系のネットワーク
パワートレイン系・シャシー系のネットワーク
情報系のネットワーク
以上で見てきた自動車の事例は，組み込みシステムが応用に専用化して設計された結果，システム構築に多様な技術が使われる典型的な例となっている．車載ネットワークで見たように，1 台の自動車の中にも複数の規格のネットワークが使われる．これは，パソコン用の LAN が，Ethernet ベースのものに収束しつつあるのと対照的である．また，自動車内の各コンピュータシステムには，4 ビットから 32 ビットまで多様なプロセッサが用いられ
るし，OS もシステムごとに最適なものが選定される（OS を使っていないシステムも多い）．

1.6

組み込みソフトウェア開発の最近の動向

最近，組み込みシステムの制御対象となる機器が高機能化・複合化・ディジタル化・ネットワーク化していることに対応して，システム自身も（ハードウェア的にもソフトウェア的にも）大規模化・複雑化している．多くの技術者が必要となっているにもかかわらず，教育体制の問題もあって，十分なスキルをもった組み込みシステム
技術者の数は不足している．
それに加えて，time-to-market の短縮（つまり，開発期間の短縮）や，開発コストの削減に対する要求も厳しい．
これらの要因が，システムの品質や信頼性の低下につながっていることが危惧され，組み込みシステム開発は危

14

第1章

組み込みシステム概論

機的な状況にあるということができる．
大規模・複雑化したシステムを短い期間で開発するためには，既存の設計資産やソフトウェアの再利用を進める以外に方法がないのが現状である．ここでいう再利用には，他社で開発された設計資産やソフトウェアの導入も含まれる．これを，組み込みソフトウェア開発のオープン化（または水平分業）と呼ぶ．また，既存のソフトウ
ェア部品を組み合わせてシステムを設計する手法を，コンポーネントベース設計と呼ぶ．
従来の組み込みシステム開発においては，機器メーカーがすべてのソフトウェアを自社開発することで，機器の品質や信頼性を確保するという考え方がとられてきた．システムを構成するすべてのソフトウェアを自社開発することで，何らかの障害があった場合にも，障害の原因を確実に突き止め，それを取り除くことができる．
また，システムの振る舞いが予想できるため，予期できない要因により時間制約が満たせなくなるといった障害を最小限にできる．ところが，他社で開発されたソフトウェアの導入により，このような従来からの考え方が取れなくなる．この面からも，システムの品質や信頼性の確保が困難になっている．
大規模な組み込みシステムにおいては，OS を用いるのが以前より当然であったが，最近では個人向けの機器などコストダウン要求が厳しいシステムにまで，OS が利用されるようになってきた．その背景には，他社で開発されたソフトウェア部品（特に，ネットワーク接続のためのソフトウェア部品）をシステムに組み込む際に，既存のシステムとソフトウェア部品の共存のために OS が必要となるケースが多い．

1.7

ITRON 仕様と他の RTOS

それぞれの機器メーカーが（場合によっては OS も含めて）すべてのソフトウェアを自社開発する従来の開発形態
では，各メーカーが用いる OS を標準化する必要性は低く，図 1.5 にも示したように，多くの種類の OS が使われているのが現状である．
それに対して，既存のソフトウェア資産の再利用を進めるためには，ソフトウェア開発のベースとなる OS の標
準化が不可欠となる．組み込みシステム向けのリアルタイム OS を標準化しようという試みはいくつか行われているが，その中で最も成功しているのが ITRON 仕様である．1.4 節でも述べたとおり，国内で開発されている組み
込みシステムの約 4 割に ITRON 仕様に準拠した OS が用いられているが，ソフトウェア資産の再利用の必要性か
ら，この比率は大きくなる傾向にある．
ITRON 仕様は，トロンプロジェクトの一環として標準化された，組み込みシステム向けのリアルタイム OS のAPI
（Application Program Interface）の標準仕様である．1984 年に検討が開始され，現時点までに 4 世代にわたる
ITRON 仕様が標準化され，公表されている（図 1.8）．
ITRON 仕様は，多様な組み込みシステムに広く適用できるように，「弱い標準化」のコンセプトに基づいて標準化されている．「弱い標準化」とは，OS のもつ機能やその仕様を厳密に標準化するのではなく，アプリケーシ〔図 1.8〕ITRON 仕様の歴史
保護機能の追加

32ビットMPU向け

/PX
1.0

ITRON2ITRON1
最初のITRON
カーネル仕様

1984

1987

4年

2年

μITRON
3.0

6年

μITRON
4.0

μITRON2［ver.2］
8ビット/16ビット
MCU向け

スケーラビリティ
の強化

1989

1993

8〜10年？

互換性の強化
1999

2002

15

ョンからの要求やハードウェアの性質に合わせて最適化する余地を残すアプローチである．このアプローチにより ITRON 仕様は，8 ビットから 64 ビットの各規模のプロセッサに適用でき（図 1.6 参照），組み込みシステムのあらゆる分野で広く使われている．
一方で，ITRON 仕様の OS 上で動作するように開発されたソフトウェアのポータビリティは犠牲になる面があるが，それよりもソフトウェア技術者の教育面を重視して標準化が行われてきた．
最新のμ ITRON4.0 仕様では，ソフトウェア資産の再利用が重視されるようになってきたことに対応して，標準化の度合いを強くしたプロファイル規定が盛り込まれている．さらに最近では，ソフトウェアの大規模化・複雑化に対応するために，µITRON4.0 仕様に対して保護機能を追加するための仕様（ µITRON4.0/PX 仕様）も標準化されている．また，ITRON 仕様に関連して，ソフトウェア部品の API 仕様や，デバッグ環境とのインターフェー
ス仕様の標準化も行われている．
組み込みシステム用の OS に関するもう一つの傾向として，汎用システム向けに開発された OS を，組み込みシ
ステム分野の要求に合致するように改造して（または，そのままで），組み込みシステムに適用しようという動きがある．典型的な例としては，Windows をベースとして組み込みシステム向けにリアルタイム性が強化された
Windows CE や Windows Embedded と，Linux を組み込みシステム向けに改造した OS（組み込み Linux と総称される）が挙げられる．

16