マイコン&FPGA開発の流れと開発ツール ―― 組み込みシステム開発の基礎知識(後編)
tag: 組み込み 半導体 ディジタル・デザイン
技術解説 2010年4月26日
6.デバッグ/テストとマイコン開発ツール
デバッグ/テストの工程では主に,デバッガやシミュレータ,エミュレータを使用します.
ターゲット・ボードが使用できる場合は,エミュレータをターゲット・ボードとパソコンに接続して行います.しかし,ターゲット・ボードを使用できない場合は,写真4のように評価ボードをターゲット・ボードの代わりとして,エミュレータに接続して行います.
写真4 評価ボードを使用したデバッグ
エミュレータをターゲット・ボードとパソコンに接続してデバッグを行う.
また,ターゲット・ボードの代わりとして,対象マイコンの機能や周辺機能などをパソコン上のソフトウェアで実現したシミュレータを使用する場合もあります.
●シミュレータ
シミュレータは,ターゲット・ボードや評価ボードなどのハードウェア環境が使用できないときに有効なツールです.開発環境であるパソコンだけでデバッグができます.また,ハードウェア環境では実現させにくい特殊な状況を作り出すことも可能です.
ただし,当然実際のハードウェア環境とは異なるため,あくまでも補助的な役割のツールといえます.シミュレータだけでデバッグやテストが完了することはありません.
シミュレータは,コンパイラや統合開発環境の一部として提供されるのが一般的です.また,ルネサス エレクトロニクス(旧NECエレクトロニクス)の「SM850」や「SM78K0」などのように,単体で提供されることもあります.
多くのシミュレータは,マイコンが内蔵するCPU機能と周辺機能の動作を模擬するだけです.しかし最近では,システム全体のアルゴリズムをシミュレーションできるMathWorks社の「MATLAB/Simlink」と連携する機能を持つものも増えてきています.
●エミュレータ
エミュレータは,対象マイコンの機能をハードウェアで模倣(エミュレート)したツールです.エミュレートの方法の違いにより,表2のような種類があります.
表2 エミュレータの種類
(1)インサーキット・エミュレータ
インサーキット・エミュレータは,対象マイコンの機能をまったく別のハードウェアでエミュレートした「フルアイスICE」と呼ばれるものと,マイコンの評価用チップを使用しているものがあります.
インサーキット・エミュレータには,ルネサス エレクトロニクス(旧ルネサス テクノロジ)の「E200F」や,同社(旧NECエレクトロニクス)の「IECUBE」,富士通マイクロエレクトロニクスの「エバリュエーションツール」などがあります.
(2)オンチップ・エミュレータ
オンチップ・エミュレータは,インサーキット・エミュレータのように別のハードウェアや評価用チップを使わずに,対象のマイコンそのものを使用する方式です.マイコンを実際に動作させてデバッグの情報を収集します.情報の収集方法やマイコンとのインターフェースの違いによって,いくつかの種類があります.
オンチップ・エミュレータは実際のマイコンから収集できるデバッグ情報しか入手できません.これに対しインサーキット・エミュレータは,デバッグ専用のさまざまな機能が追加され,機能が充実しています.しかし,インサーキット・エミュレータは高価で,特定のCPUにしか対応していません.その点,オンチップ・エミュレータは低価格で,複数のCPUにも対応しています.対象のマイコンを実際に動作させるので,インサーキット・エミュレータよりも,実際の動作環境に近い状況でデバッグ/テストができます.
(3)JTAGエミュレータ
最近では,価格が安く,使い方が容易で,同じシリーズのマイコンで共通に使用できる「JTAG」という標準規格のポートを利用した「JTAGエミュレータ」と呼ばれるオンチップ・エミュレータが主流になっています.
JTAGエミュレータとしては,ドイツLauterbach社の「TRACE32-ICD」やソフィアシステムズの「EJ-SCATT」などがあります.
複数のエミュレータが選択できる場合は,価格や機能などを考慮して,目的に合ったものを選択する必要があります.大規模開発などでは,それぞれの特性を生かして,ソフトウェアのデバッグ/テストにはインサーキット・エミュレータを使用し,システム全体のテストにオンチップ・エミュレータを使用することもあります.
● デバッガ
デバッガは,シミュレータやエミュレータとセットで使用されるソフトウェア・ツールです.シミュレータやエミュレータに指示や情報を送り,その結果などを受け取り,表示します.
デバッガは,デバッグ/テストで一番重要なツールで,このデバッガの機能の違いや使い易さが開発効率や品質に大きく影響します.
そのため,デバッガの一般的な機能であるブレークポイントの設定,ステップ実行,レジスタやメモリ(RAM,ROM領域)の表示,書き換え,ソフトウェア実行速度の測定などの機能のほかに,各社からさまざまな機能が用意されたデバッガが提供されています.
統合開発環境では,各ツール間の情報のやり取りに必要な設定などの負担が軽減され,障害がある箇所の発見も容易になっていますし,ユーザ・インターフェースも,GUIベースで視覚的にもイメージしやすく工夫されているため,テスト/デバッグの作業がしやすくなっています.
また,単純に機能が多いデバッガを選択すると,価格の問題だけでなく,必要のない機能の理解や操作が必要になる場合や,設定ミスによるトラブルが発生する確率も高くなる場合があります.そのため,デバッガを選択するときには,テスト/デバッグの目的や開発の規模,ソフトウェア,システムに要求される機能や性能を考慮して選択する必要があります.
● スタブとテスト・ドライバ
ソフトウェアは複数のモジュールで構成されています.またモジュールは,複数の関数(サブルーチン)で構成されています.
各モジュール間や各関数間には依存関係があります.このため,モジュールや関数を単体でテストするときには,依存関係のあるほかのモジュールや関数を用意する必要があります.用意できない場合は,代用品を使います.この代用のモジュールや関数が,「スタブ」や「テスト・ドライバ」です(図14).
図14 テスト・ドライバとスタブ
自身が呼び出す代用品が「スタブ」,自身を呼び出す代用品が「テスト・ドライバ」である.
スタブとテスト・ドライバの例をリスト3に示します.スタブは,呼び出されたテスト対象のモジュールや関数に対して,テストの目的に合わせた値を返します.テスト・ドライバは,テストの目的に合わせた値を設定してテスト対象のモジュールや関数に渡す処理だけをするのが一般的です.
リスト3 スタブとテスト・ドライバの例(*クリックすると拡大します)
スタブやテスト・ドライバの数が多くなると,これらの作成,テストに要する時間やスタブ,テストドライバ自体のバグによるトラブルの解決に要する時間などが負担になることがあります.スタブやテスト・ドライバを自動生成するツールを利用すれば,負担を軽減できます.