【問題4】クロス開発と開発支援機器“組み込み力”向上! ETEC対策ドリル Step2(4)

今回は、クロス開発の概要と組み込みシステム開発に用いる開発支援機器について詳しく解説する

» 2010年10月29日 00時00分 公開
[近森満(株式会社サートプロ 代表取締役社長/JASA ETEC運営事務局),@IT MONOist]

 前回の課題演習―【問題4】は、組み込みソフトウェアのテストやデバッグに用いる「ICE(In-Circuit Emulator)」に関する問題でした。

 組み込みシステムでは、開発環境と実行環境が異なる「クロス開発」という方法でソフトウェア開発を行います。

 今回は、問題の解答に続いて、「クロス開発の概要」と「組み込みシステム開発に用いる開発支援機器」について解説します。この機会にしっかりと理解しておきましょう。

 それでは、解答を発表します!


課題演習―【問題4】の解答

 解答は、「イ.MPUの機能をエミュレートし、デバッグ機能を備えた開発支援機器」です。ICEは組み込みシステムのMPUをエミュレートする開発支援機器です。デバッグ機能を備えていますが、コンパイル機能は備えていません。ソフトウェアのコンパイルはクロスコンパイラを使って行います。

セルフ開発とクロス開発

 例えば、Windows上で動作するアプリケーションであれば、Windows上に開発環境を用意して開発を行います。このようにソフトウェアの実行環境と開発環境が同じ場合を「セルフ開発(またはオウン開発)」といいます。

 組み込みシステムの場合、実際にソフトウェアを動作させる環境でソフトウェア開発を行うことはまずありません。組み込みシステムのハードウェアがそもそもキーボードやディスプレイを備えていなかったり、メモリやハードディスクなどの容量に制限があって開発用のソフトウェアを動かせなかったりするためです。

 そのため、組み込みソフトウェアはPC上で開発し、後述するICEなどの開発支援機器を用いて実行環境(組み込みシステムのハードウェア)にプログラムを転送し、実行します。このように開発環境と実行環境が異なる開発方法を「クロス開発」といいます。

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

 クロス開発では、「クロスコンパイラ」を用います。クロスコンパイラはソースコードをコンパイルして実行環境用のオブジェクトファイルを出力します。このオブジェクトファイルと実行環境用のライブラリをリンクして、実行環境で動作するロードモジュールを作成します。なお、セルフ開発で用いるコンパイラを「セルフコンパイラ(またはオウンコンパイラ)」といいます。

クロス開発で用いるエミュレータ

 クロス開発では、プログラムを開発環境から実行環境に転送して実行するために「エミュレータ」という開発支援機器を用います。

 ICEは、実行環境のMPUと同じ機能をエミュレートする開発支援機器です。実行環境では、MPUを外してICEのプローブを接続します。ICEは、このプローブ経由でハードウェア上のバスと信号をやりとりしてハードウェアを制御します。開発環境からは、ブレークポイント、シングルステップ実行、メモリのトレースといったICEのデバッグ機能を利用してテストやデバッグを行うことができます。

 ICEは、MPUの機能をエミュレート、つまり模倣する機器であるため、非常に高価です。組み込みシステムで独自にMPUを開発する場合には、同時にICEを開発するケースもあります。しかし、MPUが高度化・複雑化するにつれ、ICEの購入や開発に掛かるコストが大きな負担になってきました。MPUチップ自体も小さくなり、取り外し可能にしてICEのプローブを取り付けることも難しくなりました。そこで、代わりに用いられるようになったのが安価な「JTAG ICE」です。

 JTAG(Joint Test Action Group)とは、本来はMPUの検査方式の1つであるバウンダリスキャンテストの規格(IEEE 1149.1)、または規格化を行った業界団体のことです。JTAGに準拠したMPUは、JTAG端子を備えており、その端子を利用するエミュレータがJTAG ICEです。JTAG ICEが広く使われるようになると、従来のICEは「フルICE」と呼ばれるようになりました。JTAG ICEは、フルICEに比べるとはるかに汎用性が高く、安価です。

 また、「ROMエミュレータ」という開発支援機器もあります。ROMエミュレータは、組み込みシステムに搭載するROMの代わりに取り付けて動作する機器です。開発環境からROMエミュレータに内蔵しているRAMにプログラムを転送して実行します。デバッグ用のプログラムをROMエミュレータに送って動作確認を行うことも可能です。

※コラム1:エミュレータとシミュレータ
エミュレータとシミュレータはどこが違うのでしょうか。
emulateは、「模倣する」という意味です。つまり、装置や機器の機能・動作を模倣するハードウェアやソフトウェアをエミュレータといいます。
一方、simulateは、「〜のふりをする」「模擬実験をする」という意味です。シミュレータは、装置や機器の機能・動作の結果を模倣するハードウェアやソフトウェアを指します。


入出力確認用の測定機器

 組み込みシステムのテストでは、ソフトウェアがハードウェアを適切に制御しているかどうかを確認するために、システムの回路に流れる電流や電圧、電気信号などを測定するための機器を利用します。

機器 説明
テスタ 電圧、電流、電気抵抗の測定に用いる。電流を測定する際には赤のテストピンを回路のプラス側に、黒のテストピンを回路のマイナス側に当てる。電気抵抗を測定する際には、2本のテストピンを接触させてショートさせ、指針が0Ωを指すように調整する。電圧、電流、電気抵抗の測定レンジを切り替えられるものもある
オシロスコープ 電圧がどのように変化するかを測定する。測定用のプローブをオシロスコープのBNCコネクタに接続し、プローブの先端を回路に当てると、画面の横軸を時間、縦軸を電圧として時間の経過による電気信号の変化が波形として表示される。電気信号の振幅、信号の立ち上がりや立ち下がりにかかる時間、ノイズの有無などを確認できる
ロジックアナライザ 電圧がHレベルまたはLレベルのいずれかに変化する様子を表示する。一度に複数の回路の信号を測定したり、複数ビットで構成されるアドレスやデータをまとめて表示したりすることが可能
表1 組み込みシステムのテストで用いる測定機器

※コラム2:周波数の求め方
補足として、オシロスコープで測定した波形から周波数を求める方法を説明します。
波形の周波数は、波形の1周期にかかる時間の逆数として計算します。波形の1周期とは、波形の一番高いところから次に同じ高さのところに到達するまでの幅を進む時間のことです。例えば、波形のHレベルの幅が25μs、Lレベルの幅が15μsであれば、1周期は40μsです。従って、この波形の周波数は40μsの逆数、25kHzとなります(計算式:図2右を参照)。
周波数の求め方 図2 周波数の求め方


課題演習―【問題5】

 いかがでしたでしょうか? クロス開発と開発支援機器について理解できましたか。次回は「ソフトウェア開発モデル」について説明します。お楽しみに! (次回に続く)


【 筆者紹介 】
近森 満(ちかもり みつる)
株式会社サートプロ 代表取締役社長

大手電気メーカー、外資系IT教育ベンダ、オープンソース系技術者資格認定団体などを経て、2006年より組み込みシステム分野の人材育成・教育支援を行う株式会社サートプロを設立する。現在は、ETEC運営事務局としてJASAの組込みソフトウェア技術者試験の普及・啓蒙(けいもう)活動のほか、組み込み人材育成と教育支援事業を行う。


Copyright © ITmedia, Inc. All Rights Reserved.