JP6397815B2 - 命令トレース能力を有するプロセッサデバイス - Google Patents

命令トレース能力を有するプロセッサデバイス Download PDF

Info

Publication number
JP6397815B2
JP6397815B2 JP2015511624A JP2015511624A JP6397815B2 JP 6397815 B2 JP6397815 B2 JP 6397815B2 JP 2015511624 A JP2015511624 A JP 2015511624A JP 2015511624 A JP2015511624 A JP 2015511624A JP 6397815 B2 JP6397815 B2 JP 6397815B2
Authority
JP
Japan
Prior art keywords
trace
external
processor device
event
trigger signal
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.)
Active
Application number
JP2015511624A
Other languages
English (en)
Other versions
JP2015516100A (ja
JP2015516100A5 (ja
Inventor
ケビン キルザー,
ケビン キルザー,
ジャスティン ミルクス,
ジャスティン ミルクス,
スンダール バラスブラマニアン,
スンダール バラスブラマニアン,
トーマス エドワード ペルム,
トーマス エドワード ペルム,
クシャラ ジャバガル,
クシャラ ジャバガル,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of JP2015516100A publication Critical patent/JP2015516100A/ja
Publication of JP2015516100A5 publication Critical patent/JP2015516100A5/ja
Application granted granted Critical
Publication of JP6397815B2 publication Critical patent/JP6397815B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Description

(関連出願への相互参照)
本出願は、2012年5月7日に出願された、「PROCESSOR DEVICE WITH INSTRUCTION TRACE CAPABILITIES」という名称の米国仮出願第61/643,690号の利益を主張する。上記文献は、その全体として本明細書において援用される。
(技術分野)
本開示は、プロセッサデバイスに関し、特に、統合されたデバッグ能力を伴う、マイクロコントローラデバイスに関する。
(背景)
現代のマイクロプロセッサおよびマイクロコントローラは、内蔵デベロッパが、いわゆる回路内デバッガまたはエミュレータデバイスを用いて、起動中のプログラムを分析することを効率的に可能にする、回路網を含む。この目的を達成するために、マイクロコントローラまたはマイクロプロセッサは、例えば、デバッグインターフェースとして動作するように、デバイスの複数の機能ピンをプログラムすることによってアクティブ化されることができる、デバッグ機能および具体的インターフェースをサポートする、内部回路網を提供する。そのようなインターフェースは、通常、高速シリアルインターフェースとして、実際のデバイスと外部デバッガまたはエミュレータとの間の高速通信を可能にするように構成されることができる。デバイス自体は、したがって、本インターフェースをアクティブ化させない、通常動作モードで動作されることができ、関連付けられたピンは、他の目的のために、および本インターフェースを使用して、外部ホストコンピュータからおよびそれによって動作され得る、デバッガまたはエミュレータ等の個別の外部デバイスとデータを交換する、デバッグ動作モードのために使用されることができる。デバッガまたはエミュレータはまた、プログラマとして動作されることができ、プログラムは、同一のデバッグインターフェースを介して、標的デバイスに転送される。ホストコンピュータは、外部デバッガまたはエミュレータとともに、安価な分析およびデバッグシステムを形成する。
現代のプロセッサおよびマイクロコントローラは、個別のデバイスの内側に拡張された一式のデバッグ機能を提供する。例えば、いくつかのブレークポイントが、デバイス内に設定され、デバイスが、実際に、リアルタイムで起動することを可能にすることができ、これは、高速シリアルインターフェースだけを使用するとき、外部デバッガでは不可能であって、したがって、ボンドアウトチップおよび高価なデバッグ回路網を要求するであろう。しかしながら、これらの内部デバッグ回路網の機能性は、限定されたシリコン専有面積および他の理由のため、必然的に、幾分、制限される。
例えば、トレースバック機能は、多くの場合、外部回路内デバッガによってサポートされず、さらにより複雑な回路内エミュレータは、デバッグモードにあるとき、トレース機能を十分にサポートしない場合がある。
(要約)
したがって、改良された回路内デバッグシステム、特に、改良された回路内デバッグ能力を伴う、独立型プロセッサデバイスの必要性が存在する。例えば、種々の実施形態によるプロセッサデバイスは、デバイスのデバッグユニットに、例えば、外部ピンを通してフィードされる、外部トリガが、そうでなければ、デバイス動作を一時停止させることになる、トレースデータパケットをもたらすことを可能にし得る。
ある実施形態によると、デバッグ能力を有するプロセッサデバイスは、中央処理ユニットと、トレースモジュールおよび外部インターフェースを含む、デバッグ回路網とを備えてもよく、トレースモジュールは、実行された命令に関する情報を含む、トレースストリームを生成し、トレースストリームは、外部インターフェースを通して出力され、トレースモジュールはさらに、トリガ信号を検出し、検出の際にトレースパケットを生成されたトレースストリーム内に挿入するように動作可能である。
さらなる実施形態によると、トリガ信号は、プロセッサによって外部から印加されるトリガ信号であることができる。さらなる実施形態によると、トリガ信号は、内部イベントによって生成されることができる。さらなる実施形態によると、内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも1つを含んでもよい。さらなる実施形態によると、トレースストリームは、パケットベースであることができる。さらなる実施形態によると、トレースパケットは、トリガソースに関する情報を含んでもよい。さらなる実施形態によると、情報は、条件的に提供されることができ、条件は、ユーザ定義されることができる。さらなる実施形態によると、プロセッサデバイスは、複数の機能ピンを有してもよく、1つのピンは、外部トリガ信号に対するトリガ入力として動作するように割り当てられることができる。さらなる実施形態によると、データパケットは、トリガ信号の受信時にレポートされた命令の実行と一致する時間であるトレースストリーム内のポイントにおいて、トレースストリーム内に挿入されることができる。さらなる実施形態によると、デバッグ回路網はさらに、複数のイベントを組み合わせるように動作可能なイベントコンバイナを備えてもよく、イベントは、ブレークポイントおよび外部トリガ信号のうちの少なくとも1つによって作成されることができる。さらなる実施形態によると、トレースデータは、イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別してもよい。さらなる実施形態によると、トリガ信号は、デバッグ回路網内でシステムクロックに同期される、非同期信号であることができる。さらなる実施形態によると、プロセッサデバイスはさらに、外部トリガ信号を受信する外部ピンと連結される雑音排斥フィルタを備えてもよい。さらなる実施形態によると、トレースモジュールは、外部トリガ信号の正または負エッジを検出するようにプログラム可能であることができる。
別の実施形態によると、プロセッサデバイス内で実行されたコードをデバッグするための方法は、中央処理ユニット(CPU)によってコードを実行することと、CPUによって実行された命令のトレースストリームを生成することと、トリガ信号を判定する際に、外部トリガ信号を識別するトレースパケットをトレースストリーム内に挿入することとを含んでもよい。
本方法のさらなる実施形態によると、トリガ信号は、プロセッサに外部から印加されたトリガ信号であることができる。本方法のさらなる実施形態によると、トリガ信号は、内部イベントによって生成されることができる。本方法のさらなる実施形態によると、内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも1つを含んでもよい。本方法のさらなる実施形態によると、本方法はさらに、要求の際に、デバッグインターフェースを通して、トレースストリームを出力することを含んでもよい。本方法のさらなる実施形態によると、データパケットは、トリガ信号の受信時にレポートされた命令の実行と一致する時間である、トレースストリーム内のポイントにおいて、トレースストリーム内に挿入されることができる。本方法のさらなる実施形態によると、トレースストリームは、パケットベースであることができる。本方法のさらなる実施形態によると、トレースパケットは、トリガソースに関する情報を含んでもよい。本方法のさらなる実施形態によると、情報は、条件的に提供されることができ、条件は、ユーザ定義されることができる。本方法のさらなる実施形態によると、本方法はさらに、ブレークポイントおよび外部トリガ信号のうちの少なくとも1つによって、イベントを作成することと、複数のイベントを組み合わせ、デバッグ機能を生成することとを含んでもよい。本方法のさらなる実施形態によると、トレースデータは、イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別してもよい。本方法のさらなる実施形態によると、デバッグ機能は、トリガアウト信号または一時停止であることができる。本方法のさらなる実施形態によると、トリガ信号は、デバッグ回路網内でシステムクロックに同期される、非同期信号であることができる。本方法のさらなる実施形態によると、本方法はさらに、外部ピンと連結された雑音排斥フィルタによって、外部トリガ信号をフィルタリングすることを含んでもよい。本方法のさらなる実施形態によると、本方法はさらに、外部トリガ信号の正または負エッジを検出するように、トレースモジュールをプログラムすることを含んでもよい。
本願明細書は、例えば、以下の項目も提供する。
(項目1)
デバッグ能力を有するプロセッサデバイスであって、前記プロセッサデバイスは、
中央処理ユニットと、
トレースモジュールおよび外部インターフェースを含むデバッグ回路網と
を備え、
前記トレースモジュールは、実行された命令に関する情報を含むトレースストリームを生成し、前記トレースストリームは、前記外部インターフェースを通して出力され、
前記トレースモジュールはさらに、トリガ信号を検出し、検出の際にトレースパケットを前記生成されたトレースストリーム内に挿入するように動作可能である、プロセッサデバイス。
(項目2)
前記トリガ信号は、前記プロセッサに外部から印加されるトリガ信号である、項目1に記載のプロセッサデバイス。
(項目3)
前記トリガ信号は、内部イベントによって生成される、項目1に記載のプロセッサデバイス。
(項目4)
前記内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも1つを含む、項目3に記載のプロセッサデバイス。
(項目5)
前記トレースストリームは、パケットベースである、項目1に記載のプロセッサデバイス。
(項目6)
前記トレースパケットは、トリガソースに関する情報を含む、項目1に記載のプロセッサデバイス。
(項目7)
前記情報は、条件的に提供され、前記条件は、ユーザ定義されることができる、項目6に記載のプロセッサデバイス。
(項目8)
前記プロセッサデバイスは、複数の機能ピンを有し、1つのピンは、前記外部トリガ信号に対するトリガ入力として動作するように割り当てられることができる、項目2に記載のプロセッサデバイス。
(項目9)
データパケットは、前記トリガ信号の受信時にレポートされた命令の実行に一致する時間である、前記トレースストリーム内のポイントにおいて、前記トレースストリーム内に挿入される、項目1に記載のプロセッサデバイス。
(項目10)
前記デバッグ回路網はさらに、複数のイベントを組み合わせるように動作可能なイベントコンバイナを備え、イベントは、ブレークポイントおよび前記外部トリガ信号のうちの少なくともの1つによって作成されることができる、項目2に記載のプロセッサデバイス。
(項目11)
トレースデータは、前記イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別する、項目10に記載のプロセッサデバイス。
(項目12)
前記トリガ信号は、前記デバッグ回路網内でシステムクロックに同期される非同期信号である、項目1に記載のプロセッサデバイス。
(項目13)
前記外部トリガ信号を受信する外部ピンと連結された雑音排斥フィルタをさらに備える、項目2に記載のプロセッサデバイス。
(項目14)
前記トレースモジュールは、前記外部トリガ信号の正または負エッジを検出するようにプログラム可能である、項目2に記載のプロセッサデバイス。
(項目15)
プロセッサデバイス内で実行されたコードをデバッグするための方法であって、前記方法は、
中央処理ユニット(CPU)によってコードを実行することと、
前記CPUによって実行された命令のトレースストリームを生成することと、
トリガ信号を判定する際に、外部トリガ信号を識別するトレースパケットを前記トレースストリーム内に挿入することと
を含む、方法。
(項目16)
前記トリガ信号は、前記プロセッサに外部から印加されるトリガ信号である、項目15に記載の方法。
(項目17)
前記トリガ信号は、内部イベントによって生成される、項目15に記載の方法。
(項目18)
前記内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも1つを含む、項目17に記載の方法。
(項目19)
要求の際に、デバッグインターフェースを通して、前記トレースストリームを出力することをさらに含む、項目15に記載の方法。
(項目20)
データパケットは、前記トリガ信号の受信時にレポートされた命令の実行に一致する時間である、前記トレースストリーム内のポイントにおいて、前記トレースストリーム内に挿入される、項目15に記載の方法。
(項目21)
前記トレースストリームは、パケットベースである、項目15に記載の方法。
(項目22)
前記トレースパケットは、トリガソースに関する情報を含む、項目15に記載の方法。
(項目23)
前記情報は、条件的に提供され、前記条件は、ユーザ定義されることができる、項目22に記載の方法。
(項目24)
ブレークポイントおよび前記外部トリガ信号のうちの少なくとも1つによって、イベントを作成することと、
複数のイベントを組み合わせ、デバッグ機能を生成することと
をさらに含む、項目15に記載の方法。
(項目25)
トレースデータは、前記イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別する、項目24に記載の方法。
(項目26)
前記デバッグ機能は、トリガアウト信号または一時停止である、項目25に記載の方法。
(項目27)
前記トリガ信号は、前記デバッグ回路網内でシステムクロックに同期される非同期信号である、項目15に記載の方法。
(項目28)
外部ピンと連結された雑音排斥フィルタによって、前記外部トリガ信号をフィルタリングすることをさらに含む、項目15に記載の方法。
(項目29)
前記外部トリガ信号の正または負エッジを検出するように、前記トレースモジュールをプログラミングすることをさらに含む、項目15に記載の方法。
図1は、種々の実施形態による、統合されたデバッグモジュールのブロック図を示す。 図2は、図1のハードウェアブレークポイントブロック図をより詳細に示す。 図3は、図1のイベントコンバイナブロック図をより詳細に示す。 図4は、トリガインパルスが、どのようにトリガパケットをトレースデータ内で伝送させるかを表す。 図5は、トレース機能性を伴う、プロセッサデバイス内のデバッグユニットの可能性として考えられる実装詳細を示す。 図6は、図1に図示されるトレースブロック120の簡略化されたブロック図を示す。 図7は、プロセッサ実行およびトレースデータ読み出しのタイミング図を示す。 図8は、図6に図示されるトレースサブシステムの実施形態を示す。 図9は、提案されるトレース復元ハードウェアのブロック図を示し、マイクロプロセッサへのインターフェースを示す。 図10は、マイクロコントローラ内部クロッキング信号のタイミング図を示す。 図11は、トレースクロックおよびデータの関係を示す。 図12は、種々の実施形態による、内蔵デバッグユニットを伴う、マイクロコントローラと、外部回路内デバッグ(ICD)コントローラとを使用する、システムのブロック図を示す。
(詳細な説明)
種々の実施形態によると、標的デバイス内のデバッグユニットは、内部イベントおよび/または外部デバイスが、随意に、ブレークポイントを非同期的に生じさせることを可能にする、トリガ入力を有してもよく、ブレークポイントエントリは、トレースデータ出力内に記録される。しかしながら、ある場合には、実行の停止は、望ましくないまたはさらに危険な動作条件をもたらし得るため、外部トリガは、プロセッサの実行を停止しなくてもよい。いくつかの実施形態によると、トリガ入力は、外部イベントが起動中の命令に相関されることを可能にする(または、逆も同様)、具体的トレース記録を生じさせる。
トレースから命令データを記録するとき、ユーザがボタンを押下したときと、コードがその時点で行っていたこととの間にずれが存在する。したがって、本質的に、トレースパケットをトリガインパルス上に作成することによって、ユーザが、トレースストリームを分析するとき、CPUがコード実行ストリーム中に存在していた場所と、トリガインパルスが発行された時を整合させることを可能にする。
種々の実施形態による、命令データストリームの周辺トレースと組み合わせて、トリガインパルスが生じたことを示す特殊パケットが、トリガインパルスが検出されるとき、ストリーム中に現れる。
図1は、ある実施形態による、マイクロコントローラ内に統合され得る、回路内デバッグモジュールのブロック図を示す。しかしながら、前述のような一般的概念は、他のタイプのオンチップデバッグ回路網内に実装されることもできる。ブロック図は、例えば、マイクロコントローラ内に実装されることができ、以下の5つの基本ブロックから成り得る、モジュールを示す。
・ブレークポイント比較論理135
・ストップウォッチサイクルカウンタ論理150
・制御および状態機械論理145
・トレース論理120
・イベントコンバイナ論理125
CPU110は、内部バスを通して、ハードウェアブレークポイントユニット135と、イベント検出ユニット140と、制御論理ユニット145と、バックグラウンドインターフェース155と連結される。マルチプレクサ160は、専用デバッグクロックおよびデータピン165を通して、デバッグユニットと外部デバッガの連結を可能にするために使用される。制御論理145は、1つ以上の外部ピンと連結されてもよい。図1は、例示的TRGINピン185を示す。そのようなピンは、他の機能を伴わない、専用ピンであってもよい。しかしながら、特に、低ピンデバイスでは、そのようなピンは、プログラム制御下、異なる周辺デバイスに割り当てられることができ、したがって、そのプログラムされた割当に従って、異なる機能を行うことができる、マルチ機能ピンであってもよい。例えば、そのようなピンは、構成レジスタを用いて、トレーストリガイン機能に加え、シリアルインターフェースクロックピン、デジタルI/Oピン、アナログ入力ピン等としてアクションするようにプログラムされてもよい。図1に示されるように、制御論理はまた、ピン185と同様に、マルチ機能ピンであり得る、トリガアウトピン190を提供する。トレースモジュール120は、トレース機能停止入力ピン115と、トレースクロックおよびデータ出力ピン175と連結される。図1はまた、制御論理145を通して構成可能であり得る、パルス排斥フィルタ170および180を示す。そのようなフィルタを通した信号ルーティングは、図1には示されない。いくつかの実施形態によると、ブレークポイントデバッグは、命令が実行される前に、実行が一時停止されるように実装される(いわゆる「ゼロスキッド」動作)。他のデバッガ実施形態によると、これは、該当せず、コードが、停止または「スキッド」し、プロセッサが一時停止される前に、命令が実行することを可能にする場合、問題を生じさせ得る。外部イベントは、(定義上)命令実行ストリームと非同期である。したがって、その動作は、ゼロスキッド概念に匹敵しない。
内部信号debug_en=1であるとき、モジュールは、イネーブルにされ、全「一時停止」イベントを監視し、イベントを生成し、データ捕捉等を行う。内部信号debug_en=0である場合、全デバッグ論理は、ディスエーブルにされ、モジュールは、最小電力モードを消費するように構成される。
低侵入性デバッグを行うために、データをデバイスからリアルタイムでストリーミングする手段を有することが有用であり得る。トレースモジュール120は、読み取られる、または具体的アドレスに書き込まれるデータを取り出し、それをトレースポートから伝送する方法をサポートする。これは、リアルタイムウォッチポイントとして説明されることができる。デバイスの通常動作は、ウォッチポイントを使用するとき、インタラプトされない。
データ捕捉は、ハードウェアブレークポイントを生成するために使用されるものと同一のハードウェアを使用して行われてもよい。一時停止を生成するのと同時に、データ捕捉のためのブレークポイントを使用することは、両動作が生じることを可能にするであろう。しかしながら、データ捕捉およびデータマッチングを同時にイネーブルにすることは、特に、1を上回るブレークポイントカウントに対して、予想外の結果を生成し得る。データ捕捉およびデータ比較は、同一の物理的レジスタを使用するため、比較値は、捕捉毎に更新されるであろう。この目的を達成するために、内部または外部イベントのいずれかが、プロセッサ内のデバッグ回路網に、個別のデータパケットをトレースデータストリーム内に挿入させるトリガを生成することができる。外部イベントは、トリガイン入力TRGIN185に印加される外部信号であることができる。内部イベントは、ブレークポイント/ウォッチポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件等の任意のイベントであることができる。例外条件は、インタラプト、スリープモード開始または終了、スタックオーバーフロー/アンダーフロー、不正アドレスからの命令のフェッチを含んでもよい。表1および2は、可能性として考えられるイベントのリストを示す。これらの表は、包括的または排他的ではなく、トリガイベントに関する実施例として見なされるべきである。他の内部イベントまたはイベントの組み合わせが、具体的データパケットをトレースストリーム内に挿入するために、トリガ信号を生成するために使用されてもよい。
図2は、ハードウェアブレークポイントユニット135をより詳細に示す。ハードウェアブレークポイントは、プログラムまたはデータメモリのいずれか内のマッチングアドレスをブレークするように構成されることができる。この目的を達成するために、個別のコンパレータ220および230およびデコーディングユニット240が、図2に示されるように、提供される。ブレークポイントが、データメモリ上で動作するように選択されると、ブレークポイントは、加えて、データ値およびマスクが認められ、ある値のみ、ブレークポイントイベントを生成することを可能にすることができる。データブレークポイントはまた、随意に、読取または書込サイクルのみをブレークするように設定されることができる。あらゆる場合において、ブレークポイントは、ブレークポイントイベントが生成される前に、具体的イベントが、N回、生じなければならないようなカウンタ210を有する。これは、例えば、いくつかの実施形態によると、1〜256回の任意の値に設定されることができる。
図2のブロック図は、単一ブレークポイントに関して示される。しかしながら、実装されるブレークポイントの数は、種々の実施形態に従って、可変であって、多くのブレークポイントが、存在してもよい。図2は、種々のパラメータが、ブレークポイントのためのトリガ要件を定義するようにプログラムされることができる、例示的実施形態を示す。他の実施形態によると、より少ないまたはより多いそのようなパラメータが、使用されてもよい。例えば、ブレークポイントを生成するために必要なブレークポイント発生数は、カウンタ210内のBPxCNTパラメータによって設定されることができる。各ブレークポイントモジュールは、同じレジスタを有してもよい。
ブレークポイントは、イベントチャネル定義の中にリスト化され、サイクルカウンタ150を開始または停止する、イベントコンバイナステージ125を設定またはリセットする、トレースユニット120を開始または停止する、あるいはスタックスナップショットを撮影するために使用されることができる。
一実施形態によると、ブレークポイントがイネーブルにされるために、制御レジスタICDBPxCONのビットBPENが、設定されなければならない。本ビットが、クリアされる場合、本具体的ブレークポイントに対する全回路網は、ディスエーブルにされ、ブレークポイントイベントは、生成されないであろう。ブレークポイントは、認定条件のN回目の発生毎にのみ、アクションをトリガするように構成されることができる。例えば、3回目の発生毎にトリガするようにブレークポイントを設定するために、カウンタ210は、BPxCNT=2に設定される。個別の制御レジスタが、カウンタ210と組み合わせて使用され、その値をリロードし、および/または現在の状態を監視してもよい。
ブレークポイントはまた、例えば、関連付けられた構成レジスタ内に個別のビットを設定することによって、実行コンテキスト(メインラインコード、インタラプトハンドラ、または両方)に基づいて認定されてもよい。ブレークポイントは、したがって、プログラムが選択されたコンテキストから実行するときのみ、生じてもよい。
さらに別のブレークポイントパラメータは、構成レジスタ内に、プログラムカウンタ(PC実行アドレス)を監視することを可能にする、個別のビットを設定することによって設定されてもよい。プログラムメモリブレークは、ゼロスキッドであって、動作が実行される前に生じる。PCは、トリガ命令のアドレスを示すであろう。
個別の制御ビットが、クリアされる、例えば、BPAREN=‘0’であるとき、PCが所定のアドレスに等しくなると、ブレークは、トリガされる。BPAREN=‘1’であるとき、PCがアドレスの所定の包含範囲内にあると、ブレークは、トリガされる。
いくつかの実施形態によると、実行された命令のみ、ブレークポイントを生成することができる。PCが、実行されないアドレスにあるとき、ブレークポイントは、トリガしない。これは、以下を含む。
・フロー変更命令(CALL、RETURN等)、
・スキップされた命令(BTFSS、BTFSCに従って)、または
・PCL、FSR、または他の2つのサイクル命令後の次のフェッチ。
別の制御ビットフィールドが、制御レジスタ内で01、10、または11に設定されると、ブレークポイントは、データアクセス、すなわち、アドレスおよび値の両方を監視する。関連付けられたビットの3つの状態は、読取または書込サイクルが、ブレークポイントを判定するために使用されるかどうかを選択する。
データブレークポイントは、必然的に、データが読み取られた、または書き込まれた後、命令実行終了時にブレークを生じさせる(規定通りに)。あらゆる場合において、命令は、完了するまで実行する。故に、「ブレーク」は、実際には、次の命令実行時に生じ、PCは、トリガ命令後に命令を示すであろう。ブレークはまた、メモリアドレスおよびデータ値限定子の両方が満たされるときにトリガされてもよい。
サイクルカウンタ150は、ユーザコードがプロファイル化され得るようなストップウォッチ機能を提供するために使用されるカウンタである。サイクルカウンタは、個別の制御レジスタによって制御される。カウンタ150は、4つの8−ビットカウンタ/レジスタから成ってもよい。カウンタ150は、CPUのQ−サイクルの終了毎にインクリメントされてもよい。すなわち、マルチサイクル命令(例えば、GOTO)は、複数回、カウントを行う。
複数の機能が具体的イベントによって制御されることを可能にするために、可能性として考えられるソースの全てが、1つのイベントバスに組み合わせられてもよい。これは、サイクルカウンタ150、トレースユニット120、およびイベントコンバイナユニット125が、同一の設定を使用して、そのアクションを選択することを可能にする。
イベントコンバイナ300は、図3に示されるように、複数のイベント入力320を監視し、それらの入力の組み合わせおよびシーケンスに基づいて、一時停止またはトリガアウト190を生成することができる。イベントコンバイナ300は、個別の制御ビットが設定されると、イネーブルにされる。ディスエーブルにされたコンバイナ300は、出力イベントをもたらさない。イベントコンバイナ300は、イベントチャネル定義の中にリスト化され、サイクルカウンタ150を開始または停止する、イベントコンバイナステージ310を設定またはリセットする、トレースユニット120を開始または停止する、またはスタックスナップショットを撮影するために使用されることができる。イベントコンバイナステージ310は、そのステージに対する個別の制御ビットが、関連付けられた制御レジスタ内に設定されると、独立して、イネーブルにされる。ステージの現在の出力は、関連付けられたステータスビット内に反映されるであろう。ステージ310は、図3に示されるような暗示される順序を有し、以下のいくつかの方法で組み合わせられることができる。
・ステージは、個々に、イベントによってアクティブ化されることができる。
・ステージは、次の下位ステージがアクティブである間、イベントによってアクティブ化されることができる。
・ステージは、個々に、イベントによって非アクティブ化されることができる。
・ステージは、イベントによって、または次の下位ステージが非アクティブ化されると、非アクティブ化されることができる。
個別の制御ビットを設定することによって、組み合わせられたイベントの(N+1)回目の発生のみ、出力イベントを信号伝達するであろう。Nは、0〜255に設定されることができる。組み合わせられたトリガ条件が満たされる場合、レジスタは、1だけデクリメントされる。組み合わせられたトリガ条件が満たされる場合、イベントコンバイナイベントが、生成され、カウンタに、プリセット値がリロードされる。また、新しいカウント値が個別の制御レジスタに書き込まれると、随時、カウンタ内の値が、リロードされる。例えば、3回目の発生時にトリガするようにブレークポイントを設定するために、個別のカウンタ値は、2に設定されるべきである。
加えて、いくつかの実施形態によると、ピンTRGIN185にフィードされる外部信号は、ユーザ入力が、トレースストリーム内に挿入されるべきトレースパケットを生成し、一時停止を生成し、随意に、また、TRGOUT信号をトリガすることを可能にする。「極性」=0(図6)であるとき、トリガ入力は、アクティブ高および立ち上がりエッジ原因イベントである。「極性」=1であるとき、トリガ入力は、アクティブ低および立ち下がりエッジ原因イベントである。別の制御ビットは、フィルタを制御する、例えば、認識されるための最短時間の間、入力がアクティブ状態になければならないことを定義するために使用されてもよい。より短いパルスは、したがって、無視される。
TRGINイベントは、イベントチャネル定義の中にリスト化されることができ、サイクルカウンタ150を開始または停止する、イベントコンバイナステージ310を設定またはリセットする、トレースユニット120を開始または停止する、またはスタックスナップショットを撮影するために使用されることができる。トリガ入力の変化は、トレースがイネーブルにされる場合、トレースパケットを生成するであろう。
ブレークポイント等のイベントが、イネーブルにされたトリガに伴って生じると、TRGOUTピン195上にパルスが、生成される。基本トリガ出力信号動作は、個別の制御ビットを設定することによって構成される。これらの制御ビットは、例えば、トリガ出力が、ほぼTrigger Outputの持続時間の間、アサートされるように制御してもよい。隣接または重複イベントは、信号をアサートされた状態に保持してもよい。制御ビットはまた、出力が最短時間周期まで続くかどうか制御してもよい。TRGOUTワンショットがトリガされると、そのタイミング周期内に発生するさらなるイベントは、無視されるであろう。ワンショットがタイムアウトし、TRGOUTがゼロに戻った後、再び、別のイベントによってトリガされてもよい。ワンショットは、エッジトリガされ、イベント信号が持続する場合でも、所定の時間周期後、クリアするであろう。
ソフトウェアは、個別の制御ビットを設定することによって、トリガアウトを生じさせてもよい。デバイスが、ウェーク状態である場合、ビットは、1サイクル後、ハードウェアによってクリアされる。TRGOUTもまた、個別の制御ビットを書き込むことによって、クリアされてもよく、またはデバイスがウェックアップすると、自動的に、クリアされるであろう。
図4は、通常トレースストリームとともに、外部からアサートされる「トリガ入力」信号を示す。「トリガイン」パルスが、トレース命令ストリームの中間で生じると、「TRGTRC」パケットが、通常トレースストリーム内に挿入され、その時点において、ストリーム内でトリガが生じたことを示す。トリガ入力の変化は、個別の制御ビットが設定されている場合、トレースパケットを生成するであろう。極性ビット=0である場合、イベントは、立ち上がりエッジ上でトリガするであろう。極性ビット=1である場合、イベントは、立ち下がりエッジ上でトリガするであろう。図4に示されるように、トリガトレースパケットの挿入を生じさせる、外部から印加された信号は、命令の実行と同期しない。内部イベントによって生成されたトリガトレースパケットは、ほぼ同期する。しかしながら、同一の原理は、トレースデータストリーム内への挿入に関しても適用される。
図5は、トリガピンからトレースパケット書込クロックおよびデータまでの概念の実装の簡略化された略図である。種々の実施形態による、ある信号が、示されるが、パケットを伝送するトレースモジュールの部分およびトレース機能性のうちのいくつかは、多くの異なる方法で実現されることができ、したがって、図示されない。
図5に示される実施形態によると、トリガ信号は、外部ピン610を通して非同期的に着信し、例えば、雑音排斥フィルタ620を用いて、いくつかのフィルタリングを受けてもよい。しかしながら、そのようなフィルタはまた、省略され得る、あるいは実装される場合、アナログまたはデジタルフィルタまたは両方の組み合わせとして実装され得る。さらに、極性選択ユニット630も、いくつかの実施形態に従って、実装され得る。この目的を達成するために、雑音排斥フィルタ620の出力またはトリガ信号を直接受信する、単純XORゲート630が、提供されることができる。XORゲート630の第2の入力は、極性制御信号を受信する。したがって、着信トリガ信号は、反転されるか、またはされないかのいずれかとなる。故に、ユーザは、トリガパルスの極性にかかわらず、常時、正パルスを内部で生成するように、デバイスを制御することができる。しかしながら、外部信号の他の処理が、適用されてもよく、したがって、「トリガイン」機能性それ自体は、重要ではない。破線は、「トリガイン」セクションと「トリガイン」信号のトレース使用を分離する。
正トリガイン入力パルスは、デバイス内で同期しない。これは、イベントを検出し、それをレジスタする、トレースモジュールのための第1のフリップフロップ640に進む。第1のフリップフロップ640もまた、クロック信号としてのトリガイン入力パルスの接続のため、同期しない。レジスタされた非同期信号フリップフロップ出力Qは、次いで、それぞれ、トレースクロックtq2およびtq4の2つの後続内部クロックにわたって同期される。いくつかの実施形態による、これらの内部クロックは、命令クロックに同期されるが、いくつかの実施形態では、システムクロックは、実際には、1命令サイクルを実行するために、直交クロック、例えば、4q−クロックを使用し得るため、内部システムクロックの実際の命令クロックに対応しなくてもよい。図10は、命令の実行に関するシステムクロックclkinおよび関連直交信号の例示的タイミング図を示す。本実施形態では、clkinから派生した4つのクロックq1、q2、q3、q4は、1つの命令を実行するために使用される。トレースクロックは、内部クロックq1、q2、q3、q4から派生してもよく、またはこれらのクロックと同じであってもよい。
2つのフリップフロップ660および670が、直列に連結され、図5に示されるように、tq2およびtq4内部クロック信号によってクロックされる。フリップフロップ670の出力Qは、次いで、同期されたトリガ信号を提供する。フリップフロップ670の出力Qは、トレースモジュールイネーブル機能を提供するように実装される、ANDゲート670と連結されることができる。
本同期された信号は、本時点において、例えば、デバッグユニットのトレースモジュールの内側のANDゲート670を通して、安全に使用され得る。同期された信号は、「アウトバンド」書込フリップフロップ680に進み、「アウトバンド」は、命令を意図しないが、事実上、書込クロックを作成するであろう。書き込まれるべきデータは、以下のように実装されてもよい。
begin
if(.....)
else if(....)
else if(generate_trigger_in_packet)
data=TRIGIN PACKET
else
end;
したがって、フリップフロップ680は、同期された書込クロック信号を生成し、デバッグユニットは、通常トレースストリーム内に挿入されるべきデータを用いて、実際のデータパケットを生成する。挿入されるべきデータは、所定であることができる、またはイベント依存データを含む、所定かつ動的部分を有してもよい。
前述のように、本パケットを生成するための機構は、例えば、送信優先順位が与えられる、大規模if−elseif−elseステートメントであることができる。パケットデータの生成は、前述のように優先順位化されてもよく、種々の「if−elseif」ステップは、他の出力信号の生成も可能にし、したがって、所定の順序または優先順位を作成する。いくつかの実施形態によると、トリガイントレースパケットは、前述の実施例に示されるように、オーバーフローエラーおよび他の類似イベント等の他のものより比較的に低優先順位を有し得る。
いくつかの実施形態によると、実際のトレーストリガデータは、実際の「トリガイン」書込信号が同期されている間、生成されてもよい。したがって、本データが、ここでパケットを発生させ、書込クロックが生じると、トレースストリーム内に挿入され得るパケット内にトリガデータを書き込むであろうという、ある概念が見られる。これは、他の固有トレースパケット、故に、優先順位等の必要性と相互作用する。
以下のセクションは、具体的実施形態による、デバイスと外部デバッグツールとの間のトレースデータインターフェースについて詳述する。他の実施形態は、異なる実装を使用してもよい。例えば、図6に示されるようなトレースサブシステムは、デバッグツールによって捕捉および分析され得る、命令実行ストリームのリアルタイム記録を提供する。トレース動作は、デバッグツールが、ソースコードおよびプログラムメモリコンテンツへのアクセスを有し、CPU動作のいくつかの側面を推測することができると仮定する。
命令が、PCLに書き込むと(直接またはINDxを通してのいずれか)、新しいPCは、プログラムメモリ内の任意の場所にあってもよい。この場合、命令パケットは、いわゆるフルプログラムカウンタ(FPC)パケットと置換される。FIFOは、図6に示されるように、コアデータレートとデバッグツールデータレート(TRSTALLによって統制される)をマッチングするために使用されることができる。FIFOは、図6に図示されるように、CPUエンコーダから充填され、データエンコーダによって空化される。FIFOは、最大4096命令パケットを保持するが、有効動作サイズは、個別の制御ビットによって選択されてもよい。WATCHイベントパケットもまた、FIFO内に置かれ、したがって、処理中の命令パケットの実際の数は、通常、それより少ないであろう。図11は、異なる構成設定A、B、C、およびDによる、トレースクロックとデータとの間の関係を示す。TRCLK出力は、トグルすると、各クロックエッジに伴って、1データワードを出力する。出力クロックレートは、常時、CPU命令レートにリンクされ、ソフトウェアがSYSCLKを変更する場合、またはリセットがSYSCLKを変更する場合、変化するであろう。個別の構成によると、出力レートは、常時、命令周期あたり2つのトレースワードであることができる。レートは、命令あたり1および1/2まで減少されることができるが、これは、FIFOオーバーフローにつながる可能性が高くなるであろう。TRCLK出力は、データ変化に伴って、位相が一致するか、またはTRCPS制御ビットの設定に応じて、位相がずれるかのいずれかとなるように選択されることができる。FIFO内エンコーディングは、ラインエンコーディングとは異なり、したがって、各FIFO場所は、TRDATインターフェース内で3データワードも表し得る。いくつかの実施形態によると、トレースサブシステム内のFIFOのオーバーフローもまた、トリガトレースパケットを挿入するためのトレーストリガ信号を生成するイベントとして使用されてもよい。
トレース機能停止機能が、実装されることができ、構成ビットが、TRSTALL入力が有効であるかどうか判定してもよい。例えば、制御ビットTRXSE=1および信号TRSTALL=1であるとき、トレースFIFOは、ペイロード境界における空化を停止し、クロックを停止するであろう。TRSTALL(tr_stall_ピン)が‘0’に戻ると、クロッキングは、再開し、FIFOは、データを再び空化し始めるであろう。トレースがイネーブルにされ、FIFOが空であるとき、IDLEまたはSLEEPパケットが、デバイスのスリープ状態に従って送信される。FIFOはまた、いくつかの実施形態によると、空にされることができ、トレースが、非アクティブ化されることができる。FIFOがフルになる場合、システム応答は、個別の制御設定に依存してもよい。いずれの場合も、オーバーフロー状態(機能停止される、またはデータをポストしない)は、個別の制御レジスタによって選択されるように、FIFOが25%または75%フルのいずれかになるまで、持続するであろう。トレース実装に関する他の機能が、いくつかの実施形態によると、追加されてもよく、説明されるようないくつかの機能は、実装されなくてもよい。典型的トレース信号タイミング図は、図7に示される。トレースペイロードパケットは、CPUコアが実行する命令および選択されたデータイベントをエンコードし、また、トレースストリーム同期を提供する。ある実施形態によると、ほとんどのパケットは、1つまたは2つの7ビットワード、あるいはいわゆるフルプログラムカウンタ(FPC)パケットの場合、3ワードから成ってもよい。概して、パケットは、「ワード1」および随意の「ワード2」から成る。しかしながら、他の形式も、異なる実施形態に従って使用されてもよい。具体的実施形態によると、「ワード1」の値は、パケットを識別し、「ワード2」が存在するかどうかを暗示する。命令実行(EX、EXD、およびRESET等)と同期するパケットおよび非同期「イベント」パケットは、以下により詳細に説明されるように、WATCH、RESET、およびTRIGGERを含む。
同期パケットは、実行の順序で送られる。イベントパケットは、イベントとほぼ同時にストリーム中に現れるが、いくつかのイベントが同時に生じる場合、いくつかのレポートは、遅延されるであろう。ある場合には、FPCは、同期レポートであるが、他の場合には、イベントである。トランスポート層(TR)パケットRESYNC、IDLE、およびENDは、インターフェースデータストリームの種々の状態を管理および識別するために、要求に応じて挿入される。TRパケットRESYNCおよびIDLEは、命令トレースを分析すると破棄されてもよい。
RESYNCパケットは、受信機が、正しく同期されていることを検証し得るように、個別の制御ビットによって規定されるように、周期的に挿入される。所定の時間間隔にほぼ対応する時に、他のFPCがその間隔内で送信されなかった場合のみ、FPCは、ストリームに追加されるであろう。これは、受信機が命令ストリームを正しく追跡していることのチェックを提供する。挿入されたFPCは、常時、追従する命令のアドレスを示す。パケット内のワード数は、パケットワード1の値によって判定される。RESYNCが、「ワード2」に対する正しくない値とともに、ワード1として受信される場合、ストリームは、同期からずれ、エラーがフラグされるはずである。
表3は、2ワードパケットを伴う、最悪の場合の状況を図示し、2番目のワードは、0x7Dであって、その後に、RESYNCが続く。受信機が適切に同期されている場合、受信されたワード#3は、ワード1となり、ワード#4は、ワード2となり、パケット#2として示される、完全RESYNC対を形成するであろう。パケット#3は、ワード#5から開始し、正しく解釈されるであろう。
表42は、第1のワードを複製し、受信機を同期から外す、クロックバウンスを伴う同一のデータを示す。ワード#1および#2は、データ=0x71(但し、これは、正しくない解釈である)を伴うEXDパケットとして受信され、ワード#3および#4は、RESYNC対として現れる。ワード#5は、新しいRESYNCパケットのワード1として見なされるが、ワード#6は、0x7Dではなく、同期から外れた状態を表す。ワード#6は、新しいパケットを開始する。
トレースが開始するとき、またはデバッグ実行の間、一時中断された後、トレースが再開するときに送信される第1のパケットは、常時、FPCであろう。フルプログラムカウンタ(FPC)パケットは、ストリーム内に現れる次の命令の絶対アドレスをレポートする。FPCは、トレースの開始、オーバーフロー後の再開、および単に、次の命令のアドレスを示す、デバッグ後の再開の状況においてレポートする。
FPCの全ての他の使用は、命令が実行され、ある場合には、その命令に対してレポートされたであろうパケットを置換することを示す。FPCが、分岐またはプログラムカウンタ変更命令の実行を表すと、レポートされた値は、分岐標的アドレスである。FPCに続く命令パケットは、FPCがポイントする命令の実行を表す。
GOTOおよびCALL命令は、プログラムカウンタPC[10:0]の最下位ビットが、デバッグ環境(アセンブリコード内)で既知であって、新しいPCの上位4ビットのみ、上位部分プログラムカウンタ(UPC)パケット内でレポートされると仮定する。しかしながら、他の実施形態は、より多いまたはより少ない情報をレポートしてもよい。レポートされた値は、0x0F&(PCLATH>>3)であることができ、PCLATHは、プログラムカウンタの上位ビットにラッチする、実装固有のレジスタを表す。相対分岐(BRA)の宛先は、ソースコードに既知であるため、命令は、単に、EXとしてレポートされる。種々のトレースペイロードは、実装されてもよい。表5は、異なるペイロード信号の実施例を示す。
表6は、実際のトレース実施例を示す。
図8は、トレースサブシステム700の簡略化されたブロック図を示す。サブシステム700は、命令コードをコアおよびWATCHイベント信号から受信し、TRDAT信号上における配信のために、本データをフォーマットする。シーケンスコントローラ710は、命令およびWATCHデータをFIFOにロードすることに関与する。各データパケットは、単一16−ビットワードとしてエンコードされる。q34の間、WATCH信号は、サンプリングされ、最高優先順位の信号が、エンコード、ロード、およびリセットされる。2つ以上の信号が、アサートされる場合、最高優先順位の信号のみ、ロードされ、他は、後続q34の機会の間、待機しなければならない。レポート優先順位は、ブレークポイント番号に基づくため、イベントは、順序外でレポートされてもよい。q12の間、以前の命令からのデータは、エンコードおよびロードされる(オプコードは、q3においてエンコードされ、バスデータは、安定しq3−q3、全て、立ち上がりq1において有効である)。概して、これは、命令周期毎に生じる。分岐および呼び出し命令ならびにインタラプトサイクルの場合、第1のサイクルの間、何もロードされず、パケットは、2回目のサイクルの間、エンコードされ(いわゆる「強制NOP」)、UPCおよびFPCが、正しいPC値とともに送られることを可能にする。その結果、2つのWATCHパケットが、分岐の間、ロードされてもよい。SKIPおよびSTALLは、現在のコア動作に基づいてエンコードされる。
シーケンスコントローラ710は、命令サイクルあたり2回ロードすることができ、ストリームマネージャ730は、命令サイクルあたり2回ロードすることができ、命令サイクルあたり最大4メモリサイクルを要求する。FIFOコントローラ720は、シーケンスコントローラ710によって提供されるデータを管理する。データは、ストリームマネージャ730によって要求されると、同一の順序で配信される。ストリームマネージャ730は、16−ビットFIFOワードをTRDAT信号上で伝送されるデータワードに再フォーマットする。いくつかのパケット(例えば、EX)は、FIFOワード毎に単一TRDATワードをもたらす一方、他(例えば、FPC)は、より多くをもたらす。要求に応じて、トランスポート管理パケットRESYNC、IDLE、およびENDが、ストリーム内に挿入され、読み出し動作は、TRSTALL入力に従って中断される。2つのTRDATワードが、各命令サイクル周期の間に伝送される。TRCLK信号は、システムリセットの間、中断するであろう(サイクルの延長部分)(データは、損失されないであろう)。
図9は、トレース受信機として動作するデバッグツール820と連結される、種々の実施形態による、マイクロコントローラ810を伴うシステム800を示す。デバッグツールは、例えば、本出願人によって製造された回路エミュレータ内のReal−ICEであることができる。受信機820は、トレース同期を行い、全IDLEおよびトランスポートパケットを破棄し、残りのパケットのバンドルを遠隔ホスト830、例えば、パケットストリーム解釈が行われる、パーソナルコンピュータまたはワークステーションに伝送する。
・ワード1分析-パケットを3ワード幅データバスに変換する。
・ダブレット(RESYNC、OVERFLOW等)を検証し、(a)ダブレットが連続ワード中にないとき、または(b)非実装ワード1コード値が認められるとき、同期エラーをフラグする。
・IDLEおよび他のトランスポートパケットを破棄し、残りの値をFIFOにスタックする。
・パケット全体を遠隔ホストに伝送する。
TRSTALLをアサートすると、受信機820は、最大もう6つのTRDATワード(2つの連続FPCパケットの均等物)に加え、再同期パイプラインの待ち行列に追加され得る、2ワードを受け取る準備ができる。TRSTALLを解除すると、パケットワード1整合が、保証される。IDLEパケットのストリングから、大部分、または時として、全部が、破棄され、遠隔ホストに送られず、帯域幅を削減することができる。非実装オプコードおよびFPCワード3(7’h5x)もまた、同期エラーとしてフラグされ、1ワードパケットとして取り扱われるべきである。
FPCの3番目のワードは、単一ワードパケットのスタイルでエンコードされる(例えば、コード7’h5x)。同期しているかどうかにかかわらず、例えば、7’h5xの任意のワードに続くワードは、新しいパケットのワード1であると仮定されてもよい。ワード1を追跡する目的のために、OVERFLOW、RESYNC、SLEEP、およびENDパケットは、1ワードパケットとして取り扱われるべきである。7’h7Dが、1ワードパケットとして取り扱われるとき、別の7’h7D(対合されたRESYNCワード)である場合でも、続くパケットは、常時、ワード1値となるであろう。ワード1整合(疑似)データは、ダブレット分析にパスされ、2つのRESYNCがストリーム内で連続的に現れないとき、同期失敗が認識される。同様に、OVERFLOW(7’h77)は、受信機が同期から外れているときに現れ得、2番目のワードがマッチングしない場合でも、正確に解釈されなければならない。これもまた、同期エラーをフラグし得る。受信機が、同期から外れている場合、1つのみの7’h7Cまたは7’h7Fが、最後に現れ得、第2の値を待機している間、受信機がハングアップするのに好適ではないであろうため、類似論法は、SLEEPおよびENDパケットにも適用されることができる。その一方で、3つの同じワードが、現れる場合もあり、いずれも受信機を混乱させるべきではない。
完全分析のために、ホスト830は、トレースデータを、マイクロプロセッサをプログラムするために使用されたオリジナルソースコードと比較しなければならない。大部分の命令に対して、トレースデータは、実行が生じたことを宣言するが、動作詳細は、含まれない。分岐が、EXパケット(TRFPCB=0)のみをもたらすとき、分岐宛先は、ソースコードを検証することによってのみ判定されることができる。同様に、具体的実施形態によると、PCLATHへの書込は、部分的データのみを送り、評価を完了するために、ソース知識を要求する。動作に応じて、STALLパケットが先行する、または影響を受ける命令に続いてもよい。STALLパケットは、ユーザのディスプレイ上にハイライトされた表記とともに、非典型的動作(例えば、不揮発性メモリへのファイル選択レジスタ(FSR)書込)が生じたことの示唆として見られ得る。WATCHレポートは、多くのパケットによって、トリガ命令を遅延させてもよい。高密度に取り込まれたウォッチは、実際には、同一のウォッチが、読み出しが生じる前に、トリガする場合、損失され得る。ウォッチポイントは、データアドレスのみを識別するため、トレース分析は、直接アドレスモード(BSRおよびオプコードの知識を要求する)から、または間接モード(FSRの知識を要求する)からかにかかわらず、データアクセスポインタ値を再構成可能でなければならない。ウォッチデータは、常時、ウォッチイベントの最新の発生に由来する。いくつかのFPCパケットは、命令が実行された(例えば、RETURN命令)ことを暗示するが、他のインスタンスは、単に、情報価値があることに留意されたい。
図12は、開発プログラムを起動し、例えば、USBインターフェースを介して、外部デバッガ/プログラミングユニット520と接続される、パーソナルコンピュータ等のホストを伴う、典型的デバッグ/プログラミングシステム500を示す。外部デバッガプログラミングユニット520は、デバッガ/プログラマ520内で生成された電源電圧を供給し得る、専用インターフェースを提供する。しかしながら、他の実施形態は、専用電下を介して、供給電圧を供給してもよく、または標的システムは、自己給電されてもよい。実際のデバッグ/プログラミングインターフェースは、デバッガ/プログラミングユニット520によって提供される単方向性クロック信号ICDCLKおよび双方向性データラインICDDataを伴う、同期シリアルインターフェースによって提供されてもよい。したがって、最低限でも、3つの接続ライン、ICDCLK、ICDData、および基準電位(GND)が、デバッガ/プログラミングユニット520と、最低限として、前述のように、種々の実施形態による、デバッグ/プログラミングインターフェースを伴うマイクロコントローラであり得る、標的システム510を連結するために使用され得る。加えて、前述のような外部トリガイン信号540が、図12に示されるように、標的システム510内に実装されてもよく、または回路内デバッガ/プログラマ520およびトレース信号は、標的デバイス510によって、専用信号ライン550を通して、回路内デバッガ/プログラマに自動転送される。
そのようなシステムは、ユーザが、ホスト上で起動するデバッグプログラムを、プログラムがリアルタイムで実行している間、前述されたような条件を有する種々のブレークポイントを設定し、トレース情報を受信するようにプログラムすることを可能にする。デバッグソフトウェアは、ソースコード内のその位置に関して、種々のブレークポイントを追跡するが、デバッガ/プログラマ520は、個別のブレークポイントを設定し、その関連付けられたレジスタを構成する、ブレークポイント情報を標的デバイスに通信する。また、トレース能力の設定および構成は、デバッガ/プログラマ520によって、標的デバイス510に通信される。例えば、メモリ内に記憶されたデータ値のマッチングによってトリガされる具体的ブレークポイントが、設定されてもよい。ユーザは、次いで、ホストPC530上で起動するデバッガソフトウェアを通して、標的デバイス510のソフトウェアの実行を開始する。標的ソフトウェアの実行は、ブレークポイントが検出されるときのみ停止される。しかしながら、トレース情報は、標的プログラムの実行の間、継続して自動転送される。ホストコンピュータ530は、本トレースデータを評価し、テキスト形態において、またはグラフィカルディスプレイを使用してのいずれかにおいて、利用することができる。
本実施形態は、前述のような特徴を実装することによって、トレースストリームのより優れた分析を可能にする。種々の実施形態は、したがって、オンチップデバッグ能力水準を高め、高度デバッグ能力を多くの異なるユーザにもたらすことが可能となるであろう。

Claims (32)

  1. デバッグ能力を有するプロセッサデバイスであって、前記プロセッサデバイスは、
    中央処理ユニットと、
    トレースモジュールおよび外部インターフェースを含むデバッグ回路網であって、前記トレースモジュールは、実行された命令に関する情報を含むトレースストリームを生成し、前記トレースストリームは、前記外部インターフェースを通して出力される、デバッグ回路網と、
    独立したトリガ入力として割り当てられるように構成可能な外部ピンであって、前記トレースモジュールはさらに、前記外部ピンに印加されるトリガ信号を検出し、前記トリガ信号の検出の際に、前記命令の実行をインタラプトせずにトレースパケットを前記生成されたトレースストリーム内に挿入するように動作可能である、外部ピンと、
    外部トレース機能停止入力ピンと
    を備え、前記外部トレース機能停止入力ピンにおける所定の論理状態が、前記トレースモジュールに前記トレースストリームの出力を停止させる、プロセッサデバイス。
  2. 前記外部ピンは、マルチ機能ピンである、請求項1に記載のプロセッサデバイス。
  3. トリガ信号は、内部イベントによって生成されることもできる、請求項1に記載のプロセッサデバイス。
  4. 前記内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも1つを含む、請求項3に記載のプロセッサデバイス。
  5. 前記トレースストリームは、パケットベースである、請求項1に記載のプロセッサデバイス。
  6. 前記トレースパケットは、トリガソースに関する情報を含む、請求項1に記載のプロセッサデバイス。
  7. 前記情報は、条件的に提供され、前記条件は、ユーザ定義されることができる、請求項6に記載のプロセッサデバイス。
  8. 前記プロセッサデバイスは、複数のマルチ機能ピンを有し、前記マルチ機能ピンのうちの1つは、前記外部トリガ信号に対するトリガ入力として動作するように割り当てられることができる、請求項2に記載のプロセッサデバイス。
  9. データパケットは、前記トリガ信号の受信時にレポートされた命令の実行に一致する時間である、前記トレースストリーム内のポイントにおいて、前記トレースストリーム内に挿入される、請求項1に記載のプロセッサデバイス。
  10. 前記デバッグ回路網は、複数のイベントを組み合わせるように動作可能なイベントコンバイナをさらに備え、イベントは、少なくとも、ブレークポイントおよび前記外部トリガ信号のうちの1つによって作成されることができ、前記イベントコンバイナは、イベントのシーケンスを検出するように構成可能である、請求項1に記載のプロセッサデバイス。
  11. 前記イベントコンバイナは、個々にイネーブルにされることができる複数のイベントコンバイナステージを備える、請求項10に記載のプロセッサデバイス。
  12. トレースデータは、前記イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別する、請求項10に記載のプロセッサデバイス。
  13. 前記トリガ信号は、前記デバッグ回路網内でシステムクロックに同期される非同期信号である、請求項1に記載のプロセッサデバイス。
  14. 前記外部トリガ信号を受信する前記外部ピンと連結された雑音排斥フィルタをさらに備える、請求項2に記載のプロセッサデバイス。
  15. 前記トレースモジュールは、前記外部トリガ信号の正または負エッジを検出するようにプログラム可能である、請求項2に記載のプロセッサデバイス。
  16. 前記外部トレース機能停止入力ピンの機能停止機能をイネーブルにするように構成される制御レジスタをさらに備える、請求項1に記載のプロセッサデバイス。
  17. プロセッサデバイス内で実行されたコードをデバッグするための方法であって、前記方法は、
    中央処理ユニット(CPU)によってコードを実行することと、
    前記CPUによって実行された命令のトレースストリームを生成することと、
    外部ピンを通して受信されるトリガ信号を判定する際に、前記実行されたコードをインタラプトせずに外部トリガ信号を識別するトレースパケットを前記トレースストリーム内に挿入することと、
    外部トレース機能停止入力ピンを監視することであって、前記外部トレース機能停止入力ピンが第1の論理状態にある場合にトレースモジュールが前記トレースストリームを出力し、前記外部トレース機能停止入力ピンが第2の論理状態にある場合に前記トレースモジュールが前記トレースストリームの出力を停止する、ことと
    を含む、方法。
  18. 前記外部ピンは、マルチ機能ピンである、請求項17に記載の方法。
  19. 前記トリガ信号は、内部イベントによって生成される、請求項17に記載の方法。
  20. 前記内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも1つを含む、請求項19に記載の方法。
  21. 要求の際に、デバッグインターフェースを通して、前記トレースストリームを出力することをさらに含む、請求項17に記載の方法。
  22. データパケットは、前記トリガ信号の受信時にレポートされた命令の実行に一致する時間である、前記トレースストリーム内のポイントにおいて、前記トレースストリーム内に挿入される、請求項17に記載の方法。
  23. 前記トレースストリームは、パケットベースである、請求項17に記載の方法。
  24. 前記トレースパケットは、トリガソースに関する情報を含む、請求項17に記載の方法。
  25. 前記情報は、条件的に提供され、前記条件は、ユーザ定義されることができる、請求項24に記載の方法。
  26. イベントを、少なくとも、ブレークポイントおよび前記外部トリガ信号のうちの1つによって作成することと、
    複数のイベントを組み合わせることにより、デバッグ機能を生成することと
    をさらに含み、前記イベントコンバイナは、さらに、イベントのシーケンスを検出するように構成可能である、請求項17に記載の方法。
  27. トレースデータは、前記イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別する、請求項26に記載の方法。
  28. 前記イベントコンバイナは、個々にイネーブルにされることができる複数のイベントコンバイナステージを備える、請求項27に記載の方法。
  29. 前記トリガ信号は、デバッグ回路網内でシステムクロックに同期される非同期信号である、請求項17に記載の方法。
  30. 外部ピンと連結された雑音排斥フィルタによって、前記外部トリガ信号をフィルタリングすることをさらに含む、請求項17に記載の方法。
  31. 前記外部トリガ信号の正または負エッジを検出するようにトレースモジュールをプログラミングすることをさらに含む、請求項17に記載の方法。
  32. 制御レジスタ内のビットを設定することにより、前記外部トレース機能停止入力ピンの機能停止機能をイネーブルにするステップをさらに含む、請求項17に記載の方法。
JP2015511624A 2012-05-07 2013-05-07 命令トレース能力を有するプロセッサデバイス Active JP6397815B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261643690P 2012-05-07 2012-05-07
US61/643,690 2012-05-07
US13/888,357 US9377507B2 (en) 2012-05-07 2013-05-06 Processor device with instruction trace capabilities
US13/888,357 2013-05-06
PCT/US2013/039944 WO2013169773A1 (en) 2012-05-07 2013-05-07 Processor device with instruction trace capabilities

Publications (3)

Publication Number Publication Date
JP2015516100A JP2015516100A (ja) 2015-06-04
JP2015516100A5 JP2015516100A5 (ja) 2016-06-30
JP6397815B2 true JP6397815B2 (ja) 2018-09-26

Family

ID=48570433

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015511624A Active JP6397815B2 (ja) 2012-05-07 2013-05-07 命令トレース能力を有するプロセッサデバイス

Country Status (6)

Country Link
US (1) US9377507B2 (ja)
EP (1) EP2847683B1 (ja)
JP (1) JP6397815B2 (ja)
KR (1) KR20150008428A (ja)
CN (1) CN104272271B (ja)
WO (1) WO2013169773A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103885845A (zh) * 2012-12-21 2014-06-25 祥硕科技股份有限公司 集成电路的除错系统及其除错方法
US10216616B2 (en) * 2016-07-02 2019-02-26 Intel Corporation Cooperative triggering
KR20180054364A (ko) 2016-11-15 2018-05-24 삼성전자주식회사 트레이스 데이터를 생성하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
CN107609187A (zh) * 2017-10-09 2018-01-19 郑州云海信息技术有限公司 一种统计文件系统中异步操作的方法、系统及相关装置
US10754759B1 (en) * 2018-02-05 2020-08-25 Xilinx, Inc. Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit
US11237946B2 (en) * 2018-05-03 2022-02-01 Sap Se Error finder tool
CN110515754B (zh) * 2018-05-22 2021-01-26 深圳云天励飞技术有限公司 神经网络处理器的调试系统及方法
GB2605796B (en) * 2021-04-13 2023-06-28 Advanced Risc Mach Ltd Apparatus and method for generating debug information

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07104800B2 (ja) * 1987-05-25 1995-11-13 日本電気株式会社 プログラム評価装置
JP3116706B2 (ja) * 1994-02-04 2000-12-11 横河電機株式会社 トリガ入力回路
JPH08179965A (ja) * 1994-12-26 1996-07-12 Mitsubishi Denki Semiconductor Software Kk イベント検出回路
JPH1124959A (ja) * 1997-07-02 1999-01-29 Hewlett Packard Japan Ltd マイクロプロセッサのトレース情報出力方法
EP0869434A3 (en) * 1997-03-31 1999-09-15 Hewlett-Packard Company Method for outputting trace information of a microprocessor
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
JP2002202900A (ja) * 2000-12-28 2002-07-19 Seiko Epson Corp デバッグ装置
US7231339B1 (en) * 2002-03-28 2007-06-12 Cypress Semiconductor Corporation Event architecture and method for configuring same
US6948155B2 (en) 2002-11-22 2005-09-20 Texas Instruments Incorporated Little offset in multicycle event maintaining cycle accurate tracing of stop events
US7325169B2 (en) 2002-12-17 2008-01-29 Texas Instruments Incorporated Apparatus and method for trace stream identification of multiple target processor events
TW200401188A (en) * 2003-09-16 2004-01-16 Via Tech Inc Debug device and method thereof
US7219265B2 (en) * 2003-12-29 2007-05-15 Agere Systems Inc. System and method for debugging system-on-chips
US7627784B1 (en) * 2005-04-06 2009-12-01 Altera Corporation Modular processor debug core connection for programmable chip systems
CN1851668A (zh) * 2006-06-01 2006-10-25 北京天碁科技有限公司 片上系统芯片、片上系统芯片的跟踪调试系统及方法
US20080082801A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Apparatus and method for tracing instructions with simplified instruction state descriptors
JP2008191788A (ja) * 2007-02-01 2008-08-21 Ricoh Co Ltd 情報処理装置
WO2008099657A1 (ja) * 2007-02-14 2008-08-21 Nec Corporation 半導体集積回路、デバッグ・トレース回路、および半導体集積回路動作観測方法
CN101751327B (zh) * 2008-12-04 2012-04-18 北京中电华大电子设计有限责任公司 嵌入式处理器的跟踪调试方法
JP2011013867A (ja) * 2009-06-30 2011-01-20 Panasonic Corp データ処理装置、性能評価解析システム
US8566645B2 (en) * 2010-12-02 2013-10-22 Advanced Micro Devices, Inc. Debug state machine and processor including the same

Also Published As

Publication number Publication date
US9377507B2 (en) 2016-06-28
EP2847683B1 (en) 2019-07-03
JP2015516100A (ja) 2015-06-04
WO2013169773A1 (en) 2013-11-14
CN104272271A (zh) 2015-01-07
CN104272271B (zh) 2017-12-26
US20130318408A1 (en) 2013-11-28
KR20150008428A (ko) 2015-01-22
EP2847683A1 (en) 2015-03-18

Similar Documents

Publication Publication Date Title
JP6397815B2 (ja) 命令トレース能力を有するプロセッサデバイス
JP6220863B2 (ja) リセット条件トレース能力を伴うプロセッサデバイス
JP6116670B2 (ja) インタラプトステータスに基づく構成可能なブレークポイントを有するデバイス
KR101430218B1 (ko) 디버그 상태 기계 및 이를 포함하는 프로세서
US7886271B2 (en) Embedding event information in the timing stream
US7274313B2 (en) High speed data recording with input duty cycle distortion
US7721263B2 (en) Debug event instruction
US20060255972A1 (en) Trace Receiver Data Compression
US20060255985A1 (en) Reissue an ID to a Data Log Even if the Same ID May Be Repeated
US20060255980A1 (en) Behavior of Trace in Non-Emulatable Code
US20060255976A1 (en) Distributed Depth Trace Receiver
US20060255973A1 (en) Multi-Port Trace Receiver
US7721267B2 (en) Efficient protocol for encoding software pipelined loop when PC trace is enabled
US20060255978A1 (en) Enabling Trace and Event Selection Procedures Independent of the Processor and Memory Variations
US7676697B2 (en) Using a delay line to cancel clock insertion delays
US7590893B2 (en) Recording control point in trace receivers
US20060255975A1 (en) Distributed Width Trace Receiver
US7613951B2 (en) Scaled time trace

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160506

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160506

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170501

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180314

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: 20180822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180903

R150 Certificate of patent or registration of utility model

Ref document number: 6397815

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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