(57)【要約】【課題】マイクロコンピュータのシステムを複雑化せずに、しかもインタフェース信号を増加させずに、デバッグ効率を向上させる。【解決手段】デバッグ用インタフェース（ＵＤＩ）のコマンドにより、データ転送装置（ＤＴＣ）を起動して、所要のデータをリードし、デバッグ用インタフェースのデータレジスタにライトして、当該データをデバッグ用インタフェースから出力可能にすることにより、ユーザプログラムの実行を停止する時間を最小限にして、所要のメモリの内容をリードでき、また、データ転送の方向を逆にすることによって、所要のデータの書き換えを可能とする。このことが、マイクロコンピュータ（５）のデバッグにおける使い勝手や効率の向上を実現する。【選択図】　　　　図１
2004086447.tif 000002
【特許請求の範囲】
【請求項１】
デバッグのためのデバッグ用インタフェース手段と、
データ転送を可能とするデータ転送手段と、
バス制御のためのバス制御手段と、
上記データ転送手段、上記データ転送手段、及び上記バス制御手段の動作を制御可能な中央処理装置と、を含み、
上記デバッグ用インタフェース手段は、エミュレータとの入出力を行い、インタフェースによって入力可能なインストラクションレジスタと、その内容を解読して、データ転送要求を発生させる手段と、インタフェースによって入出力可能なデータレジスタと、データ転送の状態を示すステータスレジスタと、を含み、
上記データ転送手段は、上記データ転送要求に呼応して、所要のメモリと上記データレジスタとの間のデータ転送を実行する手段と、上記データ転送の完了によって、上記ステータスレジスタを所定の状態に設定する手段と、を含み、
上記バス制御手段は、上記データ転送手段と上記中央処理装置との間のバス権を調停するとともに、それらのバスアクセスを制御する手段を含むことを特徴とするマイクロコンピュータ。
【請求項２】
エミュレーション制御のためのエミュレーション制御手段と、
アドレスを監視してブレークを要求するブレーク手段と、アドレス情報を取得するトレース手段とを含み、
上記転送情報を上記エミュレーション手段に格納可能とするとともに、上記データ転送を示すステータス信号を持ち、上記ステータス信号が活性状態のとき、上記ブレーク手段又はトレース手段の少なくとも一方にアドレス情報を無視させる請求項１記載のマイクロコンピュータ。
【請求項３】
応用システムに実装された状態で、上記デバッグ用インタフェース手段を介して、エミュレータと接続可能にされるオンチップデバッガを構成する請求項１又は２記載のマイクロコンピュータ。
【請求項４】
エミュレーション制御のための所定の制御信号を出力可能なエミュレーション制御手段と、上記エミュレーション制御手段の動作を制御可能な中央処理装置と、を含み、
上記中央処理装置は、サブルーチン分岐命令実行、例外処理実行、及びそれらの復帰命令の実行を検出する手段を含み、上記制御信号が所定の状態のとき、上記検出手段の検出結果に基づいてエミュレーションプログラム実行状態へ遷移することを特徴とするマイクロコンピュータ。
【請求項５】
プログラム実行に応じてカウント動作するカウンタと、上記エミュレーションプログラム実行状態では上記カウンタのカウント動作を停止させる手段と、を含む請求項４記載のマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置などのオンチップデバッグ技術に関し、特に、エミュレーション機能を内蔵したマイクロコンピュータなどのシステムＬＳＩ、更に、その開発装置に利用して有効な技術に関するものである。
【０００２】
【従来の技術】
シングルチップマイクロコンピュータを用いた応用システムの開発を行うために、いわゆる、インサーキットエミュレータと呼ばれるマイクロコンピュータ開発装置が用いられる。マイクロコンピュータ開発装置は、パーソナルコンピュータなどのシステム開発装置と、開発中の応用システム（ユーザシステム）との間に、ケーブル等を介して接続され、その応用システムに装着されるべきシングルチップマイクロコンピュータ（ターゲットマイクロコンピュータ）の機能を代行しつつ、デバッガとしての機能を有し、ソフトウェア或は応用システムの開発を支援するものである。このマイクロコンピュータ開発装置には上記シングルチップマイクロコンピュータに対応したエバリュエーションチップと呼ばれる、評価用のエミュレーション用プロセッサが搭載されている。エミュレーション用プロセッサはシングルチップマイクロコンピュータを包含する機能に、マイクロコンピュータの内部状態を出力したり、マイクロコンピュータの動作を制御したりする専用の機能を追加することにより、マイクロコンピュータ開発装置の開発が容易にされる。マイクロコンピュータ開発装置については、例えば、昭和５９年１１月３０日オーム社発行の『ＬＳＩハンドブック』第５６２頁及び第５６３頁などに記載され、また、エミュレーション用プロセッサについては、例えば特開昭６３−１０６８４０号公報などに記載されている。
【０００３】
インサーキットエミュレータを用いる場合、かかるインサーキットエミュレータから延設されたケーブルの先端に設けられたコネクタをユーザシステムなどの応用システム上のマイクロコンピュータ用ソケットに接続することが多い。インサーキットエミュレータ内のエミュレーション用プロセッサは上記ケーブルやソケットを介して、応用システムに接続されるため、信号の遅延が大きくなり、信号線路に雑音が生じたり、アナログ信号の精度が低下したりする場合がある。
【０００４】
インサーキットエミュレータにおいては、ユーザプログラムの実行を停止させることなく、デバッグ用の機能を利用することが望まれている。これは、マイクロコンピュータが、その入出力機能を利用して、応用システムの制御を行っており、ユーザプログラムの実行を停止させると応用システムの制御が不可能になり、動作の継続が不可能になってしまうためである。
【０００５】
上記エミュレーション用プロセッサに、エミュレーション用ＤＭＡコントローラを設け、ＣＰＵからバス権を獲得して、所要のデータ転送を行う技術が記載された文献の例としては、特開平８−３２８８９８号公報がある。この例では、インサーキットエミュレータ上にＤＭＡ転送用メモリを用意し、上記エミュレーション用ＤＭＡコントローラの制御を行っている。ＤＭＡ転送用メモリは、２面用意され、アドレスを切り換えて、ホストＣＰＵとのリード／ライトを行うようにしている。
【０００６】
このようなＤＭＡコントローラは、転送元アドレス、転送先アドレス、転送カウンタ、制御レジスタなどや、起動要因の選択や受付け論理を各チャネルに持つために、多数のチャネルのデータ転送を行おうとすれば、上記レジスタを多数組設けなければならない。また、専用のＤＭＡＣを持つことは、ＤＭＡＣの論理に加えて、バス権の授受などの論理をマイクロコンピュータに必要とする。これらは、半導体集積回路装置全体の論理的・物理的規模を増大させてしまう。さらに、規模の増大は製造費用を増大させてしまう。上記例には、既存のＤＭＡＣをエミュレーション用ＤＭＡＣとして共用することも記載されているが、ユーザの使用制限が生じてしまう。例えば、ＤＭＡＣを用いて、モータ制御や、各種インタフェースとの間のデータ転送などを行うような応用では、ＤＭＡＣのチャネル数は多数必要になり、エミュレーション用ＤＭＡＣに資源を割くことは望ましくない。
【０００７】
上記レジスタに配置すべき情報を、記憶密度が高い汎用のＲＡＭ（ランダムアクセスメモリ）上に配置し、論理的、物理的規模の増大を防いだデータ転送装置、いわゆるデータトランスファコントローラ（ＤＴＣ）を内蔵したものについて記載された文献の例としては、特開平１−１２５９４４号公報や、特開平７−１２９５３７公報などがある。
【０００８】
特開平７−１２９５３７公報には、さらに、データ転送装置が行うデータ転送のアドレス、データ、転送データ数または転送方法のうちの少なくとも１つ以上の情報を記憶手段に格納可能とし、この少なくとも１つ以上の情報には、データ転送装置の１回の動作で複数組の少なくとも１つ以上の情報によるデータ転送を指定可能な情報を含む例が記載されている。
【０００９】
【発明が解決しようとする課題】
エミュレータの機能として、ユーザプログラムの実行時間の測定なども必要とされる。ユーザシステムの処理が、所要の時間内に納まるかを確認したり、処理速度の改善が必要な場合に、処理時間の内訳を調べたりするためである。ユーザプログラムは、Ｃ言語などを用いて開発される例が多いから、関数単位の処理時間を計測できることが望ましい。
【００１０】
一方、エミュレータの形態として、オンチップデバッグ方式によって、デバッグを行う例が増えている。すなわち、マイクロコンピュータなどの実チップに、デバッグ用の機能およびインタフェースを設けるようにし、それをユーザシステムに実装し、上記デバッグ用のインタフェースを使用して、カードの形態でなるようなカードエミュレータに接続し、このカードエミュレータを、パーソナルコンピュータなどのホストコンピュータのカードスロットに挿入してデバッグが行われる。
【００１１】
かかるオンチップデバッグ方式をとれば、マイクロコンピュータはユーザシステムに実装されているから、不所望の遅延を生じたり、雑音を増加させたり、アナログなどの精度を低下させたりする要因がない。また、デバッグ用のインタフェースを切り離せば、そのままユーザシステムとして使用できる。半導体集積回路としても、エミュレーション用プロセッサと、量産用のマイクロコンピュータとを別個に開発する必要がないため、開発効率に優れ、特に、システムＬＳＩなどの少量多品種に適している。また、応用システムを最終製品に組みこんだ後も、動作解析や調整に用いることもできる。そのようなオンチップデバッグ方式において、上記デバッグ用の機能は、デバッグ専用であって、実動作には不要である。従って、マイクロコンピュータの製造費用を低減するために、デバッグ用の論理的・物理的規模を最小限にすることが望ましい。また、エミュレータとのインタフェースはその信号線数なども限定されるから、十分なデバッグ用情報を入出力することは困難とされている。
【００１２】
本発明の目的は、マイクロコンピュータのシステムを複雑化せずに、しかもインタフェース信号を増加させずに、デバッグ効率を向上させるための技術を提供することにある。
【００１３】
本発明の別の目的は、ユーザシステムの動作中に、マイクロコンピュータの所要のメモリの内容をモニタしたり、書き換えたりするための技術を提供することである。
【００１４】
本発明の別の目的は、Ｃ言語などを使用したプログラムにおいて、関数毎の処理時間を容易に測定可能にするため技術を提供することである。
【００１５】
本発明の上記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１６】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１７】
すなわち、デバッグ用インタフェースと、転送情報をＲＡＭなどのメモリに配置し、この転送情報をリードしてデータ転送を行うデータ転送装置とを含み、上記デバッグ用インタフェースは、データレジスタと、インストラクションレジスタと、インストラクションレジスタの内容を解読する手段を持ち、インストラクションが所定の内容であるとき、上記データ転送装置へ転送要求を発生し、上記データ転送装置は、与えられた転送情報に従い、上記データレジスタと所要のメモリとの間のデータ転送を行うようにする。
【００１８】
データ転送装置は、ユーザ機能と兼用にし、この切り換えは、起動要求と同じに与えられるベクタで認識するようにする。
【００１９】
バス制御手段は、デバッグ用／ユーザ用にかかわらず、データ転送装置と中央処理装置のバス権を調停する。また、データ転送装置と中央処理装置のバスアクセスの制御を行う。
【００２０】
アドレスなど内部バスを監視してブレーク要求を発生したり、内部バスの状態をトレースしたりする手段を設ける場合は、不所望なブレーク要求や不所望なトレースを避けるため、上記デバッグ用データ転送時において内部バスの状態を無視するようにする。
【００２１】
また、サブルーチン分岐、サブルーチンリターン、例外処理分岐、例外処理リターンの命令実行時に所定のステータス信号を出力するように、ブレーク処理を行う。
【００２２】
さらに、上記信号ないしブレーク処理を示す信号により、カウント可能なパフォーマンスカウンタを内蔵することができる。
【００２３】
上記した手段によれば、ユーザデバッグインタフェース回路にデータ転送装置の起動コマンドを追加することにより、少ない信号線数で、かつ、元々のマイクロコンピュータの機能への追加を最小限にし、デバッグ用の機能の増加を最小限にし、中央処理装置の動作を停止する時間を最小限にして、所望のアドレスの内容をリードしたり、ライトしたりすることができる。
【００２４】
データ転送装置はユーザ機能と兼用であり、従って、バス権調停もユーザ機能と同一であり、転送要求などもユーザ機能と共通化でき、論理的規模の増加を抑止し、また、マイクロコンピュータのシステムを複雑化させることがない。データ転送装置は、転送情報をメモリ上に配置し、これをエミュレーションコントローラ内に配置可能にし、ユーザ資源への制約をなくすることもできる。
【００２５】
アドレスなど内部バスを監視してブレーク要求を発生したり、内部バスの状態をトレースしたりする手段を有する場合は、上記デバッグ用データ転送時には、内部バスの状態を無視するようにし、ユーザのプログラム実行によらない状態、例えばデバッグ用データ転送でブレークが発生したり、トレースに取得されたりする不都合を抑止できる。上記デバッグ用データ転送は、トレースに取得されるようにしても良い。尚、上記デバッグ用データ転送をトレースに取得するか否かを選択可能にしても良い。
【００２６】
パフォーマンスカウンタにより、エミュレーション用の信号を増加させることなく、関数毎の実行時間の測定を容易に実現できる。
【００２７】
【発明の実施の形態】
図２には、本発明にかかるマイクロコンピュータを含むオンチップデバッガの構成例が示される。
【００２８】
オンチップデバッガは、カードエミュレータ２、インタフェースケーブル３、ホストコンピュータ４、ならびにデバッグ機能内蔵のマイクロコンピュータ５を含む。カードエミュレータ２は、例えばＰＣＭＣＩＡカード、あるいはＰＣＩカードなどの形態を採る。ホストコンピュータは、ＰＣＭＣＩＡスロット、あるいはＰＣＩスロットなどのＰＣスロットを搭載したパーソナルコンピュータなどである。また、マイクロコンピュータ５には、デバッグ対象のユーザプログラムを格納するフラッシュメモリなどが設けられており、このデバッグ機能内蔵のマイクロコンピュータ５は、ユーザシステムであるプリント配線基板ＰＣＢなどに搭載されている。
【００２９】
カードエミュレータは２、ホストコンピュータ４のＰＣカードスロットに挿入され、該カードエミュレータ２とプリント配線基板ＰＣＢとは、所要の通信手段を実現するインタフェースケーブル３を介して接続されている。そして、ホストコンピュータ４に入力されたコマンドなどに呼応して、ユーザプログラムをフラッシュメモリなどにダウンロードするとともに、これをデバッグする。
【００３０】
ホストコンピュータ４を、携帯用パーソナルコンピュータなどとすることによって、実使用状態でのデバッグも可能である。例えば、応用システムがディジタルカメラの場合など、屋外でのデバッグや調整も可能になる。
【００３１】
図１には、上記マイクロコンピュータの構成例が示される。
【００３２】
マイクロコンピュータ５は、特に制限されないが、シングルチップ型であり、全体の制御を司るＣＰＵ（中央処理装置）、割込コントローラＩＮＴ、ＣＰＵの処理プログラムなどを格納するメモリであるＲＯＭ（リードオンリーメモリ）、ＣＰＵの作業領域ならびにデータの一時記憶用及びスタック用のメモリとすることができるＲＡＭ（ランダムアクセスメモリ）、データ転送装置ＤＴＣ、バスコントローラＢＳＣ、および入出力装置Ｉ／Ｏの機能ブロック乃至はモジュールから構成され、これらはユーザに開放された機能である。上記ＲＯＭにはフラッシュメモリを適用することができる。
【００３３】
入出力装置Ｉ／Ｏとしては、例えば、タイマ、シリアルコミュニケーションインタフェース（ＳＣＩ）、Ａ／Ｄ変換器、入出力ポート（ＩＯＰ）、クロック発振器（ＣＰＧ）などが含まれる。各入出力ポートは、外部割込みの入力、或いはタイマ、ＳＣＩ、Ａ／Ｄ変換器の入出力と兼用されている。すなわち、タイマ、ＳＣＩ、Ａ／Ｄ変換器は、それぞれ入出力信号を有し、入出力ポートと兼用にされた端子介して、外部と入出力される。同様に、アドレスバス、データバス、バス制御信号入出力と兼用にすることもできる。
【００３４】
デバッグ機能として、エミュレーション用プログラムの一部が格納されるメモリＥＲＡＭを備え、エミュレーションに関連するモジュールに対する制御信号を形成するエミュレーション制御回路ＥＭＣ、アドレスなどの内部バスまたはＣＰＵのプログラムカウンタなどを監視し、エミュレーションの際にユーザが指定したブレークポイントでＣＰＵに対しプログラムの実行停止を要求したりするブレークコントローラＥＢＣ、エミュレーション中にバスＢＵＳ上の信号を採取するためのトレースバッファＴＢＦ、外部からの制御信号や転送クロックを受けたり該転送クロックに同期して、コマンドを入力したり、所要の内容を外部へ出力したりするユーザデバッグインタフェース回路ＵＤＩ、処理時間の測定を行うパフォーマンスカウンタＰＣＮＴなどを含み、これらの機能ブロック乃至はモジュールは、アドレスバスおよびデータバスを含む内部バスＢＵＳを介して互いに接続されている。
【００３５】
これらは、公知の半導体製造技術により、１つの半導体基板上に形成されるが、マルチチップモジュールなどとして、複数の半導体集積回路を１つのパッケージに封入した構成をとってもよい。
【００３６】
ＣＰＵは、命令デコーダやブレーク要求受付機能、ブレーク命令実行機能、ブレークリターン命令実行機能などを含んでいる。また、後述の関数ブレークを指定する信号が活性状態のとき、サブルーチン分岐命令、サブルーチンリターン命令、例外処理、例外処理リターン命令実行後にブレーク例外処理を行うことが可能とされる。
【００３７】
ブレーク例外処理を実行すると、特に制限はされないものの、上記エミュレーション制御回路ＥＭＣ上のメモリＥＲＡＭ上に分岐する。
【００３８】
上記エミュレーション制御回路ＥＭＣは、所要の制御レジスタなどを有し、所定のブレークモード時のＣＰＵによる制御に従って、デバッグ機能内蔵マイクロコンピュータの制御を行う。上記関数ブレークを指定する信号ＦＣＢＲＫは、ＣＰＵに供給される。ユーザプログラムの実行を停止し、デバッグ用プログラムを実行している状態であるブレークモードを示すブレークモード信号ＢＲＫＭは、ブレークコントローラＥＢＣ、パフォーマンスカウンタＰＣＮＴ、及びトレースバッファＴＢＦに供給される。
【００３９】
上記デバッグ用インタフェースＵＤＩは、所定のブレークモード時のＣＰＵによる制御に従って、随時、外部のカードエミュレータとの間のデータ通信を行なう。特に制限されないが、このデータ通信はシリアル通信とされ、エミュレーションのための信号線数を少なくしている。
【００４０】
また、本例では、ブレークモード以外のときに関数毎の実行時間を計測することができる。例えばパフォーマンスカウンタＰＣＮＴは、４８ビットのカウンタが２個設けられており、それぞれ独立に計数すべき状態発生を設定できるように構成されている。
【００４１】
バスコントローラＢＳＣは、ＣＰＵ及びデータ転送装置ＤＴＣのバス権要求信号に基づいて、所定のタイミングでバス権調停を行う。このバス権調停結果は、バス権アクノレッジ信号ＢＳＡＣＫとして、ＣＰＵ、データ転送装置ＤＴＣそのほかのモジュールに伝達される。バスコントローラＢＳＣは、内蔵メモリ、内部Ｉ／Ｏレジスタ、外部アドレスなどに応じて、所要のバスアクセスの制御を行う。
【００４２】
割込みコントローラＩＮＴは、上記タイマ、ＳＣＩ、Ａ／Ｄ変換器、外部入力の各割込み信号を入力して、割込み要求信号をＣＰＵに、または、転送要求をデータ転送装置ＤＴＣに出力する。
【００４３】
ＣＰＵに割込要求信号が与えられると、ＣＰＵは実行中の処理を中断して、割込み例外処理状態を経て、所定の処理ルーチンに分岐し、所望の処理を行い、割込要因をクリアしたりする。所定の処理ルーチンの最後には、通常復帰命令がおかれ、この命令を実行することによって上記中断した処理を再開する。
【００４４】
データ転送装置ＤＴＣに転送起動要求が与えられると、データ転送装置ＤＴＣはバス権要求信号を活性化し、バス権が獲得できると、所定のアドレスから転送情報をリードし、当該転送情報に基づいてデータ転送を行い、その後、転送情報を元のアドレスに書き戻す。
【００４５】
かかるマイクロコンピュータ５にリセット信号ＲＥＳが与えられると、ＣＰＵを始めとし、マイクロコンピュータ５はリセット状態になる。このリセットが解除されると、ＣＰＵはエミュレーション制御回路ＥＭＣ上の所定のアドレスからリセット例外処理を行い、ユーザデバッグインタフェース回路ＵＤＩ経由でコマンド入力を待つ。この間、そのほかのユーザ機能はリセット状態を継続する。入力されたコマンドに従い、所要の処理を行った後、ユーザプログラムに分岐（復帰）する。この後、ＲＯＭなどから命令をリードし、解読して、その解読内容に基づいて、データの処理、或いはＲＡＭ、タイマ、ＳＣＩ、Ａ／Ｄ変換器、入出力ポートなどとのデータ転送を行う。すなわち、ＣＰＵは、タイマ、ＳＣＩ、Ａ／Ｄ変換器、入出力ポートなどから入力されるデータ或いは機器の状態や指示（スイッチ、ボリュームなど）を参照しつつ、ＲＯＭなどに記憶されている命令に基づいて処理を行い、その結果に基づいて、入出力ポート、タイマなどを使用しつつ、外部に信号を出力し、機器の制御を行う。
【００４６】
図３にはユーザデバッグインタフェース回路ＵＤＩの構成例が示される。
【００４７】
ホストインタフェース（カードエミュレータとのインタフェース）として、制御信号入力（リセット、モード、クロック）、データ入力、データ出力を有する。制御信号に従って、データの入出力が行われる。後述のレジスタの選択は、制御信号入力（モード）によって行われる。
【００４８】
ユーザデバッグインタフェース回路ＵＤＩは、インストラクションレジスタＳＤＩＲ、ステータスレジスタＳＤＳＲ、データレジスタＳＤＤＲのレジスタを持つ。インストラクションには、リセット要求、リセット要求解除、ブレーク要求、ブレーク要求、ＤＴＣ起動要求（２種類）などがあり、インストラクションレジスタの内容を解読して、所定の制御信号を発生する。
【００４９】
ステータスレジスタＳＤＳＲは、ＳＤＴＲＦフラグを含む。ＳＤＴＲＦが論理値“０”にクリアされているときは、ＣＰＵなどのマイクロコンピュータ内部からデータレジスタＳＤＤＲにライト可能状態であり、ＳＤＴＲＦフラグが論理値“１”にセットされているときは、ホストインタフェースを介してデータレジスタＳＤＤＲへの転送可能状態である。
【００５０】
また、内部バスに接続され、ブレークモードのとき、ＣＰＵからリード／ライト可能である。さらに、データ転送装置ＤＴＣのデバッグ用データ転送を示すステータスＥＤＴＣに従って、データ転送装置ＤＴＣによるデータレジスタＳＤＤＲのリード／ライトを可能にしている。
【００５１】
図４には、データ転送装置ＤＴＣの構成例が示される。
【００５２】
上記ユーザデバッグインタフェース回路ＵＤＩのＤＴＣ起動要求、およびそのほかマイクロコンピュータの上記入出力装置（Ｉ／Ｏ）の割込み要求は、割込みコントローラに入力される。これらは、対応するＤＴＣイネーブルレジスタ（ＤＴＥＲ）によって、ＣＰＵへの割込み要求を行うか、ＤＴＣへの転送要求を行うかが指定され、それぞれ優先順位を判定し、選択された要因に対応するベクタとともに、割込み要求または転送要求が与えられる。
【００５３】
データ転送装置ＤＴＣは、ＤＴＣ転送要求ＤＴＣＲＱとベクタＤＴＶＥＣを取り込む。転送要求が発生すると、ＤＴＢＲＱによって、バスコントローラにバス権を要求し、ＢＳＡＣＫによってバス権が受けつけられたことを確認して、所定のベクタから転送情報開始アドレスをリードし、かかる転送情報開始アドレスから転送情報（モード、転送元／先アドレス、カウンタ）をリードして、データ転送装置ＤＴＣ内に格納し、この転送情報に従って、データ転送を行う。データ転送後、更新された転送情報は元のアドレスに書き戻される。
【００５４】
図５には、マイクロコンピュータ５のメモリマップが示される。
【００５５】
ユーザ用のＤＴＣのベクタアドレスは、ＲＯＭ領域に割当てられるが、データ転送装置ＤＴＣのデバッグ用ベクタアドレスは、エミュレーション制御回路ＥＭＣ内、例えばメモリＥＲＡＭに配置される。
【００５６】
転送情報は、ベクタによって示されるアドレスに配置される。通常、ユーザ用のＤＴＣ転送情報はＲＡＭに配置される。デバッグ用のＤＴＣの転送情報は、ＥＲＡＭまたはＲＡＭに配置される。ＥＲＡＭに配置すれば、ユーザの資源を使用しないので、ユーザに制限を発生することがない。ＥＲＡＭを使用しない場合、ＥＲＡＭにエミュレーション用プログラムを、より多く配置することができ、エミュレーションプログラムの実行効率を向上できる。
【００５７】
図６には、デバッグ用データ転送における所要の動作タイミングが示される。
【００５８】
デバッグ用インタフェースＵＤＩに所定のＤＴＣ起動要求コマンドが入力されると、デバッグ用インタフェースＵＤＩが起動要求を発生する。これが割込みコントローラで受けつけられ、優先順位を判定し、所定のタイミングで、データ転送装置ＤＴＣに対して、転送要求と、デバッグ用データ転送を示すベクタが与えられる。
【００５９】
データ転送装置ＤＴＣは転送要求を受けつけると、バス権を要求し、それが受付けられると、ベクタで与えられたアドレスから転送情報をリードする。このとき、デバッグ用データ転送を示すベクタは上位ビット（ビット７〜２）がすべて１であることによって示され、この場合は、上記エミュレーション制御回路ＥＭＣ内、例えばＥＲＡＭのアドレス（パラメータなどであるａｓｅｂａｓｅが先頭アドレスとされる）とされる。この論理記述例を以下に示す。
2004086447.tif 000003
【００６０】
すなわち、ベクタに示されるアドレスから転送情報がリードされ、これに基づいてデータ転送が行われる。デバッグ用データ転送を示すステータス信号ＥＤＴＣが活性化されると、ステータス信号ＥＤＴＣと、ＵＤＩデータレジスタのリードまたはライトに従って、ＳＤＩＦが論理値“１”にセットされる。その後、転送情報を元のアドレスに書き戻す。転送情報を書き戻すことにより、同じアドレスの内容を繰返しリードし、変化を監視するような、繰返し利用を可能にでき、また、複数のＤＴＣ転送を順次行うことができる。
【００６１】
データ転送装置ＤＴＣは、ベクタのリード、転送情報のリード、データ転送、転送情報のライトのサイクル（例えば、転送情報を３回リード／ライトする場合、９バスサイクル）の期間バス権を獲得する。ＣＰＵがバス権を失うことによって、ユーザプログラムの実行が一時停止されるが、この時間は、ブレーク例外処理や、エミュレーションプログラムが実行される時間に比較して短い。
【００６２】
エミュレーションの機能としては以下の通りである。
【００６３】
すなわち、ホストインタフェースを介して、インストラクションレジスタ（ＳＤＩＲ）へインストラクションを入力しＤＴＣ転送要求を発生させ、所要のデータ転送を行った後、ユーザデバッグインタフェース回路ＵＤＩのデータレジスタ（ＳＤＤＲ）を経由して、メモリ（またはＩ／Ｏレジスタ）の内容を読み出すことができる。
【００６４】
この手順は以下の通りである。
【００６５】
まず、エミュレーション用プログラム実行状態で、あからじめ割込みコントローラや、ＤＴＣの転送情報の設定を行う。
【００６６】
マイクロコンピュータ５のメモリの内容は、以下の手順でリードすることが出きる。
【００６７】
（１）所定のシーケンスで、デバッグ用インタフェースＵＤＩのステートマシンが初期化され、ＳＤＴＲＦビットが論理値“１”にセットされる。
【００６８】
（２）エミュレータからユーザデバッグインタフェース回路ＵＤＩへＤＴＣ転送要求コマンドを入力する。シフトレジスタからインストラクションレジスタへデータがコピーされる。
【００６９】
（３）エミュレータはＳＤＴＲＦビットが、論理値“１”であることを確認する。
【００７０】
（４）特に制限はされないものの、ＳＤＴＲＦビットをクリアするために、ダミーデータの転送を行う。
【００７１】
（５）割込みコントローラＩＮＴへのＤＴＣ転送要求が行われ、データ転送装置ＤＴＣへ転送要求と所定のベクタが与えられ、データ転送装置ＤＴＣが起動される。
【００７２】
（６）データ転送装置ＤＴＣは、予め設定された転送情報に基づきメモリからユーザデバッグインタフェース回路ＵＤＩのデータレジスタＳＤＤＲへデータ転送を行う。デバッグ用データ転送時には、データ転送装置ＤＴＣはデバッグ用データ転送を示すステータス信号ＥＤＴＣを活性化する。このステータス信号ＥＤＴＣが活性状態のときは、ブレークコントローラやトレースバッファは、ユーザのプログラムの実行に基づかない、データ転送装置ＤＴＣのアドレスやデータを無視し、不所望のブレークやトレースの取得を行わないようにする。ユーザデバッグインタフェース回路ＵＤＩは、ＥＤＴＣ信号をモニタし、データレジスタライトなどの所定のタイミングでＳＤＴＲＦビットを論理値“１”にセットする。
【００７３】
（７）次にエミュレータ２はＳＤＴＲＦビットをモニタし、論理値“１”であることにより、データ転送装置ＤＴＣのリードが終了していることを確認し、データを取り込む。マイクロコンピュータ５のメモリの内容を書換える場合、上記に対して以下の点で相違する。
【００７４】
（８）エミュレータ２はＳＤＴＲＦビットが、論理値“１”であることを確認し、ＳＤＴＲＦビットが論理値“１”ならデータレジスタＳＤＤＲへデータ転送が可能な為エミュレータから、メモリに書き込みたいデータをデータレジスタＳＤＤＲへ転送する。
【００７５】
（９）エミュレータ２はＳＤＴＲＦビットが論理値“１”を観測し、データ転送装置ＤＴＣのライト終了を確認する。
【００７６】
図７には、デバッグ用データ転送方法が示される。
【００７７】
２つのＤＴＣ起動コマンドを使用して、上記手順を２回１組で実行し、任意の複数のアドレス（ａｄｒ１〜４）の情報を取り出して、それをホストコンピュータ４上に表示することができる。
【００７８】
カードエミュレータ２は、まず、ＵＤＩデータレジスタに第２の転送情報を書き込む。例えば、アドレスａｄｒ１からＵＤＩデータレジスタへの転送指示がなされる。
【００７９】
ＤＴＣ起動要求コマンド１を入力して、第１のＤＴＣ転送を起動する。第１のＤＴＣ転送では、上記ＵＤＩデータレジスタ上の第２の転送情報が、第２のＤＴＣ転送情報領域に格納される。
【００８０】
次に、ＤＴＣ起動要求コマンド２を入力して、第２のＤＴＣ転送を起動する。第２のＤＴＣ転送では、指定されたアドレス（ａｄｒ１）が、ＵＤＩデータレジスタに格納される。
【００８１】
そして、上記ＵＤＩデータレジスタをホストコンピュータ４へ読み出す。これを必要な回数（本例では４回）、指定するアドレスを変えて（ａｄｒ１〜４）実行すればよい。エミュレータ２からの転送情報は、ホストコンピュータ４の表示装置（モニタ）に、所望のウィンドウなどの所望の配置で表示することができる。
【００８２】
２つのＤＴＣ転送要求コマンドを持つ代わりに、チェイン転送を用いることもできる。チェイン転送は、例えば特開平７−１２９５３７号公報などに記載されている通り、１回の起動要求に対し、連続したアドレスに配置された複数の転送情報に基づいて、データ転送が行われる。第１の転送情報によって、デバッグ用インタフェースＵＤＩのデータレジスタに入力されたデータを、第２の転送情報のアドレスに格納する。その後第２の転送情報に基づき、データ転送を行う。
【００８３】
尚、デバッグ用インタフェースＵＤＩのデータレジスタのバイト数や、データ転送装置ＤＴＣの転送情報の配置に対応して、種々の変形が可能である。
【００８４】
図８にはＣＰＵの関数ブレークに必要な制御論理のブロック構成が示され、図９には関数ブレークの動作タイミングが示される。
【００８５】
エミュレーション制御回路ＥＭＣの、関数ブレーク許可ビットを論理値“１”にセットすると、関数ブレーク許可信号ＦＣＢＲＫが活性化される。ＣＰＵは、サブルーチン分岐命令、サブルーチンリターン命令、ユーザ例外処理（割込みなどを含む）、ユーザ例外処理リターン命令の実行のデコード信号ｄｅｃ＿ｆｃｂとの論理積で、ブレーク例外処理のオペレーションコードが、インストラクションレジスタに格納され、ブレーク例外処理が実行される。ＣＰＵが実行する命令コードをｏｐｃｏｄｅとして、この論理は以下のように記述できる。
【００８６】
2004086447.tif 000004
【００８７】すなわち、命令の実行終了時点で、次の命令のロードを示すｌｏａｄ信号が活性状態とされ、このとき、関数ブレーク許可信号ＦＣＢＲＫが活性化され、上記命令実行後であり（ｄｅｃ＿ｆｃｂ）、ブレークモードでなければ（〜ｂｒｋｍ）、ブレーク例外処理を示す命令コード‘ｂｒｅａｋが取込まれる。尚、ｂｒｋｍは、図２のＢＲＫＭと等価な信号である。
【００８８】
命令コード‘ｂｒｅａｋを実行することにより、ブレーク例外処理が実現され、このとき、ブレークモード信号ｂｒｋｍが活性化される。これによってパフォーマンスカウンタＰＣＮＴは停止される。ブレークモード中のエミュレーション処理で、パフォーマンスカウンタの内容をリードし、前回のパフォーマンスカウンタの値と減算することによって、ユーザプログラムの実行時間を得ることができる。また、サブルーチンリターン命令実行後のエミュレーション処理で、上記実行時間を得ることによって、対応する関数の実行時間を計測することができる。関数が多重に呼び出されたり、割込みなどの例外処理が挿入されたりした場合は、その場合もブレークするから、その時間も計測して、差し引けばよい。
【００８９】
図１０に、上記ＣＰＵの開発環境の概略を示す。
【００９０】
使用者は、各種エディタなどを用いて、Ｃ言語乃至アセンブリ言語でプログラムを作成する。これは通常、複数のモジュールに分割して作成される。Ｃコンパイラ１０１は、使用者の作成したそれぞれのＣ言語ソースプログラムを入力し、アセンブリ言語ソースプログラム乃至オブジェクトモジュールを出力する。
【００９１】
アセンブラ１０２は、アセンブリ言語ソースプログラムを入力し、オブジェクトモジュールを出力する。
【００９２】
リンケージエディタ１０３は、上記Ｃコンパイラやアセンブラの生成した、複数のオブジェクトモジュールを入力して、各モジュールの外部参照や相対アドレスなどの解決を行い、１つのプログラムに結合して、ロードモジュールを出力する。
【００９３】
ロードモジュールは、シミュレータ／デバッガ１０４に入力して、パーソナルコンピュータなどのシステム開発装置上で、ＣＰＵの動作をシミュレーションし、実行結果を表示し、プログラムの解析や評価を行うことができる。また、エミュレータ１０５に入力して、上記ユーザデバッグインタフェース回路ＵＤＩを介して、ブレークモード状態で、上記マイクロコンピュータ５のフラッシュメモリでなるようなＲＯＭに書きこみ、実際の応用システム上などで動作させる、いわゆるインサーキットエミュレーションを行ない、マイクロコンピュータ５全体としての実動作の解析や評価を行うことができる。図２の形態をとることにより、随時フラッシュメモリでなるようなＲＯＭの書換えを行うことができ、デバッグないしエミュレーションに好適である。
【００９４】
このとき、例えば、関数ｓｅｑが以下のように使用される。
2004086447.tif 000005
【００９５】
このとき、次のようにコンパイルされる。
2004086447.tif 000006
【００９６】
関数ｓｅｑは、サブルーチン分岐命令ＪＳＲになり、関数の処理はアドレス＿ｓｅｑ以降に記述され、その最後には次のようにサブルーチンリターン命令ＲＴＳが配置される。
2004086447.tif 000007
【００９７】
関数ブレークを使用することにより、ＪＳＲ実行からＲＴＳ実行までの関数ｓｅｇの処理時間を測定することができる。
【００９８】
上記の例によれば、以下の作用効果を得るものである。
【００９９】
（１）デバッグ用インタフェースＵＤＩのコマンドにより、データ転送装置ＤＴＣを起動して、所要のデータをリードし、デバッグ用インタフェースのデータレジスタにライトして、当該データをデバッグ用インタフェースから出力可能にすることにより、ユーザプログラムの実行を停止する時間を最小限にして、所要のメモリの内容をリードできる。また、データ転送の方向を逆にすることによって、所要のデータを書きかえることができる。これらにより、マイクロコンピュータ５のデバッグにおける使い勝手や効率の向上を実現できる。
【０１００】
（２）データ転送装置ＤＴＣにおけるアドレスレジスタなどの転送情報をＲＡＭに配置するようにすることにより、ユーザのリソースを使用することを最小限にし、少なくともユーザのデータ転送の資源を制限することなく、上記（１）の作用効果を得ることができる。これはエミュレーション用のメモリＥＲＡＭを使用することを可能にし、限られたメモリＥＲＡＭを有効活用することができる。デバッグ初期の段階などで、モニタしたり、書換えたりするメモリの量が多ければ、ユーザＲＡＭを使用し、メモリＥＲＡＭを、エミュレーション用プログラムに使用できる。デバッグがほぼ完了した状態で、少数のメモリのモニタや調整を行う場合には、メモリＥＲＡＭを使用して、ユーザ資源に制約を与えることがない。データ転送装置ＤＴＣにベクタを与えて、デバッグ用データ転送を識別することにより、使用する要因数の増加が容易にできる。
【０１０１】
（３）複数のＤＴＣ起動要求コマンドないし、データ転送装置ＤＴＣのチェイン転送機能を用いて、転送情報を、デバッグ用インタフェースとデータ転送装置ＤＴＣを介して入力し、その後、所要のデータ転送を行うことによって、ＣＰＵがブレークすることなく、任意のアドレスのリード／ライトを行うことができる。転送情報の入力も、データ転送も同じ手段で行うことができ、資源の有効利用を図ることができる。また、随時、任意のアドレスを指定して、リードしたりライトしたりでき、これを繰返して、複数のアドレスをリードしたりライトしたりできるから、さらに使い勝手や効率の向上を実現できる。
【０１０２】
（４）データ転送装置ＤＴＣは、ユーザと共用することから、起動要求の優先順位の判定や、バス権調停なども共用でき、マイクロコンピュータシステムを複雑にすることがなく、マイクロコンピュータ自体の開発効率を向上できる。第２のデータ転送装置（ＤＭＡＣなど）を追加しても、ユーザ機能としての当該機能を実装すればよく、デバッグ用機能には直接の影響がなく、開発効率や資源の有効利用を損なうことがない。バスコントローラの制御を受け、任意のアドレスに、当該アドレスのバスインタフェースの種類に関係なく、アクセスすることが可能である。
【０１０３】
（５）デバッグ用インタフェースを用いることにより、少ない信号線数でのエミュレーションを可能にし、実装状態でのエミュレーションを可能にし、量産用のマイクロコンピュータとを別個に開発することを不要にできる。
【０１０４】
（６）サブルーチン分岐、例外処理実行、これらのリターン命令実行後にブレークする関数ブレーク機能により、関数の実行時間の測定が容易にできる。ブレーク状態でカウントを停止するパフォーマンスカウンタＰＣＮＴを用いることにより、エミュレーション用のインタフェース信号を増加させることなく、容易に関数の実行時間を計測できる。
【０１０５】
（７）ＣＰＵにデコード回路を追加することにより、ブレークポイントの設定などが不要である。ＣＰＵのデコード回路は、ほかの命令機能のデコードと、論理合成などによって共通化が実現できるから、論理規模の増加を最小限にすることができる。
【０１０６】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１０７】
例えば、モジュールの機能や信号入出力は、任意に変更可能である。
【０１０８】
ＵＤＩによるＤＴＣ起動要求に対して、ＤＴＣイネーブルレジスタを設ける必要はない。これを設ければ、ユーザデバッグインタフェース回路ＵＤＩによって、ユーザ割り込みを実行させることもできる。
【０１０９】
デバッグ用インタフェースＵＤＩを、エミュレーション用プロセッサに設けて、インサーキットエミュレータとしても、本発明の機能を利用することもできる。
【０１１０】
関数ブレークも、エミュレーション用プロセッサないしインサーキットエミュレータでも利用可能である。
【０１１１】
データ転送装置の詳細も種々変形が可能である。例えば、制御レジスタや、転送情報の配置・構成、データ転送のモードなどは任意にできる。データ転送のモードとしては、リピートモードやブロック転送モードなどを適用することができる。チェイン転送も第１の転送情報のカウンタの値が０になったときのみ、第２の転送を行うことができる。
【０１１２】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるカードエミュレータを含むオンチップデバッガに適用した場合について説明したが、それに限定されるものではなく、その他のデバッガに適用することができる。
【０１１３】
本発明は少なくとも、エミュレーション乃至デバッグ用の機能とインタフェースを有することを条件に適用することができる。
【０１１４】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【０１１５】
すなわち、データ転送装置を起動して、所要のデータをリードし、デバッグ用インタフェースのデータレジスタにライトして、当該データをデバッグ用インタフェースから出力可能にすることにより、ユーザプログラムの実行を停止する時間を最小限にして、所要のメモリの内容をリードできる。また、データ転送の方向を逆にすることによって、所要のデータを書きかえることができる。それにより、マイクロコンピュータのデバッグにおける使い勝手や効率の向上を実現できる。
【図面の簡単な説明】
【図１】本発明にかかるマイクロコンピュータの構成例ブロック図である。
【図２】上記マイクロコンピュータを含むオンチップデバッガの構成例説明図である。
【図３】上記マイクロコンピュータに含まれるデバッグ用インタフェースの構成例ブロック図である。
【図４】上記マイクロコンピュータに含まれるデータ転送装置の構成例ブロック図である。
【図５】上記マイクロコンピュータにおけるメモリマップの説明図である。
【図６】上記オンチップデバッガにおけるデバッグ用データ転送のタイミング図である。
【図７】上記オンチップデバッガにおけるデバッグ用データ転送方法の説明図である。
【図８】上記オンチップデバッガにおけるＣＰＵの関数ブレークに必要な制御論理の構成例ブロック図である。
【図９】上記オンチップデバッガにおける関数ブレークの動作タイミング図である。
【図１０】上記マイクロコンピュータに含まれるＣＰＵの開発環境の概略説明図である。
【符号の説明】
２　カードエミュレータ
３　インタフェースケーブル
４　ホストコンピュータ
５　マイクロコンピュータ
ＣＰＵ　中央処理装置
ＤＴＣ　データ転送装置
ＢＳＣ　バスコントローラ
ＲＯＭ　フラッシュメモリ
ＲＡＭ　ランダムアクセスメモリ
Ｉ／Ｏ　入出力装置
ＵＤＩ　ユーザデバッグインタフェース回路
ＴＢＦ　トレースバッファ
ＰＣＮＴ　パフォーマンスカウンタ
ＥＢＣ　ブレークコントローラ
ＩＮＴ　割込コントローラ
ＥＭＣ　エミュレーション制御回路
【図１】
2004086447.tif 000008
【図２】
2004086447.tif 000009
【図３】
2004086447.tif 000010
【図４】
2004086447.tif 000011
【図５】
2004086447.tif 000012
【図６】
2004086447.tif 000013
【図７】
2004086447.tif 000014
【図８】
2004086447.tif 000015
【図９】
2004086447.tif 000016
【図１０】
2004086447.tif 000017