(57)【特許請求の範囲】
【請求項１】
オンチップデバッグ機能を有するマイクロコンピュータであって、
命令の実行処理を行う中央処理ユニットと、
マイクロコンピュータの外部に設けられデバッグコマンドを少なくとも１つのプリミティブコマンドに変換するための処理を行う第２のモニタ手段との間でデータを送受信し、実行するプリミティブコマンドを前記第２のモニタ手段からの受信データに基づいて決定し、決定したプリミティブコマンドを実行するための処理を行う第１のモニタ手段とを含み、
前記第１のモニタ手段は、
第１のクロックを分周し、調歩同期式で送受信されるデータの各ビットをサンプリングするための第１のサンプリングクロックを生成する第１の分周回路と、
前記第１の分周回路での分周比を制御する第１の分周比制御手段と、
前記第１のサンプリングクロックに基づいてデータを送受信する回路とを含み、
前記第１のモニタ手段は、
前記第２のモニタ手段が含む第２の分周回路が第２のサンプリングクロックを生成するための信号として、前記第１のクロックを、前記第２のモニタ手段に供給し、
前記第１の分周比制御手段は、
前記第２のモニタ手段が含む第２の分周比制御手段が前記第１のクロックの周波数に応じて分周比を変化させ変化後の分周比を知らせる分周比データを前記第１のモニタ手段に通信した場合に、前記分周比データに基づいて前記第１の分周回路での分周比を変化させることを特徴とするマイクロコンピュータ。
【請求項２】
請求項１において、
前記プリミティブコマンドが、
ユーザプログラムの実行を開始するコマンド、デバッグモード時におけるメモリマップ上のアドレスにデータをライトするコマンド、及び前記メモリマップ上のアドレスからデータをリードするコマンドを含むことを特徴とするマイクロコンピュータ。
【請求項３】
請求項１又は２において、
前記中央処理ユニットの命令実行処理に使用され、デバッグモード時におけるメモリマップ上にそのアドレスが割り付けられる制御レジスタを含むことを特徴とするマイクロコンピュータ。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記中央処理ユニットの内部レジスタの内容が退避され、デバッグモード時におけるメモリマップ上にそのアドレスが割り付けられるモニタＲＡＭを含むことを特徴とするマイクロコンピュータ。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記第２のモニタ手段との間で半２重の双方向通信を行うための１本の双方向通信ラインが接続される端子を含み、
スレーブとなる前記第１のモニタ手段が、
マスタとなる前記第２のモニタ手段からデータを受信したことを条件に、該受信データに対応する処理を行い該受信データに対応する応答データを前記第２のモニタ手段に送信することを特徴とするマイクロコンピュータ。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記第２のモニタ手段からの受信データが、前記第１のモニタ手段が実行するプリミティブコマンドの識別データを含むことを特徴とするマイクロコンピュータ。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記第１のモニタ手段が、
前記第２のモニタ手段との間で固定長のデータを送受信することを特徴とするマイクロコンピュータ。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記第１のモニタ手段の処理を実行するためのモニタプログラムがＲＯＭに格納されていることを特徴とするマイクロコンピュータ。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記第１のモニタ手段がリード及びライト可能なモニタＲＡＭを含み、
前記第１のモニタ手段が、
ユーザプログラムの実行がブレークしデバッグモードに移行した場合に、前記中央処理ユニットのプログラムカウンタ値及び内部レジスタの内容を前記モニタＲＡＭに待避することを特徴とするマイクロコンピュータ。
【請求項１０】
請求項１乃至９のいずれかのマイクロコンピュータと、
前記マイクロコンピュータの処理対象となるデータの入力源と、
前記マイクロコンピュータにより処理されたデータを出力するための出力装置とを含むことを特徴とする電子機器。
【請求項１１】
マイクロコンピュータを含むターゲットシステムのためのデバッグシステムであって、
ホストシステムが発行したデバッグコマンドを少なくとも１つのプリミティブコマンドに変換するための処理を行う第２のモニタ手段と、
前記第２のモニタ手段との間でデータを送受信し、実行するプリミティブコマンドを前記第２のモニタ手段からの受信データに基づいて決定し、決定したプリミティブコマンドを実行するための処理を行う第１のモニタ手段とを含み、
前記第１のモニタ手段は、
第１のクロックを分周し、調歩同期式で送受信されるデータの各ビットをサンプリングするための第１のサンプリングクロックを生成する第１の分周回路と、
前記第１の分周回路での分周比を制御する第１の分周比制御手段と、
前記第１のサンプリングクロックに基づいてデータを送受信する回路とを含み、
前記第１のモニタ手段は、
前記第２のモニタ手段が含む第２の分周回路が第２のサンプリングクロックを生成するための信号として、前記第１のクロックを、前記第２のモニタ手段に供給し、
前記第１の分周比制御手段は、
前記第２のモニタ手段が含む第２の分周比制御手段が前記第１のクロックの周波数に応じて分周比を変化させ変化後の分周比を知らせる分周比データを前記第１のモニタ手段に通信した場合に、前記分周比データに基づいて前記第１の分周回路での分周比を変化させることを特徴とするデバッグシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータ、マイクロコンピュータを含む電子機器、及びデバッグシステムに関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、ゲーム装置、カーナビゲーションシステム、プリンタ、携帯情報端末などの電子機器に組み込まれ、高度な情報処理を実現できるマイクロコンピュータに対する需要が高まっている。そして、このような組み込み型のマイクロコンピュータは、通常、ターゲットシステムと呼ばれるユーザボードに実装される。そして、このターゲットシステムを動作させるソフトウェアの開発を支援するためにＩＣＥ（In-Circuit Emulator）と呼ばれるソフトウェア開発支援ツールが広く使用されている。
【０００３】
さて、このようなＩＣＥとしては、従来、図１（Ａ）に示すようなＣＰＵ置き換え型と呼ばれるＩＣＥが主流を占めていた。このＣＰＵ置き換え型ＩＣＥでは、デバッグ時にターゲットシステム３００からマイクロコンピュータ３０２を取り外し、その代わりにデバッグツール３０４のプローブ３０６を接続する。そして、このデバッグツール３０４に、取り外したマイクロコンピュータ３０２の動作をエミュレートさせる。また、このデバッグツール３０４に、デバッグのために必要な種々の処理を行わせる。
【０００４】
しかしながら、このＣＰＵ置き換え型ＩＣＥには、プローブ３０６のピン数が多くなると共にプローブ３０６の線３０８が増えるという欠点があった。このため、マイクロコンピュータ３０２の高周波数動作をエミュレートすることが困難になる（例えば３３ＭＨＺ程度が限界）。またターゲットシステム３００の設計も困難になる。更に、マイクロコンピュータ３０２を実装して動作させる実動作時とデバッグツール３０４でマイクロコンピュータ３０２の動作をエミュレートするデバッグモード時とで、ターゲットシステム３００の動作環境（信号のタイミング、負荷条件）が変化してしまう。またこのＣＰＵ置き換え型ＩＣＥには、マイクロコンピュータが異なれば、たとえそれが派生品であっても、設計が異なるデバッグツールや、ピン数やピンの位置が異なるプローブを使用しなければならないという問題もあった。
【０００５】
一方、このようなＣＰＵ置き換え型ＩＣＥの欠点を解消するものとして、図１（Ｂ）に示すような、モニタプログラム３１０をターゲットシステム３１２に実装するタイプのＩＣＥが知られている。しかしながら、これまでのモニタプログラム実装型ＩＣＥでは、モニタプログラム３１０に、全てのデバッグコマンド（プログラムのロード、ＧＯ、ステップ実行、メモリのリード・ライト、内部レジスタのリード・ライト、ブレークポイントの設定・解除）を実行する機能を持たせる必要があった。したがって、モニタプログラム３１０の命令コードサイズが非常に大きくなってしまう（例えば３０〜５０Ｋバイト）。このため、ユーザが自由に使用できるメモリ領域が減ってしまうと共に、デバッグ時とデバッグ時以外でシステムが異なってしまうという問題があった。図１（Ｂ）の問題点を解決する方法として、モニタプログラムをチップ上にのせるオンチップデバッグという方法があるが、命令コードサイズが大きなモニタプログラムをチップ内に設けると、チップのサイズを大きくしてしまうという問題点がある。
【０００６】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、小さな命令コードサイズ又は回路規模でオンチップデバッグ機能を実現できるマイクロコンピュータ、これを含む電子機器、及びデバッグシステムを提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために本発明は、オンチップデバッグ機能を有するマイクロコンピュータであって、命令の実行処理を行う中央処理ユニットと、マイクロコンピュータの外部に設けられデバッグコマンドを少なくとも１つのプリミティブコマンドに変換するための処理を行う第２のモニタ手段との間でデータを送受信し、実行するプリミティブコマンドを前記第２のモニタ手段からの受信データに基づいて決定し、決定したプリミティブコマンドを実行するための処理を行う第１のモニタ手段とを含むことを特徴とする。
【０００８】
本発明によれば、マイクロコンピュータの外部に設けられた第２のモニタ手段が、ホストシステム等が発行したデバッグコマンドをプリミティブコマンドに変換（分解）するための処理を行う。そして、第１のモニタ手段は、この第２のモニタ手段からデータを受信し、この受信データに基づいて決定されたプリミティブコマンドを実行するための処理を行う。本発明によれば、第１のモニタ手段の処理を実行するためのモニタプログラムに、各デバッグコマンドを実行するための複雑なルーチンを持たせる必要がなくなる。したがって、モニタプログラムの命令コードサイズを格段に小さくできるようになり、小さなハードウェア規模でオンチップデバッグ機能を実現できるようになる。
【０００９】
また本発明は、前記プリミティブコマンドが、ユーザプログラムの実行を開始するコマンド、デバッグモード時におけるメモリマップ上のアドレスにデータをライトするコマンド、及び前記メモリマップ上のアドレスからデータをリードするコマンドを含むことを特徴とする。このようにプリミティブコマンドをシンプルにすることで、モニタプログラムの命令コードサイズを更に小さくできるようになる。
【００１０】
また本発明は、前記中央処理ユニットの命令実行処理に使用され、デバッグモード時におけるメモリマップ上にそのアドレスが割り付けられる制御レジスタを含むことを特徴とする。このようにすれば、デバッグモード時に制御レジスタを用いたデバッグ処理を行うことが可能になり、処理の簡易化、ハードウェアの小規模化を図れるようになる。
【００１１】
また本発明は、前記中央処理ユニットの内部レジスタの内容が退避され、デバッグモード時におけるメモリマップ上にそのアドレスが割り付けられるモニタＲＡＭを含むことを特徴とする。このようにすれば、デバッグモード時に、内部レジスタの内容をリードしたりすることが可能になり、より多様なデバッグ機能を実現できるようになる。
【００１２】
また本発明は、前記第２のモニタ手段との間で半２重の双方向通信を行うための１本の双方向通信ラインが接続される端子を含み、スレーブとなる前記第１のモニタ手段が、マスタとなる前記第２のモニタ手段からデータを受信したことを条件に、該受信データに対応する処理を行い該受信データに対応する応答データを前記第２のモニタ手段に送信することを特徴とする。このようにすれば、マイクロコンピュータの端子（ピン）数を減らすことが可能となり、マイクロコンピュータの低コスト化を図れるようになる。また、第１、第２のモニタ手段の間の通信プロトコルを単純化でき、モニタプログラムの命令コードサイズを更に小さくできるようになる。
【００１３】
また本発明は、前記第２のモニタ手段からの受信データが、前記第１のモニタ手段が実行するプリミティブコマンドの識別データを含むことを特徴とする。このようにすることで、プリミティブコマンドの実行の指示を簡易に第２のモニタ手段から第１のモニタ手段に伝えることが可能になる。
【００１４】
また本発明は、前記第１のモニタ手段が、前記第２のモニタ手段との間で固定長のデータを送受信することを特徴とする。このようにすることで、第１のモニタ手段のモニタプログラムの命令コードサイズを更に小さくすることが可能になる。
【００１５】
また本発明は、前記第１のモニタ手段の処理を実行するためのモニタプログラムがＲＯＭに格納されていることを特徴とする。このようにすることで、ＲＡＭに比べて占有面積の小さいＲＯＭにモニタプログラムが格納されると共に、モニタプログラムをＲＡＭにロードするロジック回路等が不要になる。したがって、マイクロコンピュータの更なる小規模化を図れるようになる。
【００１６】
また本発明は、前記第１のモニタ手段が、第１のクロックを分周し、調歩同期式で送受信されるデータの各ビットをサンプリングするための第１のサンプリングクロックを生成する第１の分周回路と、前記第１のサンプリングクロックに基づいてデータを送受信する回路とを含み、前記第１のモニタ手段が、前記第２のモニタ手段が含む第２の分周回路が第２のサンプリングクロックを生成するための信号として、前記第１のクロックを、前記第２のモニタ手段に供給することを特徴とする。このように、サンプリングクロックを生成するための第１のクロックを第１、第２のモニタ手段で共有することで、通信データのサンプリングエラーの発生率を格段に低くすることが可能になると共に、通信速度の最適化、高速化を図れるようになる。
【００１７】
また本発明は、前記第１のモニタ手段がリード及びライト可能なモニタＲＡＭを含み、前記第１のモニタ手段が、ユーザプログラムの実行がブレークしデバッグモードに移行した場合に、前記中央処理ユニットのプログラムカウンタ値及び内部レジスタの内容を前記モニタＲＡＭに待避することを特徴とする。このようにすることで、デバッグモードからユーザプログラム実行モードに戻った時に適正にユーザプログラムを実行できるようになる。また第１のモニタ手段が内部レジスタの内容等を利用して各種の処理を行うことも可能になる。
【００１８】
また本発明に係る電子機器は、上記のいずれかのマイクロコンピュータと、前記マイクロコンピュータの処理対象となるデータの入力源と、前記マイクロコンピュータにより処理されたデータを出力するための出力装置とを含むことを特徴とする。このようにすれば、電子機器を動作させるプログラムなどのデバッグ作業の効率化を図れるようになり、電子機器の開発期間の短縮化、低コスト化を図れるようになる。
【００１９】
また本発明は、マイクロコンピュータを含むターゲットシステムのためのデバッグシステムであって、ホストシステムが発行したデバッグコマンドを少なくとも１つのプリミティブコマンドに変換するための処理を行う第２のモニタ手段と、前記第２のモニタ手段との間でデータを送受信し、実行するプリミティブコマンドを前記第２のモニタ手段からの受信データに基づいて決定し、決定したプリミティブコマンドを実行するための処理を行う第１のモニタ手段とを含むことを特徴とする。
【００２０】
本発明によれば、第１のモニタ手段の処理を実行するためのモニタプログラムの命令コードサイズを格段に小さくできる。これにより、ユーザが自由に使用できるメモリ領域を増やすことが可能になる。また、ターゲットシステムを、実動作時の環境と同一の環境でデバッグできるデバッグシステムを提供できるようになる。
【００２１】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００２２】
１．本実施形態の特徴
まず本実施形態の特徴について図２を用いて説明する。
【００２３】
図２に示すように、本実施形態では、マイクロコンピュータ１０が、ＣＰＵ（中央処理ユニット）１２及び本実施形態の要部であるミニモニタ部（第１のモニタ手段）１４を含む。また、マイクロコンピュータ１０の外部にはメインモニタ部（第２のモニタ手段）１６が設けられている。ここでメインモニタ部１６は、例えばホストシステムなどが発行したデバッグコマンドをプリミティブコマンドに変換（分解）するための処理を行う。また、ミニモニタ部１４は、メインモニタ部１６との間でデータを送受信する。そして、ミニモニタ部１４は、実行するプリミティブコマンドを、メインモニタ部１６からの受信データに基づいて決定し、プリミティブコマンドを実行するための処理を行う。
【００２４】
ここで、メインモニタ部１６の変換処理の対象となるデバッグコマンドとしては、プログラムロード、ＧＯ、ステップ実行、メモリライト、メモリリード、内部レジスタライト、内部レジスタリード、ブレークポイント設定、ブレークポイント解除などのコマンドを考えることができる。メインモニタ部１６は、これらの多様で複雑なデバッグコマンドを、例えばＧＯ、ライト（デバッグモード時におけるメモリマップ上の所与のアドレスへのライト）、リード（メモリマップ上の所与のアドレスからのリード）などの、シンプルでプリミティブなコマンドに変換する処理を行う。このようにすることで、ミニモニタ部１４の処理を行うミニモニタプログラムの命令コードサイズを格段に小さくすることができる。これにより、マイクロコンピュータ１０のオンチップデバッグ機能を実現できるようになる。
【００２５】
即ち、図１（Ｂ）に示すようなタイプのＩＣＥでは、モニタプログラム３１０は、プログラムロード、ＧＯ、ステップ実行などのデバッグコマンドの全ての処理ルーチンを有している。このため、モニタプログラム３１０の命令コードサイズが非常に大きくなり（例えば３０〜５０Ｋバイト）、モニタプログラム３１０をマイクロコンピュータ３１４に内蔵することは事実上困難となる。
【００２６】
これに対して、本実施形態では、ミニモニタ部１４の処理を行うミニモニタプログラムは、ＧＯ、ライト、リードなどのシンプルなプリミティブコマンドの処理ルーチンのみを有し、命令コードサイズが非常に小さい（例えば２５６バイト）。したがって、ミニモニタプログラムをマイクロコンピュータ１０に内蔵することが可能となり、オンチップデバッグ機能を実現できるようになる。また、ユーザが自由に使用できるメモリ領域の減少を最小限に抑える、あるいは全く減少させないようにすることが可能になる。
【００２７】
２．詳細な構成例
図３に本実施形態のマイクロコンピュータ及びデバッグシステムの詳細な構成例を示す。図３に示すように、マイクロコンピュータ２０は、ＣＰＵ２２、ＢＣＵ（バス制御ユニット）２６、内部メモリ（ミニモニタＲＯＭ４２及びミニモニタＲＡＭ４４以外の内部ＲＯＭ及び内部ＲＡＭ）２８、クロック生成部３０、ミニモニタ部４０（第１のモニタ手段）、トレース部５０を含む。
【００２８】
ここでＣＰＵ２２は、種々の命令の実行処理を行うものであり、内部レジスタ２４を含む。内部レジスタ２４は、汎用レジスタであるＲ０〜Ｒ１５や、特殊レジスタであるＳＰ（スタックポインタレジスタ）、ＡＨＲ（積和結果データの上位レジスタ）、ＡＬＲ（積和結果データの下位レジスタ）などを含む。
【００２９】
ＢＣＵ２６はバスを制御するものである。例えば、ＣＰＵ２２に接続されるハーバードアーキテクチャのバス３１や、内部メモリ２８に接続されるバス３２や、外部メモリ３６に接続される外部バス３３や、ミニモニタ部４０、トレース部５０などに接続される内部バス３４の制御を行う。
【００３０】
またクロック生成部３０は、マイクロコンピュータ２０内で使用される各種のクロックを生成するものである。クロック生成部３０はＢＣＬＫを介して外部のデバッグツール６０にもクロックを供給している。
【００３１】
ミニモニタ部４０は、ミニモニタＲＯＭ４２、ミニモニタＲＡＭ４４、制御レジスタ４６、ＳＩＯ４８を含む。
【００３２】
ここで、ミニモニタＲＯＭ４２には、ミニモニタプログラムが格納される。本実施形態では、このミニモニタプログラムは、ＧＯ、リード、ライトなどのシンプルでプリミティブなコマンドの処理のみを行うようになっている。このため、ミニモニタＲＯＭ４２のメモリ容量を例えば２５６バイト程度に抑えることができ、オンチップデバッグ機能を持たせながらマイクロコンピュータ２０を小規模化できるようになる。
【００３３】
ミニモニタＲＡＭ４４には、デバッグモードへの移行時に（ユーザプログラムのブレーク発生時に）、ＣＰＵ２２の内部レジスタ２４の内容が退避される。これにより、デバッグモードの終了後にユーザプログラムの実行を適正に再スタートできるようになる。また内部レジスタの内容のリード等を、ミニモニタプログラムが持つプリミティブなリードコマンド等で実現できるようになる。
【００３４】
制御レジスタ４６は、各種のデバッグ処理を制御するためのレジスタであり、ステップ実行イネーブルビット、ブレークイネーブルビット、ブレークアドレスビット、トレースイネーブルビットなどを有する。ミニモニタプログラムにより動作するＣＰＵ２２が制御レジスタ４６の各ビットにデータをライトしたり、各ビットのデータをリードすることで、各種のデバッグ処理が実現される。
【００３５】
ＳＩＯ４８は、マイクロコンピュータ２０の外部に設けられたデバッグツール６０との間でデータを送受信するためのものである。ＳＩＯ４８とデバッグツール６０との間は、ＴＸＤ／ＲＸＤ（データ送受信ライン）で接続されている。
【００３６】
トレース部５０は、リアルタイムトレース機能を実現するためのものである。トレース部５０とデバッグツール６０との間は、ＣＰＵ２２の命令実行のステートを表す３ビットのＤＳＴ［２：０］と、分岐先のＰＣ（プログラムカウンタ）値を表すＤＰＣＯという４本のラインで接続されている。
【００３７】
デバッグツール６０はメインモニタ部６２を含み、パーソナルコンピュータ等により実現されるホストシステム６６に接続される。ホストシステム６６が、ユーザの操作により、プログラムロード、ステップ実行などのデバッグコマンドを発行すると、メインモニタ部６２が、このデバッグコマンドをプリミティブコマンドに変換（分解）するための処理を行う。そして、メインモニタ部６２が、プリミティブコマンドの実行を指示するデータをミニモニタ部４０に送信すると、ミニモニタ部４０が、指示されたプリミティブコマンドを実行するための処理を行うことになる。
【００３８】
図４に、デバッグモード時のメモリマップの例を示す。図４のＤ１、Ｄ２、Ｄ３に示すように、デバッグモード時には、図３の制御レジスタ４６、ミニモニタＲＡＭ４４、ミニモニタＲＯＭ４２のアドレスも、メモリマップ上に割り付けられる。
【００３９】
３．プリミティブコマンドへの変換
図５（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）に、各種のデバッグコマンドをプリミティブコマンドへ変換する処理について模式的に示す。
【００４０】
例えば図５（Ａ）に示すように、（ＡＤＤ・・・、ＳＵＢ・・・、ＡＮＤ・・・、ＯＲ・・・、ＸＯＲ・・・、ＬＤ．Ｗ・・・）という１２バイトのプログラムを８００１０ｈ番地にロードするというデバッグコマンドが発行されたとする。この場合、このプログラムロードコマンドは、ライト（８００１０ｈ、ＡＤＤ・・・、ＳＵＢ）、ライト（８００１４ｈ、ＡＮＤ・・・、ＯＲ・・・）、ライト（８００１８ｈ、ＸＯＲ・・・、ＬＤ．Ｗ・・・）という３つのプリミティブなライトコマンドに変換される。即ち、ミニモニタプログラムが、この３つのプリミティブなライトコマンドを実行することで、プログラムロードコマンドが実現されるようになる。
【００４１】
また図５（Ｂ）に示すようにステップ実行コマンドというデバッグコマンドが発行されたとする。すると、このステップ実行コマンドは、図３の制御レジスタ４６のステップ実行イネーブルビットへのライトコマンド（図４のＤ１のアドレスへのライトコマンド）とＧＯコマンドに変換される。即ち、ミニモニタプログラムが、このプリミティブなライトコマンドとＧＯコマンドを実行することで、ステップ実行コマンドが実現されるようになる。
【００４２】
また図５（Ｃ）に示すように内部レジスタリードコマンドというデバッグコマンドが発行されたとする。すると、この内部レジスタリードコマンドは、メモリマップ上のミニモニタＲＡＭ４４（内部レジスタの内容の退避先）からのリードコマンド（図４のＤ２のアドレスからのリードコマンド）に変換される。即ち、ミニモニタプログラムが、このプリミティブなリードコマンドを実行することで、内部レジスタリードコマンドが実現されるようになる。内部レジスタライトコマンド、メモリリードコマンド、メモリライトコマンドも同様にして実現される。
【００４３】
また図５（Ｄ）に示すようにブレークポイント設定コマンドというデバッグコマンドが発行されたとする。すると、このブレークポイント設定コマンドは、制御レジスタ４６のブレークイネーブルビット及びブレークアドレスビットへのライトコマンドに変換される。即ち、ミニモニタプログラムが、このプリミティブなライトコマンドを実行することで、ブレークポイント設定コマンドが実現されるようになる。
【００４４】
このように本実施形態では、複雑で多様なデバッグコマンドが、プリミティブでシンプルなリード、ライト、ＧＯコマンドに変換される。そして、ミニモニタプログラムは、このプリミティブなリード、ライト、ＧＯコマンドを実行するだけでよいため、ミニモニタプログラムの命令コードサイズは非常に小さくなる。この結果、ミニモニタＲＯＭ４２のメモリ容量も小さくでき、小さなハードウェア規模でオンチップデバッグ機能を実現できるようになる。
【００４５】
４．ＳＩＯの構成例
図６にＳＩＯ４８の構成例を示す。ＳＩＯ４８は、送受信バッファ７０、シフトレジスタ７６、送受信切替部７８、クロック制御部８０及び制御レジスタ８４を含む。
【００４６】
ここで送受信バッファ７０は、送信データ、受信データを一時的に蓄えるためのものであり、送信バッファ７２、受信バッファ７４を有する。シフトレジスタ７６は、送信バッファ７２からの送信データをパラレルデータからシリアルデータに変換し送受信切替部７８に出力する機能を有する。また送受信切替部７８からの受信データをシリアルデータからパラレルデータに変換し受信バッファ７４に出力する機能も有する。送受信切替部７８は、データの送信と受信とを切り替えるためのものである。これにより、ＴＸＤ／ＲＸＤを使用した半２重のデータ送受信が可能になる。
【００４７】
クロック制御部８０は、内蔵する分周回路８２によりＢＣＬＫを分周し、この分周により得られたサンプリングクロックＳＭＣ１をシフトレジスタ７６に出力する。シフトレジスタ７６は、このＳＭＣ１に基づき動作する。またクロック制御部８０は、デバッグツール６０にＢＣＬＫを供給する。これにより、マイクロコンピュータ２０とデバッグツール６０により、ＢＣＬＫが共有されるようになる。
【００４８】
分周回路８２での分周比は制御レジスタ８４により設定される。即ちＣＰＵ２２により実行されるミニモニタプログラムが、所望の分周比を制御レジスタ８４に書き込むことで、分周回路８２での分周比が設定されることになる。なお、制御レジスタ８４のアドレスも、図３の制御レジスタ４６と同様に、図４のＤ１の位置に割り付けられている。
【００４９】
５．デバッグツールの構成例
図７にデバッグツール６０の構成例を示す。
【００５０】
ＣＰＵ９０は、ＲＯＭ１０８に格納されるプログラムを実行したり、デバッグツール６０の全体の制御を行うものである。送受信切替部９２は、データの送信と受信とを切り替えるためのものである。クロック制御部９４は、ＣＰＵ９０のＳＣＬＫ端子、アドレスアップカウンタ１００、トレースメモリ１０４に供給するクロックを制御するものである。このクロック制御部９４には、マイクロコンピュータ２０（ＳＩＯ４８）からのＢＣＬＫが入力される。クロック制御部９４は周波数検出回路９５、分周回路９６を含む。周波数検出回路９５は、ＢＣＬＫの周波数が属する周波数範囲を検出して、その結果を制御レジスタ９８に出力する。また分周回路９６での分周比は制御レジスタ９８により制御される。即ちＣＰＵ９０により実行されるメインモニタプログラム（メインモニタＲＯＭ１１０に格納）が、制御レジスタ９８からＢＣＬＫの周波数範囲を読み出す。そして、メインモニタプログラムは、この周波数範囲に応じた最適な分周比を決定し、この分周比を制御レジスタ９８に書き込む。そして、分周回路９６は、この分周比でＢＣＬＫを分周してＳＭＣ２を生成し、ＣＰＵ９０のＳＣＬＫ端子に出力する。
【００５１】
アドレスアップカウンタ１００は、トレースメモリのアドレスをカウントアップするためのものである。セレクタ１０２は、ライン１２２（アドレスアップカウンタ１００が出力するアドレス）とライン１２４（アドレスバス１２０からのアドレス）のいずれかを選択し、トレースメモリ１０４のアドレス端子にデータを出力する。またセレクタ１０６は、ライン１２６（図３のトレース部５０の出力であるＤＳＴ［２：０］、ＤＰＣＯ）とライン１２８（データバス１１８）のいずれかを選択し、トレースメモリ１０４のデータ端子にデータを出力したり、データ端子からデータを取り出す。
【００５２】
ＲＯＭ１０８はメインモニタＲＯＭ１１０（図３のメインモニタ部６２に相当）を含み、メインモニタＲＯＭ１１０には、メインモニタプログラムが格納される。このメインモニタプログラムは、図５（Ａ）〜図５（Ｄ）で説明したように、デバッグコマンドをプリミティブコマンドに変換するための処理を行う。ＲＡＭ１１２は、ＣＰＵ９０のワーク領域となるものである。
【００５３】
ＲＳ２３２Ｃインターフェース１１４、パラレルインターフェース１１６は、図３のホストシステム６６とのインターフェースとなるものであり、ホストシステム６６からのデバッグコマンドはこれらのインターフェースを介してＣＰＵ９０に入力されることになる。クロック生成部１１８は、ＣＰＵ９０を動作させるクロックなどを生成するものである。
【００５４】
次に本実施形態でのリアルタイムトレース処理について簡単に説明する。本実施形態では、図３のＣＰＵ２２の命令実行のステートを表す３ビットのＤＳＴ[２：０］と、分岐先のＰＣ値を表すＤＰＣＯをトレースメモリ１０４に蓄える。そして、トレースメモリ１０４に蓄えられたデータと、ユーザプログラムのソースコードとに基づいて、トレースデータを合成する。このようにすることで、マイクロコンピュータ２０とデバッグツール６０との間の接続ラインの本数を少なくしながら、リアルタイムトレース機能を実現することが可能になる。
【００５５】
ユーザプログラム実行モードにおいては、ライン１２２が選択され、セレクタ１０２を介してアドレスアップカウンタ１００の出力がトレースメモリ１０４のアドレス端子に入力される。また、ライン１２６が選択され、セレクタ１０６を介してＤＳＴ［２：０］、ＤＰＣＯがトレースメモリ１０５のデータ端子に入力される。ここでアドレスアップカウンタ１００には、まず最初に、データバス１１８、アドレスバス１２０を用いてＣＰＵ９０により図８（Ａ）に示すようなスタートアドレスが設定される。またアドレスアップカウンタ１００のＳＴ／ＳＰ（開始／停止）端子には、トレース範囲を特定するＤＳＴ［２］のラインが接続される。そして図８（Ｂ）に示すように、ＤＳＴ［２］のラインに第１のパルス１３０が入力されると、アドレスアップカウンタ１００のアドレスアップカウントが開始する。そして、ＤＳＴ［２］のラインに第２のパルス１３２が入力されると、アドレスアップカウンタ１００のアドレスアップカウントが停止し、トレース動作が停止する。このようにして、所望のトレース範囲でのデータ（ＤＳＴ［２：０］、ＤＰＣＯ）をトレースメモリ１０４に蓄えることが可能になる。
【００５６】
一方、ユーザプログラム実行モードからデバッグモードに移行すると、ライン１２４が選択され、セレクタ１０２を介してアドレスバス１２０からのアドレスがトレースメモリ１０４のアドレス端子に入力される。またライン１２８が選択され、セレクタ１０６を介してトレースメモリ１０４からのデータがデータバス１１８に出力される。これにより、トレースメモリ１０４に蓄えられたデータ（ＤＳＴ［２：０］、ＤＰＣＯ）を、デバッグモード時にＣＰＵ９０（メインモニタプログラム）が読み出すことが可能になる。そして、読み出されたデータとユーザープログラムのソースコードとに基づいて、トレースデータを合成することが可能になる。
【００５７】
６．データの送受信
さて、図９（Ａ）に示すように、ミニモニタ部４０とメインモニタ部６２の間でのデバッグデータの通信の手法としては、ＴＸＤ（送信）とＲＸＤ（受信）のラインを別々に設け、全２重で通信する手法が考えられる。
【００５８】
しかしながら、このようにデバッグデータの通信のために２本のライン（端子）を使用してしまうと、その分だけマイクロコンピュータの端子数（ピン数）が増えてしまい、これはマイクロコンピュータの高コスト化を招く。
【００５９】
そこで本実施形態では、図９（Ｂ）に示すように、ミニモニタ部４０とメインモニタ部６２との間に１本のＴＸＤ／ＲＸＤライン（双方向通信ライン）を設け、半２重の双方向通信を行う。このようにすることで、マイクロコンピュータの端子数の増加を最小限に抑えることができ、マイクロコンピュータの低コスト化を図れる。
【００６０】
そして更に本実施形態では、図９（Ｃ）に示すように、スレーブとなるミニモニタ部４０が、マスタとなるメインモニタ部６２からデータを受信したことを条件に、その受信データに対応する処理を行い、その受信データに対応する応答データをメインモニタ部６２に送信する。即ち、メインモニタ部６２がデータ（コマンド）をミニモニタ部４０に送信すると、ウェイト状態となっていたミニモニタ部４０がこれを受信し、その受信データに対応する処理を行う。そして、その受信データに対応するデータ（リプライ）をメインモニタ部６２に送信する。その後、ミニモニタ部４０は、メインモニタ部６２からデータを受信するまでウェイト状態になる。即ちミニモニタ部４０は、メインモニタ部６２からデータを受信するまで動作を停止し、データを受信したことを条件に動作を開始する。このようにすることで、ミニモニタ部４０とメインモニタ部６２との間の通信ラインを１本にしながら、データを適正に送受信できるようになる。
【００６１】
さて、図９（Ａ）の通信手法は、ＴＸＤとＲＸＤが別ラインになっているため、図９（Ｂ）に比べてデータを高速に通信できるという利点がある。また、ミニモニタ部４０、メインモニタ部６２の一方で通信エラーが発生した場合に、即座にエラーメッセージを他方に返すことができるという利点もある。例えば、ミニモニタ部４０で通信エラーが発生した場合には、ＲＸＤでのデータ受信の終了を待つことなくＴＸＤを使用して即座にエラーメッセージをメインモニタ部６２に返すことができる。
【００６２】
一方、本実施形態では後述するように、ミニモニタ部４０とメインモニタ部６２とでＢＣＬＫを共有させている。これにより後述するように、最適な速度で高速にデータを通信できるようになる。したがって、図９（Ａ）のような通信ラインを２本設ける構成にせずに、図９（Ｂ）のように通信ラインを１本だけ設ける構成にしても、問題なくデバッグデータを高速に送受信できるようになる。
【００６３】
また、本実施形態では後述するように、送受信データは固定長でありデータ長が短い（例えば１４バイト）。したがって、例えばミニモニタ部４０で通信エラーが発生した場合、受信処理の終了を待ってからエラーメッセージを送信しても、時間的な遅れはそれほど大きくならない。また、送受信データのデータ長が短いため、通信エラーの発生自体も最小限に抑えることができる。
【００６４】
このように本実施形態では、デバッグデータの通信ラインを１本だけ設ける構成にすることでマイクロコンピュータの端子数を減らすという利益を得ている。そしてこの利益を得るために生じる不利益（通信速度の低下、エラーメッセージの遅延）を、ＢＣＬＫを共有化したり送受信データを固定長の短いデータにすることで解消している。
【００６５】
７．送受信データのフォーマット及び種類
図１０（Ａ）に、ＴＸＤ／ＲＸＤのラインで送受信されるデータのフォーマット例を示す。送受信データは、１バイトのＩＤ（コマンド識別データ）、１バイトのデータサイズ、４バイトのアドレス、４バイトのデータ１、４バイトのデータ２から成る１４バイトの固定長データになっている。
【００６６】
図１０（Ｂ）に示すように、メインモニタ部６２がミニモニタ部４０にＧＯコマンドの実行を指示する場合、ミニモニタ部４０が受信するデータのＩＤには、ＧＯコマンドの識別データである００ｈが設定される。そしてこの場合には、ミニモニタ部４０は、メインモニタ部６２にデータを送信しない。
【００６７】
図１０（Ｃ）に示すように、メインモニタ部６２がライトコマンドの実行を指示する場合、ミニモニタ部４０の受信データのＩＤには、ライトコマンドの識別データである０１ｈが設定される。また受信データのアドレス、データ１、データ２には、各々、ライトアドレス、ライトデータ１、ライトデータ２が設定される。そして、ミニモニタ部４０の送信データのデータ１には０１ｈが設定される。
【００６８】
なお、ライトコマンドを、バイトデータのライトコマンド、ハーフワードデータのライトコマンド、ワードデータのライトコマンド、ダブルワードデータのライトコマンドというように、ライトするデータの長さに応じて複数種類用意するようにしてもよい。このようにした場合には、各々のライトコマンドに対して異なったＩＤを割り振ることになる。
【００６９】
図１０（Ｄ）に示すように、メインモニタ部６２がリードコマンドの実行を指示する場合、ミニモニタ部４０の受信データのＩＤには、リードコマンドの識別データである０２ｈが設定される。また受信データのアドレスにはリードアドレスが設定される。そして、ミニモニタ部４０の送信データのデータ１、データ２には、各々、リードコマンド処理で得られたリードデータ１、リードデータ２が設定される。
【００７０】
さて、本実施形態では、ミニモニタ部６２が実行するプリミティブコマンドとして、ＧＯ、ライト、リードコマンド以外にも、外部ルーチンジャンプ、データフィルなどのコマンドを用意している。
【００７１】
ここで外部ルーチンジャンプコマンドは、外部ルーチンにジャンプすることを指示するコマンドである。このような外部ルーチンジャンプコマンドを用いることで、例えばフラッシュメモリ（ＥＥＰＲＯＭ）の初期化プログラムや書き込みプログラムのルーチンへのジャンプが可能になる。そして図１１（Ａ）に示すように、メインモニタ部６２が外部ルーチンジャンプコマンドの実行を指示する場合、ミニモニタ部４０の受信データのＩＤには、外部ルーチンジャンプコマンドの識別データである０３ｈが設定される。また受信データのデータサイズ、アドレス、データ１、データ２には、各々、１８ｈ（誤動作防止チェック）、％Ｒ１２（ルーチンアドレス）、％Ｒ１３（ライトデータ）、％Ｒ１４（データアドレス）が設定される。そして、ミニモニタ部４０の送信データのデータ１には、％Ｒ１０（戻り値。戻り値が０の場合に正常終了）が設定される。
【００７２】
またデータフィルコマンドは、メモリを所与の値（例えば０）でフィルするためのコマンドである。例えば大容量のメモリの全てのビットを０の値に設定する場合、ライトコマンドを用いたのでは処理時間が非常に長くなる。このような場合、データフィルコマンドが有効になる。そして図１１（Ｂ）に示すように、メインモニタ部６２がデータフィルコマンドの実行を指示する場合、ミニモニタ部４０の受信データのＩＤには、データフィルコマンドの識別データである０４ｈが設定される。また受信データのデータサイズ、アドレス、データ１、データ２には、各々、データサイズである１、２又は４、スタートアドレス、フィル回数、フィルパターンが設定される。
【００７３】
このように本実施形態では、メインモニタ部６２からの受信データに、ミニモニタ部４０が実行するプリミティブコマンドの識別データＩＤを含ませている。このようにすることで、プリミティブコマンドの実行の指示を簡易にミニモニタ部４０に伝えることが可能になる。
【００７４】
８．固定長の送受信データ
本実施形態では図１０（Ａ）に示すように、ミニモニタ部４０、メインモニタ部６２間の送受信データを１４バイトの固定長のデータにしている。このようにすることで、ミニモニタプログラムの命令コードサイズを更に小さくすることが可能になる。
【００７５】
即ち送受信データを可変長にすると、図１２（Ａ）のＥ１、Ｅ２、Ｅ３に示す処理部分（命令列）が、ほとんど全てのコマンドについて必要になる。これらのＥ１、Ｅ２、Ｅ３の処理部分は、どれだけのデータ数の処理が必要かを判断する部分である。即ち可変長データを処理する場合には、送受信データに含まれるデータサイズに基づいて、処理すべきデータの数を調べる必要がある。そして、そのデータ数を、例えばワーク領域であるＲＡＭ上に保持しておいて、１つのデータの処理が終了する毎にこのデータ数をデクリメントしたり、データ数が０になったか否かを判断したりする処理が必要になる。このため、図１２（Ａ）に示すように、ミニモニタプログラムのソースコードのサイズが大きくなる。
【００７６】
これに対して、本実施形態では、送受信データを固定長にしている。このため、図１２（Ａ）と図１２（Ｂ）を比較すればわかるように、ミニモニタプログラムのソースコードのサイズを可変長の場合に比べて例えば２／３程度にできる。これにより、図３のミニモニタＲＯＭ４２のサイズを更に小さくでき、小さなハードウェア規模でオンチップデバッグ機能を実現できるようになる。
【００７７】
なお、送受信データを固定長にすると通信効率が悪化するため、可変長にする場合に比べて通信速度が低下するという問題が生じる。そこで、本実施形態では後述するように、ミニモニタ部４０とメインモニタ部６２にＢＣＬＫを共有させている。これにより、最適な速度で高速にデータを通信できるようになり、上記の問題を解消できる。
【００７８】
９．ミニモニタＲＯＭ
本実施形態では図３に示すように、マイクロコンピュータ２０内にミニモニタＲＯＭ４２を設け、このミニモニタＲＯＭ４２にミニモニタプログラムを格納するようにしている。このようにすることで、ハードウェアの小規模化、マイクロコンピュータの低コスト化を図れるようになる。
【００７９】
例えば図１３（Ａ）に示す構成では、マイクロコンピュータ３３０にローダロジック回路３３２及びＲＡＭ３３４を設ける。そして、このローダロジック回路３３２を用いて、ＪＴＡＧインターフェース３３６を介して外部からＲＡＭ３３４にモニタプログラムをロードする。しかしながら、この構成では、ローダロジック回路３３２や、サイズがＲＯＭの５〜１０倍程度になるＲＡＭ３３４をマイクロコンピュータ３３０内に設ける必要がある。このため、マイクロコンピュータ３３０の大規模化、高コスト化の問題を招く。
【００８０】
これに対して、本実施形態では図１３（Ｂ）に示すように、ミニモニタプログラムは、サイズがＲＡＭの１／５〜１／１０倍程度になるミニモニタＲＯＭ４２に格納される。またローダロジック回路も必要ない。したがって、図１３（Ａ）の構成に比べて、マイクロコンピュータ２０の小規模化、低コスト化を図れるようになる。
【００８１】
また図１３（Ａ）の構成では、電源投入時又はリセット時に、ＣＰＵを一旦停止し、次にローダロジック回路３３２でモニタプログラムをＲＡＭ３３４にロードし、その後、ＣＰＵをデバッグモードで再スタートする必要がある。このため、処理が複雑化すると共に、デバッグモードのスタートに時間を要するようになってしまう。
【００８２】
これに対して、図１３（Ｂ）の本実施形態では、ＲＡＭにミニモニタプログラムをロードする必要がない。このため、電源投入時又はリセット時に、ＣＰＵを一旦停止することなく、ＣＰＵのデバッグモードの動作をすぐにスタートできるようになる。
【００８３】
１０．ＢＣＬＫの共有化
さて、マイクロコンピュータとデバッグツールとの間でのデータの通信方式としては、いわゆる同期式と呼ばれるものや調歩同期式と呼ばれるものを採用できる。そしてＩＣＥにおいては、マイクロコンピュータとデバッグツールとの間の通信ラインの本数をできる限り少なくすることが望まれる。更に通信データのサンプリングエラーをできる限り防止することも望まれる。
【００８４】
ところが同期式で通信を行う場合には、図１４（Ａ）に示すように、マイクロコンピュータ３４０（第１の情報処理装置）とデバッグツール３４２（第２の情報処理装置）との間に４本の通信ラインを設ける必要がある。即ち、送信データであるＴＸＤのライン、ＴＸＤのサンプリングクロックであるＴＣＬＫのライン、受信データであるＲＸＤのライン、ＲＸＤのサンプリングクロックであるＲＣＬＫのラインが必要になる。このため、通信ラインの本数が不要に増えてしまう。
【００８５】
一方、調歩同期式で通信を行う場合には、図１４（Ｂ）に示すように、マイクロコンピュータ３４０とデバッグツール３４２は、別々にほぼ同一周波数のクロックを持つことになる。例えばマイクロコンピュータ３４０はクロックＣＬＫ１を持ち、デバッグシステム３４２はクロックＣＬＫ２を持ち、ＣＬＫ１とＣＬＫ２の周波数をほぼ同一にする。そしてマイクロコンピュータ３４０は、図１５（Ａ）に示すように、ＣＬＫ１を分周することでサンプリングクロックＳＭＣ１を生成し、調歩同期式で通信されるデータの各ビット（スタートビット、Ｄ０〜Ｄ７、ストップビット）を、このＳＭＣ１でサンプリングする。またデバッグツール３４２は、図１５（Ｂ）に示すように、ＣＬＫ２を分周することでサンプリングクロックＳＭＣ２を生成し、調歩同期式で通信されるデータの各ビット（ステートビット、Ｄ０〜Ｄ７、ストップビット）をこのＳＭＣ２でサンプリングする。
【００８６】
しかしながら、この調歩同期式では、マイクロコンピュータ３４０に含まれるＣＰＵの動作周波数が高くなりＣＬＫ１及びＣＬＫ２の周波数が高くなると、ＳＭＣ１及びＳＭＣ２の周波数も高くなり、通信データのサンプリングエラーが生じやすくなってしまう。逆に言えば、通信データのサンプリングエラーが生じない程度までしか、ＣＬＫ１及びＣＬＫ２の周波数を高くできない。これは、マイクロコンピュータ３４０が高速動作する環境でのデバッグ作業ができないということを意味する。即ち、デバッグ作業時においては、マイクロコンピュータのクロック周波数を下げなければいけなくなる。
【００８７】
このような問題を解決するために本実施形態では、図１６に示すように、マイクロコンピュータ１４０とデバッグツール１５０とで、サンプリングクロックを生成するためのＢＣＬＫを共有させている。
【００８８】
より具体的には、マイクロコンピュータ１４０（第１の情報処理装置）は、通信部１４２（図３のＳＩＯ４８に相当）を含む。そして通信部１４２は、送受信回路１４４（図６の送受信バッファ７０、シフトレジスタ７６及び送受信切替部７８に相当）、分周回路１４６（図６の分周回路８２に相当）を含む。この分周回路１４６は、図１７（Ａ）に示すように、ＢＣＬＫ（第１のクロック）を分周し、調歩同期式で送受信されるデータの各ビットをサンプリングするためのサンプリングクロックＳＭＣ１を生成する。そして、送受信回路１４４は、このＳＭＣ１に基づいてデータを送受信する。更にマイクロコンピュータ１４０は、ＢＣＬＫをデバッグツール１５０に供給する。
【００８９】
デバッグツール１５０（第２の情報処理装置）は、通信部１５２を含む。そして通信部１５２は、送受信回路１５４（図７のＣＰＵ９０、送受信切替部９２に相当）、分周回路１５６（図７の分周回路９６に相当）を含む。この分周回路１５６は、図１７（Ｂ）に示すように、マイクロコンピュータ１４０から供給されたＢＣＬＫを分周し、サンプリングクロックＳＭＣ２を生成する。そして、送受信回路１５４は、このＳＭＣ２に基づいてデータを送受信する。
【００９０】
このように本実施形態では、調歩同期式でありながら、サンプリングクロックＳＭＣ１、ＳＭＣ２を生成するためのＢＣＬＫをマイクロコンピュータ１４０とデバッグツール１５０とで共有する。これにより、通信データのサンプリングエラーの発生率を、図１４（Ｂ）に示す一般的な調歩同期式通信に比べて格段に減少できる。また、図１４（Ａ）の同期式通信では、４本の通信ラインが必要であったが、本実施形態では図１６に示すように２本の通信ラインで済む（全２重の場合には３本）。したがって、マイクロコンピュータ１４０とデバッグツール１５０との間の通信ラインの本数を、図１４（Ａ）に比べて少なくできる。この結果、マイクロコンピュータ１４０の端子数を減らすことが可能になり、マイクロコンピュータ１４０の低コスト化を図れるようになる。
【００９１】
特に、図１４（Ｂ）の構成では、ＣＬＫ１（及びＣＬＫ２）の周波数が高くなればなるほど、通信データのサンプリングエラーの発生率も高くなる。このため、デバッグ作業時においてマイクロコンピュータ３４０のクロック周波数を高くできず、マイクロコンピュータ３４０が高速動作する環境でのデバッグ作業ができなかった。
【００９２】
これに対して、図１６の本実施形態では、マイクロコンピュータ１４０もデバッグツール１５０もＢＣＬＫに基づいてサンプリングクロックを生成している。このため、ＢＣＬＫの周波数が高くなっても、サンプリングエラーの発生率がそれほど高くならない。この結果、マイクロコンピュータ１４０が高速動作する環境でのデバッグ作業が可能になり、より実動作時に近い環境でのデバッグ作業が可能になる。
【００９３】
更に本実施形態では、図１８に示すように、通信部１４２に分周比制御部１４８（図６の制御レジスタ８４に相当）を含ませると共に、通信部１５２に分周比制御部１５８（図７の制御レジスタ９８に相当）、周波数検出回路１５９（図７の周波数検出回路９５に相当）を含ませている。これにより、ＳＭＣ１を生成する際の分周比ＦＤ１と、ＳＭＣ２を生成する際の分周比ＦＤ２を可変に制御することが可能になる。この結果、ＢＣＬＫの周波数が変化しても、最適で高速な通信速度でデータを通信することが可能になる。
【００９４】
即ち図１９（Ａ）に示すようにＢＣＬＫの周波数が低くなった場合には、図１７（Ａ）、（Ｂ）で１６であった分周比ＦＤ１、ＦＤ２が例えば８に変更される。これにより、サンプリングクロックＳＭＣ１、ＳＭＣ２は、ＢＣＬＫを１６分周したクロックから８分周したクロックに変更される。この結果、１ビットのデータに対応するＢＣＬＫのクロック数が、１６であったものが（１６クロックモード）、８に変更される（８クロックモード）。
【００９５】
また図１９（Ｂ）に示すようにＢＣＬＫの周波数が更に低くなった場合には、図１９（Ａ）で８であった分周比ＦＤ１、ＦＤ２が例えば４に変更される。これにより、サンプリングクロックＳＭＣ１、ＳＭＣ２は、ＢＣＬＫを８分周したクロックから４分周したクロックに変更される。この結果、１ビットのデータに対応するＢＣＬＫのクロック数が、８であったものが（８クロックモード）、４になるように変更される（４クロックモード）。
【００９６】
このようにすることで、ＢＣＬＫの周波数が低くなった場合にも、データの通信速度は結局低くならなくなる。この結果、最適で高速な通信速度でデータを通信することが可能になる。
【００９７】
特に、マイクロコンピュータのクロック周波数は、マイクロコンピュータを使用するユーザ毎に異なったものになるのが一般的である。即ち、あるユーザは６０ＭＨＺのクロックでマイクロコンピュータを動作させ、別のユーザは２０ＭＨＺのクロックでマイクロコンピュータを動作させる。
【００９８】
しかしながら、図１４（Ａ）、（Ｂ）の通信方式では、マイクロコンピュータのクロック周波数が変化すると、データの通信速度も変化してしまう。即ち、クロック周波数が低くなるとデータの通信速度も低くなってしまう。したがって、最大限の通信速度でデータを通信することができなくなる。
【００９９】
これに対して、本実施形態では、マイクロコンピュータのクロック周波数が、マイクロコンピュータを使用するユーザに応じて変化すると、分周比ＦＤ１、ＦＤ２も変化し、１ビットのデータに対応するクロック数も変化する。即ちクロック周波数が低くなると、分周比ＦＤ１、ＦＤ２も小さくなり、１ビットのデータに対応するクロック数も少なくなる。この結果、通信速度は結局低くならず、最適で高速な通信速度で通信を行えるようになる。即ち、多様な周波数のクロックを使用するユーザに応じて、最適な通信速度で通信を行えるようになる。
【０１００】
次に、通信部１４２、１５２での処理について図２０、図２１のフローチャートを用いて更に詳細に説明する。
【０１０１】
図２０に示すように、まず、図１８の通信部１５２内の周波数検出回路１５９が、マイクロコンピュータ１４０から供給されるＢＣＬＫの周波数を検出する（ステップＶ１）。そして、ＢＣＬＫの周波数が３０ＭＨＺ以上であるか否かを判断し（ステップＶ２）、３０ＭＨＺ以上である場合には、分周比制御部１５８が分周比ＦＤ２を１６に設定する（ステップＶ３）。そして、ＦＤ２が１６であることを知らせる分周比データを、送受信回路１５４を介してマイクロコンピュータ１４０に送信する（ステップＶ４）。次に、分周回路１５６がＦＤ２＝１６でＢＣＬＫを分周しＳＭＣ２を生成する（ステップＶ５）。そして、以降は、このＳＭＣ２によりデータの送受信を行う。
【０１０２】
ＢＣＬＫの周波数が３０ＭＨＺより低い場合には、周波数が１５ＭＨＺ以上か否かを判断する（ステップＶ６）。そして、周波数が１５ＭＨＺ以上である場合にはＦＤ２＝８に設定し（ステップＶ７）、ステップＶ４、Ｖ５と同様の処理を行う（ステップＶ８、Ｖ９）。また、ＢＣＬＫの周波数が１５ＭＨＺより低い場合にはＦＤ２＝４に設定し（ステップＶ１０）、ステップＶ４、Ｖ５と同様の処理を行う（ステップＶ１１、Ｖ１２）。
【０１０３】
一方、マイクロコンピュータ１４０側では図２１のフローチャートに示すような処理を行う。即ち、まず、デバッグツール１５０から送受信回路１４４を介して分周比データを受信する（ステップＷ１）。次に、受信した分周比データに基づいて分周比制御部１４８が分周比ＦＤ１を決定する（ステップＷ２）。そして、分周回路１４６は、このＦＤ１でＢＣＬＫを分周しＳＭＣ１を生成する。そして、以降は、このＳＭＣ１でデータの送受信を行う。
【０１０４】
１１．ミニモニタ部の詳細な処理例
次にミニモニタ部の詳細な処理例について説明する。
【０１０５】
図２２に示すように、ユーザプログラムの実行中にブレークが発生すると、ミニモニタプログラムの処理がスタートし、ユーザプログラム実行モードからデバッグモードに移行する。そして、ミニモニタプログラムが所与のコマンド処理を行いリターン命令を実行すると、デバッグモードからユーザプログラム実行モードに戻る。
【０１０６】
図２３、図２４に、デバッグモードでのミニモニタプログラムの処理を表すフローチャートを示す。
【０１０７】
デバッグモードに移行すると、ミニモニタプログラムは、まず、図３のＣＰＵ２２の内部レジスタ２４の内容をミニモニタＲＡＭ４４に退避する（ステップＳ１）。そして、ミニモニタプログラムが使用する制御レジスタ４６の設定処理を行う（ステップＳ２）。
【０１０８】
次に、デバッグツール６０から受信した１４バイトのデータ（図１０（Ａ）参照）を、受信バッファ７４（図６参照）にライトする（ステップＳ３）。そして、受信バッファ７４のデータの先頭の１バイト（コマンド識別データＩＤ）をチェックする（ステップＳ４）。
【０１０９】
そして図２４に示すように、ＩＤがリードコマンドを示すものであった場合には（図１０（Ｄ）参照）、受信バッファ７４からリードアドレスを取得する（ステップＳ５、Ｓ６）。そして、取得したリードアドレスからデータをリードし、送信バッファ７２にライトする（ステップＳ７）。次に、送信バッファ７２のデータをデバッグツール６０に送信する（ステップＳ８）。そして、図２３のステップＳ３に戻り、次の受信データを受信バッファ７４にライトする。
【０１１０】
ＩＤがライトコマンドを示すものであった場合には（図１０（Ｃ）参照）、受信バッファ７４からライトアドレスを取得する（ステップＳ９、Ｓ１０）。そして、受信バッファ７４からライトデータを取得し、ステップＳ１０で取得したライトアドレスにライトする（ステップＳ１１）。
【０１１１】
ＩＤが外部ルーチンジャンプコマンドを示すものであった場合には（図１１（Ａ）参照）、受信バッファ７４からルーチンアドレスを取得する（ステップＳ１２、Ｓ１３）。そして、外部ルーチンにジャンプ後、ミニモニタプログラムにリターンする（ステップＳ１４）。
【０１１２】
ＩＤがＧＯコマンドを示すものであった場合には（図１１（Ｂ）参照）、ミニモニタＲＡＭ４４に退避したデータを内部レジスタ２４にリストアする（ステップＳ１５、Ｓ１６）。そして、図２２に示すようにユーザプログラムにリターンし、デバッグモードから抜ける（ステップＳ１７）。
【０１１３】
一方、ＩＤがリード、ライト、外部ルーチンジャンプ、ＧＯコマンドのいずれでもなかった場合には、処理が必要ないと判断する（ステップＳ１５、Ｓ１８）。そして送信バッファ７２にダミーのデータをライトする（ステップＳ１９）。なお、図２４では、データフィルコマンドの処理については省略している。
【０１１４】
以上のようにして、デバッグコマンドを変換することで得られたプリミティブコマンドが、ミニモニタプログラムにより実行されることになる。
【０１１５】
１２．電子機器
次に、以上の本実施形態のマイクロコンピュータを含む電子機器に関して説明する。
【０１１６】
例えば図２５（Ａ）に電子機器の１つであるカーナビゲーションシステムの内部ブロック図を示し、図２６（Ａ）にその外観図を示す。カーナビゲーションシステムの操作はリモコン５１０を用いて行われ、ＧＰＳやジャイロからの情報に基づいて位置検出部５２０が車の位置を検出する。地図などの情報はＣＤＲＯＭ５３０（情報記憶媒体）に格納されている。画像メモリ５４０は画像処理の際の作業領域になるメモリであり、生成された画像は画像出力部５５０を用いて運転者に表示される。マイクロコンピュータ５００は、リモコン５１０、位置検出部５２０、ＣＤＲＯＭ５３０などのデータ入力源からデータを入力し、種々の処理を行い、処理後のデータを画像出力部５５０などの出力装置を用いて出力する。
【０１１７】
図２５（Ｂ）に電子機器の１つであるゲーム装置の内部ブロック図を示し、図２６（Ｂ）にその外観図を示す。このゲーム装置では、ゲームコントローラ５６０からのプレーヤの操作情報、ＣＤＲＯＭ５７０からのゲームプログラム、ＩＣカード５８０からのプレーヤ情報等に基づいて、画像メモリ５９０を作業領域としてゲーム画像やゲーム音を生成し、画像出力部６１０、音出力部６００を用いて出力する。
【０１１８】
図２５（Ｃ）に電子機器の１つであるプリンタの内部ブロック図を示し、図２６（Ｃ）にその外観図を示す。このプリンタでは、操作パネル６２０からの操作情報、コードメモリ６３０及びフォントメモリ６４０から文字情報に基づいて、ビットマップメモリ６５０を作業領域として、印刷画像を生成し、プリント出力部６６０を用いて出力する。またプリンタの状態やモードを表示パネル６７０を用いてユーザに伝える。
【０１１９】
本実施形態のマイクロコンピュータ又はデバッグシステムによれば、図２５（Ａ）〜図２６（Ｃ）の電子機器を動作させるユーザプログラムの開発の容易化、開発期間の短縮化を図れるようになる。またマイクロコンピュータが実動作する環境と同じ環境で、ユーザプログラムのデバッグ作業を行うことができるため、電子機器の信頼性を高めることができる。また電子機器に組み込まれるマイクロコンピュータのハードウェアを小規模化、低コスト化できるため、電子機器の低コスト化も図れるようになる。更にミニモニタプログラムの命令コードサイズは小さいため、ユーザがプログラムや各種データの格納に使用するメモリ領域を最大限に確保でき、場合によれば、ユーザーが使用する該メモリ領域を全く使用せずにモニタプログラムを載せることができる。
【０１２０】
なお本実施形態のマイクロコンピュータを適用できる電子機器としては、上記以外にも例えば、携帯電話（セルラーフォン）、ＰＨＳ、ページャ、オーディオ機器、電子手帳、電子卓上計算機、ＰＯＳ端末、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、パーソナルコンピュータ、テレビ、ビューファインダ型又はモニタ直視型のビデオテープレコーダなど種々のものを考えることができる。
【０１２１】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１２２】
例えば本発明のプリミティブコマンドとしては、本実施形態で説明したものが特に望ましいが、これに限定されるものではない。
【０１２３】
またマイクロコンピュータやミニモニタ部（第１のモニタ手段）の構成も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【０１２４】
またデバッグシステムの構成も図７に示すものに限られるものではない。
【０１２５】
【図面の簡単な説明】
【図１】図１（Ａ）はＣＰＵ置き換え型のＩＣＥ、図１（Ｂ）はモニタプログラム実装型ＩＣＥの例を示す図である。
【図２】本実施形態の特徴について説明するための図である。
【図３】本実施形態のマイクロコンピュータ、デバッグシステムの構成例を示す機能ブロック図である。
【図４】デバッグモード時のメモリマップを示す図である。
【図５】図５（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、デバッグコマンドをプリミティブコマンドへ変換（分解）する処理について説明するための図である。
【図６】ＳＩＯの構成例を示す機能ブロック図である。
【図７】デバッグツールの構成例を示す機能ブロック図である。
【図８】図８（Ａ）、（Ｂ）は、リアルタイムトレース処理について説明するための図である。
【図９】図９（Ａ）、（Ｂ）、（Ｃ）は、ミニモニタ部とメインモニタ部との間の通信手法について説明するための図である。
【図１０】図１０（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、送受信データのフォーマット及び種類について説明するための図である。
【図１１】図１１（Ａ）、（Ｂ）も、送受信データのフォーマット及び種類について説明するための図である。
【図１２】図１２（Ａ）、（Ｂ）は、送受信データが可変長、固定長の場合のミニモニタプログラムのソースコードのサイズについて説明するための図である。
【図１３】図１３（Ａ）、（Ｂ）は、ミニモニタプログラムをＲＯＭに格納する手法について説明するための図である。
【図１４】図１４（Ａ）、（Ｂ）は、同期式、調歩同期式の通信手法について説明するための図である。
【図１５】図１５（Ａ）、（Ｂ）は、一般的な調歩同期式でのクロックとサンプリングクロックとサンプリングデータのタイミング波形を示す図である。
【図１６】本実施形態の通信手法について説明するための図である。
【図１７】図１７（Ａ）、（Ｂ）は、図１６の手法でのクロックとサンプリングクロックとサンプリングデータのタイミング波形を示す図である。
【図１８】本実施形態の通信手法について説明するための図である。
【図１９】図１９（Ａ）、（Ｂ）は、図１８の手法でのクロックとサンプリングクロックとサンプリングデータのタイミング波形を示す図である。
【図２０】デバッグツール側での分周比設定処理について説明するためのフローチャートである。
【図２１】マイクロコンピュータ側での分周比設定処理について説明するためのフローチャートである。
【図２２】ユーザプログラム実行モードからデバッグモードへの移行について説明するための図である。
【図２３】本実施形態の詳細な処理例を説明するためのフローチャートである。
【図２４】本実施形態の詳細な処理例を説明するためのフローチャートである。
【図２５】図２５（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図２６】図２６（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０    マイクロコンピュータ
１２    ＣＰＵ（中央処理ユニット）
１４    ミニモニタ部（第１のモニタ手段）
１６    メインモニタ部（第２のモニタ手段）
２０    マイクロコンピュータ
２２    ＣＰＵ（中央処理ユニット）
２４    内部レジスタ
２６    ＢＣＵ（バス制御ユニット）
２８    内部メモリ
３０    クロック生成部
３１    バス
３２    バス
３３    外部バス
３４    内部バス
３６    外部メモリ
４０    ミニモニタ部（第１のモニタ手段）
４２    ミニモニタＲＯＭ
４４    ミニモニタＲＡＭ
４６    制御レジスタ
４８    ＳＩＯ
５０    トレース部
６０    デバッグツール
６２    メインモニタ部（第２のモニタ手段）
６６    ホストシステム
７０    送受信バッファ
７２    送信バッファ
７４    受信バッファ
７６    シフトレジスタ
７８    送受信切替部
８０    クロック制御部
８２    分周回路
８４    制御レジスタ
９０    ＣＰＵ
９２    送受信切替部
９４    クロック制御部
９５    周波数検出部
９６    分周回路
９８    制御レジスタ
１００  アドレスアップカウンタ
１０２  セレクタ
１０４  トレースメモリ
１０６  セレクタ
１０８  ＲＯＭ
１１０  メインモニタＲＯＭ
１１２  ＲＡＭ
１１４  ＲＳ２３２Ｃインターフェース
１１６  パラレルインターフェース
１１８  クロック生成部
１４０  マイクロコンピュータ（第１の情報処理装置）
１４２  通信部
１４４  送受信回路
１４６  分周回路
１４８  分周比制御部
１５０  デバッグツール（第２の情報処理装置）
１５２  通信部
１５４  送受信回路
１５６  分周回路
１５８  分周比制御部
１５９  周波数検出回路
【図１】
0003684832.tif 000002
【図２】
0003684832.tif 000003
【図３】
0003684832.tif 000004
【図４】
0003684832.tif 000005
【図５】
0003684832.tif 000006
【図６】
0003684832.tif 000007
【図７】
0003684832.tif 000008
【図８】
0003684832.tif 000009
【図９】
0003684832.tif 000010
【図１０】
0003684832.tif 000011
【図１１】
0003684832.tif 000012
【図１２】
0003684832.tif 000013
【図１３】
0003684832.tif 000014
【図１４】
0003684832.tif 000015
【図１５】
0003684832.tif 000016
【図１６】
0003684832.tif 000017
【図１７】
0003684832.tif 000018
【図１８】
0003684832.tif 000019
【図１９】
0003684832.tif 000020
【図２０】
0003684832.tif 000021
【図２１】
0003684832.tif 000022
【図２２】
0003684832.tif 000023
【図２３】
0003684832.tif 000024
【図２４】
0003684832.tif 000025
【図２５】
0003684832.tif 000026
【図２６】
0003684832.tif 000027