(57)【要約】デバッグ能力を伴うプロセッサデバイスは、中央処理ユニットと、インタラプトコントローラと、インタラプトが生じたことを示す第１のモードまたはコードの通常実行を示す第２のモードに設定されるように動作可能なステータスユニットと、該ステータスユニットと連結され、構成可能ブレークポイントを備える、デバッグユニットであって、ブレークポイントが、デバイスがインタラプトサービスルーチンにおいて動作している場合のみ、アクティブ化されるという条件が設定されることができる、デバッグユニットとを有する。
2015516099.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ能力を有するプロセッサデバイスであって、前記デバイスは、
中央処理ユニットと、
インタラプトコントローラと、
インタラプトが生じたことを示す第１のモードまたはコードの通常実行を示す第２のモードに設定されるように動作可能なステータスユニットと、
前記ステータスユニットと連結され、構成可能ブレークポイントを備える、デバッグユニットであって、ブレークポイントが、前記デバイスがインタラプトサービスルーチンにおいて動作している場合のみ、アクティブ化されるという条件が設定されることができる、デバッグユニットと
を備える、デバイス。
【請求項２】
前記ステータスユニットは、
最終ステージインタラプト検出ユニットと、
インタラプトからの復帰検出ユニットと
を備える、請求項１に記載のデバイス。
【請求項３】
前記最終ステージインタラプト検出ユニットは、前記デバイスが前記インタラプトサービスルーチンに入るように強制されるときのみ、インタラプトが生じたことを示す論理信号を生成する、請求項２に記載のデバイス。
【請求項４】
前記ステータスユニットはさらに、
第１の入力において論理１を受信する第１の入力を有し、前記最終ステージインタラプト検出ユニットによって制御される、第１のマルチプレクサと、
第１の入力において論理０を受信し、前記第１のマルチプレクサの出力と連結された第２の入力を有する、第２のマルチプレクサであって、前記第２のマルチプレクサは、前記インタラプトからの復帰検出ユニットによって制御される、第２のマルチプレクサと、
前記第２のマルチプレクサからの出力信号を受信し、前記第１のマルチプレクサの第２の入力と連結された出力を有する、クロック制御レジスタであって、前記レジスタの出力は、前記中央処理ユニットの現在のインタラプトステータスを示す、クロック制御レジスタと
を備える、請求項２に記載のデバイス。
【請求項５】
前記レジスタは、Ｄフリップフロップである、請求項４に記載のデバイス。
【請求項６】
前記デバッグユニットはさらに、前記デバイスがインタラプトサービスルーチンを実行していないとき、ブレークポイントをアクティブ化するように構成されることができる、請求項１に記載のデバイス。
【請求項７】
前記デバッグユニットはさらに、常時、ブレークポイントをアクティブ化するように構成されることができる、請求項６に記載のデバイス。
【請求項８】
前記デバッグユニットは、３つの動作モードのうちの１つを設定する論理ゲートを備えるモード選択回路を備え、第１のモードは、前記中央処理ユニットがインタラプトサービスルーチンを実行するときのみ、ブレークポイントのトリガを可能にし、第２のモードは、前記中央処理ユニットがインタラプトサービスルーチンを実行しないときのみ、ブレークポイントのトリガを可能にし、第３のモードは、常時、ブレークポイントのトリガを可能にする、請求項７に記載のデバイス。
【請求項９】
ブレークポイントが、以下の条件、命令アドレス、命令アドレス範囲、所定のアドレスへのデータ読取アクセス、および所定のアドレスへのデータ書込アクセスのうちの少なくとも１つによって定義されることを可能にするように構成されている、ブレークポイント構成ユニットを備える、請求項１に記載のデバイス。
【請求項１０】
ブレークポイントに対するデータ書込アクセスの条件はさらに、所定のデータアドレスのデータ値を定義してもよい、請求項９に記載のデバイス。
【請求項１１】
いくつかのブレークポイント発生は、プログラムの実行が前記ブレークポイントにおいて停止される前に満たされる必要があるように定義されることができる、請求項９に記載のデバイス。
【請求項１２】
複数のイベントを組み合わせ、プログラムの停止実行を生成するように動作可能なイベントコンバイナをさらに備える、請求項９に記載のデバイス。
【請求項１３】
デバッグ能力を有するプロセッサデバイス内で実行されたコードをデバッグするための方法であって、前記方法は、
中央処理ユニット（ＣＰＵ）によってコードを実行することと、
デバッグユニットによって前記コードを実行している間、前記ＣＰＵのインタラプトサービスステータスを判定することと、
前記ＣＰＵがインタラプトサービスルーチンを実行しているときのみ、前記デバッグユニット内のブレークポイントがアクティブ化されるように構成することと、
ブレークポイントの発生の際、前記ＣＰＵがインタラプトサービスルーチン内で命令を実行している場合のみ、前記デバッグユニット内の前記ブレークポイントをアクティブ化することと
を含む、方法。
【請求項１４】
前記ＣＰＵのインタラプトサービスステータスを判定するために、前記デバッグユニットは、インタラプトサービスルーチンの実行を引き起こす、前記ＣＰＵの最終ステージインタラプト状態を判定し、インタラプトからの復帰命令の実行を判定するように構成される、請求項１３に記載の方法。
【請求項１５】
前記デバッグユニットはさらに、前記デバイスがインタラプトサービスルーチンを実行していないとき、ブレークポイントをアクティブ化するように構成されることができる、請求項１３に記載の方法。
【請求項１６】
前記デバッグユニットはさらに、常時、ブレークポイントをアクティブ化するように構成されることができる、請求項１５に記載の方法。
【請求項１７】
前記デバッグユニットの動作モードを選択することをさらに含み、第１のモードは、前記中央処理ユニットがインタラプトサービスルーチンを実行するときのみ、ブレークポイントのトリガを可能にし、第２のモードは、前記中央処理ユニットがインタラプトサービスルーチンを実行しないときのみ、ブレークポイントのトリガを可能にし、第３のモードは、常時、ブレークポイントのトリガを可能にする、請求項１６に記載の方法。
【請求項１８】
ブレークポイントが、以下の条件：命令アドレス、命令アドレス範囲、所定のアドレスへのデータ読取アクセス、および所定のアドレスへのデータ書込アクセスのうちの少なくとも１つによって定義されることを可能にするようにブレークポイント構成を構成することをさらに含む、請求項１３に記載の方法。
【請求項１９】
ブレークポイントに対するデータ書込アクセスの条件はさらに、所定のデータアドレスのデータ値を定義してもよい、請求項１８に記載の方法。
【請求項２０】
いくつかのブレークポイント発生は、プログラムの実行が前記ブレークポイントにおいて停止される前に満たされる必要があると定義されてもよい、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本出願は、２０１２年５月７日に出願された、「ＤＥＶＩＣＥ  ＨＡＶＩＮＧ  ＣＯＮＦＩＧＵＲＡＢＬＥ  ＢＲＥＡＫＰＯＩＮＴ  ＢＡＳＥＤ  ＯＮ  ＩＮＴＥＲＲＵＰＴ  ＳＴＡＴＵＳ」という名称の米国仮出願第６１／６４３，７０７号の利益を主張する。上記文献は、その全体として本明細書において援用される。
【０００２】
（技術分野）
本開示は、プロセッサデバイスに関し、特に、マイクロコントローラデバイスに関する。
【背景技術】
【０００３】
（背景）
現代のマイクロプロセッサおよびマイクロコントローラは、いわゆる回路内デバッガまたはエミュレータデバイスを用いて、起動中のプログラムを分析することを効率的に可能にする、回路網を含む。この目的を達成するために、マイクロコントローラまたはマイクロプロセッサは、例えば、デバッグインターフェースとして動作するように、デバイスの複数の機能ピンをプログラムすることによってアクティブ化されることができる、デバッグ機能および具体的インターフェースをサポートする、内部回路網を提供する。そのようなインターフェースは、通常、高速シリアルインターフェースとして、実際のデバイスと外部デバッガまたはエミュレータとの間の高速通信を可能にするように構成されることができる。デバイス自体は、したがって、本インターフェースをアクティブ化させない、通常動作モードで動作されることができ、関連付けられたピンは、他の目的のために、および本インターフェースを使用して、外部ホストコンピュータからおよびそれによって動作され得る、デバッガまたはエミュレータ等の個別の外部デバイスとデータを交換する、デバッグ動作モードのために使用されることができる。デバッガまたはエミュレータはまた、プログラマとして動作されることができ、プログラムは、同一のデバッグインターフェースを介して、標的デバイスに転送される。ホストコンピュータ、外部デバッガ、またはエミュレータは、したがって、安価な分析およびデバッグシステムを形成する。
【０００４】
現代のプロセッサおよびマイクロコントローラは、個別のデバイス内に拡張された一式のデバッグ機能を提供する。例えば、いくつかのブレークポイントが、デバイス内に設定され、デバイスが、実際に、リアルタイムで起動することを可能にすることができ、これは、高速シリアルインターフェースだけを使用するとき、外部デバッガでは不可能であって、したがって、ボンドアウトチップおよび高価なデバッグ回路網を要求するであろう。しかしながら、これらの内部デバッグ回路網の機能性は、限定されたシリコン専有面積および他の理由のため、必然的に、幾分、制限される。しかしながら、これらのタイプのブレークポイントは、限定された量の構成のみを可能にする。
【発明の概要】
【課題を解決するための手段】
【０００５】
（要約）
したがって、より柔軟なデバッギングを可能にするために、マイクロコントローラまたはマイクロプロセッサ内に改良されたブレークポイント構成の必要性が存在する。例えば、インタラプトステータスに基づいて、ブレークポイントの構成を可能にすることが有益となるであろう。種々の実施形態によると、ブレークポイントのためのそのような構成可能設定は、ブレークポイントが、インタラプト状態を用いて、デバイスのそのマッチングおよび停止を制限することを可能にする。
【０００６】
ある実施形態によると、デバッグ能力を有するプロセッサデバイスは、中央処理ユニットと、インタラプトコントローラと、インタラプトが生じたことを示す第１のモードまたはコードの通常実行を示す第２のモードに設定されるように動作可能なステータスユニットと、ステータスユニットと連結され、構成可能ブレークポイントを備える、デバッグユニットであって、ブレークポイントが、デバイスがインタラプトサービスルーチンにおいて動作している場合のみ、アクティブ化されるという条件が設定されることができる、デバッグユニットとを備えてもよい。
【０００７】
さらなる実施形態によると、ステータスユニットは、最終ステージインタラプト検出ユニットと、インタラプトからの復帰検出ユニットとを備えてもよい。さらなる実施形態によると、最終ステージインタラプト検出ユニットは、デバイスがインタラプトサービスルーチンに入るように強制されるときのみ、インタラプトが生じたことを示す論理信号を生成してもよい。さらなる実施形態によると、ステータスユニットはさらに、第１の入力において論理１を受信する第１の入力を有し、最終ステージインタラプト検出ユニットによって制御される、第１のマルチプレクサと、第１の入力において論理０を受信し、第１のマルチプレクサの出力と連結される第２の入力を有する、第２のマルチプレクサであって、インタラプトからの復帰検出ユニットによって制御される、第２のマルチプレクサと、第２のマルチプレクサからの出力信号を受信し、第１のマルチプレクサの第２の入力と連結される出力を有する、クロック制御レジスタであって、レジスタの出力が、中央処理ユニットの現在のインタラプトステータスを示す、レジスタとを備えてもよい。さらなる実施形態によると、レジスタは、Ｄフリップフロップであることができる。さらなる実施形態によると、デバッグユニットはさらに、デバイスがインタラプトサービスルーチンを実行していないとき、ブレークポイントをアクティブ化するように構成されることができる。さらなる実施形態によると、デバッグユニットはさらに、常時、ブレークポイントをアクティブ化するように構成されることができる。さらなる実施形態によると、デバッグユニットは、３つの動作モードのうちの１つを設定する論理ゲートを備える、モード選択回路を備えてもよく、第１のモードは、中央処理ユニットがインタラプトサービスルーチンを実行するときのみ、ブレークポイントのトリガを可能にし、第２のモードは、中央処理ユニットがインタラプトサービスルーチンを実行しないときのみ、ブレークポイントのトリガを可能にし、第３のモードは、常時、ブレークポイントのトリガを可能にする。さらなる実施形態によると、本デバイスは、ブレークポイントが、以下の条件、命令アドレス、命令アドレス範囲、所定のアドレスへのデータ読取アクセス、および所定のアドレスへのデータ書込アクセスのうちの少なくとも１つによって定義されることを可能にするように構成される、ブレークポイント構成ユニットを備えてもよい。さらなる実施形態によると、ブレークポイントに対するデータ書込アクセスの条件はさらに、所定のデータアドレスのデータ値を定義してもよい。さらなる実施形態によると、いくつかのブレークポイント発生が、プログラムの実行がブレークポイントにおいて停止される前に満たされる必要があるように定義されることができる。さらなる実施形態によると、デバイスはさらに、複数のイベントを組み合わせ、プログラムの停止実行を生成するように動作可能なイベントコンバイナを備えてもよい。
【０００８】
別の実施形態によると、デバッグ能力を有する、プロセッサデバイス内で実行されたコードをデバッグするための方法は、中央処理ユニット（ＣＰＵ）によってコードを実行することと、デバッグユニットによってコードを実行中、ＣＰＵのインタラプトサービスステータスを判定することと、ＣＰＵがインタラプトサービスルーチンを実行しているときのみ、デバッグユニット内のブレークポイントがアクティブ化されるように構成することと、ブレークポイントの発生の際、ＣＰＵがインタラプトサービスルーチン内の命令を実行している場合のみ、デバッグユニット内のブレークポイントをアクティブ化することとを含んでもよい。
【０００９】
本方法のさらなる実施形態によると、ＣＰＵのインタラプトサービスステータスを判定するために、デバッグユニットは、インタラプトサービスルーチンの実行を引き起こす、ＣＰＵの最終ステージインタラプト状態を判定し、インタラプトからの復帰命令の実行を判定するように構成されることができる。本方法のさらなる実施形態によると、デバッグユニットはさらに、デバイスがインタラプトサービスルーチンを実行していないとき、ブレークポイントをアクティブ化するように構成されることができる。本方法のさらなる実施形態によると、デバッグユニットはさらに、常時、ブレークポイントをアクティブ化するように構成されることができる。本方法のさらなる実施形態によると、本方法はさらに、デバッグユニットの動作モードを選択することを含んでもよく、第１のモードは、中央処理ユニットがインタラプトサービスルーチンを実行するときのみ、ブレークポイントのトリガを可能にし、第２のモードは、中央処理ユニットがインタラプトサービスルーチンを実行しないときのみ、ブレークポイントのトリガを可能にし、第３のモードは、常時、ブレークポイントのトリガを可能にする。本方法のさらなる実施形態によると、本方法はさらに、ブレークポイントが、以下の条件：命令アドレス、命令アドレス範囲、所定のアドレスへのデータ読取アクセス、および所定のアドレスへのデータ書込アクセスのうちの少なくとも１つによって定義されることを可能にするようにブレークポイント構成を構成することを含んでもよい。本方法のさらなる実施形態によると、ブレークポイントに対するデータ書込アクセスの条件はさらに、所定のデータアドレスのデータ値を定義してもよい。本方法のさらなる実施形態によると、いくつかのブレークポイント発生が、プログラムの実行が、ブレークポイントにおいて停止される前に満たされる必要があるように定義されることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、種々の実施形態による、統合されたデバッグモジュールのブロック図を示す。
【図２】図２は、図１のハードウェアブレークポイントブロック図をより詳細に示す。
【図３】図３は、図１のイベントコンバイナブロック図をより詳細に示す。
【図４】図４は、高度ブレークポイント取扱ユニットを示す。
【図５】図５は、種々の実施形態による、埋め込まれたデバッグユニットを伴うマイクロコントローラと、外部回路内デバッグ（ＩＣＤ）コントローラとを使用する、システムのブロック図を示す。
【発明を実施するための形態】
【００１１】
（詳細な説明）
ブレークポイントにインタラプト関連設定を提供することによって、マッチング条件がさらに絞り込まれ、さらに制限されることを可能にする。これは、従来のデバイスにおいて利用可能ではない機能性を提供する。これは、ブレークポイントが、インタラプトサービスルーチン（ＩＳＲ）内でのみマッチングする、またはＩＳＲ外でのみマッチングすることを可能にする。
【００１２】
種々の実施形態は、したがって、オンチップデバッグ能力における技術水準を高める。種々の実施形態によると、デバイスは、デバイスがインタラプトルーチンまたはメインラインルーチンからのコードを実行中であったかどうかを正確に判定し、本情報を使用して、あるブレークポイント特徴を適宜イネーブルまたはディスエーブルにする能力を有する。ブレークポイントのための本構成可能設定は、ブレークポイントが、インタラプト状態を用いて、デバイスのそのマッチングおよび停止を制限することを可能にする。
【００１３】
図１は、ある実施形態による、マイクロコントローラ内に統合され得る、回路内デバッグモジュールのブロック図を示す。しかしながら、前述のような一般的概念は、他のタイプのオンチップデバッグ回路網内に実装されることもできる。ブロック図は、例えば、マイクロコントローラ内に実装されることができ、以下の５つの基本ブロックから成り得る、モジュールを示す。
・ブレークポイント比較論理１３５
・ストップウォッチサイクルカウンタ論理１５０
・制御および状態機械論理１４５
・トレース論理１２０
・イベントコンバイナ論理１２５
【００１４】
マイクロコントローラは、中央処理ユニット（ＣＰＵ）１１０と、ＣＰＵ１１０と連結される関連付けられたインタラプトコントローラ１１２とを備える。ＣＰＵ１１０はさらに、内部バスを通して、ハードウェアブレークポイントユニット１３５、イベント検出ユニット１４０、制御論理ユニット１４５、およびバックグラウンドインターフェース１５５と連結される。これらのブロックの具体的機能は、以下により詳細に説明される。マルチプレクサ１６０は、専用デバッグクロックおよびデータピン１６５を通して、デバッグユニットと外部デバッガの連結を可能にするために使用される。制御論理１４５は、１つ以上の外部ピンと連結されてもよい。図１はまた、トレースユニット１２０と併用され得る、例示的ＴＲＧＩＮピン１８５を示す。そのようなピンは、他の機能を伴わない、専用ピンであってもよい。しかしながら、特に、低ピンデバイスでは、そのようなピンは、プログラム制御下、異なる周辺デバイスに割り当てられることができ、したがって、そのプログラムされた割当に従って、異なる機能を行うことができる、マルチ機能ピンであってもよい。例えば、そのようなピンは、構成レジスタを用いて、トレーストリガイン機能に加え、シリアルインターフェースクロックピン、デジタルＩ／Ｏピン、アナログ入力ピン等としてアクションするようにプログラムされてもよい。図１に示されるように、制御論理はまた、ピン１８５と同様に、マルチ機能ピンであり得る、トリガアウトピン１９０を提供する。トレースモジュール１２０は、トレース機能停止入力ピン１１５と、トレースクロックおよびデータ出力ピン１７５と連結されてもよい。図１はまた、制御論理１４５を通して構成可能であり得る、パルス排斥フィルタ１７０および１８０を示す。そのようなフィルタを通した信号ルーティングは、図１には示されない。いくつかの実施形態によると、ブレークポイントデバッグは、命令が実行される前に実行が一時停止されるように実装される（いわゆる「ゼロスキッド」動作）。他のデバッガ実施形態によると、これは、該当せず、コードが、停止または「スキッド」し、プロセッサが一時停止される前に命令が実行することを可能にする場合、問題を生じさせ得る。外部イベントは、（定義上）命令実行ストリームと非同期である。したがって、その動作は、ゼロスキッド概念に匹敵しない。
【００１５】
内部信号ｄｅｂｕｇ＿ｅｎ＝１であるとき、モジュールは、イネーブルにされ、全「一時停止」イベントを監視し、イベントを生成し、データ捕捉等を行う。内部信号ｄｅｂｕｇ＿ｅｎ＝０である場合、全デバッグ論理は、ディスエーブルにされ、モジュールは、最小電力モードを消費するように構成される。
【００１６】
低侵入性デバッグを行うために、データをデバイスからリアルタイムでストリーミングする手段を有することが有用であり得る。トレースモジュール１２０は、読み取られる、または具体的アドレスに書き込まれるデータを取り出し、それをトレースポートから伝送する方法をサポートする。これは、リアルタイムウォッチポイントとして説明されることができる。デバイスの通常動作は、ウォッチポイントを使用するとき、インタラプトされない。
【００１７】
図２は、種々の実施形態による、ハードウェアブレークポイントユニット１３５の通常機能を示す。拡張機能性が、以下により詳細に説明される。ハードウェアブレークポイントは、プログラムまたはデータメモリのいずれか内のマッチングアドレスをブレークするように構成されることができる。この目的を達成するために、個別のコンパレータ２２０および２３０およびデコーディングユニット２４０が、図２に示されるように、提供される。ブレークポイントが、データメモリ上で動作するように選択されると、ブレークポイントは、加えて、データ値およびマスクが認められ、ある値のみ、ブレークポイントイベントを生成することを可能にすることができる。データブレークポイントはまた、随意に、読取または書込サイクルのみをブレークするように設定されることができる。あらゆる場合において、ブレークポイントは、ブレークポイントイベントが生成される前に具体的イベントが、Ｎ回、生じなければならないようなカウンタ２１０を有する。これは、例えば、いくつかの実施形態によると、１〜２５６回の任意の値に設定されることができる。
【００１８】
図２のブロック図は、単一ブレークポイントに関して示される。しかしながら、実装されるブレークポイントの数は、種々の実施形態に従って、可変であって、多くのブレークポイントが、存在してもよい。図２は、種々のパラメータが、ブレークポイントのためのトリガ要件を定義するようにプログラムされることができる、例示的実施形態を示す。他の実施形態によると、より少ないまたはより多いそのようなパラメータが、使用されてもよい。例えば、ブレークポイントを生成するために必要なブレークポイント発生数は、カウンタ２１０内のＢＰｘＣＮＴパラメータによって設定されることができる。各ブレークポイントモジュールは、同じレジスタを有してもよい。
【００１９】
ブレークポイントは、イベントチャネル定義の中にリスト化され、サイクルカウンタ１５０を開始または停止する、イベントコンバイナステージ１２５を設定またはリセットする、トレースユニット１２０を開始または停止する、あるいはスタックスナップショットを撮影するために使用されることができる。
【００２０】
一実施形態によると、ブレークポイントがイネーブルにされるために、制御レジスタＩＣＤＢＰｘＣＯＮのビットＢＰＥＮが、設定されなければならない。本ビットが、クリアされる場合、本具体的ブレークポイントに対する全回路網は、ディスエーブルにされ、ブレークポイントイベントは、生成されないであろう。ブレークポイントは、認定条件のＮ回目の発生毎にのみ、アクションをトリガするように構成されることができる。例えば、３回目の発生毎にトリガするようにブレークポイントを設定するために、カウンタ２１０は、ＢＰｘＣＮＴ＝２に設定される。個別の制御レジスタが、カウンタ２１０と組み合わせて使用され、その値をリロードし、および／または現在の状態を監視してもよい。
【００２１】
ブレークポイントはまた、例えば、関連付けられた構成レジスタ内に個別のビットを設定することによって、実行コンテキスト（メインラインコード、インタラプトハンドラ、または両方）に基づいて認定されてもよい。ブレークポイントは、したがって、以下により詳細に説明されるように、プログラムが選択されたコンテキストから実行するときのみ、生じてもよい。
【００２２】
さらに別のブレークポイントパラメータは、構成レジスタ内に、プログラムカウンタ（ＰＣ実行アドレス）を監視することを可能にする、個別のビットを設定することによって設定されてもよい。プログラムメモリブレークは、ゼロスキッドであって、動作が実行される前に生じる。ＰＣは、トリガ命令のアドレスを示すであろう。
【００２３】
個別の制御ビットが、クリアされる、例えば、ＢＰＡＲＥＮ＝‘０’であるとき、ＰＣが所定のアドレスに等しくなると、ブレークは、トリガされる。ＢＰＡＲＥＮ＝‘１’であるとき、ＰＣがアドレスの所定の包含範囲内にあると、ブレークは、トリガされる。
【００２４】
いくつかの実施形態によると、実行された命令のみ、ブレークポイントを生成することができる。ＰＣが、実行されないアドレスにあるとき、ブレークポイントは、トリガしない。これは、以下を含む。
・フロー変更命令（ＣＡＬＬ、ＲＥＴＵＲＮ等）、
・スキップされた命令（ＢＴＦＳＳ、ＢＴＦＳＣに従って）、または
・ＰＣＬ、ＦＳＲ、または他の２つのサイクル命令後の次のフェッチ。
【００２５】
別の制御ビットフィールドが、制御レジスタ内で０１、１０、または１１に設定されると、ブレークポイントは、データアクセス、すなわち、アドレスおよび値の両方を監視する。関連付けられたビットの３つの状態は、読取または書込サイクルが、ブレークポイントを判定するために使用されるかどうかを選択する。
【００２６】
データブレークポイントは、必然的に、データが読み取られた、または書き込まれた後、命令実行終了時にブレークを生じさせる（規定通りに）。あらゆる場合において、命令は、完了するまで実行する。故に、「ブレーク」は、実際には、次の命令実行時に生じ、ＰＣは、トリガ命令後に命令を示すであろう。ブレークはまた、メモリアドレスおよびデータ値限定子の両方が満たされるときにトリガされてもよい。
【００２７】
サイクルカウンタ１５０は、ユーザコードがプロファイル化され得るようなストップウォッチ機能を提供するために使用されるカウンタである。サイクルカウンタは、個別の制御レジスタによって制御される。カウンタ１５０は、４つの８−ビットカウンタ／レジスタから成ってもよい。カウンタ１５０は、ＣＰＵのＱ−サイクルの終了毎にインクリメントされてもよい。すなわち、マルチサイクル命令（例えば、ＧＯＴＯ）は、複数回、カウントを行う。
【００２８】
複数の機能が具体的イベントによって制御されることを可能にするために、可能性として考えられるソースの全てが、１つのイベントバスに組み合わせられてもよい。これは、サイクルカウンタ１５０、トレースユニット１２０、およびイベントコンバイナユニット１２５が、同一の設定を使用して、そのアクションを選択することを可能にする。
【００２９】
イベントコンバイナ３００は、図３に示されるように、複数のイベント入力３２０を監視し、それらの入力の組み合わせおよびシーケンスに基づいて、一時停止またはトリガアウト１９０を生成することができる。イベントコンバイナ３００は、個別の制御ビットが設定されると、イネーブルにされる。ディスエーブルにされたコンバイナ３００は、出力イベントをもたらさない。イベントコンバイナ３００は、イベントチャネル定義の中にリスト化され、サイクルカウンタ１５０を開始または停止する、イベントコンバイナステージ３１０を設定またはリセットする、トレースユニット１２０を開始または停止する、またはスタックスナップショットを撮影するために使用されることができる。イベントコンバイナステージ３１０は、そのステージに対する個別の制御ビットが、関連付けられた制御レジスタ内に設定されると、独立して、イネーブルにされる。ステージの現在の出力は、関連付けられたステータスビット内に反映されるであろう。ステージ３１０は、図３に示されるような暗示される順序を有し、以下のいくつかの方法で組み合わせられることができる。
・ステージは、個々に、イベントによってアクティブ化されることができる。
・ステージは、次の下位ステージがアクティブである間、イベントによってアクティブ化されることができる。
・ステージは、個々に、イベントによって非アクティブ化されることができる。
・ステージは、イベントによって、または次の下位ステージが非アクティブ化されると、非アクティブ化されることができる。
【００３０】
個別の制御ビットを設定することによって、組み合わせられたイベントの（Ｎ＋１）回目の発生のみ、出力イベントを信号伝達するであろう。Ｎは、０〜２５５に設定されることができる。組み合わせられたトリガ条件が満たされる場合、レジスタは、１だけデクリメントされる。組み合わせられたトリガ条件が満たされる場合、イベントコンバイナイベントが、生成され、カウンタに、プリセット値がリロードされる。また、新しいカウント値が個別の制御レジスタに書き込まれると、随時、カウンタ内の値が、リロードされる。例えば、３回目の発生時にトリガするようにブレークポイントを設定するために、個別のカウンタ値は、２に設定されるべきである。
【００３１】
ブレークポイント等のイベントが、イネーブルにされたトリガに伴って生じると、ＴＲＧＯＵＴピン１９５上にパルスが、生成される。基本トリガ出力信号動作は、個別の制御ビットを設定することによって構成される。これらの制御ビットは、例えば、トリガ出力が、ほぼトリガイベントの持続時間の間、アサートされるように制御してもよい。隣接または重複イベントは、信号をアサートされた状態に保持してもよい。制御ビットはまた、出力が最短時間周期まで続くかどうか制御してもよい。ＴＲＧＯＵＴワンショットがトリガされると、そのタイミング周期内に発生するさらなるイベントは、無視されるであろう。ワンショットがタイムアウトし、ＴＲＧＯＵＴがゼロに戻った後、再び、別のイベントによってトリガされてもよい。ワンショットは、エッジトリガされ、イベント信号が持続する場合でも、所定の時間周期後、クリアするであろう。
【００３２】
ソフトウェアは、個別の制御ビットを設定することによって、トリガ出力を生じさせてもよい。デバイスが、ウェーク状態である場合、ビットは、１サイクル後、ハードウェアによってクリアされる。ＴＲＧＯＵＴもまた、個別の制御ビットを書き込むことによって、クリアされてもよく、またはデバイスがウェックアップすると、自動的に、クリアされるであろう。
【００３３】
拡張ブレークポイント機能性は、図４を参照して、以下により詳細に説明される。図４に示される回路は、２つのブロック４００ａおよび４００ｂを備える。
【００３４】
第１の回路部分４００ａは、ＣＰＵが、インタラプトサービス内で動作中である、またはその「通常」（非例外）ルーチンを実行中であるかどうかに関して、中央処理ユニット（ＣＰＵ）の現在の状態を判定する。この目的を達成するために、第１のマルチプレクサ４１０は、２つの入力、出力、および制御入力を有するように提供される。第１の入力「０」は、フィードバック信号を受信し、第２の入力「１」は、論理１と有線接続される。マルチプレクサ４１０の制御入力は、最終ステージインタラプト検出ユニット４３０によって生成される論理信号を受信する。マルチプレクサ４１０の出力は、２つの入力、出力、および制御入力を有する第２のマルチプレクサ４２０の第１の入力「０」と連結される。マルチプレクサ４４０の制御入力は、インタラプトからの復帰検出ユニット４４０からさらなる論理信号を受信する。マルチプレクサ４２０の第２の入力「１」は、論理「０」と有線接続される。マルチプレクサ４２０の出力は、Ｄフリップフロップ４５０のデータ入力と連結される。フリップフロップ４５０は、システムクロックＣＬＫによって駆動されるクロックであって、その出力Ｑにおいて、マルチプレクサ４１０の第１の入力にフィードバックされる、出力信号を生成する。本出力信号は、ＣＰＵがインタラプトサービスルーチン（ＩＳＲ）内でコードを実行中であるかどうかを示す。
【００３５】
図４に示される回路の第２の部分４００ｂは、機能選択を提供する。３つの動作モードが、選択されることができる。ブレークポイントイベント信号は、前述のように、ブレークポイントユニットによって生成されることができる。しかしながら、より多いまたはより少ない機能性を伴う他のブレークポイントユニットも、いくつかの実施形態に従って使用されてもよい。本ブレークポイントイベント信号は、３つのＡＮＤゲート４６０、４７０、および４８０の第１の入力にフィードされる。各ＡＮＤゲート４６０、４７０、および４８０の第２の入力は、動作モードを判定する論理信号を受信する。例えば、第１の信号「ＩＳＲ時ブレークモード」は、ＣＰＵがインタラプトサービスルーチンを実行中であるときのみ、ブレークポイントの検出が可能であるために使用されてもよい。第２の信号「非ＩＳＲ時ブレークモード」は、ＣＰＵがＩＳＲにおいてコードを実行中ではないときのみ、ブレークポイントが動作する、動作モードを提供する。第３の信号「常時ブレークモード」は、ＣＰＵがインタラプトサービスルーチンを実行するかどうかの事実にかかわらず、全アクティブブレークポイントが動作する、従来の動作モードを提供する。ＡＮＤゲート４６０および４７０は、それぞれ、フリップフロップ４５０からの非反転出力信号と、インバータ４７５を用いて反転される、フリップフロップ４５０からの出力信号とを受信する、第３の入力を提供する。３つの入力を有するＯＲゲート４９０は、３つのＡＮＤゲート４６０、４７０、および４８０から出力信号を受信するように提供される。ＯＲゲート４９０の出力は、最終ブレークポイント信号を提供する。
【００３６】
フリップフロップ４５０は、インタラプト実行の現在の状態を記憶する。最終ステージインタラプト検出ユニット４３０は、インタラプトが発生しているとき、それを判定するために使用される。最終ステージインタラプト検出ユニット４３０は、インタラプトが発生しないように妨害されないときのみ、アクティブである個別の出力信号を生成することが重要である。そうでなければ、これは、検出を誤らせ、誤検出は、不適切な挙動をもたらし得る。「最終ステージインタラプト検出」出力信号がアクティブになると、フリップフロップ４５０は、デバイスが、現在、インタラプトサービスルーチン（ＩＳＲ）から実行中であることを示すように設定され、その結果、「ＩＳＲ実行」信号は、高となり、そのままとなるであろう。
【００３７】
フリップフロップ４５０は、「インタラプトからの復帰検出」の際、自動的にクリアされるであろう。これは、典型的には、ＩＳＲから復帰するためにのみ使用される、特殊命令デコードである。「最終ステージインタラプト検出」および「インタラプトからの復帰検出」は、相互に排他的であることに留意されたい。
【００３８】
フリップフロップ４５０はまた、システムリセットの際、自動的にクリアされるであろう。これは、システムがリセットされた後、デバイスが、以前にＩＳＲから実行中である場合、そうでなければ、ここで、非ＩＳＲから実行していると見なされるため、重要である。
【００３９】
他の回路も、ＣＰＵの現在のステータスを判定するために使用されてもよい。例えば、ＣＰＵは、ＩＳＲ実行信号として使用され得る、インタラプトが実際に実行中であるかどうかを示す、内部フラグを有してもよい。さらに、ネスト化されたインタラプトサービスルーチンの検出を可能にする回路が、優先化されたインタラプトの実行を可能にし、したがって、現在低優先順位のＩＳＲをより高く優先化されたＩＳＲを用いてインタラプトすることを可能にするように提供されてもよい。ＣＰＵがＩＳＲからコードを実行しているかどうかを正確に示す信号が提供されることが、不可欠である。
【００４０】
図４のブロック４００ｂは、そのような「ＩＳＲ実行」信号が、どのように関連付けられたブレークポイント論理によって使用され、ブレークポイントイベントの発生の許可または却下のいずれかを行い得るかを示す。本論理は、３つの相互に排他的設定、すなわち、ＩＳＲ内のブレークポイントのみ可能にする、「ＩＳＲ時ブレークモード」、ＩＳＲ外のブレークポイントのみ可能にする、「非ＩＳＲ時ブレークモード」、およびＩＳＲ実行にかかわらず、ブレークポイントを可能にする、「常時ブレークモード」を有する。これらの２つの要素の組み合わせは、ブレークポイントが、インタラプトステータスに基づいて構成されることを可能にする。相互排他的信号は、１つ以上の構成レジスタを使用して、個別の構成論理によって生成されることができる。例えば、構成レジスタ内のビットフィールドは、３つの異なる動作モードをエンコードするために使用されてもよい。他の信号デコーディングも、他の実施形態に従って使用されてもよい。
【００４１】
インタラプトが発生中であることを正確に判定することは、困難であり得る。インタラプトが発生するであろうことを明白に示す信号を使用する必要がある。多くの場合、インタラプトプロセスにステージングが存在し、インタラプトの初期ステージは、インタラプトが発生しないように妨害するように遅延またはブロックされることができる。延期またはブロックされることができない最終信号のみ、したがって、使用されることができる。デバイスリセットの際、システムは、インタラプトせず、非ＩＳＲ実行と見なされるはずである。フリップフロップ４５０に対する適切なリセットがない場合、リセットに先だった状態が、留保され得、不適切なブレークポイントマッチングは、発生しないであろう。
【００４２】
図５は、開発プログラミングを起動し、例えば、ＵＳＢインターフェースを介して、外部デバッガ／プログラミングユニット５２０と接続される、パーソナルコンピュータ等のホストを伴う、典型的デバッグ／プログラミングシステムを示す。外部デバッガプログラミングユニット５２０は、デバッガ／プログラマ５２０内で生成された電ソース電圧を供給し得る、専用インターフェースを提供する。しかしながら、他の実施形態は、専用電源を介して、供給電圧を供給してもよく、または標的システムは、自己給電されてもよい。実際のデバッグ／プログラミングインターフェースは、デバッガ／プログラミングユニット５２０によって提供される単方向性クロック信号ＩＣＤＣＬＫおよび双方向性データラインＩＣＤＤａｔａを伴う、同期シリアルインターフェースによって提供されてもよい。したがって、最低限でも、３つの接続ライン、ＩＣＤＣＬＫ、ＩＣＤＤａｔａ、および基準電位（ＧＮＤ）が、デバッガ／プログラミングユニット５２０と、最低限として、前述のように、種々の実施形態による、デバッグ／プログラミングインターフェースを伴うマイクロコントローラであり得る、標的システム５１０を連結するために使用され得る。
【００４３】
そのようなシステムは、ユーザが、ホスト上で起動するデバッグプログラムを、前述されたような条件を有する種々のブレークポイントを設定するようにプログラムすることを可能にする。デバッグソフトウェアは、ソースコード内のその位置に関して、種々のブレークポイントを追跡するが、デバッガ／プログラマ５２０は、個別のブレークポイントを設定し、その関連付けられたレジスタを構成する、ブレークポイント情報を標的デバイスに通信する。例えば、メモリ内に記憶されたデータ値のマッチングによってトリガされている、具体的ブレークポイントが、設定されてもよく、インタラプトサービスルーチンが実行されるときのみブレークポイントがトリガされる、拡張機能が、アクティブ化される。ユーザは、次いで、ホストＰＣ５３０上で起動するデバッガソフトウェアを通して、標的デバイス５１０のソフトウェアの実行を開始する。標的ソフトウェアの実行は、両条件が該当するときのみ、すなわち、標的５１０のＣＰＵがインタラプトサービスルーチンを実行し、規定されたメモリ場所が所定の値にマッチングしたときのみ、停止される。別の設定によると、サブルーチンは、標的ソフトウェアのメインルーチンおよびインタラプトサービスルーチンの両方によって使用されてもよい。ユーザが、実行されたコードに関するトラブルに遭遇する場合、特に、ＩＳＲからサブルーチンを呼び出すとき、通常、ブレークポイントが、個別のサブルーチン内に設定されるであろう。しかしながら、サブルーチンが、インタラプトサービスルーチンによって稀にしか呼び出されない場合、標的ソフトウェアの実行は、メインルーチンが別のサブルーチンを呼び出すことによって生じる、多くの実行停止をもたらし得る。これは、デバッギングを完全に役に立たなくし得る。ある実施形態によると、ユーザは、そのような状況において、デバッガ動作モードを設定し、前述のようにインタラプトルーチンを実行するときのみ、ブレークポイントを可能にすることができる。現時点では、標的ソフトウェアの実行は、サブルーチンがインタラプトサービスルーチンから呼び出されるときのみ、サブルーチン内で停止され、それによって、そうでなければ、実行を停止し、標的デバッギングを多かれ少なかれ役に立たなくするであろう、多数の他の可能性として考えられるブレークポイントイベントをフィルタリングする。
【図１】
2015516099.tif 000003
【図２】
2015516099.tif 000004
【図３】
2015516099.tif 000005
【図４】
2015516099.tif 000006
【図５】
2015516099.tif 000007
【国際調査報告】
2015516099.tif 000008
2015516099.tif 000009
2015516099.tif 000010