(57)【特許請求の範囲】
【請求項１】
デバッグ能力を有するプロセッサデバイスであって、前記プロセッサデバイスは、
中央処理ユニットと、
トレースモジュールおよび外部インターフェースを含むデバッグ回路網であって、前記トレースモジュールは、実行された命令に関する情報を含むトレースストリームを生成し、前記トレースストリームは、前記外部インターフェースを通して出力される、デバッグ回路網と、
独立したトリガ入力として割り当てられるように構成可能な外部ピンであって、前記トレースモジュールはさらに、前記外部ピンに印加されるトリガ信号を検出し、前記トリガ信号の検出の際に、前記命令の実行をインタラプトせずにトレースパケットを前記生成されたトレースストリーム内に挿入するように動作可能である、外部ピンと、
外部トレース機能停止入力ピンと
を備え、前記外部トレース機能停止入力ピンにおける所定の論理状態が、前記トレースモジュールに前記トレースストリームの出力を停止させる、プロセッサデバイス。
【請求項２】
前記外部ピンは、マルチ機能ピンである、請求項１に記載のプロセッサデバイス。
【請求項３】
トリガ信号は、内部イベントによって生成されることもできる、請求項１に記載のプロセッサデバイス。
【請求項４】
前記内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも１つを含む、請求項３に記載のプロセッサデバイス。
【請求項５】
前記トレースストリームは、パケットベースである、請求項１に記載のプロセッサデバイス。
【請求項６】
前記トレースパケットは、トリガソースに関する情報を含む、請求項１に記載のプロセッサデバイス。
【請求項７】
前記情報は、条件的に提供され、前記条件は、ユーザ定義されることができる、請求項６に記載のプロセッサデバイス。
【請求項８】
前記プロセッサデバイスは、複数のマルチ機能ピンを有し、前記マルチ機能ピンのうちの１つは、前記外部トリガ信号に対するトリガ入力として動作するように割り当てられることができる、請求項２に記載のプロセッサデバイス。
【請求項９】
データパケットは、前記トリガ信号の受信時にレポートされた命令の実行に一致する時間である、前記トレースストリーム内のポイントにおいて、前記トレースストリーム内に挿入される、請求項１に記載のプロセッサデバイス。
【請求項１０】
前記デバッグ回路網は、複数のイベントを組み合わせるように動作可能なイベントコンバイナをさらに備え、イベントは、少なくとも、ブレークポイントおよび前記外部トリガ信号のうちの１つによって作成されることができ、前記イベントコンバイナは、イベントのシーケンスを検出するように構成可能である、請求項１に記載のプロセッサデバイス。
【請求項１１】
前記イベントコンバイナは、個々にイネーブルにされることができる複数のイベントコンバイナステージを備える、請求項１０に記載のプロセッサデバイス。
【請求項１２】
トレースデータは、前記イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別する、請求項１０に記載のプロセッサデバイス。
【請求項１３】
前記トリガ信号は、前記デバッグ回路網内でシステムクロックに同期される非同期信号である、請求項１に記載のプロセッサデバイス。
【請求項１４】
前記外部トリガ信号を受信する前記外部ピンと連結された雑音排斥フィルタをさらに備える、請求項２に記載のプロセッサデバイス。
【請求項１５】
前記トレースモジュールは、前記外部トリガ信号の正または負エッジを検出するようにプログラム可能である、請求項２に記載のプロセッサデバイス。
【請求項１６】
前記外部トレース機能停止入力ピンの機能停止機能をイネーブルにするように構成される制御レジスタをさらに備える、請求項１に記載のプロセッサデバイス。
【請求項１７】
プロセッサデバイス内で実行されたコードをデバッグするための方法であって、前記方法は、
中央処理ユニット（ＣＰＵ）によってコードを実行することと、
前記ＣＰＵによって実行された命令のトレースストリームを生成することと、
外部ピンを通して受信されるトリガ信号を判定する際に、前記実行されたコードをインタラプトせずに外部トリガ信号を識別するトレースパケットを前記トレースストリーム内に挿入することと、
外部トレース機能停止入力ピンを監視することであって、前記外部トレース機能停止入力ピンが第１の論理状態にある場合にトレースモジュールが前記トレースストリームを出力し、前記外部トレース機能停止入力ピンが第２の論理状態にある場合に前記トレースモジュールが前記トレースストリームの出力を停止する、ことと
を含む、方法。
【請求項１８】
前記外部ピンは、マルチ機能ピンである、請求項１７に記載の方法。
【請求項１９】
前記トリガ信号は、内部イベントによって生成される、請求項１７に記載の方法。
【請求項２０】
前記内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも１つを含む、請求項１９に記載の方法。
【請求項２１】
要求の際に、デバッグインターフェースを通して、前記トレースストリームを出力することをさらに含む、請求項１７に記載の方法。
【請求項２２】
データパケットは、前記トリガ信号の受信時にレポートされた命令の実行に一致する時間である、前記トレースストリーム内のポイントにおいて、前記トレースストリーム内に挿入される、請求項１７に記載の方法。
【請求項２３】
前記トレースストリームは、パケットベースである、請求項１７に記載の方法。
【請求項２４】
前記トレースパケットは、トリガソースに関する情報を含む、請求項１７に記載の方法。
【請求項２５】
前記情報は、条件的に提供され、前記条件は、ユーザ定義されることができる、請求項２４に記載の方法。
【請求項２６】
イベントを、少なくとも、ブレークポイントおよび前記外部トリガ信号のうちの１つによって作成することと、
複数のイベントを組み合わせることにより、デバッグ機能を生成することと
をさらに含み、前記イベントコンバイナは、さらに、イベントのシーケンスを検出するように構成可能である、請求項１７に記載の方法。
【請求項２７】
トレースデータは、前記イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別する、請求項２６に記載の方法。
【請求項２８】
前記イベントコンバイナは、個々にイネーブルにされることができる複数のイベントコンバイナステージを備える、請求項２７に記載の方法。
【請求項２９】
前記トリガ信号は、デバッグ回路網内でシステムクロックに同期される非同期信号である、請求項１７に記載の方法。
【請求項３０】
外部ピンと連結された雑音排斥フィルタによって、前記外部トリガ信号をフィルタリングすることをさらに含む、請求項１７に記載の方法。
【請求項３１】
前記外部トリガ信号の正または負エッジを検出するようにトレースモジュールをプログラミングすることをさらに含む、請求項１７に記載の方法。
【請求項３２】
制御レジスタ内のビットを設定することにより、前記外部トレース機能停止入力ピンの機能停止機能をイネーブルにするステップをさらに含む、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本出願は、２０１２年５月７日に出願された、「ＰＲＯＣＥＳＳＯＲ  ＤＥＶＩＣＥ  ＷＩＴＨ  ＩＮＳＴＲＵＣＴＩＯＮ  ＴＲＡＣＥ  ＣＡＰＡＢＩＬＩＴＩＥＳ」という名称の米国仮出願第６１／６４３，６９０号の利益を主張する。上記文献は、その全体として本明細書において援用される。
【０００２】
（技術分野）
本開示は、プロセッサデバイスに関し、特に、統合されたデバッグ能力を伴う、マイクロコントローラデバイスに関する。
【背景技術】
【０００３】
（背景）
現代のマイクロプロセッサおよびマイクロコントローラは、内蔵デベロッパが、いわゆる回路内デバッガまたはエミュレータデバイスを用いて、起動中のプログラムを分析することを効率的に可能にする、回路網を含む。この目的を達成するために、マイクロコントローラまたはマイクロプロセッサは、例えば、デバッグインターフェースとして動作するように、デバイスの複数の機能ピンをプログラムすることによってアクティブ化されることができる、デバッグ機能および具体的インターフェースをサポートする、内部回路網を提供する。そのようなインターフェースは、通常、高速シリアルインターフェースとして、実際のデバイスと外部デバッガまたはエミュレータとの間の高速通信を可能にするように構成されることができる。デバイス自体は、したがって、本インターフェースをアクティブ化させない、通常動作モードで動作されることができ、関連付けられたピンは、他の目的のために、および本インターフェースを使用して、外部ホストコンピュータからおよびそれによって動作され得る、デバッガまたはエミュレータ等の個別の外部デバイスとデータを交換する、デバッグ動作モードのために使用されることができる。デバッガまたはエミュレータはまた、プログラマとして動作されることができ、プログラムは、同一のデバッグインターフェースを介して、標的デバイスに転送される。ホストコンピュータは、外部デバッガまたはエミュレータとともに、安価な分析およびデバッグシステムを形成する。
【０００４】
現代のプロセッサおよびマイクロコントローラは、個別のデバイスの内側に拡張された一式のデバッグ機能を提供する。例えば、いくつかのブレークポイントが、デバイス内に設定され、デバイスが、実際に、リアルタイムで起動することを可能にすることができ、これは、高速シリアルインターフェースだけを使用するとき、外部デバッガでは不可能であって、したがって、ボンドアウトチップおよび高価なデバッグ回路網を要求するであろう。しかしながら、これらの内部デバッグ回路網の機能性は、限定されたシリコン専有面積および他の理由のため、必然的に、幾分、制限される。
【０００５】
例えば、トレースバック機能は、多くの場合、外部回路内デバッガによってサポートされず、さらにより複雑な回路内エミュレータは、デバッグモードにあるとき、トレース機能を十分にサポートしない場合がある。
【発明の概要】
【課題を解決するための手段】
【０００６】
（要約）
したがって、改良された回路内デバッグシステム、特に、改良された回路内デバッグ能力を伴う、独立型プロセッサデバイスの必要性が存在する。例えば、種々の実施形態によるプロセッサデバイスは、デバイスのデバッグユニットに、例えば、外部ピンを通してフィードされる、外部トリガが、そうでなければ、デバイス動作を一時停止させることになる、トレースデータパケットをもたらすことを可能にし得る。
【０００７】
ある実施形態によると、デバッグ能力を有するプロセッサデバイスは、中央処理ユニットと、トレースモジュールおよび外部インターフェースを含む、デバッグ回路網とを備えてもよく、トレースモジュールは、実行された命令に関する情報を含む、トレースストリームを生成し、トレースストリームは、外部インターフェースを通して出力され、トレースモジュールはさらに、トリガ信号を検出し、検出の際にトレースパケットを生成されたトレースストリーム内に挿入するように動作可能である。
【０００８】
さらなる実施形態によると、トリガ信号は、プロセッサによって外部から印加されるトリガ信号であることができる。さらなる実施形態によると、トリガ信号は、内部イベントによって生成されることができる。さらなる実施形態によると、内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも１つを含んでもよい。さらなる実施形態によると、トレースストリームは、パケットベースであることができる。さらなる実施形態によると、トレースパケットは、トリガソースに関する情報を含んでもよい。さらなる実施形態によると、情報は、条件的に提供されることができ、条件は、ユーザ定義されることができる。さらなる実施形態によると、プロセッサデバイスは、複数の機能ピンを有してもよく、１つのピンは、外部トリガ信号に対するトリガ入力として動作するように割り当てられることができる。さらなる実施形態によると、データパケットは、トリガ信号の受信時にレポートされた命令の実行と一致する時間であるトレースストリーム内のポイントにおいて、トレースストリーム内に挿入されることができる。さらなる実施形態によると、デバッグ回路網はさらに、複数のイベントを組み合わせるように動作可能なイベントコンバイナを備えてもよく、イベントは、ブレークポイントおよび外部トリガ信号のうちの少なくとも１つによって作成されることができる。さらなる実施形態によると、トレースデータは、イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別してもよい。さらなる実施形態によると、トリガ信号は、デバッグ回路網内でシステムクロックに同期される、非同期信号であることができる。さらなる実施形態によると、プロセッサデバイスはさらに、外部トリガ信号を受信する外部ピンと連結される雑音排斥フィルタを備えてもよい。さらなる実施形態によると、トレースモジュールは、外部トリガ信号の正または負エッジを検出するようにプログラム可能であることができる。
【０００９】
別の実施形態によると、プロセッサデバイス内で実行されたコードをデバッグするための方法は、中央処理ユニット（ＣＰＵ）によってコードを実行することと、ＣＰＵによって実行された命令のトレースストリームを生成することと、トリガ信号を判定する際に、外部トリガ信号を識別するトレースパケットをトレースストリーム内に挿入することとを含んでもよい。
【００１０】
本方法のさらなる実施形態によると、トリガ信号は、プロセッサに外部から印加されたトリガ信号であることができる。本方法のさらなる実施形態によると、トリガ信号は、内部イベントによって生成されることができる。本方法のさらなる実施形態によると、内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも１つを含んでもよい。本方法のさらなる実施形態によると、本方法はさらに、要求の際に、デバッグインターフェースを通して、トレースストリームを出力することを含んでもよい。本方法のさらなる実施形態によると、データパケットは、トリガ信号の受信時にレポートされた命令の実行と一致する時間である、トレースストリーム内のポイントにおいて、トレースストリーム内に挿入されることができる。本方法のさらなる実施形態によると、トレースストリームは、パケットベースであることができる。本方法のさらなる実施形態によると、トレースパケットは、トリガソースに関する情報を含んでもよい。本方法のさらなる実施形態によると、情報は、条件的に提供されることができ、条件は、ユーザ定義されることができる。本方法のさらなる実施形態によると、本方法はさらに、ブレークポイントおよび外部トリガ信号のうちの少なくとも１つによって、イベントを作成することと、複数のイベントを組み合わせ、デバッグ機能を生成することとを含んでもよい。本方法のさらなる実施形態によると、トレースデータは、イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別してもよい。本方法のさらなる実施形態によると、デバッグ機能は、トリガアウト信号または一時停止であることができる。本方法のさらなる実施形態によると、トリガ信号は、デバッグ回路網内でシステムクロックに同期される、非同期信号であることができる。本方法のさらなる実施形態によると、本方法はさらに、外部ピンと連結された雑音排斥フィルタによって、外部トリガ信号をフィルタリングすることを含んでもよい。本方法のさらなる実施形態によると、本方法はさらに、外部トリガ信号の正または負エッジを検出するように、トレースモジュールをプログラムすることを含んでもよい。
本願明細書は、例えば、以下の項目も提供する。
（項目１）
デバッグ能力を有するプロセッサデバイスであって、前記プロセッサデバイスは、
中央処理ユニットと、
トレースモジュールおよび外部インターフェースを含むデバッグ回路網と
を備え、
前記トレースモジュールは、実行された命令に関する情報を含むトレースストリームを生成し、前記トレースストリームは、前記外部インターフェースを通して出力され、
前記トレースモジュールはさらに、トリガ信号を検出し、検出の際にトレースパケットを前記生成されたトレースストリーム内に挿入するように動作可能である、プロセッサデバイス。
（項目２）
前記トリガ信号は、前記プロセッサに外部から印加されるトリガ信号である、項目１に記載のプロセッサデバイス。
（項目３）
前記トリガ信号は、内部イベントによって生成される、項目１に記載のプロセッサデバイス。
（項目４）
前記内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも１つを含む、項目３に記載のプロセッサデバイス。
（項目５）
前記トレースストリームは、パケットベースである、項目１に記載のプロセッサデバイス。
（項目６）
前記トレースパケットは、トリガソースに関する情報を含む、項目１に記載のプロセッサデバイス。
（項目７）
前記情報は、条件的に提供され、前記条件は、ユーザ定義されることができる、項目６に記載のプロセッサデバイス。
（項目８）
前記プロセッサデバイスは、複数の機能ピンを有し、１つのピンは、前記外部トリガ信号に対するトリガ入力として動作するように割り当てられることができる、項目２に記載のプロセッサデバイス。
（項目９）
データパケットは、前記トリガ信号の受信時にレポートされた命令の実行に一致する時間である、前記トレースストリーム内のポイントにおいて、前記トレースストリーム内に挿入される、項目１に記載のプロセッサデバイス。
（項目１０）
前記デバッグ回路網はさらに、複数のイベントを組み合わせるように動作可能なイベントコンバイナを備え、イベントは、ブレークポイントおよび前記外部トリガ信号のうちの少なくともの１つによって作成されることができる、項目２に記載のプロセッサデバイス。
（項目１１）
トレースデータは、前記イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別する、項目１０に記載のプロセッサデバイス。
（項目１２）
前記トリガ信号は、前記デバッグ回路網内でシステムクロックに同期される非同期信号である、項目１に記載のプロセッサデバイス。
（項目１３）
前記外部トリガ信号を受信する外部ピンと連結された雑音排斥フィルタをさらに備える、項目２に記載のプロセッサデバイス。
（項目１４）
前記トレースモジュールは、前記外部トリガ信号の正または負エッジを検出するようにプログラム可能である、項目２に記載のプロセッサデバイス。
（項目１５）
プロセッサデバイス内で実行されたコードをデバッグするための方法であって、前記方法は、
中央処理ユニット（ＣＰＵ）によってコードを実行することと、
前記ＣＰＵによって実行された命令のトレースストリームを生成することと、
トリガ信号を判定する際に、外部トリガ信号を識別するトレースパケットを前記トレースストリーム内に挿入することと
を含む、方法。
（項目１６）
前記トリガ信号は、前記プロセッサに外部から印加されるトリガ信号である、項目１５に記載の方法。
（項目１７）
前記トリガ信号は、内部イベントによって生成される、項目１５に記載の方法。
（項目１８）
前記内部イベントは、ブレークポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件のうちの少なくとも１つを含む、項目１７に記載の方法。
（項目１９）
要求の際に、デバッグインターフェースを通して、前記トレースストリームを出力することをさらに含む、項目１５に記載の方法。
（項目２０）
データパケットは、前記トリガ信号の受信時にレポートされた命令の実行に一致する時間である、前記トレースストリーム内のポイントにおいて、前記トレースストリーム内に挿入される、項目１５に記載の方法。
（項目２１）
前記トレースストリームは、パケットベースである、項目１５に記載の方法。
（項目２２）
前記トレースパケットは、トリガソースに関する情報を含む、項目１５に記載の方法。
（項目２３）
前記情報は、条件的に提供され、前記条件は、ユーザ定義されることができる、項目２２に記載の方法。
（項目２４）
ブレークポイントおよび前記外部トリガ信号のうちの少なくとも１つによって、イベントを作成することと、
複数のイベントを組み合わせ、デバッグ機能を生成することと
をさらに含む、項目１５に記載の方法。
（項目２５）
トレースデータは、前記イベントを生じさせたブレークポイントまたは複数のブレークポイントを識別する、項目２４に記載の方法。
（項目２６）
前記デバッグ機能は、トリガアウト信号または一時停止である、項目２５に記載の方法。
（項目２７）
前記トリガ信号は、前記デバッグ回路網内でシステムクロックに同期される非同期信号である、項目１５に記載の方法。
（項目２８）
外部ピンと連結された雑音排斥フィルタによって、前記外部トリガ信号をフィルタリングすることをさらに含む、項目１５に記載の方法。
（項目２９）
前記外部トリガ信号の正または負エッジを検出するように、前記トレースモジュールをプログラミングすることをさらに含む、項目１５に記載の方法。
【図面の簡単な説明】
【００１１】
【図１】図１は、種々の実施形態による、統合されたデバッグモジュールのブロック図を示す。
【図２】図２は、図１のハードウェアブレークポイントブロック図をより詳細に示す。
【図３】図３は、図１のイベントコンバイナブロック図をより詳細に示す。
【図４】図４は、トリガインパルスが、どのようにトリガパケットをトレースデータ内で伝送させるかを表す。
【図５】図５は、トレース機能性を伴う、プロセッサデバイス内のデバッグユニットの可能性として考えられる実装詳細を示す。
【図６】図６は、図１に図示されるトレースブロック１２０の簡略化されたブロック図を示す。
【図７】図７は、プロセッサ実行およびトレースデータ読み出しのタイミング図を示す。
【図８】図８は、図６に図示されるトレースサブシステムの実施形態を示す。
【図９】図９は、提案されるトレース復元ハードウェアのブロック図を示し、マイクロプロセッサへのインターフェースを示す。
【図１０】図１０は、マイクロコントローラ内部クロッキング信号のタイミング図を示す。
【図１１】図１１は、トレースクロックおよびデータの関係を示す。
【図１２】図１２は、種々の実施形態による、内蔵デバッグユニットを伴う、マイクロコントローラと、外部回路内デバッグ（ＩＣＤ）コントローラとを使用する、システムのブロック図を示す。
【発明を実施するための形態】
【００１２】
（詳細な説明）
種々の実施形態によると、標的デバイス内のデバッグユニットは、内部イベントおよび／または外部デバイスが、随意に、ブレークポイントを非同期的に生じさせることを可能にする、トリガ入力を有してもよく、ブレークポイントエントリは、トレースデータ出力内に記録される。しかしながら、ある場合には、実行の停止は、望ましくないまたはさらに危険な動作条件をもたらし得るため、外部トリガは、プロセッサの実行を停止しなくてもよい。いくつかの実施形態によると、トリガ入力は、外部イベントが起動中の命令に相関されることを可能にする（または、逆も同様）、具体的トレース記録を生じさせる。
【００１３】
トレースから命令データを記録するとき、ユーザがボタンを押下したときと、コードがその時点で行っていたこととの間にずれが存在する。したがって、本質的に、トレースパケットをトリガインパルス上に作成することによって、ユーザが、トレースストリームを分析するとき、ＣＰＵがコード実行ストリーム中に存在していた場所と、トリガインパルスが発行された時を整合させることを可能にする。
【００１４】
種々の実施形態による、命令データストリームの周辺トレースと組み合わせて、トリガインパルスが生じたことを示す特殊パケットが、トリガインパルスが検出されるとき、ストリーム中に現れる。
【００１５】
図１は、ある実施形態による、マイクロコントローラ内に統合され得る、回路内デバッグモジュールのブロック図を示す。しかしながら、前述のような一般的概念は、他のタイプのオンチップデバッグ回路網内に実装されることもできる。ブロック図は、例えば、マイクロコントローラ内に実装されることができ、以下の５つの基本ブロックから成り得る、モジュールを示す。
・ブレークポイント比較論理１３５
・ストップウォッチサイクルカウンタ論理１５０
・制御および状態機械論理１４５
・トレース論理１２０
・イベントコンバイナ論理１２５
【００１６】
ＣＰＵ１１０は、内部バスを通して、ハードウェアブレークポイントユニット１３５と、イベント検出ユニット１４０と、制御論理ユニット１４５と、バックグラウンドインターフェース１５５と連結される。マルチプレクサ１６０は、専用デバッグクロックおよびデータピン１６５を通して、デバッグユニットと外部デバッガの連結を可能にするために使用される。制御論理１４５は、１つ以上の外部ピンと連結されてもよい。図１は、例示的ＴＲＧＩＮピン１８５を示す。そのようなピンは、他の機能を伴わない、専用ピンであってもよい。しかしながら、特に、低ピンデバイスでは、そのようなピンは、プログラム制御下、異なる周辺デバイスに割り当てられることができ、したがって、そのプログラムされた割当に従って、異なる機能を行うことができる、マルチ機能ピンであってもよい。例えば、そのようなピンは、構成レジスタを用いて、トレーストリガイン機能に加え、シリアルインターフェースクロックピン、デジタルＩ／Ｏピン、アナログ入力ピン等としてアクションするようにプログラムされてもよい。図１に示されるように、制御論理はまた、ピン１８５と同様に、マルチ機能ピンであり得る、トリガアウトピン１９０を提供する。トレースモジュール１２０は、トレース機能停止入力ピン１１５と、トレースクロックおよびデータ出力ピン１７５と連結される。図１はまた、制御論理１４５を通して構成可能であり得る、パルス排斥フィルタ１７０および１８０を示す。そのようなフィルタを通した信号ルーティングは、図１には示されない。いくつかの実施形態によると、ブレークポイントデバッグは、命令が実行される前に、実行が一時停止されるように実装される（いわゆる「ゼロスキッド」動作）。他のデバッガ実施形態によると、これは、該当せず、コードが、停止または「スキッド」し、プロセッサが一時停止される前に、命令が実行することを可能にする場合、問題を生じさせ得る。外部イベントは、（定義上）命令実行ストリームと非同期である。したがって、その動作は、ゼロスキッド概念に匹敵しない。
【００１７】
内部信号ｄｅｂｕｇ＿ｅｎ＝１であるとき、モジュールは、イネーブルにされ、全「一時停止」イベントを監視し、イベントを生成し、データ捕捉等を行う。内部信号ｄｅｂｕｇ＿ｅｎ＝０である場合、全デバッグ論理は、ディスエーブルにされ、モジュールは、最小電力モードを消費するように構成される。
【００１８】
低侵入性デバッグを行うために、データをデバイスからリアルタイムでストリーミングする手段を有することが有用であり得る。トレースモジュール１２０は、読み取られる、または具体的アドレスに書き込まれるデータを取り出し、それをトレースポートから伝送する方法をサポートする。これは、リアルタイムウォッチポイントとして説明されることができる。デバイスの通常動作は、ウォッチポイントを使用するとき、インタラプトされない。
【００１９】
データ捕捉は、ハードウェアブレークポイントを生成するために使用されるものと同一のハードウェアを使用して行われてもよい。一時停止を生成するのと同時に、データ捕捉のためのブレークポイントを使用することは、両動作が生じることを可能にするであろう。しかしながら、データ捕捉およびデータマッチングを同時にイネーブルにすることは、特に、１を上回るブレークポイントカウントに対して、予想外の結果を生成し得る。データ捕捉およびデータ比較は、同一の物理的レジスタを使用するため、比較値は、捕捉毎に更新されるであろう。この目的を達成するために、内部または外部イベントのいずれかが、プロセッサ内のデバッグ回路網に、個別のデータパケットをトレースデータストリーム内に挿入させるトリガを生成することができる。外部イベントは、トリガイン入力ＴＲＧＩＮ１８５に印加される外部信号であることができる。内部イベントは、ブレークポイント／ウォッチポイント、マスタクリア、インタラプト、例外実行条件、デバッガオーバーフロー条件等の任意のイベントであることができる。例外条件は、インタラプト、スリープモード開始または終了、スタックオーバーフロー／アンダーフロー、不正アドレスからの命令のフェッチを含んでもよい。表１および２は、可能性として考えられるイベントのリストを示す。これらの表は、包括的または排他的ではなく、トリガイベントに関する実施例として見なされるべきである。他の内部イベントまたはイベントの組み合わせが、具体的データパケットをトレースストリーム内に挿入するために、トリガ信号を生成するために使用されてもよい。
【００２０】
【表１】
0006397815.tif 000002
【００２１】
【表２】
0006397815.tif 000003
【００２２】
図２は、ハードウェアブレークポイントユニット１３５をより詳細に示す。ハードウェアブレークポイントは、プログラムまたはデータメモリのいずれか内のマッチングアドレスをブレークするように構成されることができる。この目的を達成するために、個別のコンパレータ２２０および２３０およびデコーディングユニット２４０が、図２に示されるように、提供される。ブレークポイントが、データメモリ上で動作するように選択されると、ブレークポイントは、加えて、データ値およびマスクが認められ、ある値のみ、ブレークポイントイベントを生成することを可能にすることができる。データブレークポイントはまた、随意に、読取または書込サイクルのみをブレークするように設定されることができる。あらゆる場合において、ブレークポイントは、ブレークポイントイベントが生成される前に、具体的イベントが、Ｎ回、生じなければならないようなカウンタ２１０を有する。これは、例えば、いくつかの実施形態によると、１〜２５６回の任意の値に設定されることができる。
【００２３】
図２のブロック図は、単一ブレークポイントに関して示される。しかしながら、実装されるブレークポイントの数は、種々の実施形態に従って、可変であって、多くのブレークポイントが、存在してもよい。図２は、種々のパラメータが、ブレークポイントのためのトリガ要件を定義するようにプログラムされることができる、例示的実施形態を示す。他の実施形態によると、より少ないまたはより多いそのようなパラメータが、使用されてもよい。例えば、ブレークポイントを生成するために必要なブレークポイント発生数は、カウンタ２１０内のＢＰｘＣＮＴパラメータによって設定されることができる。各ブレークポイントモジュールは、同じレジスタを有してもよい。
【００２４】
ブレークポイントは、イベントチャネル定義の中にリスト化され、サイクルカウンタ１５０を開始または停止する、イベントコンバイナステージ１２５を設定またはリセットする、トレースユニット１２０を開始または停止する、あるいはスタックスナップショットを撮影するために使用されることができる。
【００２５】
一実施形態によると、ブレークポイントがイネーブルにされるために、制御レジスタＩＣＤＢＰｘＣＯＮのビットＢＰＥＮが、設定されなければならない。本ビットが、クリアされる場合、本具体的ブレークポイントに対する全回路網は、ディスエーブルにされ、ブレークポイントイベントは、生成されないであろう。ブレークポイントは、認定条件のＮ回目の発生毎にのみ、アクションをトリガするように構成されることができる。例えば、３回目の発生毎にトリガするようにブレークポイントを設定するために、カウンタ２１０は、ＢＰｘＣＮＴ＝２に設定される。個別の制御レジスタが、カウンタ２１０と組み合わせて使用され、その値をリロードし、および／または現在の状態を監視してもよい。
【００２６】
ブレークポイントはまた、例えば、関連付けられた構成レジスタ内に個別のビットを設定することによって、実行コンテキスト（メインラインコード、インタラプトハンドラ、または両方）に基づいて認定されてもよい。ブレークポイントは、したがって、プログラムが選択されたコンテキストから実行するときのみ、生じてもよい。
【００２７】
さらに別のブレークポイントパラメータは、構成レジスタ内に、プログラムカウンタ（ＰＣ実行アドレス）を監視することを可能にする、個別のビットを設定することによって設定されてもよい。プログラムメモリブレークは、ゼロスキッドであって、動作が実行される前に生じる。ＰＣは、トリガ命令のアドレスを示すであろう。
【００２８】
個別の制御ビットが、クリアされる、例えば、ＢＰＡＲＥＮ＝‘０’であるとき、ＰＣが所定のアドレスに等しくなると、ブレークは、トリガされる。ＢＰＡＲＥＮ＝‘１’であるとき、ＰＣがアドレスの所定の包含範囲内にあると、ブレークは、トリガされる。
【００２９】
いくつかの実施形態によると、実行された命令のみ、ブレークポイントを生成することができる。ＰＣが、実行されないアドレスにあるとき、ブレークポイントは、トリガしない。これは、以下を含む。
・フロー変更命令（ＣＡＬＬ、ＲＥＴＵＲＮ等）、
・スキップされた命令（ＢＴＦＳＳ、ＢＴＦＳＣに従って）、または
・ＰＣＬ、ＦＳＲ、または他の２つのサイクル命令後の次のフェッチ。
【００３０】
別の制御ビットフィールドが、制御レジスタ内で０１、１０、または１１に設定されると、ブレークポイントは、データアクセス、すなわち、アドレスおよび値の両方を監視する。関連付けられたビットの３つの状態は、読取または書込サイクルが、ブレークポイントを判定するために使用されるかどうかを選択する。
【００３１】
データブレークポイントは、必然的に、データが読み取られた、または書き込まれた後、命令実行終了時にブレークを生じさせる（規定通りに）。あらゆる場合において、命令は、完了するまで実行する。故に、「ブレーク」は、実際には、次の命令実行時に生じ、ＰＣは、トリガ命令後に命令を示すであろう。ブレークはまた、メモリアドレスおよびデータ値限定子の両方が満たされるときにトリガされてもよい。
【００３２】
サイクルカウンタ１５０は、ユーザコードがプロファイル化され得るようなストップウォッチ機能を提供するために使用されるカウンタである。サイクルカウンタは、個別の制御レジスタによって制御される。カウンタ１５０は、４つの８−ビットカウンタ／レジスタから成ってもよい。カウンタ１５０は、ＣＰＵのＱ−サイクルの終了毎にインクリメントされてもよい。すなわち、マルチサイクル命令（例えば、ＧＯＴＯ）は、複数回、カウントを行う。
【００３３】
複数の機能が具体的イベントによって制御されることを可能にするために、可能性として考えられるソースの全てが、１つのイベントバスに組み合わせられてもよい。これは、サイクルカウンタ１５０、トレースユニット１２０、およびイベントコンバイナユニット１２５が、同一の設定を使用して、そのアクションを選択することを可能にする。
【００３４】
イベントコンバイナ３００は、図３に示されるように、複数のイベント入力３２０を監視し、それらの入力の組み合わせおよびシーケンスに基づいて、一時停止またはトリガアウト１９０を生成することができる。イベントコンバイナ３００は、個別の制御ビットが設定されると、イネーブルにされる。ディスエーブルにされたコンバイナ３００は、出力イベントをもたらさない。イベントコンバイナ３００は、イベントチャネル定義の中にリスト化され、サイクルカウンタ１５０を開始または停止する、イベントコンバイナステージ３１０を設定またはリセットする、トレースユニット１２０を開始または停止する、またはスタックスナップショットを撮影するために使用されることができる。イベントコンバイナステージ３１０は、そのステージに対する個別の制御ビットが、関連付けられた制御レジスタ内に設定されると、独立して、イネーブルにされる。ステージの現在の出力は、関連付けられたステータスビット内に反映されるであろう。ステージ３１０は、図３に示されるような暗示される順序を有し、以下のいくつかの方法で組み合わせられることができる。
・ステージは、個々に、イベントによってアクティブ化されることができる。
・ステージは、次の下位ステージがアクティブである間、イベントによってアクティブ化されることができる。
・ステージは、個々に、イベントによって非アクティブ化されることができる。
・ステージは、イベントによって、または次の下位ステージが非アクティブ化されると、非アクティブ化されることができる。
【００３５】
個別の制御ビットを設定することによって、組み合わせられたイベントの（Ｎ＋１）回目の発生のみ、出力イベントを信号伝達するであろう。Ｎは、０〜２５５に設定されることができる。組み合わせられたトリガ条件が満たされる場合、レジスタは、１だけデクリメントされる。組み合わせられたトリガ条件が満たされる場合、イベントコンバイナイベントが、生成され、カウンタに、プリセット値がリロードされる。また、新しいカウント値が個別の制御レジスタに書き込まれると、随時、カウンタ内の値が、リロードされる。例えば、３回目の発生時にトリガするようにブレークポイントを設定するために、個別のカウンタ値は、２に設定されるべきである。
【００３６】
加えて、いくつかの実施形態によると、ピンＴＲＧＩＮ１８５にフィードされる外部信号は、ユーザ入力が、トレースストリーム内に挿入されるべきトレースパケットを生成し、一時停止を生成し、随意に、また、ＴＲＧＯＵＴ信号をトリガすることを可能にする。「極性」＝０（図６）であるとき、トリガ入力は、アクティブ高および立ち上がりエッジ原因イベントである。「極性」＝１であるとき、トリガ入力は、アクティブ低および立ち下がりエッジ原因イベントである。別の制御ビットは、フィルタを制御する、例えば、認識されるための最短時間の間、入力がアクティブ状態になければならないことを定義するために使用されてもよい。より短いパルスは、したがって、無視される。
【００３７】
ＴＲＧＩＮイベントは、イベントチャネル定義の中にリスト化されることができ、サイクルカウンタ１５０を開始または停止する、イベントコンバイナステージ３１０を設定またはリセットする、トレースユニット１２０を開始または停止する、またはスタックスナップショットを撮影するために使用されることができる。トリガ入力の変化は、トレースがイネーブルにされる場合、トレースパケットを生成するであろう。
【００３８】
ブレークポイント等のイベントが、イネーブルにされたトリガに伴って生じると、ＴＲＧＯＵＴピン１９５上にパルスが、生成される。基本トリガ出力信号動作は、個別の制御ビットを設定することによって構成される。これらの制御ビットは、例えば、トリガ出力が、ほぼＴｒｉｇｇｅｒ  Ｏｕｔｐｕｔの持続時間の間、アサートされるように制御してもよい。隣接または重複イベントは、信号をアサートされた状態に保持してもよい。制御ビットはまた、出力が最短時間周期まで続くかどうか制御してもよい。ＴＲＧＯＵＴワンショットがトリガされると、そのタイミング周期内に発生するさらなるイベントは、無視されるであろう。ワンショットがタイムアウトし、ＴＲＧＯＵＴがゼロに戻った後、再び、別のイベントによってトリガされてもよい。ワンショットは、エッジトリガされ、イベント信号が持続する場合でも、所定の時間周期後、クリアするであろう。
【００３９】
ソフトウェアは、個別の制御ビットを設定することによって、トリガアウトを生じさせてもよい。デバイスが、ウェーク状態である場合、ビットは、１サイクル後、ハードウェアによってクリアされる。ＴＲＧＯＵＴもまた、個別の制御ビットを書き込むことによって、クリアされてもよく、またはデバイスがウェックアップすると、自動的に、クリアされるであろう。
【００４０】
図４は、通常トレースストリームとともに、外部からアサートされる「トリガ入力」信号を示す。「トリガイン」パルスが、トレース命令ストリームの中間で生じると、「ＴＲＧＴＲＣ」パケットが、通常トレースストリーム内に挿入され、その時点において、ストリーム内でトリガが生じたことを示す。トリガ入力の変化は、個別の制御ビットが設定されている場合、トレースパケットを生成するであろう。極性ビット＝０である場合、イベントは、立ち上がりエッジ上でトリガするであろう。極性ビット＝１である場合、イベントは、立ち下がりエッジ上でトリガするであろう。図４に示されるように、トリガトレースパケットの挿入を生じさせる、外部から印加された信号は、命令の実行と同期しない。内部イベントによって生成されたトリガトレースパケットは、ほぼ同期する。しかしながら、同一の原理は、トレースデータストリーム内への挿入に関しても適用される。
【００４１】
図５は、トリガピンからトレースパケット書込クロックおよびデータまでの概念の実装の簡略化された略図である。種々の実施形態による、ある信号が、示されるが、パケットを伝送するトレースモジュールの部分およびトレース機能性のうちのいくつかは、多くの異なる方法で実現されることができ、したがって、図示されない。
【００４２】
図５に示される実施形態によると、トリガ信号は、外部ピン６１０を通して非同期的に着信し、例えば、雑音排斥フィルタ６２０を用いて、いくつかのフィルタリングを受けてもよい。しかしながら、そのようなフィルタはまた、省略され得る、あるいは実装される場合、アナログまたはデジタルフィルタまたは両方の組み合わせとして実装され得る。さらに、極性選択ユニット６３０も、いくつかの実施形態に従って、実装され得る。この目的を達成するために、雑音排斥フィルタ６２０の出力またはトリガ信号を直接受信する、単純ＸＯＲゲート６３０が、提供されることができる。ＸＯＲゲート６３０の第２の入力は、極性制御信号を受信する。したがって、着信トリガ信号は、反転されるか、またはされないかのいずれかとなる。故に、ユーザは、トリガパルスの極性にかかわらず、常時、正パルスを内部で生成するように、デバイスを制御することができる。しかしながら、外部信号の他の処理が、適用されてもよく、したがって、「トリガイン」機能性それ自体は、重要ではない。破線は、「トリガイン」セクションと「トリガイン」信号のトレース使用を分離する。
【００４３】
正トリガイン入力パルスは、デバイス内で同期しない。これは、イベントを検出し、それをレジスタする、トレースモジュールのための第１のフリップフロップ６４０に進む。第１のフリップフロップ６４０もまた、クロック信号としてのトリガイン入力パルスの接続のため、同期しない。レジスタされた非同期信号フリップフロップ出力Ｑは、次いで、それぞれ、トレースクロックｔｑ２およびｔｑ４の２つの後続内部クロックにわたって同期される。いくつかの実施形態による、これらの内部クロックは、命令クロックに同期されるが、いくつかの実施形態では、システムクロックは、実際には、１命令サイクルを実行するために、直交クロック、例えば、４ｑ−クロックを使用し得るため、内部システムクロックの実際の命令クロックに対応しなくてもよい。図１０は、命令の実行に関するシステムクロックｃｌｋｉｎおよび関連直交信号の例示的タイミング図を示す。本実施形態では、ｃｌｋｉｎから派生した４つのクロックｑ１、ｑ２、ｑ３、ｑ４は、１つの命令を実行するために使用される。トレースクロックは、内部クロックｑ１、ｑ２、ｑ３、ｑ４から派生してもよく、またはこれらのクロックと同じであってもよい。
【００４４】
２つのフリップフロップ６６０および６７０が、直列に連結され、図５に示されるように、ｔｑ２およびｔｑ４内部クロック信号によってクロックされる。フリップフロップ６７０の出力Ｑは、次いで、同期されたトリガ信号を提供する。フリップフロップ６７０の出力Ｑは、トレースモジュールイネーブル機能を提供するように実装される、ＡＮＤゲート６７０と連結されることができる。
【００４５】
本同期された信号は、本時点において、例えば、デバッグユニットのトレースモジュールの内側のＡＮＤゲート６７０を通して、安全に使用され得る。同期された信号は、「アウトバンド」書込フリップフロップ６８０に進み、「アウトバンド」は、命令を意図しないが、事実上、書込クロックを作成するであろう。書き込まれるべきデータは、以下のように実装されてもよい。
ｂｅｇｉｎ
ｉｆ（．．．．．）
ｅｌｓｅ  ｉｆ（．．．．）
ｅｌｓｅ  ｉｆ（ｇｅｎｅｒａｔｅ＿ｔｒｉｇｇｅｒ＿ｉｎ＿ｐａｃｋｅｔ）
ｄａｔａ＝ＴＲＩＧＩＮ  ＰＡＣＫＥＴ
ｅｌｓｅ
ｅｎｄ；
【００４６】
したがって、フリップフロップ６８０は、同期された書込クロック信号を生成し、デバッグユニットは、通常トレースストリーム内に挿入されるべきデータを用いて、実際のデータパケットを生成する。挿入されるべきデータは、所定であることができる、またはイベント依存データを含む、所定かつ動的部分を有してもよい。
【００４７】
前述のように、本パケットを生成するための機構は、例えば、送信優先順位が与えられる、大規模ｉｆ−ｅｌｓｅｉｆ−ｅｌｓｅステートメントであることができる。パケットデータの生成は、前述のように優先順位化されてもよく、種々の「ｉｆ−ｅｌｓｅｉｆ」ステップは、他の出力信号の生成も可能にし、したがって、所定の順序または優先順位を作成する。いくつかの実施形態によると、トリガイントレースパケットは、前述の実施例に示されるように、オーバーフローエラーおよび他の類似イベント等の他のものより比較的に低優先順位を有し得る。
【００４８】
いくつかの実施形態によると、実際のトレーストリガデータは、実際の「トリガイン」書込信号が同期されている間、生成されてもよい。したがって、本データが、ここでパケットを発生させ、書込クロックが生じると、トレースストリーム内に挿入され得るパケット内にトリガデータを書き込むであろうという、ある概念が見られる。これは、他の固有トレースパケット、故に、優先順位等の必要性と相互作用する。
【００４９】
以下のセクションは、具体的実施形態による、デバイスと外部デバッグツールとの間のトレースデータインターフェースについて詳述する。他の実施形態は、異なる実装を使用してもよい。例えば、図６に示されるようなトレースサブシステムは、デバッグツールによって捕捉および分析され得る、命令実行ストリームのリアルタイム記録を提供する。トレース動作は、デバッグツールが、ソースコードおよびプログラムメモリコンテンツへのアクセスを有し、ＣＰＵ動作のいくつかの側面を推測することができると仮定する。
【００５０】
命令が、ＰＣＬに書き込むと（直接またはＩＮＤｘを通してのいずれか）、新しいＰＣは、プログラムメモリ内の任意の場所にあってもよい。この場合、命令パケットは、いわゆるフルプログラムカウンタ（ＦＰＣ）パケットと置換される。ＦＩＦＯは、図６に示されるように、コアデータレートとデバッグツールデータレート（ＴＲＳＴＡＬＬによって統制される）をマッチングするために使用されることができる。ＦＩＦＯは、図６に図示されるように、ＣＰＵエンコーダから充填され、データエンコーダによって空化される。ＦＩＦＯは、最大４０９６命令パケットを保持するが、有効動作サイズは、個別の制御ビットによって選択されてもよい。ＷＡＴＣＨイベントパケットもまた、ＦＩＦＯ内に置かれ、したがって、処理中の命令パケットの実際の数は、通常、それより少ないであろう。図１１は、異なる構成設定Ａ、Ｂ、Ｃ、およびＤによる、トレースクロックとデータとの間の関係を示す。ＴＲＣＬＫ出力は、トグルすると、各クロックエッジに伴って、１データワードを出力する。出力クロックレートは、常時、ＣＰＵ命令レートにリンクされ、ソフトウェアがＳＹＳＣＬＫを変更する場合、またはリセットがＳＹＳＣＬＫを変更する場合、変化するであろう。個別の構成によると、出力レートは、常時、命令周期あたり２つのトレースワードであることができる。レートは、命令あたり１および１／２まで減少されることができるが、これは、ＦＩＦＯオーバーフローにつながる可能性が高くなるであろう。ＴＲＣＬＫ出力は、データ変化に伴って、位相が一致するか、またはＴＲＣＰＳ制御ビットの設定に応じて、位相がずれるかのいずれかとなるように選択されることができる。ＦＩＦＯ内エンコーディングは、ラインエンコーディングとは異なり、したがって、各ＦＩＦＯ場所は、ＴＲＤＡＴインターフェース内で３データワードも表し得る。いくつかの実施形態によると、トレースサブシステム内のＦＩＦＯのオーバーフローもまた、トリガトレースパケットを挿入するためのトレーストリガ信号を生成するイベントとして使用されてもよい。
【００５１】
トレース機能停止機能が、実装されることができ、構成ビットが、ＴＲＳＴＡＬＬ入力が有効であるかどうか判定してもよい。例えば、制御ビットＴＲＸＳＥ＝１および信号ＴＲＳＴＡＬＬ＝１であるとき、トレースＦＩＦＯは、ペイロード境界における空化を停止し、クロックを停止するであろう。ＴＲＳＴＡＬＬ（ｔｒ＿ｓｔａｌｌ＿ピン）が‘０’に戻ると、クロッキングは、再開し、ＦＩＦＯは、データを再び空化し始めるであろう。トレースがイネーブルにされ、ＦＩＦＯが空であるとき、ＩＤＬＥまたはＳＬＥＥＰパケットが、デバイスのスリープ状態に従って送信される。ＦＩＦＯはまた、いくつかの実施形態によると、空にされることができ、トレースが、非アクティブ化されることができる。ＦＩＦＯがフルになる場合、システム応答は、個別の制御設定に依存してもよい。いずれの場合も、オーバーフロー状態（機能停止される、またはデータをポストしない）は、個別の制御レジスタによって選択されるように、ＦＩＦＯが２５％または７５％フルのいずれかになるまで、持続するであろう。トレース実装に関する他の機能が、いくつかの実施形態によると、追加されてもよく、説明されるようないくつかの機能は、実装されなくてもよい。典型的トレース信号タイミング図は、図７に示される。トレースペイロードパケットは、ＣＰＵコアが実行する命令および選択されたデータイベントをエンコードし、また、トレースストリーム同期を提供する。ある実施形態によると、ほとんどのパケットは、１つまたは２つの７ビットワード、あるいはいわゆるフルプログラムカウンタ（ＦＰＣ）パケットの場合、３ワードから成ってもよい。概して、パケットは、「ワード１」および随意の「ワード２」から成る。しかしながら、他の形式も、異なる実施形態に従って使用されてもよい。具体的実施形態によると、「ワード１」の値は、パケットを識別し、「ワード２」が存在するかどうかを暗示する。命令実行（ＥＸ、ＥＸＤ、およびＲＥＳＥＴ等）と同期するパケットおよび非同期「イベント」パケットは、以下により詳細に説明されるように、ＷＡＴＣＨ、ＲＥＳＥＴ、およびＴＲＩＧＧＥＲを含む。
【００５２】
同期パケットは、実行の順序で送られる。イベントパケットは、イベントとほぼ同時にストリーム中に現れるが、いくつかのイベントが同時に生じる場合、いくつかのレポートは、遅延されるであろう。ある場合には、ＦＰＣは、同期レポートであるが、他の場合には、イベントである。トランスポート層（ＴＲ）パケットＲＥＳＹＮＣ、ＩＤＬＥ、およびＥＮＤは、インターフェースデータストリームの種々の状態を管理および識別するために、要求に応じて挿入される。ＴＲパケットＲＥＳＹＮＣおよびＩＤＬＥは、命令トレースを分析すると破棄されてもよい。
【００５３】
ＲＥＳＹＮＣパケットは、受信機が、正しく同期されていることを検証し得るように、個別の制御ビットによって規定されるように、周期的に挿入される。所定の時間間隔にほぼ対応する時に、他のＦＰＣがその間隔内で送信されなかった場合のみ、ＦＰＣは、ストリームに追加されるであろう。これは、受信機が命令ストリームを正しく追跡していることのチェックを提供する。挿入されたＦＰＣは、常時、追従する命令のアドレスを示す。パケット内のワード数は、パケットワード１の値によって判定される。ＲＥＳＹＮＣが、「ワード２」に対する正しくない値とともに、ワード１として受信される場合、ストリームは、同期からずれ、エラーがフラグされるはずである。
【００５４】
表３は、２ワードパケットを伴う、最悪の場合の状況を図示し、２番目のワードは、０ｘ７Ｄであって、その後に、ＲＥＳＹＮＣが続く。受信機が適切に同期されている場合、受信されたワード＃３は、ワード１となり、ワード＃４は、ワード２となり、パケット＃２として示される、完全ＲＥＳＹＮＣ対を形成するであろう。パケット＃３は、ワード＃５から開始し、正しく解釈されるであろう。
【００５５】
【表３】
0006397815.tif 000004
【００５６】
表４２は、第１のワードを複製し、受信機を同期から外す、クロックバウンスを伴う同一のデータを示す。ワード＃１および＃２は、データ＝０ｘ７１（但し、これは、正しくない解釈である）を伴うＥＸＤパケットとして受信され、ワード＃３および＃４は、ＲＥＳＹＮＣ対として現れる。ワード＃５は、新しいＲＥＳＹＮＣパケットのワード１として見なされるが、ワード＃６は、０ｘ７Ｄではなく、同期から外れた状態を表す。ワード＃６は、新しいパケットを開始する。
【００５７】
【表４】
0006397815.tif 000005
【００５８】
トレースが開始するとき、またはデバッグ実行の間、一時中断された後、トレースが再開するときに送信される第１のパケットは、常時、ＦＰＣであろう。フルプログラムカウンタ（ＦＰＣ）パケットは、ストリーム内に現れる次の命令の絶対アドレスをレポートする。ＦＰＣは、トレースの開始、オーバーフロー後の再開、および単に、次の命令のアドレスを示す、デバッグ後の再開の状況においてレポートする。
【００５９】
ＦＰＣの全ての他の使用は、命令が実行され、ある場合には、その命令に対してレポートされたであろうパケットを置換することを示す。ＦＰＣが、分岐またはプログラムカウンタ変更命令の実行を表すと、レポートされた値は、分岐標的アドレスである。ＦＰＣに続く命令パケットは、ＦＰＣがポイントする命令の実行を表す。
【００６０】
ＧＯＴＯおよびＣＡＬＬ命令は、プログラムカウンタＰＣ［１０：０］の最下位ビットが、デバッグ環境（アセンブリコード内）で既知であって、新しいＰＣの上位４ビットのみ、上位部分プログラムカウンタ（ＵＰＣ）パケット内でレポートされると仮定する。しかしながら、他の実施形態は、より多いまたはより少ない情報をレポートしてもよい。レポートされた値は、０ｘ０Ｆ＆（ＰＣＬＡＴＨ＞＞３）であることができ、ＰＣＬＡＴＨは、プログラムカウンタの上位ビットにラッチする、実装固有のレジスタを表す。相対分岐（ＢＲＡ）の宛先は、ソースコードに既知であるため、命令は、単に、ＥＸとしてレポートされる。種々のトレースペイロードは、実装されてもよい。表５は、異なるペイロード信号の実施例を示す。
【００６１】
【表５】
0006397815.tif 000006
【００６２】
表６は、実際のトレース実施例を示す。
【００６３】
【表６】
0006397815.tif 000007
【００６４】
図８は、トレースサブシステム７００の簡略化されたブロック図を示す。サブシステム７００は、命令コードをコアおよびＷＡＴＣＨイベント信号から受信し、ＴＲＤＡＴ信号上における配信のために、本データをフォーマットする。シーケンスコントローラ７１０は、命令およびＷＡＴＣＨデータをＦＩＦＯにロードすることに関与する。各データパケットは、単一１６−ビットワードとしてエンコードされる。ｑ３４の間、ＷＡＴＣＨ信号は、サンプリングされ、最高優先順位の信号が、エンコード、ロード、およびリセットされる。２つ以上の信号が、アサートされる場合、最高優先順位の信号のみ、ロードされ、他は、後続ｑ３４の機会の間、待機しなければならない。レポート優先順位は、ブレークポイント番号に基づくため、イベントは、順序外でレポートされてもよい。ｑ１２の間、以前の命令からのデータは、エンコードおよびロードされる（オプコードは、ｑ３においてエンコードされ、バスデータは、安定しｑ３−ｑ３、全て、立ち上がりｑ１において有効である）。概して、これは、命令周期毎に生じる。分岐および呼び出し命令ならびにインタラプトサイクルの場合、第１のサイクルの間、何もロードされず、パケットは、２回目のサイクルの間、エンコードされ（いわゆる「強制ＮＯＰ」）、ＵＰＣおよびＦＰＣが、正しいＰＣ値とともに送られることを可能にする。その結果、２つのＷＡＴＣＨパケットが、分岐の間、ロードされてもよい。ＳＫＩＰおよびＳＴＡＬＬは、現在のコア動作に基づいてエンコードされる。
【００６５】
シーケンスコントローラ７１０は、命令サイクルあたり２回ロードすることができ、ストリームマネージャ７３０は、命令サイクルあたり２回ロードすることができ、命令サイクルあたり最大４メモリサイクルを要求する。ＦＩＦＯコントローラ７２０は、シーケンスコントローラ７１０によって提供されるデータを管理する。データは、ストリームマネージャ７３０によって要求されると、同一の順序で配信される。ストリームマネージャ７３０は、１６−ビットＦＩＦＯワードをＴＲＤＡＴ信号上で伝送されるデータワードに再フォーマットする。いくつかのパケット（例えば、ＥＸ）は、ＦＩＦＯワード毎に単一ＴＲＤＡＴワードをもたらす一方、他（例えば、ＦＰＣ）は、より多くをもたらす。要求に応じて、トランスポート管理パケットＲＥＳＹＮＣ、ＩＤＬＥ、およびＥＮＤが、ストリーム内に挿入され、読み出し動作は、ＴＲＳＴＡＬＬ入力に従って中断される。２つのＴＲＤＡＴワードが、各命令サイクル周期の間に伝送される。ＴＲＣＬＫ信号は、システムリセットの間、中断するであろう（サイクルの延長部分）（データは、損失されないであろう）。
【００６６】
図９は、トレース受信機として動作するデバッグツール８２０と連結される、種々の実施形態による、マイクロコントローラ８１０を伴うシステム８００を示す。デバッグツールは、例えば、本出願人によって製造された回路エミュレータ内のＲｅａｌ−ＩＣＥであることができる。受信機８２０は、トレース同期を行い、全ＩＤＬＥおよびトランスポートパケットを破棄し、残りのパケットのバンドルを遠隔ホスト８３０、例えば、パケットストリーム解釈が行われる、パーソナルコンピュータまたはワークステーションに伝送する。
・ワード１分析-パケットを３ワード幅データバスに変換する。
・ダブレット（ＲＥＳＹＮＣ、ＯＶＥＲＦＬＯＷ等）を検証し、（ａ）ダブレットが連続ワード中にないとき、または（ｂ）非実装ワード１コード値が認められるとき、同期エラーをフラグする。
・ＩＤＬＥおよび他のトランスポートパケットを破棄し、残りの値をＦＩＦＯにスタックする。
・パケット全体を遠隔ホストに伝送する。
【００６７】
ＴＲＳＴＡＬＬをアサートすると、受信機８２０は、最大もう６つのＴＲＤＡＴワード（２つの連続ＦＰＣパケットの均等物）に加え、再同期パイプラインの待ち行列に追加され得る、２ワードを受け取る準備ができる。ＴＲＳＴＡＬＬを解除すると、パケットワード１整合が、保証される。ＩＤＬＥパケットのストリングから、大部分、または時として、全部が、破棄され、遠隔ホストに送られず、帯域幅を削減することができる。非実装オプコードおよびＦＰＣワード３（７’ｈ５ｘ）もまた、同期エラーとしてフラグされ、１ワードパケットとして取り扱われるべきである。
【００６８】
ＦＰＣの３番目のワードは、単一ワードパケットのスタイルでエンコードされる（例えば、コード７’ｈ５ｘ）。同期しているかどうかにかかわらず、例えば、７’ｈ５ｘの任意のワードに続くワードは、新しいパケットのワード１であると仮定されてもよい。ワード１を追跡する目的のために、ＯＶＥＲＦＬＯＷ、ＲＥＳＹＮＣ、ＳＬＥＥＰ、およびＥＮＤパケットは、１ワードパケットとして取り扱われるべきである。７’ｈ７Ｄが、１ワードパケットとして取り扱われるとき、別の７’ｈ７Ｄ（対合されたＲＥＳＹＮＣワード）である場合でも、続くパケットは、常時、ワード１値となるであろう。ワード１整合（疑似）データは、ダブレット分析にパスされ、２つのＲＥＳＹＮＣがストリーム内で連続的に現れないとき、同期失敗が認識される。同様に、ＯＶＥＲＦＬＯＷ（７’ｈ７７）は、受信機が同期から外れているときに現れ得、２番目のワードがマッチングしない場合でも、正確に解釈されなければならない。これもまた、同期エラーをフラグし得る。受信機が、同期から外れている場合、１つのみの７’ｈ７Ｃまたは７’ｈ７Ｆが、最後に現れ得、第２の値を待機している間、受信機がハングアップするのに好適ではないであろうため、類似論法は、ＳＬＥＥＰおよびＥＮＤパケットにも適用されることができる。その一方で、３つの同じワードが、現れる場合もあり、いずれも受信機を混乱させるべきではない。
【００６９】
完全分析のために、ホスト８３０は、トレースデータを、マイクロプロセッサをプログラムするために使用されたオリジナルソースコードと比較しなければならない。大部分の命令に対して、トレースデータは、実行が生じたことを宣言するが、動作詳細は、含まれない。分岐が、ＥＸパケット（ＴＲＦＰＣＢ＝０）のみをもたらすとき、分岐宛先は、ソースコードを検証することによってのみ判定されることができる。同様に、具体的実施形態によると、ＰＣＬＡＴＨへの書込は、部分的データのみを送り、評価を完了するために、ソース知識を要求する。動作に応じて、ＳＴＡＬＬパケットが先行する、または影響を受ける命令に続いてもよい。ＳＴＡＬＬパケットは、ユーザのディスプレイ上にハイライトされた表記とともに、非典型的動作（例えば、不揮発性メモリへのファイル選択レジスタ（ＦＳＲ）書込）が生じたことの示唆として見られ得る。ＷＡＴＣＨレポートは、多くのパケットによって、トリガ命令を遅延させてもよい。高密度に取り込まれたウォッチは、実際には、同一のウォッチが、読み出しが生じる前に、トリガする場合、損失され得る。ウォッチポイントは、データアドレスのみを識別するため、トレース分析は、直接アドレスモード（ＢＳＲおよびオプコードの知識を要求する）から、または間接モード（ＦＳＲの知識を要求する）からかにかかわらず、データアクセスポインタ値を再構成可能でなければならない。ウォッチデータは、常時、ウォッチイベントの最新の発生に由来する。いくつかのＦＰＣパケットは、命令が実行された（例えば、ＲＥＴＵＲＮ命令）ことを暗示するが、他のインスタンスは、単に、情報価値があることに留意されたい。
【００７０】
図１２は、開発プログラムを起動し、例えば、ＵＳＢインターフェースを介して、外部デバッガ／プログラミングユニット５２０と接続される、パーソナルコンピュータ等のホストを伴う、典型的デバッグ／プログラミングシステム５００を示す。外部デバッガプログラミングユニット５２０は、デバッガ／プログラマ５２０内で生成された電源電圧を供給し得る、専用インターフェースを提供する。しかしながら、他の実施形態は、専用電下を介して、供給電圧を供給してもよく、または標的システムは、自己給電されてもよい。実際のデバッグ／プログラミングインターフェースは、デバッガ／プログラミングユニット５２０によって提供される単方向性クロック信号ＩＣＤＣＬＫおよび双方向性データラインＩＣＤＤａｔａを伴う、同期シリアルインターフェースによって提供されてもよい。したがって、最低限でも、３つの接続ライン、ＩＣＤＣＬＫ、ＩＣＤＤａｔａ、および基準電位（ＧＮＤ）が、デバッガ／プログラミングユニット５２０と、最低限として、前述のように、種々の実施形態による、デバッグ／プログラミングインターフェースを伴うマイクロコントローラであり得る、標的システム５１０を連結するために使用され得る。加えて、前述のような外部トリガイン信号５４０が、図１２に示されるように、標的システム５１０内に実装されてもよく、または回路内デバッガ／プログラマ５２０およびトレース信号は、標的デバイス５１０によって、専用信号ライン５５０を通して、回路内デバッガ／プログラマに自動転送される。
【００７１】
そのようなシステムは、ユーザが、ホスト上で起動するデバッグプログラムを、プログラムがリアルタイムで実行している間、前述されたような条件を有する種々のブレークポイントを設定し、トレース情報を受信するようにプログラムすることを可能にする。デバッグソフトウェアは、ソースコード内のその位置に関して、種々のブレークポイントを追跡するが、デバッガ／プログラマ５２０は、個別のブレークポイントを設定し、その関連付けられたレジスタを構成する、ブレークポイント情報を標的デバイスに通信する。また、トレース能力の設定および構成は、デバッガ／プログラマ５２０によって、標的デバイス５１０に通信される。例えば、メモリ内に記憶されたデータ値のマッチングによってトリガされる具体的ブレークポイントが、設定されてもよい。ユーザは、次いで、ホストＰＣ５３０上で起動するデバッガソフトウェアを通して、標的デバイス５１０のソフトウェアの実行を開始する。標的ソフトウェアの実行は、ブレークポイントが検出されるときのみ停止される。しかしながら、トレース情報は、標的プログラムの実行の間、継続して自動転送される。ホストコンピュータ５３０は、本トレースデータを評価し、テキスト形態において、またはグラフィカルディスプレイを使用してのいずれかにおいて、利用することができる。
【００７２】
本実施形態は、前述のような特徴を実装することによって、トレースストリームのより優れた分析を可能にする。種々の実施形態は、したがって、オンチップデバッグ能力水準を高め、高度デバッグ能力を多くの異なるユーザにもたらすことが可能となるであろう。
【図１】
0006397815.tif 000008
【図２】
0006397815.tif 000009
【図３】
0006397815.tif 000010
【図４】
0006397815.tif 000011
【図５】
0006397815.tif 000012
【図６】
0006397815.tif 000013
【図７】
0006397815.tif 000014
【図８】
0006397815.tif 000015
【図９】
0006397815.tif 000016
【図１０】
0006397815.tif 000017
【図１１】
0006397815.tif 000018
【図１２】
0006397815.tif 000019