(57)【特許請求の範囲】
【請求項１】
デバッグ機能を有するオンチップデバッグ回路部を備えてなるマイクロコンピュータにおいて、
前記オンチップデバッグ回路部に、
ＣＰＵがプログラムを実行している期間に、ユーザにより指定されて発生する２つのイベントの間を、時間の計測対象とするタイマと、
ユーザによって指定された条件に応じて、前記タイマによる計測動作を許可する計測許可信号を出力する計測許可信号出力手段とを備え、
前記タイマは、前記計測許可信号がアクティブとなる期間に計測動作を実行し、前記計測許可信号がインアクティブとなる期間に前記計測動作を一時停止するように構成され、
前記計測許可信号出力手段は、前記タイマによる計測動作を許可又は禁止する割込みレベルを設定する割込みレベル設定レジスタと、
前記ＣＰＵが実行している割込み処理のレベルと、前記割込みレベル設定レジスタに設定された割込みレベルとの高低関係を比較判定し、判定信号を出力する判定手段とを備え、
前記計測許可信号として、前記判定手段による判定結果を指定可能であることを特徴とするマイクロコンピュータ。
【請求項２】
前記ＣＰＵが割込み処理中であることを示す割込み処理信号を出力する割込み処理信号出力手段を備え、
前記計測許可信号出力手段は、前記計測許可信号として、前記割込み処理信号を指定可能であることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記ＣＰＵが、上位レベルの割込み処理中に発生した下位レベルの割込み処理を保留していることを示す割込み保留信号を出力する割込み保留信号出力手段を備え、
前記計測許可信号出力手段は、前記計測許可信号として、前記割込み保留信号を指定可能であることを特徴とする請求項１又は２記載のマイクロコンピュータ。
【請求項４】
前記ＣＰＵに対する割込みが禁止されている期間にアクティブとなる割込み禁止信号を出力する割込み禁止信号出力手段を備え、
前記計測許可信号出力手段は、前記計測許可信号として、前記割込み禁止信号を指定可能であることを特徴とする請求項１ないし３の何れかに記載のマイクロコンピュータ。
【請求項５】
計測開始アドレスが設定される開始アドレス設定レジスタと、
計測終了アドレスが設定される終了アドレス設定レジスタと、
前記開始アドレス設定レジスタ及び前記終了アドレス設定レジスタと前記ＣＰＵのプログラムカウンタの値とを比較する比較手段とを備え、
前記オンチップデバッグ回路部は、前記比較手段による比較結果を前記イベントとすることを特徴とする請求項１ないし４の何れかに記載のマイクロコンピュータ。
【請求項６】
前記ＣＰＵが割込み処理中であることを示す割込み処理信号を出力する割込み処理信号出力手段と、
前記割込み処理信号のレベルが変化するエッジを検出するエッジ検出手段とを備え、
前記オンチップデバッグ回路部は、前記エッジを前記イベントとして指定可能であることを特徴とする請求項１ないし５の何れかに記載のマイクロコンピュータ。
【請求項７】
前記計測許可信号出力手段は、前記タイマによる計測動作を許可又は禁止する割込みレベルを設定する割込みレベル設定レジスタと、
前記ＣＰＵが実行している処理が、前記割込みレベル設定レジスタに設定された割込みレベル以上か、若しくは前記割込みレベル未満かを判定し、判定信号を出力する判定手段と、
前記判定信号のレベルが変化するエッジを検出するエッジ検出手段とを備え、
前記オンチップデバッグ回路部は、前記エッジを前記イベントとして指定可能であることを特徴とする請求項１ないし６の何れかに記載のマイクロコンピュータ。
【請求項８】
上位レベルの割込み処理中に発生した下位レベルの割込み処理を保留していることを示す割込み保留信号を出力する割込み保留信号出力手段と、
前記割込み保留信号のレベルが変化するエッジを検出するエッジ検出手段とを備え、
前記オンチップデバッグ回路部は、前記エッジを前記イベントとして指定可能であることを特徴とする請求項１ないし７の何れかに記載のマイクロコンピュータ。
【請求項９】
前記ＣＰＵに対する割込みが禁止されている期間にアクティブとなる割込み禁止信号を出力する割込み禁止信号出力手段と、
前記割込み禁止信号のレベルが変化するエッジを検出するエッジ検出手段とを備え、
前記オンチップデバッグ回路部は、前記エッジを前記イベントとして指定可能であることを特徴とする請求項１ないし８の何れかに記載のマイクロコンピュータ。
【請求項１０】
前記タイマによる計測結果の最大値を保持する最大値レジスタと、
前記タイマによる計測動作が終了すると、その時点の計測結果と前記最大値レジスタに保持されている最大値とを比較して、前者の値が大きければ前記計測結果を前記最大値レジスタに書き込んで更新する最大値更新手段とを備えたことを特徴とする請求項１ないし９の何れかに記載のマイクロコンピュータ。
【請求項１１】
前記タイマによる計測結果の最小値を保持する最小値レジスタと、
前記タイマによる計測動作が終了すると、その時点の計測結果と前記最小値レジスタに保持されている最小値とを比較して、前者の値が小さければ前記計測結果を前記最小値レジスタに書き込んで更新する最小値更新手段とを備えたことを特徴とする請求項１ないし１０の何れかに記載のマイクロコンピュータ。
【請求項１２】
前記タイマによる計測動作の実行回数をカウントする計測回数カウンタと、
前記タイマによる計測動作の終了時に、当該タイマによる計測結果を累積して保持する累積値レジスタとを備えたことを特徴とする請求項１ないし１１の何れかに記載のマイクロコンピュータ。
【請求項１３】
システムクロック信号を生成出力するクロック信号出力回路を備え、
前記ＣＰＵに対する前記システムクロック信号の供給を停止することで低消費電力モードに移行可能であると共に、
前記オンチップデバッグ回路部の機能を有効化させた状態では、前記低消費電力モードに移行している期間においても、前記オンチップデバッグ回路部に前記システムクロック信号を供給するように構成されていることを特徴とする請求項１ないし１２の何れかに記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オンチップデバッグ機能を備えたマイクロコンピュータに関する。
【背景技術】
【０００２】
従来、マイクロコンピュータのプログラムをデバッグする際に、プログラム中の特定の処理時間を計測するには、例えば特許文献１のように、処理時間の計測を開始するアドレスと計測を終了するアドレスとを設定し、アドレス間で処理時間を計測する技術がある。しかし、マイクロコンピュータは、メインルーチンの実行中に、関数処理などのサブルーチンや様々な割込み処理も実行することがあり、サブルーチンの処理中に割込みが発生する場合もある。したがって、それらを個別に計測するためには、例えば特許文献２のように、各処理ごとに計測開始アドレスと計測終了アドレスとを設定するレジスタや、計測結果を保持するレジスタを用意する必要がある。
【特許文献１】特開平３−１１８６４４号公報
【特許文献２】特許第２５９５７２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ここで、プログラムのデバッグ用にマイクロコンピュータのエミュレータが用意される場合には、回路規模の制約は比較的小さい。しかし、近年は、マイクロコンピュータに、プログラムをデバッグするための機能が予め搭載されている所謂オンチップデバッグ機能を備えたものが用いられている。この場合、回路規模の制約が大きくなることから、冗長な構成は極力削減することが望ましい。例えば、特許文献１の技術を用いて特定の処理に要する時間を計測することを想定すると、発生しうるすべての割込み処理の開始アドレスと終了アドレスを設定するレジスタを設けるか、または、計測対象の処理以外の割込みを一時的に禁止したり、或いは、許可する割込みのレベルを一時的に高く設定するように、デバッグ対象のソフトウェア（ユーザプログラム）を変更する必要がある。
【０００４】
本発明は上記事情に鑑みてなされたものであり、その目的は、オンチップデバッグ機能を備える場合に、回路規模を極力増大させることなく、且つユーザプログラムの記述を変更させることなく、様々な処理に要する時間を計測することができるマイクロコンピュータを提供することにある。
【課題を解決するための手段】
【０００５】
請求項１記載のマイクロコンピュータによれば、オンチップデバッグ回路部に、ユーザによって指定された条件に応じて、ＣＰＵのプログラム実行期間に発生する２つのイベントの間を時間の計測対象とするタイマに計測許可信号を出力する計測許可信号出力手段  を備える。そして、タイマは、計測許可信号がアクティブとなる期間に計測動作を実行し、計測許可信号がインアクティブとなる期間に前記計測動作を一時停止する。これにより、ユーザが指定するイベントや計測許可信号の出力条件に応じて、１つのタイマにより様々な処理に要する時間を柔軟に計測することができる。したがって、オンチップデバッグ回路部を搭載することによる回路規模の増大を極力抑制できると共に、ユーザプログラムの記述を変更させることを回避できる。
また、計測許可信号出力手段は、タイマによる計測動作を許可又は禁止する割込みレベルを設定するための割込みレベル設定レジスタと、ＣＰＵが実行している割込み処理のレベルと割込みレベル設定レジスタに設定された割込みレベルとの高低関係を比較判定する判定手段とを備え、計測許可信号として、判定手段による判定結果を指定可能とする。したがって、２つのイベントが発生した間において、ＣＰＵが実行している割込み処理のレベルが、割込みレベル設定レジスタに設定されたレベルよりも高い場合，若しくは低い場合となる期間を、タイマにより計測することができる。
【０００６】
請求項２記載のマイクロコンピュータによれば、計測許可信号出力手段は、計測許可信号として、ＣＰＵが割込み処理中であることを示す割込み処理信号を指定可能とする。したがって、例えば２つのイベントの間においてＣＰＵが割込み処理を実行している期間，若しくは割込み処理を実行していない期間の長さをタイマにより計測することができる。
【０００８】
請求項３記載のマイクロコンピュータによれば、割込み保留信号出力手段は、ＣＰＵが上位レベルの割込み処理中に発生した下位レベルの割込み処理を保留していることを示す割込み保留信号を出力し、計測許可信号出力手段は、計測許可信号として割込み保留信号を指定可能とする。したがって、２つのイベントが発生した間において、ＣＰＵが割込み処理を保留している時間をタイマにより計測することができる。
【０００９】
請求項４記載のマイクロコンピュータによれば、割込み禁止信号出力手段は、ＣＰＵに対する割込みが禁止されている期間にアクティブとなる割込み禁止信号を出力し、計測許可信号出力手段は、計測許可信号として割込み禁止信号を指定可能とする。したがって、２つのイベントが発生した間において、ＣＰＵに対する割込み処理が禁止されている時間をタイマにより計測することができる。
【００１０】
請求項５記載のマイクロコンピュータによれば、比較手段は、開始アドレス設定レジスタ及び終了アドレス設定レジスタとＣＰＵのプログラムカウンタの値とを比較する。そして、オンチップデバッグ回路部は、比較手段による比較結果をイベントとする。したがって、例えば特定の処理を行うためのサブルーチンプログラムの開始アドレスと終了アドレスとをそれぞれ対応するレジスタに設定しておけば、タイマによりサブルーチンプログラムの実行時間を計測することができる。
【００１１】
請求項６記載のマイクロコンピュータによれば、オンチップデバッグ回路部は、割込み処理信号のレベルが変化するエッジをイベントとして指定可能とする。すなわち、割込み処理の開始，終了に伴って変化する割込み処理信号のエッジをイベントとすることで、タイマにより割込み処理に要する時間を計測することができる。
【００１２】
請求項７記載のマイクロコンピュータによれば、オンチップデバッグ回路部は、割込みレベルを判定する判定手段により出力される判定信号のエッジをイベントとして指定可能とする。したがって、割込みレベル設定レジスタに設定したレベルにより、計測対象とする割込み処理の処理時間を選択的に計測できる。
【００１３】
請求項８記載のマイクロコンピュータによれば、オンチップデバッグ回路部は、割込み保留信号のレベルが変化するエッジをイベントとして指定可能とする。したがって、割込み処理が保留されていた時間をタイマにより計測できる。
【００１４】
請求項９記載のマイクロコンピュータによれば、オンチップデバッグ回路部は、割込み禁止信号のレベルが変化するエッジをイベントとして指定可能とする。したがって、割込み処理が禁止されていた時間をタイマにより計測できる。
【００１５】
請求項１０記載のマイクロコンピュータによれば、最大値レジスタに、タイマによる計測結果の最大値を保持するようにし、最大値更新手段は、タイマによる計測動作が終了すると、その時点の計測結果と最大値レジスタに保持されている最大値とを比較して、前者の値が大きければ計測結果を最大値レジスタに書き込んで更新する。したがって、最大値レジスタにアクセスすれば、タイマによる計測結果の最大値を得ることができる。
【００１６】
請求項１１記載のマイクロコンピュータによれば、最小値レジスタに、タイマによる計測結果の最小値を保持するようにし、最小値更新手段は、タイマによる計測動作が終了すると、その時点の計測結果と最小値レジスタに保持されている最小値とを比較して、前者の値が小さければ計測結果を最小値レジスタに書き込んで更新する。したがって、最小値レジスタにアクセスすれば、タイマによる計測結果の最小値を得ることができる。
【００１７】
請求項１２記載のマイクロコンピュータによれば、計測回数カウンタは、タイマによる計測動作の実行回数をカウントし、累積値レジスタに、タイマによる計測動作の終了時に計測結果を累積して保持する。したがって、累積値レジスタに保持されているタイマによる計測結果の累積値を計測回数カウンタのカウント値で除すことにより、タイマによる計測結果の平均値を得ることが可能となる。
【００１８】
請求項１３記載のマイクロコンピュータによれば、ＣＰＵに対するシステムクロック信号の供給を停止することで低消費電力モードに移行可能に構成され、オンチップデバッグ回路部の機能を有効化させた状態では、低消費電力モードに移行している期間においてもオンチップデバッグ回路部にシステムクロック信号を供給する。したがって、マイクロコンピュータが低消費電力モードに移行している期間においても、オンチップデバッグ回路部により、例えば上記期間の長さを計測することが可能となる。
【図面の簡単な説明】
【００１９】
【図１】第１実施例であり、マイクロコンピュータの構成を示す機能ブロック図
【図２】時間計測機能部及びイベント機能部の詳細構成を示す図
【図３】ユーザプログラムのデバッグを行う際に、タイマにより特定の処理時間を計測する場合の設定手順を示すフローチャート
【図４】４つの異なる処理時間計測パターンを示すタイミングチャート
【図５】第２実施例を示す図２の一部相当図
【図６】処理時間計測パターンを示すタイミングチャート
【図７】第３実施例を示す図２の一部相当図
【図８】図６相当図
【図９】第４実施例を示す図５又は図７相当図
【図１０】図８相当図
【図１１】図６相当図
【図１２】割り込み間の最小時間計測パターンを示すタイミングチャート
【図１３】第５実施例であり、マイクロコンピュータについてクロック信号の供給経路部分のみを概略的に示す図
【発明を実施するための形態】
【００２０】
（第１実施例）
以下、第１実施例について図１ないし図４を参照して説明する。図１は、マイクロコンピュータの構成を示す機能ブロック図である。マイクロコンピュータ（マイコン）１は、ＣＰＵ２，割込み制御回路（割込み処理信号出力手段，割込み保留信号出力手段，割込み禁止信号出力手段）３，メモリ４，周辺回路５，デバッグ回路部（オンチップデバッグ回路部）６等を備えている。ＣＰＵ２〜周辺回路５は、一般的なマイクロコンピュータの構成要素であり、これらはアドレスバス７及びデータバス８を介して接続されている。
【００２１】
割込み制御回路３は、ＣＰＵ２に対して出力される各種の割込み信号をモニタして、例えば以下のような信号を発生させる。
・割込みの重要度を示す割込みレベルを示す信号
・ＣＰＵ２が割込み処理を行っている期間にアクティブとなる割込み処理信号
・ＣＰＵ２がレベルが上位の割込み処理を行っている間にレベルが下位の割込みが
発生することで、後者の割込み処理が保留されている期間にアクティブとなる
割込み保留信号
・割込み制御レジスタ（図示せず）に書き込みが行われ、ＣＰＵ２に対する割込みの
出力が禁止されている期間にアクティブとなる割込み禁止信号
【００２２】
デバッグ回路部６は、例えばフラッシュＲＯＭなどの不揮発性メモリを備えて構成されるメモリ４に記憶され、ＣＰＵ２によって実行されるユーザプログラムのデバッグを行う場合に使用される。デバッグ回路部６は、外部のデバッグツール９と通信を行い、当該ツール９において実行されるモニタプログラムに応じて、ＣＰＵ２がユーザプログラムを実行した場合のレジスタや、ワークメモリ（メモリ４に含まれるＲＡＭ）の状態等をモニタするために動作する。
【００２３】
デバッグ回路部６は、実行制御機能部１０，内蔵ブレーク機能部１１，トレース機能部１２，イベント機能部１３，デバッグＤＭＡ機能部１４，時間計測機能部１５等を備えている。実行制御機能部１０は、デバッグ回路部６が実行するデバッグ機能を統括的に制御する部分であり、内蔵ブレーク機能部１１は、ＣＰＵ２がユーザプログラムを実行している途中でその実行を停止させるブレーク機能を実現する部分である。トレース機能部１２は、ＣＰＵ２によるユーザプログラムの実行状態を追跡するトレース機能を実現する。イベント機能部１３は、ユーザが設定した特定のイベントをトリガとするためにモニタを行う機能であり、デバッグＤＭＡ機能部１４は、例えばメモリ４のデータを転送してデバッグツール９側で読み出すために使用される。
【００２４】
時間計測機能部１５は、ＣＰＵ２による各種の処理の実行時間を計測するための部分であり、その詳細構成をイベント機能部１３と共に図２に示す。割込みレベル設定レジスタ２１には、ユーザによりデバッグツール９を介して割込みレベルが書き込み設定され、そのレジスタ値は、比較器２２（判定手段）において割込み制御回路３より与えられる割込みレベルと比較される。比較器２２は、前記割込みレベル（Ｂ）が、前記レジスタ値（Ａ）よりも大きい場合にアクティブとなる信号を、計測許可回路（計測許可信号出力手段）２３を構成するセレクタ２４に出力する。セレクタ２４には、その他、割込み制御回路３より、上述した割込み処理信号，割込み保留信号，割込み禁止信号等が与えられている。
【００２５】
セレクタ２４における入力信号の選択は、計測許可条件選択レジスタ２５に書き込まれるレジスタ値によって行われる。計測許可条件選択レジスタ２５には、ユーザによりデバッグツール９を介して、比較器２２の出力信号，割込み処理信号，割込み保留信号，割込み禁止信号の何れを選択するかが書き込まれる。そして、セレクタ２４の出力信号は、次段のセレクタ２６に与えられる。
【００２６】
セレクタ２６は、セレクタ２４の出力信号とその負論理信号との何れかを、計測許可設定レジスタ２７に書き込まれるレジスタ値に応じて選択し、タイマ２８に計測許可／一時停止信号（計測許可信号）として出力する。計測許可設定レジスタ２７には、計測許可条件選択レジスタ２５と同様に、ユーザによりデバッグツール９を介して書き込みが行われる。タイマ２８は、計測許可／一時停止信号がハイレベルの期間に計時動作を行い、同信号がローレベルの期間に計時動作を一時的に停止する。
【００２７】
タイマ２８には、２つのセレクタ２９，３０より、それぞれ計測開始信号，計測終了信号が与えられる。これらのセレクタ２９，３０には、イベント機能部１３より各種信号が入力される。イベント機能部１３の立上り／立下りエッジ検出部（エッジ検出手段）３１には、比較器２２の出力信号，並びに割込み処理信号，割込み保留信号，割込み禁止信号が入力されている。立上り／立下りエッジ検出部３１は、入力される各信号の立ち上りエッジ，立下りエッジを検出すると、それぞれについて例えばワンショットパルス信号を発生し、セレクタ２９，３０に出力する（すなわち、計測開始信号，計測終了信号がアクティブになることが、「イベントの発生」に対応する）。
尚、図示の都合上、立上り／立下りエッジ検出部３１の出力線は４本となっているが、実際には、各信号について立上りエッジと立下りエッジとを個別に検出するので、出力線は８本となる。そして、セレクタ２９，３０も、それぞれが立上りエッジ入力と立下りエッジ入力とを個別に選択可能となっている。
【００２８】
また、イベント機能部１３は、開始アドレス設定レジスタ３２，終了アドレス設定レジスタ３３，比較器３４及び３５（比較手段）を備えている。比較器３４は、開始アドレス設定レジスタ３２のレジスタ値とＣＰＵ２のプログラムカウンタ（図示せず）の値とを比較し、比較器３５は、終了アドレス設定レジスタ３３のレジスタ値と前記プログラムカウンタの値とを比較して、何れも両者が一致すると一致信号をセレクタ２９，３０にそれぞれ出力する。セレクタ２９，３０における入力信号の選択は、それぞれ計測開始条件選択レジスタ３６，計測終了条件選択レジスタ３７に書き込まれるレジスタ値によって行われる。これらのレジスタ３６，３７には、ユーザによりデバッグツール９を介して、セレクタ２９，３０に入力される信号の何れを選択するかが書き込まれる。
【００２９】
次に、本実施例の作用について図３及び図４を参照して説明する。図３は、ユーザプログラムのデバッグを行っている際に、タイマ２８により特定の処理時間を計測する場合の設定手順を示すフローチャートである。ＣＰＵ２がユーザプログラムを実行している途中で（ステップＰ１）デバッグツール９によりブレークをかけて、モニタプログラムを実行する。そして、タイマ２８と、当該タイマ２８により計測されたタイマ値が転送される時間計測データレジスタ（図示せず）とをクリアすると（ステップＰ２）、タイマ２８による計測を開始するアドレス（イベントの発生）と、計測を終了するアドレス（イベントの発生）とを、イベント機能部１３の開始アドレス設定レジスタ３２，終了アドレス設定レジスタ３３に書き込んで設定したり、計測開始条件選択レジスタ３６，計測終了条件選択レジスタ３７等の設定を行う（ステップＰ３）。
【００３０】
次に、割込みレベル設定レジスタ２１に計測対象とする割込みレベルを設定したり、計測許可条件選択レジスタ２５，計測許可選択レジスタ２７等の設定を行う（ステップＰ４）。それから、モニタプログラムの実行を終了してユーザプログラムに復帰させると（ステップＰ５）、実行中に再びデバッグツール９によりブレークをかけて、モニタプログラムを実行する。そして、タイマ２８のタイマ値と、後述する計測回数等を読み出す（ステップＰ６）。必要であればステップＰ２に戻り、処理時間計測のための設定を再度行う。
【００３１】
図４（ａ）〜（ｄ）は、４つの異なる処理時間計測パターンを示すタイミングチャートであり、図４（ａ）は、各レジスタの設定を以下のように行った場合の計測状態を示している。尚、図中の破線はタイマ２８による計測が停止されている期間であり（開始イベント未発生の状態）、太線はタイマ２８による計測が実行されている期間，細線はタイマ２８による計測が一時停止されている期間に対応する。
・割込みレベル設定レジスタ２１：割込みレベル「Ｘ（任意）」
・計測許可条件選択レジスタ２５：割込み処理信号
・計測許可選択レジスタ２７    ：「０」（停止）
・開始アドレスレジスタ３２    ：０ｘＡ０００００
・終了アドレスレジスタ３３    ：０ｘＢ０００００
・計測開始条件選択レジスタ３６：比較器３４
・計測終了条件選択レジスタ３７：比較器３５
ここで、計測開始条件選択レジスタ３６の値は関数処理（サブルーチン処理）の開始アドレスに対応し、計測終了条件選択レジスタ３７の値は関数処理の終了アドレスに対応する。そして、関数処理の実行中に割込みが発生すると、割込み処理信号がアクティブとなる。セレクタ２６は、その反転信号をタイマ２８に出力するので、割込み処理信号がアクティブとなる期間はタイマ２８による計時動作は停止される。その結果、タイマ２８は関数処理の実行時間だけを計測する。
【００３２】
図４（ｂ）は、各レジスタの設定を以下のように行った場合の計測状態を示すタイミングチャートである。
・割込みレベル設定レジスタ２１：割込みレベル「１」
・計測許可条件選択レジスタ２５：比較器２２
・計測許可選択レジスタ２７    ：「１」
・開始アドレスレジスタ３２    ：０ｘ００００００
・終了アドレスレジスタ３３    ：０ｘＦＦＦＦＦＥ
・計測開始条件選択レジスタ３６：比較器３４
・計測終了条件選択レジスタ３７：比較器３５
ここで、計測開始条件選択レジスタ３６の値はメインルーチン処理の開始アドレスに対応し、計測終了条件選択レジスタ３７の値はメインルーチン処理の終了アドレスに対応する。すると、割込みレベルが「１」よりも大きい場合にタイマ２８による計時動作が許可されるので、関数処理の実行中にレベル「２」以上の割込みが発生し、その割込み処理が実行されている時間だけが計測されることになる。尚、メインルーチン処理の実行中に割込みが発生した場合にも、同様に計測が行われる。
【００３３】
図４（ｃ）は、各レジスタの設定を以下のように行った場合の計測状態を示すタイミングチャートである。
・割込みレベル設定レジスタ２１：割込みレベル「Ｘ」
・計測許可条件選択レジスタ２５：割込み処理信号
・計測許可選択レジスタ２７    ：「１」
・開始アドレスレジスタ３２    ：０ｘ００００００（若しくは任意）
・終了アドレスレジスタ３３    ：０ｘＦＦＦＦＦＥ（若しくは任意）
・計測開始条件選択レジスタ３６：割込み保留信号の立上がりエッジ
・計測終了条件選択レジスタ３７：割込み保留信号の立下がりエッジ
計測開始条件選択レジスタ３６，計測終了条件選択レジスタ３７の値は図４（ｂ）と同じでも、或いは任意でも良い。この場合、レベル「２」の割込みが発生してその処理を行っている途中にレベル「１」の割込みが発生し、後者の処理が保留されている期間に割込み保留信号がアクティブとなる。そこで、割込み保留信号の立上がりエッジでタイマ２８による計測を開始させ、割込み保留信号の立下がりエッジでタイマ２８による計測を終了させる。また、割込み処理が行われている期間は、タイマ２８の計測が許可される。その結果、レベル「１」の割込み処理が保留されている時間が計測されることになる。
【００３４】
尚、この場合、割込み処理信号と、割込み保留信号とを入れ替えて同様に計測することも可能である。すなわち、割込み処理信号の立上がりエッジでタイマ２８による計測を開始させ、割込み処理信号の立下がりエッジでタイマ２８による計測を終了させるようにし、割込み保留信号がアクティブとなる期間にタイマ２８の計測を許可しても良い。
【００３５】
図４（ｄ）は、各レジスタの設定を以下のように行った場合の計測状態を示すタイミングチャートである。
・割込みレベル設定レジスタ２１：割込みレベル「Ｘ」
・計測許可条件選択レジスタ２５：割込み禁止信号
・計測許可選択レジスタ２７    ：「１」
・開始アドレスレジスタ３２    ：０ｘ００００００
・終了アドレスレジスタ３３    ：０ｘＦＦＦＦＦＥ
・計測開始条件選択レジスタ３６：比較器３４
・計測終了条件選択レジスタ３７：比較器３５
計測開始条件選択レジスタ３６，計測終了条件選択レジスタ３７の値は図４（ｂ）と同じである。そして、関数処理の実行中にレベル「１」，「２」の割込みが発生しているが、それらの割込み処理が禁止されており、割込み禁止信号がアクティブとなる期間にタイマ２８による計測が許可される。その結果、割込み処理が禁止されている時間が計測されることになる。
【００３６】
この場合も図４（ｃ）と同様に、割込み禁止信号の立上がりエッジでタイマ２８による計測を開始させ、割込み禁止信号の立下がりエッジでタイマ２８による計測を終了させるようにし、割込み処理信号がインアクティブとなる期間にタイマ２８の計測を許可することで、同様の計測を行うことができる。
【００３７】
以上のように本実施例によれば、マイコン１のデバッグ回路部６に、ユーザによって指定された条件に応じて、ＣＰＵ２のプログラム実行期間に発生する２つのイベントの間を時間の計測対象とするタイマ２８に対し、計測許可信号を出力する計測許可回路２３を備える。そして、タイマ２８は、計測許可信号がアクティブとなる期間に計測動作を実行する。これにより、ユーザが指定するイベントや計測許可信号の出力条件に応じて、１つのタイマ２８により様々な処理に要する時間を柔軟に計測することができる。したがって、マイコン１にデバッグ回路部６を搭載することによる回路規模の増大を極力抑制できると共に、ユーザプログラムの記述を変更させることを回避できる。
【００３８】
具体的には、計測許可回路２３は、タイマ２８による計測動作を許可又は禁止する割込みレベルを設定するための割込みレベル設定レジスタ２１と、ＣＰＵ２が実行している割込み処理のレベルと、割込みレベル設定レジスタ２１に設定された割込みレベルとの高低関係を比較判定する比較器２２とを備え、計測許可信号として比較器２２による判定結果を指定可能に構成した。したがって、２つのイベントが発生した間において、ＣＰＵ２が実行している割込み処理のレベルが割込みレベル設定レジスタ２１に設定されたレベル以上である期間を、タイマ２８により計測することができる。
【００３９】
また、比較器３４，３５は、開始アドレス設定レジスタ３２及び終了アドレス設定レジスタ３３とＣＰＵ２のプログラムカウンタの値とを比較する。そして、デバッグ回路部６は、比較器３４，３５による比較結果をイベントとするので、例えば特定の処理を行うための関数処理プログラムの開始アドレスと終了アドレスとをそれぞれ対応するレジスタ３２，３３に設定しておくことで、タイマ２８により関数処理プログラムの実行時間を計測することができる。
【００４０】
したがって、ＣＰＵ２が関数処理を実行している途中に割込みが発生した場合であっても、計測許可設定レジスタ２７における設定に応じて、関数処理の実行時間又は割込み処理の実行時間の何れかだけを共通のタイマに２８より計測することが可能になる。これにより、デバッグ回路部６の回路規模を極力増大させること無く、また、デバッグ対象のユーザプログラムに大きな変更を加えることなく、関数処理の実行時間又は割込みの実行時間を計測できる。そして、割込みのレベル（重要度）が複数段階に設定されている場合でも、そのレベルを指定することで実行時間の計測対象を変更できる。
【００４１】
その他、計測許可回路２３は、計測許可信号として、ＣＰＵ２が割込み処理中であることを示す割込み処理信号，ＣＰＵ２が上位レベルの割込み処理中に発生した下位レベルの割込み処理を保留していることを示す割込み保留信号，ＣＰＵ２に対する割込みが禁止されている期間にアクティブとなる割込み禁止信号を、計測許可／一時停止信号とするように指定可能となっているので、例えば２つのイベントの間においてＣＰＵが割込み処理を実行している期間，若しくは割込み処理を実行していない期間の長さや、割込み保留，割込み禁止の期間の長さ等をタイマ２８により計測することができる。
【００４２】
また、デバッグ回路部６は、割込み処理信号のレベルが変化するエッジ，割込みレベルを判定する比較器２２により出力される比較信号（判定信号）のエッジ，割込み保留信号のレベルが変化するエッジや割込み禁止信号のレベルが変化するエッジを、セレクタ２９，３０によりイベントとして指定可能となっている。したがって、割込み処理が保留されていた時間や、割込み処理が禁止されていた時間等をタイマ２８により計測できる。
【００４３】
（第２実施例）
図５及び図６は第２実施例であり、第１実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。図５は図２の一部相当図であり、セレクタ２９の出力信号について立上りエッジを検出する立上りエッジ検出部４１と、この立上りエッジ検出部４１の出力信号の出力回数をカウントする計測回数カウンタ４２とを備える。立上りエッジ検出部４１は、セレクタ２９の出力信号の立ち上がりエッジを検出する毎に、ワンショットのパルス信号を出力する。
【００４４】
図６は、各レジスタの設定を、第１実施例の図４（ａ）のケースと同様に行った場合の計測状態を示すタイミングチャートである。第２実施例の場合、関数処理の実行が開始され、ＣＰＵ２のプログラムカウンタの値が開始アドレス０ｘＡ０００００を示すごとに、タイマ２８により計測が行われる。尚、終了アドレス０ｘＢ０００００に到達しても、タイマ２８の計測値はリセットされることなく、計測結果は累積されるようになっている。
【００４５】
そして、計測回数カウンタ４２には、タイマ２８による計測の開始が何回行われたかが格納されている。したがって、ユーザプログラムを所定の期間実行させた後にブレークをかけて、モニタプログラムによりタイマ２８の計測値と計測回数カウンタ４２のカウント値とを参照して前者の値を後者の値で除すことで、関数処理の平均実行時間を得ることができる。
【００４６】
以上のように第２実施例によれば、タイマ２８による時間計測の実行回数をカウントするための計測回数カウンタ４２を備え、タイマ２８に、関数処理が複数回連続して実行された期間を継続して計測させるようにした。したがって、ある時点でのタイマ２８の計測値を上記実行回数で除算すれば、関数処理の平均実行時間を得ることができる。
【００４７】
（第３実施例）
図７及び図８は第３実施例であり、第１実施例と異なる部分について説明する。図７は図２の一部相当図であり、立上りエッジ検出部４３は、セレクタ２６の出力信号の立上がりエッジを検出するとワンショットパルスを検出信号として出力するもので、その検出信号は、タイマ２８にリセット信号として出力されている。また、タイマ２８の計測データは、比較器４４とセレクタ４５とに与えられている。セレクタ４５の出力側には、最大値保持レジスタ４６が接続されており、最大値保持レジスタ４６のレジスタ値も、比較器４４とセレクタ４５とに与えられている。すなわち、比較器４４は、タイマ２８の計測データ値と最大値保持レジスタ４６のレジスタ値とを比較し、前者の値が後者の値よりも大である場合は、セレクタ４５にタイマ２８の計測データ値を選択させて、最大値保持レジスタ４６に書き込ませる。
【００４８】
次に、第３実施例の作用について図８を参照して説明する。図８は、各レジスタの設定を図４（ｂ）のケースと同様にして計測を行った場合であり、割込みレベルが「２」以上の場合にタイマ２８による計測動作が許可される。これは、レベル「２」以下の割込みが、新たに割込みを発生させることができない時間（不感帯）に相当する。そして、タイマ２８は、レベル「２」以上の割込みが発生する毎にリセットされる。図８に示すケースでは、タイマ２８による計測データの最大値「５」が最大値保持レジスタ４６に保持されている。
【００４９】
以上のように第３実施例によれば、セレクタ２６が計測許可信号を出力するとタイマ２８により計測を行わせる場合に、タイマ２８が計測した実行時間のデータを最大値保持レジスタ４６に保持させる。そして、計測許可信号がアクティブになる毎にタイマ２８をリセットさせるようにし、比較器４４は、最大値保持レジスタ４６に保持されている過去のデータ値よりもタイマ２８が計測した今回のデータ値が大きい場合には、当該データ値を最大値保持レジスタ４６に格納して更新するようにした。したがって、所定レベルの割込みが、新たに割込みを発生させることができない不感帯に相当する時間の最大値を計測することができる。
【００５０】
（第４実施例）
図９ないし図１２は第４実施例である。第２実施例では、関数処理の平均実行時間を得るための構成を、第３実施例では、不感帯に相当する時間の最大値を計測するための構成をそれぞれ個別に示したが、第４実施例は、これらを共通の構成により実現可能にすると共に、割り込みが発生する間隔の最小時間も測定可能となる構成例を示す。図９は、図５又は図７相当図であり、セレクタ２９及び３０の出力端子には、それぞれ立上りエッジ検出部５１及び５２が配置されている。立上りエッジ検出部５１の出力信号は、計測回数カウンタ５３に与えられて出力回数がカウントされると共に、タイマ２８にリセット信号として与えられている。また、立上りエッジ検出部５２の出力信号は、最大値保持レジスタ４６にセレクタ４５（最大値更新手段）より出力されるデータの保持タイミング信号として与えられている。
【００５１】
また、比較器５４，セレクタ５５及び最小値保持レジスタ５６は、比較器４４（最大値更新手段），セレクタ４５及び最大値保持レジスタ４６と同様の接続関係によって接続されている。そして、比較器５４（最小値更新手段）は、タイマ２８のタイマ値と最小値保持レジスタ５６に保持されているデータ値とを比較し、値が小さい方を選択して最小値保持レジスタ５６に出力させるようにセレクタ５５（最小値更新手段）に選択切り替え信号を出力する。
【００５２】
更に、加算器５７及び累積値保持レジスタ５８が設けられており、加算器５７の入力端子には、タイマ２８のタイマ値と、累積値保持レジスタ５８に保持されているレジスタ値とが与えられている。加算器５７は、双方の入力端子に与えられているデータ値の加算結果を累積値保持レジスタ５８に出力する。そして、立上りエッジ検出部５２の出力信号は、最小値保持レジスタ５６及び累積値保持レジスタ５８にデータの保持タイミング信号として与えられている。
【００５３】
次に、第４実施例の作用について図１０ないし図１２を参照して説明する。図１０は、第３実施例と同様に、レベル「２」以下の割込みが、新たに割込みを発生させることができない時間である不感帯の最大時間を取得する場合のタイミングチャートである。この場合の各レジスタは、以下のように設定する。
・割込みレベル設定レジスタ２１：割込みレベル「１」
・計測許可条件選択レジスタ２５：比較器２２
・計測許可選択レジスタ２７    ：「１」
・開始アドレスレジスタ３２    ：任意
・終了アドレスレジスタ３３    ：任意
・計測開始条件選択レジスタ３６：比較器２２の立上がりエッジ
・計測終了条件選択レジスタ３７：比較器２２の立下がりエッジ
【００５４】
以上のように設定することで、タイマ２８はレベル「２」以上の割込みを処理する期間を計測し、比較器２２の立下がりエッジが検出されると、セレクタ３０及び立上りエッジ検出部５２を介して最大値保持レジスタ４６に保持タイミング信号が出力される。これにより、その時点でタイマ２８により計測されているタイマ値と、最大値保持レジスタ４６に保持されているデータ値とでより大きい方が最大値保持レジスタ４６に保持される。そして、次に比較器２２の立上がりエッジが検出されると、セレクタ２９及び立上りエッジ検出部５１を介してタイマ２８にリセット信号が出力される。図１０に示す例では、最大値保持レジスタ４６に保持される最大値は、「０」→「３」→「５」と変化している。
【００５５】
図１１は、第２実施例と同様に、関数処理時間の平均値を取得する場合のタイミングチャートである。この場合の各レジスタは、以下のように設定する。
・割込みレベル設定レジスタ２１：割込みレベル「０」
・計測許可条件選択レジスタ２５：比較器２２
・計測許可選択レジスタ２７    ：「０」
・開始アドレスレジスタ３２    ：０ｘＡ０００００
・終了アドレスレジスタ３３    ：０ｘＢ０００００
・計測開始条件選択レジスタ３６：比較器３４
・計測終了条件選択レジスタ３７：比較器３５
【００５６】
以上のように設定することで、関数処理の実行が開始されてＣＰＵ２のプログラムカウンタの値が開始アドレス０ｘＡ０００００を示す毎に、タイマ２８がリセットされてから計測が開始される。そして、終了アドレス０ｘＢ０００００に到達すると、タイマ２８の計測値は加算器５７を介して累積値保持レジスタ５８に累積的に保持される。また、計測回数カウンタ５３には、タイマ２８による計測の開始が何回行われたかが格納されるので、ユーザプログラムを所定の期間実行させた後にブレークをかけて、モニタプログラムにより累積値保持レジスタ５８に格納されている値と計測回数カウンタ５３のカウント値とを参照して前者の値を後者の値で除すことで関数処理の平均実行時間が得られる。図１１に示す例では、累積値保持レジスタ５８に保持される累積値は「０」→「５」→「９」と変化し、計測回数カウンタ５３のカウント値は「０」→「１」→「２」と変化している。
【００５７】
また、図１２は、レベル「２」の割込み発生間隔の最小時間を取得する場合のタイミングチャートである。この場合の各レジスタは、以下のように設定する。
・割込みレベル設定レジスタ２１：割込みレベル「０」
・計測許可条件選択レジスタ２５：比較器２２
・計測許可選択レジスタ２７    ：「０」
・開始アドレスレジスタ３２    ：０ｘＤ０００００
・終了アドレスレジスタ３３    ：０ｘＣ０００００
・計測開始条件選択レジスタ３６：比較器３４
・計測終了条件選択レジスタ３７：比較器３５
ここで、アドレス０ｘＣ０００００は、レベル「２」以上の割込みを処理するサブルーチンの開始アドレスであり、アドレス０ｘＤ０００００は前記サブルーチンの終了アドレスである。
【００５８】
以上のように設定することで、タイマ２８はプログラムカウンタの値が終了アドレス０ｘＤ０００００に到達するとリセットされて計測を開始し、開始アドレス０ｘＣ０００００に到達すると計測を終了する。そして、その時点のタイマ値と、最小値保持レジスタ５６に保持されているデータ値とでより小さい方が最小値保持レジスタ５６に保持される。図１２に示す例では、最小値保持レジスタ５６に保持される最小値は、「Ｆ」→「７」→「５」と変化している。
【００５９】
以上のように第４実施例によれば、最大値保持レジスタ４６に、タイマ２８による計測結果の最大値を保持するようにし、比較器４４は、タイマ２８による計測動作が終了すると、その時点の計測結果と最大値保持レジスタ４６に保持されている最大値とを比較して、前者の値が大きければセレクタ４５を介して計測結果を最大値保持レジスタ４６に書き込んで更新する。したがって、最大値保持レジスタ４６にアクセスすれば、タイマ２８による計測結果の最大値を得ることができる。
【００６０】
また、最小値保持レジスタ５６に、タイマ２８による計測結果の最小値を保持するようにし、比較器５４は、タイマ２８による計測動作が終了すると、その時点の計測結果と最小値保持レジスタ５６に保持されている最小値とを比較して、前者の値が小さければセレクタ５５を介して計測結果を最小値保持レジスタ５６に書き込んで更新する。したがって、最小値保持レジスタ５６にアクセスすれば、タイマ２８による計測結果の最小値を得ることができる。
【００６１】
更に、計測回数カウンタ５３は、タイマ２８による計測動作の実行回数をカウントし、累積値保持レジスタ５８に、タイマ２８による計測動作の終了時に、加算器５７により計測結果を累積して保持するようにした。したがって、累積値保持レジスタ５８に保持されている累積値を計測回数カウンタ５８のカウント値で除すことにより、タイマ２８による計測結果の平均値を得ることが可能となる。
【００６２】
（第５実施例）
図１３は第５実施例である。第５実施例は、オンチップデバッグ機能を備えているマイクロコンピュータ６１が、通常の動作モードからＣＰＵ２等に対するクロック信号（ＣＰＵクロック）の供給を停止するスリープ又はスタンバイモード（低消費電力モード）に移行可能に構成されているとする。図１３は、マイクロコンピュータ６１について、クロック信号の供給経路部分のみを概略的に示している。発振回路６２は、例えばＣＲ発振回路や水晶発振子を用いた発振回路等で構成されており、周波数が例えばｋＨｚオーダーの基準クロック信号を出力する。
【００６３】
基準クロック信号は、例えばアナログ若しくはデジタルのＰＬＬ（Phase Locked Loop）回路である２つの逓倍／分周回路６３及び６４に入力されている。逓倍／分周回路６３及び６４は、逓倍／分周率を設定するためのレジスタ（図示せず）に設定された値に応じて、例えば周波数がＭＨｚオーダーの逓倍クロック信号（システムクロック信号）を生成して出力する。そして、逓倍／分周回路６３より出力される逓倍クロック信号はＣＰＵクロックとして、ＣＰＵ２や割り込み制御回路３，周辺回路５等（必要に応じてメモリ４にも）に供給される。一方、逓倍／分周回路６４より出力される逓倍クロック信号は、デバッグ回路部６に供給される。
【００６４】
また、逓倍／分周回路６３は、マイクロコンピュータ６１を低消費電力モードに設定するための信号（低消費電力モード信号）がアクティブになると発振動作を停止する。低消費電力モード信号は、例えば予め定められている所定の移行周期毎にＣＰＵ２により出力され、低消費電力モードの移行期間を計時するタイマにより前記期間が計時されるとインアクティブとなる。また、低消費電力モード信号は、ＡＮＤゲート６５の一方の入力端子にも与えられている。そして、デバッグ回路部６の機能を有効にするための信号（デバッグ機能有効信号）は、ＮＯＴゲート６６を介して逓倍／分周回路６４に停止制御信号として与えられている共に、ＡＮＤゲート６５の他方の入力端子に与えられており、ＡＮＤゲート６５の出力信号は発振回路６２に停止制御信号として与えられている。
【００６５】
以上の構成により、低消費電力モード信号及びデバッグ機能有効信号それぞれの状態に応じて、発振回路６２，逓倍／分周回路６３及び６４がそれぞれ動作を停止する条件は以下のようになる。尚、○はアクティブ，×はインアクティブを示す。
低消費電力モード信号    デバッグ機能有効信号
発振回路６２         ○                      ×
逓倍／分周回路６３         ○                      −
逓倍／分周回路６４         −                      ×
【００６６】
したがって、発振回路６２は、マイクロコンピュータ６１が低消費電力モードに移行しても、デバッグ機能有効信号がアクティブとなりデバッグ回路部６が動作する期間は基準クロック信号を出力するが、逓倍／分周回路６３が停止するのでＣＰＵクロックは出力されない。一方、逓倍／分周回路６４は、デバッグ機能有効信号がアクティブであれば動作するので、逓倍クロック信号がデバッグ回路部６に供給される。そして、デバッグ機能有効信号がインアクティブになると逓倍／分周回路６４の動作は停止する。
【００６７】
以上のように第５実施例によれば、マイクロコンピュータ６１が、ＣＰＵ２等に対する逓倍クロック信号の供給を停止することで低消費電力モードに移行可能に構成されル場合に、デバッグ回路部６の機能を有効化させた状態では、低消費電力モードに移行している期間においてもオンチップデバッグ回路部６に逓倍クロック信号を供給する。したがって、低消費電力モードに移行している期間においても、デバッグ回路部６により、例えば上記期間の長さを計測することが可能となる。また、第２，第３実施例ではそれぞれ個別の構成を採用することで実行した計測を、第５実施例では共通の構成によって実現できるので、汎用性を向上させて回路規模の増大を抑制できる。
【００６８】
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
図２に示す構成は、個別の設計に応じて、計測に必要である信号を適宜選択すれば良く、必ずしも図２と同様に構成する必要はない。
比較器２２は、Ｂ＜Ａとなった場合にアクティブとなる信号を出力するようにしても良く、その場合は、セレクタ２６における「１，０」の選択を逆にすれば良い。
第２〜第４実施例を、その他の処理の計測、例えば割込み処理時間や割込み保留時間，割込み禁止時間の計測などに適用しても良い。
第４実施例において、加算器５７及び累積値保持レジスタ５８をアキュムレータにより構成しても良い。
第５実施例を、その他の実施例と適宜組み合わせて実行しても良い。
【符号の説明】
【００６９】
図面中、１はマイクロコンピュータ、２はＣＰＵ、３は割込み制御回路（割込み処理信号出力手段，割込み保留信号出力手段，割込み禁止信号出力手段）、６はデバッグ回路部（オンチップデバッグ回路部）、２２は比較器（判定手段）、２３は計測許可回路（計測許可信号出力手段）、２８はタイマ、３１は立上り／立下りエッジ検出部（エッジ検出手段）、３２は開始アドレス設定レジスタ、３３は終了アドレス設定レジスタ、３４及び３５は比較器（比較手段）、４４は比較器（最大値更新手段）、４５はセレクタ（最大値更新手段）、４６は最大値保持レジスタ、５３は計測回数カウンタ、５４は比較器（最小値更新手段）、５５はセレクタ（最小値更新手段）、５６は最小値保持レジスタ、５７は加算器、５８は累積値保持レジスタ、６１はマイクロコンピュータを示す。
【図１】
0005310819.tif 000002
【図２】
0005310819.tif 000003
【図３】
0005310819.tif 000004
【図４】
0005310819.tif 000005
【図５】
0005310819.tif 000006
【図６】
0005310819.tif 000007
【図７】
0005310819.tif 000008
【図８】
0005310819.tif 000009
【図９】
0005310819.tif 000010
【図１０】
0005310819.tif 000011
【図１１】
0005310819.tif 000012
【図１２】
0005310819.tif 000013
【図１３】
0005310819.tif 000014