ソフトウェアの開発環境を知る ―― さまざまなマイコンをサポートするフリー・ツールを使う
tag: 組み込み ディジタル・デザイン
技術解説 2010年2月19日
2.組み込みソフトウェア開発の流れ
組み込みソフトウェアの開発の流れを説明します.図8にソース・コードから実行形式が作成され,実行形式のソフトウェアを組み込んだ製品が完成するまでの流れを示します.
●ソース・コードを用意する
まず,ソース・コードを記述します.
ソース・コードには,機器の動作を記述したアセンブリ・コードや高級言語(C言語など)のコードがあります.また,ツールの動作を指示するスクリプト・ファイルもソース・コードの一種といえます.
ソース・コードは,テキスト・エディタで記述します.図8ではアセンブリ言語コードとC言語コードが用意されている場合を示しています.
●ソース・コードからオブジェクトを生成する
アセンブリ言語で書かれたソース・コードはアセンブラへ,高級言語で書かれたコードはコンパイラへ渡され,機械語に変換します.出力されるのは,ターゲット・プロセッサのみが理解可能なバイナリ・データです.
バイナリ・データを保持するファイルのことをソフトウェア開発の世界ではオブジェクト・ファイルと呼びます.
オブジェクト・ファイルは,業界標準のフォーマットに従って作成されるのが一般的です.このフォーマットはコンパイラやアセンブラが静的に定義しており,開発者が選択することは通常できません.
●オブジェクトを指定のアドレスに配置する
オブジェクト・ファイルが用意できたら,リンクし実行形式を作成します.
オブジェクト・ファイルには,具体的なアドレス情報がありません.例えば,ターゲット・プロセッサが起動時に実行するスタートアップ・ルーチンをどのアドレス(番地)に配置するかは,オブジェクト・ファイルの時点では定義されていません.分岐命令の即値オペランドは,分岐先アドレスが未解決の未完成な命令として格納されています.
そこで,このリンクの段階で具体的な配置情報,つまり,アドレス情報を付加します.分岐命令のオペランドを完成させ,完全な形の命令列とデータ列としてファイルに保存します.
このアドレス配置情報が記述された指示ファイルをリンカ・スクリプトと呼びます.一般的に異なるオブジェクト・ファイル・フォーマット間でのリンクはできません.
●デバッグを行う
実行形式は,デバッガを使ってターゲット・プロセッサにダウンロードします.実行形式に含まれるアドレス情報を元に指定のアドレスにダウンロードします.また,最初に実行するアドレスやデータの初期値などを設定した上で,ターゲット・プロセッサに実行を指示します.
動作の確認や,予想外の動作を調査しやすいように,デバッガにはソフトウェアの実行を任意に停止・再開する機能が含まれています.
デバッグは,図9に示すようにホスト・マシンとターゲット・プロセッサをつないで行います.ターゲット・プロセッサの制御には,二つの方法があります.
一つ目はICEと呼ばれる専用の装置を用いる方法です.ICEとホスト・マシンはUSBやシリアル,パラレルといった汎用の入出力で接続されます.ICEとターゲット・プロセッサはJTAGや専用インターフェースで接続されます.
二つ目は,モニタ・プログラムを使用する方法です.ターゲット・プロセッサが搭載されている機器のUSBやシリアル,パラレルといった汎用の入出力を使ってホスト・マシンと接続します.
●実行形式をROMに書き込む
ソフトウェアのデバッグが完了したら,実行形式をターゲット・システムに搭載するために,ROM化する必要があります.
ROM化に当たっては,バイナリ・ツールを用いて,実行形式ファイル中の命令コード部分やデータ部分を分け,指定のアドレスへと配置するためのファイルを作成します.そしてこれらのファイルを,ターゲット・プロセッサが起動時に読み出すROMへ,ROMライタなどを用いて書き込みます.
ROM化の際によく使われるデータ表現のフォーマットには,Intel HEXフォーマットやMotorola Sフォーマットがあります.
●有償版ツールには制限がない
マイコン向けのソフトウェア開発ツールは,通常ターゲット・プロセッサを提供する半導体メーカが用意しています.
表1に,プロセッサの種類と統合開発環境の例を示します.いずれもこれまで説明してきたツール群が含まれています.さらに,使いやすいGUI画面が用意されているツールもあります.例えば,ボタンを1回クリックするだけで,図8のフローが実行されてしまうツールもあります.
ソフトウェア開発環境には,有償のものと無償のものがあります.ほとんどの統合開発環境には,評価版や無償版が用意されています.無償版では,利用可能期限が決められていたり,コードの最適化が制限されていたり,コードの長さに制限があるのが普通です.有償のツールには,このような制限はありません.