この記事のほとんどまたは全てが唯一の出典にのみ基づいています。他の出典の追加も行い、記事の正確性・中立性・信頼性の向上にご協力ください。
出典検索?: "インサーキット・エミュレータ"
インサーキット・エミュレータ(英語:in-circuit emulator、略称:ICE)はデジタル機器の開発装置の1つである。 CPUとも呼ばれるマイクロプロセッサの機能をエミュレートするハードウェアを主体としており、実際のマイクロプロセッサと同じ機能を実装し、さらにブレーク・ポイントといったプログラムの実行途中で一時停止するといったデバッグ機能を操作するためのソフトウェアと組み合わされた装置である。ソフトウェアデバッガでは実時間での処理が行えないので、デジタル機器類での組み込みシステムやBIOSといった入出力動作を確認する必要がある開発環境で使用される。ICE(アイス)と呼ばれることが多い。 "In-Circuit Emulator"は、米インテル社の登録商標である[1]。 基本的には、本来のCPUを外したCPUソケットにICEのプローブを接続する形態をとり、外部でCPUの動作を行いながら主要な信号の変化を追うことが可能である。CPUは多様なデジタル機器に実装されるがICEをCPUソケットにつなぐために、最終製品が動作する環境でデバッグが可能となる[2]。さらに指定したメモリアドレスへのアクセスのような特定条件でのブレークやプログラムが暴走した時に強制ブレークをかけるなどの強力なデバッグ機能を持ち、ハードウェアの動作検証用にテストプログラムを実行するなど、ソフトウェア開発だけでなくハードウェア開発においても用いられる。多くがPCと接続されて操作される。 ICEは、CPU上のプログラムの実行、停止(ブレーク)以外にも、次のような機能を持つ[3]。 CPUが持っているレジスタ (コンピュータ)の値を表示し、デバッグの状況に応じて任意の値に変更することができる。表示、変更可能なレジスタは、汎用レジスタ以外にも、SoC毎に定義されるペリフェラルレジスタも含まれる。CPUレジスタ以外にもFPUレジスタも操作可能なICEもある。 CPUに接続されるメモリの値を表示し、デバッグの状況に応じて任意の値に変更することができる。MMU(メモリ管理ユニット)実装のCPUでは、プログラムから見た論理アドレスによる操作の他、実際のメモリアドレスとなる物理アドレスでの操作も可能である。物理アドレスによるメモリ操作は、主にペリフェラルレジスタの操作に用いられる。メインメモリの他にもキャッシュ内の値を操作するような機能を持つICEもある[4]。メモリ操作はアドレス指定により行うことも可能であるが、実際は変数名などのソースコードに準じた名称で行われる。 ICEでは、CPUのプログラム実行を停止させる場所をブレークポイントと呼び、強制ブレークの他にブレークポイントを指定してブレークさせることが可能である。プログラムの任意の命令でブレークさせる機能はソフトウェアデバッガにも存在するが、ICEはハードウェアによりブレークを実現するため、様々なブレークポイントを指定することが可能になる。ICEには以下のようなブレークがある。 機械語の1命令、もしくは、ソースコードの1行のみを実行して即ブレークする。ソースコードの1行をステップ実行する場合は、関数呼び出しを1行として関数から戻った時点でブレークする方式と、関数に入ってブレークする方式がある。またICEによっては、ブレークした時点から逆戻るステップ実行も可能である[5]。
概要
ICEの基本形態と動作
ICEの基本機能
レジスタの表示、変更
メモリ内容の表示、変更
ブレークポイント
実行前ブレーク(指定された命令を実行する前にブレークが発生する。ソフトウェアデバッガのブレークポイントと同等)
実行後ブレーク(指定された命令を実行した後にブレークが発生する)
メモリ操作によるブレーク(指定したアドレスをデータアクセスした時にブレークが発生する)
カウントブレーク(または、カウンタブルブレーク。上記のブレーク発生条件が指定された回数発生した時点でブレークが発生する)
トレース終了ブレーク(下記、プログラムトレースが終了した時点でブレークが発生する)
ステップ実行
Size:25 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef