(57)【要約】【課題】データサイクルのアドレスをトレース条件として、トレースされた情報からそのデータサイクルを生成させた命令アドレスを直接特定することができるデバッグ装置を提供する。【解決手段】本発明に係るデバッグ装置（１）は、トレース制御を行うトレース制御部（４）を有する。トレース制御部は、トレース制御中、エミュレーション用データプロセッサ（２）が命令を実行することによって起動されたデータアクセスを検出したとき、命令のアドレスと共に前記データアクセスによるデータをトレースメモリ（５）に格納するように制御する。これにより、トレースメモリにはデータサイクルに対応する所定プログラムの命令のアドレスと共にデータアクセスによるデータとが格納されているため、検証したいデータサイクルを生成させた命令のアドレスを容易に特定することができる。【選択図】図１
2008310508.tif 000002
【特許請求の範囲】
【請求項１】
所定プログラムを実行するデータプロセッサと
前記データプロセッサが入出力する情報を受けるエミュレーション用バスと
前記エミュレーション用バスに現れた情報をトレースメモリに格納する制御を行うトレース制御部とを有するデバッグ装置であって、
前記トレース制御部は、前記データプロセッサが命令を実行することによって起動された所定のデータアクセスを検出したとき、前記命令のアドレスと共に前記データアクセスによるデータを前記トレースメモリに格納する特定のトレースモードを有するデバッグ装置。
【請求項２】
前記トレース制御部は、外部から書き換え可能に設定されたデータによって前記特定のトレースモードが指定されるトレースモードレジスタを有する請求項１記載のデバッグ装置。
【請求項３】
前記トレース制御部は、外部から書き換え可能に設定されたデータによってトレースすべきデータアクセスの条件が指定されるトレース条件設定レジスタを有する請求項１又は２記載のデバッグ装置。
【請求項４】
前記トレース制御部は、少なくとも前記命令のアドレスを前記トレースメモリに格納するタイミングまで保持する命令アドレスレジスタを有する請求項１乃至３の何れか１項に記載のデバッグ装置。
【請求項５】
前記トレース制御部は、データサイクルを伴う命令の解読結果と前記エミュレーション用バス上でのバスサイクルの状態とに基づいて前記命令アドレスレジスタに対する命令の保持を制御する請求項４記載のデバッグ装置。
【請求項６】
前記トレースメモリに格納された情報を表示制御可能とするホスト装置を更に有し、前記ホスト装置は、表示画面上に前記トレース情報と対応するソースプログラムの情報を表示した状態において、ポインティングカーソルで特定された位置の前記トレース情報と対応するソースプログラムの記述とを関連付ける表示制御を行う請求項１乃至５の何れか１項に記載のデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データプロセッサが所定プログラムを実行して出力する情報をトレース制御するデバッグ装置に関し、例えばエミュレータ等に適用して有効な技術に関する。
【背景技術】
【０００２】
本発明完成後の先行技術調査において以下の特許文献を見出した。特許文献１には、エミュレーション中のデータプロセッサによって所定プログラムを実行して出力される情報をトレース制御するトレース制御システムについて記載されている。上記特許文献１に記載されたトレース制御システムは、条件設定レジスタと、データプロセッサと、エミュレーションバス上の信号と条件設定レジスタに設定された条件を比較する比較手段とを設け、設定された条件が一致したときにトレース制御を行うようになっている。
【０００３】
【特許文献１】特開平１１−１０２３０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
トレース制御システムによってデータプロセッサが所定プログラムを実行して出力する情報をトレース制御する場合、データプロセッサが出力するエミュレーションバス上の情報と予め設定されたトレース条件とが一致する情報のトレース制御が行われる。上記特許文献１においても、予め設定されたトレース条件に基づいて、エミュレーションバス上に現れた情報をトレース制御している。トレースメモリには、トレースカウンタ、データ条件、アドレス条件やアクセス条件等のトレース条件に設定された様々なトレース情報が格納される。それらの情報を参照して、必要に応じてプログラムの修正や改良が行われる。例えば、データサイクルのアドレスをトレース条件にしてトレース制御を行った場合、トレースされる情報は、そのアドレスを用いたデータサイクルのデータとされる。しかしながら、そのトレース条件に一致するデータサイクルを生成させる命令のアドレスは全く特定されない。これにより、トレースされたデータからそれに対応する命令のアドレスを直接参照することはできない。対応する命令のアドレスを参照するには、少ないバスサイクル数毎にトレース条件を変えたトレース動作を繰り返さなければならない。従って、アドレスを指定したデータサイクルのトレース結果から対応する命令を効率的に参照することができない。
【０００５】
本発明の目的は、データサイクルのアドレスをトレース条件として、トレースされた情報からそのデータサイクルを生成させた命令アドレスを直接特定することができるデバッグ装置を提供することにある。
【０００６】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００８】
すなわち、本発明に係るデバッグ装置は、エミュレーション用バスに現れた情報をトレースメモリに格納する。トレース制御中、データプロセッサが命令を実行することによって起動されたデータアクセスを検出したとき、命令アドレスと共に前記データアクセスによるデータをトレースメモリに格納するように制御する。
【０００９】
これにより、トレースメモリにはデータサイクルに対応する所定プログラムの命令アドレスと共にデータアクセスによるデータとが格納されているため、検証したいデータサイクルを生成させた命令のアドレスを容易に特定することができる。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、データサイクルのアドレスをトレース条件として、トレースされた情報からそのデータサイクルを生成させた命令アドレスを直接特定することができる。
【発明を実施するための最良の形態】
【００１２】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１３】
〔１〕本発明の代表的な実施の形態に係るデバッグ装置（１）は、データプロセッサ（２）と、エミュレーション用バス（３）と、トレース制御部（４）とを有するものである。前記トレース制御部は、前記エミュレーション用バス上の情報をトレースメモリ（５）に格納するトレース制御を行う。また、前記トレース制御部は、トレース制御中、前記データプロセッサが命令を実行することによって起動されたデータアクセスを検出したとき、前記命令のアドレスと共に前記データアクセスによるデータを前記トレースメモリに格納する特定のトレースモードを有する。これにより、上記特定のトレースモードを指定してトレース制御を行えば、前記命令のアドレスと共に、それに対応する前記データアクセスによるデータとが前記トレースメモリに格納される。従って、トレース制御されたトレース情報に検証したいデータサイクルが存在した場合、そのデータサイクルに対応する命令のアドレスを容易に特定することができる。
【００１４】
具体的な一つの形態として、前記トレース制御部は、外部から書き換え可能に設定されたデータによって前記特定のトレースモードが指定されるトレースモードレジスタ（６）を有する。従って、前記特定のトレースモード又は他のトレースモードを任意に設定することにより、前記エミュレーション用バス上の所要の情報をトレースする動作を制御することができる。
【００１５】
具体的な一つの形態として、前記トレース制御部は、外部から書き換え可能に設定されたデータによってトレースすべきデータアクセスの条件が指定されるトレース条件設定レジスタ（７）を有する。従って、任意にトレース条件を設定することにより、前記特定のトレースモードで前記エミュレーション用バス上の所要の情報をトレース制御することができる。
【００１６】
別の具体的な形態として、前記トレース制御部は少なくとも前記命令のアドレスを前記トレースメモリに格納するタイミングまで保持する命令アドレスレジスタ（８）を有する。従って、トレースされたデータサイクルが生成されたとき、そのデータサイクルを生成させた命令のアドレスが前記エミュレーション用バス上になくても、必要な命令のアドレスをデータサイクルのデータと共に確保することができる。
【００１７】
別の具体的な形態として、前記トレース制御部はデータサイクルを伴う命令の解読結果と前記エミュレーション用バス上でのバスサイクルの状態とに基づいて前記命令アドレスレジスタに対する命令の保持を制御する。これによれば、データサイクルを発生させた命令のアドレスを保持する制御を比較的簡単に実現することができる。
【００１８】
別の具体的な形態として、前記トレースメモリに格納された情報を表示制御可能とするホスト装置（９）を更に有し、前記ホスト装置は、表示画面上に前記トレース情報と対応するソースプログラムの情報を表示した状態において、ポインティングカーソルで特定された位置の前記トレース情報と対応するソースプログラムの記述とを関連付ける表示制御を行う。これによれば、検証したいデータサイクルに対応する前記命令のアドレスの所在が瞬時にわかるようになり、プログラム開発の効率が向上する。
【００１９】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２０】
図１には本発明に係るデバッグ装置の一例であるエミュレータ（ＥＭＬ）１の構成が示される。同図は、前記エミュレータ１とホストシステム（ＨＳＴ）９とターゲットシステム（ＴＧＴＳＹＳ）１０とから構成される。
【００２１】
前記エミュレータ１は、エミュレーション用データプロセッサ（ＥＤＰ）２、エミュレーション制御部（ＥＭＣＮＴ）１１、トレース制御部（ＴＲＣＮＴ）４及びトレースメモリ（ＴＲＭＥＭ）５を有する。前記エミュレーション用データプロセッサ２は前記ターゲットシステム１０に備えられたマイクロプロセッサと同等の機能を示す。前記エミュレーション用データプロセッサ２は、例えばケーブルによって前記ターゲットシステム１０と接続され、前記ターゲットシステム１０の機能を代行制御する。また、前記ターゲットシステム１０の代行制御によって、前記エミュレーション用データプロセッサ２と前記ターゲットシステム１０との間で交わされる情報はエミュレーション用バス（ＥＢＵＳ）３に供給される。前記エミュレーション用バス３は、前記エミュレーション用データプロセッサ２がアクセスする命令やデータのアドレス（Ａｄｄｒ）を伝達するアドレスバス（ＡＢＵＳ）、データ（Ｄａｔ）や命令（Ｉｎｓｔ）を伝達するデータバス（ＤＢＵＳ）及びステータス信号やストローブ信号等が伝達されるバスを有する。
【００２２】
前記エミュレーション制御部１１は、前記ホストシステム９の制御に基づいて、前記エミュレーション用データプロセッサ２に前記代行制御のターゲットプログラムを実行させる制御を行う。前記ターゲットプログラムは、前記ターゲットシステム１０を本来制御するマイクロプロセッサに実行させるための開発中のプログラムを意味する。
【００２３】
前記トレース制御部４は、トレースメモリバス（ＴＢＵＳ）を介して、前記エミュレーション用バス３上に現れた情報を前記トレースメモリ５に格納する制御を行う。前記トレース制御部４は、トレースモードレジスタ（ＴＭＲＥＧ）６とトレース条件設定レジスタ（ＴＣＯＮＤ）７とトレースメモリ制御部（ＴＭＣＮＴ）１２を有する。前記トレースモードレジスタ６は、前記ホストシステム９よって、コントロールバス（ＣＢＵＳ）１３を介して、前記エミュレーション用バス３上に現れた情報を前記トレースメモリ５に格納する動作モードが設定される。また、前記トレース条件設定レジスタ７には、前記ホストシステム９によって、前記コントロールバス１３を介して、トレースすべきアドレスのアドレス条件、データアクセス又は命令アクセスやリード又はライト（以後Ｒ／Ｗと略す）のアクセス条件、トレースすべきデータのデータ条件等が設定される。
【００２４】
前記トレースメモリ制御部１２は、前記エミュレーション用データプロセッサ２が前記ターゲットプログラムを実行中、前記トレース条件設定レジスタ７に設定されたトレース条件が前記エミュレーション用バス３に現れたとき、前記トレースモードレジスタ６に設定された動作モードに従って、前記エミュレーション用バス３の情報を前記トレースメモリ５に格納する制御を行う。
【００２５】
特に、トレース制御部４は、前記エミュレーション用データプロセッサ２が命令を実行することによって起動された所定のデータアクセスを検出したとき、前記命令のアドレスと共に前記データアクセスによるデータを前記トレースメモリ５に格納する特定のトレースモードを有する。上記特定のトレースモードを実現するために、前記トレースメモリ制御部１２は命令アドレスレジスタ（ＣＡＲＥＧ）８を有する。前記命令アドレスレジスタ８はトレース条件に一致するデータアクセスを検出したとき、前記エミュレーション用バス３上に存在しない対応する命令のアドレスを保持するために設けられている。前記命令アドレスレジスタ８に必要な命令アドレスを保持するために、前記トレースメモリ制御部１２は前記エミュレーション用バス３から供給される情報に命令が含まれていることをインストラクションフェッチ信号（Ｉｓｔｆ）で検出したとき、その命令を解読して、データアクセスを伴う命令であるか否かを判定する。
【００２６】
図２には、前記エミュレーション用データプロセッサ２が実行する前記ターゲットプログラムの一部が例示される。例えば、命令アドレス“Ｆ８００４Ｅ”の命令“ＭＯＶ．Ｗ  ＃５５５５Ｈ，Ｐ８Ｄ”に着目すると、この命令は内部レジスタＰ８Ｄが保有するアドレス（例えば“０００３Ｃ６”）の外部メモリ領域にイミディエート値“＃５５５５”をワードライトする命令とされる。また、命令アドレス“Ｆ８００５Ａ”の命令“ＭＯＶ，Ｗ  Ｐ８Ｄ，Ｒ１”は前記内部レジスタＰ８Ｄが保有するアドレス（ここでは“０００３Ｃ６”）の前記外部メモリ領域に格納されているデータを内部汎用レジスタＲ１からワードリードする命令とされる。その他の命令については説明しないが、同図に示されるプログラムはアドレスＦ８００２ＢからアドレスＦ８００５Ｄまでの命令を繰り返し実行するものとされる。尚、アドレス表記は１６進法で示される。
【００２７】
図２のプログラムを実行するときのトレース条件として、例えば、アドレス条件を“０００３Ｃ６”、アクセス条件をデータサイクルと、リード又はライトＲ／Ｗ、データ条件を比較しないとすると、図５に示されるトレース結果が得られる。
【００２８】
図４には、上記トレース条件でトレース制御したときの前記エミュレーション用データプロセッサ２及び前記トレースメモリ制御部１２の動作の一部を例示したタイミングチャートである。前記エミュレーション用データプロセッサ２の動作は、例えばパイプライン方式で処理される。前記パイプライン方式は、命令を読み出すフェッチステージ、フェッチした命令を復号するデコードステージ、デコード結果に基づいて実行する実行ステージ、データアクセスなどを行う各パイプラインステージに分けて命令を実行する方式であり、例えば、複数の異なる命令の相違するパイプラインステージを並列に実行可能とするものである。図４には、図２に示される前記ターゲットプログラムの命令アドレス“Ｆ８００４Ｅ”から“Ｆ８００５Ｄ”が実行されるときの動作を例示する。前記エミュレーション用データプロセッサ２とトレース制御部４は、クロック信号（ＣＬＫ）に同期動作される。エミュレーション動作中の時刻ｔ０に前記エミュレーション用データプロセッサ２は前記アドレスバスＡＢＵＳに命令アドレス“Ｆ８００４Ｅ”を出力して命令フェッチサイクルを起動する。前記エミュレーション用データプロセッサ２によるアクセス動作の状態はステータス信号（Ｓｔｕｓ）に反映され、前記エミュレーション用バス３に出力される。命令フェッチサイクルが起動されたとき、ステータス情報Ｓｔｕｓは命令フェッチサイクルを示すコードになっている。また、命令フェッチサイクルにおいて、前記エミュレーション用データプロセッサ２はインストラクションフェッチ信号Ｉｓｔｆを１クロックサイクル分イネーブルとする。図４において、命令フェッチサイクルは命令のサイズに応じて、例えば３サイクルとされている。第１サイクルは命令に含まれるオペレーションコードのフェッチサイクル、後続のサイクルは命令に含まれるオペランド又はオペランド指定フィールドに対するフェッチサイクルとされる。前記トレースメモリ制御部１２は、ステータス信号Ｓｔｕｓとインストラクションフェッチ信号Ｉｓｔｆに基づいて命令フェッチサイクルの起動を検出すると、それによって前記エミュレーション用バス３上に現れる命令“ＭＯＶ．Ｗ  ＃５５５５，Ｐ８Ｄ”のオペレーションコードの解読を行い、データサイクルを伴う命令か否かを判定する。ここには、判定に２クロックサイクルを要するものとする。データサイクルを伴う命令である場合、前記トレースメモリ制御部１２は対応する命令アドレス“Ｆ８００４Ｅ”を前記命令アドレスレジスタ８に格納する（時刻ｔ１）。前記命令フェッチサイクルの起動の検出は、インストラクションフェッチ信号Ｉｓｔｆから検出する。
【００２９】
前記エミュレーション用データプロセッサ２は、命令“ＭＯＶ．Ｗ  ＃５５５５，Ｐ８Ｄ”の解読を行い、内部レジスタＰ８Ｄが保有するアドレス“０００３Ｃ６”を用いて必要なデータサイクルを時刻ｔ３に同期して起動する。尚、パイプライン動作を行う前記エミュレーション用データプロセッサ２は、時刻ｔ２からｔ３の間に次の命令の命令フェッチサイクル（命令アドレス“Ｆ８００５３”）を起動している関係上、データサイクル（ライトサイクル）はｔ３に同期して始まっている。
【００３０】
時刻ｔ３に同期してデータサイクルが起動された場合、ステータス信号Ｓｔｕｓの状態は前記エミュレーション用バス３を介して、前記トレースメモリ制御部１２が認識可能にされる。前記トレースメモリ制御部１２はステータス信号Ｓｔｕｓからデータサイクルが発生したことを、２クロックサイクル要して検出することができる。これにより、前記トレースメモリ制御部１２は前記命令アドレスレジスタ８に格納されている命令アドレス“Ｆ８００４Ｅ”と共に当該データサイクルによって前記エミュレーション用バス３上に現れたデータとを前記トレースメモリ５に格納する（時刻ｔ５）。尚、パイプライン動作を行う前記エミュレーション用データプロセッサ２は、時刻ｔ４からｔ６の間に次の命令の命令フェッチサイクル（命令アドレス“Ｆ８００５６”）を起動している。また、前記命令アドレス“Ｆ８００５３”と“Ｆ８００５６”の命令はデータサイクルを起動しない命令である。
【００３１】
前記エミュレーション用データプロセッサ２が、時刻ｔ６に前記アドレスバスＡＢＵＳに命令アドレス“Ｆ８００５Ａ”を出力して命令フェッチサイクルを起動するが、この命令はデータサイクルを起動する命令とされる。従って、前記トレースメモリ制御部１２は前記エミュレーション用バス３上に現れる命令“ＭＯＶ．Ｗ  Ｐ８Ｄ，Ｒ１”のオペレーションコードを解読してデータサイクルを伴う命令であることを検出するまで前記命令アドレスレジスタ８のアドレス“Ｆ８００４Ｅ”を維持し、時刻ｔ７で前記命令アドレスレジスタ８を対応する命令アドレス“Ｆ８００５Ａ”に更新する。前記エミュレーション用データプロセッサ２は、命令“ＭＯＶ．Ｗ  Ｐ８Ｄ，Ｒ１”の解読を行い、アドレス“０００３Ｃ６”に対する必要なデータサイクル（リードサイクル）を時刻ｔ８に同期して起動する。
【００３２】
時刻ｔ８に同期してデータサイクルが起動された場合、ステータス信号Ｓｔｕｓの状態は前記エミュレーション用バス３を介して前記トレースメモリ制御部１２が認識可能にされ、前記トレースメモリ制御部１２はデータサイクルが発生したことを、２クロックサイクル要して検出することができる。これにより、前記トレースメモリ制御部１２は前記命令アドレスレジスタ８に格納されている命令アドレス“Ｆ８００５Ａ”と共に当該データサイクルによって前記エミュレーション用バス３上に現れたデータとを前記トレースメモリ５に格納する（時刻ｔ１０）。
【００３３】
上記図４の動作を行うことにより、図５に示される命令アドレスを保持したトレース結果が得られるため検証したいデータサイクルを生成させた命令アドレスを容易に特定することができる。命令アドレスが表示されないトレース情報は、図３に示されるように検証したいデータサイクルの命令アドレスを特定することが困難である。
【００３４】
図６には、上記図４のトレース制御によって得られた前記図５のトレース情報と前記エミュレーション用データプロセッサ２が実行する前記ターゲットプログラムとを前記ホストシステム９のディスプレイ１４に並列に表示させた状態が例示される。図６は、マウスやキーボード等のポインティングデバイスによって、上記図４の動作で得られたトレース情報中の検証したいアドレスＡｄｄｒやデータ等を選択すると、前記ターゲットプログラムの対応する記述部分にリンクされる。例えば、不正データ（Ａ）のデータ００４４を選択すると、前記ターゲットプログラムの命令アドレス“Ｆ８００５Ａ”（Ｂ）が矢印によってリンクされるように表示される。従って、グラフィカルユーザーインタフェース（ＧＵＩ）を利用することにより、検証したいデータサイクルの情報を選択することでそのデータサイクルに対応する前記ターゲットプログラムの命令アドレスを容易に特定することができ、視認性や操作性に優れ、直感的な操作が可能となる。
【００３５】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００３６】
本発明に使用される命令アドレスレジスタ８は、データサイクル毎のデータに対応する命令アドレスをトレースメモリに格納可能に保持するものであり、データサイクルを伴う命令を連続的に実行する場合等に対処することを考慮すれば、命令アドレスレジスタ８は実際には複数個設けられることになる。また、上記説明ではターゲットシステムに接続してエミュレーションを行うエミュレータに本発明を適用した場合について説明したが、本発明はそれに限定されず、例えば、ターゲットシステムとしてエミュレーション用データプロセッサだけが用意されている場合、ターゲットシステムをシミュレーション結果で代用する場合のプログラムデバッグ等にも適用することができる。
【図面の簡単な説明】
【００３７】
【図１】本発明に係るデバッグ装置の一例であるエミュレータの構成図である。
【図２】エミュレーション用データプロセッサが実行するターゲットプログラムである。
【図３】従来のトレースモードによって得られるトレース情報を示した説明図である。
【図４】前記エミュレーション用データプロセッサ及び前記トレースメモリ制御部におけるトレース制御中の動作の一部を例示したタイミングチャートである。
【図５】本発明に係るトレースモードによって得られるトレース情報を示した説明図である。
【図６】本発明に係るトレースモードによって得られたトレース情報とターゲットプログラムとをホストシステムのディスプレイに並列に表示させた説明図である。
【符号の説明】
【００３８】
１  エミュレータ
２  エミュレーション用データプロセッサ
３  エミュレーション用バス
４  トレース制御部
５  トレースメモリ
６  トレースモードレジスタ
７  トレース条件設定レジスタ
８  命令アドレスレジスタ
９  ホストシステム
１０  ターゲットシステム
１１  エミュレーション制御部
１２  トレースメモリ制御部
１３  コントロールバス
１４  ディスプレイ
【図１】
2008310508.tif 000003
【図２】
2008310508.tif 000004
【図３】
2008310508.tif 000005
【図４】
2008310508.tif 000006
【図５】
2008310508.tif 000007
【図６】
2008310508.tif 000008