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