JP4475734B2 - データ処理装置及びデータ処理方法 - Google Patents
データ処理装置及びデータ処理方法 Download PDFInfo
- Publication number
- JP4475734B2 JP4475734B2 JP2000112811A JP2000112811A JP4475734B2 JP 4475734 B2 JP4475734 B2 JP 4475734B2 JP 2000112811 A JP2000112811 A JP 2000112811A JP 2000112811 A JP2000112811 A JP 2000112811A JP 4475734 B2 JP4475734 B2 JP 4475734B2
- Authority
- JP
- Japan
- Prior art keywords
- debug
- coprocessor
- instruction
- register
- data
- 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
Description
【発明の属する技術分野】
本発明は、データ処理システムに関する。特に、本発明は、データ処理システム用のデバッグ機構に関する。
【0002】
【従来の技術】
デバッグ機構による問題は、通常の動作中に可能なパフォーマンスと干渉又は制限することがあってはならないということである。例えば、公知のデバッグ機構は、プログラミングのブレークポイント(breakpoint)及びウォッチポイント(watchpoint)のようなデバッグ機構の構成を可能とするようにデータ処理パス内にマルチプレクサを付加したものをしばしば含む。
【0003】
【発明が解決しようとする課題】
デバッグ用にのみに必要とされるこれらの付加的な回路要素は、通常の動作中にデータ処理システムのパフォーマンスを制限するクリティカル・データ・パス内に信号伝搬遅延をもたらす恐れがある。
【0004】
【発明を解決するための手段】
本発明は、一特徴によれば、データ処理装置を提供するものであって、前記装置は、
メイン・プロセッサに入力された命令ストリーム内のメイン・プロセッサ命令に応答してメイン・プロセッサ・オペレーションを実行する前記メイン・プロセッサと、
コプロセッサ・インターフェースを介して前記メイン・プロセッサに接続され、かつ前記命令ストリーム内のコプロセッサ命令に応答してコプロセッサ・オペレーションを実行するコプロセッサとを備え、
前記コプロセッサは、前記データ処理装置をデバッグする診断データの発生を少なくとも部分的に制御するように動作可能なデバッグ・コプロセッサであり、前記コプロセッサ命令は前記デバッグ・コプロセッサのオペレーションを制御するデバッグ・コプロセッサ命令である。
【0005】
本発明は、コプロセッサに通常使用される機構及び構造を使用して前記システムの通常オペレーションに対する影響を少なくしたデバッグ・システムを提供できることが解る。加えて、前記メイン・プロセッサは、このメイン・プロセッサのパフォーマンスを制限することなく、コプロセッサにより動作し、かつ通信するのを容易にするように、しばしば予め設計される。本発明は、デバッグ・プロセッサ形式によるデバッグ機構を設けることによりこのような特徴を得ている。このデバッグ・プロセッサは、前記メイン・プロセッサの通常パフォーマンスに対して殆ど影響しないように前記コプロセッサ・インターフェースを介して構築することが可能とされる。
【0006】
前記デバッグ・コプロセッサを構成する特に効果的な方法は、1以上のデバッグ・コプロセッサ・レジスタを介することによる。
【0007】
メイン・プロセッサ及びコプロセッサ・システムと関連されたコプロセッサ命令セットは、典型的には、コプロセッサ内のレジスタに値を書き込む、又はコプロセッサ内のレジスタから値を読み出すコプロセッサ命令を含む。このようにして、構成データをデバッグ・コプロセッサに書き込むことができ、またデバッグ・コプロセッサから診断データを復元することができる。
【0008】
非常に有用なデバッグ機構は、ブレークポイント及びウォッチポイント機能を実行できるものである。これらのブレークポイント及びウォッチポイント値は、プログラムされ、かつ記憶される必要がある。この必要性は、所望のブレークポイント及びウォッチポイント値を記憶するようにデバッグ・コプロセッサ内のレジスタを使用することにより、非常に効果的に達成可能とされる。
【0009】
更に、マスク値、エネーブル(enable=可能状態)ビット及びモード選択値のように、より複雑なブレークポイント及びウォッチポイント・オペレーションに関連された制御データもデバッグ・コプロセッサ内のレジスタを使用して効果的にプログラムし、かつ記憶可能とされる。従って、更に、転送サイズ、(例えば、特権(privileged)/ユーザ)モード、命令セットを表示するビット(ARM Thumb Tビット)のようなアドレス属性等に対して比較を行うこともできる。
【0010】
コプロセッサ・レジスタは、メイン・プロセッサに伝達された命令ストリーム内のコプロセッサ命令を介してアクセス可能とされる。これは、メイン・プロセッサに対して同一の命令を発行することにより、デバッグしているデータ処理システム上を走るソフトウェア、及び外部スキャニング機構の両者がコプロセッサ・レジスタをアクセスしてデバッグ・オペレーションを構成できるようにする。従って、メイン・プロセッサ・コア上を走るソフトウェアは、デバッグ・コプロセッサ用を意図した命令を通常形式によりメイン・プロセッサ・パイプラインにフィードすることができ、これに対してスキャン機構は、命令転送レジスタを通ってデバッグ・コプロセッサ用を意図した命令をスキャン入力することができる。次に、これらのスキャン入力命令は、同一のメイン・プロセッサ・パイプラインへの命令として発行されることにより、フル速度で1度に1つ実行される。
【0011】
その代わり及び追加として、少なくともいくつかのデバッグ・コプロセッサ・レジスタは、スキャン・チェーン・コントローラの制御により動作する直列スキャン・チェーンを介してアクセスされてもよい。これは、デバッグ・コプロセッサ形式によりデバッグ機構の外部プログラミングを外部ハードウェア及びソフトウェアにより達成可能にする。
【0012】
スキャン・チェーン機構を介してアクセス可能なレジスタは、命令を直列的にシステムにスキャン入力するのを可能にし、次いでメイン・プロセッサか又はデバッグ・コプロセッサ(又はプロセッサ・インターフェースに取り付けられた浮動小数点ユニット・プロセッサのような他のコプロセッサ)により実行できるようにするレジスタを含む。
【0013】
同様にして、スキャン・チェーン機構を介してアクセス可能なレジスタは、データ値をシステムにスキャン入力、又はシステムから直列にスキャン出力できる領域を含むことが好ましい。このようにデータ値を適用すること及び復元することは、診断オペレーションにおいて非常に有用である。
【0014】
好ましい実施例は、このようなデータ値レジスタをアクセスしようとしていると同時に、スキャン・チェーンによりアクセスされていたメイン・プロセッサ又はコプロセッサの潜在的な問題を処理するために、2つのデータ値レジスタ形式、一方は、メイン・プロセッサ又はコプロセッサにより書き込み可能とされ、かつスキャン・チェーンにより読み出し可能とされる形式、また他方は、メイン・プロセッサ又はコプロセッサにより読み出し可能、かつスキャン・チェーンにより書き込み可能とされる形式にあるデータ値レジスタを提供するものである。これは、潜在的なデータ競合を回避する双方向通信チャネルを効果的に形成する。
【0015】
好ましい実施例により得られるデバッグ・コプロセッサ内の他のレジスタは、読み出し及び書き込みが可能であり、かつデバッグ・モードへのエントリ条件、デバッグ・エネーブル・ビット、及びメイン・プロセッサのベクトル命令トラップ・オペレーションを制御するフラグのような情報を記憶するデバッグ・ステータス制御レジスタである。
【0016】
デバッグ・コプロセッサは、好ましくは、パイプライン・ドレーン、パイプライン・ホールド及び命令取り消しのような機能を実行するためにシステムの残りに伝達可能とされる制御信号を使用すること、及び発生することができる。
【0017】
デバッグ・コプロセッサは、典型的には、システム内のメイン・プロセッサ及びその他の全てのコプロセッサと同一のクロック周波数で動作する。これは、デバッグ・コプロセッサがメイン・プロセッサ及び他の全てのコプロセッサの通常的なオペレーション速度に対する影響が軽減されるように、標準的なコプロセッサ・インターフェースを使用して、これらの要素間の対話を容易にする。しかしながら、スキャン・チェーン機構は、異なる典型的には非同期のクロック速度で典型的に動作し、従ってデバッグ・コプロセッサはこれらの要素が異なるクロック領域内で通信できるようにした回路を備える必要がある。これらの付加的な機構は、他のメイン回路要素の通常的なオペレーションとの干渉を避けるようにしてデバッグ・コプロセッサ内で絶縁されてもよい。
【0018】
本発明は、他の特徴によれば、データ処理方法を提供するものであって、前記方法は、
メイン・プロセッサに入力される命令ストリーム内のメイン・プロセッサ命令に応答して、メイン・プロセッサ・オペレーションを実行するステップと、
前記命令ストリーム内のコプロセッサ命令に応答し、コプロセッサ・インターフェースを介して前記メイン・プロセッサに接続されたコプロセッサを制御してコプロセッサ・オペレーションを実行するステップとを備え、
前記コプロセッサは、データ処理装置のデバッグのための診断データの発生を少なくとも部分的に制御するように動作可能なデバッグ・コプロセッサであり、前記コプロセッサ命令は、前記デバッグ・コプロセッサのオペレーションを制御するデバッグ・コプロセッサ命令である。
【0019】
以下、添付図面を参照して、本発明を単なる一実施例による概要図により説明する。
【0020】
【発明の実施の形態】
図1は、メイン・プロセッサ4、デバッグ・コプロセッサ(及びシステム・コプロセッサ)6、及び浮動小数点ユニット・コプロセッサ8を含むデータ処理システム2を示す。メイン・プロセッサ4は、コプロセッサ・バスCPの形式にあったコプロセッサ・インターフェースを介してデバッグ・コプロセッサ6及び浮動小数点ユニット・プロセッサ8に接続されている。このコプロセッサ・バスCPの形式は、標準的なコプロセッサ・バス、例えば(英国ケンブリッジのARM有限会社製造のマイクロプロセッサに使用されている)ARMコプロセッサ・バスとほぼ同一である。
【0021】
メイン・プロセッサ4は、データ・バスDBと、プリフェッチ・ユニット(prefetch unit)10を介して命令バスIBとに接続されている。データ・バスDB及び命令バスIBの両者は、ブレークポイント及びウォッチポイントをそれぞれ識別するためにデバッグ・コプロセッサ6により監視されるアドレス部を含む。
【0022】
メイン・プロセッサ4、デバッグ・コプロセッサ6及び浮動小数点ユニット・プロセッサ8は、全てメイン・プロセッサのクロック周波数で共通メイン・プロセッサ・クロック信号clkにより駆動される。スキャン・チェーン・コントローラ12は、更にデバッグ・コプロセッサと共にデバッグ・ロジックの一部を形成する。スキャン・チェーン・コントローラ12は、メイン・プロセッサ・クロック信号clkと典型的に異なる周波数を有するデバッグ・クロック信号tckにより駆動され、かつメイン・プロセッサ・クロック信号clkと非同期である。
【0023】
データ転送レジスタ(data transfer register)DTR及び命令転送レジスタ(instruction transfer register)ITRは、いずれも個別的な直列スキャン・チェーンにより書き込み及び読み出しができるようにスキャン・チェーン・コントローラ12に接続されている。図示していないが、いくつかのモードにおいて、データ転送レジスタDTR及び命令転送レジスタITRの個別的なスキャン・チェーンは、単一のスキャン・チェーンを形成するように互いに連結されてもよい。スキャン・チェーン・コントローラ12は、IEEE1149.1JTAG標準において規定された形式のものである。このシステムは、スキャン・チェーン・コントローラ12がTAPコントローラ・ステート内のRun−Testステートを通るときはいつも、命令転送レジスタITRがその内容を、メイン・プロセッサ4のパイプライン14に伝達されて有効な命令ラインを主張することにより実行される命令として、プリフェッチ・ユニット10に発行するように制御される。プリフェッチ・ユニット10からメイン・プロセッサ4に伝達された命令は、メイン・プロセッサ4それ自身により、又はコプロセッサ・バスCPを介してメイン・プロセッサ4に接続されたデバッグ・コプロセッサ6、浮動小数点ユニット・コプロセッサ8のうちの1つを意図したものにより、実行される命令であってもよい。
【0024】
2つの公開命令HALT及び再起動RESTARTは、以下で更に説明するようにメイン・プロセッサの通常オペレーションを停止させるため、及び再起動させるために通常のJTAG命令に付加された。
【0025】
図2はデバッグ・コプロセッサ6を更に詳細に示す。メイン・プロセッサ4よりもコプロセッサにより実行することを意図したコプロセッサ命令は、コプロセッサ番号オペランド・フィールドを含む。このようにして、コプロセッサ番号に一致したコプロセッサのみがコプロセッサ命令に応答してこれを実行する。この場合に、デバッグ・コプロセッサにはコプロセッサ番号CP14が与えられる。ARMメイン・プロセッサに通常関連されるシステム・コプロセッサには、コプロセッサ番号CP15が与えられ、かつ種々の制御レジスタが含まれる。図2はデバッグ・コプロセッサCP14を示す。
【0026】
デバッグ・コプロセッサ6は、1バンクのウォッチポイント・レジスタ16及び1バンクのブレークポイント・レジスタ18を含む。デバッグ・コプロセッサ6内のウォッチポイント・レジスタ16及びブレークポイント・レジスタ18は、ウォッチポイント及びブレークポイント・アドレスをそれぞれ記憶する。各ウォッチポイント・レジスタ16及びブレークポイント・レジスタ18には、それぞれの制御レジスタ20、22が関連されている。これらの制御レジスタ20、22は、命令バスIB及びデータ・バスDBとそれぞれのブレークポイント及びウォッチポイント値との比較のために適用されるマスク値のような制御データを記憶する。更に、これらの制御レジスタは、ブレークポイント又はウォッチポイントが活性となるのはどの動作モードかを表す値と共に、関連されるブレークポイント又はウォッチポイントをエネーブル又はディセーブル(disable:不能状態)にするフラグを記憶することができる。
【0027】
ウォッチポイント・レジスタ16からのウォッチポイント値は、それぞれのウォッチポイント比較器24によりデータ・バスDB上のデータ・アドレスと比較され、一方、ブレークポイント・レジスタ18からのブレークポイント値は、ブレークポイント比較器26により命令バスIB上の命令アドレスと比較される。ウォッチポイントの一致又はブレークポイントの一致が確認されると、これがウォッチポイント・ヒット信号WPH又はブレークポイント・ヒット信号BPHにより残りの回路に通知される。更に、デバッグ・エネーブル信号DEが発生される。ウォッチポイント・ヒット信号WPH、ブレークポイント・ヒット信号BPHに及びデバッグ・エネーブル信号DEは、デバッグ・コプロセッサ6とメイン・プロセッサ4との間に存在するインターフェースの一部とみなすことができ、メイン・プロセッサ・ステータスを示すため、コアは停止すべきことを示すため、又はコアは再起動すべきことを示すために付加的な信号を含めることもできる。
【0028】
更に、デバッグ・コプロセッサ6は、コプロセッサ・バスCPに接続されたデバッグ・ステータス制御レジスタDSCRを含む。以上で説明したウォッチポイント・レジスタ16、ブレークポイント・レジスタ18、制御レジスタ20、22、デバッグ・ステータス及び制御レジスタ(DSCR)28は、全てARM MCR及びMRC命令のようなコプロセッサ命令により、書き込み及び読み出しが可能とされる。これは、メイン・プロセッサ4に付加的な回路を追加してこれに関連した潜在性によりクリティカル・パスを低速にすることなく、デバッグ・コプロセッサがコプロセッサ・インターフェースを介して構築されるのを可能にする。
【0029】
図3はデータ転送レジスタDTRを更に詳細に示す。特に、データ転送レジスタDTRは、2つのレジスタ30、32から形成される。第1のレジスタ30は、スキャン・チェーン入力tdiを介して書き込み可能であり、かつメイン・プロセッサ4により読み出し可能である。第2のレジスタ32は、スキャン・チェーン出力tdoを介して読み出し可能であり、かつメイン・プロセッサ4により書き込み可能である。第1のレジスタ30及び第2のレジスタ32は、相互に書き込みの競合が発生し得ない双方向通信チャネルを形成している。
【0030】
第2のレジスタ32は、32ビットのデータを記憶し、かつマルチプレクサ34により形成された33番目のビットを有する。マルチプレクサ34は、コントローラ36の制御により、4入力のうちの1つを選択するように動作する。第1の入力は、第2のレジスタ32の主要部からの出力であり、これは、第2のレジスタ32の主要部の内容を直列にスキャン出力するときに選択される。マルチプレクサ34に対する他の3入力は、メイン・プロセッサ・クロック信号clk領域において動作しているシステムの一部と、デバッグ・クロック信号tck領域において動作しているシステムの一部との間でハンドシェーキングを取り扱う。特に、これらの信号は、tdoを介して外部デバッグ回路により読み出せるように調整されて、データ転送レジスタは一杯になる前に外部デバッグ回路に読み出さないようにされ、同様に、データ転送レジスタは正しくロードされるまではメイン・プロセッサ4により読み出さないようにされる。更に、外部デバッグ回路は、更なる試行を行ってデータをデータ転送レジスタDTRにロードする前に、データ転送レジスタDTR内に配置したデータがメイン・プロセッサ4により使用されたか否かを判断するために、33番目のビットを読み出すことができる。同一のことは、メイン・プロセッサ4がデータ転送レジスタDTRにデータをロードしようとするのを、外部デバッグ回路により収集される前に、阻止することについてもいえる。更に、PipeEmpty信号は、メイン・プロセッサ4の命令パイプライン14が空であり、実行されるべき保留中の命令がないことを判断するために、デバッグ・システムによりポーリング可能な33番目ビットとしてマルチプレクサ34により選択されてもよい。
【0031】
動作において、ラインtdi上のデータが直列に第1のレジスタ30にスキャン入力されるに従って、第2のレジスタ32からのデータ・ビットがラインtdoにスキャン出力される。更に、その逆にデータが第2のレジスタ32からラインtdoに直列にスキャン出力されるに従って、ラインtdi上のデータ・ビットが第1のレジスタ30に入力されることにも云える。従って、データが同時的にデータ転送レジスタDTRから再生され、またこれに書き込まれてもよく、これによってデバッグ・オペレーションの速度が増加する。
【0032】
図4はスキャン・チェーン・コントローラ12によりメイン・プロセッサ4に供給されるデバッグ命令の実行を示す。メイン・プロセッサ4はメイン・プロセッサ・クロック信号clkにより駆動され続けると共に、スキャン・チェーン・コントローラはデバッグ・クロック信号tckにより駆動される。ステップ38において、ブレークポイント命令の実行、外部的に供給されるブレークポイント信号、又はブレークポイント若しくはウォッチポイント・トリガの検出のように、デバッグ・トリガが発生する。ステップ40において、デバッグ・トリガは、メイン・プロセッサ4に通常の処理を中断させる。次に、命令パイプライン14は、ステップ44、46から形成されるループにおける1シーケンスのノー・オペレーション命令を実行する前に、ステップ42において、存在する命令を空にする。ステップ46は、スキャン・チェーン・コントローラ12は、(この実施例では、Run−Test/Idleステートを通る結果として)命令転送レジスタITRの内容が命令として命令パイプライン14に発行されるべきことを示しているか否かを調べる。
【0033】
ステップ46を通過する前に、ステップ48において、デバッグ・クロック信号tckの制御により動作しているスキャン・チェーン・システムを含むシステムのデバッグ側は、まず、命令を命令転送レジスタITRへスキャン入力するために使用される。命令がスキャン入力されたときは、ステップ50において、キャン・チェーン・コントローラは、Run/Idleステートを通って遷移し、システムのメイン・プロセッサ側に対して、命令が命令パイプライン14を下って発行されるように命令転送レジスタITRにレディー(ready:実行可能)状態であることを示す。
【0034】
ステップ50が完了したときは、ステップ52が命令を命令転送レジスタITRから命令パイプライン14に伝達するように機能し、ステップ54においてこの命令が実行される。この命令が完了したときは、デバッグ命令完了信号がデバッグ側に返送されので(ステップ56)、デバッグ側は、命令転送レジスタITRに配置された命令が完了したこと、更に所望ならば命令を命令転送レジスタITRに配置できることを知る。ステップ58において、デバッグ側は、デバッグ命令完了信号の発行を認識し、ステップ60において、主張した信号をクリアして、命令転送レジスタITR内に実行されるのを待機している有効な命令が存在することを表示する。ステップ62において、メイン・プロセッサ側は、デバッグ側が信号をクリアしたことを認識し、次いで処理をループ44、46に戻す。ステップ56、58、60、62は、異なるクロック領域内で動作する部分間のハンドシェーキング動作を効果的に実行し、これによって周波数差及び未知の位相関係を適合させる。
【0035】
従って、回路のデバッグ部はデバッグ・クロック信号tckにより動作し、一方、回路のメイン・プロセッサ部はメイン・プロセッサ・クロック信号clkにより動作し、かつノー・オペレーション命令を実行することにより、及びハンドシェーキング処理により、異なるクロック速度に対処する。
【0036】
図5はデバッグ命令の多重実行を示す。ステップ64において、ART STC命令のような命令は、命令転送レジスタITRにスキャン入力される。ステップ66において、データ値はデータ転送レジスタDTRにスキャン入力される。ステップ68において、スキャン・チェーン・コントローラ12は、Run−Test/Idleステートを介して遷移してデバッグ命令発行信号をセットする。メイン・プロセッサ側は、デバッグ命令発行信号のセットを検出し、かつステップ70において、データ転送レジスタDTRからメモリ(メモリ回路は図示なしの)へデータ値を移動させることにより、命令転送レジスタITR(図4を参照すること)に記憶した命令を実行する。この命令が完了したときは、ステップ72において、これをデバッグ側に知らせ、デバッグ側は更なるデータ値をデータ転送レジスタにスキャン入力する。命令転送レジスタITR内に記憶した命令は、外部システムにより変更される必要はなく、従って他の命令の転送に時間が掛からない。次のデータ値が所定位置にあるときは、ステップ74において、スキャン・チェーン・コントローラ12は、Run−Test/Idleステートを介してを遷移して処理を続ける。ステップ68及び70と同一のステップは、ブロック・メモリ転送を効率的に実行するために、多数回実行されてもよい。
【0037】
図6はデバッグ・コプロセッサ6の一部を他の形式により示す。コプロセッサ命令は、バスCPinstrを介してデバッグ・コプロセッサ6に伝達されて命令レジスタ76に記録される。ラッチされた命令は、デコーダ78に伝達され、デコーダ78は更にデバッグ・コプロセッサ6の種々のレジスタ用及び出力マルチプレクサ80用の制御信号を発生する。レジスタの書き込みは、ARM MCR命令に応答して行われ、またレジスタの読み出しは、ARM MCR命令に応答して行われる。レジスタの書き込みを実行すると、適当なレジスタのレジスタ・エネーブル信号が主張される。レジスタの読み出しを実行しているときは、適当なレジスタ出力がエネーブルされ、かつマルチプレクサ80は、この出力を選択するように切り換えられる。
【0038】
レジスタ82は、システム・コプロセッサCP15レジスタであり、このレジスタは、デバッグ中にキャッシュ及びMMUオペレーションを実行するために、外部デバッグ回路により使用可能にされている。デバッグ・ステータス制御レジスタ(DSCR)28は、コプロセッサCP14レジスタR1として取り扱われ、書き込み、及び読み出しが共に可能とされている。命令転送レジスタITRは、図1に示したスキャン・チェーンのみによって書き込みが可能とされる。データ転送レジスタDTRは、書き込み及び読み出しが可能とされる。データ転送レジスタは、コプロセッサCP14レジスタR5として取り扱われる。
【0039】
ブレークポイント・レジスタ18及びウォッチポイント・レジスタ16は、それぞれ1つが示されている。これらは、それぞれの制御レジスタ22、20に関連されている。比較器24、26は、これらのレジスタに関連されて、デバッグ・イベント(debug event)信号DEを発生するために用いられる。
【0040】
図7はスキャン・チェーン・システムの一部を概要的に示す。通常のJTAGオペレーションに従ってTAPコントローラ84が設けられている。外部直列データ及び出力は、ラインtdi及びtdoにより得られる。JTAG命令は、命令レジスタIR86内に登録されてもよい。特定のスキャン・チェーンは、マルチプレクサ90、88に連係して動作するスキャン・チェーン選択レジスタ92を使用して選択されてもよい。2つの部分のデータ転送レジスタ30、32は、相互に単一のスキャン・チェーンを構成している。更に、命令転送レジスタITRと、デバッグ・ステータス及び制御レジスタDSCR28は、個別的にスキャン・チェーンを形成している。更に、読み出し専用のIDCodeスキャン・チェーン及びBypassスキャン・チェーンも設けられている。
【0041】
図8は、データ転送レジスタDTRの一部である第2のwDTRレジスタ32の制御に係わるハンドシェーキングの一部として、スキャン・チェーン・コントローラ12とメイン・プロセッサ4との間で伝達される信号のタイミングを1例により示す。図8において、set term(タームをセット)は、メイン・プロセッサ・クロック信号領域において動作しているメイン・プロセッサ4により制御されており、またclear term(タームをクリア)は、デバッグ・クロック信号領域において動作しているスキャン・チェーン・コントローラ12により制御されている。更に詳細には、set term及びclear termは、これら自身4ステートのステート・マシン(state machine)によりそれぞれ制御されている(異なるそれらのステートは、図8に2ディジットの2進数により表されている)。
【0042】
動作において、メイン・プロセッサ4は、まずwDTRレジスタ32に書き込み、set termをローからハイに遷移させて、wDTRフルを主張させる(ここでは、DTRレジスタの33番目ビットとして、wDTRフル信号をマルチプレクサ34により選択することができる)。wDTRフル・インジケータの特定バージョンは、tck領域のみに存在する。外部デバッグ回路は、DTRレジスタの33番目ビットをポーリングして収集すべきデータが存在することを示すこの遷移について監視する。更に、メイン・プロセッサ4がそのclk領域において使用するためのインジケータも存在する。
【0043】
そこで、デバッグ側は、wDTRレジスタ32を読み出し、これが完了すると、clear termがローからハイへ遷移してset termステート・マシンに対してデータを読み出したことを表示する。clear termにおける遷移は、シンクロナイザを介してset termステート・マシンに伝達され、これがset termをハイからローに遷移させることにより応答して、clear termにおける変化を認識したことをclear termステート・マシンに対して表示する。ハイからローへのset termにおける遷移は、シンクロナイザによりclear termステート・マシンへ逆に伝達され、wDTRレジスタ32を読み出したという情報が肯定応答されたときに、このステート・マシンがclear termをハイからローへ遷移させる。ハイからローへのクリア信号の遷移は、最終的にシンクロナイザにより、clear termステート・マシンからset termステート・マシンへ伝達されて、set termステート・マシンをリセットさせるので、所望のときは他の値をwDTRレジスタ32に書き込めるようにメイン・プロセッサ4に対してシステムがレディーとなる。
【0044】
図3に示すrDTRFullインジケータは、rDTRレジスタ30に関連し、かつtck及びclk信号が交換されると共に、読み出し及び書き込みが交換されると同様に作成されてもよい。
【0045】
図9は、(デバッグRESTART命令に応答して)図4及び図5に示すように動作しているデバッグ・ステートからメイン・プロセッサ4を再起動させるときに、メイン・プロセッサ4とデバッグ・システムとの間で伝達されるハンドシェーキング信号のタイミングを示す。
【0046】
RestartCore信号はtck領域に存在し、DbgInDebug及びCoreInDebug信号はclk領域に存在する。再起動オペレーションにおける第1ステップとして、デバッグ制御ロジックは、CoreRestartedビットを0にセットし、かつRestartCore信号をローからハイに遷移することにより、RESART信号に対して応答する。RestartCoreにおけるこの遷移は、シンクロナイザを介してメイン・プロセッサ4に伝達され、メイン・プロセッサ4はDbgInDebug信号をハイからローへ遷移させることにより応答する。このビットは、続いてシンクロナイザを通ってデバッグ制御ロジックに逆に伝達され、デバッグ制御ロジックではCoreRestarted信号を非主張にする。CoreRestartedビットは、コアが再起動されたことを確認するために外部デバッグ回路によりポーリングされる。RestartCore信号における遷移は、シンクロナイザを介してメイン・プロセッサ4に伝達され、メイン・プロセッサ4はCoreInDebug信号をハイからローに遷移させることにより応答して、メイン・プロセッサ4をデバッグ・ステートから通常ステートに遷移する。
【0047】
図8及び9は、メイン・プロセッサ・クロック信号領域において動作しているメイン・プロセッサ側とデバッグ・クロック信号において動作しているデバッグ側との間で伝達されるハンドシェーキング制御信号の2例を示す。同様にして、更なる制御信号間のハンドシェーキングを取り扱うことができる。
【0048】
以上で説明したデバッグ機構の更に詳細な図は、概要的にARM10マイクロプロセッサ及びARMマイクロプロセッサのアーキテクチャーに関係する以下のマイクロアーキテクチャー仕様により提供される。
【0049】
1.0 基本目的
1)多数の実施を通して展開するARMプロセッサに対して将来の証明デバッグ・インターフェースを提供する、
2)JTAGハードウェア及び対象に基づくソフトウェアからハードウェアデバッグ設備へのアクセスを提供する。
【0050】
2.0 背景
ARM10内のデバッグ・ロジックは、イン・サーキット・エミュレータに見られるものと同様の機能をサポートする能力、即ちブレークポイント及びウォッチポイントを設定する能力をユーザに提供して、プロセッサ及びシステム・ステートを点検して変更し、かつ関係するポイント周辺のプロセッサ活動のトレースを調べる。通常、ホスト・コンピュータ上のソフトウェアは、デバッガに対するインターフェースとして機能して、オン・チップ・ロジックが要求する特定のプロトコルからエンド・ユーザを完全に取り除く。
【0051】
ARM10は、ARM7及びARM9により提供されるデバッグ・インターフェースをクリーン・アップするための機会である。即ち、未使用の機能を削除し、かつ新しい機能を付加することである。ARM10のパイプラインの複雑性のために、命令をパイプラインに詰め込むARM7及びARM9の方法は、2つの損失がある。即ち、ICEmanソフトウェアをより複雑化し、またARM10が避けなければならないハードウェア・クリティカル・パスの包含がある。
【0052】
ARM10にマスク・レジスタ、チェーン又はレンジ機能は存在しない。データに依存するウォッチポイントやブレークポイントも存在しない。しかしながら、ARM10は、ブレークポイント命令を実施して、ごく一般的な使用をデータ依存性に置き換え、これが命令ストリームにおけるブレークポイントに対するユーザ指定命令を認識させる。われわれはより実際的なブレークポイント・レジスタを利用することによりマスク・レジスタを削除した。
【0053】
3.0 ARM10デバッグの使用
ARM10についてのデバッグ及び将来マシン(以下単にARM10デバッグと呼ぶ)は、コプロセッサ14(CP14)周辺に集められている。対象について実行されるソフトウェア、即ちデバッグ・モニタ、又はオペレーティング・システム・デバッグ(以下デバッグ・タスクと呼ぶ)は、単にCP14レジスタに書き込むことによりデバッグ・ハードウェア機能をアクセスすることができる。レジスタ・ブレークポイントは、例外を発生させることができ、対象ハンドラーがレジスタ・ブレークポイントをヒットしたときに制御権を取獲得できるようにする。デバッグ機能は、対象上のソフトウェア及びJTAGポートの両者を通ってアクセスされる。JTAGプログラミングは、1度に1プロセッサ命令を供給することにより実行され、オプションによりデータ・バーストが続く。しかし、デバッグ・ステップに入る、抜け出す及び実行するためのインターフェースは、はるかに明確かつより正確に定義される。
【0054】
3.1コプロセッサ14
3.1.1 CP14インターフェース
コプロセッサ・インターフェースは、ARMコアとデバッガとの間の共通機構として動作し、CP14及びCP15の両者のアクセスは、このブロックにより処理される。このコプロセッサ・インターフェースは、VFPコプロセッサ・インターフェースと同様であるが、しかし少数の制御信号及び狭帯域バスを有する。このインターフェースは、次の信号を含む。
入力: 説明:
ASTOPCPE 実行中のARMストール(stall)を表示
ASTOPCPD デコード中のARMストールを表示
ACANCELCP CPでの命令を取り消す
AFULSHCP コプロセッサ・パイプラインをフラッシュ
LDCMCRDATA ARMコアからの入力データを含むバス
CPINSTR[31:0] ARMからコプロセッサへの命令
CPSUPER コプロセッサ・スーパバイザ・モード
CPLSLEN LSUに対する長さインジケータ
CPLSSWAP LSUに対するインジケータを入れ換え
CPINSTRV CPに対する有効命令を表示する
CPRST コプロセッサのリセット
CPCLK コプロセッサ・クロック
出力:
CPBUSYD デコードにおけるビジー待機
CPBUSYE 実行中のビジー待機
CP15SERIALIZE コアにデコードにおける命令を強制的にホールドCPBOUNCEE CPは命令を拒否
STCMRCDATA バスはARMコアに対しての出力データを含む
【0055】
3.1.2CP14レジスタ/マップ
全てのデバッグ・ステートはレジスタとしてCP14にマッピングされる。3CP14レジスタ(R0、R1、R5)は、特権モードにおいてデバッグ・タスクによりアクセス可能とされ、また4レジスタ(R0、R1、R4、R5)は、スキャン・チェーンとしてアクセス可能である。残りのレジスタは、特権モードでのみデバッグ・タスクからアクセス可能である。空間は16ブレークポイント及び16ウォッチポイントまで確保されている。特定の実施計画を2から16までの任意の数で実施することができる。ARM10のときは、6命令側ブレークポイント及び2データ側ウォッチポイントが存在する。
【0056】
ブレークポイント・レジスタは、特権モードにおいてリセットから起動し、ディセーブルされる。Debug ID Register(R0)は読み出し専用であることに注意すべきである。更に、ブレークポイント及びウォッチポイント・レジスタにおける一致ビットは、プログラマが適当なビットをセットすることにより1フィールド(例えば、サイズ、スーパバイザ/ユーザ)を指定できるようにする符号化を含むことも認識すべきである。ユーザは、一致についてフィールドが考慮されていないときは、ビットを全て1にセットする必要がある。
【0057】
デバッギングのディセーブルには、2つの方法がある。DSCRにおけるGlobal Enableビットは、ソフトウェアを介して全てデバッグ機能をエネーブル又はディセーブルするために使用される。このビットは、リセットによりクリアされ、これは、全てのデバッグ機能がディセーブルされることを意味する。全ての外部デバッグ要求はコアにより無視され、またBKPT命令はノー・オペレーションとして処理される。このモードの目的は、オペレーティング・システムがタスク・スイッチング・シーケンスの一部として個々のタスクについてのデバッグ処理を速やかにエネーブル及びディセーブル可能にすることである。加えて、DBGENピンは、ARM10のデバッグ機能をディセーブル可能にする。デバッグ処理を必要としないときにのみ、この信号をLOWに接続する必要がある。
【0058】
多数のレジスタをサポートするために、CRm及びopcode2フィールドは、デバッグ・レジスタ番号を符号化するために使用される。ただし、このレジスタ番号は、{opcode2,CRm}である。
【0059】
R0:Rebug ID Register
DDIR[31:24] CP15 R0のような設計者コード
DDIR[23:20] ゼロ
DDIR[19:16] デバッグ・アーキテクチャーのバージョン、ARM10=0b000
DDIR[15:12] 実施したレジスタ・ブレークポイント数
DDIR[11:18] 実施したウォッチポイント数
DDIR[7:4] ゼロ
DDIR[3:0] 改訂番号
【0060】
このビットは、wDTRバッファがデータの書き込みに対してレディーのときにセットされる。ゼロは、デバッガによりデータが未だ読み出されていないことを示す。
DSCR[7] rDTRバッファ・フル−読み出し専用
このビットは、通常、JTAGデバッガがこのバッファにデータを書き込んだ結果としてコア用のrDTRに読み出すデータが存在するときに、セットされる。ゼロはバッファ内に読み出すデータがないことを示す。
DSCR[15:8] 予備
DSCR[16] ベクトル・トラップ・エネーブル(Vector Trap Enable)−リセット
nTRST=0又はTAPコントローラがリセット状態のときはリセットされる。
DSCR[17] ベクトル・トラップ・エネーブル−未定義命令
nTRST=0又はTAPコントローラがリセット状態のときはリセットされる。
DSCR[18] ベクトル・トラップ・エネーブル−SWI
nTRST=0又はTAPコントローラがリセット状態のときはリセットされる。
DSCR[19] ベクトル・トラップ・エネーブル−フェッチ中断(abort)
nTRST=0又はTAPコントローラがリセット状態のときはリセットされる。
DSCR[20] ベクトル・トラップ・エネーブル−データ中断
nTRST=0又はTAPコントローラがリセット状態のときはリセットされる。
DSCR[21] 予備
DSCR[22] ベクトル・トラップ・エネーブル−IRQ
nTRST=0又はTAPコントローラがリセット状態のときはリセットされる。
DSCR[23] ベクトル・トラップ・エネーブル−FIQ
nTRST=0又はTAPコントローラがリセット状態のときはリセットされる。
DSCR[30:24] 予備
DSCR[31] グローバル・デバッグ・エネーブル(Global Debug Enable)−システム・リセットによりリセットされる
0=全てのデバッグ処理機能(ブレークポイント、ウォッチポイント等)をディセーブルする。
1=全てのデバッグ処理機能をエネーブルする。
注意:ベクトル捕捉はブレークポイントよりも高い優先順位を有する。
【0061】
R2−R4:予備
R5:データ転送レジスタ(Data Transfer Register)
DTR[31:0] データ
(注意:DTRは、物理的に個別的な2レジスタ、即ちrDTR(読み出し)及びwDTR(書き込み)からなる。これらの使用の説明については3.2.7及び3.2.10を参照すべきである。)
R6−R63:予備
R64−R79:レジスタ・ブレークポイント(Register Breakpoint)値
【0062】
BV[31:0] レジスタ・ブレークポイント値
R80−R96:レジスタ・ブレークポイント制御レジスタ(Register Breakpoint Control Registers)
BCR[0] システム・リセットによるクリアをエネーブル
0=レジスタをディセーブル
1=レジスタをエネーブル
BCR[2:1] スーパバイザ(Trans) アクセス
00−予備
10−特権付き
01−ユーザ
11−不定
BCR[4:3] サム(Thumb)モード
00−予備
10−ARM命令
01−サム命令
11−不定
R96−R111 ウォッチポイント値
WV[31:0] ウォッチポイント値
R112−R127:ウォッチポイント制御レジスタ
WCR[0] エネーブル
0=レジスタをディセーブル(システム・リセットによりクリア)
1=レジスタをエネーブル
WCR[2:1] スーパバイザ(Trans)
00−予備
10−特権付き
01−ユーザ
11−不定
WCR[4:3] ロード/ストア/不定
00−予備
10−ロード
01−ストア(Store)
11−不定
WCR[7:5] バイト/ハーフワード/ワード/不定サイズ
000−予備
001−バイト
010−ハーフワード
011−バイト又はハーフワード
100−ワード
101−ワード又はバイト
110−ワード又はハーフワード
111−任意のサイズ
WCR[8] 予備
WCR[10:9] Addr[1:0]へのアドレス・マスク
0=比較にビットを含む
1=比較にビットを除外
WCR[11] 予備
【0063】
3.1.3 CP14命令
下記はARM10におけるCP14用の適正命令専用である。LDC及びSTC命令は、DTRレジスタに対してのみ有効である。他の全ての命令は、拒絶(bounce)される。
【0064】
【表1】
【0065】
3.2 デバッグに対するハードウェア・インターフェース
3.2.1 ホールト(Halt)・モードへの進行及び抜け出し
ホールト・モードは、DSCRの1〜30ビットを書き込むことによりエネーブルされ、JTAGデバッガによってのみ実行可能にされる。このモードがエネーブルにされた場合に、下記の事象のうちの1つが発生したときは、プロセッサはホールトになる(ソフトウェアにおいて例外となることに対比される)。
a)EDBGRQを主張
b)JTAGインターフェースを介してHALT命令をスキャン入力した。TAPコントローラは、コアにHALTコマンドを発行するためにRun/Idleを伝達する必要がある。
c)例外が発生し、かつ対応するベクトル・トラップ・エネーブル・ビットをセット
d)レジスタ・ブレークポイントをヒット
e)ウォッチポイントをヒット
f)BKPT命令がARMパイプラインの実行段に到達
【0066】
デバッグ・ステートに入ると、DSCRにおけるコア・ホールト(Core Halted)ビットがセットされる。デバッガは、推定により、このビットがハイになるまで、Capture−DR及びShift−DRを通過することによりDSCRをポーリングする。この時点において、デバッガは、なぜコアはホールトしたのかを判断し、かつマシン・ステートを保存する。MSR命令はモードを変更し、マシンに全てバンク済みのレジスタに対するアクセスを獲得をするために使用されてもよい。デバッグ・ステートにある間は、PCは増加されず、外部割り込みは無視され、かつ全ての命令は、命令転送レジスタ(Instruction Transfer Register)から読み出される(スキャン・チェーン4)。
【0067】
デバッグ・ステートからの抜け出しは、再起動(RESTART)命令においてJTAGインターフェースを介してスキャン入力することにより、実行される。デバッガは、再起動する前にコアがデバッグ・ステートに入る方法に従ってPCを調整する。下記の表は、コアが各場合についてホールトする時点でPCの値を表示する。
【0068】
【表2】
【0069】
ステート・マシンがRun−Test/Idleステートに入ると、通常の動作が再開する。ステート・マシンがRun−Test/Idleとなるまで待機する遅延は、マイクロプロセッサ・システムにおける他の装置に、直接影響することなく、条件を設定可能にする。全てのプロセッサは、Run−Test/Idleステートに入ると、一斉にオペレーションを再開する。RESTARTシーケンスを完了すると、コア再起動(Core Restarted)ビットがセットされる。
【0070】
コアは、RESTARTコマンドを発行する前に、「命令完了」(Instruction Complete)ビット(wDTR[0])をポーリングして最後の命令を何らの問題(可能とする中断など)なしに完了したことを確認する必要があることに注意すべきである。デバッガは、コアにRESTART命令を発行した後に、何か他のことを実行する前は、ポーリングして実際に再起動したことを調べる必要がある。デバッグ・ロジックにはシンクロナイザ及びハンドシェク・ラインが存在し、デバッグ・ロジックはこれらのハンドシェーキング・ラインをクリアできるようにクロック(特に、TCK)を備えている必要がある。デバッグ・ロジックがDbdRestartラインをクリアする機会が来る前に、クロックをターン・オフすれば、コアはデバッグ・ステートにとどまって再度起動しない。コア再起動ビットを読み出す操作は、必要なラインをクリアするのに十分なクロックを供給する。
【0071】
3.2.2 JTAGポート及びテスト・データ・レジスタ
ロジックのJTAG部は、IEEE1149.1インターフェースを実施し、かつ装置IDレジスタ、バイパス・レジスタ、及び4ビットの命令レジスタをサポートする。加えて、下記の公開命令がサポートされる。
【0072】
【表3】
【0073】
デバッグ・レジスタに対するアクセスは、ソフトウェア(MCR命令による)又はJTAGポートを通して得られる。ハードウェア・デバッグ機構は、基本的に、ARM7/ARM9と同様であるが、しかしARM10デバッグは全てのクロッキングを隠し、かつデバッガからパイプラインの深さを発行する。
【0074】
JTAG(R1、R5)を介してアクセス可能なCP14内のレジスタは、EXTEST命令を使用して書き込まれる。レジスタR0、R1及びR5は、INTEST又はEXTEST命令により読み出される。これは、INST命令のみが使用され、かつチェーンにおけるr/wビットが実行されるべきオペレーションを決定した点でARM9と異なる。
【0075】
3.2.2.1 バイパス・レジスタ
目的:TDIとTDOとの間にパスを設けることによりスキャン・テスト中の装置をバイパスする。
長さ:1ビット
動作モード:バイパス命令が命令レジスタにおける現在命令であるときは、直列データがShift−DRステートにおける1TCKサイクルの遅延により、TDIからTDOへ転送される。バイパス・レジスタからの並列出力は存在しない。ロジック0は、Caputure−DR(DRの捕捉)ステートにおいてバイパス・レジスタの並列入力からロードされる。
順序:TDI−[0]−TD0
【0076】
3.2.2.2 装置ID Code レジスタ
目的:ARM7T及びARM9TからARM10を識別するために、TAPコントローラIDが固有なので、Multi−ICEがどのプロセッサに接続されているのかを容易に調べることができる。このIDレジスタは、チップの縁に経路設定されるので、相手側はピンをハイ値又はロー値へ接続することにより、これら自身のID番号を作成することができる。ARM10200用の総称IDは、初期的には、0x01020F0Fとなる。全ての相手側−特定装置は、下記形式のID番号により識別される。
バージョン 部品番号 製造者ID
LSB
[31:28] [27:12] [11:1] 1
【0077】
長さ:32ビット
動作モード:IDCODE命令が現在値であるときは、TDI及びTDOとの間の直列パスとして、IDレジスタが選択される。IDレジスタからの並列出力は存在しない。32ビットのIDコードは、Capture−DRステート中に並列入力からレジスタにロードされる。
順序:TDI−[31][30]...[1][0]−TD0
【0078】
3.2.2.3 命令レジスタ
目的:現在のTAP命令を変更する
長さ:4ビット
動作モード:Shift−DRステートのときは、命令レジスタがTDIとTDOとの間に直列パスとして選択される。Capture−DRステートでは、0001二進値がこのレジスタにロードされる。これは、Shift−I中に(最下位ビットが最初に)シフト出力され、一方新しい命令が(最下位ビットが最初に)スキャン入力される。Update−IRステートでは、命令レジスタ内の値が現在命令となる。リセットにより、IDCODEが現在命令となる。
順序:TDI−[3][2][1][0]−TD0
【0079】
3.2.2.4 スキャン・チェーン選択(Scan Chain Select)レジスタ
目的:現在の活性スキャン・チェーンを変更する。
長さ:5ビット
動作モード:現在命令としてSCAN Nを選択した後、Shift−DRステートのときは、TDIとTDOとの間の直列パスとしてスキャン・チェーン選択レジスタが選択される。Capture−DRステートでは、10000二進値がこのレジスタにロードされる。Shift−DRでは、これが(最下位ビットが最初に)シフト出力され、同時に、(最下位ビットを最初にして)新しい値がシフト入力される。Update−DRステートでは、レジスタ内の値は、レジスタにおける値がスキャン・チェーンを選択して現在活性のスキャン・チェーンになる。INTESTのような更なる全ての命令は、このスキャン・チェーンに適用される。現在の選択されたスキャン・チェーンは、SCAN N命令が実行されたとき、又はリセットが発生したときにのみ、変更される。リセットにより、スキャン・チェーン3が活性なスキャン・チェーンとして選択される。現在の選択されたスキャン・チェーン数は、SCREG[4:0]出力バスに反映される。TAPコントローラは、ARM1020マイクロセル内のものに加えて、外部スキャン・チェーンを駆動するために使用されてもよい。外部スキャン・チェーンは、これに対して番号及び制御信号が割り付けられる必要があり、SCREG[4:0]、IR[3:0]、TAPSM[3:0]、及びTCKから導き出されてもよい。
順序:TDI−[4][3][2][1][0]−TD0
【0080】
3.2.2.5 Scan Chain 0
目的:デバッグ。
長さ:32ビット
このScan Chainは、CP14 Register 0、DebugID Registerである。
順序:TDI−[31][30]...[1][0]−TD0
【0081】
3.2.2.6 Scan Chain 1
目的:デバッグ。
長さ:32ビット
このScan Chainは、CP14 Register 1、DSCRである。DSCR[15:0]のみが読み出されることに注意すべきである。下記のビットは、Chain 1に対して定義される。
DSC[0] Core Halted−読み出し専用
DSC[1] Core Restarted−読み出し専用
DSC[4:2] デバッグ・エントリ方法−読み出し専用
000 JTAG HALT命令が発生
001 レジスタ・ブレークポイントが発生
010 ウォッチポイントが発生
011 BKPT命令が発生
100 外部デバッグ要求が発生
101 ベクトル捕捉が発生
110,111 予備
DSCR[5] 過去にしばしば破棄が発生−MCRによってのみ書き込み可能
MCR このビットは容易ではない。これはMCRによりMSCRにクリアされ、ここで、このビットは0である。
nTRST=0のとき、又はTAPコントローラがリセット・ステートときはリセット
DSCR[6] wDTRバッファが空−読み出し専用
このビットは、wDTRバッファが空であり、コアが更にデータが書き込めることを意味するコアのインジケータである。これは、JTAGデバッガがEXTESTによりCaptureDRを通ることによりDTRをポーリングするのか否かを調べる反転ビットである。JTAG信号とコア信号との間のタイミングは異なっているので、デバッガは、このビットを使用してwDTRが空であるか又はフルであるかを判断してはならない。
DSCR[7] rDTRバッファ・フル−読み出し専用
このビットは、rDTRバッファがフルであり、デバッガがこれにデータが書き込んだことを意味するコアのインジケータである。これは、JTAGデバッガがINTESTによりCaptureDRを通ることにより、DTRをポーリングするのか否かを調べる反転ビットである。JTAG信号とコア信号との間のタイミングは異なっているので、デバッガはこのビットを使用してwDTRが空であるか又はフルであるかを判断してはならない。
DSCR[15:8] 予備
DSCR[16] ベクトル・トラップ・エネーブル−リセット−読み出し専用
nTRST=0のときはリセット、TAPコントローラがリセット・ステートのときは、リセット
DSCR[17] ベクトル・トラップ・エネーブル−未定義命令−読み出し専用
nTRST=0のときはリセット、TAPコントローラがリセット・ステートのときは、リセット
DSCR[18] ベクトル・トラップ・エネーブル−SWI−読み出し専用nTRST=0又はTAPコントローラがリセット・ステートのときは、リセット
DSCR[19] ベクトル・トラップ・エネーブル−プリフェッチ中断(Prefetch Abort)−読み出し専用
nTRST=0又はTAPコントローラがリセット・ステートのときは、リセット
DSCR[20] ベクトル・トラップ・エネーブル−データ中断−読み出し専用
nTRST=0又はTAPコントローラがリセット・ステートのときは、リセット
DSCR[21] ベクトル・トラップ・エネーブル−予備
DSCR[22] ベクトル・トラップ・エネーブル−IRQ−読み出し専用
nTRST=0又はTAPコントローラがリセット・ステートのときは、リセット
DSCR[23] ベクトル・トラップ・エネーブル−FIQ−読み出し専用
nTRST=0又はTAPコントローラがリセット・ステートのときは、リセット
DSCR[26:24] 予備
DSCR[27] Commsチャネル・モード
0=Commsチャネル不作動
1=Commsチャネル作動
nTRST=0又はTAPコントローラがリセット・ステートのときは、リセット
DSCR[28] サム・モード・インジケータ(5.0項を参照のこと)
DSCR[29] ITR選択において命令を実行
0=ディセーブル
1=JTAG状態マシンがRun−Test/Idleを通過するときは、ITRにおける命令をプリフェッチ・ユニットに送出
nTRST=0のとき、又は、TAPコントローラがリセット・ステートのときは、セット
DSCR[30] Halt/Monitor(ホールト/モニタ)モード選択
0=モニタ・モードをエネーブ
1=ホールト・モードをエネーブル
nTRST=0又はTAPコントローラがリセット・ステートのときは、リセット
DSCR[31] グローバル・デバッグ・エネーブル(Global Debug Enable)−システム・リセットによりクリア
0=全てのデバッグ処理機能(ブレークポイント、ウォッチポイント等)をディセーブルにする。
1=全てのデバッグ処理機能をエネーブルにする。
nRESET=0のときは、リセット(コアのリセット・ライン)
これらのビットがコア用で、デバッガ用でないDSCRを反映しているので、通信チャネル・ビット、rDTRフル及びwDTR空は、デバッガから見えるものの反転であることに注意すべきである。
順序:TDI−[31][30]...[1][0]−TD0
【0082】
3.2.2.7 Scan Chain 2
目的:デバッグ
長さ:65ビット
このスキャン・チェーンは、CP14レジスタ4及び5の組み合わせである。レジスタ4内の命令完了(Instruction Complete)ビットは、このチェーンに含まれないことに注意すべきである。これは、チェーン4にのみ現れる。
順序:TDI−Reg4[32]Reg4[31]...Reg4[1]Reg5[32]Reg5[31]...Reg5[0]−TD0
【0083】
1.2.2.8 Scan Chain 3
目的:外部境界スキャン・テストに使用できる。装置間テスト(inter−device testing :EXTEST)及びコアのテスト(INTEST)に使用される。
長さ:不定
【0084】
3.2.2.9 Scan Chain 4
目的:デバッグ
長さ:33ビット
このスキャン・チェーンは、命令転送レジスタであり、かつフェッチ・ユニットを介してコアに命令を送出するために使用される。このチェーンは、32ビットの情報+付加的なビットからなり、コアに送出された命令の完了を示す。
順序:TDI−[32][31][30]...[1][0]−TD0
【0085】
3.2.2.10 Scan Chain 5
目的:デバッグ
長さ:33ビット
このスキャン・チェーンは、CP14 Register 5、データ転送レジスタである。このレジスタは、物理的に2つの個別的なレジスタ、即ち読み出し専用レジスタDTR(rDTR)及び書き込み専用レジスタDTR(wDTR)からなる。このレジスタは、ソフトウェアによる双方向通信チャネルの作成を容易にするように分離されている。rDTRは、JTAGポートを介してのみロード可能とされ、かつMRC命令を介してコアによってのみ読み出し可能とされる。wDTRは、MRC命令を介してコアによってのみロード可能とされ、まだJTAGポートを介してのみ読み出し可能とされる。TAPコントローラの能力から、1レジスタ(Chain 5)のみを認識するが、しかしどの命令を使用するのか(INTEST又はEXTEST)に従って適当なレジスタが選択される。
【0086】
wDTRチェーンそれ自体は、32ビットの情報+通信チャネルに関する1付加ビットからなる。ビット0の定義は、現在のJTAG命令がINTESTであるか、又はEXTESTであるかに従う。現在の命令がEXTESTであれば、デバッガはrDTRに書き込むことができ、またビット0は、キューにまだ有効なデータがあるか否かを表示している。このビットがクリアされていれば、デバッガは新しいデータを書き込むことができる。コアがDTRの読み出しを実行するときは、ビット0が自動的にクリアされる。逆に、JTAG命令がINTESTであれば、ビット0は、wDTRに読み出す現在有効なデータが存在するか否かを表示している。ビットがセットされていれば、JTAGは、wDTRの内容を読み出す必要があり、続いてこのビットをクリアする。次いで、このコアは、ビット0をサンプリングすることができ、このビットが再びクリアされると新しいデータを書き込むことができる。rDTRチェーンは、32ビットの情報+通信チャネルに関する1付加ビットを含む。
順序:TDI−rDTR[32]rDTR[31]...rDTR[1]rDTR[0]
wDTR[32]wDTR[31]...wDTR[1]wDTR[0]−TDO
【0087】
3.2.2.11スキャン・チェーン6−15
予備
【0088】
3.2.2.12スキャン・チェーン16−31
割り付けなし
【0089】
3.2.3 コアに対する命令の送出
CP14内の2レジスタは、ARM10プロセッサ、命令転送レジスタ(ITR)及びデータ転送レジスタ(DTR)と通信するために使用される。ITRは、命令をプロセッサ・パイプラインに詰め込むために使用される。デバッグ状態では、プロセッサの殆どの時間は、ITRがレディーになるまで、無効命令を効果的に実行することに費やされる。ハードウェア・デバッグ状態では、PCは命令を実行するに従って増加しないが、それでも分岐はPCを変化させることになる。
【0090】
DSCR[29]は自動実行機能(autoexcute function)を制御する。このビットがセットされると、各JTAG TAPコントローラは、Run/Idleステートに入り、ITRに現在存在する命令は、コアによる実行のためにプリフェッチ・ユニットに送出される。このビットがクリアされているときは、命令はプリフェッチ・ユニットに送出されない。JTAG IRレジスタ内の命令は、INTEST又はEXTESTでなければならない。
【0091】
自動実行機能は、データの速いアップロード及びダウンロードを可能にさせる。例えば、ダウンロードシーケンスは、下記のいかなるものでもよい。まず、ScanNRegにスキャン・チェーン2、スキャン・チェーン4及び5の組み合わせを選択し、次いで、書き込みのためにJTAG命令をEXTESTにセットする。コア書き込み命令(STC)及び関連するデータをITR及びDTRにそれぞれ直列にスキャン入力する。TAPコントローラがRun−Test/Idleステートを通過すると、ITR内の命令をコアに発行する。次に、スキャン・チェーンをDTRのみ(チェーン5)に切り換え、Capture−DRステート、次いでShift−DRステートとなることにより、ポーリングする。このステータス・ビットが命令の完了を示すまで、このチェーンにおける最下位ビット、即ちビットwDTR[0]を調べる。更に多くのデータをDTRにロードして、命令をRun−Test/Idleを通過することにより再実行することができる。ここで、更に、我々は、アドレスが自動的に更新されるように、STC命令が基本アドレス書き戻しを指定するものと仮定する。
【0092】
アップロードのパフォーマンスを増加させるためには、同じような機構を使用することができる。第1に、JTAG命令をEXTESTに変更する。チェーン2を使用して、LDCのような読み出す命令をITRにスキャン入力することができる。次に、読み込みのためにJTAG命令をINTESTに切り換える。そこで、スキャン・チェーンをDTRに切り換えて命令が完了するまでポーリングすることができる。Run−Test/Idleステートを通ってShift−DR(ポーリングのため)となる過程で、コアに対してITRを発行する。以下、最後のワードを読み出すまで、この処理を繰り返す。
【0093】
Run−Test/Idleを通って命令を実行したことにより、JTAGクロックの周波数に接近した周波数にあるコア・クロックを動作させる問題に取り組む。コアに命令を発行し、かつデータが捕捉できないときは、エミュレータは、データが得られるまで、ステート・マシン・ループを単に周りポーリングをする。そのようになると、ステート・マシン・ループをもう一回巡回し、データを捕捉し、次いでこれをスキャン出力させることができる。内側ループにおいて自動実行機構を他のステートに設定すると、他の命令を発送するのを早過ぎるものにし、多分、他のデータを重ね書きするのを強いる。Run−Test/Idleは内側ループ外に留まり、1ステート遷移のみとなり、通過することに殆ど不都合はない。プロセッサ・クロックがJTAGクロックよりもかなり速いシステムでは、通常、TAPコントローラがRun−Test/IdleからCapture−DRとなる十分前に、データを得られるので、内側ループを1回通ってデータを捕捉し、次いでスキャン出力する。
【0094】
CP14は、ARM9が行うと同様にバスを監視しないので、コアのレジスタ・ファイルの内容を読み出すには、LDM/STM命令を使用する代わりに、ARMレジスタからCP14レジスタ5に個別的な移動を必要とすることに注意すべきである。そこで、情報をDTRからスキャン出力することができる。
【0095】
バイト及びハーフワードの転送は、プロセッサにアドレス及びデータの両方を転送し、次に適当なARM命令を実行することにより、実行される。
【0096】
コプロセッサへ及びからの転送は、ARMレジスタを介してデータを移動することにより実行可能とされる。これは、全てのARM10コプロセッサがMRC及びMCRを介してアクセス可能な全てのデータを有する必要があるということを意味する(そうでないときは、書き込み可能なメモリにおけるデータ・バッファを使用する必要がある)。
【0097】
3.2.4 ブレークポイント・レジスタ及びウォッチポイント・レジスタの読み出し及び書き込み
ハードウェア・ブレークポイント及びウォッチポイントは、データをARMレジスタに転送し、次いでデータを適当なブレークポイント・レジスタ又はウォッチポイント・レジスタに移動させることにより、書き込まれる。たとえばブレークポイントレジスタR64へのロードを考える。
ITRにスキャン入力:MRC p14,0,Rd,c0,c3,0
DTRにスキャン入力:ブレークポイント/レジスタR64にデータをロード
データコマンドを実行
ITRにスキャン入力:MRC p14,0,Rd,c0,c0,4
【0098】
以上の例では、最初のMRC命令はデータをDTRレジスタ(CP14内のR5)からARM内の他のレジスタに移動する。このデータが移動されると、MCR命令はデータをARMレジスタからブレークポイント・レジスタ(CP14内のR64)に転送する。
【0099】
ブレークポイント・レジスタを読み出すために逆の処理を使用することができる。ブレークポイント・レジスタ及びウォッチポイント・レジスタは、実施コストを最小化するためにスキャン・チェーンから直接アクセス不可能である。
【0100】
プリフェッチ・ユニットことにより発行された命令アドレスは、常時、ビット0が0にセットされている。サム・モードにおいて、ビット1はアドレスの奇数ワードのアドレスを表している。一方、ARMモードにおいて、ビット1は常時、0にセットされている。ブレークポイント・レジスタは、サム・モードにおいてブレークポイント及びウォッチポイントに対する比較のために、全32ビット・フィールドを有するが、ユーザは、このレジスタに絶対に一致しない値、例えばビット0を1とした値にセットしないように注意すべきである。
【0101】
ブレークポイント及びウォッチポイント制御レジスタ内のビットは、自明である必要がある。
【0102】
3.2.5 ソフトウェア・ロックアウト機能
JTAGデバッガが評価ボード又はテスト・システムに取り付けられているときは、その存在は、DSCR内のホールト/モニタ・モード(Halt/Monitor Mode)をセットすることにより表示される。この場合に、ホールト・モードである間は、デバッガによりブレークポイント・レジスタ及びウォッチポイント・レジスタを書き込み及び読み出すことができる。ブレークポイント・レジスタ及びウォッチポイント・レジスタが構築されてしまうと、デバッガが制御権を保持しているので、ホールト/モニタ・モードのビットがハイのままであれば、ソフトウェアによりプロセッサ側からこれらレジスタを変更することはできない。しかしながら、コアは、依然として通信チャネル・レジスタに書き込み可能である。
【0103】
3.2.6 外部信号
デバッグに関連した1外部信号EDBGRQが存在し、これによって、システムはARM1020にデバッグ・ステートに入るように要求する。外部ロジックは、このラインを使用してマルチプロセッサ・システムにおけるARM1020をホールトするように、又は起動時に直接、プロセッサをデバッグ・ステートに強制設定するように要求してもよい。
【0104】
3.2.7 ステートのセーブ及びリストア
デバッグ処理の前に、エミュレータは、制御のセッティング、レジスタ値、又はエミュレーションの過程で変更される恐れのある他のステートをセーブする必要がある。このため、デバッグを抜け出す前に、これらの元のステートに全ての条件をリストアするように考慮する必要がある。デバッグ・エントリ後に読み出されるPC値は、全ての場合でPC+0X8となる。即ち、ベクトルは、BKPT命令、レジスタ・ブレークポイント、JTAGからのHALT命令等を捕捉する。
【0105】
DTRは2レジスタに分割されたので、rDTR及びwDTRステート情報をセーブすることが必要がある。セーブ及びリストア・シーケンスは下記のように見える。
(ハードウェアはJTAGを通ってHALT命令を実行する。)
コアをホールトした(Core Halted)が主張されるまで、ポーリングする
主張されれば、wDTRを捕捉してスキャン出力する
JTAG IRをEXTESTへ変更及びジャンク(junk)をwprDTRへスキャン入力−これはrDTRステータス・ビットを強制的に出力させる。
(他のレジスタをセーブする)
.
.
.
(デバッグ処理を終了)
古いCPSRをrDTRにスキャン入力
MRCによりITRをロードし、MRCはrDTRをR0に転送して実行
MSRによりITRをロードし、MRCはR0をCPSRに転送
古いPCをrDTRにスキャン入力
MRCによりITRをロードし、MRCはrDTRをR0に転送して実行
MOVによりITRをロードし、MOVはR0をPCに転送
古いR0をrDTRにスキャン入力
MRCによりITRをロードし、MRCはrDTRをR0に転送
(レジスタをリストア)
セーブしたrDTRステータス・ビットがレジスタがフルであったことを示しているときは、古いrDTR情報をrDTRにスキャン入力
RESTARTコマンドを発行
Core Restartedが主張されるまでポーリング
【0106】
3.3 デバッグに対するソフトウェアインタフェース
モニタ・モードは、レジスタのブレークポイント、これらのブレークポイントに対する応答、及び更にコアをホールトを構築するように使用されるこれらのARMオペレーションを説明する。モニタ・モードは、情報を収集するためにコアをホールトできないときにリアル・タイム・システムにおいても有用である。例には、エンジン制御、及び部品を物理的に損傷することなくコードを停止できないハード・ドライブ・コントローラにおけるサーボ機構がある。命令ストリームに小さな挿入を許容する状況では、モニタ・モードは理想的である。この技術を使用して、ステート情報及び重要な変数をセーブするのに十分な時間割り込みによりコードを一時停止させる事ができる。コードは例外ハンドラーが終了すれば再度続行する。
【0107】
3.3.1 モニタ・モードへの進行及び抜け出し
モニタ・モードは、DSCRのビット30に0を書き込むことにより、エネーブルされる。モニタ・モードがエネーブルされたときに、下記の事象のうちの1つが発生すると、プロセッサは(ホールトすることよりも)例外となる。
1)レジスタのブレークポイントをヒット
2)ウォッチポイントをヒット
3)ブレークポイント命令がARMパイプラインの実行段階に到達
4)例外に行き、対応するベクトル・トラップ・ビットをセット
【0108】
DSCR内のグローバル・デバッグ・エネーブル(Global DebugEnable)ビットをセットしなければ、無操作となることに注意すべきである。例外ハンドラーからの抜け出しは、通常の形式、例えばプリフェッチ例外のためにPCを(R14−0X4)にリストアし、BRPT命令に対してR14をPCに移動させることにより、実行する必要がある。なぜならば、これらはスキップ等が実行されるためである。以下の表は、コアが例外となるときのPCの値を表示する。
【0109】
【表4】
【0110】
3.3.2 ブレークポイント・レジスタ及びウォッチポイント・レジスタの読み出し及び書き込み
モニタ・モードのときは、全てのブレークポイント・レジスタ及びウォッチポイント・レジスタを特権処理モードからのMCR及びMCR命令により読み出し及び書き込みが可能である。
【0111】
レジスタ・フィールドの符号化の説明については、3.1.2項及び3.2.4項を参照されたい。
【0112】
3.3.3 BKPT命令
ARMデバッグ・アーキテクチャーは、ARM及びサムの両者に対するブレークポイント命令を定義する。これらの命令のうちの一つの実行は、レジスタ・ブレークポイントをヒットすることと同一の効果を有する。モニタ・モードでは、プリフェッチ中断が実行され、ホールト・モードでは、コアがホールトする。各デバッグ命令は、個々のブレークポイントを識別するためにデバッガことにより使用可能にされた1未使用フィールド、サムに対して8ビット、及びARMに対して12ビットを有する。
ARMのオプコードは32′hE12xxx7x、サムのオプコードは16′hbexxであり、xは未使用フィールドである。
【0113】
3.3.4 Commsチャネル
ARM10におけるcomms(通信)チャネルは、物理的に独立した2つのデータ転送レジスタ(DTR)及び各レジスタを増加するために1ビットを使用し、双方向直列ポートを形成することにより実施された。この付加ビットは、有効データがデータ・レジスタに存在することを表示する。協定により、対象ソフトウェアは、書き込みDTR(wDTR)を保有し、またホスト・ソフトウェアは、読み出しDTR(rDTR)を保有する。換言すれば、wDTRはコアにより書き込まれ、次いで情報はホストによりJTAGポートを通ってスキャン出力される。wDTRはTDO接続を有する唯一のレジスタであり、スキャン・チェーン5のビット0は、JTAG命令レジスタにおける現在命令(INTEST又はEXTEST)により選択される。commsチャネルの活動のデバッグをしているときに、DSCRのビット27は、セットされて、ここで、wDTRの最下位ビットが命令の完了よりもcommsチャネル・レジスタのステートを表示していることをデバッグ・ロジックに表示する。
【0114】
デバッガがそれを意図するデータを読み出しているときに、INTESTをIRにロードしwDTRの内容をスキャン出力する。33ビットのデータ・パケットの最下位ビットがセットされていれば、このデータは有効である。次いで、この読み出しによりwDTR内のビット0をクリアする。このビットがクリアされており、コアに新しいデータが書き込まれていないことを意味しているときは、デバッガは、コアがホールトしたか否かを調べるためにDSCRのポーリングを希望することもできる。
【0115】
同様に、EXTESTは、デバッガによりrDTRにデータを書き込むために使用され、またこの動作は有効データを示すビット0をこのレジスタ用にセットする。デバッガが見るものは、実際には、このビットの反転であるので、デバッガは更にデータを書き込みをするときに、ビット0は、セットされて、コアがrDTRを読み出したことを意味しているか否かを見るために、チェックされる必要がある。このビットがゼロであり、rDTRが依然としてフルであり、かつコアが古いデータを読み出していなかったときは、シフト入力された新しいデータは、rDTRにロードされない。これを多数回行った後に、コアがホールトしたか否かをデバッガがチェックしたいときは、ステータス・ビットは、rDTR内のデータと共に有効に存続する。これは、スキャン出力されて、デバッガが後で単にスキャン入力により戻せるようにセーブしたステート情報と置換される必要がある。データをrDTRからコア・レジスタに、次いでwDTRに移動してスキャン出力するこのような操作は、rDTRの全ビットを制御しているステート・マシンをクリアすることになる。
【0116】
これらの付加ビットは実際にDSCRに反映されるので、コアはこれらビットを読み出すためにMRCを使用することができる。しかしながら、これらのビットは、コア用なので、デバッガから見えるビットの論理反転である。
【0117】
ホールト・モード及びモニタ・モードは、互いに排他的であるので、転送レジスタは、モニタ・モードにおいて他の目的用に使用されていない。
【0118】
4.0 デバッグ及び例外、ベクトル捕捉
4.1 命令ブレークポイント
命令ブレークポイントは、命令データと同時にコアにクロッキングされる。ブレークポイントは、中断がペンディングでないと仮定して、命令がパイプラインの実行段に入ると直ちに処理される。このブレークポイントは、命令がその条件コードに失敗したか否かについて処理される。
【0119】
ブレークポイント命令は、これに関連したプリフェッチ中断を有してもよい。その通りであれば、プリフェッチ中断が優先し、ブレークポイントは無視される。SWI及び未定義命令は、これにセットされたブレークポイントを有し得る他の命令と同様に処理される。従って、ブレークポイントはSWI又は未定義命令に対して優先する。
【0120】
命令の境界にブレークポイントの命令及び割り込み(FIQ又はIRQ)が存在するときは、割り込みが実行され、ブレークポイントの命令はすてられる。割り込みがサービスされると、実行フローは元のプログラムに戻される。これは、前にブレークポイントした命令が再びフェッチされたことを意味し、このブレークポイントが依然としてセットされているときに、プロセッサがパイプラインの実行段に到達すれば、プロセッサはデバッグ・ステートに入る。
【0121】
4.2 ウォッチポイント
ウォッチポイントのメモリアクセスに続くデバッグ・ステートへのエントリは、命令ストリーム・アクセスと比較して不正確である。これは、パイプラインの性質及びコアに行くウォッチポイント信号のタイミングのためである。プロセッサは、ウォッチポイント・トリガ後に実行される、ウォッチポイントの命令が実行を開始した後の数命令となり得る次の命令で停止することになる。
【0122】
ウォッチポイントと共にデータ・アクセスによる中断があると、中断例外エントリ・シーケンスを実行し、次いでプロセッサはデバッグ・ステートに入る。割り込みの待機があると、再び、プロセッサは、例外エントリ・シーケンスが発生できるようにし、デバッグ・ステートに入る。次の命令を中断したときは、中断は実行されない。
【0123】
CP15内のフォールト・ステータス・レジスタ(Fault StatusRegister:FSR)は、MMUとアクセスを中断するデバッグ・システムとの間を区別する。データ中断が発生すると、FSR[3:0]フィールドのビット9がゼロに強制設定される。データ中断がなく、ウォッチポイントが発生すると、DFSR[9]を1に強制設定する。
ソフトウェアがこのレジスタを読み出し、かつDFSR[9]が1にセットされているのを認識したときは、残りのビットを無視する必要がある。
【0124】
4.3 割り込み
プロセッサがデバッグ・ステートに入れば、更なる割り込みが実行された命令に影響しないことが重要である。このために、プロセッサがデバッグ・ステートに入れば、割り込みがディセーブルされるが、PSRにおけるI及びFビットのステートは、影響されない。
【0125】
4.4 例外
ARM10コアにおける例外の優先順位は、以下のようである。
【0126】
【表5】
【0127】
下記の表6は、ホールト及びモニタ・モードの両者におけるデバッグ・ロジックの動きの要約である。
【0128】
【表6】
【0129】
モニタ・モードにおいて、ブレークポイントをヒットした、又はBKRP命令を実行したときは、プリフェッチ中断の例外となる。ウォッチポイントをヒットしたときは、データ中断の例外となる。CP15内のフォールト・ステータス・レジスタ(FSR)は、MMUとデバッグ・システムとの間を区別してアクセスを中断するために使用される。FSRにウォッチポイントヒットを示す符号が加えられる。R14 abortは実行されなかった命令後の第1の命令をポイントする。2つの異常例、即ち「フェッチ中断上にベクトル・トラップのセット」、又は「データの中断が許可されない」がディセーブルされた。如何なる状況であっても、JTAG HALT命令を、ソフトウェア・モードにある間に、デバッグ・ロジックがDbHaltライン〜DbgInDebugラインをクリアするために使用するハンドシェーク・ラインとして、決して現れない部分にスキャン入力されるようなことがあれば、プロセッサを(現在Rev0ハードウェア実施により)連続的にプリフェッチ中断させることになる。
【0130】
ウォッチポイントをセットしたロード/ストア多重命令の場合に、他の命令は、多分(かつ大抵は)その下で動作することができる。デバッガはロード/ストア多重命令のPC値と共に復帰PC値(return PC)を知る必要があるので、ウォッチポイントのデータ・アドレスは、D側のフォールト・アドレス・レジスタ(FAR)に記憶され、ウォッチポイント命令それ自身のPC(+0X8)は、I側FARに記憶される。再起動PCは、通常のようにR14に保持される。
【0131】
コアがデバッグ・ステートにある間に未定義の命令例外となるときは、即ちデバッグ・ステートにある間に、デバッガが、未定義命令をコアにスキャン入力するときは、コアはモードを変更し、かつPCを未定義命令トラップ・ベクトルに変更する。デバッガはこの情報を使用して未定義命令を何時コアが見たかを判断することができる。1例は、与えられた実施に対してサポートされていないために、拒絶するコプロセッサ命令が考えられる。
【0132】
4.5 ベクトル捕捉
ARM10デバッグ・ユニットは、例外中にベクトルからフェッチの効率的なトラッピングを可能にするロジックを含む。これは、DSCRに位置するベクトル捕捉エネーブル(Vector Catch Enable)により制御される。このレジスタ・フィールドにおける複数ビットのうちの1ビットがハイにセットされ、かつ対応する例外が発生すると、プロセッサは、レジスタ・ブレークポイントが関係する例外ベクトルからの命令フェッチにセットされたかのように作動し、次いでホールトする。ベクトル捕捉エネーブルは、JTAG命令からのみ書き込み可能である。
【0133】
例えば、プロセッサがホールト・モードにあり、かつDSCR[18]がセットされている間にSWI命令を実行するときは、ARM10が0X8から命令をフェッチする。ベクトル捕捉ハードウェアは、このアクセスを検出し、かつ内部ブレークポイント信号をセットしてコアを強制的に停止させる。
【0134】
ベクトル捕捉ロジックは例外エントリ中にベクトルからのフェッチに対してのみ感応する。従って、通常のオペレーション中に、コードがベクトル内のアドレスに分岐し、かつ対応するベクトル捕捉エネーブル・ビットがセットされると、プロセッサはデバッグ・ステートに強制されない。レジスタ・ブレークポイントは、ベクトルからの命令フェッチを捕捉するために使用されてもよい。
【0135】
ブレークポイントを経由する割り込みのステート優先度は、ARM9におけるベクトル捕捉バグの原因であった。ARM10の場合に、ベクトルが捕捉した例外ベクトルからフェッチされた命令の発行中に割り込み要求が発生するときは、コアはベクトル・トラップを最初に処理する。コアが再起動すると、プロセッサは割り込み要求を処理する。
【0136】
5.0 サム
デバッグ・ステートにおいて、CPSRのTビットは、デバッガにより読み出され/書き込まれ、かつデバッグ・ステートに入る又は出るときに変更されない。更に、これは、デバッグ・ステートにある間に実行される命令形式に影響されない。デバッグ・ステートを抜け出すときは、CPSR Tビットは、ARM又はサム命令が実行されるのかを決定する。
【0137】
DSCRにおけるTビットは、プリフェッチ・ユニットに送出される各命令と共に送出されるので、コアをホールトすると、デバッガが実行しようとし、かつプロセッサをARMモード又はサム・モードに強制設定するために使用可能とされる命令形式(ARM又はサム)を表示する。換言すれば、DSCRにおけるTビットは、ITRにおける命令のデコードを制御する。デバッグ・ステートのエントリ後に、デバッガは、DSCRにおけるTビットをクリアしてARM10にARM10命令を発行できることを確認する必要がある。デバッガに対するエントリ・シーケンスは、以下のように見ることになるであろう。
(ホールト・モードによりデバッグ・ステートに入る)
0をCP14のレジスタ1のTビットにスキャン入力(DSCR)
ARMモードによりCPSRを読み出してTビット情報を得る(オプション)
ARMモードによりMCRを実行してARMステート情報を抽出
・
・
MRCを使用して全てのARMをリストア
再起動PC値をR0に移動
ARM MOV R0,PCを実行
リストアR0
(命令が完了したことを確認するためにポーリング)
(JTAGを通ってRESTRTコマンドを発行することによりデバッグ・ステートを抜け出す)
Core Restartビットをポーリング
【0138】
コアは、デバッグ・ステートを抜け出す際に現在モードとしてCPSRにおけるTビットを使用する。
【0139】
6.0 実施発行
デバッグ構造は、2クロック領域、即ち高速プロセッサ・クロック及び低速JTAGクロックにより実施されることを意図している。大抵のデバッグ・ハードウェアは、高速クロック速度で動作し、両者間の同期は、命令として実行され、データ転送レジスタは、JTAGスキャン・チェーンから読み出され、またJTAGスキャン・チェーンに書き込まれる。これは、コア・クロックより速くJTAGクロックを動作させることができる。
【0140】
データ転送用のソース及び宛先としてCP14を使用し、ARM内の既存のパスを再使用して、データ・バスに付加付加的な入力を追加する必要性をなくしている。ARM10には、フェッチ・ユニットにおける初期命令入力として命令レジスタが設けられている。
【0141】
少数のマルチICEは、JTAGハードウェア内の更新機構に付加されるわずかな調整を必要とする設計の過程で発生する。コアに命令を発行する間に、マルチICEソフトウェアは、前に発行した命令が完了したか否かを検定するためにCaptureDRステートを通過後にビットをスキャン出力する。命令が完了していないときは、デバッグ・ロジックは、2つの事象が発生するのを防止する。第1に、TAPステート・マシンがUpdateDRステートを通過するときに、スキャン・チェーン5にシフトされた値がrDTRにロードされない。第2に、TAPステート・マシンがRun−Test/Idleステートを通過して現在ITR内の命令を発行するので、この命令がコアに発行されない。rDTRの33番目のビットは、「更新する」(do update)ビットを作成するために登録され、この「更新する」ビットは命令の発行及びrDTRの更新を阻止するために使用される。
【0142】
特に、このロジックは以下の場合に使用される。極端に速いダウンロードを試行するために、マルチICEは、データをrDTRにスキャン入力して、Run−Test/Idleを通ることによりコアに対して書き込みを発行することにより、起動する。次の各書き込みオペレーションにおいて、rDTRのビット0を調べて前の命令が完了したか否かを判断する。この命令が完了していないときは、デバッガは再び同一のデータを与える。所定数の試行後に、命令が未だ完了していないときは、デバッガはDSCR内の中断発生(Abort Occurred)ビットを調べて中断がどこかの点に発生したのか否かを判断する。メモリ・アクセス中に中断が発生したときは、「更新する」ビットをクリアすることにより、次の命令が実行されてメモリをアクセスしようとする他の可能性を除去する。特に、これは、中断のためにモードが突然変化し、かつユーザ・モードではアクセスできないメモリが特権モードにおいてアクセス可能となるときに、重要となる。
【0143】
次に実行すべき命令の後の位置に配置されたBKPT命令を使用して、ここで、コードによる単一ステップを実行することが必要となる。更に、レジスタ・ブレークポイントも使用することができる。
【0144】
LDCはワード長のみである。バイト/ハーフワード・アクセスのためにコアに読み出し/書き込みを強制させ、次いでスキャン出力又はその逆のためにデータをR5に移動させる。
【0145】
7.0 キャッシュ(CP15)及びメモリ動作
デバッグ・ユニットは、CP14及びCP15がいくつかの機能を共有しているので、TLB情報と共にキャッシュ情報を読み出すことができる。パイプライン・フォロワ及びコプロセッサ・インターフェースは、全て同一ブロック内に存在する。これは、CP14がCP15内のFSRを非常に簡単に更新可能にする。CP15は16のレジスタを含み、その一つ(R15)はデバッガ用のインターフェースとして使用される。MRC命令及びMCR命令を使用してR15の読み出し及び書き込みにより、デバッグ・ユニットは、キャッシュの完全な可視性を有する。キャッシュについての更なる情報は、ARM1020μA仕様を参照されたい。
【0146】
マシンのステートをデバッグ・ステートに変更した後、メモリからのデータの読み出しにより、Iキャッシュ又はDキャッシュがキャッシュに新しいエントリを挿入させることはない。換言すれば、キャッシュ可能として処理されるアクセスはない。これは、キャッシュをキャッシュ不能、バッファ不能に強制設定することにより達成される。キャッシュ・ミスは、デバッグ・ステートにある間に、HUMバッファにより無視されるので、ライン・フルは発生しない。
【0147】
命令データを変更するプログラム(例えば、自己変更コード)は、一貫性を保持するために、Dキャッシュによる書き込み後に、Iキャッシュをフラッシュする必要がある。
【0148】
デバッグ・モードでは、ユーザ・モードによるメモリ・アクセスがメモリ・システム及びMMUに対するユーザ・モード・アクセスのように見える。特権モードにおけるメモリ・アクセスは、特権アクセスのように見える。
【0149】
【表7】
【0150】
【表8】
【図面の簡単な説明】
【図1】デバッグ機構を含むデータ処理システムを概要的に示す図である。
【図2】図1のデータ処理システムのデバッグ機構の一部であるデバッグ・コプロセッサを概要的に示す図である。
【図3】図1のデータ処理システムのデバッグ機構の一部であるデータ転送レジスタを概要的に示す図である。
【図4】デバッグ命令の実行を示すフロー・チャートである。
【図5】デバッグ命令の繰り返し実行を示すフロー・チャートである。
【図6】図2のデバッグ・コプロセッサの他の概要ブロック図である。
【図7】図1のデータ処理システムのデバッグ機構の一部であるスキャン・チェーン・コントローラを示す概要ブロック図である。
【図8】図3に示すデータ転送レジスタのハンドシェーキング制御の一部を説明するタイミング図である。
【図9】ハードウェア・デバッグ・モードと通常モードとの間の切り換えを制御しているメイン・プロセッサとデバッグ・システムとの間のハンドシェーキング信号を説明するタイミング図である。
【符号の説明】
2 データ処理システム
4 メイン・プロセッサ(コア)
6 デバッグ・コプロセッサ(コプロセッサ)
10 プリフェッチ・ユニット
12 スキャン・チェーン・コントローラ
14 命令パイプライン
78 デコーダ
28 デバッグ・ステータス及び制御レジスタ(DSCR)
16 ウォッチポイント・レジスタ
18 ブレークポイント・レジスタ
Claims (17)
- データ処理装置において、
メイン・プロセッサであって、入力される命令ストリーム内のメイン・プロセッサ命令に応答してメイン・プロセッサ・オペレーションを実行する前記メイン・プロセッサと、
コプロセッサ・インターフェースを介して前記メイン・プロセッサに接続され、かつ前記命令ストリーム内のコプロセッサ命令に応答してコプロセッサ・オペレーションを実行するコプロセッサと
を備え、
前記コプロセッサは、前記コプロセッサの外部であり前記コプロセッサに接続する、前記データ処理装置の少なくとも1つの部分をデバッグするための診断データの発生を少なくとも部分的に制御可能なデバッグ・コプロセッサであり、かつ前記コプロセッサ命令は、前記デバッグ・コプロセッサのオペレーションを制御するデバッグ・コプロセッサ命令である
前記装置。 - 前記デバッグ・コプロセッサは、1以上のデバッグ・コプロセッサ・レジスタを備えている請求項1記載の装置。
- 前記メイン・プロセッサは、前記命令ストリーム内の命令に関連され命令アドレスを送信する命令アドレス・バスを備え、前記1以上のデバッグ・コプロセッサ・レジスタは、ブレークポイント値を格納するブレークポイント・レジスタを含み、前記デバッグ・コプロセッサは、前記ブレークポイント値を前記命令アドレス・バス上の前記命令アドレスと比較して前記ブレークポイント値が前記命令アドレス・バス上の前記命令アドレスと一致するときは、ブレークポイント表示信号を発生するブレークポイント比較器を含む
請求項2記載の装置。 - 前記1以上のデバッグ・コプロセッサ・レジスタは、前記ブレークポイント・レジスタに関連され、前記ブレークポイント比較器の動作を制御するパラメータを指定するためのブレークポイント値を格納するブレークポイント制御レジスタを含む請求項3記載の装置。
- 前記パラメータは、マスク値、ブレークポイント・エネーブル・フラグ、及び前記データ処理装置の複数の動作モードのうちのいずれで前記ブレークポイント比較器がアクティブとなるのかについて制御するモード選択値のうちの少なくとも1つを含む請求項4記載の装置。
- 前記メイン・プロセッサは、前記データ処理装置により処理されたデータ値と関連されたデータ・アドレスを送信するデータ・アドレス・バスを備え、前記1以上のデバッグ・コプロセッサ・レジスタはウォッチポイント値を格納するウォッチポイント・レジスタを含み、かつ前記デバッグ・コプロセッサは、前記ウォッチポイント値を前記データ・アドレス・バス上の前記データ・アドレスと比較して、前記ウォッチポイント値が前記データ・アドレス・バス上のデータ・アドレスと一致するときに、ウォッチポイント表示信号を発生するウォッチポイント比較器を含む請求項2から請求項5までのいずれかの項に記載の装置。
- 前記1以上のデバッグ・コプロセッサ・レジスタは、前記ウォッチポイント・レジスタに関連されて、前記ウォッチポイント比較器の動作を制御するパラメータを指定するためのウォッチポイント制御値を格納するウォッチポイント制御レジスタを含む請求項6記載の装置。
- 前記パラメータは、マスク値、ウォッチポイント・エネーブル・フラグ、及び前記データ処理装置の複数の動作モードのうちのいずれで前記ウォッチポイント比較器がアクティブとなるのかについて制御するモード選択値のうちの少なくとも1つを含む請求項7記載の装置。
- 前記1以上のデバッグ・コプロセッサ・レジスタのうちの少なくとも1つは、前記命令ストリーム内のデバッグ・コプロセッサ・レジスタ・アクセス命令に応答してアクセスされる請求項2から請求項8までのいずれかの項に記載の装置。
- 前記1以上のデバッグ・コプロセッサ・レジスタのうちの少なくとも1つは、直列スキャン・チェーン経由でアクセスされ、前記直列スキャン・チェーンは、スキャン・チェーン・コントローラの制御により動作する請求項2から請求項9までのいずれかの項に記載の装置。
- 前記1以上のデバッグ・コプロセッサ・レジスタのうちの少なくとも1つは、前記メイン・プロセッサによってアクセス可能なデータ値を格納するデバッグ・データ値レジスタを含み、前記データ値は、前記直列スキャン・チェーン経由でアクセスされる請求項10記載の装置。
- 前記デバッグ・データ値レジスタは、前記直列スキャン・チェーンから書き込み可能、かつ前記メイン・プロセッサにより読み出し可能な第1のデバッグ・データ・レジスタと、前記直列スキャン・チェーンにより読み出し可能、かつ前記メイン・プロセッサから書き込み可能な第2のデバッグ・データ・レジスタとを備えた請求項11記載の装置。
- 前記1以上のデバッグ・コプロセッサ・レジスタは、前記メイン・プロセッサにより実行されるデバッグ命令を格納するデバッグ命令レジスタを含み、前記デバッグ命令は、前記直列スキャン・チェーンにより前記にデバッグ命令レジスタに転送される請求項10、11及び12のうちのいずれかの項記載の装置。
- 前記1以上のデバッグ・コプロセッサ・レジスタは、デバッグ・ステータス制御レジスタを含み、前記デバッグ・ステータス制御レジスタは、デバッグ・モードへのトリガ・エントリの条件、前記デバッグ・コプロセッサをエネーブルするフラグ、及びメイン・プロセッサ・ベクトル命令トラップを制御するフラグのうちの1以上を指定するデータを格納する請求項10から請求項13までのうちのいずれかの項記載の装置。
- 前記コプロセッサ・インターフェースは、デバッグ・オペレーション中に、前記メイン・プロセッサのメイン・プロセッサ・パイプライン内の命令処理を停止させる信号、前記コプロセッサ・バスに接続された別のコプロセッサのコプロセッサ・パイプライン内の命令処理を停止させる信号、及び前記別のコプロセッサ内のコプロセッサ動作を取り消させる信号のうちの1つ以上を含む前記デバッグ・コプロセッサにより発生される信号を転送する1本以上の信号ラインを含む前記請求項1から14までのいずれかの項記載の装置。
- 前記メイン・プロセッサ及び前記デバッグ・コプロセッサは、共通クロック信号により駆動され、前記スキャン・チェーン・コントローラは、非同期スキャン・チェーン・クロック信号により駆動される請求項10から請求項15までのうちのいずれかの項記載の装置。
- データ処理方法において、
メイン・プロセッサに入力される命令ストリーム内のメイン・プロセッサ命令に応答して、メイン・プロセッサ・オペレーションを実行するステップと、
前記命令ストリーム内のコプロセッサ命令に応答し、コプロセッサ・インターフェースを介して前記メイン・プロセッサに接続されたコプロセッサを制御してコプロセッサ・オペレーションを実行するステップと
を備え、
前記コプロセッサは、前記コプロセッサの外部であり前記コプロセッサに接続する、前記データ処理装置の少なくとも1つの部分のデバッグのための診断データの発生を少なくとも部分的に制御するように動作可能なデバッグ・コプロセッサであり、前記コプロセッサ命令は、前記デバッグ・コプロセッサのオペレーションを制御するデバッグ・コプロセッサ命令であるデータ処理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US314020 | 1999-05-19 | ||
US09/314,020 US6446221B1 (en) | 1999-05-19 | 1999-05-19 | Debug mechanism for data processing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000330825A JP2000330825A (ja) | 2000-11-30 |
JP4475734B2 true JP4475734B2 (ja) | 2010-06-09 |
Family
ID=23218197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000112811A Expired - Fee Related JP4475734B2 (ja) | 1999-05-19 | 2000-04-14 | データ処理装置及びデータ処理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6446221B1 (ja) |
JP (1) | JP4475734B2 (ja) |
GB (1) | GB2350216B (ja) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571366B2 (en) * | 2004-12-02 | 2009-08-04 | Texas Instruments Incorporated | Sequential signals selecting mode and stopping transfers of interface adaptor |
US6505290B1 (en) * | 1997-09-05 | 2003-01-07 | Motorola, Inc. | Method and apparatus for interfacing a processor to a coprocessor |
US6820051B1 (en) * | 1999-02-19 | 2004-11-16 | Texas Instruments Incorporated | Software emulation monitor employed with hardware suspend mode |
DE60028379T2 (de) * | 1999-03-30 | 2007-03-08 | Siemens Energy & Automation, Inc. | Speicherprogrammierbare steuerung |
US7353368B2 (en) * | 2000-02-15 | 2008-04-01 | Intel Corporation | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
US6654878B1 (en) * | 2000-09-07 | 2003-11-25 | International Business Machines Corporation | Register bit scanning |
US6691270B2 (en) * | 2000-12-22 | 2004-02-10 | Arm Limited | Integrated circuit and method of operation of such a circuit employing serial test scan chains |
DE10139660B4 (de) * | 2001-08-11 | 2007-07-05 | Infineon Technologies Ag | Programmgesteuerte Einheit mit Debug-Ressourcen |
GB0215033D0 (en) * | 2002-06-28 | 2002-08-07 | Critical Blue Ltd | Instruction set translation method |
US6895530B2 (en) * | 2003-01-24 | 2005-05-17 | Freescale Semiconductor, Inc. | Method and apparatus for controlling a data processing system during debug |
US6963963B2 (en) * | 2003-03-25 | 2005-11-08 | Freescale Semiconductor, Inc. | Multiprocessor system having a shared main memory accessible by all processor units |
US7065691B2 (en) * | 2003-05-19 | 2006-06-20 | Hewlett-Packard Development Company, L.P. | Apparatus and method for saving precise system state following exceptions |
JP2007500401A (ja) * | 2003-07-25 | 2007-01-11 | ジンガー,アーサー,アール. | ソフトウェアデバッギング用装置とその方法 |
JP2007535067A (ja) * | 2004-04-29 | 2007-11-29 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | コンピュータにおけるプログラム実行中の侵入検出 |
US7552360B2 (en) | 2005-03-21 | 2009-06-23 | Texas Instruments Incorporated | Debug and test system with format select register circuitry |
US20070006042A1 (en) * | 2005-06-30 | 2007-01-04 | International Business Machines Corporation | Software debug support for cache flush with access to external data location(s) through debug port |
US7665002B1 (en) * | 2005-12-14 | 2010-02-16 | Advanced Micro Devices, Inc. | Multi-core integrated circuit with shared debug port |
KR101242602B1 (ko) * | 2006-02-08 | 2013-03-19 | 삼성전자주식회사 | 테스트 회로를 내장한 시스템 온 칩 |
US20070214389A1 (en) * | 2006-03-08 | 2007-09-13 | Severson Matthew L | JTAG power collapse debug |
US8010774B2 (en) * | 2006-03-13 | 2011-08-30 | Arm Limited | Breakpointing on register access events or I/O port access events |
US7925862B2 (en) * | 2006-06-27 | 2011-04-12 | Freescale Semiconductor, Inc. | Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges |
US7805590B2 (en) * | 2006-06-27 | 2010-09-28 | Freescale Semiconductor, Inc. | Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence |
US20070300042A1 (en) * | 2006-06-27 | 2007-12-27 | Moyer William C | Method and apparatus for interfacing a processor and coprocessor |
TWI331278B (en) * | 2007-03-14 | 2010-10-01 | Ind Tech Res Inst | Debug method |
US8130526B2 (en) * | 2007-08-10 | 2012-03-06 | International Business Machines Corporation | Programming a microchip ID register |
US7730248B2 (en) * | 2007-12-13 | 2010-06-01 | Texas Instruments Incorporated | Interrupt morphing and configuration, circuits, systems and processes |
US20090222797A1 (en) * | 2008-02-29 | 2009-09-03 | Infineon Technologies Ag | Apparatus and method for providing a trigger |
US20100042975A1 (en) | 2008-08-13 | 2010-02-18 | Honeywell International Inc. | Message logging for software applications |
US8161328B1 (en) * | 2010-05-27 | 2012-04-17 | Western Digital Technologies, Inc. | Debugger interface |
TW201235833A (en) * | 2011-02-16 | 2012-09-01 | Ind Tech Res Inst | System and method for multi-core synchronous debugging of a multi-core platform |
US8799713B2 (en) * | 2011-03-01 | 2014-08-05 | Texas Instruments Incorporated | Interruptible non-destructive run-time built-in self-test for field testing |
US8640007B1 (en) | 2011-09-29 | 2014-01-28 | Western Digital Technologies, Inc. | Method and apparatus for transmitting diagnostic data for a storage device |
GB2504772A (en) | 2012-08-10 | 2014-02-12 | Ibm | Coprocessor providing service address space for diagnostics collection |
US9270553B1 (en) | 2014-03-26 | 2016-02-23 | Amazon Technologies, Inc. | Dynamic service debugging in a virtual environment |
US9626267B2 (en) * | 2015-01-30 | 2017-04-18 | International Business Machines Corporation | Test generation using expected mode of the target hardware device |
WO2017072664A1 (en) * | 2015-10-27 | 2017-05-04 | Marvell World Trade Ltd. | System and method for establishing a trusted diagnosis/debugging agent over a closed commodity device |
US10067814B2 (en) | 2016-04-28 | 2018-09-04 | International Business Machines Corporation | Method and system to decrease measured usage license charges for diagnostic data collection |
US10769051B2 (en) * | 2016-04-28 | 2020-09-08 | International Business Machines Corporation | Method and system to decrease measured usage license charges for diagnostic data collection |
US11914500B2 (en) | 2022-02-03 | 2024-02-27 | Apple Inc. | Debugging of accelerator circuit for mathematical operations using packet limit breakpoint |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01297764A (ja) * | 1988-05-25 | 1989-11-30 | Nec Corp | プロセッサ |
CN1316368C (zh) * | 1994-12-28 | 2007-05-16 | 株式会社东芝 | 微处理器 |
EP0762280B1 (en) | 1995-08-30 | 2001-11-14 | Motorola, Inc. | Data processor with built-in emulation circuit |
GB9626401D0 (en) * | 1996-12-19 | 1997-02-05 | Sgs Thomson Microelectronics | Diagnostic procedures in an integrated circuit device |
GB2326253A (en) * | 1997-06-10 | 1998-12-16 | Advanced Risc Mach Ltd | Coprocessor data access control |
US5983338A (en) * | 1997-09-05 | 1999-11-09 | Motorola, Inc. | Method and apparatus for interfacing a processor to a coprocessor for communicating register write information |
US6173386B1 (en) * | 1998-12-14 | 2001-01-09 | Cisco Technology, Inc. | Parallel processor with debug capability |
US6282592B1 (en) * | 1998-12-14 | 2001-08-28 | Nortel Networks Limited | Method and apparatus for high-speed data transmission bus entrainment |
US6311302B1 (en) * | 1999-04-01 | 2001-10-30 | Philips Semiconductor, Inc. | Method and arrangement for hierarchical control of multiple test access port control modules |
WO2001063434A1 (en) * | 2000-02-24 | 2001-08-30 | Bops, Incorporated | Methods and apparatus for dual-use coprocessing/debug interface |
-
1999
- 1999-05-19 US US09/314,020 patent/US6446221B1/en not_active Expired - Lifetime
- 1999-12-10 GB GB9929365A patent/GB2350216B/en not_active Expired - Lifetime
-
2000
- 2000-04-14 JP JP2000112811A patent/JP4475734B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB9929365D0 (en) | 2000-02-02 |
GB2350216A (en) | 2000-11-22 |
US6446221B1 (en) | 2002-09-03 |
GB2350216B (en) | 2003-07-16 |
JP2000330825A (ja) | 2000-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4475734B2 (ja) | データ処理装置及びデータ処理方法 | |
US6343358B1 (en) | Executing multiple debug instructions | |
US6321329B1 (en) | Executing debug instructions | |
US6094729A (en) | Debug interface including a compact trace record storage | |
US5978902A (en) | Debug interface including operating system access of a serial/parallel debug port | |
JP4190114B2 (ja) | マイクロコンピュータ | |
US6055649A (en) | Processor test port with scan chains and data streaming | |
US5970241A (en) | Maintaining synchronism between a processor pipeline and subsystem pipelines during debugging of a data processing system | |
JP3846939B2 (ja) | データプロセッサ | |
US6065106A (en) | Resuming normal execution by restoring without refetching instructions in multi-word instruction register interrupted by debug instructions loading and processing | |
US7017029B2 (en) | Coprocessor instruction loading from port register based on interrupt vector table indication | |
EP0849674B1 (en) | Method and apparatus for debugging a pipeline microprocessor | |
US6167536A (en) | Trace cache for a microprocessor-based device | |
US7185234B1 (en) | Trace control from hardware and software | |
US6154856A (en) | Debug interface including state machines for timing synchronization and communication | |
US7506205B2 (en) | Debugging system and method for use with software breakpoint | |
US20060225050A1 (en) | Dynamic selection of a compression algorithm for trace data | |
US20110010531A1 (en) | Debuggable microprocessor | |
US20070180333A1 (en) | External trace synchronization via periodic sampling | |
US9201749B2 (en) | Diagnosing code using single step execution | |
US20050240820A1 (en) | Method and apparatus for multiprocessor debug support | |
JPH0689201A (ja) | アイドルモードをアクセスするラン/ストップピンを有するマイクロプロセッサ及びそれを動作させる方法 | |
JPH1124959A (ja) | マイクロプロセッサのトレース情報出力方法 | |
EP0854422B1 (en) | A processor test port with scan chains and data streaming | |
JPH08335177A (ja) | プロセッサ動作観察方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060526 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090707 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091007 |
|
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: 20100226 |
|
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: 20100309 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4475734 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130319 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130319 Year of fee payment: 3 |
|
R154 | Certificate of patent or utility model (reissue) |
Free format text: JAPANESE INTERMEDIATE CODE: R154 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130319 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140319 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |