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

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

[山本 繁寿 ソフィアシステムズ,@IT MONOist]

組み込みシステムのソフトウェア開発プロセス

 組み込みシステムの開発プロセスの中からソフトウェア開発の部分を抜き出し、さらに詳しく書くと図5のようになります。


ソフトウェア開発プロセス 図5 ソフトウェア開発プロセス

 第2回で書いたように多くの組み込みプログラムは、英語表現をベースとしたC言語でプログラミングされます。また、レジスタを直接読み書きするなどハードウェアに密着した操作を行う場合は、アセンブリ言語でプログラミングします。

 プログラムソースコードを書く作業をコーディングと呼びます。プログラマは仕様書に沿ってコーディングを行います。このときプログラムの見通しをよくするために、複数のモジュールに分割してコーディングするのが一般的な方法です。

 コーディングは人間が理解できる自然言語で記述するため、そのままではマイコンはプログラムを実行できません。マイコンが理解し実行できる言葉=機械語に変換する第1段階の作業が、コンパイルおよびアセンブルです。Cソースプログラムは、Cコンパイラでコンパイルされます。また、アセンブリソースプログラムは、アセンブラでアセンブルされます。

 コンパイラやアセンブラから出力されたプログラムを、オブジェクトファイルまたはオブジェクトプログラムと呼びます。この段階でオブジェクトファイルはバイナリ形式になっていますが、まだマイコンでは実行できません。また複数のモジュールに分割してソースプログラムを作成した場合は、モジュールの数だけオブジェクトファイルが出力されますので、これらを1つに結合する必要があります。

 そこで第2段階では、コンパイラおよびアセンブラから出力されたオブジェクトファイルを、リンカを使って1つのオブジェクトファイルに結合します。この作業をリンクと呼びます。

 リンクされて1つになったオブジェクトファイルには、絶対アドレスを割り付けます。もしこの段階でプログラムに不具合がなく、要求仕様を満たすならば、ROMライタを使ってオブジェクトファイルをROMに転送し、システムは完成します。

 しかし、コラムにも書いたように、人間が作ったモノに完ぺきなモノはありません。そこでテストとデバッグを行います。テスト中に要求仕様を満たさないことが分かったり、仕様とは違う動作をした場合は、その原因である部分のソースプログラムを修正して、再度コンパイルやアセンブルを行います。そして再びテストとデバッグを行い、問題があれば問題個所を修正するという作業を何度も繰り返して、製品の質を高めていきます。

 以上のソフトウェア開発プロセスで使われるコンパイラやアセンブラ、リンカなどのツールが、クロス開発環境です。次節では、オブジェクトファイルの作成に必要なクロス開発環境について解説します。

クロス開発環境

 クロス開発環境とは、実行環境と開発環境が異なる場合に使われる開発環境です。これでは意味が分からないと思いますので、順を追って説明します。

ネイティブ開発環境

 Windowsアプリケーションプログラムの開発環境としては、マイクロソフト社のVisual C++が有名です。Visual C++は、x86 CPUが搭載されたコンピュータ上で動作します。そしてVisual C++を使って開発したアプリケーションプログラムは、x86 CPUが搭載されたコンピュータで実行されます。つまり、開発環境と実行環境は、同じ種類のCPUが搭載されたコンピュータで動作します。

 このように、開発環境と実行環境が同じ土台で動作することを、ネイティブという言葉で表現します。ちょうど、日本の教育機関(=開発環境)で日本語の教育を受けた人(=アプリケーションプログラム)が日本(=実行環境)で日本語を話すのと同じイメージです。ちなみにネイティブ環境のコンパイラはネイティブコンパイラまたはPCコンパイラとも呼ばれます。

クロス開発環境

 組み込みシステムで使われるマイコンは多種多様です。多岐にわたるマイコン用のプログラムを開発するために、実行環境と開発環境を同じ土台にすることは、あまり現実的ではありません。

 例えばSHマイコンを搭載したパソコンを作ることは可能です。SHマイコン搭載パソコンがあれば、そのパソコン上で動作する開発環境を構築することで、その開発環境から生成されるオブジェクトファイルはSHマイコンを搭載したターゲットシステム上でそのまま動作します。しかし、SHマイコン搭載パソコンが一般向けに販売されるとは到底思えません。そこで考えられたのが、クロス開発環境です。

 クロス開発環境に含まれるコンパイラやアセンブラ、リンカなどの開発ツールは、低価格で気軽に購入できるx86 CPUが搭載されたコンピュータで動作します。これらの開発環境から生成されたオブジェクトファイルは、開発環境とは異なるマイコン上で動作します。先ほどの例でいうと、日本の教育機関(=開発環境)で英語の教育を受けた人(=アプリケーションプログラム)がアメリカ(=実行環境)で英語を話すのと同じイメージです。開発環境と実行環境が交差=クロスしているという意味で、クロス開発環境と呼ばれます。クロス開発環境のコンパイラは別名、組み込みコンパイラとも呼ばれ、通常のコンパイラとは区別されています。

Copyright © ITmedia, Inc. All Rights Reserved.