(57)【要約】【課題】デバッグ時において、プログラムの実行中にはウオッチドグタイマの機能を有効にし、プログラムの実行が停止している間は、ウオッチドグタイマの機能を無効にすることができるマイクロプロセッサを提供する。【解決手段】ＣＰＵコア２は、対象プログラムを実行する。第１の分周回路１２は、ＣＰＵコア２に与えられるクロックＣＰＵ＿ＣＬＫを分周した第１の分周クロックＤＶ＿ＣＬＫ１を出力する。ウオッチドグタイマ１４は、第１の分周回路１２が出力する第１の分周クロックＤＶ＿ＣＬＫ１に従って、カウントを行なう。制御回路８は、デバッガの指定に従って、停止を指示する停止信号ＨＡＬＴの出力を制御する。ＣＰＵコア２は、デバッガの指定に従って、対象プログラムの実行または実行の停止を行なう。第１の分周回路１２は、停止信号ＨＡＬＴを受けると、第１の分周クロックＤＶ＿ＣＬＫ１の出力を停止する。【選択図】図１
2008299730.tif 000002
【特許請求の範囲】
【請求項１】
対象プログラムを実行するＣＰＵコアと、
前記ＣＰＵコアに与えられるクロックを分周した第１の分周クロックを出力する第１の分周回路と、
前記第１の分周回路から出力する第１の分周クロックに従って、カウントを行なうウオッチドグタイマと、
デバッガの指定に従って、停止を指示する停止信号の出力および前記出力の解除を制御する制御回路とを備え、
前記ＣＰＵコアは、前記デバッガの指定に従って、前記対象プログラムの実行または実行の停止を行ない、
前記第１の分周回路は、前記停止信号を受けると、前記第１の分周クロックの出力を停止する、マイクロプロセッサ。
【請求項２】
前記デバッガで指定したブレークポイントに達したときに、前記ＣＰＵコアは、前記対象プログラムの実行を停止し、前記制御回路は、前記停止信号を出力する、請求項１記載のマイクロプロセッサ。
【請求項３】
前記デバッガでリスタートが指示されると、前記ＣＰＵコアは、前記対象プログラムの実行を再開するとともに、前記制御回路は、前記停止信号の出力を解除する、請求項１記載のマイクロプロセッサ。
【請求項４】
前記デバッガで命令の部分実行が指示されると、前記ＣＰＵコアは、前記対象プログラムの指定された１個または複数個の命令を実行し、前記制御回路は、前記停止信号の出力を解除し、一定時間経過後に、前記停止信号の出力を再開する、請求項１記載のマイクロプロセッサ。
【請求項５】
前記デバッガで命令の部分実行が指示されると、前記ＣＰＵコアは、前記対象プログラムの指定された１個または複数個の命令を実行し、前記制御回路は、前記停止信号の出力を解除し、
前記ＣＰＵコアは、前記指定された命令の実行の終了後に、前記制御回路に終了を指示し、前記制御回路は、前記終了が指示されると、前記停止信号の出力を再開する、請求項１記載のマイクロプロセッサ。
【請求項６】
前記マイクロプロセッサは、さらに、
前記ＣＰＵコアに与えられるクロックを分周した分周クロックを前記ウオッチドグタイマ以外のタイマへ出力する別の分周回路を少なくとも１つ備え、
前記第１の分周回路は、前記ウオッチドグタイマのみに対して前記第１の分周クロックを出力する、請求項１記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ関し、特にデバッグ機能とウオッチドグタイマを備えたマイクロプロセッサに関する。
【背景技術】
【０００２】
従来から、プログラムの暴走を管理するための手段としてウオッチドグタイマが用いられている（たとえば、特許文献１を参照）。ウオッチドグタイマは、タイマ値に達した場合に、異常信号を出力する。プログラムが正常に動作しているときには、定期的にウオッチドグタイマにリセット信号が送られて、タイマ値がリセットされるため異常信号は出力されない。一方、プログラムが無限ループに入った場合のようにプログラムが異常に動作するときには、リセット信号が送られず、カウントアップが続けられ、タイマ値に達することによって、異常信号が出力される。
【特許文献１】特開２００５−１０７７５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、ウオッチドグタイマを備えたマイクロプロセッサにおいて、デバッグを行なう場合に、プログラムが実行されていないにも係らず、ウオッチドグタイマが動作し続け、無用な異常信号を出力するという問題があった。そのため、従来は、デバッグ時には、一律に、ウオッチドグタイマを停止させるか、またはウオッチドグタイマから送られる異常信号を無視することで対応していた。
【０００４】
しかしながら、デバッグ時においても、プログラムの実行中には、ウオッチドグタイマが動作することが望ましい。
【０００５】
それゆえに、本発明の目的は、デバッグ時において、プログラムの実行中にはウオッチドグタイマの機能を有効にし、プログラムの実行が停止している間は、ウオッチドグタイマの機能を無効にすることができるマイクロプロセッサを提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のマイクロプロセッサは、対象プログラムを実行するＣＰＵコアと、ＣＰＵコアに与えられるクロックを分周した第１の分周クロックを出力する第１の分周回路と、第１の分周回路から出力する第１の分周クロックに従って、カウントを行なうウオッチドグタイマと、デバッガの指定に従って、停止を指示する停止信号の出力および出力の解除を制御する制御回路とを備え、ＣＰＵコアは、デバッガの指定に従って、対象プログラムの実行または実行の停止を行ない、第１の分周回路は、停止信号を受けると、第１の分周クロックの出力を停止する。
【０００７】
好ましくは、デバッガで指定したブレークポイントに達したときに、ＣＰＵコアは、対象プログラムの実行を停止し、制御回路は、停止信号を出力する。
【０００８】
好ましくは、デバッガでリスタートが指示されると、ＣＰＵコアは、対象プログラムの実行を再開するとともに、制御回路は、停止信号の出力を解除する。
【０００９】
好ましくは、デバッガで命令の部分実行が指示されると、ＣＰＵコアは、対象プログラムの指定された１個または複数個の命令を実行し、制御回路は、停止信号の出力を解除し、一定時間経過後に、停止信号の出力を再開する。
【００１０】
好ましくは、デバッガで命令の部分実行が指示されると、ＣＰＵコアは、対象プログラムの指定された１個または複数個の命令を実行し、制御回路は、停止信号の出力を解除し、ＣＰＵコアは、指定された命令の実行の終了後に、制御回路に終了を指示し、制御回路は、終了が指示されると、停止信号の出力を再開する。
【００１１】
好ましくは、マイクロプロセッサは、さらに、ＣＰＵコアに与えられるクロックを分周した分周クロックをウオッチドグタイマ以外のタイマへ出力する別の分周回路を少なくとも１つ備え、第１の分周回路は、ウオッチドグタイマのみに対して第１の分周クロックを出力する。
【発明の効果】
【００１２】
本発明のマイクロプロセッサによれば、デバッグ時において、プログラムの実行中にはウオッチドグタイマの機能を有効にし、プログラムの実行が停止している間は、ウオッチドグタイマの機能を無効にすることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明に係る実施の形態について図面を参照して説明する。
（構成）
図１は、本発明の実施形態のマイクロプロセッサの構成を表わす図である。
【００１４】
図１を参照して、このマイクロプロセッサは、ＣＰＵコア２と、第１の分周回路１２と、ウオッチドグタイマ１４と、第２の分周回路１６と、時計用タイマ１８と、クロック発生器１０と、レジスタ６と、制御回路８とを含む。
【００１５】
ＣＰＵコア２は、内部のプログラムカウンタ４に従って、対象プログラムを実行する。また、ＣＰＵコア２は、対象プログラムに含まれる命令に従って、定期的にウオッチドグタイマへリセット信号Ｒｅｓｅｔを出力する。
【００１６】
ＣＰＵコア２は、論理積回路３０からブレーク信号ＢＲＥＡＫを受け、図示しないデバッガ装置からワンステップ信号ＯｎｅＳｔｅｐおよびリスタート信号Ｒｅｓｔａｒｔを受ける。ＣＰＵコア２は、Ｈレベルのブレーク信号ＢＲＥＡＫを受けると、対象プログラムの実行を停止する。また、ＣＰＵコア２は、Ｈレベルのワンステップ信号ＯｎｅＳｔｅｐを受けると、対象プログラムの次の１個の命令を実行する。また、ＣＰＵコア２は、Ｈレベルのリスタート信号Ｒｅｓｔａｒｔを受けると、対象プログラムの次の命令およびその後続の命令を実行する。
【００１７】
レジスタ６には、図示しないデバッガ装置で設定されたブレークポイントＢＬ＿Ｐが格納される。
【００１８】
制御回路８は、比較器２８と、論理積回路３０と、Ｄ型フリップフロップ２０と、第１の論理和回路２２と、第２の論理和回路２４と、Ｒ−Ｓフリップフロップ２６とを含む。
【００１９】
比較器２８は、ＣＰＵコア２からプログラムカウンタ４のカウンタ値を受け、レジスタ６からブレークポイントＢＬ＿Ｐ受けて、信号ＥＱを出力する。比較器２８は、両者が一致する場合には一致信号ＥＱをＨレベルに設定し、両者が相違する場合には一致信号ＥＱをＬレベルに設定する。
【００２０】
論理積回路３０は、Ｒ−Ｓフリップフロップ２６から反転停止信号／ＨＡＬＴを受けるとともに、比較器２８から信号ＥＱを受けて、ブレーク信号ＢＲＥＡＫを第１の論理和回路２２およびＣＰＵコア２へ出力する。論理積回路３０は、反転停止信号／ＨＡＬＴがＨレベルで（すなわち、停止が指示されていない）、かつ一致信号ＥＱがＨレベル（すなわち、対象プログラムがブレークポイントＢＬ＿Ｐに達した）のときに、ブレーク信号ＢＲＥＡＫをＨレベルに設定する。
【００２１】
Ｄ型フリップフロップ２０は、遅延型フリップフロップである。Ｄ型フリップフロップ２０は、クロック発生器１０からクロックＣＰＵ＿ＣＬＫを受けるとともに、図示しないデバッガ装置からワンステップ信号ＯｎｅＳｔｅｐを受けて、ワンステップ信号ＯｎｅＳｔｅｐの遅延信号Ｄを第１の論理和回路２２へ出力する。
【００２２】
第１の論理和回路２２は、論理積回路３０からブレーク信号ＢＲＥＡＫを受けるとともに、Ｄ型フリップフロップ２０から遅延信号Ｄを受けて、それらの論理和信号をＲ−Ｓフリップフロップ２６のセット端子Ｓへ出力する。
【００２３】
第２の論理和回路２４は、図示しないデバッガ装置から、ワンステップ信号ＯｎｅＳｔｅｐおよびリスタート信号Ｒｅｓｔａｒｔを受けて、それらの論理和信号をＲ−Ｓフリップフロップ２６のリセット端子Ｒへ出力する。
【００２４】
Ｒ−Ｓフリップフロップ２６は、セット端子Ｓで第１の論理和回路２２の出力を受け、リセット端子Ｒで第２の論理和回路２４の出力を受ける。Ｒ−Ｓフリップフロップ２６は、出力端子Ｑから停止信号ＨＡＬＴを出力し、出力端子／Ｑから反転停止信号／ＨＡＬＴを出力する。
【００２５】
クロック発生器１０は、クロックＣＰＵ＿ＣＬＫを生成して、ＣＰＵコア２、第１の分周回路１２、および第２の分周回路１６に出力する。ＣＰＵコア２は、送られたクロックＣＰＵ＿ＣＬＫに従って動作する。
【００２６】
第１の分周回路１２は、クロック発生器１０からクロックＣＰＵ＿ＣＬＫを受けて、クロックＣＰＵ＿ＣＬＫを分周した第１の分周クロックＤＶ＿ＣＬＫ１をウオッチドグタイマ１４へ出力する。第１の分周回路１２は、停止信号ＨＡＬＴがＨレベルに設定されると、カウントアップを停止する。
【００２７】
ウオッチドグタイマ１４は、第１の分周クロックＤＶ＿ＣＬＫ１に従って、カウント値を更新する。第１の分周クロックＤＶ＿ＣＬＫ１の１つのパルスを受けるごとに、カウント値が１だけインクリメントされる。ウオッチドグタイマ１４は、ＣＰＵコア２からリセット信号Ｒｅｓｅｔを受けると、カウント値を初期値にリセットする。また、ウオッチドグタイマ１４は、カウント値が所定の値を超えた場合に、エラー信号Ｅｒｒｏｒを図示しないデバッガ装置へ出力する。デバッガ装置は、エラー信号Ｅｒｒｏｒを受けると、エラーがあった旨を表示する。
【００２８】
第２の分周回路１６は、クロック発生器１０からクロックＣＰＵ＿ＣＬＫを受けて、クロックＣＰＵ＿ＣＬＫを分周した第２の分周クロックＤＶ＿ＣＬＫ２を時計用タイマ１８へ出力する。
【００２９】
時計用タイマ１８は、第２の分周クロックＤＶ＿ＣＬＫ２に従って、カウント値を更新することによって、マイクロプロセッサの時計機能、たとえばカレンダ管理を実行する。第２の分周回路１６が停止信号ＨＡＬＴを受けないので、時計用タイマ１８は、デバッグ時におけるプログラムの停止中も動作し続ける。
【００３０】
第１の分周回路１２および第２の分周回路１６は、分周カウンタで構成されている。第１の分周回路１２は、たとえば、１２ビットバイナリカウンタである。したがって、たとえば、クロック発生器１０から出力されるクロックＣＰＵ＿ＣＬＫの周波数が４０４８ＭＨｚの場合には、第１の分周回路１２から出力される第１の分周クロックＤＶ＿ＣＬＫ１の周波数は約１ＭＨｚとなる。
【００３１】
（動作）
図２は、図１のマイクロプロセッサのタイミングチャートを表わす図である。図２を参照して、図１のマイクロプロセッサの動作を説明する。
【００３２】
（１）  ブレークポイント
デバッガ装置でブレークポイントＢＬ＿Ｐが設定されたときには、デバッガ装置で設定されたブレークポイントＢＬ＿Ｐがレジスタ６に格納される。
【００３３】
ＣＰＵコア２のプログラムカウンタ４の値が、デバッガ装置で設定したブレークポイントＢＬ＿Ｐに達したときには、比較回路は、一致信号ＥＱを一時的にＨレベルに設定する。これにより、論理積回路３０は、ブレーク信号ＢＲＥＡＫを一時的にＨレベルに設定する（（１）に示す）。
【００３４】
ブレーク信号ＢＲＥＡＫがＨレベルに設定されると、それが第１の論理和回路２２を介してＲ−Ｓフリップフロップ２６のセット入力端子Ｓに伝わり、停止信号ＨＡＬＴがＨレベルに設定される（（２）に示す））。
【００３５】
停止信号ＨＡＬＴがＨレベルに設定されると、第１の分周回路１２は、カウントアップを停止する（（３）に示す）。その結果、第１の分周クロックＤＶ＿ＣＬＫ１の出力が停止される。ウオッチドグタイマは、第１の分周クロックＤＶ＿ＣＬＫ１が入力されないので、カウント値を更新しない。すなわち、ウオッチドグタイマ１４は、カウント値を維持したまま、カウントアップを一時停止する。
【００３６】
その後、ブレーク信号ＢＲＥＡＫがＬレベルに変化しても、Ｒ−Ｓフリップフロップ２６の機能によって停止信号ＨＡＬＴのレベルは変化せず、ウオッチドグタイマ１４は一時停止したままである。
【００３７】
（２）  １ステップ命令の実行
デバッガ装置で１命令の実行が指定されたときには、デバッガ装置から送られるワンステップ信号ＯｎｅＳｔｅｐが一時的にＨレベルに設定される（（４）に示す）。
【００３８】
ＣＰＵコア２は、リスタート信号ＯｎｅＳｔｅｐがＨレベルに設定されると、対象プログラムの次の１つの命令を実行する。
【００３９】
ワンステップ信号ＯｎｅＳｔｅｐがＨレベルに設定されると、それが第２の論理和回路２４を介してＲ−Ｓフリップフロップ２６のリセット入力端子Ｒに伝わり、停止信号ＨＡＬＴがＬレベルに設定される（（５）に示す。）。
【００４０】
停止信号ＨＡＬＴがＬレベルに設定されると、第１の分周回路１２は、カウントアップを再開する（（６）に示す）。その結果、第１の分周クロックＤＶ＿ＣＬＫ１の出力が再開される。ウオッチドグタイマ１４は、第１の分周クロックＤＶ＿ＣＬＫ１が入力されるので、第１の分周クロックＤＶ＿ＣＬＫ１に基づくカウントアップを再開する。
【００４１】
また、ワンステップ信号ＯｎｅＳｔｅｐは、Ｄ型フリップフロップ２０にも入力される。Ｄ型フリップフロップ２０は、Ｈレベルのワンステップ信号ＯｎｅＳｔｅｐを受けると、クロックＣＰＵ＿ＣＬＫの１周期分遅れて、遅延信号ＤをＨレベルに設定する。遅延信号ＤがＨレベルに設定されると、それが第１の論理和回路２２を介してＲ−Ｓフリップフロップ２６のセット入力端子Ｓに伝わり、停止信号ＨＡＬＴがＨレベルに設定される（（７）に示す）。
【００４２】
停止信号ＨＡＬＴがＨレベルに設定されると、第１の分周回路１２は、カウントアップを停止する（（８）に示す）。その結果、第１の分周クロックＤＶ＿ＣＬＫ１の出力が停止される。ウオッチドグタイマは、第１の分周クロックＤＶ＿ＣＬＫ１が入力されないので、カウント値を更新しない。すなわち、ウオッチドグタイマ１４は、カウント値を維持したまま、カウントアップを一時停止する。
【００４３】
ワンステップ信号ＯｎｅＳｔｅｐがＬレベルに変化しても、Ｒ−Ｓフリップフロップ２６の機能によって停止信号ＨＡＬＴのレベルは変化せず、ウオッチドグタイマ１４は一時停止したままである。
【００４４】
（３）  リスタート
デバッガ装置で新たなブレークポイントＢＬ＿Ｐを設定してリスタートが指定されたときには、デバッガ装置で設定されたブレークポイントＢＬ＿Ｐがレジスタ６に格納されるとともに、デバッガ装置から送られるリスタート信号Ｒｅｓｔａｒｔが一時的にＨレベルに設定される（（９）に示す）。
【００４５】
ＣＰＵコア２は、リスタート信号ＲｅｓｔａｒｔがＨレベルに設定されると、対象プログラムの実行を再開する。
【００４６】
リスタート信号ＲＥＳＴＡＲＴがＨレベルに設定されると、それが第２の論理和回路２４を介してＲ−Ｓフリップフロップ２６のリセット入力端子Ｒに伝わり、停止信号ＨＡＬＴがＬレベルに設定される（（１０）に示す）。
【００４７】
停止信号ＨＡＬＴがＬレベルに設定されると、第１の分周回路１２は、カウントアップを再開する（（１１）に示す）。その結果、第１の分周クロックＤＶ＿ＣＬＫ１の出力が再開される。ウオッチドグタイマ１４は、第１の分周クロックＤＶ＿ＣＬＫ１が入力されるので、第１の分周クロックＤＶ＿ＣＬＫ１に基づくカウントアップを再開する。
【００４８】
リスタート信号ＲｅｓｔａｒｔがＬレベルに変化しても、Ｒ−Ｓフリップフロップ２６の機能によって停止信号ＨＡＬＴのレベルは変化せず、ウオッチドグタイマ１４は動作しつづける。
【００４９】
以上のように、本発明の実施形態のマイクロプロセッサによれば、デバッグ時において、ウオッチドグタイマにクロックを供給している第１の分周回路に対して、対象プログラムの実行中には動作するように指示し、対象プログラムの停止時には停止するように指示するので、対象プログラムの実行中にはウオッチドグタイマの機能を有効にし、対象プログラムの実行が停止している間は、ウオッチドグタイマの機能を無効にすることができる。
【００５０】
（変形例）
本発明は、上記の実施の形態に限定されるものではなく、たとえば以下のような変形例を含む。
【００５１】
（１）  ワンステップ信号
本発明の実施形態では、デバッガ装置からワンステップ信号ＯｎｅＳｔｅｐを受けることによって、１個の命令のみを実行させることとしたが、これに限定するものではない。たとえば、デバッガ装置からサブルーチンなどのような複数個の命令を実行させる指示を受けて、これらの命令を実行するものとしてもよい。この場合には、複数個の命令を実行する間、停止信号ＨＡＬＴを「Ｌ」レベルに維持しておく必要がある。これには、たとえば、Ｄ型フリップフロップを適当な数だけ設けることよって、停止信号ＨＡＬＴの「Ｌ」の期間が適切な長さになるようにすればよい。あるいは、ＣＰＵコアは、１個または複数個の命令の実行の終了後に、制御回路に終了を知らせ、制御回路は、終了が知らされた後に、停止信号ＨＡＬＴを「Ｈ」レベルに戻すようにしてもよい。
【００５２】
（２）  セルフデバッグ
本発明の実施形態では、別の装置でデバッグを行なうことを想定し、ブレークポイントＢＬ＿Ｐ、ワンステップ信号ＯｎｅＳｔｅｐ、およびリスタート信号Ｒｅｓｔａｒｔが別の装置からＵＳＢ（Universal Serial Bus）などを介して、図１のマイクロプロセッサを備える装置に送られてくるものとしたが、これに限定するものではない。
【００５３】
図１のマイクロプロセッサのＣＰＵコアが、対象プログラムとデバッグプログラムとを実行するものとし、ＣＰＵコアが、ブレークポイントＢＬ＿Ｐ、ワンステップ信号ＯｎｅＳｔｅｐ、およびリスタート信号Ｒｅｓｔａｒｔを出力するものとしてもよい。
【００５４】
（３）  第２の分周回路
本発明の実施形態では、ウオッチドグタイマに分周クロックを供給している第１の分周回路以外に、別のタイマへ分周クロックを供給している第２の分周回路を１個のみ示したが、これに限定するものではなく、ウオッチドグタイマ以外へ分周クロックを供給する分周回路は、複数個あってもよい。
【００５５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施形態のマイクロプロセッサの構成を表わす図である。
【図２】図１のマイクロプロセッサのタイミングチャートを表わす図である。
【符号の説明】
【００５７】
２  ＣＰＵコア、４  プログラムカウンタ、６  レジスタ、８  制御回路、１０  クロック発生器、１２  第１の分周回路、１４  ウオッチドグタイマ、１６  第２の分周回路、１８  時計用タイマ、２０  Ｄ型フリップフロップ、２２  第１の論理和回路、２４  第２の論理和回路、２６  Ｒ−Ｓフリップフロップ、２８  比較器、３０  論理積回路。
【図１】
2008299730.tif 000003
【図２】
2008299730.tif 000004