JP2004038464A - デバッグ機能内蔵マイクロコンピュータ - Google Patents
デバッグ機能内蔵マイクロコンピュータ Download PDFInfo
- Publication number
- JP2004038464A JP2004038464A JP2002193497A JP2002193497A JP2004038464A JP 2004038464 A JP2004038464 A JP 2004038464A JP 2002193497 A JP2002193497 A JP 2002193497A JP 2002193497 A JP2002193497 A JP 2002193497A JP 2004038464 A JP2004038464 A JP 2004038464A
- Authority
- JP
- Japan
- Prior art keywords
- debug
- control unit
- microcomputer
- built
- function
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Microcomputers (AREA)
Abstract
【課題】デバッグツールを接続しない場合に、CPU上で実行されるモニタプログラム等のユーザプログラムからデバッグ機能を使用できるデバッグ機能内蔵マイクロコンピュータを提供する。
【解決手段】外部にデバッグツールが接続されている場合に、デバッグ制御部41のモニタコード供給機能63が、デバッグツールを接続して使用するか、デバッグツールを接続しないで使用するかを判断し、この判断結果に応じて、モニタコードが変更する。このモニターコードの変更により、デバッグツールを接続しない場合にモニタプログラム等のユーザープログラムに基づいてデバッグ制御部にデバッグ処理を容易に実行させることができる。
【選択図】 図1
【解決手段】外部にデバッグツールが接続されている場合に、デバッグ制御部41のモニタコード供給機能63が、デバッグツールを接続して使用するか、デバッグツールを接続しないで使用するかを判断し、この判断結果に応じて、モニタコードが変更する。このモニターコードの変更により、デバッグツールを接続しない場合にモニタプログラム等のユーザープログラムに基づいてデバッグ制御部にデバッグ処理を容易に実行させることができる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、デバッグを行う場合に有効なデバッグ機能内蔵マイクロコンピュータに関する。
【0002】
【従来の技術】
<JTAGの概要>
JTAG(Joint Test Action Group)は、バウンダリ・スキャン・アーキテクチャとそれにアクセスするためのインターフェースが規格化されたものであり、本来はその規格化作業を推進したグループの組織名称であるが、その規格自体を称呼する名称として一般的に使用されている。
【0003】
このJTAGは、1990年2月15日にIEEE(米国電気電子技術者協会)のTestability Bus Standard Committeeに提案され、「IEEE std 1149.1」として承認され、その後一般的に普及しており、例えば「リアルタイムトレースを50MHzの量産用MPUで実現:NIKKEI ELECTRONICS 1995.7.31(第133〜140頁)」などで説明されているように、マイクロコンピュータの動作周波数の高速化や、パッケージのピン間隙の微小化等のLSI集積化技術の進歩に伴って、マイクロコンピュータにデバッグ機能を搭載し、JTAGインタフェースを通じてデバッグツールと通信する規格として利用され、このJTAGを使用したデバッグシステムが最近主流になりつつある(「多様化したCPUのJTAGデバッグ:Design Wave Magazine 2000 Febuary(第38〜45頁)」参照)。
【0004】
<JTAGに準拠したマイクロコンピュータの概要>
図12に示す回路は、JTAGに準拠したデバッグ機能が内蔵されたマイクロコンピュータMCであり、デバッグ制御部1、JTAG制御部2、CPU3、メモリ及び周辺IO(入出力回路)4が設置されている。尚、デバッグ制御部1及びJTAG制御部2は、これらを併せてデバッグ機能5と称される。
【0005】
ここで、デバッグ制御部1、JTAG制御部2及びCPU3は、それぞれ個別にクロックの供給を止めることができる。つまり、デバッグ制御部1及びJTAG制御部2については、所定のプログラムのデバッグをしない時には不要なので、デバッグ制御部1及びJTAG制御部2に対してクロックの供給を止め、マイクロコンピュータMCの消費電流値を下げることが可能とされている。
【0006】
<デバッグシステムの概要>
図13は、JTAGに準拠したデバッグシステムの一例を示すブロック図、図14は、そのデバッグシステムに適用されるマイクロコンピュータMCの内部構成を示す機能ブロック図である。
【0007】
このデバッグシステムでは、図13の如く、ホストコンピュータ(PC)11とマイクロコンピュータMCとの間にデバッグツールDTが介在されており、ホストコンピュータ(PC)11からのプログラムのダウンロードや、図12に示したデバッグ機能5(デバッグ制御部1)内の実行前PCブレークレジスタ12及びアクセスブレークレジスタ13等の設定が、JTAGインタフェース14を通じて行われる。ここで、JTAGインタフェース14におけるTCK(Test Clock)は同期信号としてのテストクロック信号、TMS(Test Mode Select)はステートの行き先を決めるためのテストモードセレクト信号、TDI(Test Data Input)はシリアルのテスト・データや命令といったバウンダリスキャンのためのテストデータ入力信号、TDO(Test Data Output)はバウンダリスキャンのテストデータ出力信号、TRST(Test Reset)はデバッグ機能5を初期化するためのテストリセット信号をそれぞれ示している。
【0008】
例えば、図14において、実行前PCブレークレジスタ12に設定したアドレスの命令をCPU3が実行しようとする場合、デバッグ機能5からCPU3にブレーク要求15が伝達され、このCPU3内においてデバッグ割り込みが発生する。また、JTAG制御部2からアクセスブレークレジスタ13にデータアクセスの条件が設定され、その条件に合うデータアクセスをCPU3が実行しようとする場合も同様に、デバッグ機能5からCPU3にブレーク要求15が出力されて、CPU3内でデバッグ割り込みが発生する。さらに、CPU3における実行後PCブレーク機能16からの指定に基づいて、実行前PCブレークレジスタ12内に格納されたアドレスに基づいてホストコンピュータ11からの命令を実行した場合も、デバッグ機能5からCPU3に対してブレーク要求15が出力されて、CPU3内でデバッグ割り込みが発生する。さらにまた、ソフトウエアブレークポイントを実現するのに使用されるデバッグトラップ命令17をCPU3が実行した場合も同様に、デバッグ機能5からCPU3に対してブレーク要求15が出力されて、CPU3内でデバッグ割り込みが発生する。
【0009】
このように、デバッグ機能5からCPU3に対してブレーク要求15が出力されてデバッグ割り込みが発生すると、CPU3はユーザプログラム実行モードからデバッグモードに移行し、デバッグ制御部1内のモニタコード供給機能18から出力されるモニタコードを実行することにより、プログラムのデバッグを行う。
【0010】
尚、図14中の符号21はアドレスバス、符号22はデータバスをそれぞれ示している。
【0011】
<JTAG制御部の内部構成>
図15は一般的なJTAG制御部2の内部構成を示す機能ブロック図である。JTAG制御部2内には、JTAGインタフェース14の外部ポートTCK,TMS,TRSTを管理するTAP(Test Access Port)コントローラ201と、テストデータ入力信号TDIとして命令コマンドが与えられたときにその命令コマンドを格納する命令レジスタ202と、データ入力信号TDIとしてアドレスデータが与えられたときの入力選択を行う入力選択回路203と、バイパス(BYPASS)レジスタ、IDコード(IDCODE)レジスタ及びユーザーコード(USERCODE)レジスタ等を有するバウンダリスキャンテスト用レジスタ204と、デバッグ専用レジスタ205と、バウンダリスキャンテスト用レジスタ204内及びデバッグ専用レジスタ205内のいずれかのデータとバウンダリスキャンレジスタ207をスキャンしてきたデータとを選択して出力する出力選択回路206と、この出力選択回路206及び命令レジスタ202のいずれかをTAPコントローラ201からの制御により選択して出力する出力選択回路208とを備える。そして、必要に応じて命令レジスタ202内の命令コマンドを実行したり、バウンダリスキャンテスト用レジスタ204やバウンダリスキャンレジスタ207等の出力結果をテストデータ出力信号TDOとして出力したり、デバッグ専用レジスタ205内のデータをデバッグモード信号として出力したりする。
【0012】
<モニタコード供給機能の機能及び動作の概要>
図16に基づいてモニタコード供給機能18の機能及び動作の概要を説明する。
【0013】
このモニタコード供給機能18は、デバッグ割り込み発生時に、JTAGインタフェース14を使用して、CPU3に対して命令コードを供給する機能であって、JTAGインタフェース14での入出力のみに基づいてモニタプログラムを実行させることが可能であり、モニタプログラムを実行するためにデバッグ機能内蔵マイクロコンピュータMCのメモリ等4の資源を必要としない。CPU3はデバッグ割り込みが発生すると、命令コードバッファ23の先頭より命令をフェッチする。
【0014】
ここで、JTAG制御部2に保有される各レジスタとモニタコード供給機能18との関係について説明する。
【0015】
モニタコード供給機能18の命令コードバッファ23は、例えば4ワードの容量が確保されており、JTAG制御部2内のMON_CODEレジスタ31の内容が転送される。
【0016】
MON_DATAレジスタ32は、CPU3での実行結果を外部に出力するためのインタフェースとなるレジスタである。モニタプログラム上でストア命令を使用してモニタコード供給機能18内のFront_MON_DATAレジスタ33に書き込みを行うと、その値がJTAG制御部2内のMON_DATAレジスタ32に転送され、JTAGインタフェース14を経由してテストデータ出力信号TDOとしてホストコンピュータ11側で読み出すことができる。
【0017】
MON_PARAMレジスタ34は、チップ外部からモニタプログラムにパラメータを渡すためのインタフェースとなるレジスタである。JTAGインターフェース14を経由してMON_PARAMレジスタ34に値を書き込むと、この値がモニタコード供給機能18のFront_MON_PARAMレジスタ35に転送され、モニタプログラム上でロード命令を実行してその値を読み込むことができる。
【0018】
MON_ACCESSレジスタ36は、デバッグ割り込み発生時にJTAGインタフェース14を経由してモニタプログラムを実行する場合のアクセス制御情報を設定/格納する4ビットのレジスタである。モニタコード供給開始ビット(Start)、Front_MON_DATA有効ビット及びFront_MON_PARAM有効ビット(Valid)、MON_CODEビジービット(Busy)から構成される。
【0019】
これらのJTAG制御部2内のMON_CODEレジスタ31、MON_DATAレジスタ32、MON_PARAMレジスタ34及びMON_ACCESSレジスタ36は全てデバッグ専用レジスタであり、デバッグツールDTによってJTAGインタフェース14を経由して設定される。その設定はJTAG制御部2により設定されるが詳細の説明は省略する。
【0020】
<モニタコード供給機能の動作>
次に、モニタコード供給機能18の動作を説明する。
【0021】
(1)まず、モニタコードの設定を実行する。ここでは、JTAG制御部2内のMON_CODEレジスタ31に命令コードを設定する。MON_CODEレジスタ31に設定された命令コードは、命令コードバッファ23に転送されると同時にMON_CODEビジービット(Busy)の値を「1」にセットする。そして、1ワード分の命令コードが、命令コードバッファ23のどの段に格納されるかは入力ポインタによって内部制御される。設定された命令コードの順番に1段〜4段めの命令コードバッファ23に転送される。
【0022】
(2)次に、命令コードバッファ23に転送されたことの確認を行う。ここでは、JTAG制御部2内のMON_ACCESSレジスタ36をモニタコード供給機能18側で読み出して、MON_CODEビジービット(Busy)の値が「0」であることを確認する。MON_CODEビジービット(Busy)の値が「0」であれば、MON_CODEレジスタ31に設定されていた命令が命令コードバッファ23に転送されたことを意味する。
【0023】
かかる(1)及び(2)の一連の動作は、命令コードバッファ23が4段であることから、4回繰り返して実行することができる。次の命令コードの設定はMON_CODEビジービット(Busy)の値が「0」になっていることを確認してから行う。
【0024】
(3)続いて、モニタプログラムがパラメータを必要とする場合には、JTAG制御部2内のMON_PARAMレジスタ34にパラメータを設定する。MON_PARAMレジスタの値がFront_MON_PARAM35レジスタに転送中のときは、そのFront_MON_PARAMビットに「1」がセットされる。パラメータの設定はFront_MON_PARAMビットが「0」のときに行う。
【0025】
ただし、この(3)の処理は、モニタプログラムがパラメータを必要としない場合には実行されない。
【0026】
(4)そして、モニタコード供給をスタートする。即ち、MON_ACCESSレジスタ36のモニタコード供給開始ビット(Start)に「1」を設定する。このことによりCPU3は命令コードバッファ23の命令コードをフェッチすることができる。
【0027】
(5)スタート要求の解除を行う場合は、モニタコード供給開始ビット(Start)に「0」を設定する。
【0028】
(6)次に、モニタコードがフェッチされたことの確認を行う。即ち、MON_CODEビジービット(Busy)の値が「0」になっていることを確認し、「0」になっていれば命令コードバッファ23へ設定したすべての命令のフェッチが完了したことを意味することになる。
【0029】
(7)続いて、モニタプログラムがパラメータを必要とする場合には、MON_PARAMレジスタ34が使用されたことの確認を行う。即ち、Front_MON_PARAMビットが「0」になっていることを確認する。「0」になっていればCPU3がFront_MON_PARAMレジスタ35を読み出したことを意味することになる。
【0030】
ただし、この(7)の処理は、モニタプログラムがパラメータを必要としない場合には実行されない。
【0031】
(8)そして、モニタプログラムがFront_MON_DATAレジスタ32に書き込みを行う場合には、Front_MON_DATAレジスタ32に書き込みがあったことの確認を行う。即ち、Front_MON_DATA有効ビットの値が「1」になっていることを確認し、「1」になっていればCPU3がFront__MON_DATAレジスタ33に書き込みを行ったことを意味することになる。
【0032】
ただし、モニタプログラムがFront_MON_DATAレジスタ32に書き込みを行わない場合は、この(8)の処理は実行されない。
【0033】
(9)続いて、モニタプログラムがFront_MON_DATAレジスタ32に書き込みを行う場合には、Front_MON_DATAレジスタ33の読み出しを行う。即ち、MON_DATAレジスタ32を読み出す際に、Front_MON_DATA有効ビット(Valid)を自動的にクリアする。ただし、モニタプログラムがFront_MON_DATAレジスタ32に書き込みを行わない場合には、この(9)の処理は実行されない。
【0034】
このように、デバッグ割り込みが発生した後に、CPU3が命令コードバッファ23に命令フェッチに行った際、命令コードバッファ23に命令が転送されていない場合は、モニタコード供給機能18はCPU3に対し、命令コードバッファの先頭への分岐命令(自番地ループ命令)を与える。
【0035】
<デバッグ制御部のリセットとクロック制御方法>
次に、図12及び図13に基づいて、デバッグ制御部1のリセットとクロック制御方法について説明する。
【0036】
デバッグ機能5を使用しない場合には、デバッグツールDTはデバッグ機能内蔵マイクロコンピュータMCに接続されず、JTAG制御部2は動作しないので、デバッグ制御部1に対してリセットもされないし、クロック供給もされない。
【0037】
一方、ユーザがプログラムをデバッグするなど、デバッグ機能5を使用する場合には、デバッグツールDTからJTAG制御部2を制御し、デバッグリセット信号38やクロック供給オン信号39を使ってデバッグ制御部1にリセットをかけ、クロックの供給をオンにする。
【0038】
【発明が解決しようとする課題】
従来のオンチップデバッグ機能付きマイクロコンピュータMCおよびデバッグシステムは、上述したように、デバッグ割り込み発生後にJTAGインターフェース14を経由してモニタプログラムを供給しているので、例えば図17に示すように、JTAGインターフェース14でデバッグツールDTを接続することなしに、直接にモニタプログラムをデバッグ機能内蔵マイクロコンピュータMCのメモリ4上で実行することとし、例えばシリアル通信40などを通してホストコンピュータ11と接続するような形態を採用したい場合に、モニタプログラムからデバッグ機能5を利用することができなかった。
【0039】
また、ユーザプログラムの動作中、例えば特定のデータのアクセスを監視したい場合に、JTAGインターフェース14を経由してデバッガが使用するデバッグ機能5を利用できないという問題があった。
【0040】
したがってモニタプログラム等のユーザプログラムが使えるようにデバッグ機能5をユーザプログラム用に追加でインプリメントしなければならないが、そうすると、マイクロコンピュータMCの回路規模が大きくなるという問題があった。
【0041】
さらに、JTAG経由でデバッグツールDTを接続しない場合は、デバッグ割り込み発生時に命令コードバッファ23へフェッチするのではなく、違う番地、例えばモニタコードの先頭番地にジャンプするようにCPU3を変更するのは、CPU3の制御を複雑にするという問題があった。
【0042】
さらにまた、デバッグ制御部1やJTAG制御部2は、デバッグツールDTが接続された場合のみクロック供給されたりリセットがかかったりするので、デバッグツールDTが接続されない場合に、JTAGインターフェース14経由ではなく、デバッグ制御部1をユーザプログラムから直接使おうとすると、クロック供給ができなかったり、リセットがかからないという問題があった。
【0043】
そこで、この発明の課題は、デバッグツールを接続しない場合に、CPU上で実行されるモニタプログラム等のユーザプログラムからデバッグ機能を使用できるデバッグ機能内蔵マイクロコンピュータを提供することにある。
【0044】
【課題を解決するための手段】
上記課題を解決すべく、請求項1に記載の発明は、主演算素子と、外部にデバッグツールが接続されている場合に当該デバッグツールとの間で所定のインターフェースで信号を送受信しながらバウンダリスキャンの制御を行うバウンダリスキャン制御部と、前記バウンダリスキャン制御部及び前記主演算素子からの指示に基づいてデバッグのための制御を行うデバッグ制御部とを備え、前記デバッグ制御部が、モニタコードを供給するとともに、前記デバッグ制御部について、デバッグツールを接続して使用するか、デバッグツールを接続しないで使用するかを判断し、この判断結果に応じて前記モニタコードが変更可能とされたモニタコード供給機能を有するものである。
【0045】
請求項2に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記モニタコード供給機能が、前記判断結果に応じてモニタコードを分岐する分岐命令を保有するものである。
【0046】
請求項3に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記モニタコード供給機能が、前記判断結果に応じてジャンプ先アドレスを変更して指定するレジスタを持ち、そのアドレスにジャンプする命令を供給することのできるものである。
【0047】
請求項4に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記デバッグ制御部が、外部からの所定の信号の入力によって前記デバッグツールが接続されていない旨が指定されている場合に、前記主演算素子にリセット信号が与えられたときに併せてリセットされ、且つクロックの供給が開始されるものである。
【0048】
請求項5に記載の発明は、請求項4に記載のデバッグ機能内蔵マイクロコンピュータであって、前記デバッグ制御部に、前記主演算素子に与えられる前記リセット信号と、デバッグツールを使用せずにデバッグ機能を使用するためのモード信号とが入力され、前記モード信号が、クロックの供給を開始するためのクロック供給オン信号として兼用されて前記デバッグ制御部に与えられるものである。
【0049】
請求項6に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記デバッグ制御部が、前記主演算素子から与えられたデバッグリセットビット信号に応じてリセットし、且つ、前記主演算素子から与えられたクロック供給オンオフビット信号に応じてクロックの供給が開始されるものである。
【0050】
請求項7に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記バウンダリスキャン制御部からデータの書込が可能とされ、且つ前記主演算素子でデータの読み出しが可能とされて、前記デバッグ制御部が前記デバッグツールを接続しないで使用することが可能であり、ユーザプログラムが前記デバッグ制御部を利用し得る旨を表意するユーザー利用可能表意手段を有するものである。
【0051】
請求項8に記載の発明は、請求項7に記載のデバッグ機能内蔵マイクロコンピュータであって、前記ユーザー利用可能表意手段が前記主演算素子で読み込むことの可能なレジスタである。
【0052】
請求項9に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記モニタコード供給機能が、前記ユーザプログラムから予めデバッグ割り込みが発生した場合の飛び先番地が設定されるジャンプアドレス指定レジスタを有するものである。
【0053】
【発明の実施の形態】
{実施の形態1.}
図1はこの発明の実施の形態1.に係るデバッグ機能内蔵マイクロコンピュータMCの内部構成を示す機能ブロック図である。
【0054】
このデバッグ機能内蔵マイクロコンピュータMC1は、図1の如く、デバッグ制御部41、JTAG制御部(バウンダリスキャン制御手段)42、CPU(主演算素子)43やメモリ及び周辺IO(入出力回路)44が設置されている。尚、デバッグ制御部41及びJTAG制御部42は、これらを併せてデバッグ機能45と称される。
【0055】
そして、このデバッグ機能内蔵マイクロコンピュータMC1のデバッグ制御部41は、デバッグツールDTを接続して使用する第1のデバッグモードと、デバッグツールDTを接続しないで使用する第2のデバッグモードとを、外部からUSDモード信号に基づいて判断し、このUSDモード信号に応じてモード切替を行うようになっている。
【0056】
具体的に、このマイクロコンピュータMC1には、JTAGインタフェース14におけるテストリセット信号TRSTが入力されるTRST入力端子51と、CPU43とメモリ及び入出力回路等の周辺素子44をリセットするリセット信号RSTが入力されるRST入力端子52と、USDモード信号を入力するためのUSD入力端子53とがそれぞれ外部ピンに直結される端子として形成されている。
【0057】
そして、マイクロコンピュータMC1の内部には、RST入力端子52から入力されたリセット信号RSTとJTAG制御部42からのデバッグリセット信号54とをUSD入力端子53から入力されたUSDモード信号に応じて切り替え選択してデバッグリセット信号54aとしてデバッグ制御部41に入力する選択回路55と、JTAG制御部42からのクロック供給オン信号56と上述のリセット信号RSTとの論理和を演算してこれをクロック供給オン信号56aとしてデバッグ制御部41に入力する論理和回路57とを備える。
【0058】
また、デバッグ制御部41内には、CPU23がデータアクセスを実行する条件の情報を格納するアクセスブレークレジスタ61と、外部から与えられた命令をCPU43が実行する際のアドレスを格納するための実行前PCブレークレジスタ62と、上述のUSDモード信号に基づいて後述の命令コードバッファ23の先頭へジャンプする命令を供給するためのモニタコード供給機能63とを備える。
【0059】
このデバッグ制御部41におけるリセット方法とクロック供給開始方法について説明する。
【0060】
<デバッグツールを接続する場合の動作>
まず、図2のように、デバッグツールDTを接続して使用する場合には、図1において外部ピンに直結されるUSD入力端子53から、USDモード信号としてロー(L)信号が入力される。そうすると、選択回路55により、デバッグリセット信号54aとしてJTAG制御部42からのデバッグリセット信号54が選択される。
【0061】
また、JTAG制御部42から出力されるクロック供給オン信号56は初期値がロー(L)信号である。
【0062】
そして、RST入力端子52から入力されるリセット信号RSTがロー(L)信号入力の後、ハイ(H)信号に変化し、このリセット信号RSTに基づいて、CPU43とメモリ及び周辺IO(入出力インターフェース)44がリセットされる。
【0063】
また、TRST入力端子51から入力されるテストリセット信号TRSTに基づいてJTAG制御部42がリセットされる。
【0064】
この場合、デバッグツールDTが接続されているので、JTAG制御部42よりデバッグリセット信号54を出力し、これが選択回路55で選択されてデバッグリセット信号54aとしてデバッグ制御部41に入力され、当該デバッグ制御部41がリセットされる。その後、JTAG制御部42よりクロック供給オン信号56を出力して、論理和回路57を通じてデバッグ制御部41に対してクロックの供給をスタートする。これにより、JTAG制御部42とデバッグ制御部41とが相互に連動して、JTAGに準拠したデバッグが実行される。
【0065】
<デバッグツールを接続しない場合の動作>
一方、デバッグツールDTを接続せずに、たとえば図3のようにシリアル通信40などを通してマイクロコンピュータMC1とホストコンピュータ11と接続するような形態で使用する場合は、図1において、USD入力端子53から入力されるUSDモード信号としてハイ(H)信号を入力する。そうすると、選択回路55では、RST入力端子52から入力されたリセット信号RSTをデバッグリセット信号54aとして選択する。これにより、このリセット信号RSTによってCPU43とメモリ及び周辺IO44がリセットされる際に、デバッグ制御部41もリセットされる。
【0066】
この場合、デバッグツールDTが接続されていないので、TRST入力端子51にはテストリセット信号TRSTが入力されず、よってJTAG制御部42はリセットされない。
【0067】
また、JTAG制御部42からのクロック供給オン信号56はロー(L)信号であるが、USD入力端子53から入力されるUSDモード信号がハイ(H)信号であるため、論理和回路57から出力されるクロック供給オン信号56aはハイ(H)信号になる。これにより、デバッグ制御部41に対してクロック供給がスタートする。
【0068】
このように、デバッグツールDTを接続しない場合(図3)でも、デバッグ制御部41に対して、リセットやクロック供給をスタートすることができる。
【0069】
次に、この実施の形態におけるモニタコード供給機能63でのデバッグ割り込み発生時の動作を図4及び図5に基づいて説明する。尚、図4では、図16に示した従来例と同様の機能を有する要素について同一符号を付している。
【0070】
まず、マイクロコンピュータMC1にデバッグ割り込みが発生すると、図5中のステップS01において、CPU43は、モニタコード供給機能63内の命令コードバッファ23に命令をフェッチにいく。
【0071】
次に、ステップS02において、JTAG制御部42より命令コードが供給されているかどうかを判断し、JTAG制御部42より命令コードが供給されていれば、ステップS03で、供給されている命令コードを実行した後、再びステップS01からの処理を繰り返す。
【0072】
一方、ステップS02で、JTAG制御部42より命令コードが供給されていないと判断した場合は、ステップS04に進み、USD入力端子53から入力されたUSDモード信号がハイ(H)信号(アクティベート)であるか否かを判断する。そして、USDモード信号がロー(L)信号(ノンアクティベート)であれば、ステップS05に進み、命令コードバッファ23の先頭へジャンプする命令を、モニタコード供給機能63が供給する。
【0073】
一方、ステップS04において、USDモード信号がハイ(H)信号(アクティベート)であれば、ステップS06に進み、モニタコード供給機能63はユーザプログラム(例えばモニタプログラム)の先頭へジャンプする命令を供給する。
【0074】
その他のモニタコード供給機能63の動作の詳細については、図16に示した従来例と同じであるので、その説明を省略する。
【0075】
このように、USD入力端子53から入力されたUSDモード信号をロー(L)信号にしてデバッグツールDTを接続している場合には、デバッグツールDTから供給されるモニタコードを実行してプログラムのデバッグを行う一方、USD入力端子53から入力されたUSDモード信号をハイ(H)信号にしてデバッグツールDTを接続しない場合には、例えば、メモリにダウンロードされているユーザのモニタプログラムの先頭へジャンプすることができる。
【0076】
したがって、ユーザのモニタプログラムについて、デバッグ制御部41の機能を使用して実行させることができ、ユーザのモニタプログラム専用のハードウェアを追加することなく、データのアクセスをチェックし、ハードウェアのブレークポイント等を作成することができる。
【0077】
{実施の形態2.}
図6はこの発明の実施の形態2.に係るデバッグ機能内蔵マイクロコンピュータMC2を示す図である。なお、図6では実施の形態1.と同様の機能を有する要素については同一符号を付している。この実施の形態のデバッグ機能内蔵マイクロコンピュータMC2は、図6の如く、デバッグ制御部41、JTAG制御部42、CPU43aやメモリ及び周辺IO(入出力回路)44が設置されている。尚、デバッグ制御部41及びJTAG制御部42は、これらを併せてデバッグ機能45と称される。
【0078】
そして、このデバッグ機能内蔵マイクロコンピュータMC2のデバッグ制御部41は、デバッグツールDTを接続して使用する第1のデバッグモードと、デバッグツールDTを接続しないで使用する第2のデバッグモードとについて、CPU43a内に設定されたUSDCレジスタ71の値に応じてモード切替を行うようになっている。
【0079】
具体的に、このマイクロコンピュータMC2には、JTAGインタフェース14におけるテストリセット信号TRSTが入力されるTRST入力端子51と、CPU43aとメモリ及び入出力回路等の周辺素子44をリセットするリセット信号RSTが入力されるRST入力端子52とがそれぞれ外部ピンに直結される端子として形成されている。ただし、実施の形態1.で形成されていたUSD入力端子53は、実施の形態2.において省略されている。
【0080】
そして、この実施の形態においては、実施の形態1.におけるUSDモード信号に相当するデータを、CPU43a内のUSDCレジスタ71に格納し、このUSDCレジスタ71の値に基づいて、デバッグ制御部41のモード切替を行うようになっている。
【0081】
また、マイクロコンピュータMC2の内部には、CPU43a内においてアクセスされるUSDCレジスタ71内の一部の値(デバッグリセットビット信号73)とJTAG制御部42からのデバッグリセット信号54との論理和を演算する論理和回路72と、JTAG制御部42からのクロック供給オン信号56と上述のUSDCレジスタ71内の他の一部の値(クロック供給オンオフビット信号74)との論理和を演算してこれをクロック供給オン信号56aとしてデバッグ制御部41に入力する論理和回路57とを備える。
【0082】
図7はUSDCレジスタ71内に格納されるデータを説明した図である。USDCレジスタ71は、CPU43a内でアクセス可能な32ビット固定長のレジスタであり、デバッグモジュールクロック供給ON/OFFビット81、デバッグモジュールリセットビット82及びUSD機能利用可能ビット83を有する。
【0083】
デバッグモジュールクロック供給ON/OFFビット81は、読み出しと書き込みの両方が可能であり、「1」であるときにデバッグモジュールクロック供給ON、「0」であるときにはデバッグモジュールクロック供給OFFであることをそれぞれ意味し、初期値が「0」とされて、クロック供給オンオフビット信号74として論理和回路57に出力される。
【0084】
デバッグモジュールリセットビット82は、読み出しと書き込みの両方が可能であり、「1」であるときにリセットアサート、「0」であるときにはリセットネゲートであることをそれぞれ意味し、初期値が「0」とされて、デバッグリセットビット信号73として論理和回路72に出力される。
【0085】
USD機能利用可能ビット83はCPU43a内において読み出しのみ可能であるが、JTAG制御部42から書き込みが可能な構成になっている。USD機能利用可能ビット(ユーザー利用可能表意手段)83が「0」であればモニタプログラム等のユーザプログラムからデバッグ制御部41の機能が利用可能なことを示す。USD機能利用可能ビット83が「1」であれば利用不可能なことを示す。
【0086】
<デバッグツールを接続する場合の動作>
続いて、デバッグツールDTを接続して使用する場合のデバッグ制御部41に対するリセットの動作とクロック供給スタート方法を説明する。
【0087】
まず、デバッグツールDTよりTRST入力端子51を介してJTAG制御部42にリセットをかける。
【0088】
次に、デバッグツールDTがJTAG制御部42を通じてCPU43a内のUSDCレジスタ71のUSD機能利用可能ビット83を「0」にクリアする。また、デバッグツールDTよりJTAG制御部42を通じて、デバッグリセット信号54を論理和回路72に出力する。このとき、USDCレジスタ71からのデバッグリセットビット信号73はロー(L)信号であるため、論理和回路72からデバッグリセット信号54aがデバッグ制御部41に出力され、これに基づいてデバッグ制御部41をリセットする。また、デバッグツールDTよりJTAG制御部42を経由してクロック供給オン信号56をハイ(H)信号として論理和回路57に出力する。このとき、USDCレジスタ71からのクロック供給オンオフビット信号74はロー(L)信号であるが、JTAG制御部42からのクロック供給オン信号56がハイ(H)信号であるため、クロック供給オン信号56aはハイ(H)信号となり、故に、デバッグ制御部41に対するクロック供給がスタートする。
【0089】
また、デバッグツールDTはJTAG制御部42を経由してデバッグモード信号75をロー(L)信号にする。このように、デバッグモード信号75がロー(L)信号となっているときには、実施の形態1.におけるデバッグ割り込み発生時のモニタコード供給機能63での動作(USDモード信号がロー(L)信号の場合の動作)と同様であるため、ここではその説明を省略する。
【0090】
デバッグツールDTはJTAG制御部42を経由してUSDCレジスタ71のUSD機能利用可能ビット83(図7)を「0」(利用不可)にする。
【0091】
その後、ユーザプログラムのダウンロード、実行制御を行いながらプログラムのデバッグを行う。
【0092】
<デバッグツールを接続しない場合の動作>
デバッグツールDTを接続しない場合において、デバッグ機能内蔵マイクロコンピュータMC2のメモリ44上で動作するモニタプログラム等のプログラムの動作を以下に説明する。
【0093】
デバッグツールDTがマイクロコンピュータMC2に接続されていないので、テストリセット信号TRSTはロー(L)信号であり、JTAG制御部42にはリセットがかからず、JTAG制御部42から論理和回路72に与えられるデバッグリセット信号54はロー(L)信号となっている。一方、JTAG制御部42からのデバッグ制御部41に与えられるデバッグモード信号75はハイ(H)信号になっている。
【0094】
デバッグモード信号がハイ(H)信号の時のデバッグ割り込み発生時のモニタコード供給機能63の動作は、実施の形態1.におけるデバッグ割り込み発生時のモニタコード供給機能63での動作(USDモード信号がハイ(H)信号の場合の動作)と同様であるため、ここではその説明を省略する。
【0095】
また、JTAG制御部42から論理和回路57に出力されるクロック供給オン信号56はロー(L)信号になっている。
【0096】
この実施の形態においては、デバッグ制御部41のリセットとクロック供給スタートが、デバッグ機能内蔵マイクロコンピュータMC2内で動作するモニタプログラムからUSDCレジスタ71を操作して行う。
【0097】
次に、この実施の形態におけるモニタプログラムの動作を説明する。図8はこの実施の形態でのモニタプログラムの動作を示すフローチャートである。
【0098】
まずCPU43aにリセットがかかると、図8中のステップS11において、リセットベクタへジャンプする。そして、ステップS12で、モニタプログラムの先頭へジャンプする。
【0099】
続いて、ステップS13において、USD機能利用可能ビット83の値に基づいて、デバッグ機能45が動作可能であるか否かを判断する。
【0100】
具体的に、デバッグツールDTが接続されている場合は、デバッグツールDTによりデバッグ制御部41に対するリセットの動作とクロック供給スタートが終わっており、USD機能利用可能ビット83の値が「0」になっており、この場合はCPU23aにより直接にデバッグ機能45を動作させることが不能であると判断し、次のステップS14に進む。
【0101】
ステップS14では、モニタプログラムはUSD機能利用可能ビット83を読み出し、CPU23aによる直接のデバッグ機能45が利用不可「0」であるので、メモリ44等を使わずデバッグを実行する。即ち、デバッグツールDTからJTAG制御部42を経由してモニタプログラムを実行することが可能である。
【0102】
一方、ステップS13において、デバッグツールDTが接続されていない場合には、モニタプログラムはUSD機能利用可能ビット83を読み出し、デバッグ機能が利用可能「1」であることを確認し、デバッグ機能45のCPU23aによる直接の使用が可能であることを判断する。この場合は、次のステップS15に進み、デバッグ機能を使ってデバッグを実行する。
【0103】
ここで、デバッグツールDTが接続されてない場合に、デバッグ割り込みが発生すると、ステップS16において、CPU43aは命令コードバッファ23より分岐(ブランチ)命令をフェッチし、メモリ44上にあるモニタプログラムを実行する。
【0104】
このように、デバッグのためのモニタプログラムをメモリ44上で実行した場合の動作を説明したが、デバッグのためのモニタプログラム以外のユーザプログラムをメモリ44上で実行してもよい。このように動作手順をデバッグのためのモニタプログラム以外のユーザプログラムをメモリ44上で実行する場合の処理手順を図9に示す。ステップS21〜S26は、それぞれステップS11〜S16に対応しているが、ステップS12におけるモニタプログラムがステップS22におけるユーザプログラムに変更され、ステップS14,S15におけるデバッグの処理がステップS24,S25においてユーザプログラムに変更されている他は、図9の処理手順は図8の処理手順と同様であるため、説明を省略する。このように、ユーザのモニタプログラムはデバッグ制御部41の機能を使用することができ、ユーザのモニタプログラム専用のハードウェアを追加することなく、データのアクセスをチェックし、ハードウエアのブレークポイント等を作成することができる。
【0105】
また、メモリ上で動作するモニタプログラムを、デバッグツールDTを接続して動作させたり、接続せずに動作させたりでき、特にデバッグツールDTを接続しなかった場合は、モニタプログラムがデバッグ機能を利用することができる。
【0106】
また、メモリ上で動作するユーザプログラムを、デバッグツールDTを接続して動かしたり、接続しなかった場合にユーザプログラムがデバッグ機能を利用することができる。
【0107】
{実施の形態3.}
図10はこの発明の実施の形態3.に係るデバッグ機能内蔵マイクロコンピュータMC3の内部構成を示す機能ブロック図である。なお、かかる図10では実施の形態1.と同様の機能を有する要素については同一符号を付している。
【0108】
この実施の形態のデバッグ機能内蔵マイクロコンピュータMC3は、モニタコード供給機能63aとして、実施の形態1.のモニタコード供給機能63と同様の構成に対して、さらにジャンプアドレス指定レジスタ91を追加している。
【0109】
このジャンプアドレス指定レジスタ91にはユーザプログラムから予めデバッグ割り込みが発生した場合の飛び先番地を設定しておく。
【0110】
デバッグツールDTを接続しない場合のモニタコード供給機能63aにおけるデバッグ割り込み発生時の動作を説明する。
【0111】
まずデバッグ割り込みが発生すると、図11中のステップS31において、CPU43は命令コードバッファ23に命令をフェッチにいく。
【0112】
次にステップS32において、JTAG制御部42より命令コードが供給されているかどうかを判断し、JTAG制御部42より命令コードが供給されていれば、その供給されている命令コードを実行する(ステップS33)。その後、ステップS31からの処理を繰り返す。
【0113】
一方、ステップS32において、JTAG制御部42より命令コードが供給されていなければ、続くステップS34において、USD入力端子53から入力されたUSDモード信号がハイ(H)信号(アクティベート)であるかどうかを判断する。そして、USDモード信号がハイ(H)信号であれば、ステップS35に進み、命令コードバッファ23の先頭へジャンプする命令を、モニタコード供給機能63aが供給する。
【0114】
一方、ステップS34において、USDモード信号がロー(L)信号であれば、ステップS36に進み、モニタコード供給機能63はジャンプアドレス指定レジスタ91で指定したアドレスへジャンプする命令を供給する。
【0115】
この実施の形態におけるその他の動作は、実施の形態1.及び実施の形態2.と同様であるので、その説明を省略する。
【0116】
この実施の形態においては、実施の形態1.及び実施の形態2.における利点に加えて、ユーザプログラム(あるいはモニタプログラム)のデバッグ割り込みが発生した場合の飛び先番地を自由に変えることができるので、ユーザプログラム(あるいはモニタプログラム)の先頭番地が変わったときでも、容易に対応できる。
【0117】
【発明の効果】
請求項1に記載の発明によれば、主演算素子と、外部にデバッグツールが接続されている場合に当該デバッグツールとの間で所定のインターフェースで信号を送受信しながらバウンダリスキャンの制御を行うバウンダリスキャン制御部と、バウンダリスキャン制御部及び主演算素子からの指示に基づいてデバッグのための制御を行うデバッグ制御部とを備え、デバッグ制御部が、モニタコードを供給するとともに、デバッグ制御部について、デバッグツールを接続して使用するか、デバッグツールを接続しないで使用するかを判断し、この判断結果に応じてモニタコードが変更可能とされたモニタコード供給機能を有するので、このモニターコードの変更により、デバッグツールを接続しない場合にモニタプログラム等のユーザープログラムに基づいてデバッグ制御部にデバッグ処理を実行させることができる。
【0118】
請求項2に記載の発明によれば、モニタコード供給機能が、判断結果に応じてモニタコードを分岐する分岐命令を保有しているので、モニターコードを容易に変更することができる。
【0119】
請求項3に記載の発明によれば、モニタコード供給機能が、判断結果に応じてジャンプ先アドレスを変更して指定するレジスタを持ち、そのアドレスにジャンプする命令を供給することのできるようにしているので、モニターコードを容易に変更することができる。
【0120】
請求項4及び請求項5に記載の発明によれば、デバッグ制御部が、外部からの所定の信号の入力によってデバッグツールが接続されていない旨が指定されている場合に、主演算素子にリセット信号が与えられたときに併せてリセットされ、且つモード信号に基づいてクロックの供給が開始されるようにしているので、デバッグツールを接続しない場合にも、デバッグ制御部を容易に機能させることが可能となる。
【0121】
請求項6に記載の発明によれば、デバッグ制御部が、主演算素子から与えられたデバッグリセットビット信号に応じてリセットし、且つ、主演算素子から与えられたクロック供給オンオフビット信号に応じてクロックの供給が開始されるので、デバッグツールを接続しない場合にも、デバッグ制御部を容易に機能させることが可能となる。
【0122】
請求項7及び請求項8に記載の発明によれば、バウンダリスキャン制御部からデータの書込が可能とされ、且つ主演算素子でデータの読み出しが可能とされて、デバッグ制御部がデバッグツールを接続しないで使用することが可能であり、ユーザプログラムがデバッグ制御部を利用し得る旨を表意するユーザー利用可能表意手段を有するので、ユーザプログラムがデバッグ制御部を使用できるか否かの判断を極めて容易に行うことができる。
【0123】
請求項9に記載の発明によれば、モニタコード供給機能が、ユーザプログラムから予めデバッグ割り込みが発生した場合の飛び先番地が設定されるジャンプアドレス指定レジスタを有するので、ユーザプログラムの先頭番地が変わったときでも、容易に対応できるという効果がある。
【図面の簡単な説明】
【図1】この発明の実施の形態1.に係るデバッグ機能内蔵マイクロコンピュータを示す機能ブロック図である。
【図2】デバッグ機能内蔵マイクロコンピュータがデバッグツールを介してホストコンピュータに接続された状態を示すブロック図である。
【図3】デバッグ機能内蔵マイクロコンピュータが直接にホストコンピュータに接続された状態を示すブロック図である。
【図4】この発明の実施の形態1.に係るデバッグ機能内蔵マイクロコンピュータを示すブロック図である。
【図5】この発明の実施の形態1.に係るデバッグ機能内蔵マイクロコンピュータの動作を示すフローチャートである。
【図6】この発明の実施の形態2.に係るデバッグ機能内蔵マイクロコンピュータを示す機能ブロック図である。
【図7】USDCレジスタのフォーマットを示す図である。
【図8】この発明の実施の形態2.に係るデバッグ機能内蔵マイクロコンピュータの動作の一例を示すフローチャートである。
【図9】この発明の実施の形態2.に係るデバッグ機能内蔵マイクロコンピュータの動作の他の例を示すフローチャートである。
【図10】この発明の実施の形態3.に係るデバッグ機能内蔵マイクロコンピュータを示す機能ブロック図である。
【図11】この発明の実施の形態3.に係るデバッグ機能内蔵マイクロコンピュータの動作を示すフローチャートである。
【図12】従来のデバッグ機能内蔵マイクロコンピュータを示す機能ブロック図である。
【図13】デバッグ機能内蔵マイクロコンピュータがデバッグツールを介してホストコンピュータに接続された状態を示すブロック図である。
【図14】従来のデバッグ機能内蔵マイクロコンピュータを示すブロック図である。
【図15】JTAG制御部の内部構成を示すブロック図である。
【図16】デバッグ機能内蔵マイクロコンピュータを示すブロック図である。
【図17】デバッグ機能内蔵マイクロコンピュータが直接にホストコンピュータに接続された状態を示すブロック図である。
【符号の説明】
11 ホストコンピュータ、14 JTAGインタフェース、23 命令コードバッファ、40 シリアル通信、41 デバッグ制御部、42 JTAG制御部、43,43a CPU、44 周辺素子、45 デバッグ機能、51 TRST入力端子、52 RST入力端子、53 USD入力端子、54,54a デバッグリセット信号、55 選択回路、56,56a クロック供給オン信号、57 論理和回路、61 アクセスブレークレジスタ、62 実行前PCブレークレジスタ、63,63a モニタコード供給機能、71 USDCレジスタ、72 論理和回路、73 デバッグリセットビット信号、74 クロック供給オンオフビット信号、75 デバッグモード信号、81 デバッグモジュールクロック供給ON/OFFビット、82 デバッグモジュールリセットビット、83 USD機能利用可能ビット、91 ジャンプアドレス指定レジスタ、DT デバッグツール、MC,MC1〜MC3 デバッグ機能内蔵マイクロコンピュータ、TRST テストリセット信号。
【発明の属する技術分野】
この発明は、デバッグを行う場合に有効なデバッグ機能内蔵マイクロコンピュータに関する。
【0002】
【従来の技術】
<JTAGの概要>
JTAG(Joint Test Action Group)は、バウンダリ・スキャン・アーキテクチャとそれにアクセスするためのインターフェースが規格化されたものであり、本来はその規格化作業を推進したグループの組織名称であるが、その規格自体を称呼する名称として一般的に使用されている。
【0003】
このJTAGは、1990年2月15日にIEEE(米国電気電子技術者協会)のTestability Bus Standard Committeeに提案され、「IEEE std 1149.1」として承認され、その後一般的に普及しており、例えば「リアルタイムトレースを50MHzの量産用MPUで実現:NIKKEI ELECTRONICS 1995.7.31(第133〜140頁)」などで説明されているように、マイクロコンピュータの動作周波数の高速化や、パッケージのピン間隙の微小化等のLSI集積化技術の進歩に伴って、マイクロコンピュータにデバッグ機能を搭載し、JTAGインタフェースを通じてデバッグツールと通信する規格として利用され、このJTAGを使用したデバッグシステムが最近主流になりつつある(「多様化したCPUのJTAGデバッグ:Design Wave Magazine 2000 Febuary(第38〜45頁)」参照)。
【0004】
<JTAGに準拠したマイクロコンピュータの概要>
図12に示す回路は、JTAGに準拠したデバッグ機能が内蔵されたマイクロコンピュータMCであり、デバッグ制御部1、JTAG制御部2、CPU3、メモリ及び周辺IO(入出力回路)4が設置されている。尚、デバッグ制御部1及びJTAG制御部2は、これらを併せてデバッグ機能5と称される。
【0005】
ここで、デバッグ制御部1、JTAG制御部2及びCPU3は、それぞれ個別にクロックの供給を止めることができる。つまり、デバッグ制御部1及びJTAG制御部2については、所定のプログラムのデバッグをしない時には不要なので、デバッグ制御部1及びJTAG制御部2に対してクロックの供給を止め、マイクロコンピュータMCの消費電流値を下げることが可能とされている。
【0006】
<デバッグシステムの概要>
図13は、JTAGに準拠したデバッグシステムの一例を示すブロック図、図14は、そのデバッグシステムに適用されるマイクロコンピュータMCの内部構成を示す機能ブロック図である。
【0007】
このデバッグシステムでは、図13の如く、ホストコンピュータ(PC)11とマイクロコンピュータMCとの間にデバッグツールDTが介在されており、ホストコンピュータ(PC)11からのプログラムのダウンロードや、図12に示したデバッグ機能5(デバッグ制御部1)内の実行前PCブレークレジスタ12及びアクセスブレークレジスタ13等の設定が、JTAGインタフェース14を通じて行われる。ここで、JTAGインタフェース14におけるTCK(Test Clock)は同期信号としてのテストクロック信号、TMS(Test Mode Select)はステートの行き先を決めるためのテストモードセレクト信号、TDI(Test Data Input)はシリアルのテスト・データや命令といったバウンダリスキャンのためのテストデータ入力信号、TDO(Test Data Output)はバウンダリスキャンのテストデータ出力信号、TRST(Test Reset)はデバッグ機能5を初期化するためのテストリセット信号をそれぞれ示している。
【0008】
例えば、図14において、実行前PCブレークレジスタ12に設定したアドレスの命令をCPU3が実行しようとする場合、デバッグ機能5からCPU3にブレーク要求15が伝達され、このCPU3内においてデバッグ割り込みが発生する。また、JTAG制御部2からアクセスブレークレジスタ13にデータアクセスの条件が設定され、その条件に合うデータアクセスをCPU3が実行しようとする場合も同様に、デバッグ機能5からCPU3にブレーク要求15が出力されて、CPU3内でデバッグ割り込みが発生する。さらに、CPU3における実行後PCブレーク機能16からの指定に基づいて、実行前PCブレークレジスタ12内に格納されたアドレスに基づいてホストコンピュータ11からの命令を実行した場合も、デバッグ機能5からCPU3に対してブレーク要求15が出力されて、CPU3内でデバッグ割り込みが発生する。さらにまた、ソフトウエアブレークポイントを実現するのに使用されるデバッグトラップ命令17をCPU3が実行した場合も同様に、デバッグ機能5からCPU3に対してブレーク要求15が出力されて、CPU3内でデバッグ割り込みが発生する。
【0009】
このように、デバッグ機能5からCPU3に対してブレーク要求15が出力されてデバッグ割り込みが発生すると、CPU3はユーザプログラム実行モードからデバッグモードに移行し、デバッグ制御部1内のモニタコード供給機能18から出力されるモニタコードを実行することにより、プログラムのデバッグを行う。
【0010】
尚、図14中の符号21はアドレスバス、符号22はデータバスをそれぞれ示している。
【0011】
<JTAG制御部の内部構成>
図15は一般的なJTAG制御部2の内部構成を示す機能ブロック図である。JTAG制御部2内には、JTAGインタフェース14の外部ポートTCK,TMS,TRSTを管理するTAP(Test Access Port)コントローラ201と、テストデータ入力信号TDIとして命令コマンドが与えられたときにその命令コマンドを格納する命令レジスタ202と、データ入力信号TDIとしてアドレスデータが与えられたときの入力選択を行う入力選択回路203と、バイパス(BYPASS)レジスタ、IDコード(IDCODE)レジスタ及びユーザーコード(USERCODE)レジスタ等を有するバウンダリスキャンテスト用レジスタ204と、デバッグ専用レジスタ205と、バウンダリスキャンテスト用レジスタ204内及びデバッグ専用レジスタ205内のいずれかのデータとバウンダリスキャンレジスタ207をスキャンしてきたデータとを選択して出力する出力選択回路206と、この出力選択回路206及び命令レジスタ202のいずれかをTAPコントローラ201からの制御により選択して出力する出力選択回路208とを備える。そして、必要に応じて命令レジスタ202内の命令コマンドを実行したり、バウンダリスキャンテスト用レジスタ204やバウンダリスキャンレジスタ207等の出力結果をテストデータ出力信号TDOとして出力したり、デバッグ専用レジスタ205内のデータをデバッグモード信号として出力したりする。
【0012】
<モニタコード供給機能の機能及び動作の概要>
図16に基づいてモニタコード供給機能18の機能及び動作の概要を説明する。
【0013】
このモニタコード供給機能18は、デバッグ割り込み発生時に、JTAGインタフェース14を使用して、CPU3に対して命令コードを供給する機能であって、JTAGインタフェース14での入出力のみに基づいてモニタプログラムを実行させることが可能であり、モニタプログラムを実行するためにデバッグ機能内蔵マイクロコンピュータMCのメモリ等4の資源を必要としない。CPU3はデバッグ割り込みが発生すると、命令コードバッファ23の先頭より命令をフェッチする。
【0014】
ここで、JTAG制御部2に保有される各レジスタとモニタコード供給機能18との関係について説明する。
【0015】
モニタコード供給機能18の命令コードバッファ23は、例えば4ワードの容量が確保されており、JTAG制御部2内のMON_CODEレジスタ31の内容が転送される。
【0016】
MON_DATAレジスタ32は、CPU3での実行結果を外部に出力するためのインタフェースとなるレジスタである。モニタプログラム上でストア命令を使用してモニタコード供給機能18内のFront_MON_DATAレジスタ33に書き込みを行うと、その値がJTAG制御部2内のMON_DATAレジスタ32に転送され、JTAGインタフェース14を経由してテストデータ出力信号TDOとしてホストコンピュータ11側で読み出すことができる。
【0017】
MON_PARAMレジスタ34は、チップ外部からモニタプログラムにパラメータを渡すためのインタフェースとなるレジスタである。JTAGインターフェース14を経由してMON_PARAMレジスタ34に値を書き込むと、この値がモニタコード供給機能18のFront_MON_PARAMレジスタ35に転送され、モニタプログラム上でロード命令を実行してその値を読み込むことができる。
【0018】
MON_ACCESSレジスタ36は、デバッグ割り込み発生時にJTAGインタフェース14を経由してモニタプログラムを実行する場合のアクセス制御情報を設定/格納する4ビットのレジスタである。モニタコード供給開始ビット(Start)、Front_MON_DATA有効ビット及びFront_MON_PARAM有効ビット(Valid)、MON_CODEビジービット(Busy)から構成される。
【0019】
これらのJTAG制御部2内のMON_CODEレジスタ31、MON_DATAレジスタ32、MON_PARAMレジスタ34及びMON_ACCESSレジスタ36は全てデバッグ専用レジスタであり、デバッグツールDTによってJTAGインタフェース14を経由して設定される。その設定はJTAG制御部2により設定されるが詳細の説明は省略する。
【0020】
<モニタコード供給機能の動作>
次に、モニタコード供給機能18の動作を説明する。
【0021】
(1)まず、モニタコードの設定を実行する。ここでは、JTAG制御部2内のMON_CODEレジスタ31に命令コードを設定する。MON_CODEレジスタ31に設定された命令コードは、命令コードバッファ23に転送されると同時にMON_CODEビジービット(Busy)の値を「1」にセットする。そして、1ワード分の命令コードが、命令コードバッファ23のどの段に格納されるかは入力ポインタによって内部制御される。設定された命令コードの順番に1段〜4段めの命令コードバッファ23に転送される。
【0022】
(2)次に、命令コードバッファ23に転送されたことの確認を行う。ここでは、JTAG制御部2内のMON_ACCESSレジスタ36をモニタコード供給機能18側で読み出して、MON_CODEビジービット(Busy)の値が「0」であることを確認する。MON_CODEビジービット(Busy)の値が「0」であれば、MON_CODEレジスタ31に設定されていた命令が命令コードバッファ23に転送されたことを意味する。
【0023】
かかる(1)及び(2)の一連の動作は、命令コードバッファ23が4段であることから、4回繰り返して実行することができる。次の命令コードの設定はMON_CODEビジービット(Busy)の値が「0」になっていることを確認してから行う。
【0024】
(3)続いて、モニタプログラムがパラメータを必要とする場合には、JTAG制御部2内のMON_PARAMレジスタ34にパラメータを設定する。MON_PARAMレジスタの値がFront_MON_PARAM35レジスタに転送中のときは、そのFront_MON_PARAMビットに「1」がセットされる。パラメータの設定はFront_MON_PARAMビットが「0」のときに行う。
【0025】
ただし、この(3)の処理は、モニタプログラムがパラメータを必要としない場合には実行されない。
【0026】
(4)そして、モニタコード供給をスタートする。即ち、MON_ACCESSレジスタ36のモニタコード供給開始ビット(Start)に「1」を設定する。このことによりCPU3は命令コードバッファ23の命令コードをフェッチすることができる。
【0027】
(5)スタート要求の解除を行う場合は、モニタコード供給開始ビット(Start)に「0」を設定する。
【0028】
(6)次に、モニタコードがフェッチされたことの確認を行う。即ち、MON_CODEビジービット(Busy)の値が「0」になっていることを確認し、「0」になっていれば命令コードバッファ23へ設定したすべての命令のフェッチが完了したことを意味することになる。
【0029】
(7)続いて、モニタプログラムがパラメータを必要とする場合には、MON_PARAMレジスタ34が使用されたことの確認を行う。即ち、Front_MON_PARAMビットが「0」になっていることを確認する。「0」になっていればCPU3がFront_MON_PARAMレジスタ35を読み出したことを意味することになる。
【0030】
ただし、この(7)の処理は、モニタプログラムがパラメータを必要としない場合には実行されない。
【0031】
(8)そして、モニタプログラムがFront_MON_DATAレジスタ32に書き込みを行う場合には、Front_MON_DATAレジスタ32に書き込みがあったことの確認を行う。即ち、Front_MON_DATA有効ビットの値が「1」になっていることを確認し、「1」になっていればCPU3がFront__MON_DATAレジスタ33に書き込みを行ったことを意味することになる。
【0032】
ただし、モニタプログラムがFront_MON_DATAレジスタ32に書き込みを行わない場合は、この(8)の処理は実行されない。
【0033】
(9)続いて、モニタプログラムがFront_MON_DATAレジスタ32に書き込みを行う場合には、Front_MON_DATAレジスタ33の読み出しを行う。即ち、MON_DATAレジスタ32を読み出す際に、Front_MON_DATA有効ビット(Valid)を自動的にクリアする。ただし、モニタプログラムがFront_MON_DATAレジスタ32に書き込みを行わない場合には、この(9)の処理は実行されない。
【0034】
このように、デバッグ割り込みが発生した後に、CPU3が命令コードバッファ23に命令フェッチに行った際、命令コードバッファ23に命令が転送されていない場合は、モニタコード供給機能18はCPU3に対し、命令コードバッファの先頭への分岐命令(自番地ループ命令)を与える。
【0035】
<デバッグ制御部のリセットとクロック制御方法>
次に、図12及び図13に基づいて、デバッグ制御部1のリセットとクロック制御方法について説明する。
【0036】
デバッグ機能5を使用しない場合には、デバッグツールDTはデバッグ機能内蔵マイクロコンピュータMCに接続されず、JTAG制御部2は動作しないので、デバッグ制御部1に対してリセットもされないし、クロック供給もされない。
【0037】
一方、ユーザがプログラムをデバッグするなど、デバッグ機能5を使用する場合には、デバッグツールDTからJTAG制御部2を制御し、デバッグリセット信号38やクロック供給オン信号39を使ってデバッグ制御部1にリセットをかけ、クロックの供給をオンにする。
【0038】
【発明が解決しようとする課題】
従来のオンチップデバッグ機能付きマイクロコンピュータMCおよびデバッグシステムは、上述したように、デバッグ割り込み発生後にJTAGインターフェース14を経由してモニタプログラムを供給しているので、例えば図17に示すように、JTAGインターフェース14でデバッグツールDTを接続することなしに、直接にモニタプログラムをデバッグ機能内蔵マイクロコンピュータMCのメモリ4上で実行することとし、例えばシリアル通信40などを通してホストコンピュータ11と接続するような形態を採用したい場合に、モニタプログラムからデバッグ機能5を利用することができなかった。
【0039】
また、ユーザプログラムの動作中、例えば特定のデータのアクセスを監視したい場合に、JTAGインターフェース14を経由してデバッガが使用するデバッグ機能5を利用できないという問題があった。
【0040】
したがってモニタプログラム等のユーザプログラムが使えるようにデバッグ機能5をユーザプログラム用に追加でインプリメントしなければならないが、そうすると、マイクロコンピュータMCの回路規模が大きくなるという問題があった。
【0041】
さらに、JTAG経由でデバッグツールDTを接続しない場合は、デバッグ割り込み発生時に命令コードバッファ23へフェッチするのではなく、違う番地、例えばモニタコードの先頭番地にジャンプするようにCPU3を変更するのは、CPU3の制御を複雑にするという問題があった。
【0042】
さらにまた、デバッグ制御部1やJTAG制御部2は、デバッグツールDTが接続された場合のみクロック供給されたりリセットがかかったりするので、デバッグツールDTが接続されない場合に、JTAGインターフェース14経由ではなく、デバッグ制御部1をユーザプログラムから直接使おうとすると、クロック供給ができなかったり、リセットがかからないという問題があった。
【0043】
そこで、この発明の課題は、デバッグツールを接続しない場合に、CPU上で実行されるモニタプログラム等のユーザプログラムからデバッグ機能を使用できるデバッグ機能内蔵マイクロコンピュータを提供することにある。
【0044】
【課題を解決するための手段】
上記課題を解決すべく、請求項1に記載の発明は、主演算素子と、外部にデバッグツールが接続されている場合に当該デバッグツールとの間で所定のインターフェースで信号を送受信しながらバウンダリスキャンの制御を行うバウンダリスキャン制御部と、前記バウンダリスキャン制御部及び前記主演算素子からの指示に基づいてデバッグのための制御を行うデバッグ制御部とを備え、前記デバッグ制御部が、モニタコードを供給するとともに、前記デバッグ制御部について、デバッグツールを接続して使用するか、デバッグツールを接続しないで使用するかを判断し、この判断結果に応じて前記モニタコードが変更可能とされたモニタコード供給機能を有するものである。
【0045】
請求項2に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記モニタコード供給機能が、前記判断結果に応じてモニタコードを分岐する分岐命令を保有するものである。
【0046】
請求項3に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記モニタコード供給機能が、前記判断結果に応じてジャンプ先アドレスを変更して指定するレジスタを持ち、そのアドレスにジャンプする命令を供給することのできるものである。
【0047】
請求項4に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記デバッグ制御部が、外部からの所定の信号の入力によって前記デバッグツールが接続されていない旨が指定されている場合に、前記主演算素子にリセット信号が与えられたときに併せてリセットされ、且つクロックの供給が開始されるものである。
【0048】
請求項5に記載の発明は、請求項4に記載のデバッグ機能内蔵マイクロコンピュータであって、前記デバッグ制御部に、前記主演算素子に与えられる前記リセット信号と、デバッグツールを使用せずにデバッグ機能を使用するためのモード信号とが入力され、前記モード信号が、クロックの供給を開始するためのクロック供給オン信号として兼用されて前記デバッグ制御部に与えられるものである。
【0049】
請求項6に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記デバッグ制御部が、前記主演算素子から与えられたデバッグリセットビット信号に応じてリセットし、且つ、前記主演算素子から与えられたクロック供給オンオフビット信号に応じてクロックの供給が開始されるものである。
【0050】
請求項7に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記バウンダリスキャン制御部からデータの書込が可能とされ、且つ前記主演算素子でデータの読み出しが可能とされて、前記デバッグ制御部が前記デバッグツールを接続しないで使用することが可能であり、ユーザプログラムが前記デバッグ制御部を利用し得る旨を表意するユーザー利用可能表意手段を有するものである。
【0051】
請求項8に記載の発明は、請求項7に記載のデバッグ機能内蔵マイクロコンピュータであって、前記ユーザー利用可能表意手段が前記主演算素子で読み込むことの可能なレジスタである。
【0052】
請求項9に記載の発明は、請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、前記モニタコード供給機能が、前記ユーザプログラムから予めデバッグ割り込みが発生した場合の飛び先番地が設定されるジャンプアドレス指定レジスタを有するものである。
【0053】
【発明の実施の形態】
{実施の形態1.}
図1はこの発明の実施の形態1.に係るデバッグ機能内蔵マイクロコンピュータMCの内部構成を示す機能ブロック図である。
【0054】
このデバッグ機能内蔵マイクロコンピュータMC1は、図1の如く、デバッグ制御部41、JTAG制御部(バウンダリスキャン制御手段)42、CPU(主演算素子)43やメモリ及び周辺IO(入出力回路)44が設置されている。尚、デバッグ制御部41及びJTAG制御部42は、これらを併せてデバッグ機能45と称される。
【0055】
そして、このデバッグ機能内蔵マイクロコンピュータMC1のデバッグ制御部41は、デバッグツールDTを接続して使用する第1のデバッグモードと、デバッグツールDTを接続しないで使用する第2のデバッグモードとを、外部からUSDモード信号に基づいて判断し、このUSDモード信号に応じてモード切替を行うようになっている。
【0056】
具体的に、このマイクロコンピュータMC1には、JTAGインタフェース14におけるテストリセット信号TRSTが入力されるTRST入力端子51と、CPU43とメモリ及び入出力回路等の周辺素子44をリセットするリセット信号RSTが入力されるRST入力端子52と、USDモード信号を入力するためのUSD入力端子53とがそれぞれ外部ピンに直結される端子として形成されている。
【0057】
そして、マイクロコンピュータMC1の内部には、RST入力端子52から入力されたリセット信号RSTとJTAG制御部42からのデバッグリセット信号54とをUSD入力端子53から入力されたUSDモード信号に応じて切り替え選択してデバッグリセット信号54aとしてデバッグ制御部41に入力する選択回路55と、JTAG制御部42からのクロック供給オン信号56と上述のリセット信号RSTとの論理和を演算してこれをクロック供給オン信号56aとしてデバッグ制御部41に入力する論理和回路57とを備える。
【0058】
また、デバッグ制御部41内には、CPU23がデータアクセスを実行する条件の情報を格納するアクセスブレークレジスタ61と、外部から与えられた命令をCPU43が実行する際のアドレスを格納するための実行前PCブレークレジスタ62と、上述のUSDモード信号に基づいて後述の命令コードバッファ23の先頭へジャンプする命令を供給するためのモニタコード供給機能63とを備える。
【0059】
このデバッグ制御部41におけるリセット方法とクロック供給開始方法について説明する。
【0060】
<デバッグツールを接続する場合の動作>
まず、図2のように、デバッグツールDTを接続して使用する場合には、図1において外部ピンに直結されるUSD入力端子53から、USDモード信号としてロー(L)信号が入力される。そうすると、選択回路55により、デバッグリセット信号54aとしてJTAG制御部42からのデバッグリセット信号54が選択される。
【0061】
また、JTAG制御部42から出力されるクロック供給オン信号56は初期値がロー(L)信号である。
【0062】
そして、RST入力端子52から入力されるリセット信号RSTがロー(L)信号入力の後、ハイ(H)信号に変化し、このリセット信号RSTに基づいて、CPU43とメモリ及び周辺IO(入出力インターフェース)44がリセットされる。
【0063】
また、TRST入力端子51から入力されるテストリセット信号TRSTに基づいてJTAG制御部42がリセットされる。
【0064】
この場合、デバッグツールDTが接続されているので、JTAG制御部42よりデバッグリセット信号54を出力し、これが選択回路55で選択されてデバッグリセット信号54aとしてデバッグ制御部41に入力され、当該デバッグ制御部41がリセットされる。その後、JTAG制御部42よりクロック供給オン信号56を出力して、論理和回路57を通じてデバッグ制御部41に対してクロックの供給をスタートする。これにより、JTAG制御部42とデバッグ制御部41とが相互に連動して、JTAGに準拠したデバッグが実行される。
【0065】
<デバッグツールを接続しない場合の動作>
一方、デバッグツールDTを接続せずに、たとえば図3のようにシリアル通信40などを通してマイクロコンピュータMC1とホストコンピュータ11と接続するような形態で使用する場合は、図1において、USD入力端子53から入力されるUSDモード信号としてハイ(H)信号を入力する。そうすると、選択回路55では、RST入力端子52から入力されたリセット信号RSTをデバッグリセット信号54aとして選択する。これにより、このリセット信号RSTによってCPU43とメモリ及び周辺IO44がリセットされる際に、デバッグ制御部41もリセットされる。
【0066】
この場合、デバッグツールDTが接続されていないので、TRST入力端子51にはテストリセット信号TRSTが入力されず、よってJTAG制御部42はリセットされない。
【0067】
また、JTAG制御部42からのクロック供給オン信号56はロー(L)信号であるが、USD入力端子53から入力されるUSDモード信号がハイ(H)信号であるため、論理和回路57から出力されるクロック供給オン信号56aはハイ(H)信号になる。これにより、デバッグ制御部41に対してクロック供給がスタートする。
【0068】
このように、デバッグツールDTを接続しない場合(図3)でも、デバッグ制御部41に対して、リセットやクロック供給をスタートすることができる。
【0069】
次に、この実施の形態におけるモニタコード供給機能63でのデバッグ割り込み発生時の動作を図4及び図5に基づいて説明する。尚、図4では、図16に示した従来例と同様の機能を有する要素について同一符号を付している。
【0070】
まず、マイクロコンピュータMC1にデバッグ割り込みが発生すると、図5中のステップS01において、CPU43は、モニタコード供給機能63内の命令コードバッファ23に命令をフェッチにいく。
【0071】
次に、ステップS02において、JTAG制御部42より命令コードが供給されているかどうかを判断し、JTAG制御部42より命令コードが供給されていれば、ステップS03で、供給されている命令コードを実行した後、再びステップS01からの処理を繰り返す。
【0072】
一方、ステップS02で、JTAG制御部42より命令コードが供給されていないと判断した場合は、ステップS04に進み、USD入力端子53から入力されたUSDモード信号がハイ(H)信号(アクティベート)であるか否かを判断する。そして、USDモード信号がロー(L)信号(ノンアクティベート)であれば、ステップS05に進み、命令コードバッファ23の先頭へジャンプする命令を、モニタコード供給機能63が供給する。
【0073】
一方、ステップS04において、USDモード信号がハイ(H)信号(アクティベート)であれば、ステップS06に進み、モニタコード供給機能63はユーザプログラム(例えばモニタプログラム)の先頭へジャンプする命令を供給する。
【0074】
その他のモニタコード供給機能63の動作の詳細については、図16に示した従来例と同じであるので、その説明を省略する。
【0075】
このように、USD入力端子53から入力されたUSDモード信号をロー(L)信号にしてデバッグツールDTを接続している場合には、デバッグツールDTから供給されるモニタコードを実行してプログラムのデバッグを行う一方、USD入力端子53から入力されたUSDモード信号をハイ(H)信号にしてデバッグツールDTを接続しない場合には、例えば、メモリにダウンロードされているユーザのモニタプログラムの先頭へジャンプすることができる。
【0076】
したがって、ユーザのモニタプログラムについて、デバッグ制御部41の機能を使用して実行させることができ、ユーザのモニタプログラム専用のハードウェアを追加することなく、データのアクセスをチェックし、ハードウェアのブレークポイント等を作成することができる。
【0077】
{実施の形態2.}
図6はこの発明の実施の形態2.に係るデバッグ機能内蔵マイクロコンピュータMC2を示す図である。なお、図6では実施の形態1.と同様の機能を有する要素については同一符号を付している。この実施の形態のデバッグ機能内蔵マイクロコンピュータMC2は、図6の如く、デバッグ制御部41、JTAG制御部42、CPU43aやメモリ及び周辺IO(入出力回路)44が設置されている。尚、デバッグ制御部41及びJTAG制御部42は、これらを併せてデバッグ機能45と称される。
【0078】
そして、このデバッグ機能内蔵マイクロコンピュータMC2のデバッグ制御部41は、デバッグツールDTを接続して使用する第1のデバッグモードと、デバッグツールDTを接続しないで使用する第2のデバッグモードとについて、CPU43a内に設定されたUSDCレジスタ71の値に応じてモード切替を行うようになっている。
【0079】
具体的に、このマイクロコンピュータMC2には、JTAGインタフェース14におけるテストリセット信号TRSTが入力されるTRST入力端子51と、CPU43aとメモリ及び入出力回路等の周辺素子44をリセットするリセット信号RSTが入力されるRST入力端子52とがそれぞれ外部ピンに直結される端子として形成されている。ただし、実施の形態1.で形成されていたUSD入力端子53は、実施の形態2.において省略されている。
【0080】
そして、この実施の形態においては、実施の形態1.におけるUSDモード信号に相当するデータを、CPU43a内のUSDCレジスタ71に格納し、このUSDCレジスタ71の値に基づいて、デバッグ制御部41のモード切替を行うようになっている。
【0081】
また、マイクロコンピュータMC2の内部には、CPU43a内においてアクセスされるUSDCレジスタ71内の一部の値(デバッグリセットビット信号73)とJTAG制御部42からのデバッグリセット信号54との論理和を演算する論理和回路72と、JTAG制御部42からのクロック供給オン信号56と上述のUSDCレジスタ71内の他の一部の値(クロック供給オンオフビット信号74)との論理和を演算してこれをクロック供給オン信号56aとしてデバッグ制御部41に入力する論理和回路57とを備える。
【0082】
図7はUSDCレジスタ71内に格納されるデータを説明した図である。USDCレジスタ71は、CPU43a内でアクセス可能な32ビット固定長のレジスタであり、デバッグモジュールクロック供給ON/OFFビット81、デバッグモジュールリセットビット82及びUSD機能利用可能ビット83を有する。
【0083】
デバッグモジュールクロック供給ON/OFFビット81は、読み出しと書き込みの両方が可能であり、「1」であるときにデバッグモジュールクロック供給ON、「0」であるときにはデバッグモジュールクロック供給OFFであることをそれぞれ意味し、初期値が「0」とされて、クロック供給オンオフビット信号74として論理和回路57に出力される。
【0084】
デバッグモジュールリセットビット82は、読み出しと書き込みの両方が可能であり、「1」であるときにリセットアサート、「0」であるときにはリセットネゲートであることをそれぞれ意味し、初期値が「0」とされて、デバッグリセットビット信号73として論理和回路72に出力される。
【0085】
USD機能利用可能ビット83はCPU43a内において読み出しのみ可能であるが、JTAG制御部42から書き込みが可能な構成になっている。USD機能利用可能ビット(ユーザー利用可能表意手段)83が「0」であればモニタプログラム等のユーザプログラムからデバッグ制御部41の機能が利用可能なことを示す。USD機能利用可能ビット83が「1」であれば利用不可能なことを示す。
【0086】
<デバッグツールを接続する場合の動作>
続いて、デバッグツールDTを接続して使用する場合のデバッグ制御部41に対するリセットの動作とクロック供給スタート方法を説明する。
【0087】
まず、デバッグツールDTよりTRST入力端子51を介してJTAG制御部42にリセットをかける。
【0088】
次に、デバッグツールDTがJTAG制御部42を通じてCPU43a内のUSDCレジスタ71のUSD機能利用可能ビット83を「0」にクリアする。また、デバッグツールDTよりJTAG制御部42を通じて、デバッグリセット信号54を論理和回路72に出力する。このとき、USDCレジスタ71からのデバッグリセットビット信号73はロー(L)信号であるため、論理和回路72からデバッグリセット信号54aがデバッグ制御部41に出力され、これに基づいてデバッグ制御部41をリセットする。また、デバッグツールDTよりJTAG制御部42を経由してクロック供給オン信号56をハイ(H)信号として論理和回路57に出力する。このとき、USDCレジスタ71からのクロック供給オンオフビット信号74はロー(L)信号であるが、JTAG制御部42からのクロック供給オン信号56がハイ(H)信号であるため、クロック供給オン信号56aはハイ(H)信号となり、故に、デバッグ制御部41に対するクロック供給がスタートする。
【0089】
また、デバッグツールDTはJTAG制御部42を経由してデバッグモード信号75をロー(L)信号にする。このように、デバッグモード信号75がロー(L)信号となっているときには、実施の形態1.におけるデバッグ割り込み発生時のモニタコード供給機能63での動作(USDモード信号がロー(L)信号の場合の動作)と同様であるため、ここではその説明を省略する。
【0090】
デバッグツールDTはJTAG制御部42を経由してUSDCレジスタ71のUSD機能利用可能ビット83(図7)を「0」(利用不可)にする。
【0091】
その後、ユーザプログラムのダウンロード、実行制御を行いながらプログラムのデバッグを行う。
【0092】
<デバッグツールを接続しない場合の動作>
デバッグツールDTを接続しない場合において、デバッグ機能内蔵マイクロコンピュータMC2のメモリ44上で動作するモニタプログラム等のプログラムの動作を以下に説明する。
【0093】
デバッグツールDTがマイクロコンピュータMC2に接続されていないので、テストリセット信号TRSTはロー(L)信号であり、JTAG制御部42にはリセットがかからず、JTAG制御部42から論理和回路72に与えられるデバッグリセット信号54はロー(L)信号となっている。一方、JTAG制御部42からのデバッグ制御部41に与えられるデバッグモード信号75はハイ(H)信号になっている。
【0094】
デバッグモード信号がハイ(H)信号の時のデバッグ割り込み発生時のモニタコード供給機能63の動作は、実施の形態1.におけるデバッグ割り込み発生時のモニタコード供給機能63での動作(USDモード信号がハイ(H)信号の場合の動作)と同様であるため、ここではその説明を省略する。
【0095】
また、JTAG制御部42から論理和回路57に出力されるクロック供給オン信号56はロー(L)信号になっている。
【0096】
この実施の形態においては、デバッグ制御部41のリセットとクロック供給スタートが、デバッグ機能内蔵マイクロコンピュータMC2内で動作するモニタプログラムからUSDCレジスタ71を操作して行う。
【0097】
次に、この実施の形態におけるモニタプログラムの動作を説明する。図8はこの実施の形態でのモニタプログラムの動作を示すフローチャートである。
【0098】
まずCPU43aにリセットがかかると、図8中のステップS11において、リセットベクタへジャンプする。そして、ステップS12で、モニタプログラムの先頭へジャンプする。
【0099】
続いて、ステップS13において、USD機能利用可能ビット83の値に基づいて、デバッグ機能45が動作可能であるか否かを判断する。
【0100】
具体的に、デバッグツールDTが接続されている場合は、デバッグツールDTによりデバッグ制御部41に対するリセットの動作とクロック供給スタートが終わっており、USD機能利用可能ビット83の値が「0」になっており、この場合はCPU23aにより直接にデバッグ機能45を動作させることが不能であると判断し、次のステップS14に進む。
【0101】
ステップS14では、モニタプログラムはUSD機能利用可能ビット83を読み出し、CPU23aによる直接のデバッグ機能45が利用不可「0」であるので、メモリ44等を使わずデバッグを実行する。即ち、デバッグツールDTからJTAG制御部42を経由してモニタプログラムを実行することが可能である。
【0102】
一方、ステップS13において、デバッグツールDTが接続されていない場合には、モニタプログラムはUSD機能利用可能ビット83を読み出し、デバッグ機能が利用可能「1」であることを確認し、デバッグ機能45のCPU23aによる直接の使用が可能であることを判断する。この場合は、次のステップS15に進み、デバッグ機能を使ってデバッグを実行する。
【0103】
ここで、デバッグツールDTが接続されてない場合に、デバッグ割り込みが発生すると、ステップS16において、CPU43aは命令コードバッファ23より分岐(ブランチ)命令をフェッチし、メモリ44上にあるモニタプログラムを実行する。
【0104】
このように、デバッグのためのモニタプログラムをメモリ44上で実行した場合の動作を説明したが、デバッグのためのモニタプログラム以外のユーザプログラムをメモリ44上で実行してもよい。このように動作手順をデバッグのためのモニタプログラム以外のユーザプログラムをメモリ44上で実行する場合の処理手順を図9に示す。ステップS21〜S26は、それぞれステップS11〜S16に対応しているが、ステップS12におけるモニタプログラムがステップS22におけるユーザプログラムに変更され、ステップS14,S15におけるデバッグの処理がステップS24,S25においてユーザプログラムに変更されている他は、図9の処理手順は図8の処理手順と同様であるため、説明を省略する。このように、ユーザのモニタプログラムはデバッグ制御部41の機能を使用することができ、ユーザのモニタプログラム専用のハードウェアを追加することなく、データのアクセスをチェックし、ハードウエアのブレークポイント等を作成することができる。
【0105】
また、メモリ上で動作するモニタプログラムを、デバッグツールDTを接続して動作させたり、接続せずに動作させたりでき、特にデバッグツールDTを接続しなかった場合は、モニタプログラムがデバッグ機能を利用することができる。
【0106】
また、メモリ上で動作するユーザプログラムを、デバッグツールDTを接続して動かしたり、接続しなかった場合にユーザプログラムがデバッグ機能を利用することができる。
【0107】
{実施の形態3.}
図10はこの発明の実施の形態3.に係るデバッグ機能内蔵マイクロコンピュータMC3の内部構成を示す機能ブロック図である。なお、かかる図10では実施の形態1.と同様の機能を有する要素については同一符号を付している。
【0108】
この実施の形態のデバッグ機能内蔵マイクロコンピュータMC3は、モニタコード供給機能63aとして、実施の形態1.のモニタコード供給機能63と同様の構成に対して、さらにジャンプアドレス指定レジスタ91を追加している。
【0109】
このジャンプアドレス指定レジスタ91にはユーザプログラムから予めデバッグ割り込みが発生した場合の飛び先番地を設定しておく。
【0110】
デバッグツールDTを接続しない場合のモニタコード供給機能63aにおけるデバッグ割り込み発生時の動作を説明する。
【0111】
まずデバッグ割り込みが発生すると、図11中のステップS31において、CPU43は命令コードバッファ23に命令をフェッチにいく。
【0112】
次にステップS32において、JTAG制御部42より命令コードが供給されているかどうかを判断し、JTAG制御部42より命令コードが供給されていれば、その供給されている命令コードを実行する(ステップS33)。その後、ステップS31からの処理を繰り返す。
【0113】
一方、ステップS32において、JTAG制御部42より命令コードが供給されていなければ、続くステップS34において、USD入力端子53から入力されたUSDモード信号がハイ(H)信号(アクティベート)であるかどうかを判断する。そして、USDモード信号がハイ(H)信号であれば、ステップS35に進み、命令コードバッファ23の先頭へジャンプする命令を、モニタコード供給機能63aが供給する。
【0114】
一方、ステップS34において、USDモード信号がロー(L)信号であれば、ステップS36に進み、モニタコード供給機能63はジャンプアドレス指定レジスタ91で指定したアドレスへジャンプする命令を供給する。
【0115】
この実施の形態におけるその他の動作は、実施の形態1.及び実施の形態2.と同様であるので、その説明を省略する。
【0116】
この実施の形態においては、実施の形態1.及び実施の形態2.における利点に加えて、ユーザプログラム(あるいはモニタプログラム)のデバッグ割り込みが発生した場合の飛び先番地を自由に変えることができるので、ユーザプログラム(あるいはモニタプログラム)の先頭番地が変わったときでも、容易に対応できる。
【0117】
【発明の効果】
請求項1に記載の発明によれば、主演算素子と、外部にデバッグツールが接続されている場合に当該デバッグツールとの間で所定のインターフェースで信号を送受信しながらバウンダリスキャンの制御を行うバウンダリスキャン制御部と、バウンダリスキャン制御部及び主演算素子からの指示に基づいてデバッグのための制御を行うデバッグ制御部とを備え、デバッグ制御部が、モニタコードを供給するとともに、デバッグ制御部について、デバッグツールを接続して使用するか、デバッグツールを接続しないで使用するかを判断し、この判断結果に応じてモニタコードが変更可能とされたモニタコード供給機能を有するので、このモニターコードの変更により、デバッグツールを接続しない場合にモニタプログラム等のユーザープログラムに基づいてデバッグ制御部にデバッグ処理を実行させることができる。
【0118】
請求項2に記載の発明によれば、モニタコード供給機能が、判断結果に応じてモニタコードを分岐する分岐命令を保有しているので、モニターコードを容易に変更することができる。
【0119】
請求項3に記載の発明によれば、モニタコード供給機能が、判断結果に応じてジャンプ先アドレスを変更して指定するレジスタを持ち、そのアドレスにジャンプする命令を供給することのできるようにしているので、モニターコードを容易に変更することができる。
【0120】
請求項4及び請求項5に記載の発明によれば、デバッグ制御部が、外部からの所定の信号の入力によってデバッグツールが接続されていない旨が指定されている場合に、主演算素子にリセット信号が与えられたときに併せてリセットされ、且つモード信号に基づいてクロックの供給が開始されるようにしているので、デバッグツールを接続しない場合にも、デバッグ制御部を容易に機能させることが可能となる。
【0121】
請求項6に記載の発明によれば、デバッグ制御部が、主演算素子から与えられたデバッグリセットビット信号に応じてリセットし、且つ、主演算素子から与えられたクロック供給オンオフビット信号に応じてクロックの供給が開始されるので、デバッグツールを接続しない場合にも、デバッグ制御部を容易に機能させることが可能となる。
【0122】
請求項7及び請求項8に記載の発明によれば、バウンダリスキャン制御部からデータの書込が可能とされ、且つ主演算素子でデータの読み出しが可能とされて、デバッグ制御部がデバッグツールを接続しないで使用することが可能であり、ユーザプログラムがデバッグ制御部を利用し得る旨を表意するユーザー利用可能表意手段を有するので、ユーザプログラムがデバッグ制御部を使用できるか否かの判断を極めて容易に行うことができる。
【0123】
請求項9に記載の発明によれば、モニタコード供給機能が、ユーザプログラムから予めデバッグ割り込みが発生した場合の飛び先番地が設定されるジャンプアドレス指定レジスタを有するので、ユーザプログラムの先頭番地が変わったときでも、容易に対応できるという効果がある。
【図面の簡単な説明】
【図1】この発明の実施の形態1.に係るデバッグ機能内蔵マイクロコンピュータを示す機能ブロック図である。
【図2】デバッグ機能内蔵マイクロコンピュータがデバッグツールを介してホストコンピュータに接続された状態を示すブロック図である。
【図3】デバッグ機能内蔵マイクロコンピュータが直接にホストコンピュータに接続された状態を示すブロック図である。
【図4】この発明の実施の形態1.に係るデバッグ機能内蔵マイクロコンピュータを示すブロック図である。
【図5】この発明の実施の形態1.に係るデバッグ機能内蔵マイクロコンピュータの動作を示すフローチャートである。
【図6】この発明の実施の形態2.に係るデバッグ機能内蔵マイクロコンピュータを示す機能ブロック図である。
【図7】USDCレジスタのフォーマットを示す図である。
【図8】この発明の実施の形態2.に係るデバッグ機能内蔵マイクロコンピュータの動作の一例を示すフローチャートである。
【図9】この発明の実施の形態2.に係るデバッグ機能内蔵マイクロコンピュータの動作の他の例を示すフローチャートである。
【図10】この発明の実施の形態3.に係るデバッグ機能内蔵マイクロコンピュータを示す機能ブロック図である。
【図11】この発明の実施の形態3.に係るデバッグ機能内蔵マイクロコンピュータの動作を示すフローチャートである。
【図12】従来のデバッグ機能内蔵マイクロコンピュータを示す機能ブロック図である。
【図13】デバッグ機能内蔵マイクロコンピュータがデバッグツールを介してホストコンピュータに接続された状態を示すブロック図である。
【図14】従来のデバッグ機能内蔵マイクロコンピュータを示すブロック図である。
【図15】JTAG制御部の内部構成を示すブロック図である。
【図16】デバッグ機能内蔵マイクロコンピュータを示すブロック図である。
【図17】デバッグ機能内蔵マイクロコンピュータが直接にホストコンピュータに接続された状態を示すブロック図である。
【符号の説明】
11 ホストコンピュータ、14 JTAGインタフェース、23 命令コードバッファ、40 シリアル通信、41 デバッグ制御部、42 JTAG制御部、43,43a CPU、44 周辺素子、45 デバッグ機能、51 TRST入力端子、52 RST入力端子、53 USD入力端子、54,54a デバッグリセット信号、55 選択回路、56,56a クロック供給オン信号、57 論理和回路、61 アクセスブレークレジスタ、62 実行前PCブレークレジスタ、63,63a モニタコード供給機能、71 USDCレジスタ、72 論理和回路、73 デバッグリセットビット信号、74 クロック供給オンオフビット信号、75 デバッグモード信号、81 デバッグモジュールクロック供給ON/OFFビット、82 デバッグモジュールリセットビット、83 USD機能利用可能ビット、91 ジャンプアドレス指定レジスタ、DT デバッグツール、MC,MC1〜MC3 デバッグ機能内蔵マイクロコンピュータ、TRST テストリセット信号。
Claims (9)
- 主演算素子と、
外部にデバッグツールが接続されている場合に当該デバッグツールとの間で所定のインターフェースで信号を送受信しながらバウンダリスキャンの制御を行うバウンダリスキャン制御部と、
前記バウンダリスキャン制御部及び前記主演算素子からの指示に基づいてデバッグのための制御を行うデバッグ制御部と
を備え、
前記デバッグ制御部が、モニタコードを供給するとともに、前記デバッグ制御部について、デバッグツールを接続して使用するか、デバッグツールを接続しないで使用するかを判断し、この判断結果に応じて前記モニタコードが変更可能とされたモニタコード供給機能を有するデバッグ機能内蔵マイクロコンピュータ。 - 請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、
前記モニタコード供給機能が、前記判断結果に応じてモニタコードを分岐する分岐命令を保有することを特徴とするデバッグ機能内蔵マイクロコンピュータ。 - 請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、
前記モニタコード供給機能が、前記判断結果に応じてジャンプ先アドレスを変更して指定するレジスタを持ち、そのアドレスにジャンプする命令を供給することのできることを特徴とするデバッグ機能内蔵マイクロコンピュータ。 - 請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、
前記デバッグ制御部が、外部からの所定の信号の入力によって前記デバッグツールが接続されていない旨が指定されている場合に、前記主演算素子にリセット信号が与えられたときに併せてリセットされ、且つクロックの供給が開始されることを特徴とするデバッグ機能内蔵マイクロコンピュータ。 - 請求項4に記載のデバッグ機能内蔵マイクロコンピュータであって、
前記デバッグ制御部に、前記主演算素子に与えられる前記リセット信号と、デバッグツールを使用せずにデバッグ機能を使用するためのモード信号とが入力され、
前記モード信号が、クロックの供給を開始するためのクロック供給オン信号として兼用されて前記デバッグ制御部に与えられることを特徴とするデバッグ機能内蔵マイクロコンピュータ。 - 請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、
前記デバッグ制御部が、前記主演算素子から与えられたデバッグリセットビット信号に応じてリセットし、且つ、前記主演算素子から与えられたクロック供給オンオフビット信号に応じてクロックの供給が開始されることを特徴とするデバッグ機能内蔵マイクロコンピュータ。 - 請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、
前記バウンダリスキャン制御部からデータの書込が可能とされ、且つ前記主演算素子でデータの読み出しが可能とされて、前記デバッグ制御部が前記デバッグツールを接続しないで使用することが可能であり、ユーザプログラムが前記デバッグ制御部を利用し得る旨を表意するユーザー利用可能表意手段を有することを特徴とするデバッグ機能内蔵マイクロコンピュータ。 - 請求項7に記載のデバッグ機能内蔵マイクロコンピュータであって、
前記ユーザー利用可能表意手段が前記主演算素子で読み込むことの可能なレジスタであることを特徴とするデバッグ機能内蔵マイクロコンピュータ。 - 請求項1に記載のデバッグ機能内蔵マイクロコンピュータであって、
前記モニタコード供給機能が、前記ユーザプログラムから予めデバッグ割り込みが発生した場合の飛び先番地が設定されるジャンプアドレス指定レジスタを有することを特徴とするデバッグ機能内蔵マイクロコンピュータ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002193497A JP2004038464A (ja) | 2002-07-02 | 2002-07-02 | デバッグ機能内蔵マイクロコンピュータ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002193497A JP2004038464A (ja) | 2002-07-02 | 2002-07-02 | デバッグ機能内蔵マイクロコンピュータ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004038464A true JP2004038464A (ja) | 2004-02-05 |
Family
ID=31702446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002193497A Pending JP2004038464A (ja) | 2002-07-02 | 2002-07-02 | デバッグ機能内蔵マイクロコンピュータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004038464A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1312588C (zh) * | 2004-04-02 | 2007-04-25 | 清华大学 | 基于目标机上的ejtag部件的交叉调试器实现方法 |
JP2009099054A (ja) * | 2007-10-18 | 2009-05-07 | Fujitsu Microelectronics Ltd | 半導体集積回路及びデバッグモード決定方法 |
JP2013086742A (ja) * | 2011-10-21 | 2013-05-13 | Renesas Electronics Corp | デバッグシステム、電子制御装置、情報処理装置、半導体パッケージおよびトランシーバ回路 |
CN111694697A (zh) * | 2019-03-12 | 2020-09-22 | 罗姆股份有限公司 | 半导体装置及调试系统 |
-
2002
- 2002-07-02 JP JP2002193497A patent/JP2004038464A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1312588C (zh) * | 2004-04-02 | 2007-04-25 | 清华大学 | 基于目标机上的ejtag部件的交叉调试器实现方法 |
JP2009099054A (ja) * | 2007-10-18 | 2009-05-07 | Fujitsu Microelectronics Ltd | 半導体集積回路及びデバッグモード決定方法 |
JP2013086742A (ja) * | 2011-10-21 | 2013-05-13 | Renesas Electronics Corp | デバッグシステム、電子制御装置、情報処理装置、半導体パッケージおよびトランシーバ回路 |
CN111694697A (zh) * | 2019-03-12 | 2020-09-22 | 罗姆股份有限公司 | 半导体装置及调试系统 |
CN111694697B (zh) * | 2019-03-12 | 2023-09-19 | 罗姆股份有限公司 | 半导体装置及调试系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4190114B2 (ja) | マイクロコンピュータ | |
US6662314B1 (en) | Microcomputer including program for rewriting data in an internal flash memory | |
US7401257B2 (en) | Microcomputer and method for developing system program | |
US6094730A (en) | Hardware-assisted firmware tracing method and apparatus | |
US6668339B1 (en) | Microprocessor having a debug interruption function | |
US6415393B2 (en) | Inspection of an integrated circuit device while being mounted on a circuit board | |
US6145123A (en) | Trace on/off with breakpoint register | |
US6311292B1 (en) | Circuit, architecture and method for analyzing the operation of a digital processing system | |
US6209045B1 (en) | Data processor and data processing system | |
US20100153786A1 (en) | Processor, multiprocessor, and debugging method | |
US7743278B2 (en) | Test access control for plural processors of an integrated circuit | |
JP2008507025A (ja) | 集積回路テスト用エミュレーション及びデバッグインターフェイス | |
US6167365A (en) | Method of initializing CPU for emulation | |
US7313729B2 (en) | Low-cost debugging system with a ROM or RAM emulator | |
JP2005070949A (ja) | プログラム処理装置 | |
JP2005070950A (ja) | プログラム処理装置 | |
JP2004038464A (ja) | デバッグ機能内蔵マイクロコンピュータ | |
JP2003263339A (ja) | デバック機能内蔵型マイクロコンピュータ | |
US20020188813A1 (en) | On-chip hardware breakpoint generator with comprehensive memory operation detection | |
JP4600134B2 (ja) | マルチプロセッサシステム | |
JP2004094451A (ja) | オンチップjtagインタフェース回路およびシステムlsi | |
KR100658485B1 (ko) | 마이크로프로세서 개발시스템 | |
JP2006146757A (ja) | デバッグ用レジスタおよびデータ転送方法 | |
JP2679591B2 (ja) | エミュレーションチップ及びインサーキットエミュレー タ | |
JP2002541582A (ja) | エミュレータシステム内のユーザメモリを更新する方法およびシステム |