説明

マイクロプロセッサ

【課題】デバッグ時において、プログラムの実行中にはウオッチドグタイマの機能を有効にし、プログラムの実行が停止している間は、ウオッチドグタイマの機能を無効にすることができるマイクロプロセッサを提供する。
【解決手段】CPUコア2は、対象プログラムを実行する。第1の分周回路12は、CPUコア2に与えられるクロックCPU_CLKを分周した第1の分周クロックDV_CLK1を出力する。ウオッチドグタイマ14は、第1の分周回路12が出力する第1の分周クロックDV_CLK1に従って、カウントを行なう。制御回路8は、デバッガの指定に従って、停止を指示する停止信号HALTの出力を制御する。CPUコア2は、デバッガの指定に従って、対象プログラムの実行または実行の停止を行なう。第1の分周回路12は、停止信号HALTを受けると、第1の分周クロックDV_CLK1の出力を停止する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロプロセッサ関し、特にデバッグ機能とウオッチドグタイマを備えたマイクロプロセッサに関する。
【背景技術】
【0002】
従来から、プログラムの暴走を管理するための手段としてウオッチドグタイマが用いられている(たとえば、特許文献1を参照)。ウオッチドグタイマは、タイマ値に達した場合に、異常信号を出力する。プログラムが正常に動作しているときには、定期的にウオッチドグタイマにリセット信号が送られて、タイマ値がリセットされるため異常信号は出力されない。一方、プログラムが無限ループに入った場合のようにプログラムが異常に動作するときには、リセット信号が送られず、カウントアップが続けられ、タイマ値に達することによって、異常信号が出力される。
【特許文献1】特開2005−107757号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
ところで、ウオッチドグタイマを備えたマイクロプロセッサにおいて、デバッグを行なう場合に、プログラムが実行されていないにも係らず、ウオッチドグタイマが動作し続け、無用な異常信号を出力するという問題があった。そのため、従来は、デバッグ時には、一律に、ウオッチドグタイマを停止させるか、またはウオッチドグタイマから送られる異常信号を無視することで対応していた。
【0004】
しかしながら、デバッグ時においても、プログラムの実行中には、ウオッチドグタイマが動作することが望ましい。
【0005】
それゆえに、本発明の目的は、デバッグ時において、プログラムの実行中にはウオッチドグタイマの機能を有効にし、プログラムの実行が停止している間は、ウオッチドグタイマの機能を無効にすることができるマイクロプロセッサを提供することである。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明のマイクロプロセッサは、対象プログラムを実行するCPUコアと、CPUコアに与えられるクロックを分周した第1の分周クロックを出力する第1の分周回路と、第1の分周回路から出力する第1の分周クロックに従って、カウントを行なうウオッチドグタイマと、デバッガの指定に従って、停止を指示する停止信号の出力および出力の解除を制御する制御回路とを備え、CPUコアは、デバッガの指定に従って、対象プログラムの実行または実行の停止を行ない、第1の分周回路は、停止信号を受けると、第1の分周クロックの出力を停止する。
【0007】
好ましくは、デバッガで指定したブレークポイントに達したときに、CPUコアは、対象プログラムの実行を停止し、制御回路は、停止信号を出力する。
【0008】
好ましくは、デバッガでリスタートが指示されると、CPUコアは、対象プログラムの実行を再開するとともに、制御回路は、停止信号の出力を解除する。
【0009】
好ましくは、デバッガで命令の部分実行が指示されると、CPUコアは、対象プログラムの指定された1個または複数個の命令を実行し、制御回路は、停止信号の出力を解除し、一定時間経過後に、停止信号の出力を再開する。
【0010】
好ましくは、デバッガで命令の部分実行が指示されると、CPUコアは、対象プログラムの指定された1個または複数個の命令を実行し、制御回路は、停止信号の出力を解除し、CPUコアは、指定された命令の実行の終了後に、制御回路に終了を指示し、制御回路は、終了が指示されると、停止信号の出力を再開する。
【0011】
好ましくは、マイクロプロセッサは、さらに、CPUコアに与えられるクロックを分周した分周クロックをウオッチドグタイマ以外のタイマへ出力する別の分周回路を少なくとも1つ備え、第1の分周回路は、ウオッチドグタイマのみに対して第1の分周クロックを出力する。
【発明の効果】
【0012】
本発明のマイクロプロセッサによれば、デバッグ時において、プログラムの実行中にはウオッチドグタイマの機能を有効にし、プログラムの実行が停止している間は、ウオッチドグタイマの機能を無効にすることができる。
【発明を実施するための最良の形態】
【0013】
以下、本発明に係る実施の形態について図面を参照して説明する。
(構成)
図1は、本発明の実施形態のマイクロプロセッサの構成を表わす図である。
【0014】
図1を参照して、このマイクロプロセッサは、CPUコア2と、第1の分周回路12と、ウオッチドグタイマ14と、第2の分周回路16と、時計用タイマ18と、クロック発生器10と、レジスタ6と、制御回路8とを含む。
【0015】
CPUコア2は、内部のプログラムカウンタ4に従って、対象プログラムを実行する。また、CPUコア2は、対象プログラムに含まれる命令に従って、定期的にウオッチドグタイマへリセット信号Resetを出力する。
【0016】
CPUコア2は、論理積回路30からブレーク信号BREAKを受け、図示しないデバッガ装置からワンステップ信号OneStepおよびリスタート信号Restartを受ける。CPUコア2は、Hレベルのブレーク信号BREAKを受けると、対象プログラムの実行を停止する。また、CPUコア2は、Hレベルのワンステップ信号OneStepを受けると、対象プログラムの次の1個の命令を実行する。また、CPUコア2は、Hレベルのリスタート信号Restartを受けると、対象プログラムの次の命令およびその後続の命令を実行する。
【0017】
レジスタ6には、図示しないデバッガ装置で設定されたブレークポイントBL_Pが格納される。
【0018】
制御回路8は、比較器28と、論理積回路30と、D型フリップフロップ20と、第1の論理和回路22と、第2の論理和回路24と、R−Sフリップフロップ26とを含む。
【0019】
比較器28は、CPUコア2からプログラムカウンタ4のカウンタ値を受け、レジスタ6からブレークポイントBL_P受けて、信号EQを出力する。比較器28は、両者が一致する場合には一致信号EQをHレベルに設定し、両者が相違する場合には一致信号EQをLレベルに設定する。
【0020】
論理積回路30は、R−Sフリップフロップ26から反転停止信号/HALTを受けるとともに、比較器28から信号EQを受けて、ブレーク信号BREAKを第1の論理和回路22およびCPUコア2へ出力する。論理積回路30は、反転停止信号/HALTがHレベルで(すなわち、停止が指示されていない)、かつ一致信号EQがHレベル(すなわち、対象プログラムがブレークポイントBL_Pに達した)のときに、ブレーク信号BREAKをHレベルに設定する。
【0021】
D型フリップフロップ20は、遅延型フリップフロップである。D型フリップフロップ20は、クロック発生器10からクロックCPU_CLKを受けるとともに、図示しないデバッガ装置からワンステップ信号OneStepを受けて、ワンステップ信号OneStepの遅延信号Dを第1の論理和回路22へ出力する。
【0022】
第1の論理和回路22は、論理積回路30からブレーク信号BREAKを受けるとともに、D型フリップフロップ20から遅延信号Dを受けて、それらの論理和信号をR−Sフリップフロップ26のセット端子Sへ出力する。
【0023】
第2の論理和回路24は、図示しないデバッガ装置から、ワンステップ信号OneStepおよびリスタート信号Restartを受けて、それらの論理和信号をR−Sフリップフロップ26のリセット端子Rへ出力する。
【0024】
R−Sフリップフロップ26は、セット端子Sで第1の論理和回路22の出力を受け、リセット端子Rで第2の論理和回路24の出力を受ける。R−Sフリップフロップ26は、出力端子Qから停止信号HALTを出力し、出力端子/Qから反転停止信号/HALTを出力する。
【0025】
クロック発生器10は、クロックCPU_CLKを生成して、CPUコア2、第1の分周回路12、および第2の分周回路16に出力する。CPUコア2は、送られたクロックCPU_CLKに従って動作する。
【0026】
第1の分周回路12は、クロック発生器10からクロックCPU_CLKを受けて、クロックCPU_CLKを分周した第1の分周クロックDV_CLK1をウオッチドグタイマ14へ出力する。第1の分周回路12は、停止信号HALTがHレベルに設定されると、カウントアップを停止する。
【0027】
ウオッチドグタイマ14は、第1の分周クロックDV_CLK1に従って、カウント値を更新する。第1の分周クロックDV_CLK1の1つのパルスを受けるごとに、カウント値が1だけインクリメントされる。ウオッチドグタイマ14は、CPUコア2からリセット信号Resetを受けると、カウント値を初期値にリセットする。また、ウオッチドグタイマ14は、カウント値が所定の値を超えた場合に、エラー信号Errorを図示しないデバッガ装置へ出力する。デバッガ装置は、エラー信号Errorを受けると、エラーがあった旨を表示する。
【0028】
第2の分周回路16は、クロック発生器10からクロックCPU_CLKを受けて、クロックCPU_CLKを分周した第2の分周クロックDV_CLK2を時計用タイマ18へ出力する。
【0029】
時計用タイマ18は、第2の分周クロックDV_CLK2に従って、カウント値を更新することによって、マイクロプロセッサの時計機能、たとえばカレンダ管理を実行する。第2の分周回路16が停止信号HALTを受けないので、時計用タイマ18は、デバッグ時におけるプログラムの停止中も動作し続ける。
【0030】
第1の分周回路12および第2の分周回路16は、分周カウンタで構成されている。第1の分周回路12は、たとえば、12ビットバイナリカウンタである。したがって、たとえば、クロック発生器10から出力されるクロックCPU_CLKの周波数が4048MHzの場合には、第1の分周回路12から出力される第1の分周クロックDV_CLK1の周波数は約1MHzとなる。
【0031】
(動作)
図2は、図1のマイクロプロセッサのタイミングチャートを表わす図である。図2を参照して、図1のマイクロプロセッサの動作を説明する。
【0032】
(1) ブレークポイント
デバッガ装置でブレークポイントBL_Pが設定されたときには、デバッガ装置で設定されたブレークポイントBL_Pがレジスタ6に格納される。
【0033】
CPUコア2のプログラムカウンタ4の値が、デバッガ装置で設定したブレークポイントBL_Pに達したときには、比較回路は、一致信号EQを一時的にHレベルに設定する。これにより、論理積回路30は、ブレーク信号BREAKを一時的にHレベルに設定する((1)に示す)。
【0034】
ブレーク信号BREAKがHレベルに設定されると、それが第1の論理和回路22を介してR−Sフリップフロップ26のセット入力端子Sに伝わり、停止信号HALTがHレベルに設定される((2)に示す))。
【0035】
停止信号HALTがHレベルに設定されると、第1の分周回路12は、カウントアップを停止する((3)に示す)。その結果、第1の分周クロックDV_CLK1の出力が停止される。ウオッチドグタイマは、第1の分周クロックDV_CLK1が入力されないので、カウント値を更新しない。すなわち、ウオッチドグタイマ14は、カウント値を維持したまま、カウントアップを一時停止する。
【0036】
その後、ブレーク信号BREAKがLレベルに変化しても、R−Sフリップフロップ26の機能によって停止信号HALTのレベルは変化せず、ウオッチドグタイマ14は一時停止したままである。
【0037】
(2) 1ステップ命令の実行
デバッガ装置で1命令の実行が指定されたときには、デバッガ装置から送られるワンステップ信号OneStepが一時的にHレベルに設定される((4)に示す)。
【0038】
CPUコア2は、リスタート信号OneStepがHレベルに設定されると、対象プログラムの次の1つの命令を実行する。
【0039】
ワンステップ信号OneStepがHレベルに設定されると、それが第2の論理和回路24を介してR−Sフリップフロップ26のリセット入力端子Rに伝わり、停止信号HALTがLレベルに設定される((5)に示す。)。
【0040】
停止信号HALTがLレベルに設定されると、第1の分周回路12は、カウントアップを再開する((6)に示す)。その結果、第1の分周クロックDV_CLK1の出力が再開される。ウオッチドグタイマ14は、第1の分周クロックDV_CLK1が入力されるので、第1の分周クロックDV_CLK1に基づくカウントアップを再開する。
【0041】
また、ワンステップ信号OneStepは、D型フリップフロップ20にも入力される。D型フリップフロップ20は、Hレベルのワンステップ信号OneStepを受けると、クロックCPU_CLKの1周期分遅れて、遅延信号DをHレベルに設定する。遅延信号DがHレベルに設定されると、それが第1の論理和回路22を介してR−Sフリップフロップ26のセット入力端子Sに伝わり、停止信号HALTがHレベルに設定される((7)に示す)。
【0042】
停止信号HALTがHレベルに設定されると、第1の分周回路12は、カウントアップを停止する((8)に示す)。その結果、第1の分周クロックDV_CLK1の出力が停止される。ウオッチドグタイマは、第1の分周クロックDV_CLK1が入力されないので、カウント値を更新しない。すなわち、ウオッチドグタイマ14は、カウント値を維持したまま、カウントアップを一時停止する。
【0043】
ワンステップ信号OneStepがLレベルに変化しても、R−Sフリップフロップ26の機能によって停止信号HALTのレベルは変化せず、ウオッチドグタイマ14は一時停止したままである。
【0044】
(3) リスタート
デバッガ装置で新たなブレークポイントBL_Pを設定してリスタートが指定されたときには、デバッガ装置で設定されたブレークポイントBL_Pがレジスタ6に格納されるとともに、デバッガ装置から送られるリスタート信号Restartが一時的にHレベルに設定される((9)に示す)。
【0045】
CPUコア2は、リスタート信号RestartがHレベルに設定されると、対象プログラムの実行を再開する。
【0046】
リスタート信号RESTARTがHレベルに設定されると、それが第2の論理和回路24を介してR−Sフリップフロップ26のリセット入力端子Rに伝わり、停止信号HALTがLレベルに設定される((10)に示す)。
【0047】
停止信号HALTがLレベルに設定されると、第1の分周回路12は、カウントアップを再開する((11)に示す)。その結果、第1の分周クロックDV_CLK1の出力が再開される。ウオッチドグタイマ14は、第1の分周クロックDV_CLK1が入力されるので、第1の分周クロックDV_CLK1に基づくカウントアップを再開する。
【0048】
リスタート信号RestartがLレベルに変化しても、R−Sフリップフロップ26の機能によって停止信号HALTのレベルは変化せず、ウオッチドグタイマ14は動作しつづける。
【0049】
以上のように、本発明の実施形態のマイクロプロセッサによれば、デバッグ時において、ウオッチドグタイマにクロックを供給している第1の分周回路に対して、対象プログラムの実行中には動作するように指示し、対象プログラムの停止時には停止するように指示するので、対象プログラムの実行中にはウオッチドグタイマの機能を有効にし、対象プログラムの実行が停止している間は、ウオッチドグタイマの機能を無効にすることができる。
【0050】
(変形例)
本発明は、上記の実施の形態に限定されるものではなく、たとえば以下のような変形例を含む。
【0051】
(1) ワンステップ信号
本発明の実施形態では、デバッガ装置からワンステップ信号OneStepを受けることによって、1個の命令のみを実行させることとしたが、これに限定するものではない。たとえば、デバッガ装置からサブルーチンなどのような複数個の命令を実行させる指示を受けて、これらの命令を実行するものとしてもよい。この場合には、複数個の命令を実行する間、停止信号HALTを「L」レベルに維持しておく必要がある。これには、たとえば、D型フリップフロップを適当な数だけ設けることよって、停止信号HALTの「L」の期間が適切な長さになるようにすればよい。あるいは、CPUコアは、1個または複数個の命令の実行の終了後に、制御回路に終了を知らせ、制御回路は、終了が知らされた後に、停止信号HALTを「H」レベルに戻すようにしてもよい。
【0052】
(2) セルフデバッグ
本発明の実施形態では、別の装置でデバッグを行なうことを想定し、ブレークポイントBL_P、ワンステップ信号OneStep、およびリスタート信号Restartが別の装置からUSB(Universal Serial Bus)などを介して、図1のマイクロプロセッサを備える装置に送られてくるものとしたが、これに限定するものではない。
【0053】
図1のマイクロプロセッサのCPUコアが、対象プログラムとデバッグプログラムとを実行するものとし、CPUコアが、ブレークポイントBL_P、ワンステップ信号OneStep、およびリスタート信号Restartを出力するものとしてもよい。
【0054】
(3) 第2の分周回路
本発明の実施形態では、ウオッチドグタイマに分周クロックを供給している第1の分周回路以外に、別のタイマへ分周クロックを供給している第2の分周回路を1個のみ示したが、これに限定するものではなく、ウオッチドグタイマ以外へ分周クロックを供給する分周回路は、複数個あってもよい。
【0055】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0056】
【図1】本発明の実施形態のマイクロプロセッサの構成を表わす図である。
【図2】図1のマイクロプロセッサのタイミングチャートを表わす図である。
【符号の説明】
【0057】
2 CPUコア、4 プログラムカウンタ、6 レジスタ、8 制御回路、10 クロック発生器、12 第1の分周回路、14 ウオッチドグタイマ、16 第2の分周回路、18 時計用タイマ、20 D型フリップフロップ、22 第1の論理和回路、24 第2の論理和回路、26 R−Sフリップフロップ、28 比較器、30 論理積回路。

