開発プロセスとクロス開発環境、そしてOSのことH8で学ぶマイコン開発入門(3)(1/3 ページ)

組み込みソフトウェアの開発環境を整える前に、まず開発の手順や一般アプリ開発との違い、そしてOSは何をしているのかを解説しておこう。

» 2006年11月14日 00時00分 公開

 前回「組み込みソフトウェア開発はC言語が主流だ」では、開発言語としてのC言語について解説しました。C言語に限らずプログラミング言語は通常、人間の言葉を用いてテキスト形式で記述します。しかしマイコンは、テキストデータを直接理解できません。このためテキスト形式のプログラムは、マイコンが実行できる言葉=機械語(バイナリ)に変換する必要があります。この作業をコンパイル=変換または翻訳と呼びます。

 C言語のプログラムを機械語に変換するソフトウェアはCコンパイラ、PL/Mの場合はPL/Mコンパイラ、アセンブリ言語の場合はアセンブラです。コンパイルされたプログラムは別のツールによって最終的にROM化され、組み込みシステムが完成します。今回は、プログラムをROM化するまでに必要なクロス開発環境について取り上げます。

⇒ 連載バックナンバーはこちら

組み込みシステムの開発プロセス

 クロス開発環境の解説に入る前に、組み込みシステムの開発プロセスについて簡単に解説します。実際はさまざまな開発手法がありますが、組み込みシステム開発プロセスを単純化すると、図1のようになります。

組み込みシステムの開発プロセス 図1 組み込みシステムの開発プロセス

 組み込みシステム開発で最初に行うことは仕様検討です。仕様には、外部仕様と内部仕様の2種類があります。

 外部仕様とは、ユーザーの立場からシステムに対して要求される仕様です。例えば、「『電源』と印字されたボタンを押すとシステムが起動し、0.5秒以内にLCDに『ようこそ』の文字を出力すること」とユーザー(あるいはクライアント)が要求したとします。これはシステムに対してユーザーが要求する機能であり、これを外部仕様あるいは機能仕様と呼びます。

 開発する側は、ユーザーからの機能仕様を実現するために、マイコンの選定やハードウェアおよびソフトウェアの機能を含めて仕様を検討します。このときの仕様を、内部仕様あるいは設計仕様と呼びます。

 内部仕様は外部仕様を実現するための仕様ですから、先の例の場合、「マイコンは、それほど高機能でなくとも大丈夫だ。開発を楽にするためにはOSが必要だな。しかし0.5秒以内にシステムを起動するためにはLinuxでは厳しいな。ではITRONはどうだ? ITRONは起動は早いがいままでに使った経験がないから実装は難しいかも。ではWindows CEではどうだ? その場合のランタイムはどうする? いっそのことOSなしで開発してみてはどうだろう?」など、開発現場ではさまざまな議論がなされ、最善の方法を選択していきます。

 仕様検討が終わると、ハードウェアとソフトウェアの役割分担を決めます。例えばシステムにプッシュスイッチが100個あるとします。このときスイッチのチャタリング(図2)を検出して、スイッチが定常状態になったかどうかを決定するためにハードウェアを使うと、スイッチの数だけ回路が必要になります。これでは回路の規模が大きくなり、実装面積やコスト面から考えても全体的に無駄です。

チャタリング 図2 チャタリング。チャタリングとはスイッチがON/OFFに切り替わる直後、何度か信号がHighとLowを繰り返すこと。このため、信号を誤って検出してしまう可能性がある

 この場合、ソフトウェアを使って定常状態を検出すると、1種類の関数だけでスイッチの状態が判定できます。つまり、スイッチのチャタリングを検出するためには、ソフトウェアで機能を実装した方が有利です。

 逆に、コストを犠牲にしてもソフトウェアよりハードウェアで実現した方がよい例もあります。例えば、3D画像の高速処理を要求するシステムの場合、それをソフトウェアで実現することは非常に困難です。この場合、多少コストがかかっても画像処理用のプロセッサをメインCPUとは別に用意し、それぞれのハードウェアが役割分担しながら全体の処理を行うようにします。

 このようにシステム全体を見渡して、ハードウェアとソフトウェアの役割分担を明確にし、最も効率的に外部仕様を実現できる見通しを立てた後、ハードウェア部門とソフトウェア部門に分かれ、それぞれの機能を設計および実装します。

コラム:ハードウェアとソフトウェアのトレードオフ
システムの性格によっては、ハードウェアを使えばよいのか、それともソフトウェアで実現すればよいのかで悩む場合もあります。例えば、浮動小数点演算を多用するシステムの場合、浮動小数点演算用のコプロセッサを搭載すれば高速処理(μsecのオーダー)が実現できますが、コストがかかります。逆に浮動小数点演算用ライブラリ、つまりソフトウェアを使って計算すればコストは下がりますが、実行速度は低下(msecのオーダー)します。この場合にハードウェアとソフトウェアのどちらを選択するかは、ケースバイケースのため決定的な基準はありません。


 ソフトウェア部門ではコーディングを行い、モジュールごとに単体テストを行います。すべてのモジュールが単体で動作したなら、これらを統合して結合テストを行います。ハードウェア部門でも同様の作業を行い、各部門での問題点が解決した後、ハードウェアとソフトウェアのすべてを組み合わせて、システム全体のテストを行います。すべてのテストが無事終了したなら製品化を行い、出荷が開始します。

コラム:組み込みシステムにおけるソフトウェアの重要性
人間が作ったモノには完ぺきなモノはありません。そこで製品出荷後の保守が発生します。経済産業省の「2006年版組込みソフトウェア産業実態調査 報告書」によると、組み込みソフトウェア技術者の合計は約19万3000人と推定され、組み込み関連技術者全体の62%を占めています(図3)。さらに製品出荷後の不具合の割合はソフトウェアが約半数を占めています(図4)。これからいえることは、ソフトウェアの品質を高めれば、組み込みシステム全体の質は向上することが分かります。
組み込みソフトウェア技術者の割合 図3 組み込みソフトウェア技術者の割合(出典:経済産業省2006年版組込みソフトウェア産業実態調査 報告書)

製品出荷後の不具合の割合 図4 製品出荷後の不具合の割合(出典:経済産業省2006年版組込みソフトウェア産業実態調査 報告書)



       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.