(57)【特許請求の範囲】
【請求項１】
リアルタイムトレース機能を有するマイクロコンピュータであって、
命令の実行処理を行う中央処理ユニットと、
前記中央処理ユニットで実行されるプログラムの命令の実行を検出するための複数の命令アドレスを設定する命令アドレス設定手段と、
命令アドレス設定手段に設定されたいずれかの命令アドレスの命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段と、
リアルタイムトレースに必要な前記中央処理ユニットの命令実行のステータス情報をステータス情報出力端子に出力するステータス情報出力手段と、を含み
前記ステータス情報出力手段は、
トレースに必要なステータス情報として、ＣＰＵの状態が通常命令実行、相対分岐命令実行、絶対分岐命令実行、アイドルサイクル、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチ、デバッグモードのいずれの状態であるかを表すことのできる情報を含むステータス情報を第１のステータス情報出力端子、第２のステータス情報出力端子、第３のステータス情報出力端子の３つのステータス情報出力端子に出力するように構成され、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチ、デバッグモードを表すステータスは前記第１のステータス情報出力端子の出力が同じになるように構成され、前記第１のステータス情報出力用端子を前記検出信号出力端子と共用することを特徴とするマイクロコンピュータ。
【請求項２】
リアルタイムトレース機能を有するマイクロコンピュータであって、
命令の実行処理を行う中央処理ユニットと、
前記中央処理ユニットで実行されるプログラムの命令の実行を検出するための複数の命令アドレスを設定する命令アドレス設定手段と、
命令アドレス設定手段に設定されたいずれかの命令アドレスの命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段と、
リアルタイムトレースに必要な前記中央処理ユニットの命令実行のステータス情報をステータス情報出力端子に出力するステータス情報出力手段と、
マイクロコンピュータ内で使用されるクロックを生成し、デバッグ用クロック端子を介して外部のデバッグツールにもデバッグ用クロックを供給する手段と、
絶対分岐命令実行時に分岐先のプログラムカウンタを、１本のデバッグ用端子から前記デバッグ用クロックに同期してシリアルに出力する手段と、を含み
前記ステータス情報出力手段は、
トレースに必要なステータス情報として、通常命令実行、相対分岐命令実行、絶対分岐命令実行、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチの状態を表すことのできる情報を含み、前記ステータス情報出力用端子の１つを前記検出信号出力端子と共用することを特徴とするマイクロコンピュータ。
【請求項３】
請求項１乃至２のいずれかにおいて、
前記複数の命令は第一の命令及び第二の命令を含み、
前記検出信号出力手段は、
前記第一の命令が実行されて検出信号が出力された後に、続けて第一の命令が実行された場合には検出信号の出力を省略し、第二の命令が実行された場合にのみ検出信号を出力することを特徴とするマイクロコンピュータ。
【請求項４】
請求項１から３のいずれかにおいて、
前記命令アドレス設定手段が設定するアドレスは、プログラムのトレース範囲を特定するためのスタートアドレスとエンドアドレスを含むことを特徴とするマイクロコンピュータ。
【請求項５】
請求項１から４のいずれかにおいて、
前記命令アドレス設定手段が設定するアドレスは、プログラムの実行時間測定範囲を特定するためのスタートアドレスとエンドアドレスを含むことを特徴とするマイクロコンピュータ。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記命令アドレス設定手段は、
複数の命令の実行を検出するための命令アドレス情報を保持する複数のレジスタを含み、
前記検出信号出力手段は、
前記中央処理ユニットの命令実行のために先読みされた命令アドレスと前記複数のレジスタに保持されたアドレスとの比較結果を前記先読みされた命令アドレスの命令が実行されるまで保持し、前記先読みされた命令アドレスの命令が実行された場合に前記保持された比較結果に基づき検出信号を出力する手段と、
前記実行された命令が分岐命令であった場合には、当該分岐命令実行以前に先読みされた命令との比較結果を無効にする手段と、
を含むことを特徴とするマイクロコンピュータ。
【請求項７】
請求項６において、
前記レジスタは、
プログラムの所与の範囲を特定するためのスタートアドレス及びエンドアドレスを保持する少なくとも２つのレジスタを含み、
検出信号出力手段は、
前記中央処理ユニットが命令実行のために先読みした命令アドレスと前記スタートアドレス及びエンドアドレスとの比較を行う第一の比較手段及び第二の比較手段と、
前記第一の比較手段及び第二の比較手段の比較結果を複数回分保持できる比較結果保持部と、
前記比較結果保持部に保持された前記比較結果を、前記先読みした命令が実行されたタイミングで読み出す手段と、
実行された命令が分岐命令であった場合、前記比較結果保持部に保持されている比較結果をリセットする手段と、
前記比較結果保持部から読み出された比較結果に基づき、所定の順番で前記第一のレジスタ及び第二のレジスタに保持された実行アドレスが実行された場合に検出信号を出力する論理回路とを含むことを特徴とするマイクロコンピュータ。
【請求項８】
請求項１乃至７のいずれかのマイクロコンピュータと、
前記マイクロコンピュータの処理対象となるデータの入力源と、
前記マイクロコンピュータにより処理されたデータを出力するための出力装置とを含むことを特徴とする電子機器。
【請求項９】
マイクロコンピュータを含むターゲットシステムのためのデバッグシステムであって、
前記マイクロコンピュータは、
前記中央処理ユニットで実行されるプログラムの命令の実行を検出するための複数の命令アドレスを設定する命令アドレス設定手段と、
命令アドレス設定手段に設定されたいずれかの命令アドレスの命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段と、
リアルタイムトレースに必要な前記中央処理ユニットの命令実行のステータス情報をステータス情報出力端子に出力するステータス情報出力手段と、を含み
前記ステータス情報出力手段は、
トレースに必要なステータス情報として、ＣＰＵの状態が通常命令実行、相対分岐命令実行、絶対分岐命令実行、アイドルサイクル、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチ、デバッグモードのいずれの状態であるかを表すことのできる情報を含むステータス情報を第１のステータス情報出力端子、第２のステータス情報出力端子、第３のステータス情報出力端子の３つのステータス情報出力端子に出力するように構成され、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチ、デバッグモードを表すステータスは前記第１のステータス情報出力端子の出力が同じになるように構成され、前記第１のステータス情報出力用端子を前記検出信号出力端子と共用し、
前記マイクロコンピュータから前記検出信号を受信し、前記検出信号に基づきトレース情報の取得開始及び終了の制御を行いトレース情報を取得するトレース情報取得手段とを含むことを特徴とするデバッグシステム。
【請求項１０】
マイクロコンピュータを含むターゲットシステムのためのデバッグシステムであって、
前記マイクロコンピュータは、
前記中央処理ユニットで実行されるプログラムの命令の実行を検出するための複数の命令アドレスを設定する命令アドレス設定手段と、
命令アドレス設定手段に設定されたいずれかの命令アドレスの命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段と、
リアルタイムトレースに必要な前記中央処理ユニットの命令実行のステータス情報をステータス情報出力端子に出力するステータス情報出力手段と、
マイクロコンピュータ内で使用されるクロックを生成し、デバッグ用クロック端子を介して外部のデバッグツールにもデバッグ用クロックを供給する手段と、
絶対分岐命令実行時に分岐先のプログラムカウンタを、１本のデバッグ用端子から前記デバッグ用クロックに同期してシリアルに出力する手段と、を含み
前記ステータス情報出力手段は、
トレースに必要なステータス情報として、通常命令実行、相対分岐命令実行、絶対分岐命令実行、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチの状態を表すことのできる情報を含み、前記ステータス情報出力用端子の１つを前記検出信号出力端子と共用し、
前記マイクロコンピュータから前記検出信号を受信し、前記検出信号に基づきトレース情報の取得開始及び終了の制御を行いトレース情報を取得するトレース情報取得手段とを含むことを特徴とするデバッグシステム。
【請求項１１】
マイクロコンピュータを含むターゲットシステムのためのデバッグシステムであって、
前記マイクロコンピュータは、
前記中央処理ユニットで実行されるプログラムの命令の実行を検出するための複数の命令アドレスを設定する命令アドレス設定手段と、
命令アドレス設定手段に設定されたいずれかの命令アドレスの命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段と、
リアルタイムトレースに必要な前記中央処理ユニットの命令実行のステータス情報をステータス情報出力端子に出力するステータス情報出力手段と、を含み
前記ステータス情報出力手段は、
トレースに必要なステータス情報として、ＣＰＵの状態が通常命令実行、相対分岐命令実行、絶対分岐命令実行、アイドルサイクル、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチ、デバッグモードのいずれの状態であるかを表すことのできる情報を含むステータス情報を第１のステータス情報出力端子、第２のステータス情報出力端子、第３のステータス情報出力端子の３つのステータス情報出力端子に出力するように構成され、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチ、デバッグモードを表すステータスは前記第１のステータス情報出力端子の出力が同じになるように構成され、前記第１のステータス情報出力用端子を前記検出信号出力端子と共用し、
前記マイクロコンピュータから前記検出信号を受信し、前記検出信号に基づきプログラム実行時間の測定の開始及び終了の制御を行い実行時間を測定する実行時間測定手段とを含むことを特徴とするデバッグシステム。
【請求項１２】
マイクロコンピュータを含むターゲットシステムのためのデバッグシステムであって、
前記マイクロコンピュータは、
前記中央処理ユニットで実行されるプログラムの命令の実行を検出するための複数の命令アドレスを設定する命令アドレス設定手段と、
命令アドレス設定手段に設定されたいずれかの命令アドレスの命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段と、
リアルタイムトレースに必要な前記中央処理ユニットの命令実行のステータス情報をステータス情報出力端子に出力するステータス情報出力手段と、
マイクロコンピュータ内で使用されるクロックを生成し、デバッグ用クロック端子を介して外部のデバッグツールにもデバッグ用クロックを供給する手段と、
絶対分岐命令実行時に分岐先のプログラムカウンタを、１本のデバッグ用端子から前記デバッグ用クロックに同期してシリアルに出力する手段と、を含み
前記ステータス情報出力手段は、
トレースに必要なステータス情報として、通常命令実行、相対分岐命令実行、絶対分岐命令実行、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実行時に前記命令アドレスにマッチ、絶対分岐命令実行時に前記命令アドレスにマッチの状態を表すことのできる情報を含み、前記ステータス情報出力用端子の１つを前記検出信号出力端子と共用し、
前記マイクロコンピュータから前記検出信号を受信し、前記検出信号に基づきプログラム実行時間の測定の開始及び終了の制御を行い実行時間を測定する実行時間測定手段とを含むことを特徴とするデバッグシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータ、マイクロコンピュータを含む電子機器、及びデバッグシステムに関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、ゲーム装置、カーナビゲーションシステム、プリンタ、携帯情報端末などの電子機器に組み込まれ、高度な情報処理を実現できるマイクロコンピュータに対する需要が高まっている。このような組み込み型のマイクロコンピュータは、通常、ターゲットシステムと呼ばれるユーザボードに実装される。このターゲットシステムを動作させるソフトウェアの開発を支援するためにＩＣＥ（In-Circuit Emulator）と呼ばれるソフトウェア開発支援ツールが広く使用されている。
【０００３】
さて、このようなＩＣＥとしては、従来、図１に示すようなＣＰＵ置き換え型と呼ばれるＩＣＥが主流を占めていた。このＣＰＵ置き換え型ＩＣＥでは、デバッグ時にターゲットシステム３００からマイクロコンピュータ３０２を取り外し、その代わりにデバッグツール３０４のプローブ３０６を接続する。そして、このデバッグツール３０４に、取り外したマイクロコンピュータ３０２の動作をエミュレートさせる。また、このデバッグツール３０４に、トレース情報の取得やデバッグのために必要な種々の処理を行わせる。
【０００４】
しかしながら、このＣＰＵ置き換え型ＩＣＥでは、マイクロコンピュータ３０２の内部動作周波数が上がるとプローブ３０６やトレース情報を格納するバッファで生じる信号の遅延によりリアルタイムトレースが困難になる。
【０００５】
またトレース情報を無制限にトレース用のバッファに格納しようとするとトレース用のバッファがすぐにあふれてしまうので、デバッグに必要な部分のトレース情報が取得できない場合もある。このような場合、トレース範囲を指定してトレース情報をとることができると、大変便利である。しかしＣＰＵの内部動作周波数が上がると、ＣＰＵ置き換え型ＩＣＥのように外部回路でトレースの範囲指定を実現することは困難となる。
【０００６】
このような問題を解決するために量産チップ上でリアルタイムトレースを可能にするシステムの開発が行われている。このとき、トレース情報としてアドレスバス等の情報をリアルタイムにトレースバッファに格納しようとすると数十本の専用端子が必要となる。しかし、係る端子はデバッグ時のみ必要な物で、エンドユーザーにとっては不要なものであるから、より少ないほうが好ましい。
【０００７】
また、量産チップ上でリアルタイムトレースを実現する際にも、指定した範囲のトレース情報が確実に取得できる機能があると大変便利である。
【０００８】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、少ない端子で量産チップ上でのリアルタイムトレースを実現し、指定された範囲のトレース情報の取得及び実行時間の測定を行うことができるマイクロコンピュータ、これを含む電子機器、及びデバッグシステムを提供することにある。
【０００９】
【課題を解決するための手段】
上記課題を解決するために本発明は、リアルタイムトレース機能を有するマイクロコンピュータであって、命令の実行処理を行う中央処理ユニットと、前記中央処理ユニットで実行されるプログラムの複数の命令の実行を検出するための命令アドレスを設定する命令アドレス設定手段と、前記複数の命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段とを含むことを特徴とする。
【００１０】
本発明によれば１本の端子で、複数の命令が実行された旨の情報を取得することができる。従ってリアルタイムトレースにおいて、ユーザーの使用できる端子数をほとんど減らすこと無く複数の命令の実行の発生を検出することができ、デバッグ効率の向上を図ることができる。
【００１１】
また本発明は、前記複数の命令は第一の命令及び第二の命令を含み、前記検出信号出力手段は、前記第一の命令が実行されて検出信号が出力された後に、続けて第一の命令が実行された場合には検出信号の出力を省略し、第二の命令が実行された場合にのみ検出信号を出力することを特徴とする。
【００１２】
１本の端子で複数の命令の実行情報を取得する場合、どの命令が実行されたのか外部から判断するのは困難である。
【００１３】
しかし本発明によれば、当該検出信号が前記第一の及び第二の命令が予定されていた順序と異なった順序で実行された場合には、検出信号が出力されない。このため、外部には常に予定された順序で第一の及び第二の命令の実行を示す検出信号が出力される。
【００１４】
従って本発明によれば、複数の命令が予定されていた順序と異なった順序で実行された場合にも１本の端子で、どの命令が実行されたか判別可能な情報を取得することができる。
【００１５】
また本発明は、リアルタイムトレースに必要な前記中央処理ユニットの命令実行のステータス情報をステータス情報出力端子に出力するステータス情報出力手段を含み、前記ステータス情報出力用端子の１つを前記検出信号出力端子と共用することを特徴とする。
【００１６】
本発明によれば、検出信号出力端子を別に設けなくてもよいため、デバッグ用端子の更なる節約なる。
【００１７】
また本発明は、前記命令アドレス設定手段が設定するアドレスは、プログラムのトレース範囲を特定するためのスタートアドレスとエンドアドレスを含むことを特徴とする。
【００１８】
本発明によれば、トレース範囲のスタート及びエンドを検出する情報を１本の端子で出力することができる。このため、少ない端子で量産チップ上でのリアルタイムトレースを実現し、指定された範囲のトレース情報を取得可能なマイクロコンピュータを提供することができる。
【００１９】
また本発明は、ステータス情報出力手段が、トレースに必要なステータス情報として、通常命令実行、相対分岐命令実行、絶対分岐命令実行、通常命令実行時に前記命令アドレスにマッチ、相対分岐命令実時に前記命令アドレスにマッチ、絶対分岐命令実時に前記命令アドレスにマッチの状態を表すことのできる情報を含むことを特徴とする。
【００２０】
ここにおいて、ＰＣ相対分岐命令とはプログラム中に明示的に記述されたアドレスに分岐する命令であり、ソースコードから分岐先を判断可能な命令である。またＰＣ絶対分岐命令とはプログラムの実行中にレジスタの値によって分岐先のアドレスが決まる命令であり、ソースコードからは分岐先を判断することができない命令である。
【００２１】
本発明によれば、６種類のステータス情報を含み、係るステータス情報は３本の端子で実現することができる。このためわずか３本という少ない端子で、指定された範囲のリアルタイムトレースを行うことができる。
【００２２】
また本発明は、前記命令アドレス設定手段が設定するアドレスは、プログラムの実行時間測定範囲を特定するためのスタートアドレスとエンドアドレスを含むことを特徴とする。
【００２３】
本発明によれば、実行時間測定範囲のスタート及びエンドを検出する情報を１本の端子で出力することができる。このため、少ない端子で、指定された範囲の実行時間測定の開始及び終了のタイミングを判断するための情報を取得可能なマイクロコンピュータを提供することができる。
【００２４】
また本発明は、前記命令アドレス設定手段が、複数の命令の実行を検出するための命令アドレス情報を保持する複数のレジスタを含み、前記検出信号出力手段は、前記中央処理ユニットの命令実行のために先読みされた命令アドレスと前記複数のレジスタに保持されたアドレスとの比較結果を前記先読みされた命令アドレスの命令が実行されるまで保持し、前記先読みされた命令アドレスの命令が実行された場合に前記保持された比較結果に基づき検出信号を出力する手段と、前記実行された命令が分岐命令であった場合には、当該分岐命令実行以前に先読みされた命令との比較結果を無効にする手段と、含むことを特徴とする。
【００２５】
ここにおいて比較結果を無効にするとは、保持エリアを初期化する場合や書き込み及び読み出し用のポインタをリセットする場合を含む。
【００２６】
本発明では、複数の命令の実行の検出を先読みされた命令に基づいて行い、検出信号の出力は実際に実行されてから行う。このようにすることでパイプライン処理を行うマイクロコンピュータでも、最適な検出を行うことができる。
【００２７】
また本発明は、前記レジスタが、プログラムの所与の範囲を特定するためのスタートアドレス及びエンドアドレスを保持する少なくとも２つのレジスタを含み、
検出信号出力手段は、前記中央処理ユニットが命令実行のために先読みした命令アドレスと前記スタートアドレス及びエンドアドレスとの比較を行う第一の比較手段及び第二の比較手段と、前記第一の比較手段及び第二の比較手段の比較結果を複数回分保持できる比較結果保持部と、前記比較結果保持部に保持された前記比較結果を、前記先読みした命令が実行されたタイミングで読み出す手段と、実行された命令が分岐命令であった場合、前記比較結果保持部に保持されている比較結果をリセットする手段と、前記比較結果保持部から読み出された比較結果に基づき、所定の順番で前記第一のレジスタ及び第二のレジスタに保持された実行アドレスが実行された場合に検出信号を出力する論理回路とを含むことを特徴とする。
【００２８】
パイプライン処理においては、命令の取得と実行にタイムラグがあるため実行時には、信号線から実行アドレス情報を取得することが困難である。本発明によれば命令実行のために先読みされた段階での比較結果を実行された段階で取得することができる。このためパイプライン処理に対応した信号処理を行うことができる。
【００２９】
なお分岐命令が実行された場合には、比較結果保持部に保持されている分岐命令以前の先読みされた命令との比較結果をリセットすることで分岐命令発生により先読みされた命令が実行されない場合にも正確な判断を行うことができる。
【００３０】
また本発明に係る電子機器は、上記いずれかのマイクロコンピュータと、前記マイクロコンピュータの処理対象となるデータの入力源と、前記マイクロコンピュータにより処理されたデータを出力するための出力装置とを含むことを特徴とする。
【００３１】
このようにすれば電子機器を動作させるプログラムなどのデバッグ作業の効率化を図れるようになり電子機器の開発期間の短縮化及び低コスト化を図れるようになる。
【００３２】
また本発明はマイクロコンピュータを含むターゲットシステムのためのデバッグシステムであって、命令の実行処理を行う中央処理ユニットと、前記中央処理ユニットで実行されるプログラムの複数の命令の実行を検出するための命令アドレスを設定する命令アドレス設定手段と、前記複数の命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段とを含むマイクロコンピュータと、前記マイクロコンピュータから前記検出信号を受信し、前記検出信号に基づきトレース情報の取得開始及び終了の制御を行いトレース情報を取得するトレース情報取得手段とを含むことを特徴とする。
【００３３】
本発明によれば少ない端子で指定された範囲のデバッグ情報を取得できるデバッグシステムを提供することができる。
【００３４】
また本発明は、マイクロコンピュータを含むターゲットシステムのためのデバッグシステムであって、命令の実行処理を行う中央処理ユニットと、前記中央処理ユニットで実行されるプログラムの複数の命令の実行を検出するための命令アドレスを設定する命令アドレス設定手段と、前記複数の命令の実行を検出した場合、検出信号を１本の検出信号出力端子を介して外部に出力する検出信号出力手段とを含むマイクロコンピュータと、前記マイクロコンピュータから前記検出信号を受信し、前記検出信号に基づきプログラム実行時間の測定の開始及び終了の制御を行い実行時間を測定する実行時間測定手段とを含むことを特徴とする。
【００３５】
本発明によれば少ない端子で指定された範囲の実行時間を取得できるデバッグシステムを提供することができる。
【００３６】
また本発明のデバッグシステムは、前記複数の命令は第一の命令及び第二の命令を含み、前記検出信号出力手段は、前記第一の命令が実行されて検出信号が出力された後に、続けて第一の命令が実行された場合には検出信号の出力を省略し、第二の命令が実行された場合にのみ検出信号を出力することを特徴とする。
【００３７】
本発明によれば、複数の命令が予定されていた順序と異なった順序で実行された場合にも、１本の端子でデバッグどの命令が実行されたか判別可能なデバッグシステムを提供することができる。
【００３８】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００３９】
１．本実施形態の特徴
まず本実施形態の構成について図２を用いて説明する。
【００４０】
図２に示すように、本実施形態では、マイクロコンピュータ１０が、ＣＰＵ（中央処理ユニット）１２及び命令アドレス設定部１８、トレース情報出力部１４を含む。トレース情報出力部１４は検出信号出力部１６を含む。
【００４１】
また、マイクロコンピュータ１０の外部のデバッグツール２０はトレース情報取得部２２、実行時間測定部２７を含んでいる。
【００４２】
ここでトレース情報出力部１６は、リアルタイムトレースを実現するためのトレース情報を専用４端子に出力する。具体的には毎クロック毎にＣＰＵの命令実行ステータス情報（ＤＳＴ［２：０］）を３端子に出力し、ステータス情報出力手段として機能する。またＰＣ絶対分岐実行が発生すると続く２７クロックサイクルで分岐先のＰＣ値（ＤＰＣＯ）をシリアルに１端子に出力する。
【００４３】
図３はＤＳＴ［２：０］の出力値とＣＰＵの命令実行状態の関係を表した図である。ここにおいてＰＣ相対分岐命令とはプログラム中に明示的に記述されたアドレスに分岐する命令であり、ソースコードから分岐先を判断可能である。またＰＣ絶対分岐命令とはプログラムの実行中にレジスタの値によって分岐先のアドレスが決まる命令であり、ソースコードからは分岐先を判断することができない。
【００４４】
従って本実施の形態ではＰＣ絶対分岐命令が発生すると分岐先のＰＣ値（ＤＰＣＯ）を出力することでトレースを可能としている。
【００４５】
即ちマイクロプロセッサが命令をアドレスの順番に実行している時（ＤＳＴ［２：０］の出力値が０００又は１００である場合）には、プログラムカウンタがどこまで進んだか分かるのでプログラムのソースコードからトレースが可能である。また、マイクロプロセッサがＰＣ相対分岐命令を実行した時（ＤＳＴ［２：０］の出力値が００１又は１０１である場合）にも、プログラムのソースコードから分岐先が分かるのでトレースが可能である。
【００４６】
しかし、マイクロプロセッサがＰＣ絶対分岐命令を実行した時（ＤＳＴ［２：０］の出力値が０１０又は１１０である場合）には、プログラムのソースコードから分岐先が分からないため、ＤＳＴ［２：０］のみではトレースができない。そこで、係る場合に分岐先のＰＣ値（ＤＰＣＯ）を出力することでトレースを可能としているのである。
【００４７】
ここで本実施の形態の特徴的な事項である１本の端子でトレース範囲を特定する点について説明する。通常範囲指定を行わない場合にはトレース情報（ＤＳＴ［２：０］とＤＰＣＯ）はトレース用メモリ２４順次書き込まれ満杯になると古い情報を消して新しい情報をオーバーライトするよう構成されている。しかしトレース用メモリはすぐにあふれてしまうのでユーザーが必要としている部分のトレース情報が取得できない場合が多い。そこで本実施の形態では、前記ＤＳＴ［２：０］の値から、トレース範囲の取得開始位置及び終了位置を検出できるような構成としている。
【００４８】
以下前記ＤＳＴ［２：０］の値から、トレース範囲の取得開始位置及び終了位置を検出する構成について説明する。
【００４９】
図３の３１２はブレーク空間、即ちデバッグモードでは出力されるＤＳＴが１１１であることを示している。デバッグモードの間はユーザープログラムは実行されないため、ユーザープログラム実行時にＤＳＴ［２］が１となるのは３１０の３つの場合のみである。即ち、通常命令又はＰＣ相対命令又はＰＣ絶対命令のいずれかが命令ブレークにマッチしている状態である。ここにおいて命令ブレークとは、命令アドレス設定手段に設定されている命令アドレスの意味である。ここでは、プログラムのトレース範囲を特定するためのスタートアドレス及びエンドアドレスが命令ブレークとして命令アドレス設定手段に設定されている。従ってマイクロコンピュータから出力されるＤＳＴ［２］が１であれば、デバッグツール２０側は、マイクロコンピュータ１０でスタートアドレス又はエンドアドレスの命令が実行されたことを検出することができる。
【００５０】
なお、本実施の形態では命令ブレークは実際にはブレークせず実行が継続されるが、実際にブレークを起こすチップ内のブレーク機能を兼用で使用している。
【００５１】
次に、ＤＳＴ［２］が１であるとき、スタートアドレスの命令が実行されたのかエンドアドレスの命令が実行されたのかを判別する構成について説明する。
【００５２】
図４（Ａ）（Ｂ）（Ｃ）は、本実施の形態における命令ブレークにマッチした場合のＤＳＴ［２：０］の出力を説明するための図である。
【００５３】
命令ブレーク＃２にマッチとは、スタートアドレスの命令が実行された場合を示し、命令ブレーク＃１にマッチとは、エンドアドレスの命令が実行された場合を示す。即ち命令ブレーク＃２から命令ブレーク＃１の間がトレース情報を取得する範囲となる。
【００５４】
図４（Ａ）の３５０、３５２、３５４、３５６に示すように命令ブレーク＃２及び命令ブレーク＃１がこの順で繰り返し発生する場合には命令ブレーク＃２にマッチでトレース情報の取得を開始し、命令ブレーク＃１にマッチでトレース情報の取得を終了する処理を繰り返せばよい。
【００５５】
しかし例えばプログラムの分岐等により命令ブレーク＃２及び命令ブレーク＃１に所定の順序でマッチしない場合がある。このような場合は、最初に命令ブレーク＃２にマッチしたらマッチしたことを示すステータス（以下マッチステータスという。なお、本実施の形態ではＤＳＴ［２］＝１）を出力し、次に命令ブレーク＃１にマッチしたところでマッチステータスを出力する。この間、命令ブレーク＃２にマッチしてもマッチステータスは出力しない。そしてまた、命令ブレーク＃２にマッチしたらマッチステータスを出力し、次に命令ブレーク＃１にマッチしたところでマッチステータスを出力する動作を繰り返す。
【００５６】
図４（Ｂ）（Ｃ）は、命令ブレーク＃１及び命令ブレーク＃２のマッチが不規則に行われる例を説明するための図である。図４（Ｃ）に示すように３１８から３２０まで通常命令を順次実行していたプログラムは３２０で分岐命令により３２２に分岐する。３２２から３２６へ実行過程で命令ブレーク＃１にマッチするが（３２４）、図４（Ｂ）の（注１）に示すようにＤＳＴ［２：０］からマッチステータスは出力されない。最初は命令ブレーク＃２にマッチしたときのみマッチステータスを出力する仕様だからである。
【００５７】
３２６から３２８に分岐したプログラムは、３２８から３３２への実行過程で命令ブレーク＃２にマッチし（３３０）、図４（Ｂ）の（注３）に示すようにＤＳＴ［２：０］からマッチ示すステータスを出力する。
【００５８】
３３２から３３４に分岐したプログラムは、３３４から順次実行する過程で命令ブレーク＃２及び命令ブレーク＃１にマッチする（３３６、３３８）。しかし、２番目は命令ブレーク＃１にマッチしたときにマッチステータスを出力するよう構成されているので、図４（Ｂ）に示すように３３６ではマッチステータスは出力されず（注２）、３３８でマッチステータスが出力される（注４）。従って、３３０から３３８までの実線で示された範囲がトレース範囲となる（図４（Ｃ）参照）。
【００５９】
図５は、ＤＳＴ［２］とトレース範囲の関係を示す図である。同図に示すように、ＤＳＴ［２］奇数番目のマッチステータス出力時（３６０、３６４）には命令ブレーク＃２にマッチした状態にあり、偶数番目のマッチステータス出力時（３６２、３６６）には命令ブレーク＃１にマッチした状態である。従ってデバッグツール２０のトレース情報取得部２２は、３６０から３６２までのトレース範囲１（３７０）のトレース情報をトレース用メモリ２４に格納し、次に３６４から３６６までのトレース範囲２（３７２）のトレース情報をトレース用メモリ２４に格納する。
【００６０】
このように、パルスの順番とトレース範囲のスタートとエンドとの関係を定めておくと、デバッグツール側は奇数番目のパルスであるか偶数番目のパルスであるかによりトレースのスタート、ストップを判断することができる。従って１つの端子のみでトレース範囲の指定を行うことができる。
【００６１】
このトレース範囲の指定機能は、実行時間を測定するための実行時間測定範囲の特定にも使うことができる。即ち、トレース範囲と同様、実行時間の測定を行いたい範囲のスタートアドレス及びエンドアドレスを命令ブレークとしてセットして、前記デバッグツール２０の実行時間測定部２７で所望の範囲の実行時間の測定を行うことができる。
【００６２】
このようにすることで、少ない端子で量産チップ上でリアルタイムトレースを実現し、指定された範囲のトレース情報の取得及び実行時間の測定を行うことができる。
【００６３】
なお、実行時間の測定はトレースとは独立して行うことも可能である。即ちトレース情報の取得は行わず、実行時間の測定のみ行うことも可能である。
【００６４】
２．詳細な構成例
図６に本実施形態のマイクロコンピュータ及びデバッグシステムの詳細な構成例を示す。図６に示すように、マイクロコンピュータ１０は、ＣＰＵ１２、ＢＣＵ（バス制御ユニット）２６、内部メモリ２８、クロック生成部３０、オンチップモニタ部４０、トレース情報出力部１４を含む。
【００６５】
ここでＣＰＵ１２は、種々の命令の実行処理を行うものであり、内部レジスタ１３を含む。内部レジスタ１３は、汎用レジスタであるＲ０〜Ｒ１５や、特殊レジスタであるＳＰ（スタックポインタレジスタ）、ＡＨＲ（積和結果データの上位レジスタ）、ＡＬＲ（積和結果データの下位レジスタ）などを含む。
【００６６】
ＢＣＵ２６はバスを制御するものである。例えば、ＣＰＵ１２に接続されるハーバードアーキテクチャのバス３１や、内部メモリ２８に接続されるバス３２や、外部メモリ３６に接続される外部バス３３や、トレース情報出力部１４などに接続される内部バス３４の制御を行う。
【００６７】
またクロック生成部３０は、マイクロコンピュータ１０内で使用される各種のクロックを生成するものである。クロック生成部３０はＢＣＬＫを介して外部のデバッグツール６０にもクロックを供給している。
【００６８】
オンチップモニタ部４０は、オンチップモニタＲＯＭ４２、オンチップモニタＲＡＭ４４、制御レジスタ４６、ＳＩＯ４８を含む。
【００６９】
ここで、オンチップモニタＲＯＭ４２には、オンチップモニタプログラムが格納される。本実施形態では、このオンチップモニタプログラムは、ＧＯ、リード、ライトなどのシンプルでプリミティブなコマンドの処理のみを行うようになっている。このため、オンチップモニタＲＯＭ４２のメモリ容量を例えば２５６バイト程度に抑えることができ、オンチップデバッグ機能を持たせながらマイクロコンピュータ１０を小規模化できるようになる。
【００７０】
オンチップモニタＲＡＭ４４には、デバッグモードへの移行時に、ＣＰＵ１２の内部レジスタ１３の内容が退避される。これにより、デバッグモードの終了後にユーザプログラムの実行を適正に再スタートできるようになる。また内部レジスタ１３の内容のリード等を、オンチップモニタプログラムが持つプリミティブなリードコマンド等で実現できるようになる。
【００７１】
制御レジスタ４６は、各種のデバッグ処理を制御するためのレジスタであり、各種イネーブルビットや命令ブレークアドレスレジスタなどを有する。オンチップモニタプログラムにより動作するＣＰＵ１２が制御レジスタ４６の各ビットにデータをライトしたり、各ビットのデータをリードすることで、各種のデバッグ処理が実現される。なお、トレース範囲や実行時間測定範囲を特定するためのスタートアドレスやエンドアドレスは前記命令ブレークアドレスレジスタに設定される。
【００７２】
ＳＩＯ４８は、マイクロコンピュータ１０の外部に設けられたデバッグツール２０との間でデータを送受信するためのものである。ＳＩＯ４８とデバッグツール２０との間は、ＴＸＤ／ＲＸＤ（データ送受信ライン）で接続されている。
【００７３】
トレース情報出力部１４とデバッグツール２０との間は、ＤＳＴ［２：０］及びＤＰＣＯを出力するための４本のラインで接続されている。
【００７４】
トレース情報出力部１４は、リアルタイムトレース機能を実現するためのものであり、図３で説明したＣＰＵの命令実行ステータス情報（ＤＳＴ［２：０］）及びＰＣ絶対分岐が発生した際の分岐先のＰＣ（プログラムカウンタ）値をトレース情報として専用４端子を介して外部に出力する。
【００７５】
以下ＤＳＴ［２：０］とＤＰＣＯを出力する構成について説明する。
【００７６】
ＣＰＵ１２はＣＰＵの実行状態を表す信号（ＢＲ−ＡＢＳ、ＢＲ−ＲＥＬ、ＩＲ−ＤＯＮＥ）をライン７２に出力する。ＢＲ−ＡＢＳはＣＰＵがＰＣ絶対分岐命令を実行した時に出力され、ＢＲ−ＲＥＬはＣＰＵがＰＣ相対分岐命令を実行した時に出力され、ＩＲ−ＤＯＮＥはＣＰＵが通常命令を実行した時に出力される。
【００７７】
トレース情報出力部１４はライン７２からＣＰＵの実行状態を表す信号を受け取ると、当該信号に基づきＤＳＴ［１：０］に対応するステータスを出力する。
【００７８】
即ちＩＲ−ＤＯＮＥ信号を受け取った時は、ＣＰＵが通常命令を実行したのでＤＳＴ［１：０］＝００を出力する。ＢＲ−ＲＥＬ信号を受け取った時は、ＣＰＵがＰＣ相対分岐命令を実行したのでＤＳＴ［１：０］＝０１を出力する。ＢＲ−ＡＢＳ信号を受け取った時は、ＣＰＵがＰＣ絶対分岐命令を実行したのでＤＳＴ［１：０］＝１０を出力する。ＤＳＴ［２］を出力する構成については後述する。このように、トレース情報出力部１４がステータス情報出力手段として機能する。
【００７９】
また、トレース情報出力部１４は、ＰＣ絶対分岐命令の実行（ＢＲ−ＡＢＳ信号）に基づき、所定のタイミングでライン７４を介して命令アドレス（飛び先のプログラムカウンタの値）を内部のシフトレジスタ５２に取り込んで、ＢＣＬＫに同期してシフトレジスタ５２の値をＤＰＣＯからシリアルに出力する。
【００８０】
デバッグツール２０は外部モニタ部６１、トレース情報取得部２２、実行時間測定部２７を含み、パーソナルコンピュータ等により実現されるホストシステム６６に接続される。
【００８１】
トレース情報取得部２２は、３ビットのＤＳＴ［２：０］と、分岐先のＰＣ（プログラムカウンタ）値を表すＤＰＣＯを内部のトレース用メモリに格納する。トレース範囲が指定されている場合には、その範囲のＤＳＴ［２：０］とＤＰＣＯをトレース用メモリに格納する。
【００８２】
実行時間測定部２７は、指定された範囲の実行時間の測定を行う。
【００８３】
外部モニタ部６１は、ホストシステム６６から入力されるデバッグコマンドをプリミティブコマンドに変換（分解）するための処理を行う。そして、外部モニタ部６１が、プリミティブコマンドの実行を指示するデータをオンチップモニタ部４０に送信すると、オンチップモニタ部４０が、指示されたプリミティブコマンドを実行するための処理を行うことになる。
【００８４】
従って、トレース範囲又は実行時間の測定範囲を指定したい場合、ユーザーはホストシステムからブレークアドレス設定用のコマンドを入力する。このブレークアドレス設定コマンドは、前記命令ブレークアドレスレジスタへのライトコマンドに変換される。そして、オンチップモニタプログラムが、このプリミティブなライトコマンドを実行することで、命令ブレークアドレスレジスタにトレース範囲又は実行時間の測定範囲のスタートアドレス及びエンドアドレスが設定される。即ち、オンチップモニタプログラム及び命令ブレークアドレスレジスタが命令アドレス設定手段として機能する。
【００８５】
３．ＤＳＴ［２］を出力する構成
図７はＤＳＴ［２］を出力するハードウエア構成の一例である。
【００８６】
ＣＰＵとＢＣＵはライン１７０、１７２、１７４、１７６、１７８で接続されて、信号のハンドシェイクを行っている。
【００８７】
図８は前記信号のタイムチャートの略図である。４１０はＣＰＵクロックである。
【００８８】
ＣＰＵ１２はライン１７０を介してＢＣＵ２６に命令のプリフェッチのリクエスト信号（ＣＰＵ−ＩＲ−ＲＥＱ）を送信し（図８の４１２参照）、ライン１７８を介してＢＣＵ２６にフェッチすべき命令アドレス（ＩＡ）を送信する（図８の４１８参照）。ＣＰＵ−ＩＲ−ＲＥＱ４１２を受けたＢＵＣ２６は当該信号を受け付けた旨の信号（ＣＰＵ−ＩＲ−ＡＣＫ）をライン１７２を介してＣＰＵ１２に送信する（図８の４１４参照）。  そして、前記命令アドレス（ＩＡ）から読み出した命令コード（ＩＲ−ＣＯＤＥ）をライン１７６を介してＣＰＵに送信し（図８の４２０参照）、命令コード送信した旨を示す信号（ＣＰＵ−ＩＲ−ＶＬＤ）をライン１７４を介してＣＰＵに送信する（図８の４１６参照）。
【００８９】
ブレークアドレスレジスタ０（１８０）、ブレークアドレスレジスタ１（１８２）、ブレークアドレスレジスタ２（１８４）はトレース範囲や実行時間測定範囲のスタートアドレス及びエンドアドレスを保持されるためのレジスタである。本実施の形態では、前記オンチップモニタプログラムによりブレークアドレスレジスタ２にエンドアドレスが、ブレークアドレスレジスタ１にスタートアドレスが設定される。
【００９０】
比較器０（１８１）、比較器１（１８３）、比較器２（１８５）は、ライン１９８からくる命令アドレス（ＩＡ）と、前記ブレークアドレスレジスタ０、ブレークアドレスレジスタ１、ブレークアドレスレジスタ２に保持されたアドレスとの比較を行う。
【００９１】
比較器１及び比較器２の比較結果は４段（８ビット）からなるＦＩＦＯ１８６に入力される。ＦＩＦＯ１８６はライトポインタＷＲ−ＰＴＲ１８８に基づき比較結果が書き込まれ、リードポインタＲＤ−ＰＴＲ１９０に基づき比較結果を読み出され後段の検出信号制御回路２０４に出力される。
【００９２】
検出信号制御回路２０４は、フィリップフロップ回路２０６、微分回路２０８、ＥＯＲ回路２１０を含む。このような回路構成により、ブレークアドレスレジスタ２にマッチの比較結果を受けて検出信号２０２（ＤＳＴ［２］＝１）を出力した後は、ブレークアドレスレジスタ１にマッチするまで検出信号２０２（ＤＳＴ［２］＝１）出力せず、ブレークアドレスレジスタ１にマッチしたら検出信号２０２（ＤＳＴ［２］＝１）出力するよう制御することができる。
【００９３】
次にＦＩＦＯ１８６への比較結果の書き込みと読み出のタイミングについて説明する。具体的にはライトポインタＷＲ−ＰＴＲ１８８は、ＢＣＵが命令フェッチリクエストを受け付けた時（前記ＣＰＵ−ＩＲ−ＡＣＫ信号の出力されるタイミング）でインクリメントされ、インクリメントされたタイミングでライトポインタＷＲ−ＰＴＲ１８８の示す位置に前記比較結果を書き込む。
【００９４】
本実施の形態は前記前記ＣＰＵ−ＩＲ−ＡＣＫ信号の出力タイミングと比較器１（比較器２）からの比較結果を表す信号ＩＲ１−ＭＡＴＣＨ１９２（ＩＲ２−ＭＡＴＣＨ１９４）が出力されるタイミングが同期がとれるような構成を有しているからである（図８の４２２参照）。また、前記ＣＰＵ−ＩＲ−ＡＣＫ信号が出力されたということは、ＢＣＵがプリフェッチのリクエストを受け付けたことが確定しているから、分岐命令が実行されない限り確実に実行されるからである。
【００９５】
またリードポインタＲＤ−ＰＴＲはライン１９６からＣＰＵ１２が命令を実行した旨の信号（ＤＡＮ信号）が出力されるタイミングでインクリメントされ、インクリメントされたタイミングでリードポインタＲＤ−ＰＴＲの示す位置から前記比較結果を読み出す。
【００９６】
このようなタイミングで書き込み及び読み出しを行うのは、パイプライン処理に対応させるためである。即ち、ＦＩＦＯ１８６への書き込みの段階では命令がプリフェッチされた状態であり、ＣＰＵ１２が前記ＤＡＮ信号を出力したときに実際の命令が終了するからである。
【００９７】
ここににおいて、ＣＰＵ１２が分岐命令を実行すると、分岐命令以前にプリフェッチされた命令は実行されない。このため、分岐命令以前にプリフェッチされた命令との比較結果はリセットする必要がある。従ってライン７２を介して、ＣＰＵ１２からＰＣ絶対分岐命令が実行された旨の信号（図６で説明したＢＲ−ＡＢＳ）でＷＲ−ＰＴＲ１８８とＲＤ−ＰＴＲ１９０はリセットされる。
【００９８】
図９（Ａ）（Ｂ）は、分岐命令とリセットの関係を説明するための図である。図９（Ａ）は分岐命令実行前のＦＩＦＯの状態を表しており、図９（Ｂ）はリセット後のＦＩＦＯの状態を表している。３８０にライトポインタがある時、分岐命令が実行されたとする。すると、プリフェッチ命令との比較結果３８２（斜線部分）は実行されない命令との比較結果となる。
【００９９】
従って、図９（Ｂ）に示すようにライトポインタＷＲ−ＰＴＲ、リードポインタＲＤ−ＰＴＲも初期値にリセットされる。
【０１００】
４．デバッグツールの構成例
図１０にデバッグツール２０の構成例を示す。
【０１０１】
ＣＰＵ９０は、ＲＯＭ１０８に格納されるプログラムを実行したり、デバッグツール２０の全体の制御を行うものである。送受信切替部９２は、データの送信と受信とを切り替えるためのものである。クロック制御部９４は、ＣＰＵ９０のＳＣＬＫ端子、アドレスアップカウンタ１００、トレース用メモリ２４に供給するクロックを制御するものである。このクロック制御部９４には、マイクロコンピュータ１０（ＳＩＯ４８）からのＢＣＬＫが入力される。クロック制御部９４は周波数検出回路９５、分周回路９６を含む。周波数検出回路９５は、ＢＣＬＫが属する周波数範囲を検出して、その結果を制御レジスタ９８に出力する。また分周回路９６での分周比は制御レジスタ９８により制御される。即ちＣＰＵ９０により実行される外部モニタプログラム（外部モニタＲＯＭ１１０に格納）が、制御レジスタ９８からＢＣＬＫの周波数範囲を読み出す。そして、外部モニタプログラムは、この周波数範囲に応じた最適な分周比を決定し、この分周比を制御レジスタ９８に書き込む。そして、分周回路９６は、この分周比でＢＣＬＫを分周してＳＭＣ２を生成し、ＣＰＵ９０のＳＣＬＫ端子に出力する。
【０１０２】
アドレスアップカウンタ１００は、トレース用メモリ２４のアドレスをカウントアップするためのものである。セレクタ１０２は、ライン１２２（アドレスアップカウンタ１００が出力するアドレス）とライン１２４（アドレスバス１２０からのアドレス）のいずれかを選択し、トレース用メモリ２４のアドレス端子にデータを出力する。マイクロコンピュータがデバッグモード時（オンチップデバッグプログラム実行時）にはライン１２４が選択され、ユーザーモード時（ユーザープログラム実行時）にはライン１２２が選択される。
【０１０３】
またセレクタ１０６は、ライン１２６（図６のトレース情報出力部１４の出力であるＤＳＴ［２：０］、ＤＰＣＯ）とライン１２８（データバス１１８）のいずれかを選択し、トレース用メモリ２４のデータ端子にデータを出力したり、データ端子からデータを取り出す。
【０１０４】
アドレスアップカウンタ１００、トレース用メモリ２４、セレクタ１０２、セレクタ１０６はトレース情報取得部２２として機能する。
【０１０５】
実行時間測定回路１４０は、分周回路１４２と実行時間保持用のレジスタ１４３〜１４５を含み、実行時間測定部として機能する。分周回路１４２は、実時間を１０μ、１μ、５０ｎｓにそれぞれ分周する。そしてライン１２６（図６のトレース情報出力部１４の出力であるＤＳＴ［２：０］、ＤＰＣＯ）からの情報に基づき、実行時間の測定の開始及び終了のタイミングを判断し、測定した実行時間の積算値を前記レジスタ１４３〜１４５保持する。具体的にはＤＳＴ［２］に奇数番目に１がきたら実行時間の測定を開始し、偶数番目に１がきたら測定を中断する動作を繰り替えして、測定時間を積算する。
【０１０６】
ＲＯＭ１０８は外部モニタＲＯＭ１１０（図６の外部モニタ部６１に相当）を含み、外部モニタＲＯＭ１１０には、外部モニタプログラムが格納される。この外部モニタプログラムは、デバッグコマンドをプリミティブコマンドに変換するための処理を行う。ＲＡＭ１１２は、ＣＰＵ９０のワーク領域となるものである。
【０１０７】
ＲＳ２３２Ｃインターフェース１１４、パラレルインターフェース１１６は、図６のホストシステム６６とのインターフェースとなるものであり、ホストシステム６６からのデバッグコマンドはこれらのインターフェースを介してＣＰＵ９０に入力されることになる。クロック生成部１１８は、ＣＰＵ９０を動作させるクロックなどを生成するものである。
【０１０８】
次に本実施形態でのリアルタイムトレース処理について簡単に説明する。本実施形態では、図６のＣＰＵ１２の命令実行のステータスを表す３ビットのＤＳＴ[２：０］と、分岐先のＰＣ値を表すＤＰＣＯをトレース用メモリ２４に蓄える。そして、トレース用メモリ２４に蓄えられたデータとユーザプログラムのソースコードとに基づいて逆アセンブルし、プログラムのトレースデータを合成する。このようにすることで、マイクロコンピュータ１０とデバッグツール２０との間の接続ラインの本数を少なくしながら、リアルタイムトレース機能を実現することが可能になる。
【０１０９】
マイクロコンピュータがユーザモード時（ユーザープログラム実行時）においては、ライン１２２が選択され、セレクタ１０２を介してアドレスアップカウンタ１００の出力がトレース用メモリ２４のアドレス端子に入力される。またマイクロコンピュータがユーザモード時には、ライン１２６が選択され、セレクタ１０６を介してＤＳＴ［２：０］、ＤＰＣＯがトレースメモリ１０４のデータ端子に入力される。ここでアドレスアップカウンタ１００には、まず最初に、データバス１１８、アドレスバス１２０を用いてＣＰＵ９０により図１１（Ａ）に示すようなスタートアドレスが設定される。またアドレスアップカウンタ１００のＳＴ／ＳＰ（開始／停止）端子には、トレース範囲を特定するＤＳＴ［２］のラインが接続される。そして図１１（Ｂ）に示すように、ＤＳＴ［２］のラインに第１のパルス３９０が入力されると、アドレスアップカウンタ１００のアドレスアップカウントが開始する。そして、ＤＳＴ［２］のラインに第２のパルス３９２が入力されると、アドレスアップカウンタ１００のアドレスアップカウントが停止し、トレース動作が停止する。このようにして、所望のトレース範囲でのデータ（ＤＳＴ［２：０］、ＤＰＣＯ）をトレース用メモリ２４に蓄えることが可能になる。
【０１１０】
一方、ユーザプログラム実行モードからデバッグモードに移行すると、ライン１２４が選択され、セレクタ１０２を介してアドレスバス１２０からのアドレスがトレース用メモリ２４のアドレス端子に入力される。またライン１２８が選択され、セレクタ１０６を介してトレース用メモリ２４からのデータがデータバス１１８に出力される。これにより、トレース用メモリ２４に蓄えられたデータ（ＤＳＴ［２：０］、ＤＰＣＯ）を、デバッグモード時にＣＰＵ９０（メインモニタプログラム）が読み出すことが可能になる。そして、読み出されたデータとユーザープログラムのソースコードとに基づいて、トレースデータを合成することが可能になる。
【０１１１】
なお、トレース用メモリ２４に蓄えられたデータをホストシステムに送信して、ホストシステムでトレース合成を行うようにしてもよい。
【０１１２】
６．電子機器
次に、以上の本実施形態のマイクロコンピュータを含む電子機器に関して説明する。
【０１１３】
例えば図１２（Ａ）に電子機器の１つであるカーナビゲーションシステムの内部ブロック図を示し、図１３（Ａ）にその外観図を示す。カーナビゲーションシステムの操作はリモコン５１０を用いて行われ、ＧＰＳやジャイロからの情報に基づいて位置検出部５２０が車の位置を検出する。地図などの情報はＣＤＲＯＭ５３０（情報記憶媒体）に格納されている。画像メモリ５４０は画像処理の際の作業領域になるメモリであり、生成された画像は画像出力部５５０を用いて運転者に表示される。マイクロコンピュータ５００は、リモコン５１０、位置検出部５２０、ＣＤＲＯＭ５３０などのデータ入力源からデータを入力し、種々の処理を行い、処理後のデータを画像出力部５５０などの出力装置を用いて出力する。
【０１１４】
図１２（Ｂ）に電子機器の１つであるゲーム装置の内部ブロック図を示し、図１３（Ｂ）にその外観図を示す。このゲーム装置では、ゲームコントローラ５６０からのプレーヤの操作情報、ＣＤＲＯＭ５７０からのゲームプログラム、ＩＣカード５８０からのプレーヤ情報等に基づいて、画像メモリ５９０を作業領域としてゲーム画像やゲーム音を生成し、画像出力部６１０、音出力部６００を用いて出力する。
【０１１５】
図１２（Ｃ）に電子機器の１つであるプリンタの内部ブロック図を示し、図１３（Ｃ）にその外観図を示す。このプリンタでは、操作パネル６２０からの操作情報、コードメモリ６３０及びフォントメモリ６４０から文字情報に基づいて、ビットマップメモリ６５０を作業領域として、印刷画像を生成し、プリント出力部６６０を用いて出力する。またプリンタの状態やモードを表示パネル６７０を用いてユーザに伝える。
【０１１６】
本実施形態のマイクロコンピュータ又はデバッグシステムによれば、図１２（Ａ）〜図１３（Ｃ）の電子機器を動作させるユーザプログラムの開発の容易化、開発期間の短縮化を図れるようになる。またマイクロコンピュータが実動作する環境と同じ環境で、ユーザプログラムのデバッグ作業を行うことができるため、電子機器の信頼性を高めることができる。また電子機器に組み込まれるマイクロコンピュータのハードウェアを小規模化、低コスト化できるため、電子機器の低コスト化も図れるようになる。更に少ない専用端子で指定された範囲のリアルタイムトレースや実行時間の測定を行うことができるためデバッグ効率の向上を図るとともに、マイクロコンピュータ上でユーザーが使用する端子を最大限に確保することが可能になる。
【０１１７】
なお本実施形態のマイクロコンピュータを適用できる電子機器としては、上記以外にも例えば、携帯電話（セルラーフォン）、ＰＨＳ、ページャ、オーディオ機器、電子手帳、電子卓上計算機、ＰＯＳ端末、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、パーソナルコンピュータ、テレビ、ビューファインダ型又はモニタ直視型のビデオテープレコーダなど種々のものを考えることができる。
【０１１８】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１１９】
例えば本発明の１本の端子で範囲指定を行える構成は本実施形態で説明したものが特に望ましいが、これに限定されるものではない。
【０１２０】
また本実施の形態では指定されるブレークポイントが２つの場合を例にとり説明したが、３つ以上ある場合でもよい。
【０１２１】
またマイクロコンピュータやデバッグツールの構成も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【０１２２】
【図面の簡単な説明】
【図１】ＣＰＵ置き換え型のＩＣＥの例を示す図である。
【図２】本実施形態の特徴について説明するための図である。
【図３】ＤＳＴ［２：０］の出力値とＣＰＵの命令実行状態の関係を表した図である。
【図４】図４（Ａ）（Ｂ）（Ｃ）は、本実施の形態における命令ブレークにマッチした場合のＤＳＴ［２：０］の出力を説明するための図である。
【図５】ＤＳＴ［２］とトレース範囲の関係を示す図である。
【図６】本実施形態のマイクロコンピュータ、デバッグシステムの構成例を示す機能ブロック図である。
【図７】ＤＳＴ［２］を出力するハードウエア構成の一例である。
【図８】ＣＰＵとＢＣＵ間の信号のタイムチャートの略図である。
【図９】図９（Ａ）（Ｂ）は、分岐命令とＦＩＦＯのリセットの関係を説明するための図である。
【図１０】デバッグツールの構成例を示す機能ブロック図である。
【図１１】図１１（Ａ）（Ｂ）はリアルタイムトレースについて説明するための図である。
【図１２】図１２（Ａ）（Ｂ）（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図１３】図１３（Ａ）（Ｂ）（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０    マイクロコンピュータ
１２    ＣＰＵ（中央処理ユニット）
１３    内部レジスタ
１４    トレース情報出力部
１６    検出信号出力部
１８    命令アドレス設定部
２０    デバッグツール
２２    トレース情報取得部
２４    トレース用メモリ
２６    ＢＣＵ（バス制御ユニット）
２７    実行時間測定部
２８    内部メモリ
３０    クロック生成部
３１    バス
３２    バス
３３    外部バス
３４    内部バス
３６    外部メモリ
４０    オンチップモニタ部（第１のモニタ手段）
４２    オンチップモニタＲＯＭ
４４    オンチップモニタＲＡＭ
４６    制御レジスタ
４８    ＳＩＯ
５２    シフトレジスタ
６１    外部モニタ部（第２のモニタ手段）
６６    ホストシステム
９０    ＣＰＵ
９２    送受信切替部
９４    クロック制御部
９５    周波数検出部
９６    分周回路
９８    制御レジスタ
１００  アドレスアップカウンタ
１０２  セレクタ
１０６  セレクタ
１０８  ＲＯＭ
１１０  外部モニタＲＯＭ
１１２  ＲＡＭ
１１４  ＲＳ２３２Ｃインターフェース
１１６  パラレルインターフェース
１１８  クロック生成部
１４０  実行時間測定回路
１４２  分周回路
１４３  レジスタ
１４４  レジスタ
１４５  レジスタ
１８０  ブレークアドレスレジスタ０
１８１  比較器０
１８２  ブレークアドレスレジスタ１
１８３  比較器１
１８４  ブレークアドレスレジスタ２
１８５  比較器２
１８６  ＦＩＦＯ
２０４  検出信号制御回路
【図１】
0003684831.tif 000002
【図２】
0003684831.tif 000003
【図３】
0003684831.tif 000004
【図４】
0003684831.tif 000005
【図５】
0003684831.tif 000006
【図６】
0003684831.tif 000007
【図７】
0003684831.tif 000008
【図８】
0003684831.tif 000009
【図９】
0003684831.tif 000010
【図１０】
0003684831.tif 000011
【図１１】
0003684831.tif 000012
【図１２】
0003684831.tif 000013
【図１３】
0003684831.tif 000014