(57)【要約】【課題】  暴走検出を行うマイクロコンピュータのチップ面積を縮小する。【解決手段】  マイクロコンピュータ１は、ＣＰＵ１１におけるプログラム実行の暴走を検出し、暴走に対応した処理を実行する。プログラム実行の暴走検出は、マイクロコンピュータ１が備えるデバッグ回路１４を利用することによって行われる。プログラム実行の暴走にデバッグ回路１４を利用することによって、暴走検出のための専用回路を省略することができ、マイクロコンピュータの回路規模の縮小に寄与する。【選択図】  図２
2006079180.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの通常実行と前記プログラムのデバッグとを行うマイクロコンピュータであって、
プログラムの命令コードに従って処理を実行するプロセッサと、
前記プロセッサの実行アドレスが予め定められたアドレスと一致する場合に一致アドレス検出信号を出力するアドレス判定部を備え、前記一致アドレス検出信号に基づいてデバッグ処理を実行するデバッグ回路と、を有し、
前記プロセッサによる前記プログラムの通常実行時において、前記アドレス判定部からの一致アドレス検出信号に基づいて予め定められた復帰処理の実行を制御する、マイクロコンピュータ。
【請求項２】
前記プロセッサは、前記復帰処理において予め定められた復帰プログラムを実行する、請求項１に記載のマイクロコンピュータ。
【請求項３】
前記マイクロコンピュータは、前記プロセッサに前記一致アドレス検出信号に従って割り込み要求を行い、
前記プロセッサは、前記割り込み要求に対応した割り込み処理を前記復帰処理において実行する、
請求項１に記載のマイクロコンピュータ。
【請求項４】
前記実行アドレスと前記予め定められたアドレスとが一致すると前記アドレス判定部が判定した場合に検出信号を外部端子に出力し、前記検出信号に応答した外部からのリセット要求に従ってリセット処理を前記復帰処理において行う、請求項１に記載のマイクロコンピュータ。
【請求項５】
前記アドレス判定部はレジスタを備え、前記レジスタに記憶されているアドレスによって規定されるアドレス範囲のいずれか一つに前記実行アドレスが一致する場合に前記一致アドレス検出信号を出力する、請求項１に記載のマイクロコンピュータ。
【請求項６】
前記アドレス判定部はレジスタを備え、前記レジスタに記憶されているアドレスと前記実行アドレスが一致する場合に前記一致アドレス検出信号を出力する、請求項１に記載のマイクロコンピュータ。
【請求項７】
前記プログラムの通常実行時にカウントを行うカウンタをさらに備え、
前記一致アドレス検出信号に応答して前記カウンタをクリアし、
前記カウンタが予め定められた値に達した場合に復帰処理を実行する、
請求項１に記載のマイクロコンピュータ。
【請求項８】
前記デバッグ回路と外部装置との間のインターフェース回路と、
前記デバッグ回路へのアクセスを、前記プロセッサとインターフェース回路との間で切替えるセレクタと、をさらに備え、
前記セレクタに選択された前記プロセッサは、前記デバッグ回路にアクセスして、前記デバッグ回路のプログラム通常実行時における処理動作の設定を行う、
請求項１に記載のマイクロコンピュータ。
【請求項９】
前記アドレス判定部は、前記プロセッサの実行アドレスと比較するアドレスを規定する値を記憶するレジスタを備え、前記プロセッサは前記レジスタに値を設定する、
請求項８に記載のマイクロコンピュータ。
【請求項１０】
前記プロセッサが前記セレクタの切り替えを制御する、請求項８に記載のマイクロコンピュータ。
【請求項１１】
前記デバッグ回路と異なる第２のデバッグ回路を備え、
前記第２のデバッグ回路は、前記デバッグ回路の暴走検出機能のデバッグを実行する、
請求項１に記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロコンピュータに関し、特に、マイクロコンピュータにおけるプログラム実行の暴走検出に関する。
【背景技術】
【０００２】
現在、パーソナルコンピュータなどのコンピュータ・システムに限らず、家電製品やＯＡ機器、自動車や製造装置の制御装置など、多くの電子機器においてマイクロコンピュータが利用されている。マイクロコンピュータは、機能的要素として、命令コードやアドレスを含むデータを読み出して命令実行の結果に応じてマイクロコンピュータ全体を制御す制御部、算術演算や論理演算を実行する演算処理部、必要なデータを記憶するレジスタ・セットなどを備えている。また、各種装置の制御装置として実装される場合には、ＲＯＭやＲＡＭなどのメモリの他、各種周辺機能などを備えている。マイクロコンピュータはプログラムに含まれる命令コードを順次解読し、それに従って処理を行うことで所望の機能を実現する。
【０００３】
命令コードはレジスタ・セットに含まれるプログラム・カウンタの示すアドレスからフェッチされる。例えば外部ノイズなどのためにプログラム・カウンタの値が変化すると、マイクロコンピュータは不測のアドレスにアクセスし、マイクロコンピュータのプログラム実行が暴走する問題が知られている。このため、マイクロコンピュータの暴走を自動的に検出し、暴走に対応した復帰処理を行うことが必要とされる。暴走検出の方法としては、これまでにいくつかのものが提案されている。例えば、ＲＯＭに記憶されているプログラムにＴＲＡＰ命令を分散的に配置することによって暴走を検出し、ＴＲＡＰ処理によって所定の復帰プログラムを実行することができる。
【０００４】
この他、例えば特許文献１は、マイクロコンピュータの一つの暴走検出方法について開示している。特許文献１に開示されたマイクロコンピュータは暴走検出カウンタを備え、常にそれを動作させている。暴走検出カウンタがオーバーフローとなると暴走と判定し、ＣＰＵに異常信号を出力する。マイクロコンピュータは、通常動作時の所定のタイミングで暴走検出カウンタをクリアする。これによって正常動作時に暴走検出カウンタがオーバーフローとなることがなく、正常動作と異なる暴走を検出することができる。
【０００５】
具体的には、マイクロコンピュータはプログラムの実行アドレスを監視し、あらかじめ登録されたアドレスを実行していれば暴走検出カウンタのクリアを行なう。また、マイクロコンピュータの周辺ハードウェアの要因がすべて正しく機能している場合に、暴走検出用カウンタのクリアを行なう。暴走検出用カウンタのクリアは、ソフトウェア（プログラム）を介さずハードウェアによって直接に行われる。このように、暴走検出用カウンタのクリアをハードウェアで行なうことによって、プログラム実行の暴走中に誤ってプログラムが暴走検出カウンタをクリアすることを防止し、プログラム実行が暴走したときの暴走検出を確実に行なうことができる。
【特許文献１】特開２００４−１５１８４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
一方、半導体回路に対しては常に回路規模の縮小が要求されている。しかし、上記の特許文献１においては、ＣＰＵのプログラム実行の暴走を検出するために、暴走検出専用のハードウェアをマイクロコンピュータに実装することが必要とされる。このため暴走検出機能のマイクロコンピュータへの実装が、回路規模の増大につながっていた。本発明は上記のような事情を背景としてなされたものであって、本発明の目的は、マイクロコンピュータにおける暴走検出の回路規模を縮小することである。本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるだろう。
【課題を解決するための手段】
【０００７】
以下に課題を解決するための手段を開示する。本項目において、いくつかの構成要素は、実施の形態において説明された構成要素と対応付けられている。しかし、この対応付けは発明の理解の容易のためになされたものであって、各要素は実施の形態の対応要素にのみ限定されるものでない。
【０００８】
本発明の第１の態様はプログラムの通常実行と前記プログラムのデバッグとを行うマイクロコンピュータであって、プログラムの命令コードに従って処理を実行するプロセッサ(例えばＣＰＵ１１)と、前記プロセッサの実行アドレスが予め定められたアドレスと一致する場合に一致アドレス検出信号を出力するアドレス判定部（例えば、アドレス判定部１４５）を備え、前記一致アドレス検出信号に基づいてデバッグ処理を実行するデバッグ回路（例えば、デバッグ回路１４）と、を有し、前記プロセッサによる前記プログラムの通常実行時において、前記アドレス判定部からの一致アドレス検出信号に基づいて予め定められた復帰処理の実行を制御する。デバッグ回路を利用して暴走検出を行うことによって、回路規模の縮小に寄与する。
【０００９】
前記プロセッサは、前記復帰処理において予め定められた復帰プログラムを実行することが好ましい。これによって、所望の復帰処理を実行することができる。あるいは、前記マイクロコンピュータは、前記プロセッサに前記一致アドレス検出信号に従って割り込み要求を行い、前記プロセッサは、前記割り込み要求に対応した割り込み処理を前記復帰処理において実行することが好ましい。割り込み要求を利用することで、シンプルな構成で所定の復帰処理を指示することができる。あるいは、前記実行アドレスと前記予め定められたアドレスとが一致すると前記アドレス判定部が判定した場合に検出信号を外部端子に出力し、前記検出信号に応答した外部からのリセット要求に従ってリセット処理を前記復帰処理において行うことができる。
【００１０】
前記アドレス判定部はレジスタを備え、前記レジスタに記憶されているアドレスによって規定されるアドレス範囲のいずれか一つに前記実行アドレスが一致する場合に前記一致アドレス検出信号を出力することができる。あるいは、前記アドレス判定部はレジスタを備え、前記レジスタに記憶されているアドレスと前記実行アドレスが一致する場合に前記一致アドレス検出信号を出力する、ことができる。
【００１１】
前記プログラムの通常実行時にカウントを行うカウンタ（例えば暴走検出カウンタ４１１）をさらに備え、前記一致アドレス検出信号に応答して前記カウンタをクリアし、前記カウンタが予め定められた値に達した場合に復帰処理を実行することができる。これにより、例えば、実行されるべき命令が実行されない場合の暴走検出を行うことができる。
【００１２】
前記デバッグ回路と外部装置との間のインターフェース回路と、前記デバッグ回路へのアクセスを、前記プロセッサとインターフェース回路との間で切替えるセレクタ（例えば、デバッグ選択部１７）と、をさらに備え、前記セレクタに選択された前記プロセッサは、前記デバッグ回路にアクセスして、前記デバッグ回路のプログラム通常実行時における処理動作の設定を行うことが好ましい。これによって、外部のデバッグ・ツールとマイクロコンピュータの内部回路によって、デバッグ回路の設定を行うことができる。
【００１３】
さらに、前記アドレス判定部は、前記プロセッサの実行アドレスと比較するアドレスを規定する値を記憶するレジスタを備え、前記プロセッサは前記レジスタに値を設定することが好ましい。これによって、マイクロコンピュータの内部回路によって、デバッグ・モードから通常動作における暴走検出モードへの設定変更処理を行うことができる。また、前記プロセッサが前記セレクタの切り替えを制御することによって、セレクタの切り替えをマイクロコンピュータの内部処理として実行することができる。
【００１４】
前記デバッグ回路と異なる第２のデバッグ回路（例えば、第２のデバッグ回路４５）を備え、前記第２のデバッグ回路は、前記デバッグ回路の暴走検出機能のデバッグを実行することが好ましい。第２のデバッグ回路によって、デバッグ回路を利用した暴走検出機能をデバッグすることができる。
【発明の効果】
【００１５】
本発明によれば、プログラム実行の暴走検出を行うマイクロコンピュータの回路規模を縮小することができる。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明を適用可能な実施の形態が説明される。以下の説明は、本発明の実施形態を説明するものであり、本発明が以下の実施形態に限定されるものではない。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、当業者であれば、以下の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である
【００１７】
実施の形態１．
本実施形態のマイクロコンピュータは、プロセッサ（本形態ではＣＰＵとして示されている）におけるプログラム実行の暴走を検出し、暴走に対応した処理を実行する。プログラム実行の暴走検出は、マイクロコンピュータが備えるデバッグ回路を利用することによって行われる。プログラム実行の暴走にデバッグ回路を利用することによって、暴走検出のための専用回路を省略することができ、マイクロコンピュータの回路規模の縮小に寄与する。
【００１８】
本形態のマイクロコンピュータにおける暴走検出について詳しい説明を行う前に、まず、本形態のマイクロコンピュータのハードウェア構成について、その概略を説明する。図１は、本実施形態に係るマイクロコンピュータ１のハードウェア構成の概略を模式的に示すブロック図である。デバッグ処理において、マイクロコンピュータ１は外部のデバッグ・ツール２と接続される。マイクロコンピュータ１は、デバッグ・ツール２からの制御信号に従ってデバッグ処理を実行し、また、デバッグ処理において得られるデータを、デバッグ・ツール２に出力する。ユーザは、デバッグ・ツール２を介して、デバッグ処理の実行及びその実行結果を得ることができる。
【００１９】
マイクロコンピュータ１は、プロセッサの一例であるＣＰＵ１１、読み出し専用メモリであるＲＯＭ１２、任意のアドレスを指定してデータを読み書きすることが可能なＲＡＭ１３、デバッグ処理を行うデバッグ回路１４、デバッグ回路１４とデバッグ・ツール２との間のインターフェース処理を行うデバッグ用Ｉ／Ｆ回路１５及び周辺回路との間のデータの入出力をインターフェースする周辺Ｉ／Ｏ回路１６を備えている。
【００２０】
ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、デバッグ回路１４及び周辺Ｉ／Ｏ回路１６は内部バスを介して接続されており、各回路は、命令コード、アドレスあるいは演算データなどの各種データ及び各種制御信号を、内部バスを介して互いに入出力する。また、マイクロコンピュータ１はデバッグ・ツール２との専用入出力端子を備えており、デバッグ用Ｉ／Ｆ回路１５を介して、デバッグ回路１４との間の制御信号及びデータの入出力を行う。
【００２１】
ＣＰＵ１１は、レジスタ・セット１１１、制御部１１２、演算処理部１１３及びバス・インターフェース１１４などの各回路ブロックを備えている。レジスタ・セット１１１は複数のレジスタからなり、命令コードやアドレスあるいは演算データなどを一時的に格納する。レジスタ・セット１１１には、演算データを格納するアキュムレータやプログラム実行アドレスを指示するプログラム・カウンタなどが含まれている。
【００２２】
制御部１１２は、ＲＯＭ１２などから命令コードをフェッチする命令フェッチ回路や、命令コードを解読する命令デコーダなどを備えている。制御部１１２は、ＲＯＭ１２やＲＡＭ１３などから命令コードやアドレスを含むデータをレジスタに読み出し、命令実行の結果に応じてマイクロコンピュータ１全体を制御する。また、他の回路からの割り込み要求があった場合に、割り込み要因に応じた割り込み処理の制御を行う。割り込み処理は、ＲＯＭ１２に記憶されている割り込みプログラムを実行することによって行う。演算処理部１１３は、加減算などの数値演算、ＡＮＤ・ＯＲ・ＮＯＴなどの論理演算及びシフト命令などを実行する。バス・インターフェース１１４は、他の回路と間のデータや命令コードの入出力をインターフェースする。
【００２３】
ＲＯＭ１２は、ユーザによって設定された命令コードや演算データを予め記憶している。ＲＯＭ１２としては、電源が切れても記憶データを保持する不揮発性メモリが使用され、例えば、フラッシュメモリなどのＥＥＰＲＯＭ（Electrically Erasable Read-Only Memory）を使用することができる。ＲＡＭ１３は揮発性の記憶デバイスであり、再書き込みが不要なＳＲＡＭ、一定時間毎に再書き込みが必要なＤＲＡＭなどを使用することができる。
【００２４】
デバッグ回路１４は、デバッグ・ツール２の制御において、ＣＰＵ１１によって実行される実行プログラムのデバッグ処理を行う。具体的には、デバッグ回路１４は、ＣＰＵ１１によるプログラム実行において所定のイベントが発生したことを検出するイベント検出機能や、所定の条件においてＣＰＵ１１に割り込み要求を行いプログラムの実行をブレークする（中断させる）ブレーク機能などを備えている。その他、典型的には、ステップ実行機能あるいはトレース機能なども備える。ステップ実行機能は、プログラム実行をブレークした後に１命令ずつステップ実行し、トレース機能は、プログラムの実行の履歴をバッファに記録しておき、それをデバッグ・ツール２から読み出すことで、プログラム実行の履歴を確認する。
【００２５】
例えば、イベント検出機能によってＣＰＵ１１の実行プログラムが所定のアドレスを通過しているか（イベントの発生）を検出し、所定アドレスの通過を確認することができる。また、ブレーク機能によってＣＰＵ１１によるプログラムの実行を中断し、マイクロコンピュータ１の内部状態、例えばＣＰＵ１１のレジスタ・セット１１１の記憶データやＲＡＭ１３に記憶されているデータなどをモニタすることができる。デバッグ処理結果を示すデータは、デバッグ回路１４からデバッグ用Ｉ／回路１５を介してデバッグ・ツール２に出力される。ユーザは、デバッグ・ツール２を介して、イベント検出の結果やブレークしたときのマイクロコンピュータ１の内部状態などを確認する。
【００２６】
上記のように、本形態のデバッグ回路１４は、ＣＰＵ１１のプログラム実行の暴走検出に利用される。以下においては、デバッグ回路１４を使用した暴走検出について詳細を説明する。図２は、デバッグ回路１４によるＣＰＵ１１の暴走検出を説明するため、デバッグ回路１４及び暴走検出に関連するその他の回路構成を示すブロック図である。
【００２７】
図２に示すように、デバッグ回路１４は、設定アドレス記憶部１４１及び判定部１４２を備えている。設定アドレス記憶部１４１は、ユーザに設定されたアドレスを記憶する。判定部１４２は設定アドレス記憶部１４１に記憶されたアドレスによって規定されるアドレスと、ＣＰＵ１１の実行アドレスとの一致を判定する。さらに、判定結果に基づいて、ＣＰＵ１１あるいはデバッグ・ツール２などのデバッグ回路１４の外部回路に検出信号を出力する。検出信号は、例えば、ブレーク機能におけるＣＰＵ１１への割り込み要求であり、あるいは、イベント検出機能におけるデバッグ・ツール２へのアドレス通過検出信号である。
【００２８】
図２の例において、設定アドレス記憶部１４１は、予め定められたアドレス範囲の開始アドレスを記憶する開始アドレス設定レジスタ１４３と、予め定められたアドレス範囲の終了アドレスを記憶する終了アドレス設定レジスタ１４４の２つのレジスタを備えている。このように、本例の設定アドレス記憶部１４１に記憶される２つのアドレスは、所定のアドレス範囲を規定する。
【００２９】
判定部１４２は、さらにアドレス判定部１４５を備えている。アドレス判定部１４５は、ＣＰＵ１１の実行アドレスと設定アドレス記憶部１４１が記憶するアドレスを比較し、ＣＰＵ１１の実行アドレスが上記の開始アドレスと終了アドレスの間に含まれる、つまり、開始アドレスと終了アドレスで規定されるアドレス範囲のいずれか一つのアドレスと一致するかを判定する。実行アドレスが上記のアドレス範囲に含まれる場合、アドレス判定部１４５は一致アドレス検出信号を出力する。
【００３０】
例えば、アドレス判定部１４５はアドレス判定信号をHighレベルからLowレベルに変化させることによって、一致アドレスの検出を示す（Lowレベルのアドレス判定信号が一致アドレス検出信号に相当）。判定部１４２は、一致アドレス検出信号及びその他の制御信号（例えば検出すべきイベント種類を特定する信号、デバッグのモードを特定する信号など）に従って、検出信号をデバッグ回路１４の外部、図２においてはＣＰＵ１１もしくはデバッグ用Ｉ／Ｆ回路１５に出力する。
【００３１】
デバッグ処理において、イベント検出機能やブレーク機能が上記の実行プログラムと設定アドレスの一致検出機能を使用する。デバッグ処理において、ユーザは、デバッグ・ツール２から設定アドレス記憶部１４１に検出アドレスの設定を予め行う。例えば、イベント検出機能においては、デバッグ回路１４はＣＰＵ１１の実行アドレスをモニタし、アドレス判定部１４５が実行アドレスは所定のアドレス範囲に含まれると判定すると、判定部１４２は、デバッグ用Ｉ／Ｆ回路１５を介してアドレス通過検出信号をデバッグ・ツール２に出力する。これによって、ＣＰＵ１１のプログラム実行が、所定のアドレスを通過したことを確認することができる。
【００３２】
あるいは、ブレーク機能において、デバッグ回路１４はＣＰＵ１１の実行アドレスをモニタし、アドレス判定部１４５がＣＰＵ１１の実行アドレスが所定のアドレス範囲に含まれると判定すると、判定部１４２は予め定められた割り込み要求をＣＰＵ１１に出力する。ＣＰＵ１１は割り込み要求に応答して実行プログラムを中断する。中断された状態におけるマイクロコンピュータ１の内部状態、例えば、ＣＰＵ１１のレジスタ・セットやＲＡＭ１３に記憶されているデータなどがデバッグ・ツール２に出力され、ユーザはそれを確認することができる。
【００３３】
本形態においては、さらに、マイクロコード１は、アドレス判定部１４５の判定機能を使用して、ＣＰＵ１１によるプログラム実行の暴走検出を行う。デバッグ回路１４を使用し暴走検出の処理の概略を、図３のフローチャートを参照して説明する。ＣＰＵ１１によるプログラムの通常実行時において、デバッグ回路１４の暴走検出機能が動作状態にセットされていると、アドレス判定部１４５は、ＣＰＵ１１の実行アドレスをモニタする（Ｓ１１）。アドレス判定部１４５はＣＰＵ１１の実行アドレスが所定のアドレスと一致するかを判定する（Ｓ１２）。
【００３４】
一致しない場合、アドレス判定部１４５はＣＰＵ１１の実行アドレスのモニタを続ける。一致すると判定すると、判定部１４２は予め定められた割り込み要求をＣＰＵ１１に出力する（Ｓ１３）。ＣＰＵ１１は割り込み要求に対応する復帰プログラムをＲＯＭ１１から読み込む。ＣＰＵ１１は、修復プログラムに従って暴走検出に対応した修復処理を実行する（Ｓ１４）。デバッグ回路１４のアドレス一致判定機能を使用してＣＰＵ１１の暴走検出を可能とすることによって、回路構成をより単純なものとすることができる。
【００３５】
図２に戻って、暴走検出処理に関する各回路構成の詳細を説明する。デバッグ回路１４は、モード設定レジスタ１４６と切り替えレジスタ１４７を備えている。モード設定レジスタ１４６は、デバッグ回路１４の動作モードを設定するためのレジスタである。モード設定レジスタ１４６はモード設定データを記憶し、この設定データを変更することによってデバッグ回路１４をデバッグ・モードあるいは暴走検出モードなどに設定することができる。切り替えレジスタ１４７は、デバッグ選択部１７の制御データを記憶する。デバッグ選択部１７は、切り替えレジスタ１４７の制御データに従って、デバッグ回路１４の接続先を、ＣＰＵ１１及びデバッグ用Ｉ／Ｆ回路１５から選択する。尚、切り替え機能は、本例のように切り替えレジスタを使用する他、端子からデバッグ選択部１７の切り替えを制御、設定することも可能である。この点は、他の実施形態において同様である。
【００３６】
本例において、モード設定レジスタ１４６と切り替えレジスタ１４７のデータ設定は、ＣＰＵ１１が行う。プログラムの通常実行の前に、ＣＰＵ１１は切り替えレジスタ１４７のデータを「ＣＰＵ側」に設定する。デバッグ選択部１７は、切り替えレジスタ１４７の制御データに従って、デバッグ回路１４の接続先をＣＰＵ１１に切替える。ＣＰＵ１１はデバッグ回路１４にアクセスし、開始アドレス設定レジスタ１４３と終了アドレス設定レジスタ１４４に、アドレス・データを設定する。また、モード設定レジスタ１４６に、暴走検出のためのデバッグ機能を動作させるためのモード設定データを設定する。尚、設定アドレス記憶部１４１において、ＣＰＵ１１のプログラムの実行中にアドレスの再設定を行ってもよい。
【００３７】
設定アドレス記憶部１４１は、暴走検出されるアドレス範囲を規定する２つのアドレスを記憶する。開始アドレス設定レジスタ１４３は検出アドレス範囲の開始アドレスを記憶し、終了アドレス設定レジスタ１４４は検出アドレス範囲の終了アドレスを記憶する。ＣＰＵ１１によるプログラムの通常実行時に、アドレス判定部１４５はＣＰＵ１１の実行アドレスをモニタしている。アドレス判定部１４５はＣＰＵ１１の実行アドレスと開始アドレス及び終了アドレスとを比較し、実行アドレスが検出アドレス範囲（開始アドレスから終了アドレスまで）に含まれるかを判定する。
【００３８】
アドレス判定部１４５は、ＣＰＵ１１の実行アドレスが開始アドレスから終了アドレスまでのいずれかのアドレスと一致すると判定すると、一致アドレス検出信号を出力する。判定部１４２は、一致アドレス検出信号及びモード設定レジスタ１４６などの制御データに基づいて、割り込み要求をＣＰＵ１１に出力する。本例においては、モード設定レジスタ１４６が暴走検出モードを示し、一致アドレス検出信号を取得した場合に、判定部１４２はＣＰＵ１１に予め定められた割り込み要求を出力する。ＣＰＵ１１は割り込み要求に応答して、ＲＯＭ１２から割り込みプログラムをロードし、割り込みプログラムに応じた復帰処理を実行する。
【００３９】
図４は、本形態に係るマイクロコンピュータ１の暴走検出とＣＰＵ１１のプログラム空間との関係の一例を示している。図４において、プログラム空間３０はいくつかのセグメントに分割されている。各セグメントは、マイクロコンピュータ１あるいは外部回路に実装されているハードウェアに割り当てられた実装空間３１と、対応するハードウェアが実装されていない非実装空間３２に分けられる。実装空間３１は、それぞれが固有のハードウェアに対応する複数のセグメントを備えている。図３においては、周辺Ｉ／Ｏ空間３１１、ＲＡＭ空間３１２及びＲＯＭ空間３１３が例示されている。
【００４０】
本例において、暴走検出アドレス範囲は非実装空間３２と一致している。開始アドレス設定レジスタ１４３及び終了アドレス設定レジスタ１４４は、それぞれ、非実装空間３２の開始アドレス及び終了アドレスを記憶している。ＣＰＵ１１のプログラム実行が暴走し、ＣＰＵ１１が非実装空間３２にアクセスすると、割り込み要求がＣＰＵ１１に入力される。本例では、ＣＰＵ１１が非実装空間３２のいずれか一つのアドレスにアクセスすると、所定の割り込み要求が判定部１４２からＣＰＵ１１に入力される。ＣＰＵ１１は割り込み要求に応答して、ＲＯＭ１３に記憶されている修復プログラムを実行する。検出アドレス範囲を非実装空間に設定することによって、非実装空間への暴走を確実に検出することができる。
【００４１】
上記例において、判定部１４２は一致アドレスの検出に応答して、割り込み要求である検出信号をＣＰＵ１１に出力するが、判定部１４２はマイクロコンピュータ１の外部端子に検出信号を出力することができる。外部装置（不図示）は、外部端子からの検出信号に応答して、マイクロコンピュータ１にリセット入力する。マイクロコンピュータ１は、外部からのリセットに応答して、暴走に対応した復帰処理としてのリセット処理を実行する。
【００４２】
あるいは、上記例において、アドレス判定部１４５は所定のアドレス範囲と実行アドレスの一致を検出するが、判定部１４２は、一つまたは複数の各設定アドレスと実行アドレスの一致を判定することもできる。設定アドレス記憶部１４１は、一つもしくは複数のアドレス設定レジスタを備え、アドレス判定部１４５は、各アドレス設定レジスタに記憶されているアドレスと実行アドレスを比較する。いずれかの設定アドレスと実行アドレスが一致する場合、アドレス判定部１４５は一致アドレス検出信号を出力する。
【００４３】
また、本発明は様々なタイプのマイクロコンピュータに適用することが可能である。例えば、ＭＰＵ、周辺用ＬＳＩ（MPR：Micro Peripheral Unit）、マイクロコントローラ、ＤＳＰ（Digital Signal Processor）など、いずれのタイプのマイクロコンピュータに適用することも可能である。これらの点は、以下の実施形態において同様である。
【００４４】
実施の形態２．
本形態のデバッグ回路は、ＣＰＵ１１によるプログラムの通常実行時において本来実行されるべきアドレスを記憶し、ＣＰＵ１１が所定のプログラムを正常に実行していることを監視する。実施の形態１のデバッグ回路は、非実装空間のアドレスなどの本来アクセスされないアドレスを検出することで、暴走検出を行っている。本形態のデバッグ回路は、ＲＯＭ１３のメイン・ループ内のアドレスなど、実行プログラム内の所定のアドレスの通過を検出する。所定アドレスが検出されない場合に、ＣＰＵのプログラム実行が暴走したと判定し、復帰処理の要求を出力する。
【００４５】
図５は、本実施の形態に係るマイクロコンピュータ１の概略構成を示すブロック図である。デバッグ回路１４は、実施の形態１と異なり、判定部１４２に暴走検出カウンタ４１１を備えている。また、設定アドレス記憶部1４１は、例示的に、第１アドレス設定レジスタ４２１から第４のアドレス設定レジスタ４２４までの４つのアドレス設定レジスタを備えている。他の構成要素は、実施の形態１において説明したデバッグ回路１４と実質的に同一であり、説明を省略する。また、デバッグ回路１４以外の回路構成は、実施の形態１と同様である。
【００４６】
プログラムの通常実行時において、暴走検出カウンタ４１１は所定のクロック信号に従ってカウントを行う。暴走検出カウンタ４１１のカウント値が予め定められた値を超えてオーバーフローとなると、判定部１４２はＣＰＵ１１のプログラム実行が暴走したと判定する。判定部１４２は、暴走検出カウンタ４１１のオーバーフローに応答して、予め設定されている割り込み要求をＣＰＵ１１に出力する。ＣＰＵ１１は、割り込み要求に応答してＲＯＭ１２に記憶されている割り込みプログラムを実行する。
【００４７】
設定アドレス記憶部1４１は、ＣＰＵ１１の実行プログラムにおいて、本来実行されるべきアドレスを記憶する。例えば、各アドレス設定レジスタ４２１〜４２４に、実行プログラムのメイン・ループ内の異なるアドレスを記憶する。アドレス判定部１４５は、ＣＰＵ１１による実行アドレスをモニタし、アドレス設定レジスタ４２１〜４２４に記憶されているアドレスと実行アドレスとを比較する。ＣＰＵ１１の実行アドレスが、アドレス設定レジスタ４２１〜４２４に記憶されているアドレスのいずれかと一致する場合、アドレス判定部１４５は一致アドレス検出信号を出力する。
【００４８】
判定部１４２は、アドレス判定部１４５からの一致アドレス検出信号に応答して、暴走検出カウンタ４１１をクリアする。暴走検出カウンタ４１１のオーバーフロー周期は決まっている。このため、プログラムの実行時に所定のタイミングで暴走検出カウンタ４１１をクリアすることによって、暴走検出カウンタ４１１のオーバーフローが防がれる。このように、ＣＰＵ１１がプログラムを正常に実行している場合、アドレス設定レジスタ４２１〜４２４の通過によって暴走検出カウンタ４１１がオーバーフローとなる前にクリアされるので、正常実行と暴走とを判別する（暴走を検出する）ことができる。
【００４９】
図６のフローチャートを参照して、本形態に係るマイクロコンピュータ１の暴走検出方法を説明する。デバッグ回路１４は、モード設定レジスタ１４６のモード設定データに従って暴走検出機能を実行する。暴走検出カウンタ４１１は、所定のクロック周期に従ってカウントを行う（Ｓ２１）。判定部１４２は、暴走検出カウンタ４１１のオーバーフローを判定する（Ｓ２２）。オーバーフローでない場合、暴走検出カウンタ４１１はカウントを続ける。暴走検出カウンタ４１１がオーバーフローとなった場合、判定部１４２は割り込み要求をＣＰＵ１１に出力し（Ｓ２３）、ＣＰＵ１１は、割り込み要求に応答して、復帰プログラムに従った復帰処理を実行する。
【００５０】
一方、アドレス判定部１４５は、ＣＰＵ１１の実行アドレスをモニタする（Ｓ３１）。アドレス判定部１４５は、アドレス設定レジスタ４２１〜４２４に記憶されている各アドレスと、ＣＰＵ１１の実行アドレスを比較する（Ｓ３２）。実行アドレスが、アドレス設定レジスタ４２１〜４２４に記憶されているいずれかのアドレスと一致すると判定した場合、アドレス判定部１４５は一致アドレス検出信号を出力し、判定部１４２は、一致アドレス検出信号に応答して、暴走検出カウンタ４１１をクリアする（Ｓ３３）。一致しない場合、実行アドレスのモニタを続行する（Ｓ３１）。また、暴走検出カウンタ４１１をクリアした後も、実行アドレスのモニタを続ける（Ｓ３１）。
【００５１】
図７は、本形態に係るマイクロコンピュータ１の暴走検出とＣＰＵ１１のプログラム空間との関係の一例を示している。図７はＲＯＭ１２の実装空間３１３を示している。図７に示したアドレス・マップの例において、第１及び第２のアドレス設定レジスタ４２１、４２２は、第１のループにおける異なるアドレスをそれぞれ記憶している。また、第３及び第４のアドレス設定レジスタ４２３、４２４は、第２のループにおける異なるアドレスをそれぞれ記憶している。
【００５２】
ＣＰＵ１１がプログラムの第１ループを正常に実行し、第１及び第２のアドレス設定レジスタ４２１、４２２に記憶されているアドレスのいずれか一方と実行アドレスが一致すると、判定部１４２は暴走検出カウンタをクリアする。同様に、ＣＰＵ１１がプログラムの第２ループを正常に実行し、第３及び第４のアドレス設定レジスタ４２３、４２４に記憶されているアドレスのいずれか一方と実行アドレスが一致すると、判定部１４２は暴走検出カウンタをクリアする。上記４つのアドレスのいずれも検出されず、時間が経過して暴走検出カウンタ４１１がオーバーフローとなると、判定部１４２は割り込み要求をＣＰＵ１１に出力する。尚、本例において、第１から第４までの４つのアドレス設定レジスタ４２１−４２４の値を随時変更することができる。あるいは、設計によって、第１及び第２のアドレス設定レジスタ４２１、４２２の値を随時変更し、第３及び第４のアドレス設定レジスタ４２３、４２４を省略することも可能である。
【００５３】
実施の形態３．
図８を参照して、第３の実施形態に係るマイクロコンピュータについて説明する。本形態のマイクロコンピュータは、第１の実施形態において説明されたデバッグ回路１４に加えて、もう一つのデバッグ回路を備えている。デバッグ回路を一つ追加することによって、デバッグ回路１４の暴走検出機能のデバッグ処理を行うことが可能となる。
【００５４】
図８に示すように、本形態のマイクロコンピュータ１は、デバッグ回路１４（以下、第１のデバッグ回路１４と呼ぶ）の他に、第２のデバッグ回路４５を備えている。第２のデバッグ回路４５は第１のデバッグ回路１４とは独立に機能することができる。第１のデバッグ回路１４には、デバッグ選択部１７を介して、デバッグ・ツール２及びＣＰＵ１１からアクセスすることができる。一方、第２のデバッグ回路４５はデバッグ専用であって、ＣＰＵ１１の通常動作時における暴走検出には使用されない。そのため、第２のデバッグ回路４５には、デバッグ用Ｉ／Ｆ回路１５を介して、デバッグ・ツール２がアクセスし、ＣＰＵ１１は第２のデバッグ回路４５にアクセスしない。
【００５５】
第２のデバッグ回路４５は、第１のデバッグ回路１４と同様の機能を備えている。例えば、イベント検出機能、ブレーク機能、ステップ実行機能あるいはトレース機能などを備えている。イベント検出機能は、プログラムが所定の実行アドレスを通過しているかの確認を行い、プログラムのデバッグを行う。ブレーク機能は、ブレークしたいアドレスを設定しておき、プログラム実行がそのアドレスと一致時にプログラム実行をブレークし、内部状態をモニタする。モニタだけでなく、レジスタ値や変数値を任意に書き換えることもできる。ステップ実行機能は、プログラム実行をブレークした後、１命令ずつステップ実行する。トレース機能は、プログラムの実行の履歴をデバッグ機能２内のバッファに記録しておき、デバッグ・ツール２から読み出すことで、プログラム実行の履歴を確認する。ただし、通常動作時におけるＣＰＵ１１の暴走を検出する機能は備えていない。
【００５６】
第２のデバッグ回路４５を備えることによって、第１のデバッグ回路１４の暴走検出機能を第２のデバッグ回路４５によりデバッグすることが可能となる。実施の形態１において説明したように、プログラムの通常実行の前に、暴走検出のためＣＰＵ１１は切り替えレジスタ１４７のデータを「ＣＰＵ側」に設定する。さらに、ＣＰＵ１１はデバッグ回路１４にアクセスし、開始アドレス設定レジスタ１４３と終了アドレス設定レジスタ１４４に、アドレス・データを設定する。設定アドレスとしては、本来通過しないアドレス、例えば、非実装空間のアドレスやROMやRAM空間内で本来実行されるはずのないアドレスなどが相当する。
【００５７】
アドレス設定の後、第２のデバッグ回路４５のブレーク機能を使い、デバッグ・ツール２から開始アドレス設定レジスタ１４３と終了アドレス設定レジスタ１４４のアドレスをＲＯＭ空間内などの「必ず実行されるアドレス」に書き換える。ＣＰＵ１１が、モード設定レジスタ１４６に、暴走検出のためのデバッグ機能を動作させるためのモード設定データを設定する。ＣＰＵ１１がプログラム実行を開始すると、プログラムが実行される過程で「必ず実行されるアドレス」を通過する。これにより、第１のデバッグ回路１４による非実装領域への暴走の検出機能を、第２のデバッグ回路によってデバッグすることができる。
【００５８】
また、第２の実施形態において説明したように、暴走検出のために開始アドレス設定レジスタ１４３と終了アドレス設定レジスタ１４４に本来実行されるべきアドレスが設定された場合、第２のデバッグ回路４５のもつステップ実行機能、ブレーク機能あるいはトレース機能を使って、ＣＰＵ１１のプログラムの処理を追うことによって、第１のデバッグ回路１４のデバッグが可能である。
【００５９】
上記のように、本実施形態のマイクロコンピュータ１は、独立して機能する２つのデバッグ回路を備えているので、一方のデバッグ回路の暴走検出機能をデバッグすることができる。尚、第２のデバッグ回路４５には、第１のデバッグ回路１４が暴走検出に使用されている場合においても、デバッグ・ツール２からアクセスできるので、第１のデバッグ回路１４の暴走検出のデバッグ以外にも、通常のプログラムのデバッグに使用することも可能である。
【図面の簡単な説明】
【００６０】
【図１】第１の実施形態に係るマイクロコンピュータのハードウェア構成の概略を模式的に示すブロック図。
【図２】第１の実施形態に係るデバッグ回路及び暴走検出に関連するその他の回路構成を示すブロック図。
【図３】第１の実施形態に係るマイクロコンピュータの暴走検出方法を説明するフローチャート。
【図４】第１の実施形態に係るマイクロコンピュータの暴走検出とＣＰＵのプログラム空間との関係の一例を示す図。
【図５】第２の実施形態に係るマイクロコンピュータのハードウェア構成の概略を模式的に示すブロック図。
【図６】第２の実施形態に係るマイクロコンピュータの暴走検出方法を説明するフローチャート。
【図７】第２の実施形態に係るマイクロコンピュータの暴走検出とＣＰＵのプログラム空間との関係の一例を示す図。
【図８】第３の実施形態に係るイクロコンピュータのハードウェア構成の概略を模式的に示すブロック図。
【符号の説明】
【００６１】
１  マイクロコンピュータ、２  デバッグ・ツール、１４  デバッグ回路、
１５  デバッグ用Ｉ／Ｆ回路、１６  Ｉ／Ｏ周辺回路、１７  デバッグ選択部、
３０  プログラム空間、３１  実装空間、３２  非実装空間、
４５  第２のデバッグ回路、１１１  レジスタ・セット、１１２  制御部、
１１３  演算処理部、１１４  バス・インターフェース、
１４１  設定アドレス記憶部、１４２  判定部、
１４３  開始アドレス設定レジスタ、１４４  終了アドレス設定レジスタ、
１４５  アドレス判定部、１４６  モード設定レジスタ、
１４７  切り替えレジスタ、３１１  周辺Ｉ／Ｏ空間、３１２  ＲＡＭ空間、
３１３  ＲＯＭ空間、４１１  暴走検出カウンタ、
４２１  第１のアドレス設定レジスタ、４２１  第２のアドレス設定レジスタ、
４２３  第３のアドレス設定レジスタ、４２４  第４のアドレス設定レジスタ
【図１】
2006079180.tif 000003
【図２】
2006079180.tif 000004
【図３】
2006079180.tif 000005
【図４】
2006079180.tif 000006
【図５】
2006079180.tif 000007
【図６】
2006079180.tif 000008
【図７】
2006079180.tif 000009
【図８】
2006079180.tif 000010