JP4190114B2 - マイクロコンピュータ - Google Patents
マイクロコンピュータ Download PDFInfo
- Publication number
- JP4190114B2 JP4190114B2 JP31987699A JP31987699A JP4190114B2 JP 4190114 B2 JP4190114 B2 JP 4190114B2 JP 31987699 A JP31987699 A JP 31987699A JP 31987699 A JP31987699 A JP 31987699A JP 4190114 B2 JP4190114 B2 JP 4190114B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- signal
- instruction
- valid
- control unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Microcomputers (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
この発明は、実使用環境下でデバッグを行う場合に有効なマイクロコンピュータに関するものである。
【0002】
【従来の技術】
図14は例えば特開平8−185336号公報の従来例1として示された従来のマイクロコンピュータを示す構成図であり、図において、1はマイクロコンピュータ応用機器などのユーザターゲットシステム、2はホストコンピュータである。また、ユーザターゲットシステム1において、3はホストコンピュータ2に接続されるシリアルインタフェース、4はメモリ、5はメモリ4に格納されたモニタプログラム、6はI/O、7はマイクロプロセッサ、8はマイクロプロセッサ7に設けられたレジスタ、9はプロセッサバスである。
【0003】
次に動作について説明する。
ユーザターゲットシステム1のデバッグを行う場合は、シリアルインタフェース3にホストコンピュータ2を接続する。マイクロプロセッサ7は、モニタプログラム5を実行することにより、メモリ4、I/O6、レジスタ8にプロセッサバス9を通じてアクセスする。さらに、ソフトウェアブレイク命令を使用してユーザプログラムの実行制御を行い、その実行結果をシリアルインタフェース3を通じてホストコンピュータ2に出力する。
【0004】
図15は例えば特開平8−185336号公報の従来例2として示された従来のマイクロコンピュータを示す構成図であり、図において、11はデバッグツールである。また、マイクロプロセッサ7において、12はレジスタ、13はシーケンサ、14はバスコントローラ、15は伝送経路である。その他の構成は図14と同一である。
【0005】
次に動作について説明する。
ユーザターゲットシステム1のデバッグを行う場合は、シリアルインタフェース3にデバッグツール11およびホストコンピュータ2を接続する。デバッグツール11は、ホストコンピュータ2からのコマンドをマイクロプロセッサ7のシーケンサ13が理解可能なデバッグ専用のコマンドに変換する。マイクロプロセッサ7のシーケンサ13は、そのデバッグ専用のコマンドに従って、ユーザプログラムの実行を一時停止し、伝送経路15を通じてレジスタ12にアクセスしたり、バスコントローラ14を使用してメモリ4やI/O6にアクセスする。さらに、その時の実行結果をシリアルインタフェース3を通じてデバッグツール11に出力する。そして、デバッグツール11は、その実行結果をホストコンピュータ2が理解可能なデータ形式に変換してホストコンピュータ2に出力する。
【0006】
図16は例えば特開平8−185336号公報の従来例3として示された従来のマイクロコンピュータを示す構成図であり、図のデバッグツール11において、21はデバッグ用マイクロプロセッサ、22はモニタプログラムメモリ、23はトレースメモリである。その他の構成は図14と同一である。
【0007】
次に動作について説明する。
図16は、一般にインサーキットエミュレータと呼ばれるデバッグシステムである。ユーザターゲットシステム1のデバッグを行う場合は、ユーザターゲットシステム1のマイクロプロセッサ7を取り外すか、または無効にし、この部分にデバッグツール11のプローブを接続して、デバッグ用マイクロプロセッサ21を代わりに動作させる。デバッグ用マイクロプロセッサ21は、デバッグツール11上のモニタプログラムメモリ22に格納されているモニタプログラムを実行することにより、ユーザプログラムの実行を制御したり、メモリ4やI/O6にアクセスする。また、デバッグ用マイクロプロセッサ21は、あたかもマイクロプロセッサ7が実行しているかのように、ユーザターゲットシステム1上のメモリ4に格納されているプログラムを実行する。また、デバッグツール11は、トレースメモリ23を有し、デバッグ用マイクロプロセッサ21のプロセッサバスの状態をトレースすることができる。デバッグ用マイクロプロセッサ21は、マイクロプロセッサ7からは得られないトレース情報を出力する。これにより、プロセッサバス9からだけではトレースできないプロセッサの内部状態の一部がトレース可能になる。
【0008】
図17は例えば特開平8−185336号公報の従来例4として示された従来のマイクロコンピュータを示す構成図であり、図において、31はユーザターゲットシステム1に接続されたロジックアナライザである。その他の構成は図14と同一である。
【0009】
次に動作について説明する。
図17は、一般にプリプロセッサと呼ばれるデバッグシステムである。ユーザターゲットシステム1のデバッグを行う場合は、ユーザターゲットシステム1上のプロセッサバス9にロジックアナライザ31のプローブを接続することにより、マイクロプロセッサ7のメモリ4やI/O6に対するアクセスをトレースすることができる。
【0010】
図18は例えば特開平8−185336号公報の実施例として示された従来のマイクロコンピュータを示す構成図であり、図のデバッグツール11において、41はモニタプログラムである。また、ユーザターゲットシステム1において、42は外部デバッグインタフェース、マイクロプロセッサ7において、43はプロセッサコア、44はデバッグモジュール、45は内部デバッグインタフェース、46は内部プロセッサバスである。その他の構成は図14と同一である。
【0011】
次に動作について説明する。
ユーザターゲットシステム1のデバッグを行う場合は、外部デバッグインタフェース42にデバッグツール11を接続する。プロセッサコア43は、内部デバッグインタフェース45およびデバッグモジュール44を介してデバッグツール11上のモニタプログラム41を実行する。この時、プロセッサコア43からデバッグツール11に対してアドレスやサイズ情報を出力し、デバッグツール11では、対応するモニタプログラム41のコードをプロセッサコア43に出力する。モニタプログラム41では、メモリ4やI/O6のリードやライト、ハードウエアブレイクポイントの設定、ユーザプログラムの実行開始アドレスの指定などの実行制御機能を実現する。また、デバッグモジュール44では、デバッグモードで有効なシリアルモニタバス機能と、ノーマルモードで有効なPCトレース機能、トレーストリガ機能、ハードウエアブレイク機能、ソフトウエアブレイク機能、デバッグ割り込み機能、デバッグリセット機能、およびマスク機能を実現する。
【0012】
【発明が解決しようとする課題】
従来のマイクロコンピュータは以上のように構成されているので、図14に示した従来例では、デバッグを行うためのモニタプログラム5をユーザターゲットシステム1のメモリ4に格納しておかなくてはならず、メモリ4が大型化してしまう。また、デバッグされるユーザプログラムを格納したメモリ4の動作が不安定の時は、デバッグするモニタプログラム5の動作も不安定となり、有効にデバッグを行うことができない課題があった。
また、図15に示した従来例では、デバッグ専用にレジスタ12にアクセスするための伝送経路15やバスコントローラ14を設けなくてはならず、構成が大型化し、よって、チップ面積が増大してしまう課題があった。
さらに、図16に示した従来例では、ユーザターゲットシステム1へのデバッグツール11の接続をプローブによって行うので、プローブによる接続が不安定になりやすく、この場合に、ユーザターゲットシステム1の動作が不安定になってしまう。また、そのプローブをユーザターゲットシステム1の品種毎に用意する必要が生じてしまう課題があった。
さらに、図17に示した従来例では、図16に示した従来例の課題に加えて、マイクロプロセッサ7の実行制御機能が無く、木目細かなデバッグを行うことができない課題があった。
さらに、図18に示した従来例では、モニタプログラム41をアクセスするために、プロセッサコア43からデバッグツール11に対してアドレスやサイズ情報を出力しなくてはならず、モニタプログラム41を高速に実行することができないなどの課題があった。
【0013】
この発明は上記のような課題を解決するためになされたもので、構成規模の大型化を低減すると共に、デバッグツールからのデバッグプログラムをCPUが実行することによって高性能にデバッグ可能なマイクロコンピュータを得ることを目的とする。
【0014】
【課題を解決するための手段】
この発明に係るマイクロコンピュータは、シリアルインタフェースを介してデバッグツールから入力されたデバッグプログラム中の命令コードを保持する第1のレジスタと、第1のレジスタに保持された命令コードに基づいて実行するCPUとを備えたものである。
【0015】
この発明に係るマイクロコンピュータは、第1のレジスタに保持された命令コードを入力して保持するバッファを備えたものである。
【0016】
この発明に係るマイクロコンピュータは、バッファに、複数の命令コードを保持可能な複数の保持領域を設け、第1のレジスタに、領域指定コードを保持する保持領域を設け、第1のレジスタに保持された命令コードを領域指定コードに応じたバッファ中の保持領域に保持させる入力制御部を備えたものである。
【0017】
この発明に係るマイクロコンピュータは、バッファに、複数の命令コードを保持可能な複数の保持領域を設け、第1のレジスタに保持された命令コードを命令コード毎に領域指定を増加させてバッファ中の保持領域に保持させる入力制御部を備えたものである。
【0018】
この発明に係るマイクロコンピュータは、第1のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えたものである。
【0019】
この発明に係るマイクロコンピュータは、第1のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、そのバリッド信号が無効を示す場合にCPUに無意のアクセス終了信号を出力し、バリッド信号が有効を示す場合にCPUに有意のアクセス終了信号を出力する内部バスインタフェース部とを備えたものである。
【0020】
この発明に係るマイクロコンピュータは、第1のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、CPUからの命令フェッチ要求に対してそのバリッド信号が無効を示す場合にCPUに現在のプログラムカウンタ値が進まないような分岐命令を出力する出力制御部とを備えたものである。
【0021】
この発明に係るマイクロコンピュータは、命令フェッチ要求が命令プリフェッチ要求である場合、または第1のバリッド制御部によって生成されたバリッド信号が無効を示す場合にCPUに現在のプログラムカウンタ値が進まないような分岐命令を出力する出力制御部とを備えたものである。
【0022】
この発明に係るマイクロコンピュータは、シリアルインタフェースから入力された命令コード設定済信号を保持する保持領域を有する第2のレジスタと、その保持領域に命令コード設定済信号が保持されているか検出する命令コード設定済信号検出部と、その命令コード設定済信号の保持が検出された場合にバッファに保持された命令コードの有効を示すバリッド信号を生成する第1のバリッド制御部とを備えたものである。
【0023】
この発明に係るマイクロコンピュータは、CPUからデータを書き込みすることが可能で、そのデータをシリアルインタフェースを介してデバッグツールから読み出し可能にした第3のレジスタを備えたものである。
【0024】
この発明に係るマイクロコンピュータは、第3のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第2のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えたものである。
【0025】
この発明に係るマイクロコンピュータは、シリアルインタフェースを介してデバッグツールから入力されたデータを保持する第4のレジスタと、第4のレジスタに保持されたデータを読み出すCPUとを備えたものである。
【0026】
この発明に係るマイクロコンピュータは、第4のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第3のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えたものである。
【0027】
この発明に係るマイクロコンピュータは、シリアルインタフェースとしてJTAGインタフェースを用いたものである。
【0028】
この発明に係るマイクロコンピュータは、シリアルインタフェースおよび第1のレジスタを第1のクロックで動作し、バッファおよびCPUをその第1のクロックとは互いに独立した第2のクロックで動作するようにしたものである。
【0029】
この発明に係るマイクロコンピュータは、第1のクロックで動作し、第1のレジスタへの命令コードが設定可能であるか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、第1のクロックで動作し、デバッグツールからの第1のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第1のアクセス検出部と、第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第1のアクセス検出信号伝送部と、第2のクロックで動作し、バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、第1のクロックで動作し、第1のアクセス検出部から出力されたアクセス検出信号に応じて第2のレジスタの保持領域に設定不可能を示す信号を保持させると共に、第1のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に第1のバリッド制御部によって生成されたバリッド信号を保持させる第1の保持領域制御部とを備えたものである。
【0030】
この発明に係るマイクロコンピュータは、第1のクロックで動作し、バッファに命令コードが設定済であるか否かを示す信号を保持する保持領域を有する第2のレジスタと、第1のクロックで動作し、第2のレジスタの保持領域の命令コードの設定済の検出に応じて命令コード設定済信号を出力する命令コード設定済信号検出部と、第2のクロックで動作し、命令コード設定済信号の入力に応じて命令コード設定済承認信号を出力する命令コード設定済信号伝送部と、第2のクロックで動作し、バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、第1のクロックで動作し、命令コード設定済信号検出部から出力された命令コード設定済信号に応じて第2のレジスタの保持領域に設定済を示す信号を保持させると共に、命令コード設定済信号伝送部から出力された命令コード設定済承認信号に応じてその第2のレジスタの保持領域に第1のバリッド制御部によって生成されたバリッド信号を保持させる第1の保持領域制御部とを備えたものである。
【0031】
この発明に係るマイクロコンピュータは、第1のクロックで動作し、第3のレジスタに保持されたデータが有効か無効かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、第1のクロックで動作し、デバッグツールからの第3のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第2のアクセス検出部と、第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第2のアクセス検出信号伝送部と、第2のクロックで動作し、第5のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第2のバリッド制御部と、第1のクロックで動作し、第2のアクセス検出部から出力されたアクセス検出信号に応じて第2のレジスタの保持領域に無効を示す信号を保持させると共に、第2のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に第2のバリッド制御部によって生成されたバリッド信号を保持させる第2の保持領域制御部とを備えたものである。
【0032】
この発明に係るマイクロコンピュータは、第1のクロックで動作し、第4のレジスタに設定されたデータがCPUによって読み出されたか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、第1のクロックで動作し、デバッグツールからの第4のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第3のアクセス検出部と、第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第3のアクセス検出信号伝送部と、第2のクロックで動作し、第4のレジスタから伝送されて第6のレジスタに保持されたデータがCPUによって読み出されたか否かを示すバリッド信号を生成する第3のバリッド制御部と、第1のクロックで動作し、第3のアクセス検出部から出力されたアクセス検出信号に応じて第2のレジスタの保持領域にCPUによってまだ読み出されていないことを示す信号を保持させると共に、第3のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に第3のバリッド制御部によって生成されたバリッド信号を保持させる第3の保持領域制御部とを備えたものである。
【0033】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1によるマイクロコンピュータを示す構成図であり、図において、51はマイクロコンピュータ応用機器などに設けられた1チップのマイクロコンピュータ、52はマイクロコンピュータ51のデバッグ時に接続される汎用的なデバッグツールである。また、マイクロコンピュータ51において、53は32ビット汎用レジスタを16本(R0〜R15)備えたマイクロプロセッサであるCPU、54はこの実施の形態1の特徴であるデバッグモジュール、55はユーザプログラムなどが格納された内蔵フラッシュメモリ、56は内蔵SRAM、57はDMAコントローラ、割り込みコントローラ、タイマなどの内蔵周辺I/O、58はバス制御回路、59は上記各モジュールを接続する32ビットの内部バスである。
【0034】
図2はマイクロコンピュータのCPUおよびデバッグモジュールの詳細を示す構成図であり、図において、61はデバッグモジュール54と外部のデバッグツール52とを接続するIEEE 1149.1で定められた5本のJTAGインタフェース端子であり、各端子の機能を以下に説明する。
・TCK端子 クロック入力端子
・TDI端子 テスト命令コードまたはテストデータをシリアルに入力する端子
・TDO端子 テスト命令コードまたはテストデータをシリアルに出力する端子
・TMS端子 テスト回路の状態遷移を制御するテストモード選択を入力する端子
・TRST端子 テスト回路を非同期に初期化するテストリセット入力をする端子
62はチップ外部からCPU53に対してデバッグ割り込み入力する端子である。
【0035】
また、CPU53において、63aはデバッグトラップ命令実行機能であり、このデバッグトラップ命令実行機能63aは、デバッグ専用のトラップ命令であり、CPU53がこの命令を実行することによりデバッグ事象が発生し、デバッグモードに移行するものである。63bはプログラムカウンタであり、このプログラムカウンタ63bは、CPU53が実行している命令のアドレスを保持するレジスタである。63cはプログラムカウンタ退避用レジスタであり、このプログラムカウンタ退避用レジスタ63cは、デバッグ事象等が発生した時にプログラムカウンタ63b値の退避先となるレジスタである。63dはPSWレジスタであり、このPSWレジスタ63dは、CPU53の状態を示すレジスタである。63eはPSW退避用レジスタであり、このPSW退避用レジスタ63eは、デバッグ事象が発生した時にPSWレジスタ63d値の退避先となるレジスタである。CPU53は、上記以外にもロード命令、ストア命令、分岐命令、加算命令等、一般的なCPUが備えている命令実行機能と16本の汎用レジスタ63fを備えている。ここではこの実施の形態1とは直接関係が無いので詳細は省略する。64は実行後PCブレーク機能であり、この実行後PCブレーク機能64は、ターゲットとなる命令のプログラムカウンタ値を設定すると、その命令の実行直後にデバッグ事象が発生し、デバッグモードに移行するものである。
【0036】
さらに、デバッグモジュール54において、65はJTAG制御部であり、このJTAG制御部65は、JTAGインタフェース端子61を通じてデバッグツール52と通信を行い、デバッグ機能の制御を行うものであり、JTAGインタフェース端子61でアクセス可能なデバッグ関連の制御レジスタやJTAGインタフェース端子61でのアクセスを制御するTAPコントローラなどで構成されている。66はこの実施の形態1の特徴であるJTAGインタフェース端子61を通じてCPU命令を実行するモニタコード供給機能、67はアクセスブレーク機能であり、このアクセスブレーク機能67は、ターゲットとなるデータアクセスの条件を設定すると、設定された条件を満たすデータアクセスを検出し、CPU53に対してデバッグ割込み要求を出力するものである。68は実行前PC(プログラムカウンタ)ブレーク機能であり、この実行前PCブレーク機能68は、ターゲットとなる命令のプログラムカウンタ値を設定すると、その命令がフェッチされたことを検出してCPU53に実行前PCブレーク要求を出力し、CPU53が実行前PCブレーク要求を受け取ると、その命令の実行直前にデバッグ事象が発生し、デバッグモードに移行するものである。69はデバッグ割り込み要求であり、このデバッグ割り込み要求69は、デバッグ専用の割り込みであり、DBI端子62、JTAG制御部65、アクセスブレーク機能67の3個所から発生するデバッグ割り込み要求を論理和して1本化してからCPU53に対して出力するものである。CPU53にデバッグ割り込み要求が入力されるとデバッグ事象が発生し、デバッグモードに移行する。
以上のように、マイクロコンピュータ51には、デバッグ機能が内蔵されており、主にデバッグモジュール54がデバッグ機能の制御を行っている。
【0037】
ここで、JTAGについて補足説明する。
今日のマイクロコンピュータ応用機器では、高密度実装化、デバイスの高集積、大規模、狭ピッチ化により、ボードレベルのテストが困難となってきている。このようなボードレベルのテストの課題を解決する目的で欧米の半導体、電子機器メーカ、テスタメーカなどが中心となってJTAG(Joint Test Action Group)が結成された。このJTAGより提案されたボードレベルのテスト方式がバウンダリスキャン方式といわれるものであり、現在はIEEE1149.1テストポートアクセス規格(IEEE Standard Test Access Port and Boundary Scan Architecture(IEEE Std.1149.1a−1993)として標準化されている。
バウンダリスキャン方式では、ボード上に搭載されている各デバイスの入出力ピンと内部回路間にスキャンレジスタ回路(バウンダリスキャン)を挿入し、さらにコントロール回路と専用ピンを設ける。ボード上では、各デバイスのバウンダリスキャンを接続して、専用ポートを使用してシリアルにデータの入出力を行うことにより、全てのスキャンレジスタのアクセスとコントロールを可能にしている。シリアルに命令やデータを入力し、シリアルに出力されるデータを観測することによって、ボード上にテスト用のプローブを接触させることなく、ボード上のデバイス間の接続テストやデバイス内部のテストを行うことができる。
【0038】
バウンダリスキャンは、以下のコンポーネントで構成される。
TAP(Test Access Port)バウンダリスキャンへのデータの入出力およびコントロールを行うためのポートであり、図2におけるJTAGインタフェース端子61に相当する。
TAPコントローラ TCK端子およびTMS端子からの入力に応じて状態遷移を行い、テスト回路の制御を行う。
命令レジスタ テスト命令コードを保持するレジスタで、この値をデコードしてテスト回路の制御信号を生成する。テスト命令コードとして、SAMPLE/PRELOAD命令、EXTEST命令、BYPASS命令などがある。また、上記命令とは別にデバイス独自のプライベート命令を追加することも許されている。この実施の形態1のマイクロコンピュータにおいても内蔵デバッグ機能用にいくつかのプライベート命令を備えている。
データレジスタ
・バイパスレジスタ TDI端子とTDO端子との間に設けられた1ビットのレジスタで、テスト回路をバイパスするために使用する。
・バウンダリスキャンレジスタ デバイスの内部回路と各ピンとの間に設けられたシフトレジスタをシリアルに接続した一連のレジスタ。
上記以外にもデバイス独自のデータレジスタを追加することも許されている。この実施の形態1のマイクロコンピュータにおいても内蔵デバッグ機能用にいくつかのデータレジスタを備えている。
【0039】
図3はデバッグ事象発生時の処理手順を示す説明図である。
マイクロコンピュータ51には、ユーザモードとデバッグモードの2つの実行モードがあり、ユーザプログラムを実行しているモードがユーザモードであり、ユーザプログラムの実行中にデバッグ事象が発生するとユーザモードからデバッグモードに遷移する。デバッグモードではデバッグツール52から供給されるモニタプログラム(デバッグプログラム)を実行する。
デバッグ事象の種類には、デバッグトラップ命令の実行、デバッグ割り込み要求、実行前/実行後プログラムカウンタブレーク要求がある。
デバッグ事象が発生すると、以下の処理をCPU53およびデバッグモジュール54が自動的に行った後、デバッグモードに遷移する。
・プログラムカウンタ63bの値をプログラムカウンタ退避用レジスタ63cに退避
・PSWレジスタ63dの値をPSW退避用レジスタ63eに退避した後、PSWレジスタ63dの値を更新
・発生したデバッグ事象を示すフラグ(デバッグ事象発生要因フラグ)をJTAG制御部65にあるJTAGレジスタにセット
・デバッグ事象のベクタアドレスに分岐
デバッグ事象のベクタアドレスに分岐したら、デバッグツール52は、モニタコード供給機能66を使用して命令コードをCPU53に供給することによってモニタプログラムを実行する。
ユーザモードへの復帰命令(RTE命令)を実行することにより、デバッグモードからユーザモードに遷移する。ユーザモードに遷移する際には、以下の処理をCPU53およびデバッグモジュール54が自動的に行う。
・デバッグ事象発生要因フラグをクリア
・PSW退避用レジスタ63eに退避されていた値をPSWレジスタ72に復帰・プログラムカウンタ退避用レジスタ63cに退避されていた値をプログラムカウンタ63bに復帰すると共に、その値の番地に分岐する。
【0040】
図4は内蔵領域にマッピングされたデバッグモジュール用領域を示す説明図であり、図において、71はデバッグモジュール用内蔵I/O領域(H’FFFF8000〜H’FFFF9FFF)、72はデバッグモジュール用制御レジスタ領域(H’FFFF8000〜H’FFFF8FFF)であり、実行前PC機能用のレジスタ群、アクセスブレーク機能用のレジスタ群、モニタコード供給機能用のレジスタ群がこの領域に配置されている。73はモニタコード供給領域(H’FFFF9000〜H’FFFF9FFF)であり、モニタコード供給機能66にアクセスできる領域である。この領域内での命令フェッチは、全てモニタコード供給機能66を使用したJTAGインタフェース端子61経由の命令コードをフェッチすることになる。この中のデバッグ事象ベクタエントリ(H’FFFF9000〜H’FFFF9003)は、デバッグ事象が発生するとこの領域に分岐するものである。
【0041】
図5はJTAG制御部およびモニタコード供給機能の詳細を示す構成図であり、ここで、JTAG制御部65およびモニタコード供給機能66は、主にJTAGインタフェース端子(シリアルインタフェース)61を使用してデバッグツール52からCPU53に対して命令コードを供給する機能である。このモニタコード供給機能66は、デバッグ事象が発生すると、図4に示したモニタコード供給領域73の先頭であるH’FFFF9000番地へ分岐し、CPU53は、このモニタコード供給機能66から供給される命令コードを実行するものである。
また、デバッグツール52およびJTAG制御部65は、TCKクロック(第1のクロック)、CPU53およびモニタコード供給機能66は、CLKクロック(第2のクロック)で動作し、これらTCKクロックおよびCLKクロックの周波数がどのような組合せになっても動作するように、JTAG制御部65とモニタコード供給機能66との間でハンドシェークを行うものである。
JTAG制御部65において、81はJTAGインタフェース端子61でのアクセスを制御するTAPコントローラ、82はいづれのレジスタを用いてどのようなテストを行うか選択する命令レジスタである。
【0042】
83はMON_CODEレジスタ(第1のレジスタ)であり、このMON_CODEレジスタ83は、デバッグモード時にJTAGインタフェース端子61経由でモニタプログラム(デバッグプログラム)を実行する場合に、デバッグツール52から供給される命令コードの設定に使用する32ビットのレジスタである。MON_CODEレジスタ83に設定された命令コードは、モニタコード供給機能66の命令コードバッファ(バッファ)87に転送される。この時、命令コードバッファ87の入力ポインタも自動的にインクリメントされる。
【0043】
84はMON_PARAMレジスタ(第4のレジスタ)であり、このMON_PARAMレジスタ84は、デバッグモード時にJTAGインタフェース端子61経由でモニタプログラムを実行する場合に、デバッグツール52からパラメータを渡すためのインタフェースとなる32ビットのレジスタである。デバッグツール52からJTAGインタフェース端子61経由でMON_PARAMレジスタ84に書き込みを行うと、モニタコード供給機能66のFrontMON_PARAMレジスタ88に転送され、モニタプログラム上でロード命令を使用してそのパラメータを読み出すことができる。
【0044】
85はMON_DATAレジスタ(第3のレジスタ)であり、このMON_DATAレジスタ85は、デバッグモード時にJTAGインタフェース端子61経由でモニタプログラムを実行する場合に、実行結果をデバッグツール52に出力するインタフェースとなる32ビットのレジスタである。モニタプログラム上でストア命令を使用してモニタコード供給機能66のFrontMON_DATAレジスタ89に書き込みを行うと、その値がMON_DATAレジスタ85に転送され、JTAGインタフェース端子61経由でデバッグツール52から読み出すことができる。
【0045】
86はMON_ACCESSレジスタ(第2のレジスタ)であり、このMON_ACCESSレジスタ86は、デバッグモード時にJTAGインタフェース端子61経由でデバッグツール52から供給されるモニタプログラムを実行する場合に、アクセス制御情報を設定/格納する4ビットのレジスタである。以下に、各ビットの機能を示す。
bit0 MNSTART モニタコード供給開始ビット(読み出し/書き込み可)
1:命令コード設定済み
0:命令コード未設定
“1”を設定することにより、命令コードバッファ87に有効な命令コードが設定されたことを示す。すなわち、モニタコード供給機能66における命令フェッチ要求を受け付けるようになる。
bit1 MNDTVLD FrontMON_DATA有効ビット(読み出し専用)
1:FrontMON_DATA有効(FrontMON_DATAレジスタ89への書き込みがあり、かつ、MON_DATAレジスタ85は未参照)
0:FrontMON_DATA無効(FrontMON_DATAレジスタ89への書き込みがない、またはMON_DATAレジスタ85を参照した後)
このビットは、FrontMON_DATAレジスタ89への書き込みがあった時、“1”にセットされる。このビットは、以下の条件でゼロクリアされる。
・MON_DATAレジスタ85をアクセスした時
・デバッグモードでのRTE命令実行時
・デバッグ制御部のリセット時(デバッグリセット)
bit2 MNPRMVLD FrontMON_PARAM有効ビット(読み出し専用)
1:FrontMON_PARAM有効(MON_PARAMレジスタ84は設定済みであるが、FrontMON_PARAMレジスタ88が未だ読み出されていない)
0:FrontMON_PARAM無効(MON_PARAMレジスタ84が設定されていないか、FrontMON_PARAMレジスタ88が読み出された後)
このビットは、FrontMON_PARAMレジスタ88への設定が行われた時に“1”がセットされる。このビットは、以下の条件でゼロクリアされる。
・FrontMON_PARAMレジスタ88に対して読み出しがあった時
・デバッグモードでのRTE命令実行時
・デバッグ制御部のリセット時(デバッグリセット)
bit3 MNCDBUSY MON_CODEビジービット(読み出し専用)
1:MON_CODEへの設定不可
0:MON_CODEへの設定可
このビットは、次の命令コードをMON_CODEレジスタ83に設定してもよいかどうかを示すビットである。このビットは、以下のような2つの意味がある。
・MON_CODEレジスタ83から命令コードバッファ87への転送中=“1”、転送完了=“0”
・命令コードバッファ87にフェッチされていない命令コードがある=“1”、ない=“0”
このビットは、以下の条件で“1”にセットされる。
・MON_CODEレジスタ83をアクセスした時
・MNSTARTビットに“1”をセットした時
このビットは、以下の条件でゼロクリアされる。
・MON_CODEレジスタ83に書き込んだ値が命令コードバッファ87に転送された時
・命令コードバッファ87に格納されている命令が全てCPU53によってフェッチされた時(注1)
・デバッグモードでのRTE命令実行時
・デバッグ制御部のリセット時(デバッグリセット)(注1)
命令コードバッファ87の先頭のワードに対して、2回目の命令フェッチ要求が発生した時を「命令コードバッファ87の全ての命令コードをフェッチした」と判断する。例えば、命令コードバッファ87の2ワード目に分岐命令があった場合には、3ワード目、4ワード目に命令コードが設定されていても、2ワード目の分岐命令による分岐先の命令フェッチ要求が、命令コードバッファ87に対して発生した時点で「全ての命令コードがフェッチされた」ことになる。なお、モニタコード供給機能66で分岐を行う場合には「必ず分岐先を命令コードバッファ87の先頭アドレスにしなくてはならない」という制限がデバッグツール52に対して要求されているものとする。すなわち、デバッグツール52がMON_CODEレジスタ83に設定する分岐命令の分岐先アドレスは常に4ワード境界上のアドレス(アドレスの下位4ビット[28:31]が“0000”)にする必要がある。この制限によって、モニタコード供給機能66で分岐した場合には、必ず命令コードバッファ87の1ワード目に対する命令フェッチ要求になることが保証される。
【0046】
また、モニタコード供給機能66において、87は上述した命令コードバッファ(バッファ)であり、この命令コードバッファ87は、4ワードで構成され、JTAG制御部65のMON_CODEレジスタ83の内容が転送される。命令コードバッファ87は、図4における(H’FFFF9000〜H’FFFF9FFF)にマッピングされており、どのワードが選択されるかは、アドレスの下位2ビット[28:29]で決定される。
【0047】
88はFrontMON_PARAMレジスタ(第6のレジスタ)であり、このFrontMON_PARAMレジスタ88は、デバッグツール52から供給されるパラメータを受け渡しするための32ビットのレジスタである。JTAG制御部65のMON_PARAMレジスタ84の内容がこのFrontMON_PARAMレジスタ88に転送される。
【0048】
89はFrontMON_DATAレジスタ(第5のレジスタ)であり、このFrontMON_DATAレジスタ89は、実行結果をデバッグツール52に受け渡しするための32ビットのレジスタである。このFrontMON_DATAレジスタ89の内容がJTAG制御部65のMON_DATAレジスタ85に転送される。
【0049】
さらに、JTAG制御部65において、91はMON_CODEアクセス検出部(第1のアクセス検出部)であり、このMON_CODEアクセス検出部91は、MON_CODEレジスタ83に対するアクセスがあった時に“1”のMON_CODEアクセスA信号を生成し、MON_CODEアクセスC信号が返ってくると、そのMON_CODEアクセスC信号の立上りエッジで“0”を生成するものである。生成された信号は、MNCDBUSYビット制御部93およびモニタコード供給機能66に出力される。
92はMNSTARTビット“1”セット検出部(命令コード設定済信号検出部)であり、このMNSTARTビット“1”セット検出部92は、MON_ACCESSレジスタ86のMNSTARTビットに対する“1”が書き込まれた時に“1”のスタート要求A信号を生成し、スタート要求C信号が返ってくると、そのスタート要求C信号の立上りエッジで“0”を生成するものである。生成された信号は、MNCDBUSYビット制御部93およびモニタコード供給機能66に出力される。
【0050】
93はMNCDBUSYビット制御部(第1の保持領域制御部)であり、このMNCDBUSYビット制御部93は、デバッグモジュールリセット信号でMON_ACCESSレジスタ86のMNCDBUSYビットをゼロクリアし、MON_CODEレジスタ83に対するアクセスが検出されるか、MNSTARTビットに“1”セットが検出されれば、MNCDBUSYビットに“1”をセットし、MON_CODEアクセスC信号が“1”になるか、スタート要求C信号が“1”になると、MNCDBUSYビットにはバッファバリッド信号の値を入力し、上記以外は値を保持するものである。
【0051】
94はMON_PARAMアクセス検出部(第3のアクセス検出部)であり、このMON_PARAMアクセス検出部94は、MON_PARAMレジスタ84に対するアクセスがあった時に“1”のMON_PARAMアクセスA信号を生成し、MON_PARAMアクセスC信号が返ってくると、そのMON_PARAMアクセスC信号の立上りエッジで“0”を生成するものである。生成された信号は、MNPRMVLDビット制御部95およびモニタコード供給機能66に出力される。
【0052】
95はMNPRMVLDビット制御部(第3の保持領域制御部)であり、このMNPRMVLDビット制御部95は、デバッグモジュールリセット信号でMON_ACCESSレジスタ86のMNPRMVLDビットをゼロクリアし、MON_PARAMレジスタ84に対するアクセスが検出されれば、MNPRMVLDビットに“1”をセット、MON_PARAMアクセスC信号が“1”になると、MNPRMVLDビットにはFrontMON_PARAMバリッド信号の値を入力し、上記以外は値を保持するものである。
【0053】
96はMON_DATAアクセス検出部(第2のアクセス検出部)であり、このMON_DATAアクセス検出部96は、MON_DATAレジスタ85に対するアクセスがあった時に“1”のMON_DATAアクセスA信号を生成し、MON_DATAアクセスC信号が返ってくると、そのMON_DATAアクセスC信号の立上りエッジで“0”を生成するものである。生成された信号は、MNDTVLDビット制御部97およびモニタコード供給機能66に出力される。
【0054】
97はMNDTVLDビット制御部(第2の保持領域制御部)であり、このMNDTVLDビット制御部97は、デバッグモジュールリセット信号でMON_ACCESSレジスタ86のMNDTVLDビットをゼロクリア、MON_DATAレジスタ85に対するアクセスが検出されれば、MNDTVLDビットに“1”をセット、MON_DATAアクセスC信号が“1”になると、MNDTVLDビットにはFrontMON_DATAバリッド信号の値を入力し、上記以外は値を保持するものである。
100a〜100nはTCKクロックの立上りエッジでサンプリングするフリップフロップ回路である。
【0055】
モニタコード供給機能66において、101a〜101nはCLKクロックの立上りエッジでサンプリングするフリップフロップ回路であり、フリップフロップ回路100a〜100nとフリップフロップ回路101a〜101nの2段構成にすることで、TCKクロックに同期した信号をCLKクロックに同期した信号に変更したり、逆にCLKクロックに同期した信号をTCKクロックに同期した信号に変更している。
102b,103bはMON_CODEアクセス信号系のフリップフロップ回路(第1のアクセス検出信号伝送部)およびAND回路であり、AND回路103bからはMON_CODEアクセスB信号が出力され、また、フリップフロップ回路102bからはMON_CODEアクセスC信号が、フリップフロップ回路101c,100cを通じてJTAG制御部65に出力される。
102d,103dはスタート要求信号系のフリップフロップ回路(命令コード設定済信号伝送部)およびAND回路であり、AND回路103dからはスタート要求B信号が出力され、また、フリップフロップ回路102dからはスタート要求C信号が、フリップフロップ回路101e,100eを通じてJTAG制御部65に出力される。
102h,103hはMON_PARAMアクセス信号系のフリップフロップ回路(第3のアクセス検出信号伝送部)およびAND回路であり、AND回路103hからはMON_PARAMアクセスB信号が出力され、また、フリップフロップ回路102hからはMON_PARAMアクセスC信号が、フリップフロップ回路101i,100iを通じてJTAG制御部65に出力される。
102l,103lはMON_DATAアクセス信号系のフリップフロップ回路(第2のアクセス検出信号伝送部)およびAND回路であり、AND回路103lからはMON_DATAアクセスB信号が出力され、また、フリップフロップ回路102lからはMON_DATAアクセスC信号が、フリップフロップ回路101m,100mを通じてJTAG制御部65に出力される。
【0056】
111はバッファ入力制御部(入力制御部)であり、このバッファ入力制御部111は、MON_CODEアクセスB信号が“1”の時にMON_CODE出力B信号を命令コードバッファ87に入力する。どのエントリに入力するかは入力ポインタの値(0〜3)に従う。入力ポインタは、デバッグモジュールリセット信号、スタート要求B信号のいずれかが“1”でゼロクリアし、MON_CODEアクセスB信号が“1”の時に+1し、上記以外では値を保持するものである。
【0057】
112はバッファ出力制御部(出力制御部)であり、このバッファ出力制御部112は、命令コードバッファ87のどのエントリを出力するかを制御する。アドレス[28:29]の値に応じて出力するエントリを選択する。アドレス[28:29]=“00”なら#0エントリ、“01”なら#1エントリ、“10”なら#2エントリ、“11”なら#3エントリを出力、ただし、「アドレス[28:29]=“00”かつバッファバリッド信号が無効である時」、または、「アドレス[28:29]=“00”かつ分岐/先読み信号が“0”(=先読み)である時」は、自身への分岐命令を出力するものである。
【0058】
113はバッファバリッド制御部(第1のバリッド制御部)であり、このバッファバリッド制御部113は、命令コードバッファ87の内容が有効である(=1)か無効である(=0)かを示すバッファバリッド信号を生成する。生成条件は、デバッグモジュールリセット信号およびユーザモード復帰信号のいずれかが“1”の時にゼロクリアし、スタート要求B信号が“1”の時に“1”にセットし、バッファリード要求信号が“1”かつアドレス[28:29]=“00”かつ分岐/先読み信号が“1”(=分岐)の時にゼロクリアし、上記以外では値を保持するものである。
【0059】
114はMON_PARAMバリッド制御部(第3のバリッド制御部)であり、このMON_PARAMバリッド制御部114は、FrontMON_PARAMレジスタ88の内容が有効である(=1)か無効である(=0)かを示すFrontMON_PARAMバリッド信号を生成する。生成条件は、デバッグモジュールリセット信号、ユーザモード復帰信号、およびFrontMON_PARAMリード要求信号のいずれかが“1”の時にゼロクリアし、MON_PARAMアクセスB信号が“1”の時に“1”にセットし、上記以外では値を保持するものである。
【0060】
115はMON_DATAバリッド制御部(第2のバリッド制御部)であり、このMON_DATAバリッド制御部115は、FrontMON_DATAレジスタ89の内容が有効である(=1)か無効である(=0)かを示すFrontMON_DATAバリッド信号を生成する。生成条件は、デバッグモジュールリセット信号、ユーザモード復帰信号、およびMON_DATAアクセスB信号のいずれかが“1”の時にゼロクリアし、FrontMON_DATAライト要求信号が“1”の時に“1”にセットし、上記以外では値を保持するものである。
【0061】
116は内部バスインタフェース部であり、この内部バスインタフェース部116は、モニタコード供給機能66の内部バスアクセスを制御するものであり、以下の機能を有する。
・内部バスプロトコル制御 内部バスからのアクセス要求信号とリード/ライト要求信号を受けて、アクセス完了を示すアクセス終了信号を返す機能。
・出力制御 命令コードバッファ87の出力データ、FrontMON_PARAMレジスタ88の出力データをデータバス59b上に出力する機能。
・入力制御 データバス59bの値を入力し、FrontMON_DATAレジスタ89に出力する機能。
・アドレスデコード 命令コードバッファ87へのリード要求を示すバッファリード要求信号、FrontMON_DATAレジスタ89へのライト要求を示すFrontMON_DATAライト要求信号、FrontMON_PARAMレジスタ88へのリード要求を示すFrontMON_PARAMリード要求信号を生成する機能。
【0062】
次に動作について説明する。
上記図5の構成図を参照しながら動作を説明する。
(1)命令コードバッファへの設定
A.MON_CODEレジスタから命令コードバッファへの転送
▲1▼MON_CODEレジスタへの書き込み
・デバッグツール52がJTAGインタフェース端子61を使用してシリアルにMON_CODEレジスタ83に命令コードを書き込む。
・MON_CODEレジスタ83の出力であるMON_CODE出力A信号は、フリップフロップ回路100a,101aを経てモニタコード供給機能66に伝わり、CLK同期のMON_CODE出力B信号となる。
▲2▼MON_CODEレジスタへのアクセス検出
・MON_CODEアクセス検出部91は、命令レジスタ82の値とTAPコントローラ81の状態からMON_CODEレジスタ83へのアクセスがあったことを検出する。そして、MON_CODEアクセスA信号を“1”にする。
▲3▼命令コードバッファへの書き込み
・MON_CODEアクセスA信号は、フリップフロップ回路100b,101bを経てモニタコード供給機能66に伝わり、CLK同期の信号となり、さらに、フリップフロップ回路102b、AND回路103bによって、MON_CODEアクセスA信号が“0”から “1”へ変化した時に1CLK分だけ“1”となるMON_CODEアクセスB信号が生成される。
・バッファ入力制御部111により、MON_CODEアクセスB信号が“1”の間にMON_CODE出力B信号が命令コードバッファ87に書き込まれる。この時書き込まれるエントリは、入力ポインタの値(0〜3)が示すエントリとなる。最初の入力ポインタの値は“0”で、命令コードバッファ87への書き込み後、入力ポインタの値は+1される。
上記の手順を繰り返すことによって、命令コードバッファ87に最大4エントリ分まで命令コードを設定することができる。デバッグツール52は、複数の命令コードを設定する場合、次の命令コードをMON_CODEレジスタ83に設定してもよいかどうかをMON_ACCESSレジスタ86のMNCDBUSYビットの値によって知ることができる。MON_CODEレジスタ83の値が命令コードバッファ87に転送されるとMNCDBUSYビットの値が“0”になって、デバッグツール52から次の命令コードをMON_CODEレジスタ83に設定してもよいことを示す。このMNCDBUSYビットの制御を以下に示す。
【0063】
B.命令コード設定時のデバッグツールとのハンドシェイク制御
▲1▼デバッグツールによるMON_CODEレジスタの設定でMNCDBUSYビットの“1”セット
・MNCDBUSYビット制御部93では、MON_CODEアクセスA信号が“1”になると、MON_ACCESSレジスタ86のMNCDBUSYビットに“1”をセットする。
・MNCDBUSYビットが“1”であることは、MON_CODEレジスタ83にセットした命令コードがまだ命令コードバッファ87に転送されていないことを示している。
・デバッグツール52は、MON_CODEレジスタ83への設定を行なった後、MON_ACCESSレジスタ86をアクセスしてMNCDBUSYビットの値を確認し、“1”である間は次の命令コードの設定を行わない。
▲2▼命令コードバッファへの転送完了でMNCDBUSYビットの“0”クリア
・モニタコード供給機能66は、MON_CODEアクセスA信号がモニタコード供給機能66に伝わったことを示す信号として、フリップフロップ回路102bを経たMON_CODEアクセスC信号をJTAG制御部65に返す。
・MNCDBUSYビット制御部93では、MON_CODEアクセスC信号が“1”になると、MON_ACCESSレジスタ86のMNCDBUSYビットにバッファバリッド信号の値が設定されるように制御する。命令コード設定時のバッファバリッド信号は“0”となっているので、実際にはMNCDBUSYビットは“0”にクリアされる。
・MNCDBUSYビットが“0”であることは、MON_CODEレジスタ83にセットした命令コードが命令コードバッファ87へ転送されたことを示している。
・デバッグツール52は、MON_CODEレジスタ83への設定を行なった後、MON_ACCESSレジスタ86をアクセスしてMNCDBUSYビットの値を確認し、“0”になれば次の命令コードの設定を行う。
・MNCDBUSYビットの値をB−▲1▼で強制的に“1”にセットし、その後、MON_CODEアクセスC信号が返ってきてからバッファバリッド信号の値が設定されるように制御するのは、CLKクロックがTCKクロックに比べて非常に遅い場合のための対策である。CLKクロックがTCKクロックに比べて非常に遅い場合は、MON_CODEレジスタ83に設定された値が命令コードバッファ87まで転送されるのも非常に遅くなる。このため、MON_CODEレジスタ83から命令コードバッファ87への転送と同じように、モニタコード供給機能66に転送されるMON_CODEアクセスC信号を使用して、MON_CODEレジスタ83の値が命令コードバッファ87に転送し終わったかどうかを判断している。MON_CODEアクセスC信号がJTAG制御部65に返ってこないうちは、MON_CODEレジスタ83の値も命令コードバッファ87にまだ到達していないものとしてMNCDBUSYビットを強制的に“1”にし、デバッグツール52が次の命令コードを設定するのを防いでいる。
図6は命令コードバッファへの設定動作時におけるTCKの周波数<CLKの周波数の場合の各種信号を示すタイミングチャート、図7は命令コードバッファへの設定動作時におけるTCKの周波数>CLKの周波数の場合の各種信号を示すタイミングチャートである。
【0064】
(2)CPUによる命令コードの実行
A.命令コードバッファに設定された命令コードの実行
▲1▼MNSTARTビットへの“1”書き込み
・(1)の手順で命令コードを命令コードバッファ87に設定し終わると、デバッグツール52は、MON_ACCESSレジスタ86のMNSTARTビットに“1”を書き込む。
▲2▼MNSTARTビットに“1”がセットされたことを検出
・MNSTARTビット“1”セット検出部92、命令レジスタ82の値、TAPコントローラ81の状態およびMON_ACCESSレジスタ86のMNSTARTビットの値からMON_ACCESSレジスタ86のMNSTARTビットに“1”が書き込まれたことを検出する。そして、スタート要求A信号を“1”にする。
▲3▼命令コードバッファの値を読み出し可能にする
・スタート要求A信号は、フリップフロップ回路100d,101dを経てモニタコード供給機能66に伝わり、CLK同期の信号となり、さらに、フリップフロップ回路102d、AND回路103dによって、スタート要求A信号が“0”から“1”へ変化した時に1CLK分だけ“1”となるスタート要求B信号が生成される。
・バッファ入力制御部111では、スタート要求B信号が“1”になると、入力ポインタの値を“0”に初期化する。これにより、CPU53による命令フェッチが終了した後、デバッグツール52が新たな命令コードを設定する場合には、命令コードバッファ87にはエントリ#0から設定が行われる。
・バッファバリッド制御部113では、スタート要求B信号が“1”になると、バッファバリッド信号を“1”にする。これにより、命令コードバッファ87の命令コードが読み出し可能になったことを示している。
▲4▼命令コードバッファの出力制御
・命令コードバッファ87からどのエントリの命令コードを出力するかはバッファ出力制御部112で行う。
・アドレス[28:29]の値に応じて出力するエントリを選択する。すなわち、アドレス[28:29] =“00”ならエントリ#0、“01”ならエントリ#1、“10”ならエントリ#2、“11”ならエントリ#3を出力する。
・ただし、アドレス[28:29] =“00”の場合に、バッファバリッド信号が“0”もしくは分岐/先読み信号が“0”(=先読み)である時は、CPU53からの命令フェッチ要求に対して「自分自身への分岐命令」の命令コードを内部バスインタフェース部116に出力する。
【0065】
以下に、CPU53からの命令フェッチ要求に対する処理について詳細に説明する。
▲4▼−a.デバッグ事象発生時のCPUの命令フェッチ要求
・CPU53はデバッグ事象が発生するとH’FFFF9000番地に分岐する。この時、CPU53はバス制御回路58に対して命令フェッチ要求を出す。バス制御回路58がCPU53からの要求を受け付けると、CPU53とバス制御回路58はモニタコード供給機能66に対して次の信号を出力する。
CPUから出力される値
・アドレスバス :H’FFFF9000
・分岐/先読み :“1”(=分岐)
バス制御部から出力される値
・アクセス要求 :“1”
・リード/ライト :“1”(=リード)
▲4▼−b命令コードバッファに命令コードが未設定の場合の処理
・モニタコード供給機能66の内部バスインタフェース部116は、アドレスをデコードして命令コードバッファ87へのリード要求であることを検出し、バッファリード要求信号を“1”にする。
・バッファバリッド信号が“0”の場合は、命令コードバッファ87からの出力は「自分自身への分岐命令」となる。内部バスインタフェース部116は、バス制御回路58に対して次の信号を出力する。
・データバス :自分自身への分岐命令
・アクセス終了 :“1”
CPU53は「自分自身への分岐命令」を受け取る。
▲4▼−c命令コードの先読み
CPU53は命令の先読み(命令プリフェッチ)を行なうため、引き続きCPU53からH’FFFF9004番地への命令フェッチ要求がバス制御部80に対して出力される。バス制御回路58がCPU53からの要求を受け付けるとCPU53とバス制御回路58は次の信号を出力する。
CPU53から出力される値
・アドレスバス :H’FFFF9004
・分岐/先読み :“0”(=先読み)
バス制御回路58から出力される値
・アクセス要求 :“1”
・リード/ライト :“1” (=リード)
・この命令フェッチ要求に対して、モニタコード供給機能66は▲4▼−bと同様の動作を行なう。ただし、バッファ出力制御部112はアドレス[28:29]の値が“01”なので、命令コードバッファ87のエントリ#1を選択し、この値がデータバス59b上に出力される。CPU53は、このデータバス59b上の命令を受け取る。
・こうして、引き続きH’FFFF9008、H’FFFF900C番地への命令プリフェッチ要求が続き、CPU53はモニタコード供給機能66からエントリ#2の値、エントリ#3の値を受け取る。
・さらに引き続いてH’FFFF9010番地への命令プリフェッチ要求が続いた場合には、モニタコード供給機能66は▲4▼−bと同様「自分自身への分岐命令」をデータバス59bに出力する。
・なお、これらの命令プリフェッチ動作は▲4▼−bでCPU53が受け取った「自分自身への分岐命令」が実行されるまで続き、命令プリフェッチ要求の回数は、CPU53やバスの状態によって変化する。
▲4▼−d自分自身への分岐命令の実行
・受け取った「自分自身への分岐命令」が実行されると、CPU53は再びH’FFFF9000番地への命令フェッチ要求を出し、▲4▼−aの処理に戻る。この時、▲4▼−cの先読みで受け取っていた命令コードはすべてキャンセルとなり実行されることはない。
・こうして、モニタコード供給機能66のバッファバリッド信号が“1”にならない間は、▲4▼−a〜cの動作が繰り返される。この間命令フェッチ要求は毎回終了するのでCPU53以外のものが要求を出した場合には内部バスを使用することも可能である。
▲4▼−e.バッファバリッドが“1”になったときの動作
・A−▲3▼の処理でバッファバリッド信号が“1”になった場合、モニタコード供給機能66は、“1”になったタイミングに応じて次のように処理を行い、CPU53による命令実行が行われる。
・CPU53がデバッグ事象の発生でH’FFFF9000番地に分岐するより前にバッファバリッド信号が“1”になった場合には、モニタコード供給機能66からは次の信号を出力する。
・データバス :エントリ#0の値
・アクセス終了 :“1”
CPU53はエントリ#0の命令を実行し、その後もエントリ#1,#2・・の命令フェッチが行われてCPU53による実行が行われる。
・▲4▼−cの処理の途中でバッファバリッド信号が“1”になった場合、▲4▼−dまでは処理が進んで「自分自身への分岐命令」を実行する。それまでに受け取った命令はキャンセルされる。「自分自身への分岐命令」の実行による命令フェッチに対して、モニタコード供給機能66からは次の信号を出力する。
・データバス :エントリ#0の値
・アクセス終了 :“1”
CPU53はエントリ#0の命令を実行し、その後もエントリ#1,#2・・の命令フェッチが行われてCPU53による実行が行われる。
<命令プリフェッチ動作による誤動作の防止機能>
上記の▲4▼−cの処理の途中でバッファバリッド信号が“1”になった場合の処理の中で、H’FFFF9010番地への命令プリフェッチ要求が発生した時、分岐/先読み信号の値が“0”(=先読み)である場合には「自分自身への分岐命令」を出力するよう制御される。そして、この「自分自身への分岐命令」実行後から命令コードバッファ87の命令を実行することになる。もし、分岐/先読み信号の値に応じて制御していなければ、H’FFFF9010番地への命令プリフェッチ要求に対してエントリ#0の命令コードを出力してしまう。そうなると、エントリ#0の命令コードは実行すべきであるにもかかわらず、先に▲4▼−bで受け取っている「自分自身への分岐命令」の実行によってキャンセルされてしまう。「自分自身への分岐命令」の実行による分岐先の命令フェッチの時には既にエントリ#0の命令コードは読み出された後であるため、バッファバリッド信号は“0”となっており、モニタコード供給機能66からは「自分自身への分岐命令」を出力することになり、結局エントリ#0の命令コードは実行されないままとなる。
▲5▼バッファバリッド信号の“0”クリア
・バッファリード要求信号が“1”、かつ、アドレス[28:29]の値=“00”、かつ、分岐/先読み信号が“1”(=分岐)の時にバッファバリッド信号は“0”クリアされ、命令コードバッファ87の命令コードが全てCPU53によって読み出されたことを示す。
なお、一度、命令コードバッファ87に設定した命令コードを何度も使用する場合は、デバッグツール52から次の命令コードを転送することなく、MON_ACCESSレジスタ86のMNSTARTビットに“1”を書き込めば、CPU53によって命令コードバッファ87に設定された同一の命令コードを読み出すことができ、このようにして複数回に渡って命令コードバッファ87に保持された同一の命令コードをCPU53から読み出すことができ、命令コードの設定の手間を省くことができる。
【0066】
B.CPUによる命令実行時のデバッグツールとのハンドシェイク制御
▲1▼デバッグツールによるスタート要求でMNCDBUSYビットの“1”セット
・MNCDBUSYビット制御部93では、スタート要求A信号が“1”になると、MON_ACCESSレジスタ86のMNCDBUSYビットに “1”をセットする。
・MNCDBUSYビットが“1”であることは、命令コードバッファ87の全命令コードがまだCPU53によって読み出しされていないことを示している。
・デバッグツール52は、MNSTARTビットへの“1”セットの後、MNCDBUSYビットの値を確認し、“1”である間は次の命令コードの設定やスタート要求を行わない。
▲2▼CPUによる命令コードバッファ読み出し完了でMNCDBUSYビットの“0”クリア
・モニタコード供給機能66は、スタート要求A信号がモニタコード供給機能66に伝わったことを示す信号として、スタート要求C信号をJTAG制御部65に返す。
・MNCDBUSYビット制御部93では、スタート要求C信号が“1”になると、MON_ACCESSレジスタ86のMNCDBUSYビットにバッファバリッド信号の値が設定されるよう制御する。
・バッファバリッド信号は、バッファバリッド制御部113によって次のように生成される。
a.デバッグツール52によってMNSTARTビットに“1”がセットされると、A−▲2▼〜▲3▼の処理によってスタート要求B信号が“1”になる。スタート要求B信号が“1”になるとバッファバリッド信号は“1”になり、有効な命令コードが命令コードバッファ87に設定されていることを示している。
b.この後、CPU53によって命令コードバッファ87の読みだしが行われると、A−▲5▼の処理によってバッファバリッド信号が“1”にクリアされ、命令コードバッファ87の値がCPU53によって全て読み出されたことを示す。
・デバッグツール52は、MNSTARTビットに“1”セットを行なった後、MON_ACCESSレジスタ86をアクセスしてMNCDBUSYビットの値を確認する。MNCDBUSYビットが“1”であることは命令コードバッファ87の命令コードがCPU53によってすべて読み出されたことを示しており、次の命令コードの設定やスタート要求を行うことができる。
・MNCDBUSYビットの値をB−▲1▼で強制的に“1”セットし、その後スタート要求C信号が返ってきてからバッファバリッド信号の値が設定されるように制御するのは、CLKクロックがTCKクロックに比べて非常に遅い場合のための対策である。CLKクロックがTCKクロックに比べて非常に遅い場合は、MNSTARTビットへの“1”書きこみの後、バッファバリッド信号が“1”セットされるのが遅くなり、MNCDBUSYビットチェック時にまだセットされていない可能性がある。そのため、MNSTARTビットへの設定が行なわれると同時にMNCDBUSYビットを強制的に“1”セットしておき、バッファバリッド信号が命令コードバッファ87の有効/無効が正しく反映できていることがわかってからMNCDBUSYビットにはバッファバリッド信号の値を反映するように制御している。
図8はCPUによる命令コードの実行動作時におけるTCKの周波数<CLKの周波数の場合の各種信号を示すタイミングチャート、図9はCPUによる命令コードの実行動作時におけるTCKの周波数>CLKの周波数の場合の各種信号を示すタイミングチャートである。
【0067】
(3)MON_PARAMレジスタ関連の動作
MON_PARAMレジスタ84は、モニタプログラムの実行時に必要なデータをチップ外部のデバッグツール52から与えるためのインタフェースとなるレジスタである。したがって、MON_PARAMレジスタ84を使用する場合には、FrontMON_PARAMレジスタ88のリードを行なう命令を含んだモニタプログラムをMON_CODEレジスタ83経由で実行させることになる。例えば、内蔵SRAM56へのダウンロードを行なう場合に有効である。ダウンロードさせるデータをMON_PARAMレジスタ84経由で外部から与えておいてから次のようなプログラムを上記(1)(2)で述べたような手順でCPU53に実行させるという処理を繰り返すことによってダウンロード機能を実現できる。
LD R2,@R0 レジスタ0が示す番地(=H’FFFF8004番地)をリードし、レジスタ2に格納する
ST R2,@R1 レジスタ2の内容をレジスタ1が示す番地(=ダウンロード先)に書き込む
ADD R1,#4 レジスタ1の値を+4
BRA 命令バッファの先頭番地に分岐
※レジスタ0には予めH’FFFF8004(=MON_PARAMレジスタの番地)が、レジスタ1には予めダウンロード先の先頭アドレスがセットされているものとする。
【0068】
MON_PARAMレジスタ関連の詳細な動作を以下に示す。
A.MON_PARAMレジスタを使用したデバッグツールからCPUへのデータの受け渡し
▲1▼デバッグツールによるMON_PARAMレジスタへの書き込み
・デバッグツール52がJTAGインタフェース端子61を使用してMON_PARAM84レジスタにシリアルにデータを書き込む。
・MON_PARAMレジスタ84の出力であるMON_PARAM出力A信号は、フリップフロップ回路100g,101gを経てモニタコード供給機能66に伝わり、CLK同期のMON_PARAM出力B信号となる。
▲2▼MON_PARAMレジスタへのアクセスを検出
・MON_PARAMアクセス検出部94は、命令レジスタ82の値とTAPコントローラ81の状態からMON_PARAMレジスタ84にアクセスがあったことを検出する。そして、MON_PARAMアクセスA信号を“1”にする。
▲3▼FrontMON_PARAMレジスタへの書き込み
・MON_PARAMアクセスA信号は、フリップフロップ回路100h,101hを経てモニタコード供給機能66に伝わり、CLK同期の信号になる。さらに、フリップフロップ回路102h、およびAND回路103hによって、MON_PARAMアクセスA信号が“0”から“1”に変化した時に1CLK分だけ“1”となるMON_PARAMアクセスB信号が生成される。
・MON_PARAMアクセスB信号が“1”の時に、MON_PARAM出力B信号がFrontMON_PARAMレジスタ88に書き込まれる。
▲4▼CPUによる読み出し
・CPU53がH’FFFF8404番地のデータをリードする命令を実行すると、CPU53からバス制御回路58にリード要求が出る。
・バス制御回路58がCPU53からのリード要求を受け付けると、CPU53とバス制御回路58はモニタコード供給機能66に対して次の値を出力する。
CPUから出力される値
・アドレスバス :H’FFFF8404
バス制御部から出力される値
・アクセス要求 :“1”
・リード/ライト :“1”(=リード)
・モニタコード供給機能66の内部バスインタフェース回路116は、アドレスバス59aの値をデコードしてFrontMON_PARAMレジスタ88へのリード要求であることを知り、FrontMON_PARAMリード要求信号を“1”にする。また、FrontMON_PARAMレジスタ88の値をデータバス59bに出力しアクセス終了信号を“1”にする。
・アクセス終了信号が“1”になるとCPU53はデータバス59b上の値を取り込む。
なお、デバッグツール52は、FrontMON_PARAMレジスタ88の値がCPU53によって読み出されたことをMON_ACCESSレジスタ86のMNPRMVLDビットの値によって知ることができる。MNPRMVLDビットの値が“1”になるとFrontMON_PARAMレジスタ88の値が読み出されたことを示している。このMNPRMVLDビットの制御を以下に示す。
【0069】
B.MON_PARAMレジスタ使用時のハンドシェイク制御
▲1▼デバッグツールによるMON_PARAMレジスタへの設定でMNPRMVLDビットの“1”セット
・MNPRMVLDビット制御部95では、MON_PARAMアクセス検出A信号が“1”になると、MON_ACCESSレジスタ86のMNPRMVLDビットに“1”をセットする。
・MNPRMVLDビットが“1”であることは、MON_PARAMレジスタ84にセットしたデータがまだCPU53によって読み出されていないことを示している。
・デバッグツール52は、MON_PARAMレジスタ84への設定を行なった後、MON_ACCESSレジスタ86をアクセスしてMNPRMVLDビットの値を確認し、“1”である間は次のデータの設定を行なわない。
▲2▼CPUによるFrontMON_PARAMレジスタの読み出しでMNPRMVLDビットの“0”クリア
・モニタコード供給機能66は、MON_PARAMアクセスA信号がモニタコード供給機能66に伝わったことを示す信号として、MON_PARAMアクセスC信号をJTAG制御部65に返す。
・MNPRMVLDビット制御部95では、MON_PARAMアクセスC信号が“1”になると、MON_ACCESSレジスタ86のMNPRMVLDビットにFrontMON_PARAMバリッド信号の値が設定されるよう制御する。
・FrontMON_PARAMバリッド信号は、MON_PARAMバリッド制御部114によって次のように生成される。
a.デバッグツール52によってMON_PARAMレジスタ84へのアクセスが行われると、A−▲2▼〜▲3▼の処理によってMON_PARAMアクセスB信号が“1”になる。MON_PARAMアクセスB信号が“1”になるとFrontMON_PARAMバリッド信号は“1”にセットされ、有効なデータがFrontMON_PARAMレジスタ88に設定されていることを示している。
b.この後、CPU53によってFrontMON_PARAMレジスタ88の読み出しが行われると、A−▲4▼の処理によってFrontMON_PARAMリード要求が“1”になる。FrontMON_PARAMリード要求が“1”になるとFrontMON_PARAMバリッド信号は“0”にクリアされ、FrontMON_PARAMレジスタ88の値が読み出されたことを示している。
・デバッグツール52は、MON_PARAMレジスタ84への設定を行なった後、MON_ACCESSレジスタ86をアクセスしてMNPRMVLDビットの値を確認し、“0”になることによってMON_PARAMレジスタ84に設定した値がCPU53によって読み出されたことを知ることができる。
・MNPRMVLDビットの値をB−▲1▼で強制的に“1”セットし、その後、MON_PARAMアクセスC信号が返ってきてからFrontMON_PARAMバリッド信号の値が設定されるように制御するのは、CLKクロックがTCKクロックに比べて非常に遅い場合のための対策である。CLKクロックがTCKクロックに比べて非常に遅い場合は、MON_PARAMレジスタ84への書き込みの後、FrontMON_PARAMバリッド信号が“1”セットされるのが遅くなり、次のMON_PARAMレジスタ84への設定のためのMNPRMVLDビットのチェック時にもまだセットされていない可能性がある。そのため、MON_PARAMレジスタ84への設定が行なわれると同時にMNPRMVLDビットを強制的に“1”セットしておき、FrontMON_PARAMバリッド信号が次のFrontMON_PARAMレジスタ88の有効/無効が正しく反映できていることがわかってからMNPRMVLDビットにはFrontMON_PARAMバリッド信号の値を反映するように制御している。
図10はMON_PARAMレジスタ関連の動作時におけるTCKの周波数<CLKの周波数の場合の各種信号を示すタイミングチャート、図11はMON_PARAMレジスタ関連の動作時におけるTCKの周波数>CLKの周波数の場合の各種信号を示すタイミングチャートである。
【0070】
(4)MON_DATAレジスタ関連の動作
MON_DATAレジスタ85は、モニタプログラムの実行で得られたデータをチップ外部のデバッグツール52に受け渡すためのインタフェースとなるレジスタである。したがって、MON_DATAレジスタ85を使用する場合には、FrontMON_DATAレジスタ89へのライトを行なう命令を含んだモニタプログラムをMON_DATAレジスタ85経由で実行させることになる。例えば、100番地のメモリのデータを読み出したい場合には、まず、次のようなプログラムを上記(1)(2)で述べたような手順でCPU53に実行させ、その後でMON_DATAレジスタ85の値を読み出す。
LDI R0,#100 “100”をレジスタ0にセット
LD R2,@R0 レジスタ0が示す番地(=100番地)をリードし、レジスタ2に格納する
LDI R1,#H’FFFF8000
“H’FFFF8000”(=FrontMON_DATAレジスタの番地)をレジスタ1にセット
ST R2,@R1 レジスタ2の内容をレジスタ1が示す番地(=H’FFFF8000番地)に書き込む
MON_DATAレジスタ関連の詳細な動作を以下に示す。
【0071】
A.MON_DATAレジスタを使用したCPUからデバッグツールへのデータの受け渡し
▲1▼CPUによる書き込み要求
・CPU53がH’FFFF8400番地にデータをライトする命令を実行すると、CPU53からバス制御回路58にライト要求が出る。
・バス制御回路58がCPU53からのライト要求を受け付けると、CPU53とバス制御回路58はモニタコード供給機能66に対して次の値を出力する。
CPUから出力される値
・アドレスバス :H’FFFF8400
・データバス :書きこみデータ
バス制御部から出力される値
・アクセス要求 :“1”
・リード/ライト :“0”(=ライト)
▲2▼FrontMON_DATAレジスタへの書き込み
・モニタコード供給機能66の内部バスインタフェース部116は、アドレスバス59aの値をデコードしてFrontMON_DATAレジスタ89へのライト要求であることを知り、FrontMON_DATAライト要求信号を“1”にする。また、データバス59bはFrontMON_DATAレジスタ89に接続されており、FrontMON_DATAライト要求信号が“1”の間にデータバス59b上の書き込みデータがFrontMON_DATAレジスタ89に書き込まれる。
▲3▼MON_DATAレジスタへの転送
・FrontMON_DATAレジスタ89の値は、フリップフロップ101k,100kを通ってMON_DATAレジスタ85に転送される。
▲4▼デバッグツールによるMON_DATAレジスタの読み出し
・デバッグツール52がJTAGインタフェース端子61を使用してMON_DATAレジスタ85の値をシリアルに読み出す。
なお、デバッグツール52は、MON_DATAレジスタ85にCPU53からの書き込みデータが設定されたことをMON_ACCESSレジスタ86のMNDTVLDビットの値によって知ることができる。MNDTVLDビットの値が“1”になるとMON_DATAレジスタ85にデータが設定されたことを示している。このMNDTVLDビットの制御を以下に示す。
【0072】
B.MON_DATAレジスタ使用時のハンドシェイク制御
▲1▼MNDTVLDビットの初期化
・MNDTVLDビットは、デバッグモジュール54に対するリセットで“0”に初期化される。
▲2▼CPUによるFrontMON_DATAレジスタへの書き込みでMNDTVLDビットに“1”セット
・FrontMON_DATAレジスタ89への書き込みが行なわれるとFrontMON_DATAライト要求が“1”となる(A−▲2▼の処理)。MON_DATAバリッド制御部115ではこれを受けて、FrontMON_DATAバリッド信号を“1”にする。これが、フリップフロップ101n,100nを通ってMNDTVLD制御部97に伝わる。MNDTVLD制御部97ではこの信号をMON_ACCESSレジスタ86のMNDTVLDビットに設定する。つまり、MNDTVLDビットには“1”がセットされる。
・デバッグツール52は、MNDTVLDビットが“1”になったことでMON_DATAレジスタ85にデータが設定されたことを知り、この後、MON_DATAレジスタ85を読み出すことになる。
▲3▼デバッグツールによるMON_DATAレジスタの読み出しでMNDTVLDビットを“0”クリア
・B−▲2▼の処理でデバッグツール52がMON_DATAレジスタを読み出すと、MON_DATAアクセス検出部96は命令レジスタ82の値とTAPコントローラ81の状態からMON_DATAレジスタ85へのアクセスがあったことを検出し、MON_DATAアクセスA信号を“1”にする。MON_DATAアクセスA信号が“1”になるとMNDTVLDビット制御部97は、MNDTVLDビットの値を“0”にクリアする。
▲4▼MON_DATAバリッド信号の“0”クリア
・MON_DATAアクセスA信号は、フリップフロップ回路100l,101lを通ってモニタコード供給機能66に伝わり、フリップフロップ回路102l、AND回路103lによって、MON_DATAアクセスA信号が“0”から“1”へ変化した時に1CLK分だけ“1”となるMON_DATAアクセスB信号が生成される。MON_DATAアクセスB信号が“1”になると、MON_DATAバリッド制御部115はFrontMON_DATAバリッド信号を“0”にする。
・モニタコード供給機能66に伝わったMON_DATAアクセスA信号はフリップフロップ回路102lを経て、MON_DATAアクセスC信号としてJTAG制御部65に返っていく。これは、MON_DATAアクセスA信号がモニタコード供給機能66に伝わったことを示す信号である。MON_DATAアクセスC信号が“1”になると、MNDTVLDビット制御部97は、B−▲3▼の処理で“0”クリアしていたMNDTVLDビットの値をFrontMON_DATAバリッド信号の値となるように制御する。この後、CPU53によってFrontMON_DATAレジスタ89への書き込みが発生するとB−▲2▼の処理に移り、MNDTVLDビットに“1”がセットされる。
・MNDTVLDビットの値をB−▲3▼で強制的に“0”クリアし、その後、MON_DATAアクセスC信号が返ってきてからFrontMON_DATAバリッド信号の値が設定されるように制御するのは、CLKクロックがTCKクロックに比べて非常に遅い場合のための対策である。CLKクロックがTCKクロックに比べて非常に遅い場合は、MON_DATAレジスタ85の読み出しの後、FrontMON_DATAバリッド信号が“0”クリアされるのが遅くなり、次のMON_DATAレジスタ85の読み出しのためのMNDTVLDビットのチェック時にもまだクリアされていない可能性がある。そのため、MON_DATAレジスタ85が読み出されると同時にMNDTVLDビットを強制的に“0”クリアしておき、FrontMON_DATAバリッド信号が次のFrontMON_DATAレジスタ89の有効/無効が正しく反映できていることがわかってからMNDTVLDビットにはFrontMON_DATAバリッド信号の値を反映するように制御している。
図12はMON_DATAレジスタ関連の動作時におけるTCKの周波数<CLKの周波数の場合の各種信号を示すタイミングチャート、図13はMON_DATAレジスタ関連の動作時におけるTCKの周波数>CLKの周波数の場合の各種信号を示すタイミングチャートである。
【0073】
なお、この実施の形態1によれば、命令コードの転送に応じて命令コードバッファ87の入力ポインタを自動的にインクリメントするバッファ入力制御部111を設けたが、MON_CODEレジスタ83に2ビットの保持領域を追加し、デバッグツール52からは、そのMON_CODEレジスタ83に命令コードと共にその命令コードが命令コードバッファ87中のどのエントリ(#0〜#3)に保持されるか指定する領域指定コード(“00”=#0,“01”=#1,“10”=#2,“11”=#3)を送り、バッファ入力制御部111は、命令コードバッファ87の入力ポインタを、その命令コードの領域指定コードに応じて指定するようにしてもよい。この場合、デバッグツール52から任意の命令コードバッファ87中のエントリに命令コードを保持させることができる。
【0074】
また、この実施の形態1によれば、CPU53による命令フェッチ時に、命令コードバッファ87にまだ命令コードが設定されていない場合に、CPU53に現在のPC値が進まないような分岐命令を出力するように制御するバッファ出力制御部112を設けたが、バッファバリッド制御部113が“0”のバッファバリッド信号を出力している時、すなわち、命令コードバッファ87にまだ命令コードが設定されていない場合に、CPU53に“0”(無意)のアクセス終了信号を出力し、バッファバリッド制御部113が“1”のバッファバリッド信号を出力した時点、すなわち、命令コードバッファ87に命令コードが設定された場合に、CPU53に“1”(有意)のアクセス終了信号を出力する内部バスインタフェース部116を設けてもよい。この場合は、命令コードバッファ87に命令コードが設定されるまでの間のCPU53の無駄な命令実行を無くすことができる。
【0075】
さらに、この実施の形態1によれば、命令コードの伝送効率を高めるために命令コードバッファ87を設けたが、命令コードバッファ87は必須な構成要素ではなく、CPU53からは内部バスインタフェース部116を通じて直接にMON_CODEレジスタ83から命令コードを読み出すようにしてもよい。
この場合は、バッファ入力制御部111、バッファ出力制御部112、およびバッファバリッド制御部113は、MON_CODEレジスタ83に対して設けるようにしてもよい。
さらに、この実施の形態1によれば、FrontMON_PARAMレジスタ88、およびFrontMON_DATAレジスタ89を設けたが、FrontMON_PARAMレジスタ88、およびFrontMON_DATAレジスタ89は必須な構成要素ではなく、CPU53からは内部バスインタフェース部116を通じて直接にMON_PARAMレジスタ84からパラメータを読み出したり、直接にMON_DATAレジスタ85にデータを設定するようにしてもよい。
この場合は、MON_PARAMバリッド制御部114、およびMON_DATAバリッド制御部115は、MON_PARAMレジスタ84、およびMON_DATAレジスタ85に対して設けるようにしてもよい。
【0076】
以上のように、この実施の形態1によれば、JTAGインタフェースに接続された各種レジスタ、およびバッファを設けるだけで、デバッグツールからのモニタプログラムをCPUが実行することができ、構成規模を大型化することなく、高性能にデバッグ可能なマイクロコンピュータを得ることができる効果が得られる。
【0077】
【発明の効果】
以上のように、この発明によれば、シリアルインタフェースを介してデバッグツールから入力されたデバッグプログラム中の命令コードを保持する第1のレジスタと、第1のレジスタに保持された命令コードに基づいて実行するCPUとを備えるように構成したので、シリアルインタフェースに接続された第1のレジスタを設けるだけで、デバッグツールからのデバッグプログラムをCPUが実行することができ、構成規模を大型化することなく、高性能にデバッグすることができる効果が得られる。
【0078】
この発明によれば、第1のレジスタに保持された命令コードを入力して保持するバッファを備えるように構成したので、CPUがバッファに設定された命令コードを読み出している間に、デバッグツールから次の命令コードを第1のレジスタに設定することができ、命令コードの転送効率を高め、よって、デバッグ処理効率を高めることができる効果が得られる。
【0079】
この発明によれば、バッファに、複数の命令コードを保持可能な複数の保持領域を設け、第1のレジスタに、領域指定コードを保持する保持領域を設け、第1のレジスタに保持された命令コードを領域指定コードに応じたバッファ中の保持領域に保持させる入力制御部を備えるように構成したので、バッファに複数の保持領域を設けることによって、命令コードの転送効率、およびデバッグ処理効率を高めることができると共に、デバッグツールからバッファ中の任意の保持領域に命令コードを保持させることができる効果が得られる。
【0080】
この発明によれば、バッファに、複数の命令コードを保持可能な複数の保持領域を設け、第1のレジスタに保持された命令コードを命令コード毎に領域指定を増加させてバッファ中の保持領域に保持させる入力制御部を備えるように構成したので、バッファに複数の保持領域を設けることによって、命令コードの転送効率、およびデバッグ処理効率を高めることができると共に、デバッグツールから領域指定コードを転送する必要がなく、命令コードの設定を容易にすることができる効果が得られる。
【0081】
この発明によれば、第1のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えるように構成したので、デバッグツールは、バリッド信号の無効に応じて次の命令コードの第1のレジスタへの転送タイミングを認識することができ、効率よく命令コードを設定することができる効果が得られる。
【0082】
この発明によれば、第1のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、そのバリッド信号が無効を示す場合にCPUに無意のアクセス終了信号を出力し、バリッド信号が有効を示す場合にCPUに有意のアクセス終了信号を出力する内部バスインタフェース部とを備えるように構成したので、第1のレジスタに命令コードが設定されるまでの間のCPUの無駄な命令実行を無くすことができる効果が得られる。
【0083】
この発明によれば、第1のレジスタに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、CPUからの命令フェッチ要求に対してそのバリッド信号が無効を示す場合にCPUに現在のプログラムカウンタ値が進まないような分岐命令を出力する出力制御部とを備えるように構成したので、第1のレジスタに命令コードが設定されるまでの間はCPUからアクセスされるバスを開放することができる効果が得られる。
【0084】
この発明によれば、命令フェッチ要求が命令プリフェッチ要求である場合、または第1のバリッド制御部によって生成されたバリッド信号が無効を示す場合にCPUに現在のプログラムカウンタ値が進まないような分岐命令を出力する出力制御部とを備えるように構成したので、命令プリフェッチ要求に対する誤動作を防止することができる効果が得られる。
【0085】
この発明によれば、シリアルインタフェースから入力された命令コード設定済信号を保持する保持領域を有する第2のレジスタと、その保持領域に命令コード設定済信号が保持されているか検出する命令コード設定済信号検出部と、その命令コード設定済信号の保持が検出された場合にバッファに保持された命令コードの有効を示すバリッド信号を生成する第1のバリッド制御部とを備えるように構成したので、シリアルインタフェースから次の命令コードを転送することなく、命令コード設定済信号を転送すれば、バッファに保持された命令コードの有効を示すバリッド信号が生成され、バッファに保持された同一の命令コードを複数回に渡ってCPUから読み出すことができ、命令コードの設定の手間を省くことができる効果が得られる。
【0086】
この発明によれば、CPUからデータを書き込みすることが可能で、そのデータをシリアルインタフェースを介してデバッグツールから読み出し可能にした第3のレジスタを備えるように構成したので、CPUによって書き込まれたデータをデバッグツールから読み出すことができ、デバッグの作業効率を高めることができる効果が得られる。
【0087】
この発明によれば、第3のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第2のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えるように構成したので、デバッグツールは、バリッド信号に応じて次のデータの読み出しタイミングを認識するすることができ、効率よくデータを読み出すことができる効果が得られる。
【0088】
この発明によれば、シリアルインタフェースを介してデバッグツールから入力されたデータを保持する第4のレジスタと、第4のレジスタに保持されたデータを読み出すCPUとを備えるように構成したので、デバッグツールからCPUにデータを転送することができ、デバッグの作業効率を高めることができる効果が得られる。
【0089】
この発明によれば、第4のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第3のバリッド制御部と、そのバリッド信号を保持する保持領域を有し、シリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えるように構成したので、デバッグツールは、バリッド信号に応じて次のデータの第4のレジスタへの転送タイミングを認識することができ、効率よくデータを設定することができる効果が得られる。
【0090】
この発明によれば、シリアルインタフェースとしてJTAGインタフェースを用いるように構成したので、バウンダリスキャンテストを行うJTAGインタフェースと共有化することができ、新たなシリアルインタフェースを設ける必要が無く、構成を簡単にすることができる効果が得られる。
【0091】
この発明によれば、シリアルインタフェースおよび第1のレジスタを第1のクロックで動作し、バッファおよびCPUをその第1のクロックとは互いに独立した第2のクロックで動作するように構成したので、デバッグツールとの転送を第1のクロックで一定速度に保ちながらCPUの動作周波数を自由に設定することができる効果が得られる。
【0092】
この発明によれば、第1のクロックで動作し、第1のレジスタへの命令コードが設定可能であるか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、第1のクロックで動作し、デバッグツールからの第1のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第1のアクセス検出部と、第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第1のアクセス検出信号伝送部と、第2のクロックで動作し、バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、第1のクロックで動作し、第1のアクセス検出部から出力されたアクセス検出信号に応じて第2のレジスタの保持領域に設定不可能を示す信号を保持させると共に、第1のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に第1のバリッド制御部によって生成されたバリッド信号を保持させる第1の保持領域制御部とを備えるように構成したので、第1のクロックに対して第2のクロックが非常に遅かったり、逆に第1のクロックに対して第2のクロックが非常に速かったりしても、命令コードの設定時における誤動作を防止するハンドシェーク機能を満たすことができる効果が得られる。
【0093】
この発明によれば、第1のクロックで動作し、バッファに命令コードが設定済であるか否かを示す信号を保持する保持領域を有する第2のレジスタと、第1のクロックで動作し、第2のレジスタの保持領域の命令コードの設定済の検出に応じて命令コード設定済信号を出力する命令コード設定済信号検出部と、第2のクロックで動作し、命令コード設定済信号の入力に応じて命令コード設定済承認信号を出力する命令コード設定済信号伝送部と、第2のクロックで動作し、バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、第1のクロックで動作し、命令コード設定済信号検出部から出力された命令コード設定済信号に応じて第2のレジスタの保持領域に設定済を示す信号を保持させると共に、命令コード設定済信号伝送部から出力された命令コード設定済承認信号に応じてその第2のレジスタの保持領域に第1のバリッド制御部によって生成されたバリッド信号を保持させる第1の保持領域制御部とを備えるように構成したので、第1のクロックに対して第2のクロックが非常に遅かったり、逆に第1のクロックに対して第2のクロックが非常に速かったりしても、設定された命令コードのCPUによる実行時における誤動作を防止するハンドシェーク機能を満たすことができる効果が得られる。
【0094】
この発明によれば、第1のクロックで動作し、第3のレジスタに保持されたデータが有効か無効かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、第1のクロックで動作し、デバッグツールからの第3のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第2のアクセス検出部と、第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第2のアクセス検出信号伝送部と、第2のクロックで動作し、第5のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第2のバリッド制御部と、第1のクロックで動作し、第2のアクセス検出部から出力されたアクセス検出信号に応じて第2のレジスタの保持領域に無効を示す信号を保持させると共に、第2のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に第2のバリッド制御部によって生成されたバリッド信号を保持させる第2の保持領域制御部とを備えるように構成したので、第1のクロックに対して第2のクロックが非常に遅かったり、逆に第1のクロックに対して第2のクロックが非常に速かったりしても、CPUによるデータの設定時における誤動作を防止するハンドシェーク機能を満たすことができる効果が得られる。
【0095】
この発明によれば、第1のクロックで動作し、第4のレジスタに設定されたデータがCPUによって読み出されたか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、第1のクロックで動作し、デバッグツールからの第4のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第3のアクセス検出部と、第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第3のアクセス検出信号伝送部と、第2のクロックで動作し、第4のレジスタから伝送されて第6のレジスタに保持されたデータがCPUによって読み出されたか否かを示すバリッド信号を生成する第3のバリッド制御部と、第1のクロックで動作し、第3のアクセス検出部から出力されたアクセス検出信号に応じて第2のレジスタの保持領域にCPUによってまだ読み出されていないことを示す信号を保持させると共に、第3のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に第3のバリッド制御部によって生成されたバリッド信号を保持させる第3の保持領域制御部とを備えるように構成したので、第1のクロックに対して第2のクロックが非常に遅かったり、逆に第1のクロックに対して第2のクロックが非常に速かったりしても、データの設定時における誤動作を防止するハンドシェーク機能を満たすことができる効果が得られる。
【図面の簡単な説明】
【図1】 この発明の実施の形態1によるマイクロコンピュータを示す構成図である。
【図2】 マイクロコンピュータのCPUおよびデバッグモジュールの詳細を示す構成図である。
【図3】 デバッグ事象発生時の処理手順を示す説明図である。
【図4】 内蔵領域にマッピングされたデバッグモジュール用領域を示す説明図である。
【図5】 JTAG制御部およびモニタコード供給機能の詳細を示す構成図である。
【図6】 命令コードバッファへの設定時におけるTCKの周波数<CLKの周波数の場合の各種信号を示すタイミングチャートである。
【図7】 命令コードバッファへの設定時におけるTCKの周波数>CLKの周波数の場合の各種信号を示すタイミングチャートである。
【図8】 CPUによる命令コードの実行時におけるTCKの周波数<CLKの周波数の場合の各種信号を示すタイミングチャートである。
【図9】 CPUによる命令コードの実行時におけるTCKの周波数>CLKの周波数の場合の各種信号を示すタイミングチャートである。
【図10】 MON_PARAMレジスタ関連の動作時におけるTCKの周波数<CLKの周波数の場合の各種信号を示すタイミングチャートである。
【図11】 MON_PARAMレジスタ関連の動作時におけるTCKの周波数>CLKの周波数の場合の各種信号を示すタイミングチャートである。
【図12】 MON_DATAレジスタ関連の動作時におけるTCKの周波数<CLKの周波数の場合の各種信号を示すタイミングチャートである。
【図13】 MON_DATAレジスタ関連の動作時におけるTCKの周波数>CLKの周波数の場合の各種信号を示すタイミングチャートである。
【図14】 従来のマイクロコンピュータを示す構成図である。
【図15】 従来のマイクロコンピュータを示す構成図である。
【図16】 従来のマイクロコンピュータを示す構成図である。
【図17】 従来のマイクロコンピュータを示す構成図である。
【図18】 従来のマイクロコンピュータを示す構成図である。
【符号の説明】
51 マイクロコンピュータ、52 デバッグツール、53 CPU、54 デバッグモジュール、55 内蔵フラッシュメモリ、56 内蔵SRAM、57内蔵周辺I/O、58 バス制御回路、59 内部バス、61 JTAGインタフェース端子(シリアルインタフェース)、62 端子、63a デバッグトラップ命令実行機能、63b プログラムカウンタ、63c プログラムカウンタ退避用レジスタ、63d PSWレジスタ、63e PSW退避用レジスタ、63f 汎用レジスタ、64 実行後PCブレーク機能、65 JTAG制御部、66 モニタコード供給機能、67 アクセスブレーク機能、68 実行前PCブレーク機能、69 デバッグ割り込み要求、71 デバッグモジュール用内蔵I/O領域、72 デバッグモジュール用制御レジスタ領域、73 モニタコード供給領域、81 TAPコントローラ、82 命令レジスタ、83 MON_CODEレジスタ(第1のレジスタ)、84 MON_PARAMレジスタ(第4のレジスタ)、85 MON_DATAレジスタ(第3のレジスタ)、86MON_ACCESSレジスタ(第2のレジスタ)、87 命令コードバッファ(バッファ)、88 FrontMON_PARAMレジスタ(第6のレジスタ)、89 FrontMON_DATAレジスタ(第5のレジスタ)、91 MON_CODEアクセス検出部(第1のアクセス検出部)、92 MNSTARTビット“1”セット検出部(命令コード設定済信号検出部)、93 MNCDBUSYビット制御部(第1の保持領域制御部)、94 MON_PARAMアクセス検出部(第3のアクセス検出部)、95 MNPRMVLDビット制御部(第3の保持領域制御部)、96 MON_DATAアクセス検出部(第2のアクセス検出部)、97 MNDTVLDビット制御部(第2の保持領域制御部)、100a〜100n,101a〜101n フリップフロップ回路、102b フリップフロップ回路(第1のアクセス検出信号伝送部)、103b,103d,103h,103l AND回路、102d フリップフロップ回路(命令コード設定済信号伝送部)、102h フリップフロップ回路(第3のアクセス検出信号伝送部)、102l フリップフロップ回路(第2のアクセス検出信号伝送部)、111 バッファ入力制御部(入力制御部)、112 バッファ出力制御部(出力制御部)、113 バッファバリッド制御部(第1のバリッド制御部)、114 MON_PARAMバリッド制御部(第3のバリッド制御部)、115 MON_DATAバリッド制御部(第2のバリッド制御部)、116内部バスインタフェース部。
Claims (18)
- デバッグツールからのデバッグプログラムを入力可能なシリアルインタフェースと、
上記シリアルインタフェースから入力されたデバッグプログラム中の命令コードを保持する第1のレジスタと、
上記第1のレジスタに入力された命令コードを転送され保持する命令バッファ、及び上記命令バッファに保持された命令コードに基づいて実行するCPUとを備え、
上記命令バッファに有効な命令コードが格納されていない場合にプログラムカウンタに格納されているアドレスを更新しないアドレスへの分岐命令を前記CPUへ供給する命令供給部を有したマイクロコンピュータ。 - 上記命令バッファは、複数の命令コードを保持可能な複数の保持領域を有し、
上記第1のレジスタは、上記シリアルインタフェースによって入力されたデバッグプログラム中の命令コードと共にその命令コードが上記命令バッファ中のどの保持領域に保持されるか指定する領域指定コードとを保持する保持領域を有し、
上記第1のレジスタに保持された命令コードをその領域指定コードに応じた上記命令バッファ中の保持領域に保持させる入力制御部を備えたことを特徴とする請求項1記載のマイクロコンピュータ。 - 上記命令バッファは、複数の命令コードを保持可能な複数の保持領域を有し、
上記第1のレジスタに保持された命令コードを命令コード毎に格納すべき領域を示す領域指定値を増加させて上記命令バッファ中の保持領域に保持させる入力制御部を備えたことを特徴とする請求項1記載のマイクロコンピュータ。 - 上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、
上記第1のバリッド制御部によって生成されたバリッド信号を保持する保持領域を有し、そのバリッド信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えたことを特徴とする請求項1記載のマイクロコンピュータ。 - 上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、
上記第1のバリッド制御部によって生成されたバリッド信号が無効を示す場合にCPUに無意のアクセス終了信号を出力し、バリッド信号が有効を示す場合にCPUに有意のアクセス終了信号を出力する内部バスインタフェース部とを備え、
前記命令供給部は前記バリッド信号が無効を示す場合に前記分岐命令を供給することを特徴とする請求項1記載のマイクロコンピュータ。 - 上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、
CPUからの命令フェッチ要求に対して上記第1のバリッド制御部によって生成されたバリッド信号が無効を示す場合に上記命令供給部は上記分岐命令を出力することを特徴とする請求項1記載のマイクロコンピュータ。 - 命令フェッチ要求が命令プリフェッチ要求である場合、または上記第1のバリッド制御部によって生成されたバリッド信号が無効を示す場合に上記命令供給部は上記分岐命令を出力する特徴とする請求項6記載のマイクロコンピュータ。
- シリアルインタフェースから入力された命令コード設定済信号を保持する保持領域を有する第2のレジスタと、
上記第2のレジスタの保持領域に命令コード設定済信号が保持されているか検出する命令コード設定済信号検出部と、
上記命令コード設定済信号検出部によって命令コード設定済信号の保持が検出された場合に上記命令バッファに保持された命令コードの有効を示すバリッド信号を生成する第1のバリッド制御部とを備えたことを特徴とする請求項1記載のマイクロコンピュータ。 - CPUからデータを書き込みすることが可能で、そのデータをシリアルインタフェースを介してデバッグツールから読み出し可能にした第3のレジスタを備えたことを特徴とする請求項1記載のマイクロコンピュータ。
- 上記第3のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第2のバリッド制御部と、
上記第2のバリッド制御部によって生成されたバリッド信号を保持する保持領域を有し、そのバリッド信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えたことを特徴とする請求項9記載のマイクロコンピュータ。 - シリアルインタフェースから入力されたデータを保持する第4のレジスタを備え、
CPUは、上記第4のレジスタに保持されたデータを読み出すことを特徴とする請求項1記載のマイクロコンピュータ。 - 上記第4のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第3のバリッド制御部と、
上記第3のバリッド制御部によって生成されたバリッド信号を保持する保持領域を有し、そのバリッド信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタとを備えたことを特徴とする請求項11記載のマイクロコンピュータ。 - シリアルインタフェースは、JTAGインタフェースであることを特徴とする請求項1記載のマイクロコンピュータ。
- シリアルインタフェースおよび第1のレジスタを第1のクロックで動作し、バッファおよびCPUをその第1のクロックとは互いに独立した第2のクロックで動作することを特徴とする請求項1記載のマイクロコンピュータ。
- 第1のクロックで動作し、第1のレジスタへの命令コードが設定可能であるか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、
第1のクロックで動作し、上記デバッグツールからの上記第1のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第1のアクセス検出部と、
第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第1のアクセス検出信号伝送部と、
第2のクロックで動作し、上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、
第1のクロックで動作し、上記第1のアクセス検出部から出力されたアクセス検出信号に応じて上記第2のレジスタの保持領域に設定不可能を示す信号を保持させると共に、上記第1のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に上記第1のバリッド制御部によって生成されたバリッド信号を保持させる第1の保持領域制御部とを備えたことを特徴とする請求項14記載のマイクロコンピュータ。 - 第1のクロックで動作し、バッファに命令コードが設定済であるか否かを示す信号を保持する保持領域を有する第2のレジスタと、
第1のクロックで動作し、上記第2のレジスタの保持領域の命令コードの設定済の検出に応じて命令コード設定済信号を出力する命令コード設定済信号検出部と、
第2のクロックで動作し、命令コード設定済信号の入力に応じて命令コード設定済承認信号を出力する命令コード設定済信号伝送部と、
第2のクロックで動作し、上記命令バッファに保持された命令コードの有効または無効を示すバリッド信号を生成する第1のバリッド制御部と、
第1のクロックで動作し、上記命令コード設定済信号検出部から出力された命令コード設定済信号に応じて上記第2のレジスタの保持領域に設定済を示す信号を保持させると共に、上記命令コード設定済信号伝送部から出力された命令コード設定済承認信号に応じてその第2のレジスタの保持領域に上記第1のバリッド制御部によって生成されたバリッド信号を保持させる第1の保持領域制御部とを備えたことを特徴とする請求項14記載のマイクロコンピュータ。 - 第1のクロックで動作し、第3のレジスタに保持されたデータが有効か無効かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、
第1のクロックで動作し、上記デバッグツールからの上記第3のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第2のアクセス検出部と、
第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第2のアクセス検出信号伝送部と、
第2のクロックで動作し、第5のレジスタに保持されたデータの有効または無効を示すバリッド信号を生成する第2のバリッド制御部と、
第1のクロックで動作し、上記第2のアクセス検出部から出力されたアクセス検出信号に応じて上記第2のレジスタの保持領域に無効を示す信号を保持させると共に、上記第2のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に上記第2のバリッド制御部によって生成されたバリッド信号を保持させる第2の保持領域制御部とを備えたことを特徴とする請求項14記載のマイクロコンピュータ。 - 第1のクロックで動作し、第4のレジスタに設定されたデータがCPUによって読み出されたか否かを示す信号を保持する保持領域を有し、その信号をシリアルインタフェースを介してデバッグツールから読み出し可能にした第2のレジスタと、
第1のクロックで動作し、上記デバッグツールからの上記第4のレジスタへのアクセスの検出に応じてアクセス検出信号を出力する第3のアクセス検出部と、
第2のクロックで動作し、アクセス検出信号の入力に応じてアクセス検出承認信号を出力する第3のアクセス検出信号伝送部と、
第2のクロックで動作し、上記第4のレジスタから伝送されて第6のレジスタに保持されたデータがCPUによって読み出されたか否かを示すバリッド信号を生成する第3のバリッド制御部と、
第1のクロックで動作し、上記第3のアクセス検出部から出力されたアクセス検出信号に応じて上記第2のレジスタの保持領域にCPUによってまだ読み出されていないことを示す信号を保持させると共に、上記第3のアクセス検出信号伝送部から出力されたアクセス検出承認信号に応じてその第2のレジスタの保持領域に上記第3のバリッド制御部によって生成されたバリッド信号を保持させる第3の保持領域制御部とを備えたことを特徴とする請求項14記載のマイクロコンピュータ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31987699A JP4190114B2 (ja) | 1999-11-10 | 1999-11-10 | マイクロコンピュータ |
US09/552,726 US6687857B1 (en) | 1999-11-10 | 2000-04-19 | Microcomputer which can execute a monitor program supplied from a debugging tool |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31987699A JP4190114B2 (ja) | 1999-11-10 | 1999-11-10 | マイクロコンピュータ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001142734A JP2001142734A (ja) | 2001-05-25 |
JP4190114B2 true JP4190114B2 (ja) | 2008-12-03 |
Family
ID=18115233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31987699A Expired - Fee Related JP4190114B2 (ja) | 1999-11-10 | 1999-11-10 | マイクロコンピュータ |
Country Status (2)
Country | Link |
---|---|
US (1) | US6687857B1 (ja) |
JP (1) | JP4190114B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461796A (zh) * | 2013-09-17 | 2015-03-25 | 上海华虹集成电路有限责任公司 | 用于嵌入式8051cpu的jtag调试模块及调试方法 |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856627B2 (en) | 1999-01-15 | 2005-02-15 | Cisco Technology, Inc. | Method for routing information over a network |
JP4212224B2 (ja) * | 2000-07-10 | 2009-01-21 | 株式会社東芝 | 半導体集積回路 |
JP2002202900A (ja) * | 2000-12-28 | 2002-07-19 | Seiko Epson Corp | デバッグ装置 |
EP1286270A1 (en) * | 2001-07-24 | 2003-02-26 | Deutsche Thomson-Brandt Gmbh | An integrated circuit having a generic communication interface |
US6970809B2 (en) * | 2001-08-29 | 2005-11-29 | International Business Machines Corporation | Automated configuration of on-circuit facilities |
US6961928B2 (en) * | 2001-10-01 | 2005-11-01 | International Business Machines Corporation | Co-ordinate internal timers with debugger stoppage |
US7096385B1 (en) * | 2002-09-16 | 2006-08-22 | Advanced Micro Devices, Inc. | Method and system for testing a microprocessor |
US7444571B1 (en) * | 2003-02-27 | 2008-10-28 | Marvell International Ltd. | Apparatus and method for testing and debugging an integrated circuit |
US7216276B1 (en) * | 2003-02-27 | 2007-05-08 | Marvell International Ltd. | Apparatus and method for testing and debugging an integrated circuit |
US7496818B1 (en) * | 2003-02-27 | 2009-02-24 | Marvell International Ltd. | Apparatus and method for testing and debugging an integrated circuit |
US7137037B2 (en) * | 2003-03-27 | 2006-11-14 | Silicon Motion, Inc. | Data storage system and method for testing the same |
JP2005070949A (ja) * | 2003-08-21 | 2005-03-17 | Sanyo Electric Co Ltd | プログラム処理装置 |
JP2005070950A (ja) * | 2003-08-21 | 2005-03-17 | Sanyo Electric Co Ltd | プログラム処理装置 |
WO2005091144A2 (fr) * | 2004-02-23 | 2005-09-29 | Stmicroelectronics S.A. | Surveillance de l’execution d’un programme par un processeur d’un circuit electronique |
US20050216895A1 (en) * | 2004-03-23 | 2005-09-29 | Tran Hieu T | Method and apparatus for remote debugging of kernel and application software |
JP4409349B2 (ja) * | 2004-04-27 | 2010-02-03 | Okiセミコンダクタ株式会社 | デバッグ回路およびデバッグ制御方法 |
US7216259B2 (en) * | 2004-04-28 | 2007-05-08 | Via Telecom Co., Ltd. | Increment power saving in battery powered wireless system with software configuration |
US20060161818A1 (en) * | 2005-01-14 | 2006-07-20 | Ivo Tousek | On-chip hardware debug support units utilizing multiple asynchronous clocks |
JP2006252006A (ja) * | 2005-03-09 | 2006-09-21 | Seiko Epson Corp | デバッグシステム、半導体集積回路装置、マイクロコンピュータ及び電子機器 |
JP4667093B2 (ja) * | 2005-03-17 | 2011-04-06 | 富士通株式会社 | 二重化記憶装置及び二重化記憶装置の制御方法 |
TWI273264B (en) * | 2005-06-22 | 2007-02-11 | Via Tech Inc | Test system and method |
US7506205B2 (en) * | 2006-02-14 | 2009-03-17 | Atmel Corporation | Debugging system and method for use with software breakpoint |
US8082546B2 (en) * | 2006-09-29 | 2011-12-20 | International Business Machines Corporation | Job scheduling to maximize use of reusable resources and minimize resource deallocation |
JP2008123106A (ja) * | 2006-11-09 | 2008-05-29 | Nec Electronics Corp | マイクロコンピュータ及びマイクロコンピュータのデバッグ方法 |
TWI335531B (en) * | 2006-12-13 | 2011-01-01 | Inst Information Industry | Apparatus, method, application program, and computer readable medium thereof for generating and utilizing a feature code to monitor a program |
TWI345203B (en) * | 2006-12-29 | 2011-07-11 | Chimei Innolux Corp | Debugging system and method of display device |
US8191033B1 (en) * | 2008-11-20 | 2012-05-29 | Marvell International Ltd. | In situ clock jitter measurement |
US9264248B2 (en) * | 2009-07-02 | 2016-02-16 | Qualcomm Incorporated | System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment |
JP5628411B2 (ja) * | 2011-03-24 | 2014-11-19 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US8977916B2 (en) * | 2012-12-04 | 2015-03-10 | Texas Instruments Incorporated | Using data watchpoints to detect unitialized memory reads |
JPWO2016151774A1 (ja) * | 2015-03-24 | 2018-01-11 | 富士通株式会社 | 情報処理装置、情報処理システムおよび情報処理装置の制御プログラム |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
US11250007B1 (en) | 2019-09-27 | 2022-02-15 | Amazon Technologies, Inc. | On-demand execution of object combination code in output path of object storage service |
US11360948B2 (en) | 2019-09-27 | 2022-06-14 | Amazon Technologies, Inc. | Inserting owner-specified data processing pipelines into input/output path of object storage service |
US11263220B2 (en) * | 2019-09-27 | 2022-03-01 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US11416628B2 (en) | 2019-09-27 | 2022-08-16 | Amazon Technologies, Inc. | User-specific data manipulation system for object storage service based on user-submitted code |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
CN113760618B (zh) * | 2021-08-18 | 2024-08-23 | 联想(北京)有限公司 | 一种状态确定方法、电子设备以及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2526688B2 (ja) * | 1990-02-22 | 1996-08-21 | 三菱電機株式会社 | プログラマブルコントロ―ラおよびシ―ケンスプログラムの部分実行方法 |
US5254942A (en) * | 1991-04-25 | 1993-10-19 | Daniel D'Souza | Single chip IC tester architecture |
US5377198A (en) * | 1991-11-27 | 1994-12-27 | Ncr Corporation (Nka At&T Global Information Solutions Company | JTAG instruction error detection |
GB2266606B (en) * | 1992-04-27 | 1996-02-14 | Intel Corp | A microprocessor with an external command mode |
JP2812630B2 (ja) * | 1992-12-28 | 1998-10-22 | 富士通株式会社 | バッファ記憶装置のテスト方法およびテスト装置 |
DE69415600T2 (de) * | 1993-07-28 | 1999-07-15 | Koninklijke Philips Electronics N.V., Eindhoven | Mikrokontroller mit hardwaremässiger Fehlerbeseitigungsunterstützung nach dem Boundary-Scanverfahren |
JP2752592B2 (ja) * | 1994-12-28 | 1998-05-18 | 日本ヒューレット・パッカード株式会社 | マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法 |
JPH09319727A (ja) | 1996-05-31 | 1997-12-12 | Hitachi Ltd | データプロセッサ及びデータ処理システム |
JPH10214201A (ja) | 1997-01-29 | 1998-08-11 | Mitsubishi Electric Corp | マイクロコンピュータ |
US6094729A (en) * | 1997-04-08 | 2000-07-25 | Advanced Micro Devices, Inc. | Debug interface including a compact trace record storage |
KR100240662B1 (ko) * | 1997-09-25 | 2000-01-15 | 윤종용 | 제이태그에 의한 다이나믹램 테스트장치 |
TW342483B (en) * | 1997-11-14 | 1998-10-11 | Winbond Electronics Corp | Serial in-circuit emulator architecture |
-
1999
- 1999-11-10 JP JP31987699A patent/JP4190114B2/ja not_active Expired - Fee Related
-
2000
- 2000-04-19 US US09/552,726 patent/US6687857B1/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461796A (zh) * | 2013-09-17 | 2015-03-25 | 上海华虹集成电路有限责任公司 | 用于嵌入式8051cpu的jtag调试模块及调试方法 |
CN104461796B (zh) * | 2013-09-17 | 2017-12-22 | 上海华虹集成电路有限责任公司 | 用于嵌入式8051cpu的jtag调试模块及调试方法 |
Also Published As
Publication number | Publication date |
---|---|
US6687857B1 (en) | 2004-02-03 |
JP2001142734A (ja) | 2001-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4190114B2 (ja) | マイクロコンピュータ | |
JP3862291B2 (ja) | マイクロプロセッサ | |
JP3846939B2 (ja) | データプロセッサ | |
US5479652A (en) | Microprocessor with an external command mode for diagnosis and debugging | |
US6446221B1 (en) | Debug mechanism for data processing systems | |
US6142683A (en) | Debug interface including data steering between a processor, an input/output port, and a trace logic | |
US6321329B1 (en) | Executing debug instructions | |
US7065678B2 (en) | Microcomputer, electronic equipment, and debugging system | |
US6343358B1 (en) | Executing multiple debug instructions | |
US6154856A (en) | Debug interface including state machines for timing synchronization and communication | |
EP0652516A1 (en) | Integrated microprocessor | |
JPH02287635A (ja) | マイクロコンピュータ,マイクロプロセッサおよびコア・プロセッサ集積回路用デバッグ周辺装置 | |
US7428661B2 (en) | Test and debug processor and method | |
US20060259750A1 (en) | Selectively embedding event-generating instructions | |
JP2008507025A (ja) | 集積回路テスト用エミュレーション及びデバッグインターフェイス | |
JPH1124959A (ja) | マイクロプロセッサのトレース情報出力方法 | |
JP2003263339A (ja) | デバック機能内蔵型マイクロコンピュータ | |
CN114580329B (zh) | 一种数字信号处理器芯片实时调试方法 | |
US20070005842A1 (en) | Systems and methods for stall monitoring | |
JP2872117B2 (ja) | マイクロプロセッサ | |
KR100273280B1 (ko) | 디버깅 로직 제어 회로 | |
JP2004038464A (ja) | デバッグ機能内蔵マイクロコンピュータ | |
JPS6316350A (ja) | マイクロプロセッサ | |
JPH08335177A (ja) | プロセッサ動作観察方法及び装置 | |
KR100658485B1 (ko) | 마이크로프로세서 개발시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060123 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061031 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20071101 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080617 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080805 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080909 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080916 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110926 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110926 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110926 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120926 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120926 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130926 Year of fee payment: 5 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |