(57)【要約】【課題】トレース条件設定回路による回路の複雑化やトレースメモリの物理的規模の拡大を抑えてソースプログラムの関数ＩＤ又はＯＳによって管理されるタスクの処理順序を把握すること。【解決手段】トレース制御中、マイクロコンピュータ（２）が実行するオブジェクトプログラムの命令アドレスに対応するソースプログラムの関数ＩＤが変化したとき、変化した関数ＩＤをトレースメモリ（５）に格納するように制御する。また、ＯＳの管理の下でマイクロコンピュータが処理するタスクのタスクＩＤを監視し、タスクＩＤが変化したとき、変化したタスクＩＤをトレースメモリに格納するように制御する。これにより、変化した関数ＩＤ又はタスクＩＤがトレースメモリに逐次格納されるため、トレース結果からマイクロコンピュータが実行したソースプログラムの関数ＩＤの処理順序又はマイクロコンピュータが実行したタスクＩＤの処理順序を容易に把握することができる。【選択図】図１
2009009201.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトプログラムを実行するマイクロコンピュータと、
前記マイクロコンピュータが入出力する情報を受けるエミュレーションバスと、
前記エミュレーションバスに出現した情報に基づいてトレースメモリに情報を格納する制御を行うトレース制御部とを有するデバッグ装置であって、
前記トレース制御部は、前記マイクロコンピュータが実行するオブジェクトプログラムの命令の命令アドレスに対応するソースプログラムの関数を識別可能に付与した番号である関数ＩＤが変化したとき、前記変化した関数ＩＤを前記トレースメモリに格納する関数ＩＤトレースモードを有するデバッグ装置。
【請求項２】
オブジェクトプログラムを実行するマイクロコンピュータと、
前記マイクロコンピュータが入出力する情報を受けるエミュレーションバスと、
前記エミュレーションバスに出現した情報に基づいてトレースメモリに情報を格納する制御を行うトレース制御部とを有するデバッグ装置であって、
前記トレース制御部は、
前記マイクロコンピュータが実行するオブジェクトプログラムの命令の命令アドレスと当該命令アドレスに対応するソースプログラムの関数ＩＤとを格納可能とする記憶回路と、
命令フェッチサイクル毎に前記命令アドレスに対応する前記関数ＩＤを前記記憶回路から読み出す読出制御回路と、
前記読出制御回路によって新たに読み出された関数ＩＤがその直前に読み出された関数ＩＤと相違するとき、前記新たに読み出された関数ＩＤを前記トレースメモリに格納する書込み制御回路とを有するデバッグ装置。
【請求項３】
前記記憶回路は、ホスト装置によって、前記命令アドレスと前記命令アドレスに対応する関数ＩＤが初期的に書込まれる請求項２記載のデバッグ装置。
【請求項４】
前記読出制御回路は、前記マイクロコンピュータによるバスアクセス状態に従って、前記エミュレーションバスに出力される命令フェッチ信号に基づいて命令フェッチサイクルを検出する請求項２又は３記載のデバッグ装置。
【請求項５】
書込み制御回路は、前記記憶回路から順次出力される関数ＩＤを保持する直列２段のシフトレジスタと、前記シフトレジスタにおける前段と後段のレジスタに夫々保持された前記関数ＩＤを比較する比較回路と、比較回路による比較結果が相違したとき前記前段レジスタに保持された前記関数ＩＤを前記トレースメモリに格納する書込み回路とを有する請求項２乃至４の何れか１項に記載のデバッグ装置。
【請求項６】
オペレーティングシステムによるタスクの管理の下でオブジェクトプログラムを実行するマイクロコンピュータと、
前記マイクロコンピュータが入出力する情報を受けるエミュレーションバスと、
前記エミュレーションバスに現れた情報に基づいてトレースメモリに情報を格納する制御を行うトレース制御部とを有するデバッグ装置であって、
前記トレース制御部は、前記オペレーティングシステムの管理の下で前記マイクロコンピュータが処理するタスクのタスクＩＤを監視し、前記タスクＩＤが変化したとき、前記変化したタスクＩＤを前記トレースメモリに格納するデバッグ装置。
【請求項７】
前記トレース制御部は、前記マイクロコンピュータが処理するタスクのタスクＩＤ格納用記憶領域のアドレスが設定可能にされるアドレスレジスタを有し、前記アドレスレジスタのアドレスに対応する書込みアクセスで前記エミュレーションバスに現れるデータをタスクＩＤとして認識する請求項６記載のデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行順序を把握するために用いるトレース制御システムに関し、例えばエミュレータ等に適用して有効な技術に関する。
【背景技術】
【０００２】
ソースプログラムをコンパイルしたオブジェクトプログラムをマイクロコンピュータが実行してバス上に入出力する情報をトレースメモリに格納するトレース制御は一般的に行われている。トレースメモリには、バス上に現れた情報に基づいてトレースカウンタ、データ条件やアドレス条件等の情報が格納される。また、トレース条件を設定することにより、任意の情報をトレースメモリに格納することができる。例えば、特許文献１に記載されたトレース制御システムは、情報処理装置と、トレース条件設定部と、トレースポイント設定部と、予め設定されたトレースポイントを検出するトレースポイント検出手段とを設け、トレースポイントを検出したときにトレース制御を行うようになっている。
【０００３】
【特許文献１】特開平０６−４３６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
トレース制御によって得られたトレース結果から、マイクロコンピュータが実行したオブジェクトプログラムの命令アドレスに対応するソースプログラムの関数の処理順序を把握するためには、例えば関数の先頭命令アドレスをトレース条件としてトレースすることができる。トレース条件として設定した先頭命令アドレスから始まる関数を処理しているとき、割り込み等を処理すると、マイクロコンピュータによる処理が別の関数に係る処理として変化され、トレース結果からは最早当該別の関数が処理されたことを把握することはできない。これを回避するには、全ての関数の先頭命令アドレスをトレースすれば良いが、設定できるトレース条件の数は高々１０数個であり、実現的ではない。また、全ての命令アドレスを順次トレースしても良いが、トレースメモリの記憶容量は有限であり、トレースされる情報には限りがある。
【０００５】
また、オペレーティングシステム（以下ＯＳと略す）が管理するタスクＩＤについても上記同様の事情がある。すなわち、割り込み等を考慮したときに全てのタスクＩＤをトレース条件にしようとすれば、トレース条件設定回路による回路の複雑化やトレースメモリの物理的規模の拡大に繋がってしまい、実現性に欠ける。
【０００６】
本発明の目的は、トレース条件設定回路による回路の複雑化やトレースメモリの物理的規模の拡大を抑えてソースプログラムの関数ＩＤの処理順序を把握することができる。
【０００７】
本発明の別の目的は、トレース条件設定回路による回路の複雑化やトレースメモリの物理的規模の拡大を抑えて、ＯＳによって管理されるタスクの処理順序を把握することができる。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、トレース制御中、マイクロコンピュータが実行するオブジェクトプログラムの命令アドレスに対応するソースプログラムの関数ＩＤが変化したとき、変化した関数ＩＤをトレースメモリに格納するように制御する。また、ＯＳの管理の下でマイクロコンピュータが処理するタスクのタスクＩＤを監視し、タスクＩＤが変化したとき、変化したタスクＩＤをトレースメモリに格納するように制御する。
【００１１】
これにより、変化した関数ＩＤ又はタスクＩＤがトレースメモリに逐次格納されるため、トレース結果からマイクロコンピュータが実行したソースプログラムの関数ＩＤの処理順序又はマイクロコンピュータが実行したタスクＩＤの処理順序を容易に把握することができる。
【発明の効果】
【００１２】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１３】
すなわち、トレース条件設定回路による回路の複雑化やトレースメモリの物理的規模の拡大を抑えてソースプログラムの関数の処理順序を把握することができる。
【００１４】
また、トレース条件設定回路による回路の複雑化やトレースメモリの物理的規模の拡大を抑えて、ＯＳによって管理されるタスクの処理順序を把握することができる。
【発明を実施するための最良の形態】
【００１５】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１６】
〔１〕本発明の代表的な実施の形態に係るデバッグ装置（１）は、マイクロコンピュータ（２）と、エミュレーションバス（３）と、トレース制御部（４）とを有するものである。前記トレース制御部は、前記エミュレーションバス上に現れた情報に基づいてトレースメモリ（５）に情報を格納する制御を行う。また、前記トレース制御部は、前記マイクロコンピュータが実行するオブジェクトプログラムの命令の命令アドレスに対応するソースプログラムの関数を識別可能に付与した番号である関数ＩＤが変化したとき、変化した当該関数ＩＤを前記トレースメモリに格納する関数ＩＤトレースモードを有する。上記関数ＩＤトレースモードによってトレース制御を行えば、変化した関数ＩＤが前記トレースメモリに格納される。従って、トレース制御されたトレース結果から、前記マイクロコンピュータが実行した前記命令アドレスに対応するソースプログラムの関数ＩＤの処理順序を把握することができる。
【００１７】
具体的な一つの形態として、前記トレース制御部は、前記命令アドレスと当該命令アドレスに対応するソースプログラムの関数ＩＤとを格納する記憶回路（６）と、命令フェッチサイクル毎に前記命令アドレスに対応する前記関数ＩＤを前記記憶回路から読み出す読出制御回路（７）とを有する。更に、前記読出制御回路によって新たに読み出された関数ＩＤがその直前に読み出された関数ＩＤと相違するとき、前記新たに読み出された関数ＩＤを前記トレースメモリに格納する書込み制御回路（８）を有する。従って、簡単な構成によって上記同様の作用を得ることができる。
【００１８】
具体的な一つの形態として、前記記憶回路は、ホスト装置（９）によって前記命令アドレスと前記命令アドレスに対応する関数ＩＤが初期的に書込まれる。従って、エミュレーション実行範囲に応じた情報をプログラマブルに書込み可能であるから、前記記憶回路の記憶容量は然程大きくなくても済む。
【００１９】
別の具体的な形態として、前記読出制御回路は前記マイクロコンピュータによるバスアクセス状態に従って、前記エミュレーションバスに出力される命令フェッチ信号に基づいて命令フェッチサイクルを検出する。これによれば、命令フェッチサイクルの検出を比較的簡単に実現することができる。
【００２０】
別の具体的な形態として、前記書込み制御回路は、前記記憶回路から順次出力される関数ＩＤを保持する直列２段のシフトレジスタ（１０）と、前記シフトレジスタにおける前段（１１）と後段（１２）のレジスタに夫々保持された前記関数ＩＤを比較する比較回路（１３）と、前記比較回路による比較結果が相違したとき前記前段レジスタに保持された前記関数ＩＤを前記トレースメモリに格納する書込み回路（１４）とを有する。これによれば、変化した前記関数ＩＤの判別を比較的簡単に実現することができる。
【００２１】
別の具体的な形態として、本発明に係る別のデバッグ装置（２０）は、マイクロコンピュータ（２１）と、エミュレーションバスと、トレース制御部（２２）とを有し、前記トレース制御部は前記エミュレーションバス上に現れた情報に基づいてトレースメモリ（２３）に情報を格納する制御を行う。また、前記トレース制御部は、ＯＳの管理の下で前記マイクロコンピュータが処理するタスクのタスクＩＤを監視する。更に、前記トレース制御部は、前記タスクＩＤが変化したとき、変化した前記タスクＩＤを前記トレースメモリに格納する制御を行う。これによれば、変化した前記タスクＩＤが前記トレースメモリに格納される。従って、トレース制御されたトレース結果から、ＯＳの管理の下で前記マイクロコンピュータが実行した前記タスクＩＤの処理順序を把握することができる。
【００２２】
別の具体的な形態として、前記トレース制御部は、前記マイクロコンピュータが処理する前記タスクＩＤ格納用記憶領域のアドレスが設定可能にされるアドレスレジスタ（２４）を有し、前記アドレスレジスタのアドレスに対応する書込みアクセスで前記エミュレーションバスに現れるデータをタスクＩＤとして認識する。これによれば、前記エミュレーションバスに現れる情報から前記タスクＩＤを比較的簡単に識別することができる。
【００２３】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２４】
図１には本発明に係るデバッグ装置の一例であるエミュレータ（ＥＭＬ）１の構成が示される。同図には、前記エミュレータ１とホスト装置（ＨＳＴ）９とターゲットシステム（ＴＧＴＳＹＳ）１５とが示される。
【００２５】
前記エミュレータ１は、エミュレーション用のマイクロコンピュータ（ＥＭＰ）２、エミュレーション制御部（ＥＭＣＮＴ）１６、モードレジスタ（ＭＯＤＲＥＧ）１７、トレース制御部（ＴＲＣＮＴ）４及びトレースメモリ（ＴＲＭＥＭ）５を有する。前記マイクロコンピュータＥＭＰ２は前記ターゲットシステム１５に備えられたマイクロコンピュータと同等の機能を示す。前記マイクロコンピュータ２は、例えばケーブルによって前記ターゲットシステム１５と接続され、前記ターゲットシステム１５の機能を代行制御する。また、前記ターゲットシステム１５の代行制御によって、前記マイクロコンピュータ２と前記ターゲットシステム１５との間で交わされる情報はエミュレーションバス（ＥＢＵＳ）３に供給される。前記エミュレーションバス３は、前記マイクロコンピュータ２がアクセスする命令やデータのアドレス（Ａｄｄｒ）を伝達するアドレスバス（ＡＢＵＳ）、データ（Ｄａｔ）や命令（Ｉｓｔ）を伝達するデータバス（ＤＢＵＳ）及びステータス信号（Ｓｔｕｓ）やストローブ信号等が伝達されるコントロールバスを有する。
【００２６】
前記エミュレーション制御部１６は、前記ホスト装置９の制御に基づいて、前記マイクロコンピュータ２に前記代行制御用のオブジェクトプログラムを実行させる制御を行う。前記オブジェクトプログラムは、前記ターゲットシステム１５を本来制御するターゲットマイクロコンピュータに実行させるための開発中のプログラムを意味する。前記オブジェクトプログラムは、高級言語で記述されたソースプログラムをコンパイルすることによって得られたプログラムである。エミュレーション用の前記マイクロコンピュータは少なくともターゲットマイクロコンピュータの機能を包含する。
【００２７】
前記モードレジスタ１７には、前記ホスト装置９よって、ホストバス（ＨＢＵＳ）１８を介して、前記エミュレーションバス３上に現れた情報に基づいて前記トレースメモリ５に情報を格納する動作モードが設定される。その一部の動作モードとして、前記オブジェクトプログラムの命令の命令アドレスＡｄｄｒ＿Ｉに対応するソースプログラムの関数ＩＤが変化したとき、変化した前記関数ＩＤを前記トレースメモリに格納する関数ＩＤトレースモードが設定される。
【００２８】
前記トレース制御部４は、前記モードレジスタ１７の設定内容に従って前記トレースメモリ５に情報を格納する制御を行う。上記関数ＩＤトレースモードが設定されると、前記トレース制御部４は、前記エミュレーションバス３に現れた前記命令アドレスＡｄｄｒ＿Ｉに対応する前記関数ＩＤが変化したとき、変化した前記関数ＩＤを前記トレースメモリ５に順次格納する制御を行う。
【００２９】
以下、前記関数ＩＤトレースモードによる処理内容について記述する。前記トレース制御部４は、記憶回路（ＩＤＭＥＭ）６と読出制御回路（ＲＣＮＴ）７と書込み制御回路（ＷＣＮＴ）８を有する。前記記憶回路６には、前記ホスト装置９の制御によって、エミュレーションを実行しようとする範囲内の命令アドレスと前記命令アドレスに対応する前記関数ＩＤとがプログラマブルに初期的に書込まれる。例えば、図２に示されるようにソースプログラムをコンパイルしたオブジェクトプログラムの命令の命令アドレスＡｄｄｒ＿Ｉと前記命令アドレスＡｄｄｒ＿Ｉに対応するソースプログラムの関数ＩＤ（Ｆ＿ＩＤ）とが前記ホスト装置９によって書込まれる。尚、ここでの関数ＩＤとは、ソースプログラムの夫々の関数を識別可能に付与した番号等である。
【００３０】
前記読出制御回路７は、前記マイクロコンピュータ２によって前記エミュレーションバス３上に出力されるステータス信号Ｓｔｕｓと命令フェッチ信号（Ｉｓｔｆ）に基づいて命令フェッチサイクル（Ｉｓｔｆｃｙｃ）の起動を発生するか否かを判別する。命令フェッチサイクルの起動を検出すると、前記読出制御回路７によって前記記憶回路６から前記関数ＩＤが読み出される。前記命令フェッチサイクルの起動の検出は、命令フェッチ信号Ｉｓｔｆから検出する。
【００３１】
前記書込み制御回路８はシフトレジスタ（ＳＲＥＧ）１０と比較回路（ＣＯＭＰ）１３と書込み回路（ＮＴ）１４とを有する。前記シフトレジスタ１０は直列接続された前段のレジスタ（ＳＲＥＧ１）１１と後段のレジスタ（ＳＲＥＧ２）１２を有し、前記シフトレジスタ１０の入力端子には前記記憶回路６から出力された関数ＩＤが供給され、供給される毎に保存している関数ＩＤを前記後段のレジスタ１２に送っていくように動作される。
【００３２】
前記比較回路１３は、前記記憶回路６の読み出し動作毎に、前記シフトレジスタ１０の前段のレジスタ１１と後段のレジスタ１２に保持された関数ＩＤが相違するか否かを比較する。
【００３３】
前記書込み回路１４は、前記比較回路１３によって前記関数ＩＤが相違したとき、前記前段のレジスタ１１に保持されている関数ＩＤを前記トレースメモリ５に順次格納する制御を行う。これによって、変化した関数ＩＤが前記トレースメモリ５に格納される。
【００３４】
図３には、前記関数ＩＤトレースモードによるトレース制御において、エミュレーション用の前記マイクロコンピュータ２と前記トレース制御部４の動作の一例であるタイミングチャートが示される。ここでは、図２に示される情報を前記記憶回路６に格納して用いることにする。図２ではソースプログラムにおける３個の関数に着目し、当該関数の関数ＩＤ（“０ｈ”、“１ｈ”、“２ｈ”）と、これに対応するオブジェクトプログラムの命令の命令アドレスＡｄｄｒ＿Ｉが対になって前記記憶回路６に格納されている。前記読出制御回路７は、命令アドレスに指定されるようなトレース開始条件を認識すると、前記関数ＩＤトレースモードによってトレース制御動作を開始し、その動作はエミュレーション用の前記マイクロコンピュータ２と同様にクロック信号（ＣＬＫ）に同期される。エミュレーション制御中の時刻ｔ０に、前記マイクロコンピュータ２は命令アドレスＡｄｄｒ＿Ｉ“００１０００ｈ”をターゲットシステム１５に出力し、命令フェッチサイクルを起動する。前記マイクロコンピュータ２の動作状態はステータス信号Ｓｔｕｓに反映され、このステータス信号Ｓｔｕｓと前記命令アドレスＡｄｄｒ＿Ｉ“００１０００ｈ”は前記エミュレーションバス３に供給される。このとき、ステータス信号Ｓｔｕｓは命令フェッチサイクルのコードＩｓｔｆｃｙｃを示す。前記読出制御回路７は、前記エミュレーションバス３上に現れたステータス信号Ｓｔｕｓと命令フェッチ信号Ｉｓｔｆに基づいて命令フェッチサイクルを検出すると、前記記憶回路６から前記エミュレーションバス３上の前記命令アドレスＡｄｄｒ＿Ｉ“００１０００ｈ”に対応するソースプログラムの関数ＩＤ“１ｈ”を出力して、前記前段のレジスタ１１にラッチさせ、元々前記前段のレジスタ１１に格納されていたデータが前記後段のレジスタ１２にラッチされる。ここでの説明では、エミュレーション用の前記マイクロコンピュータ２は時刻ｔ０の直前に関数ＩＤ“０ｈ”の命令を実行していたものとする。そのため、元々前記前段のレジスタ１１に格納されていた値は“０ｈ”とされており、その値は前記後段のレジスタ１２に転送される。上記ラッチ動作が行われた時刻ｔ１からｔ２までのサイクルにおいて、前記比較回路１３は前記前段のレジスタ１１と前記後段のレジスタ１２の関数ＩＤ値を比較する。この場合、前記前段と後段のシフトレジスタにラッチされた関数ＩＤが相違するため、関数ＩＤ検出信号（ＦＩＤ）がハイレベルに変化される。この変化を受ける前記書込み回路１４は前記前段のレジスタ１１にラッチされている関数ＩＤ“１ｈ”を前記トレースメモリ５に格納する。このように、前記関数ＩＤトレースモードにおけるトレース制御では、前記エミュレーションバス３上の情報に基づいて命令フェッチサイクルを検出すると、その次のクロックサイクルで、前記読出制御回路７によって読み出された関数ＩＤに変化があるかを判別すると共に、変化する場合には当該変化した関数ＩＤを前記トレースメモリ５に書込む制御を行う。時刻ｔ１からｔ２のサイクルと時刻ｔ２からｔ３のサイクルにおいても命令アドレスＡｄｄｒ＿Ｉ“００１００２ｈ”と“００１００４ｈ”の命令フェッチサイクルが起動されるから、上記時刻ｔ０からｔ１のサイクルと同様に前記読出制御回路７は前記記憶回路６から対応する関数ＩＤを読み出して、比較動作を実行させるが、それら命令アドレスに対応する命令は関数ＩＤ“１ｈ”の処理とされる。このため、前記関数ＩＤ検出信号ＦＩＤは時刻ｔ４までローレベルにされる。時刻ｔ３からｔ４におけるアドレスＡｄｄｒ“ＦＦ１０００ｈ”ではデータサイクルが起動される。従って、前記読出制御回路７による前記記憶回路６からの読み出しと前記比較回路１３による比較動作は行われないから、時刻ｔ５まで前記関数ＩＤ検出信号ＦＩＤはローレベルにされる。時刻ｔ４からｔ５のサイクルでは、命令アドレスＡｄｄｒ＿Ｉ“００１００６ｈ”の命令フェッチサイクルが起動されるため、上記時刻ｔ０からｔ１のサイクルおける処理と同様の処理が行われ、前記読出制御回路７は前記記憶回路６から対応する関数ＩＤ“２ｈ”を読み出して、前記比較回路１３によって比較動作が実行される。前記前段と後段のレジスタにラッチされた関数ＩＤが異なるため、前記比較動作により前記関数ＩＤ検出信号ＦＩＤはハイレベルに変化される。これによって、前記書込み回路１４は前記前段のレジスタ１１にラッチされた関数ＩＤ“２ｈ”を前記トレースメモリ５に格納する。
【００３５】
前記関数ＩＤトレースモードによるトレース制御によれば、変化したときの関数ＩＤが“１ｈ”、“２ｈ”の順序で前記トレースメモリ５に格納される。従って、トレース結果から前記マイクロコンピュータ２が実行したソースプログラムの関数ＩＤの順序を把握することができる。
【００３６】
図４には、前記関数ＩＤトレースモードによるトレース制御中に、割り込みが要求されたときの説明図である。前記マイクロコンピュータ２が関数ＩＤ“０ｈ”の処理に対応する命令を最初に実行すると、前述のように前記前段と後段のレジスタにラッチされた関数ＩＤ値を比較して、相違する前記前段のレジスタ１１にラッチされた前記関数ＩＤ“０ｈ”が前記トレースメモリ５に格納される。前記マイクロコンピュータ２が前記関数ＩＤ“０ｈ”の処理に対応する命令を実行しているとき、命令実行動作と非同期で割り込み要求がなされると、前記関数ＩＤ“０ｈ”の処理に対応する命令の実行を中断して関数ＩＤ“１ｈ”の処理に対応する命令の処理に移る。このとき、前述のように相違する前記前段のレジスタ１１にラッチされた関数ＩＤ“１ｈ”が前記トレースメモリ５に格納される。更に、前記関数ＩＤ“１ｈ”の処理に対応する命令を実行しているとき、上記同様に命令実行動作と非同期で割り込み要求がなされると、前記マイクロコンピュータ２が実行している処理を中断して、関数ＩＤ“２ｈ”の処理に対応する命令が実行され、前述のように相違する前記前段のレジスタ１１にラッチされた関数ＩＤ“２ｈ”が前記トレースメモリ５に格納される。前記マイクロコンピュータ２による前記関数ＩＤ“２ｈ”の処理に対応する命令の実行処理が完了すると、前記マイクロコンピュータ２は前記関数ＩＤ“１ｈ”の処理に対応する残りの命令の実行に復帰する。このとき、前記前段と後段のレジスタにラッチされる関数ＩＤ値が相違するため、前記トレースメモリ５には前記前段のレジスタ１１にラッチされた関数ＩＤ“１ｈ”が格納される。また、前記マイクロコンピュータ２による前記関数ＩＤ“１ｈ”の処理に対応する命令の実行処理が完了すると、前記マイクロコンピュータ２は上記同様に前記関数ＩＤ“０ｈ”の処理に対応する残りの命令の実行に復帰し、前記トレースメモリ５には関数ＩＤ“０ｈ”が格納される。
【００３７】
従って、前記トレースメモリ５に格納された結果から、前記マイクロコンピュータ２が実行したソースプログラムの関数ＩＤの順序は、“０ｈ”“１ｈ”“２ｈ”“１ｈ”“０ｈ”となり、前記関数ＩＤの順序を容易に把握することができ、割り込みが要求されたときにも対応できる。
【００３８】
ソースプログラムの全ての関数をトレース条件とする従来までのトレース制御において、割り込みが要求されたとき、前記マイクロコンピュータ２が実行する関数の処理順を把握するには、多くの情報を処理するための複雑なトレース条件設定回路やトレースメモリの記憶容量の拡大が必要とされる。そこで、本発明の前記関数ＩＤトレースモードによれば、トレース条件設定回路による回路の複雑化やトレースメモリの物理的規模の拡大を抑制して処理することができる。
【００３９】
図５には、前記関数ＩＤトレースモードによるトレース制御の説明図である。前記マイクロコンピュータ２によって、関数ＩＤ“０ｈ”のソースプログラムの関数に対応する命令が実行さると、前述のように前記前段のレジスタ１１にラッチされた前記関数ＩＤ“０ｈ”が前記トレースメモリ５に格納される。前記関数ＩＤ“０ｈ”の関数に対応する命令の実行処理が完了すると、前記マイクロコンピュータ２は次の前記関数ＩＤ“１ｈ”の関数に対応する命令を実行し、前記トレースメモリ５には前記関数ＩＤ“１ｈ”が格納される。また、上記同様に前記関数ＩＤ“１ｈ”の関数に対応する命令の処理が完了すると、その次の前記関数ＩＤ“２ｈ”の関数に対応する命令を実行し、前記トレースメモリ５には前記関数ＩＤ“２ｈ”が格納される。
【００４０】
従って、前記マイクロコンピュータ２によってソースプログラムの関数ＩＤが処理された順序は、トレース結果から“０ｈ”“１ｈ”“２ｈ”となる。
【００４１】
図６には本発明に係るデバッグ装置の別の例であるエミュレータ（ＥＭＬ）２０の構成が示される。この例では、本来ターゲットシステム２８に搭載されるべきターゲットマイクロコンピュータはもとよりエミュレーション用のマイクロコンピュータ２１もＯＳの管理の下でユーザプログラムを実行する。ここでは、ユーザプログラムがデバッグ対象のプログラムとされる。ユーザプログラムはエミュレーション用の前記マイクロコンピュータ２１にとって一つのオブジェクトプログラムとなる。エミュレーション用の前記マイクロコンピュータ２１はユーザプログラムによる処理を行うとき、ＯＳの管理の下でその処理をタスク単位で実行していく。このとき、ＯＳはタスクに固有のタスクＩＤ（Ｔ＿ＩＤ）を付与してタスクの実行を管理する。エミュレーション用の前記マイクロコンピュータ２１には実行可能にされるタスクのタスクＩＤが格納されるタスクＩＤレジスタ（ＴＲＥＧ）２５を有する。タスクＩＤレジスタ（ＴＲＥＧ）２５は、エミュレーション用の前記マイクロコンピュータ２１の内蔵RAM領域に配置されていてもよい。タスクの処理順を把握するには、前記タスクＩＤレジスタ２５に格納されたタスクＩＤの遷移を調べればよい。このエミュレータにおいては、前記タスクＩＤレジスタ２５のタスクＩＤをトレース可能にするタスクＩＤトレースモードを有する。
【００４２】
上記タスクＩＤトレースモードは、ホスト装置９によってモードレジスタ２６に設定される。上記タスクＩＤトレースモードが設定されると、前記トレース制御部２２は、前記マイクロコンピュータ２１が処理するタスクのタスクＩＤを監視し、前記タスクＩＤが変化したとき、変化した前記タスクＩＤを前記トレースメモリ２３に順次格納する制御を行う。
【００４３】
前記トレース制御部２２は、タスクＩＤ制御回路（ＴＩＣＮＴ）２７と書込み制御回路（ＷＣＮＴ）８を有する。前記タスクＩＤ制御回路２７は、タスクＩＤレジスタ２５のマッピングアドレスが設定可能にされるアドレスレジスタ（ＡＲＥＧ）２４を有する。前記タスクＩＤ制御回路２７は、前記アドレスレジスタ２４が保持するアドレスに対する書込みアクセスを検出すると、前記エミュレーションバス３上に現れる情報をタスクＩＤとして認識し、前記タスクＩＤを前記前段のレジスタ１１に供給する制御を行う。
【００４４】
前記書込み制御回路８は、前記タスクＩＤ制御回路２７によってタスクＩＤが前記前段のレジスタ１１に供給されると、元々前記前段のレジスタ１１に格納されていたタスクＩＤが後段のレジスタ１２にシフトされ、図１で説明した動作と同様に比較動作が行われる。前記比較動作によって、前記前段と後段のレジスタにラッチされたタスクＩＤの相違が判別されるとタスクＩＤ検出信号（ＴＩＤ）がハイレベルにされる。前記タスクＩＤ検出信号がハイレベルにされると、前記書込み回路１４は前記前段のレジスタ１１に保持されている前記タスクＩＤを前記トレースメモリ２３に格納する制御を行う。前記タスクＩＤ検出信号ＴＩＤがローレベルのときは、前記書込み回路による書込み制御は行われない。
【００４５】
この他の構成は図１で説明した構成要素と同じであり、それに同一参照符号を付与して詳細な説明を省略する。
【００４６】
上記エミュレータ２０によれば変化したタスクＩＤが前記トレースメモリ２３に格納されるから、ホスト装置が前記トレースメモリを参照することにより、そのトレース結果から前記マイクロコンピュータ２１によるタスクの実行順序を把握することができる。
【００４７】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００４８】
本発明のトレース結果の表示形態については特に説明していないが、通信インターフェースケーブル等を介してパソコンやディスプレイ等の表示機器にＧＵＩを利用して表示させても良い。また、本発明は上記で説明したターゲットシステムに接続してエミュレーションを行うエミュレータに限定されず、例えば、ターゲットシステムをシミュレーション結果で代用する場合のプログラムデバッグ等にも適用することができる。
【図面の簡単な説明】
【００４９】
【図１】本発明に係るデバッグ装置の一例であるエミュレータの構成図である。
【図２】記憶回路に保持される命令アドレスとその命令アドレスに対応する関数ＩＤを示した概略図である。
【図３】エミュレーション用のマイクロコンピュータ及びトレースメモリ制御部におけるトレース制御中の動作の一部を例示したタイミングチャートである。
【図４】関数ＩＤトレースモードによるトレース制御中に、割り込みが要求されたときの説明図である。
【図５】関数ＩＤトレースモードによるトレース制御の説明図である。
【図６】本発明に係るデバッグ装置の一例である別のエミュレータの構成図である。
【符号の説明】
【００５０】
１  エミュレータ
２  エミュレーション用のマイクロコンピュータ
３  エミュレーションバス
４  トレース制御部
５  トレースメモリ
６  記憶回路
７  読出制御回路
８  書込み制御回路
９  ホスト装置
１０  シフトレジスタ
１１  前段のレジスタ
１２  後段のレジスタ
１３  比較回路
１４  書込み回路
１５  ターゲットシステム
１６  エミュレーション制御部
１７  モードレジスタ
１８  ホストバス
２０  エミュレータ
２１  エミュレーション用のマイクロコンピュータ
２２  トレース制御部
２３  トレースメモリ
２４  アドレスレジスタ
２５  タスクＩＤレジスタ
２６  モードレジスタ
２７  タスクＩＤ制御回路
２８  ターゲットシステム
【図１】
2009009201.tif 000003
【図２】
2009009201.tif 000004
【図３】
2009009201.tif 000005
【図４】
2009009201.tif 000006
【図５】
2009009201.tif 000007
【図６】
2009009201.tif 000008