(57)【要約】  【課題】  ＩＣチップ内に搭載されるデバッグ回路を削減したオンチップデバッグ方式のマイクロコンピュータを提供する。  【解決手段】  このマイクロコンピュータは、データを格納する内部レジスタ１１ａを含み、プログラムに従ってコマンドを実行する中央処理装置１１と、ユーザが作成した第１のプログラムを格納する不揮発性メモリ１２と、中央処理装置が第１のプログラムを実行することによって作成されるデータを一時的に格納するランダムアクセスメモリ１３と、デバッグのための第２のプログラムを格納し、デバッグの際に、内部レジスタに書き込まれているデータをランダムアクセスメモリの一部の記憶領域に退避させた後に、外部のデバッグツール５０から受信したデータに基づいて中央処理装置にコマンドを実行させるモニタ部２０とを具備する。【選択図】  図２
2006133836.tif 000002
【特許請求の範囲】
【請求項１】
オンチップデバッグ機能を有するマイクロコンピュータであって、
データを格納する内部レジスタを含み、プログラムに従ってコマンドを実行する中央処理装置と、
ユーザが作成した第１のプログラムを格納する第１のメモリと、
前記中央処理装置が前記第１のプログラムを実行することによって作成されるデータを一時的に格納する第２のメモリと、
デバッグのための第２のプログラムを格納し、デバッグの際に、前記内部レジスタに書き込まれているデータを前記第２のメモリの一部の記憶領域に退避させた後に、外部のデバッグツールから受信したデータに基づいて前記中央処理装置にコマンドを実行させるモニタ部と、
を具備するマイクロコンピュータ。
【請求項２】
オンチップデバッグ機能を有するマイクロコンピュータであって、
データを格納する内部レジスタを含み、プログラムに従ってコマンドを実行する中央処理装置と、
ユーザが作成した第１のプログラムを格納するメモリと、
外部のメモリにアクセスするためのインタフェースと、
デバッグのための第２のプログラムを格納し、デバッグの際に、前記内部レジスタに書き込まれているデータを前記外部のメモリの一部の記憶領域に退避させた後に、外部のデバッグツールから受信したデータに基づいて前記中央処理装置にコマンドを実行させるモニタ部と、
を具備するマイクロコンピュータ。
【請求項３】
前記第２のメモリ又は前記外部のメモリの前記一部の記憶領域のアドレス値が、前記マイクロコンピュータのピンの接続状態、又は、前記マイクロコンピュータの少なくとも一部が含まれているマクロセルのピンの接続状態に基づいて指定される、請求項１又は２記載のマイクロコンピュータ。
【請求項４】
前記第２のメモリ又は前記外部のメモリの前記一部の記憶領域のアドレス値が、前記マイクロコンピュータの設計においてハードウェア・デスクリプション・ランゲージのパラメータを用いて指定される、請求項１又は２記載のマイクロコンピュータ。
【請求項５】
前記第２のメモリ又は前記外部のメモリの前記一部の記憶領域のアドレス値が、前記内部レジスタに含まれている、割り込み先のアドレス値を格納するレジスタを参照することにより指定される、請求項１又は２記載のマイクロコンピュータ。
【請求項６】
前記第２のメモリ又は前記外部のメモリの前記一部の記憶領域のアドレスが、前記第１のプログラムを実行することによってアクセスされないようにプロテクトされている、請求項１〜５のいずれか１項記載のマイクロコンピュータ。
【請求項７】
マイクロコンピュータの製造方法であって、
データを格納する内部レジスタを含み、プログラムに従ってコマンドを実行する中央処理装置と、ユーザが作成した第１のプログラムを格納する第１のメモリと、前記中央処理装置が前記第１のプログラムを実行することによって作成されるデータを一時的に格納する第２のメモリと、デバッグのための第２のプログラムを格納し、外部のデバッグツールから受信したデータに基づいて前記中央処理装置にコマンドを実行させるモニタ部とを含む第１のマイクロコンピュータを作成するステップと、
前記内部レジスタに書き込まれているデータを前記第２のメモリの一部の記憶領域に退避させた後に、前記外部のデバッグツールから受信したデータに基づいて前記中央処理装置にコマンドを実行させることにより、前記第１のマイクロコンピュータのデバッグを行うステップと、
前記第１のマイクロコンピュータから前記モニタ部を削除した第２のマイクロコンピュータを作成するステップと、
を具備する製造方法。
【請求項８】
マイクロコンピュータの製造方法であって、
データを格納する内部レジスタを含み、プログラムに従ってコマンドを実行する中央処理装置と、ユーザが作成した第１のプログラムを格納するメモリと、外部のメモリにアクセスするためのインタフェースと、デバッグのための第２のプログラムを格納し、外部のデバッグツールから受信したデータに基づいて前記中央処理装置にコマンドを実行させるモニタ部とを含む第１のマイクロコンピュータを作成するステップと、
前記内部レジスタに書き込まれているデータを前記外部のメモリの一部の記憶領域に退避させた後に、前記外部のデバッグツールから受信したデータに基づいて前記中央処理装置にコマンドを実行させることにより、前記第１のマイクロコンピュータのデバッグを行うステップと、
前記第１のマイクロコンピュータから前記モニタ部を削除した第２のマイクロコンピュータを作成するステップと、
を具備する製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ機能を有するマイクロコンピュータ、及び、マイクロコンピュータの製造方法に関する。
【背景技術】
【０００２】
近年、ゲーム装置、カーナビゲーションシステム、プリンタ、携帯情報端末等の電子機器に組み込まれ、高度な情報処理を実現できるマイクロコンピュータに対する需要が高まっている。このような組み込み型のマイクロコンピュータは、通常、ターゲットシステムと呼ばれるユーザボードに実装される。そして、このターゲットシステムを動作させるソフトウェアのデバッグ作業を行うために、イン−サーキット・エミュレータ（ＩＣＥ：登録商標）と呼ばれるソフトウェア開発支援システム（デバッグシステム）が広く使用されている。このようなデバッグ作業において、ユーザは、ＩＣＥを用いてプログラムのバグを見つけ出し、フラッシュメモリ等に格納されているプログラムを修正して書き換える。
【０００３】
従来は、特許文献１又は２の図１（Ａ）に示されているようなＣＰＵ置き換え型と呼ばれるＩＣＥが主流を占めていた。ＣＰＵ置き換え型ＩＣＥにおいては、デバッグ時に、ターゲットシステムからマイクロコンピュータを取り外して、その代わりにデバッグツールのプローブを接続し、デバッグツールがマイクロコンピュータの動作をエミュレート（模倣）することによりデバッグを行う。
【０００４】
しかしながら、ＣＰＵ置き換え型ＩＣＥによれば、プローブのピン数が多くなると、配線が増加してしまうという欠点があった。このため、マイクロコンピュータの高速動作をエミュレートすることは困難である。また、マイクロコンピュータをターゲットシステムに実装して動作させる実動作時と、デバッグツールがマイクロコンピュータの動作をエミュレートするデバッグ時との間で、ターゲットシステムの動作環境が変化してしまう。
【０００５】
そこで、このようなＣＰＵ置き換え型ＩＣＥの欠点を解消するために、特許文献１又は２の図１（Ｂ）に示されているようなモニタプログラム実装型ＩＣＥが用いられるようになった。モニタプログラム実装型ＩＣＥにおいては、ターゲットシステムに実装されているメモリにモニタプログラムが格納され、マイクロコンピュータがモニタプログラムを実行することによってデバッグが行われる。
【０００６】
しかしながら、モニタプログラム実装型ＩＣＥによれば、プログラムのロード、ＧＯ、ステップ実行、メモリのリード・ライト、内部レジスタのリード・ライト、ブレークポイントの設定・解除を含む全てのデバッグコマンドを実行する機能を、モニタプログラムに持たせる必要があった。従って、モニタプログラムの命令コードサイズが非常に大きくなってしまい、ユーザが自由に使用できるメモリ領域が減ってしまうという問題があった。
【０００７】
このようなモニタプログラム実装型ＩＣＥの問題点を解決するために、従来ＩＣＥ上に搭載していたデバッグ回路の一部をＩＣチップ内に搭載するオンチップデバッグと呼ばれる方式が用いられている。特許文献１又は２の図３に示されているオンチップデバッグ方式によれば、ＣＰＵ及びミニモニタ部を内蔵するマイクロコンピュータに、メインモニタ部を含むデバッグツールが接続され、さらに、デバッグツールにホストシステムが接続される。
【０００８】
ミニモニタ部には、制御レジスタと、ミニモニタＲＯＭと、ミニモニタＲＡＭ（ランダムアクセスメモリ）と、デバッグツールとの間でデータを送受信するためのシリアル入出力回路（ＳＩＯ）とが含まれている。デバッグモードにおいては、制御レジスタが、ミニモニタＲＯＭに格納されているミニモニタプログラムに基づいて、各種のデバッグ処理を制御する。ミニモニタプログラムは、ＧＯ、リード、ライト等のプリミティブなコマンドの処理のみをＣＰＵに実行させるので、ミニモニタＲＯＭのメモリ容量を、例えば２５６バイト程度に抑えることができる。一方、ミニモニタＲＡＭには、デバッグモード移行時にＣＰＵの内部レジスタの内容が退避される。これにより、デバッグモードの終了後にユーザプログラムの実行を適正に再スタートできるようになる。
【０００９】
このように、従来のオンチップデバッグ方式のマイクロコンピュータにおいては、ビット単価の高いＡＳＩＣのゲートアレイによって構成されるミニモニタＲＡＭを含むデバッグ回路がＩＣチップ内に搭載されていたので、チップコストの上昇や設計・製造の煩雑化を招いていた。
【特許文献１】特開平１１−２８２７１５号公報（第５〜６頁、図１〜図３）
【特許文献２】特開平１１−２８２７２０号公報（第２〜３頁、図１〜図３）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
そこで、上記の点に鑑み、本発明は、ＩＣチップ内に搭載されるデバッグ回路を削減したオンチップデバッグ方式のマイクロコンピュータを提供することを目的とする。さらに、本発明は、ＩＣチップ内に搭載されるデバッグ回路を削減したマイクロコンピュータの製造方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明の第１の観点に係るマイクロコンピュータは、オンチップデバッグ機能を有するマイクロコンピュータであって、データを格納する内部レジスタを含み、プログラムに従ってコマンドを実行する中央処理装置と、ユーザが作成した第１のプログラムを格納する第１のメモリと、中央処理装置が第１のプログラムを実行することによって作成されるデータを一時的に格納する第２のメモリと、デバッグのための第２のプログラムを格納し、デバッグの際に、内部レジスタに書き込まれているデータを第２のメモリの一部の記憶領域に退避させた後に、外部のデバッグツールから受信したデータに基づいて中央処理装置にコマンドを実行させるモニタ部とを具備する。
【００１２】
また、本発明の第２の観点に係るマイクロコンピュータは、オンチップデバッグ機能を有するマイクロコンピュータであって、データを格納する内部レジスタを含み、プログラムに従ってコマンドを実行する中央処理装置と、ユーザが作成した第１のプログラムを格納するメモリと、外部のメモリにアクセスするためのインタフェースと、デバッグのための第２のプログラムを格納し、デバッグの際に、内部レジスタに書き込まれているデータを外部のメモリの一部の記憶領域に退避させた後に、外部のデバッグツールから受信したデータに基づいて中央処理装置にコマンドを実行させるモニタ部とを具備する。
【００１３】
以上において、第２のメモリ又は外部のメモリの一部の記憶領域のアドレス値が、マイクロコンピュータのピンの接続状態、又は、マイクロコンピュータの少なくとも一部が含まれているマクロセルのピンの接続状態に基づいて指定されるようにしても良いし、マイクロコンピュータの設計においてハードウェア・デスクリプション・ランゲージのパラメータを用いて指定されるようにしても良いし、内部レジスタに含まれている、割り込み先のアドレス値を格納するレジスタを参照することにより指定されるようにしても良い。
【００１４】
また、第２のメモリ又は外部のメモリの一部の記憶領域のアドレスが、第１のプログラムを実行することによってアクセスされないようにプロテクトされるようにしても良い。
【００１５】
本発明の第１の観点に係るマイクロコンピュータの製造方法は、データを格納する内部レジスタを含み、プログラムに従ってコマンドを実行する中央処理装置と、ユーザが作成した第１のプログラムを格納する第１のメモリと、中央処理装置が第１のプログラムを実行することによって作成されるデータを一時的に格納する第２のメモリと、デバッグのための第２のプログラムを格納し、外部のデバッグツールから受信したデータに基づいて中央処理装置にコマンドを実行させるモニタ部とを含む第１のマイクロコンピュータを作成するステップと、内部レジスタに書き込まれているデータを第２のメモリの一部の記憶領域に退避させた後に、外部のデバッグツールから受信したデータに基づいて中央処理装置にコマンドを実行させることにより、第１のマイクロコンピュータのデバッグを行うステップと、第１のマイクロコンピュータからモニタ部を削除した第２のマイクロコンピュータを作成するステップとを具備する。
【００１６】
また、本発明の第２の観点に係るマイクロコンピュータの製造方法は、データを格納する内部レジスタを含み、プログラムに従ってコマンドを実行する中央処理装置と、ユーザが作成した第１のプログラムを格納するメモリと、外部のメモリにアクセスするためのインタフェースと、デバッグのための第２のプログラムを格納し、外部のデバッグツールから受信したデータに基づいて中央処理装置にコマンドを実行させるモニタ部とを含む第１のマイクロコンピュータを作成するステップと、内部レジスタに書き込まれているデータを外部のメモリの一部の記憶領域に退避させた後に、外部のデバッグツールから受信したデータに基づいて中央処理装置にコマンドを実行させることにより、第１のマイクロコンピュータのデバッグを行うステップと、第１のマイクロコンピュータからモニタ部を削除した第２のマイクロコンピュータを作成するステップとを具備する。
【発明の効果】
【００１７】
本発明に係るマイクロコンピュータによれば、モニタ部においてランダムアクセスメモリを必要としないので、ＩＣチップ内に搭載されるデバッグ回路を削減したオンチップデバッグ方式のマイクロコンピュータを提供することができる。また、デバッグの際に、モニタ部の外部のメモリを用いることにより、大きなメモリ領域を確保して、デバッグ機能を向上させることができる。さらに、本発明に係るマイクロコンピュータの製造方法によれば、モニタ部を削除することが可能である。
【発明を実施するための最良の形態】
【００１８】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図１は、本発明の第１の実施形態に係るオンチップデバッグ方式のマイクロコンピュータ及びそのデバッグシステムの構成を示す図である。図１に示すように、デバッグの対象となるマイクロコンピュータ１０は、プログラムを実行することによって各種の処理を行うＣＰＵ（中央処理装置）１１と、ユーザプログラムを格納するフラッシュメモリ１２と、ユーザプログラムを実行することによって作成されるデータを一時的に格納するＲＡＭ１３と、ユーザプログラムのデバッグ時に用いられるミニモニタ部２０とを含んでいる。必要に応じて、ＳＲＡＭやＤＲＡＭ等の外部メモリ４０が、マイクロコンピュータ１０に接続される。
【００１９】
ユーザプログラムのデバッグ時には、マイクロコンピュータ１０に、メインモニタ部５１を含むデバッグツール５０が接続され、さらに、デバッグツール５０にホストコンピュータ６０が接続される。ここで、ミニモニタ部２０と、デバッグツール５０と、ホストコンピュータ６０とが、デバッグシステムを構成している。
【００２０】
ホストコンピュータ６０においては、プログラムロード、ＧＯ、ステップ実行、メモリライト、メモリリード、内部レジスタライト、内部レジスタリード、ブレークポイント設定、ブレークポイント解除等のデバッグコマンドが用いられる。デバッグツール５０のメインモニタ部５１は、このようなデバッグコマンドを、例えば、ＧＯ、ライト、リード等のシンプルなプリミティブコマンドに変換するための処理を行う。これにより、ミニモニタ部２０において、デバッグ処理を行うミニモニタプログラムの命令コードサイズを、格段に小さくすることができる。
【００２１】
図２は、本発明の第１の実施形態に係るマイクロコンピュータの詳細な構成を示す図である。図２に示すように、マイクロコンピュータ１０は、ＣＰＵ１１、フラッシュメモリ１２、ＲＡＭ１３、タイマー１４、ＤＭＡ（ダイレクトメモリアクセス）転送制御部１５、シリアル入出力回路（ＳＩＯ）１６、ＵＳＢインタフェース（Ｉ／Ｆ）１７、外部メモリインタフェース（Ｉ／Ｆ）１８、クロック生成部１９、ミニモニタ部２０、トレース部３０を含んでいる。ここで、ＣＰＵ１１とミニモニタ部２０とは、マクロセル１０ａを構成しており、それ以外の構成要素は、ユーザの希望により、任意に追加したり削除したりすることができる。
【００２２】
ＣＰＵ１１は、内部レジスタ１１ａを有している。内部レジスタ１１ａには、汎用レジスタや、スタックポインタレジスタや、積和結果データの上位及び下位レジスタ等が含まれている。
【００２３】
クロック生成部１９は、マイクロコンピュータ１０内で使用される各種のクロック信号を生成すると共に、ミニモニタ部２０及びデバッグツール５０において使用されるクロック信号ＢＣＬＫを生成する。
【００２４】
ミニモニタ部２０は、制御レジスタ２１と、ミニモニタＲＯＭ２２と、シリアル入出力回路（ＳＩＯ）２３とを含んでいる。制御レジスタ２１は、デバッグモードにおいて各種のデバッグ処理を制御するために用いられるレジスタであり、ステップ実行イネーブルビット、ブレークイネーブルビット、ブレークアドレスビット、トレースイネーブルビット等を有している。
【００２５】
ミニモニタＲＯＭ２２には、ミニモニタプログラムが格納されている。デバッグモードにおいて、ＣＰＵ１１が、ミニモニタプログラムに基づいて、制御レジスタ２１の各ビットにデータをライトしたり、各ビットのデータをリードしたりすることにより、各種のデバッグ処理が実現される。ミニモニタプログラムは、ＧＯ、リード、ライト等のプリミティブなコマンドの処理のみをＣＰＵ１１に実行させるので、ミニモニタＲＯＭ２２のメモリ容量を、例えば２５６バイト程度に抑えることができる。
【００２６】
シリアル入出力回路２３は、デバッグツール５０との間でデータを送受信するためのものである。シリアル入出力回路２３とデバッグツール５０との間は、送信データＴＸＤ及び受信データＲＸＤを伝送するためのデータ送受信ラインによって接続されている。
【００２７】
トレース部３０は、リアルタイムトレース機能を実現するためのものである。トレース部３０とデバッグツール５０との間は、ＣＰＵ１１の命令実行のステートを表す３ビットのデータＤＳＴ［２：０］と、分岐先のＰＣ（プログラムカウンタ）値を表す１ビットのデータＤＰＣＯとを伝送するための４本のラインによって接続されている。ここで、［２：０］は、ビット番号２〜０のデータを意味する。なお、本願においては、一般にならい、最下位ビットのビット番号を０とし、上位ビットに向かってビット番号をカウントする。
【００２８】
再び図１を参照すると、デバッグツール５０は、メインモニタ部５１を含み、デバッグの対象となるマイクロコンピュータ１０、及び、デバッグ作業の操作端末であるホストコンピュータ６０に接続されている。ユーザの操作に基づいて、ホストコンピュータ６０が、プログラムロードやステップ実行等のデバッグコマンドを発行すると、メインモニタ部５１が、これらのデバッグコマンドをプリミティブコマンドに変換するための処理を行う。メインモニタ部５１が、プリミティブコマンドの実行を指示するデータをミニモニタ部２０に送信すると、ミニモニタ部２０は、指示されたプリミティブコマンドを実行するための処理を行う。
【００２９】
従来は、ミニモニタ部２０内に、デバッグモード移行時にＣＰＵ１１の内部レジスタ１１ａの内容が退避されるミニモニタＲＡＭが設けられており、デバッグモードの終了後にユーザプログラムの実行を適正に再スタートできるようになっていた。しかしながら、ミニモニタＲＡＭは、ビット単価の高いＡＳＩＣのゲートアレイによって構成されるので、チップコストの上昇や設計・製造の煩雑化を招いていた。そこで、本実施形態においては、図２に示すように、ミニモニタ部２０内のミニモニタＲＡＭを削除して、その機能をマイクロコンピュータ１０内のＲＡＭ１３又は外部メモリ４０に持たせるようにしている。
【００３０】
ミニモニタＲＡＭを有する従来のマイクロコンピュータに対応したデバッグツール５０をそのまま使用できるようにするためには、本実施形態に係るマイクロコンピュータ１０において、ミニモニタＲＡＭのアドレス値を変換する必要がある。そのための手段としては、マイクロコンピュータ１０又はマクロセル１０ａの複数（例えば２５個）のピン（パッド又は端子）の設定によって、デバッグモードにおけるメモリのアドレス値を外部から指定できるようにする。即ち、複数のピンの接続状態に応じてそれらのピンに印加される電位に基づいて、デバッグモードにおけるメモリのアドレス値が指定される。さらに、多数のアドレス値が必要な場合には、第１のアドレス値Ａをピン設定によって指定することにより、他のアドレス値を（Ａ＋１）、（Ａ＋２）、（Ａ＋３）、・・・のようにして求めれば良い。
【００３１】
従来のミニモニタＲＡＭのアドレス値が入力された場合には、制御レジスタ２１内のアドレスレジスタを参照する替わりに、ピン設定によって指定されたアドレス値を参照することにより、従来のミニモニタＲＡＭのアドレス値をＲＡＭ１３又は外部メモリ４０の一部の記憶領域（ミニモニタ領域）のアドレス値に変換するように、ミニモニタＲＯＭ２２に格納されるミニモニタプログラムを変更しておく。
【００３２】
あるいは、ＨＤＬ（ハードウェア・デスクリプション・ランゲージ）を用いてマイクロコンピュータ１０の設計を行う際に、ＨＤＬのパラメータを変更して論理回路を変更することにより、デバッグモードにおけるメモリのアドレス値を変換しても良い。これにより、ＲＡＭ１３又は外部メモリ４０のミニモニタ領域のアドレス値が、マイクロコンピュータの設計においてＨＤＬのパラメータを用いて指定される。
【００３３】
あるいは、ＣＰＵ１１の内部レジスタ１１ａには、割り込み先のテーブルのアドレス値を格納するトラップテーブルベースレジスタ（ＴＴＢＲ）と呼ばれるレジスタが含まれているので、デバッグモードにおけるメモリのアドレス値をＴＴＢＲに格納しておき、その内容をＣＰＵ１１が参照して取り込むように、ミニモニタプログラムの内容を変更しても良い。
【００３４】
図３の（Ａ）は、従来のマイクロコンピュータにおけるデバッグモード時のメモリマップの例を示す図であり、図３の（Ｂ）は、本実施形態に係るマイクロコンピュータにおけるデバッグモード時のメモリマップの例を示す図である。この例においては、従来のミニモニタＲＡＭの機能を、マイクロコンピュータ１０内のＲＡＭ１３（以下、「内部ＲＡＭ」ともいう）の一部の記憶領域（ミニモニタ領域）に移している。
【００３５】
従来は、図３の（Ａ）に示すように、データＤ１〜Ｄ３を格納するために、制御レジスタのアドレスと、ミニモニタＲＡＭのアドレスと、ミニモニタＲＯＭのアドレスとが、メモリマップ上にそれぞれ割り付けられていた。これに対し、本実施形態においては、図３の（Ｂ）に示すように、データＤ１〜Ｄ３を格納するために、図２に示す制御レジスタ２１のアドレスと、内部ＲＡＭ１３のミニモニタ領域のアドレスと、ミニモニタＲＯＭ２２のアドレスが、メモリマップ上にそれぞれ割り付けられている。
【００３６】
その結果、データＤ２を格納するための内部ＲＡＭ１３のミニモニタ領域が、データＤ４を格納するための内部ＲＡＭ１３の記憶領域と重複して使用されるおそれがあるので、デバッグ時にミニモニタ領域がユーザプログラムによって使用できないことを、スペックにおいて明確に規定しておく。さらに、本実施形態においては、ユーザプログラムにおいてミニモニタ領域のアドレスが指定されても、デバッグモードにおいてはミニモニタ領域に対してデータの書込みや読出しを行わないように、ミニモニタプログラムにおいてプロテクションをかけている。
【００３７】
一方、従来のミニモニタＲＡＭの替わりに、図１に示す外部メモリ４０を使用する場合には、データＤ２を格納するために、外部メモリ４０の一部の記憶領域（ミニモニタ領域）が使用される。その場合には、データの書込み及び読出しが、図２に示す外部メモリインタフェース１８を介して行われる。
【００３８】
次に、本実施形態におけるコマンド変換処理について説明する。
図４に、各種のデバッグコマンドをプリミティブなコマンドに変換する処理を模式的に示す。図４の（Ａ）は、プログラムロードコマンドの変換を示している。図４の（Ａ）に示すように、（ＡＤＤ・・・、ＳＵＢ・・・、ＡＮＤ・・・、ＯＲ・・・、ＸＯＲ・・・、ＬＤ．Ｗ・・・）という１２バイトのプログラムを８００１０ｈ番地にロードするというデバッグコマンドは、ライト（８００１０ｈ、ＡＤＤ・・・、ＳＵＢ・・・）と、ライト（８００１４ｈ、ＡＮＤ・・・、ＯＲ・・・）と、ライト（８００１８ｈ、ＸＯＲ・・・、ＬＤ．Ｗ・・・）という３つのプリミティブなコマンドに変換される。ミニモニタプログラムが、これらのプリミティブなコマンドを実行することにより、プログラムロードコマンドが実現されたことになる。
【００３９】
図４の（Ｂ）は、ステップ実行コマンドの変換を示している。ステップ実行というデバッグコマンドは、図２に示す制御レジスタ２１のステップ実行イネーブルビットへのライトコマンド（図３に示すメモリマップにおけるデータＤ１の所定のアドレスへのライトコマンド）と、ＧＯコマンドという２つのプリミティブなコマンドに変換される。
【００４０】
図４の（Ｃ）は、内部レジスタリードコマンドの変換を示している。内部レジスタリードというデバッグコマンドは、図２に示す内部ＲＡＭ１３のミニモニタ領域（内部レジスタの内容の退避先）からのリードコマンド（図３の（Ｂ）に示すメモリマップにおけるデータＤ２のリードコマンド）というプリミティブなコマンドに変換される。また、内部レジスタライトコマンドは、内部ＲＡＭ１３のミニモニタ領域へのライトコマンドというプリミティブなコマンドに変換される。同様に、メモリリードコマンド、メモリライトコマンド等のデバッグコマンドも、プリミティブなコマンドに変換される。
【００４１】
一方、従来のミニモニタＲＡＭの替わりに、図１に示す外部メモリ４０を使用する場合には、内部レジスタリードというデバッグコマンドは、外部メモリ４０からのリードコマンドに変換される。また、内部レジスタライトコマンドは、外部メモリ４０へのライトコマンドというプリミティブなコマンドに変換される。
【００４２】
図４の（Ｄ）は、ブレークポイント設定コマンドの変換を示している。ブレークポイント設定というデバッグコマンドは、図２に示す制御レジスタ２１のブレークイネーブルビット及びブレークアドレスビットへのライトコマンドというプリミティブなコマンドに変換される。
【００４３】
次に、本実施形態におけるリアルタイムトレース処理について説明する。
本実施形態においては、図２に示すＣＰＵ１１の命令実行のステートを表す３ビットのデータＤＳＴ［２：０］と、分岐先のプログラムカウンタ（ＰＣ）値を表す複数ビットシリアルのデータＤＰＣＯとを、トレース部３０からデバッグツール５０に送信し、デバッグツール５０内のトレースメモリに蓄える。
【００４４】
以下に、ＤＳＴの例について説明する。ＤＳＴ「０００」は、通常命令（分岐なし命令）の実行を表しており、ＣＰＵ１１が、アドレスの順番に命令を実行した状態であることが分る。ＤＳＴ「００１」は、相対分岐命令の実行を表しており、ＣＰＵ１１が、プログラム中に明示的に記述されたアドレスに分岐する命令である相対分岐命令を実行した状態であることが分る。ＤＳＴ「０１０」は、絶対分岐命令の実行を表しており、ＣＰＵ１１が、プログラムの実行中にレジスタの値によって分岐先のアドレスが決まる命令である絶対分岐命令を実行した状態であることが分る。
【００４５】
デバッグツール５０は、トレースメモリに蓄えられたデータと、ユーザプログラムのソースコードとに基づいて、トレースデータを合成する。これにより、マイクロコンピュータ１０とデバッグツール５０との間の接続ラインの本数を少なくしながら、リアルタイムトレース機能を実現することが可能となる。
【００４６】
次に、ミニモニタ部とメインモニタ部との間のデータの送受信について説明する。
マイクロコンピュータ１０のミニモニタ部２０とデバッグツール５０のメインモニタ部５１との間におけるデバッグデータの通信の方法としては、送信データＴＸＤ用のラインと受信データＲＸＤ用のラインとを別々に設けて、全２重で通信を行うことも考えられる。しかしながら、デバッグデータの通信のために２本のラインを使用すると、マイクロコンピュータ１０のピン数が増えてしまい、コストアップを招くことになる。そこで、本実施形態においては、図２に示すように、マイクロコンピュータ１０のミニモニタ部２０とデバッグツール５０のメインモニタ部５１との間に設けた１本の双方向通信ラインを用いて、半２重の双方向通信を行うようにしている。
【００４７】
本実施形態においては、スレーブとなるミニモニタ部２０が、マスタとなるメインモニタ部５１からデータを受信したことを条件に、その受信データに対する処理を行い、その受信データに対する応答データをメインモニタ部５１に送信する。即ち、メインモニタ部５１がデータ（コマンド）をミニモニタ部２０に送信すると、ウエイト状態となっていたミニモニタ部２０がこれを受信し、受信したデータに対応する処理を行った後に、受信したデータに対応するデータ（リプライ）をメインモニタ部５１に送信する。その後、ミニモニタ部２０は、メインモニタ部５１から再びデータを受信するまでウエイト状態となる。これにより、ミニモニタ部２０とメインモニタ部５１との間の通信ラインを１本にしながら、データを適正に送受信できるようになる。
【００４８】
次に、ミニモニタ部の役割りについて説明する。
図５は、ユーザプログラムとミニモニタプログラムにおける処理の流れを示す図である。図５に示すように、ユーザプログラムの実行中にブレークが発生すると、ミニモニタプログラムによる処理がスタートし、ユーザプログラム実行モードからデバッグモードに処理が移行する。ＣＰＵ１１（図２）がミニモニタプログラムに従って所定のコマンド処理を行い、その後、リターン命令を実行すると、デバッグモードからユーザプログラム実行モードに処理が戻る。
【００４９】
図６は、デバッグモードにおけるミニモニタプログラムによる処理を示すフローチャートである。デバッグモードに処理が移行すると、図２に示すＣＰＵ１１が、ステップＳ１において、内部レジスタ１１ａの内容を内部ＲＡＭ１３のミニモニタ領域に退避させ、ステップＳ２において、ミニモニタプログラムにおいて使用する制御レジスタ２１の設定処理を行う。
【００５０】
ステップＳ３において、ＣＰＵ１１が、デバッグツール５０から受信した１４バイトの受信データを受信バッファに書き込む。この１４バイトの受信データは、１バイトのコマンド識別情報（ＩＤ）と、１バイトのデータサイズ情報と、４バイトのアドレスと、４バイトの第１のデータと、４バイトの第２のデータとによって構成されている。ステップＳ４において、ＣＰＵ１１が、受信バッファに書き込まれた１４バイトの受信データにおける先頭の１バイト（コマンド識別情報）をチェックする。
【００５１】
ステップＳ５において、コマンド識別情報がリードコマンドを示すものであるか否かが判定され、コマンド識別情報がリードコマンドを示す場合には処理がステップＳ６に移行し、そうでない場合には処理がステップＳ９に移行する。ＣＰＵ１１は、ステップＳ６において、受信バッファからリードアドレスを取得し、ステップＳ７において、取得したリードアドレスからデータをリードし、リードされたデータを送信バッファにライトし、ステップＳ８において、送信バッファのデータをデバッグツール５０に送信する。
【００５２】
ステップＳ９において、コマンド識別情報がライトコマンドを示すものであるか否かが判定され、コマンド識別情報がライトコマンドを示す場合には処理がステップＳ１０に移行し、そうでない場合には処理がステップＳ１２に移行する。ＣＰＵ１１は、ステップＳ１０において、受信バッファからライトアドレスを取得し、ステップＳ１１において、受信バッファからライトデータを取得し、ステップＳ１０において取得されたライトアドレスにライトデータをライトする。
【００５３】
ステップＳ１２において、コマンド識別情報が外部ルーチンジャンプコマンドを示すものであるか否かが判定され、コマンド識別情報が外部ルーチンジャンプコマンドを示す場合には処理がステップＳ１３に移行し、そうでない場合には処理がステップＳ１５に移行する。ＣＰＵ１１は、ステップＳ１３において、受信バッファからルーチンアドレスを取得し、ステップＳ１４において、外部ルーチンにジャンプした後、ミニモニタプログラムにリターンする。
【００５４】
ステップＳ１５において、コマンド識別情報がＧＯコマンドを示すものであるか否かが判定され、コマンド識別情報がＧＯコマンドを示す場合には処理がステップＳ１６に移行し、そうでない場合には処理がステップＳ１８に移行する。ＣＰＵ１１は、ステップＳ１６において、内部ＲＡＭ１３のミニモニタ領域に退避させたデータを内部レジスタ１１ａにリストアし、ステップＳ１７において、ユーザプログラムにリターンしてデバッグモードから抜ける。
【００５５】
一方、コマンド識別情報が、リード、ライト、外部ルーチンジャンプ、ＧＯコマンドのいずれでもない場合には、ステップＳ１８において、処理が必要でないと判断し、ステップＳ１９において、送信バッファにダミーのデータを書き込み、ステップＳ８において、送信バッファのデータをデバッグツール５０に送信する。ステップＳ８の後、処理はステップＳ３に戻り、ＣＰＵ１１が、次に受信した受信データを受信バッファに書き込む。
【００５６】
次に、本発明の第２の実施形態について説明する。
図７は、本発明の第２の実施形態に係るマイクロコンピュータの構成を示す図である。図７の（Ａ）に示すマイクロコンピュータにおいては、半導体基板（チップ）７１に、プログラムを実行することによって各種の処理を行うＣＰＵ１１と、ユーザプログラムを格納するフラッシュメモリ１２と、ユーザプログラムを実行することによって作成されるデータを一時的に格納するＲＡＭ１３と、ユーザプログラムのデバッグ時に用いられるミニモニタ部２０とが形成されている。本実施形態においては、少なくともミニモニタ部２０が、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）を用いて構成される。これにより、ミニモニタ部２０と他の部分とのインタフェースをシンプルにすることができ、ミニモニタ部２０を分離し易くなる。デバッグの必要がなくなった際には、図７の（Ａ）に示すマイクロコンピュータからミニモニタ部２０を削除して、図７の（Ｂ）に示すマイクロコンピュータとすることができる。
【００５７】
図７の（Ａ）に示すミニモニタ部２０の構成は図２に示すものと同様であるが、制御レジスタ２１のアドレスを可変とし、それに対応して制御レジスタ２１のアドレスデコーダを変更することにより、従来のデバッグツール５０を用いたデバッグを可能としながら、回路構成の自由度を高めている。即ち、追加のタイマーやメモリをマイクロコンピュータ内に取り込む場合に、ミニモニタ部２０内の制御レジスタ２１のアドレス値を後にずらして、追加のタイマーやメモリのアドレス値をその前に挿入することが可能となる。
【００５８】
次に、本発明の第２の実施形態に係るマイクロコンピュータの製造方法について説明する。
本発明の第２の実施形態に係るマイクロコンピュータの製造方法によれば、試作段階において、図７の（Ａ）に示すマイクロコンピュータを作成する。その後、図１に示すようなデバッグシステムを用いて、マイクロコンピュータにおいて動作するユーザプログラムのデバッグを行う。ユーザプログラムのデバッグが完了したら、量産段階において、ミニモニタ部２０を含まない図７の（Ｂ）に示すマイクロコンピュータを作成する。これにより、量産段階においては、デバッグ回路分のコストを低減したマイクロコンピュータを提供することができる。
【００５９】
また、制御レジスタ２１（図２）のアドレスを可変としておくことにより、追加のタイマーやメモリのアドレス値をミニモニタ部２０内の制御レジスタ２１のアドレス値の前に挿入できるので、ミニモニタ部２０を削除したマイクロコンピュータにおいて、アドレス値の良好な連続性を確保することが可能となる。
【００６０】
図８は、本発明の第３の実施形態に係るマイクロコンピュータの構成を示す図である。図８に示すマイクロコンピュータにおいては、半導体基板（チップ）８１に、プログラムを実行することによって各種の処理を行うＣＰＵ１１と、ユーザプログラムを格納するフラッシュメモリ１２と、ユーザプログラムを実行することによって作成されるデータを一時的に格納するＲＡＭ１３とが形成されており、半導体基板（チップ）８２に、ユーザプログラムのデバッグ時に用いられるミニモニタ部２０が形成されている。チップ８１に形成された回路とチップ８２に形成された回路とは、インタフェースを介して電気的に接続されている。本実施形態においては、少なくともミニモニタ部２０を、フィールド・プログラマブル・ゲートアレイによって構成する。これにより、ミニモニタ部２０と他の部分とのインタフェースをシンプルにすることができ、ミニモニタ部２０を分離し易くなる。デバッグの必要がなくなった際には、図８に示すマイクロコンピュータから、ミニモニタ部２０を削除することができる。
【００６１】
図８に示すミニモニタ部２０の構成は図２に示すものと同様であるが、制御レジスタ２１のアドレスを可変とし、それに対応して制御レジスタ２１のアドレスデコーダを変更することにより、従来のデバッグツール５０を用いたデバッグを可能としながら、回路構成の自由度を高めている。即ち、追加のタイマーやメモリをマイクロコンピュータ内に取り込む場合に、ミニモニタ部２０内の制御レジスタ２１のアドレス値を後にずらして、追加のタイマーやメモリのアドレス値をその前に挿入することが可能となる。
【００６２】
次に、本発明の第３の実施形態に係るマイクロコンピュータの製造方法について説明する。
本発明の第３の実施形態に係るマイクロコンピュータの製造方法によれば、試作段階において、図８に示すチップ８１とチップ８２とを含むマイクロコンピュータを作成する。その後、図１に示すようなデバッグシステムを用いて、マイクロコンピュータにおいて動作するユーザプログラムのデバッグを行う。ユーザプログラムのデバッグが完了したら、量産段階において、図８に示すチップ８１のみを含むマイクロコンピュータを作成する。これにより、量産段階においては、デバッグ回路分のコストを低減したマイクロコンピュータを提供することができる。
【００６３】
本実施形態においても、制御レジスタ２１（図２）のアドレスを可変としておくことにより、追加のタイマーやメモリのアドレス値をミニモニタ部２０内の制御レジスタ２１のアドレス値の前に挿入できるので、ミニモニタ部２０を削除したマイクロコンピュータにおいて、アドレス値の良好な連続性を確保することが可能となる。
【図面の簡単な説明】
【００６４】
【図１】本発明の第１の実施形態に係るマイクロコンピュータ等を示す図。
【図２】本発明の第１の実施形態に係るマイクロコンピュータの詳細な構成を示す図。
【図３】従来と本発明の第１の実施形態におけるメモリマップの例を示す図。
【図４】各種のデバッグコマンドをプリミティブなコマンドに変換する処理を示す図。
【図５】ユーザプログラムとミニモニタプログラムにおける処理の流れを示す図。
【図６】デバッグモードにおけるミニモニタプログラムの処理を示すフローチャート。
【図７】本発明の第２の実施形態に係るマイクロコンピュータの構成を示す図。
【図８】本発明の第３の実施形態に係るマイクロコンピュータの構成を示す図。
【符号の説明】
【００６５】
１０  マイクロコンピュータ、  １０ａ  マクロセル、  １１  ＣＰＵ（中央処理装置）、  １１ａ  内部レジスタ、  １２  フラッシュメモリ、  １３  ＲＡＭ、  １４  タイマー、  １５  ＤＭＡ（ダイレクトメモリアクセス）転送制御部、  １６  シリアル入出力回路（ＳＩＯ）、  １７  ＵＳＢインタフェース（Ｉ／Ｆ）、  １８  外部メモリインタフェース（Ｉ／Ｆ）、１９  クロック生成部、  ２０  ミニモニタ部、  ２１  制御レジスタ、  ２２  ミニモニタＲＯＭ、  ２３  シリアル入出力回路（ＳＩＯ）、  ３０  トレース部、  ４０  外部メモリ、  ５０  デバッグツール、  ６０  ホストコンピュータ、  ７１、７２、８１、８２  半導体基板（チップ）
【図１】
2006133836.tif 000003
【図２】
2006133836.tif 000004
【図３】
2006133836.tif 000005
【図４】
2006133836.tif 000006
【図５】
2006133836.tif 000007
【図６】
2006133836.tif 000008
【図７】
2006133836.tif 000009
【図８】
2006133836.tif 000010