ニュース
» 2015年10月20日 07時00分 公開

組み込み機器開発入門(4):「組み込みソフトウェア」の重要性をPC向けとの対比で理解する (2/3)

[EIPC事務局,MONOist]

組み込みソフトウェアの構成

 一般的なPCのソフトウェアは、ドライバ、オペレーティングシステム(OS)、ミドルウェア、アプリケーションで構成されます。リッチOSといわれるWindowsやLinuxなどが搭載されることが多く、ドライバやミドルウェアもメーカーなどから提供されています。

 一方、組み込みソフトウェアもドライバ、OS、ミドルウェア、アプリケーションで構成されますが、特定用途に特化しているため、PC上のソフトウェアとは構成も大きく異なる場合があります。OSを搭載しないことも珍しくありません。

 OSの存在はプログラム開発では便利なのですが、OSを動かすためのCPUパワーやストレージ、メモリなどの高スペックなハードウェアが必要です。組み込みソフトウェアは限定した機能を果たすことが目的ですので、ソフトウェアも必要な要素だけで構成されます。市場価格にマッチした製品を作るためには、ソフトウェア構成も重要な要素となるのです。

「Windows 8.1」 リッチOSの1つ「Windows 8.1」。組み込み機器ではリソースの関係からリッチOSを利用しないことが多い

組み込みソフトウェアの開発範囲

 ソフトウェア構成が異なるため、ソフトウェアの開発範囲もPC向けの開発とは大きな違いが出てきます。汎用的に作られているPCを利用してソフトウェア開発を行う場合には、ドライバ、OS、ミドルウェアはそのまま利用でき、必要なアプリケーションを開発するだけで利用できます。

 一方、組み込み機器は目的に特化したオリジナルのハードウェアで構成される機器ですので、そこに搭載される組み込みソフトウェアもオリジナルなソフトウェアで構成されることになります。

 組み込みソフトウェアの開発では、ハードウェアを制御するためのドライバを開発することは当たり前です。OSを搭載しない場合、独自のアプリケーションを開発して、直接、ハードウェアを制御することもあります。ドライバ、OS、ミドルウェアが提供されても、機器に必要な機能に合せてカスタマイズが必要だったり、機能に合せてオリジナルソフトウェアとして新たに開発する必要が生じるのです。

組み込みソフトウェアの開発環境

 Windows PC上でのソフトウェア開発でよく使われる開発環境は、Visual C++やVisual Studio .NETなどの統合開発環境(IDE)ではないでしょうか。これらの開発環境でのソフトウェア開発では、プログラム開発・設計の手順は以下のような流れとなります。

  • (1)プロジェクトを開始し、main関数からプログラムを作成する。
  • (2)プログラムを記述し終えたらコンパイルを実行し、プログラム開発言語の文法に基づいてエラーを修正する。
  • (3)1行単位でデバッグを実行し、プログラムが期待通りに動くかを確認する。
  • (4)デバッグ情報を外し、本番用のプログラムを作成する。

 このように1つの開発環境下で、シームレスにソフトウェアを開発することができます。それでは組み込み機器のソフトウェア開発の場合はどうでしょうか。組み込み機器開発においても最近はIDEが提供されており、利用することで一連の流れを1つの開発環境でシームレスに行う事ができるケースが増えています。ただし、大きな違いもあります。

 PCでPC向けのソフトウェアを開発する場合、PCで動作させるプログラムをPC上で開発/デバッグしますので、動作環境はソフトウェア上で完結し、非常にシンプルです。しかし組み込み機器の場合には、組み込み機器で動作させるプログラムをPC上で開発しますので、組み込み機器にプログラムを組み込んだ後、プログラムを1行ずつ実行するように組み込み機器の制御を行い、演算結果をPCで読み込み表示する、という作業が必要です。

 組み込み機器開発では、組み込み機器の制御と、組み込み機器とPCとの通信を行うための機器として、ICE(In-Circuit Emulator)やJTAG(Joint Test Action Group)を利用して行うクロス環境(開発環境と実行環境が異なる開発方法)が特徴として挙げられます。

クロス開発のイメージ クロス開発のイメージ

Copyright © ITmedia, Inc. All Rights Reserved.