【特許請求の範囲】
【請求項1】
対象プログラムを実行するCPUコアと、
前記CPUコアに与えられるクロックを分周した第1の分周クロックを出力する第1の分周回路と、
前記第1の分周回路から出力する第1の分周クロックに従って、カウントを行なうウオッチドグタイマと、
デバッガの指定に従って、停止を指示する停止信号の出力および前記出力の解除を制御する制御回路とを備え、
前記CPUコアは、前記デバッガの指定に従って、前記対象プログラムの実行または実行の停止を行ない、
前記第1の分周回路は、前記停止信号を受けると、前記第1の分周クロックの出力を停止する、マイクロプロセッサ。
【請求項2】
前記デバッガで指定したブレークポイントに達したときに、前記CPUコアは、前記対象プログラムの実行を停止し、前記制御回路は、前記停止信号を出力する、請求項1記載のマイクロプロセッサ。
【請求項3】
前記デバッガでリスタートが指示されると、前記CPUコアは、前記対象プログラムの実行を再開するとともに、前記制御回路は、前記停止信号の出力を解除する、請求項1記載のマイクロプロセッサ。
【請求項4】
前記デバッガで命令の部分実行が指示されると、前記CPUコアは、前記対象プログラムの指定された1個または複数個の命令を実行し、前記制御回路は、前記停止信号の出力を解除し、一定時間経過後に、前記停止信号の出力を再開する、請求項1記載のマイクロプロセッサ。
【請求項5】
前記デバッガで命令の部分実行が指示されると、前記CPUコアは、前記対象プログラムの指定された1個または複数個の命令を実行し、前記制御回路は、前記停止信号の出力を解除し、
前記CPUコアは、前記指定された命令の実行の終了後に、前記制御回路に終了を指示し、前記制御回路は、前記終了が指示されると、前記停止信号の出力を再開する、請求項1記載のマイクロプロセッサ。
【請求項6】
前記マイクロプロセッサは、さらに、
前記CPUコアに与えられるクロックを分周した分周クロックを前記ウオッチドグタイマ以外のタイマへ出力する別の分周回路を少なくとも1つ備え、
前記第1の分周回路は、前記ウオッチドグタイマのみに対して前記第1の分周クロックを出力する、請求項1記載のマイクロプロセッサ。

【図1】
image rotate

【図2】
image rotate