JP2006079180A - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP2006079180A
JP2006079180A JP2004259712A JP2004259712A JP2006079180A JP 2006079180 A JP2006079180 A JP 2006079180A JP 2004259712 A JP2004259712 A JP 2004259712A JP 2004259712 A JP2004259712 A JP 2004259712A JP 2006079180 A JP2006079180 A JP 2006079180A
Authority
JP
Japan
Prior art keywords
address
execution
microcomputer
program
debug
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004259712A
Other languages
English (en)
Other versions
JP4571462B2 (ja
Inventor
Kimitake Tsuyuno
公丈 露野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2004259712A priority Critical patent/JP4571462B2/ja
Publication of JP2006079180A publication Critical patent/JP2006079180A/ja
Application granted granted Critical
Publication of JP4571462B2 publication Critical patent/JP4571462B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)

Abstract

【課題】
暴走検出を行うマイクロコンピュータのチップ面積を縮小する。
【解決手段】
マイクロコンピュータ1は、CPU11におけるプログラム実行の暴走を検出し、暴走に対応した処理を実行する。プログラム実行の暴走検出は、マイクロコンピュータ1が備えるデバッグ回路14を利用することによって行われる。プログラム実行の暴走にデバッグ回路14を利用することによって、暴走検出のための専用回路を省略することができ、マイクロコンピュータの回路規模の縮小に寄与する。
【選択図】 図2

Description

本発明はマイクロコンピュータに関し、特に、マイクロコンピュータにおけるプログラム実行の暴走検出に関する。
現在、パーソナルコンピュータなどのコンピュータ・システムに限らず、家電製品やOA機器、自動車や製造装置の制御装置など、多くの電子機器においてマイクロコンピュータが利用されている。マイクロコンピュータは、機能的要素として、命令コードやアドレスを含むデータを読み出して命令実行の結果に応じてマイクロコンピュータ全体を制御す制御部、算術演算や論理演算を実行する演算処理部、必要なデータを記憶するレジスタ・セットなどを備えている。また、各種装置の制御装置として実装される場合には、ROMやRAMなどのメモリの他、各種周辺機能などを備えている。マイクロコンピュータはプログラムに含まれる命令コードを順次解読し、それに従って処理を行うことで所望の機能を実現する。
命令コードはレジスタ・セットに含まれるプログラム・カウンタの示すアドレスからフェッチされる。例えば外部ノイズなどのためにプログラム・カウンタの値が変化すると、マイクロコンピュータは不測のアドレスにアクセスし、マイクロコンピュータのプログラム実行が暴走する問題が知られている。このため、マイクロコンピュータの暴走を自動的に検出し、暴走に対応した復帰処理を行うことが必要とされる。暴走検出の方法としては、これまでにいくつかのものが提案されている。例えば、ROMに記憶されているプログラムにTRAP命令を分散的に配置することによって暴走を検出し、TRAP処理によって所定の復帰プログラムを実行することができる。
この他、例えば特許文献1は、マイクロコンピュータの一つの暴走検出方法について開示している。特許文献1に開示されたマイクロコンピュータは暴走検出カウンタを備え、常にそれを動作させている。暴走検出カウンタがオーバーフローとなると暴走と判定し、CPUに異常信号を出力する。マイクロコンピュータは、通常動作時の所定のタイミングで暴走検出カウンタをクリアする。これによって正常動作時に暴走検出カウンタがオーバーフローとなることがなく、正常動作と異なる暴走を検出することができる。
具体的には、マイクロコンピュータはプログラムの実行アドレスを監視し、あらかじめ登録されたアドレスを実行していれば暴走検出カウンタのクリアを行なう。また、マイクロコンピュータの周辺ハードウェアの要因がすべて正しく機能している場合に、暴走検出用カウンタのクリアを行なう。暴走検出用カウンタのクリアは、ソフトウェア(プログラム)を介さずハードウェアによって直接に行われる。このように、暴走検出用カウンタのクリアをハードウェアで行なうことによって、プログラム実行の暴走中に誤ってプログラムが暴走検出カウンタをクリアすることを防止し、プログラム実行が暴走したときの暴走検出を確実に行なうことができる。
特開2004−151846号公報
一方、半導体回路に対しては常に回路規模の縮小が要求されている。しかし、上記の特許文献1においては、CPUのプログラム実行の暴走を検出するために、暴走検出専用のハードウェアをマイクロコンピュータに実装することが必要とされる。このため暴走検出機能のマイクロコンピュータへの実装が、回路規模の増大につながっていた。本発明は上記のような事情を背景としてなされたものであって、本発明の目的は、マイクロコンピュータにおける暴走検出の回路規模を縮小することである。本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるだろう。
以下に課題を解決するための手段を開示する。本項目において、いくつかの構成要素は、実施の形態において説明された構成要素と対応付けられている。しかし、この対応付けは発明の理解の容易のためになされたものであって、各要素は実施の形態の対応要素にのみ限定されるものでない。
本発明の第1の態様はプログラムの通常実行と前記プログラムのデバッグとを行うマイクロコンピュータであって、プログラムの命令コードに従って処理を実行するプロセッサ(例えばCPU11)と、前記プロセッサの実行アドレスが予め定められたアドレスと一致する場合に一致アドレス検出信号を出力するアドレス判定部(例えば、アドレス判定部145)を備え、前記一致アドレス検出信号に基づいてデバッグ処理を実行するデバッグ回路(例えば、デバッグ回路14)と、を有し、前記プロセッサによる前記プログラムの通常実行時において、前記アドレス判定部からの一致アドレス検出信号に基づいて予め定められた復帰処理の実行を制御する。デバッグ回路を利用して暴走検出を行うことによって、回路規模の縮小に寄与する。
前記プロセッサは、前記復帰処理において予め定められた復帰プログラムを実行することが好ましい。これによって、所望の復帰処理を実行することができる。あるいは、前記マイクロコンピュータは、前記プロセッサに前記一致アドレス検出信号に従って割り込み要求を行い、前記プロセッサは、前記割り込み要求に対応した割り込み処理を前記復帰処理において実行することが好ましい。割り込み要求を利用することで、シンプルな構成で所定の復帰処理を指示することができる。あるいは、前記実行アドレスと前記予め定められたアドレスとが一致すると前記アドレス判定部が判定した場合に検出信号を外部端子に出力し、前記検出信号に応答した外部からのリセット要求に従ってリセット処理を前記復帰処理において行うことができる。
前記アドレス判定部はレジスタを備え、前記レジスタに記憶されているアドレスによって規定されるアドレス範囲のいずれか一つに前記実行アドレスが一致する場合に前記一致アドレス検出信号を出力することができる。あるいは、前記アドレス判定部はレジスタを備え、前記レジスタに記憶されているアドレスと前記実行アドレスが一致する場合に前記一致アドレス検出信号を出力する、ことができる。
前記プログラムの通常実行時にカウントを行うカウンタ(例えば暴走検出カウンタ411)をさらに備え、前記一致アドレス検出信号に応答して前記カウンタをクリアし、前記カウンタが予め定められた値に達した場合に復帰処理を実行することができる。これにより、例えば、実行されるべき命令が実行されない場合の暴走検出を行うことができる。
前記デバッグ回路と外部装置との間のインターフェース回路と、前記デバッグ回路へのアクセスを、前記プロセッサとインターフェース回路との間で切替えるセレクタ(例えば、デバッグ選択部17)と、をさらに備え、前記セレクタに選択された前記プロセッサは、前記デバッグ回路にアクセスして、前記デバッグ回路のプログラム通常実行時における処理動作の設定を行うことが好ましい。これによって、外部のデバッグ・ツールとマイクロコンピュータの内部回路によって、デバッグ回路の設定を行うことができる。
さらに、前記アドレス判定部は、前記プロセッサの実行アドレスと比較するアドレスを規定する値を記憶するレジスタを備え、前記プロセッサは前記レジスタに値を設定することが好ましい。これによって、マイクロコンピュータの内部回路によって、デバッグ・モードから通常動作における暴走検出モードへの設定変更処理を行うことができる。また、前記プロセッサが前記セレクタの切り替えを制御することによって、セレクタの切り替えをマイクロコンピュータの内部処理として実行することができる。
前記デバッグ回路と異なる第2のデバッグ回路(例えば、第2のデバッグ回路45)を備え、前記第2のデバッグ回路は、前記デバッグ回路の暴走検出機能のデバッグを実行することが好ましい。第2のデバッグ回路によって、デバッグ回路を利用した暴走検出機能をデバッグすることができる。
本発明によれば、プログラム実行の暴走検出を行うマイクロコンピュータの回路規模を縮小することができる。
以下に、本発明を適用可能な実施の形態が説明される。以下の説明は、本発明の実施形態を説明するものであり、本発明が以下の実施形態に限定されるものではない。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、当業者であれば、以下の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である
実施の形態1.
本実施形態のマイクロコンピュータは、プロセッサ(本形態ではCPUとして示されている)におけるプログラム実行の暴走を検出し、暴走に対応した処理を実行する。プログラム実行の暴走検出は、マイクロコンピュータが備えるデバッグ回路を利用することによって行われる。プログラム実行の暴走にデバッグ回路を利用することによって、暴走検出のための専用回路を省略することができ、マイクロコンピュータの回路規模の縮小に寄与する。
本形態のマイクロコンピュータにおける暴走検出について詳しい説明を行う前に、まず、本形態のマイクロコンピュータのハードウェア構成について、その概略を説明する。図1は、本実施形態に係るマイクロコンピュータ1のハードウェア構成の概略を模式的に示すブロック図である。デバッグ処理において、マイクロコンピュータ1は外部のデバッグ・ツール2と接続される。マイクロコンピュータ1は、デバッグ・ツール2からの制御信号に従ってデバッグ処理を実行し、また、デバッグ処理において得られるデータを、デバッグ・ツール2に出力する。ユーザは、デバッグ・ツール2を介して、デバッグ処理の実行及びその実行結果を得ることができる。
マイクロコンピュータ1は、プロセッサの一例であるCPU11、読み出し専用メモリであるROM12、任意のアドレスを指定してデータを読み書きすることが可能なRAM13、デバッグ処理を行うデバッグ回路14、デバッグ回路14とデバッグ・ツール2との間のインターフェース処理を行うデバッグ用I/F回路15及び周辺回路との間のデータの入出力をインターフェースする周辺I/O回路16を備えている。
CPU11、ROM12、RAM13、デバッグ回路14及び周辺I/O回路16は内部バスを介して接続されており、各回路は、命令コード、アドレスあるいは演算データなどの各種データ及び各種制御信号を、内部バスを介して互いに入出力する。また、マイクロコンピュータ1はデバッグ・ツール2との専用入出力端子を備えており、デバッグ用I/F回路15を介して、デバッグ回路14との間の制御信号及びデータの入出力を行う。
CPU11は、レジスタ・セット111、制御部112、演算処理部113及びバス・インターフェース114などの各回路ブロックを備えている。レジスタ・セット111は複数のレジスタからなり、命令コードやアドレスあるいは演算データなどを一時的に格納する。レジスタ・セット111には、演算データを格納するアキュムレータやプログラム実行アドレスを指示するプログラム・カウンタなどが含まれている。
制御部112は、ROM12などから命令コードをフェッチする命令フェッチ回路や、命令コードを解読する命令デコーダなどを備えている。制御部112は、ROM12やRAM13などから命令コードやアドレスを含むデータをレジスタに読み出し、命令実行の結果に応じてマイクロコンピュータ1全体を制御する。また、他の回路からの割り込み要求があった場合に、割り込み要因に応じた割り込み処理の制御を行う。割り込み処理は、ROM12に記憶されている割り込みプログラムを実行することによって行う。演算処理部113は、加減算などの数値演算、AND・OR・NOTなどの論理演算及びシフト命令などを実行する。バス・インターフェース114は、他の回路と間のデータや命令コードの入出力をインターフェースする。
ROM12は、ユーザによって設定された命令コードや演算データを予め記憶している。ROM12としては、電源が切れても記憶データを保持する不揮発性メモリが使用され、例えば、フラッシュメモリなどのEEPROM(Electrically Erasable Read-Only Memory)を使用することができる。RAM13は揮発性の記憶デバイスであり、再書き込みが不要なSRAM、一定時間毎に再書き込みが必要なDRAMなどを使用することができる。
デバッグ回路14は、デバッグ・ツール2の制御において、CPU11によって実行される実行プログラムのデバッグ処理を行う。具体的には、デバッグ回路14は、CPU11によるプログラム実行において所定のイベントが発生したことを検出するイベント検出機能や、所定の条件においてCPU11に割り込み要求を行いプログラムの実行をブレークする(中断させる)ブレーク機能などを備えている。その他、典型的には、ステップ実行機能あるいはトレース機能なども備える。ステップ実行機能は、プログラム実行をブレークした後に1命令ずつステップ実行し、トレース機能は、プログラムの実行の履歴をバッファに記録しておき、それをデバッグ・ツール2から読み出すことで、プログラム実行の履歴を確認する。
例えば、イベント検出機能によってCPU11の実行プログラムが所定のアドレスを通過しているか(イベントの発生)を検出し、所定アドレスの通過を確認することができる。また、ブレーク機能によってCPU11によるプログラムの実行を中断し、マイクロコンピュータ1の内部状態、例えばCPU11のレジスタ・セット111の記憶データやRAM13に記憶されているデータなどをモニタすることができる。デバッグ処理結果を示すデータは、デバッグ回路14からデバッグ用I/回路15を介してデバッグ・ツール2に出力される。ユーザは、デバッグ・ツール2を介して、イベント検出の結果やブレークしたときのマイクロコンピュータ1の内部状態などを確認する。
上記のように、本形態のデバッグ回路14は、CPU11のプログラム実行の暴走検出に利用される。以下においては、デバッグ回路14を使用した暴走検出について詳細を説明する。図2は、デバッグ回路14によるCPU11の暴走検出を説明するため、デバッグ回路14及び暴走検出に関連するその他の回路構成を示すブロック図である。
図2に示すように、デバッグ回路14は、設定アドレス記憶部141及び判定部142を備えている。設定アドレス記憶部141は、ユーザに設定されたアドレスを記憶する。判定部142は設定アドレス記憶部141に記憶されたアドレスによって規定されるアドレスと、CPU11の実行アドレスとの一致を判定する。さらに、判定結果に基づいて、CPU11あるいはデバッグ・ツール2などのデバッグ回路14の外部回路に検出信号を出力する。検出信号は、例えば、ブレーク機能におけるCPU11への割り込み要求であり、あるいは、イベント検出機能におけるデバッグ・ツール2へのアドレス通過検出信号である。
図2の例において、設定アドレス記憶部141は、予め定められたアドレス範囲の開始アドレスを記憶する開始アドレス設定レジスタ143と、予め定められたアドレス範囲の終了アドレスを記憶する終了アドレス設定レジスタ144の2つのレジスタを備えている。このように、本例の設定アドレス記憶部141に記憶される2つのアドレスは、所定のアドレス範囲を規定する。
判定部142は、さらにアドレス判定部145を備えている。アドレス判定部145は、CPU11の実行アドレスと設定アドレス記憶部141が記憶するアドレスを比較し、CPU11の実行アドレスが上記の開始アドレスと終了アドレスの間に含まれる、つまり、開始アドレスと終了アドレスで規定されるアドレス範囲のいずれか一つのアドレスと一致するかを判定する。実行アドレスが上記のアドレス範囲に含まれる場合、アドレス判定部145は一致アドレス検出信号を出力する。
例えば、アドレス判定部145はアドレス判定信号をHighレベルからLowレベルに変化させることによって、一致アドレスの検出を示す(Lowレベルのアドレス判定信号が一致アドレス検出信号に相当)。判定部142は、一致アドレス検出信号及びその他の制御信号(例えば検出すべきイベント種類を特定する信号、デバッグのモードを特定する信号など)に従って、検出信号をデバッグ回路14の外部、図2においてはCPU11もしくはデバッグ用I/F回路15に出力する。
デバッグ処理において、イベント検出機能やブレーク機能が上記の実行プログラムと設定アドレスの一致検出機能を使用する。デバッグ処理において、ユーザは、デバッグ・ツール2から設定アドレス記憶部141に検出アドレスの設定を予め行う。例えば、イベント検出機能においては、デバッグ回路14はCPU11の実行アドレスをモニタし、アドレス判定部145が実行アドレスは所定のアドレス範囲に含まれると判定すると、判定部142は、デバッグ用I/F回路15を介してアドレス通過検出信号をデバッグ・ツール2に出力する。これによって、CPU11のプログラム実行が、所定のアドレスを通過したことを確認することができる。
あるいは、ブレーク機能において、デバッグ回路14はCPU11の実行アドレスをモニタし、アドレス判定部145がCPU11の実行アドレスが所定のアドレス範囲に含まれると判定すると、判定部142は予め定められた割り込み要求をCPU11に出力する。CPU11は割り込み要求に応答して実行プログラムを中断する。中断された状態におけるマイクロコンピュータ1の内部状態、例えば、CPU11のレジスタ・セットやRAM13に記憶されているデータなどがデバッグ・ツール2に出力され、ユーザはそれを確認することができる。
本形態においては、さらに、マイクロコード1は、アドレス判定部145の判定機能を使用して、CPU11によるプログラム実行の暴走検出を行う。デバッグ回路14を使用し暴走検出の処理の概略を、図3のフローチャートを参照して説明する。CPU11によるプログラムの通常実行時において、デバッグ回路14の暴走検出機能が動作状態にセットされていると、アドレス判定部145は、CPU11の実行アドレスをモニタする(S11)。アドレス判定部145はCPU11の実行アドレスが所定のアドレスと一致するかを判定する(S12)。
一致しない場合、アドレス判定部145はCPU11の実行アドレスのモニタを続ける。一致すると判定すると、判定部142は予め定められた割り込み要求をCPU11に出力する(S13)。CPU11は割り込み要求に対応する復帰プログラムをROM11から読み込む。CPU11は、修復プログラムに従って暴走検出に対応した修復処理を実行する(S14)。デバッグ回路14のアドレス一致判定機能を使用してCPU11の暴走検出を可能とすることによって、回路構成をより単純なものとすることができる。
図2に戻って、暴走検出処理に関する各回路構成の詳細を説明する。デバッグ回路14は、モード設定レジスタ146と切り替えレジスタ147を備えている。モード設定レジスタ146は、デバッグ回路14の動作モードを設定するためのレジスタである。モード設定レジスタ146はモード設定データを記憶し、この設定データを変更することによってデバッグ回路14をデバッグ・モードあるいは暴走検出モードなどに設定することができる。切り替えレジスタ147は、デバッグ選択部17の制御データを記憶する。デバッグ選択部17は、切り替えレジスタ147の制御データに従って、デバッグ回路14の接続先を、CPU11及びデバッグ用I/F回路15から選択する。尚、切り替え機能は、本例のように切り替えレジスタを使用する他、端子からデバッグ選択部17の切り替えを制御、設定することも可能である。この点は、他の実施形態において同様である。
本例において、モード設定レジスタ146と切り替えレジスタ147のデータ設定は、CPU11が行う。プログラムの通常実行の前に、CPU11は切り替えレジスタ147のデータを「CPU側」に設定する。デバッグ選択部17は、切り替えレジスタ147の制御データに従って、デバッグ回路14の接続先をCPU11に切替える。CPU11はデバッグ回路14にアクセスし、開始アドレス設定レジスタ143と終了アドレス設定レジスタ144に、アドレス・データを設定する。また、モード設定レジスタ146に、暴走検出のためのデバッグ機能を動作させるためのモード設定データを設定する。尚、設定アドレス記憶部141において、CPU11のプログラムの実行中にアドレスの再設定を行ってもよい。
設定アドレス記憶部141は、暴走検出されるアドレス範囲を規定する2つのアドレスを記憶する。開始アドレス設定レジスタ143は検出アドレス範囲の開始アドレスを記憶し、終了アドレス設定レジスタ144は検出アドレス範囲の終了アドレスを記憶する。CPU11によるプログラムの通常実行時に、アドレス判定部145はCPU11の実行アドレスをモニタしている。アドレス判定部145はCPU11の実行アドレスと開始アドレス及び終了アドレスとを比較し、実行アドレスが検出アドレス範囲(開始アドレスから終了アドレスまで)に含まれるかを判定する。
アドレス判定部145は、CPU11の実行アドレスが開始アドレスから終了アドレスまでのいずれかのアドレスと一致すると判定すると、一致アドレス検出信号を出力する。判定部142は、一致アドレス検出信号及びモード設定レジスタ146などの制御データに基づいて、割り込み要求をCPU11に出力する。本例においては、モード設定レジスタ146が暴走検出モードを示し、一致アドレス検出信号を取得した場合に、判定部142はCPU11に予め定められた割り込み要求を出力する。CPU11は割り込み要求に応答して、ROM12から割り込みプログラムをロードし、割り込みプログラムに応じた復帰処理を実行する。
図4は、本形態に係るマイクロコンピュータ1の暴走検出とCPU11のプログラム空間との関係の一例を示している。図4において、プログラム空間30はいくつかのセグメントに分割されている。各セグメントは、マイクロコンピュータ1あるいは外部回路に実装されているハードウェアに割り当てられた実装空間31と、対応するハードウェアが実装されていない非実装空間32に分けられる。実装空間31は、それぞれが固有のハードウェアに対応する複数のセグメントを備えている。図3においては、周辺I/O空間311、RAM空間312及びROM空間313が例示されている。
本例において、暴走検出アドレス範囲は非実装空間32と一致している。開始アドレス設定レジスタ143及び終了アドレス設定レジスタ144は、それぞれ、非実装空間32の開始アドレス及び終了アドレスを記憶している。CPU11のプログラム実行が暴走し、CPU11が非実装空間32にアクセスすると、割り込み要求がCPU11に入力される。本例では、CPU11が非実装空間32のいずれか一つのアドレスにアクセスすると、所定の割り込み要求が判定部142からCPU11に入力される。CPU11は割り込み要求に応答して、ROM13に記憶されている修復プログラムを実行する。検出アドレス範囲を非実装空間に設定することによって、非実装空間への暴走を確実に検出することができる。
上記例において、判定部142は一致アドレスの検出に応答して、割り込み要求である検出信号をCPU11に出力するが、判定部142はマイクロコンピュータ1の外部端子に検出信号を出力することができる。外部装置(不図示)は、外部端子からの検出信号に応答して、マイクロコンピュータ1にリセット入力する。マイクロコンピュータ1は、外部からのリセットに応答して、暴走に対応した復帰処理としてのリセット処理を実行する。
あるいは、上記例において、アドレス判定部145は所定のアドレス範囲と実行アドレスの一致を検出するが、判定部142は、一つまたは複数の各設定アドレスと実行アドレスの一致を判定することもできる。設定アドレス記憶部141は、一つもしくは複数のアドレス設定レジスタを備え、アドレス判定部145は、各アドレス設定レジスタに記憶されているアドレスと実行アドレスを比較する。いずれかの設定アドレスと実行アドレスが一致する場合、アドレス判定部145は一致アドレス検出信号を出力する。
また、本発明は様々なタイプのマイクロコンピュータに適用することが可能である。例えば、MPU、周辺用LSI(MPR:Micro Peripheral Unit)、マイクロコントローラ、DSP(Digital Signal Processor)など、いずれのタイプのマイクロコンピュータに適用することも可能である。これらの点は、以下の実施形態において同様である。
実施の形態2.
本形態のデバッグ回路は、CPU11によるプログラムの通常実行時において本来実行されるべきアドレスを記憶し、CPU11が所定のプログラムを正常に実行していることを監視する。実施の形態1のデバッグ回路は、非実装空間のアドレスなどの本来アクセスされないアドレスを検出することで、暴走検出を行っている。本形態のデバッグ回路は、ROM13のメイン・ループ内のアドレスなど、実行プログラム内の所定のアドレスの通過を検出する。所定アドレスが検出されない場合に、CPUのプログラム実行が暴走したと判定し、復帰処理の要求を出力する。
図5は、本実施の形態に係るマイクロコンピュータ1の概略構成を示すブロック図である。デバッグ回路14は、実施の形態1と異なり、判定部142に暴走検出カウンタ411を備えている。また、設定アドレス記憶部141は、例示的に、第1アドレス設定レジスタ421から第4のアドレス設定レジスタ424までの4つのアドレス設定レジスタを備えている。他の構成要素は、実施の形態1において説明したデバッグ回路14と実質的に同一であり、説明を省略する。また、デバッグ回路14以外の回路構成は、実施の形態1と同様である。
プログラムの通常実行時において、暴走検出カウンタ411は所定のクロック信号に従ってカウントを行う。暴走検出カウンタ411のカウント値が予め定められた値を超えてオーバーフローとなると、判定部142はCPU11のプログラム実行が暴走したと判定する。判定部142は、暴走検出カウンタ411のオーバーフローに応答して、予め設定されている割り込み要求をCPU11に出力する。CPU11は、割り込み要求に応答してROM12に記憶されている割り込みプログラムを実行する。
設定アドレス記憶部141は、CPU11の実行プログラムにおいて、本来実行されるべきアドレスを記憶する。例えば、各アドレス設定レジスタ421〜424に、実行プログラムのメイン・ループ内の異なるアドレスを記憶する。アドレス判定部145は、CPU11による実行アドレスをモニタし、アドレス設定レジスタ421〜424に記憶されているアドレスと実行アドレスとを比較する。CPU11の実行アドレスが、アドレス設定レジスタ421〜424に記憶されているアドレスのいずれかと一致する場合、アドレス判定部145は一致アドレス検出信号を出力する。
判定部142は、アドレス判定部145からの一致アドレス検出信号に応答して、暴走検出カウンタ411をクリアする。暴走検出カウンタ411のオーバーフロー周期は決まっている。このため、プログラムの実行時に所定のタイミングで暴走検出カウンタ411をクリアすることによって、暴走検出カウンタ411のオーバーフローが防がれる。このように、CPU11がプログラムを正常に実行している場合、アドレス設定レジスタ421〜424の通過によって暴走検出カウンタ411がオーバーフローとなる前にクリアされるので、正常実行と暴走とを判別する(暴走を検出する)ことができる。
図6のフローチャートを参照して、本形態に係るマイクロコンピュータ1の暴走検出方法を説明する。デバッグ回路14は、モード設定レジスタ146のモード設定データに従って暴走検出機能を実行する。暴走検出カウンタ411は、所定のクロック周期に従ってカウントを行う(S21)。判定部142は、暴走検出カウンタ411のオーバーフローを判定する(S22)。オーバーフローでない場合、暴走検出カウンタ411はカウントを続ける。暴走検出カウンタ411がオーバーフローとなった場合、判定部142は割り込み要求をCPU11に出力し(S23)、CPU11は、割り込み要求に応答して、復帰プログラムに従った復帰処理を実行する。
一方、アドレス判定部145は、CPU11の実行アドレスをモニタする(S31)。アドレス判定部145は、アドレス設定レジスタ421〜424に記憶されている各アドレスと、CPU11の実行アドレスを比較する(S32)。実行アドレスが、アドレス設定レジスタ421〜424に記憶されているいずれかのアドレスと一致すると判定した場合、アドレス判定部145は一致アドレス検出信号を出力し、判定部142は、一致アドレス検出信号に応答して、暴走検出カウンタ411をクリアする(S33)。一致しない場合、実行アドレスのモニタを続行する(S31)。また、暴走検出カウンタ411をクリアした後も、実行アドレスのモニタを続ける(S31)。
図7は、本形態に係るマイクロコンピュータ1の暴走検出とCPU11のプログラム空間との関係の一例を示している。図7はROM12の実装空間313を示している。図7に示したアドレス・マップの例において、第1及び第2のアドレス設定レジスタ421、422は、第1のループにおける異なるアドレスをそれぞれ記憶している。また、第3及び第4のアドレス設定レジスタ423、424は、第2のループにおける異なるアドレスをそれぞれ記憶している。
CPU11がプログラムの第1ループを正常に実行し、第1及び第2のアドレス設定レジスタ421、422に記憶されているアドレスのいずれか一方と実行アドレスが一致すると、判定部142は暴走検出カウンタをクリアする。同様に、CPU11がプログラムの第2ループを正常に実行し、第3及び第4のアドレス設定レジスタ423、424に記憶されているアドレスのいずれか一方と実行アドレスが一致すると、判定部142は暴走検出カウンタをクリアする。上記4つのアドレスのいずれも検出されず、時間が経過して暴走検出カウンタ411がオーバーフローとなると、判定部142は割り込み要求をCPU11に出力する。尚、本例において、第1から第4までの4つのアドレス設定レジスタ421−424の値を随時変更することができる。あるいは、設計によって、第1及び第2のアドレス設定レジスタ421、422の値を随時変更し、第3及び第4のアドレス設定レジスタ423、424を省略することも可能である。
実施の形態3.
図8を参照して、第3の実施形態に係るマイクロコンピュータについて説明する。本形態のマイクロコンピュータは、第1の実施形態において説明されたデバッグ回路14に加えて、もう一つのデバッグ回路を備えている。デバッグ回路を一つ追加することによって、デバッグ回路14の暴走検出機能のデバッグ処理を行うことが可能となる。
図8に示すように、本形態のマイクロコンピュータ1は、デバッグ回路14(以下、第1のデバッグ回路14と呼ぶ)の他に、第2のデバッグ回路45を備えている。第2のデバッグ回路45は第1のデバッグ回路14とは独立に機能することができる。第1のデバッグ回路14には、デバッグ選択部17を介して、デバッグ・ツール2及びCPU11からアクセスすることができる。一方、第2のデバッグ回路45はデバッグ専用であって、CPU11の通常動作時における暴走検出には使用されない。そのため、第2のデバッグ回路45には、デバッグ用I/F回路15を介して、デバッグ・ツール2がアクセスし、CPU11は第2のデバッグ回路45にアクセスしない。
第2のデバッグ回路45は、第1のデバッグ回路14と同様の機能を備えている。例えば、イベント検出機能、ブレーク機能、ステップ実行機能あるいはトレース機能などを備えている。イベント検出機能は、プログラムが所定の実行アドレスを通過しているかの確認を行い、プログラムのデバッグを行う。ブレーク機能は、ブレークしたいアドレスを設定しておき、プログラム実行がそのアドレスと一致時にプログラム実行をブレークし、内部状態をモニタする。モニタだけでなく、レジスタ値や変数値を任意に書き換えることもできる。ステップ実行機能は、プログラム実行をブレークした後、1命令ずつステップ実行する。トレース機能は、プログラムの実行の履歴をデバッグ機能2内のバッファに記録しておき、デバッグ・ツール2から読み出すことで、プログラム実行の履歴を確認する。ただし、通常動作時におけるCPU11の暴走を検出する機能は備えていない。
第2のデバッグ回路45を備えることによって、第1のデバッグ回路14の暴走検出機能を第2のデバッグ回路45によりデバッグすることが可能となる。実施の形態1において説明したように、プログラムの通常実行の前に、暴走検出のためCPU11は切り替えレジスタ147のデータを「CPU側」に設定する。さらに、CPU11はデバッグ回路14にアクセスし、開始アドレス設定レジスタ143と終了アドレス設定レジスタ144に、アドレス・データを設定する。設定アドレスとしては、本来通過しないアドレス、例えば、非実装空間のアドレスやROMやRAM空間内で本来実行されるはずのないアドレスなどが相当する。
アドレス設定の後、第2のデバッグ回路45のブレーク機能を使い、デバッグ・ツール2から開始アドレス設定レジスタ143と終了アドレス設定レジスタ144のアドレスをROM空間内などの「必ず実行されるアドレス」に書き換える。CPU11が、モード設定レジスタ146に、暴走検出のためのデバッグ機能を動作させるためのモード設定データを設定する。CPU11がプログラム実行を開始すると、プログラムが実行される過程で「必ず実行されるアドレス」を通過する。これにより、第1のデバッグ回路14による非実装領域への暴走の検出機能を、第2のデバッグ回路によってデバッグすることができる。
また、第2の実施形態において説明したように、暴走検出のために開始アドレス設定レジスタ143と終了アドレス設定レジスタ144に本来実行されるべきアドレスが設定された場合、第2のデバッグ回路45のもつステップ実行機能、ブレーク機能あるいはトレース機能を使って、CPU11のプログラムの処理を追うことによって、第1のデバッグ回路14のデバッグが可能である。
上記のように、本実施形態のマイクロコンピュータ1は、独立して機能する2つのデバッグ回路を備えているので、一方のデバッグ回路の暴走検出機能をデバッグすることができる。尚、第2のデバッグ回路45には、第1のデバッグ回路14が暴走検出に使用されている場合においても、デバッグ・ツール2からアクセスできるので、第1のデバッグ回路14の暴走検出のデバッグ以外にも、通常のプログラムのデバッグに使用することも可能である。
第1の実施形態に係るマイクロコンピュータのハードウェア構成の概略を模式的に示すブロック図。 第1の実施形態に係るデバッグ回路及び暴走検出に関連するその他の回路構成を示すブロック図。 第1の実施形態に係るマイクロコンピュータの暴走検出方法を説明するフローチャート。 第1の実施形態に係るマイクロコンピュータの暴走検出とCPUのプログラム空間との関係の一例を示す図。 第2の実施形態に係るマイクロコンピュータのハードウェア構成の概略を模式的に示すブロック図。 第2の実施形態に係るマイクロコンピュータの暴走検出方法を説明するフローチャート。 第2の実施形態に係るマイクロコンピュータの暴走検出とCPUのプログラム空間との関係の一例を示す図。 第3の実施形態に係るイクロコンピュータのハードウェア構成の概略を模式的に示すブロック図。
符号の説明
1 マイクロコンピュータ、2 デバッグ・ツール、14 デバッグ回路、
15 デバッグ用I/F回路、16 I/O周辺回路、17 デバッグ選択部、
30 プログラム空間、31 実装空間、32 非実装空間、
45 第2のデバッグ回路、111 レジスタ・セット、112 制御部、
113 演算処理部、114 バス・インターフェース、
141 設定アドレス記憶部、142 判定部、
143 開始アドレス設定レジスタ、144 終了アドレス設定レジスタ、
145 アドレス判定部、146 モード設定レジスタ、
147 切り替えレジスタ、311 周辺I/O空間、312 RAM空間、
313 ROM空間、411 暴走検出カウンタ、
421 第1のアドレス設定レジスタ、421 第2のアドレス設定レジスタ、
423 第3のアドレス設定レジスタ、424 第4のアドレス設定レジスタ

Claims (11)

  1. プログラムの通常実行と前記プログラムのデバッグとを行うマイクロコンピュータであって、
    プログラムの命令コードに従って処理を実行するプロセッサと、
    前記プロセッサの実行アドレスが予め定められたアドレスと一致する場合に一致アドレス検出信号を出力するアドレス判定部を備え、前記一致アドレス検出信号に基づいてデバッグ処理を実行するデバッグ回路と、を有し、
    前記プロセッサによる前記プログラムの通常実行時において、前記アドレス判定部からの一致アドレス検出信号に基づいて予め定められた復帰処理の実行を制御する、マイクロコンピュータ。
  2. 前記プロセッサは、前記復帰処理において予め定められた復帰プログラムを実行する、請求項1に記載のマイクロコンピュータ。
  3. 前記マイクロコンピュータは、前記プロセッサに前記一致アドレス検出信号に従って割り込み要求を行い、
    前記プロセッサは、前記割り込み要求に対応した割り込み処理を前記復帰処理において実行する、
    請求項1に記載のマイクロコンピュータ。
  4. 前記実行アドレスと前記予め定められたアドレスとが一致すると前記アドレス判定部が判定した場合に検出信号を外部端子に出力し、前記検出信号に応答した外部からのリセット要求に従ってリセット処理を前記復帰処理において行う、請求項1に記載のマイクロコンピュータ。
  5. 前記アドレス判定部はレジスタを備え、前記レジスタに記憶されているアドレスによって規定されるアドレス範囲のいずれか一つに前記実行アドレスが一致する場合に前記一致アドレス検出信号を出力する、請求項1に記載のマイクロコンピュータ。
  6. 前記アドレス判定部はレジスタを備え、前記レジスタに記憶されているアドレスと前記実行アドレスが一致する場合に前記一致アドレス検出信号を出力する、請求項1に記載のマイクロコンピュータ。
  7. 前記プログラムの通常実行時にカウントを行うカウンタをさらに備え、
    前記一致アドレス検出信号に応答して前記カウンタをクリアし、
    前記カウンタが予め定められた値に達した場合に復帰処理を実行する、
    請求項1に記載のマイクロコンピュータ。
  8. 前記デバッグ回路と外部装置との間のインターフェース回路と、
    前記デバッグ回路へのアクセスを、前記プロセッサとインターフェース回路との間で切替えるセレクタと、をさらに備え、
    前記セレクタに選択された前記プロセッサは、前記デバッグ回路にアクセスして、前記デバッグ回路のプログラム通常実行時における処理動作の設定を行う、
    請求項1に記載のマイクロコンピュータ。
  9. 前記アドレス判定部は、前記プロセッサの実行アドレスと比較するアドレスを規定する値を記憶するレジスタを備え、前記プロセッサは前記レジスタに値を設定する、
    請求項8に記載のマイクロコンピュータ。
  10. 前記プロセッサが前記セレクタの切り替えを制御する、請求項8に記載のマイクロコンピュータ。
  11. 前記デバッグ回路と異なる第2のデバッグ回路を備え、
    前記第2のデバッグ回路は、前記デバッグ回路の暴走検出機能のデバッグを実行する、
    請求項1に記載のマイクロコンピュータ。
JP2004259712A 2004-09-07 2004-09-07 マイクロコンピュータ Expired - Fee Related JP4571462B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004259712A JP4571462B2 (ja) 2004-09-07 2004-09-07 マイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004259712A JP4571462B2 (ja) 2004-09-07 2004-09-07 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JP2006079180A true JP2006079180A (ja) 2006-03-23
JP4571462B2 JP4571462B2 (ja) 2010-10-27

Family

ID=36158617

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004259712A Expired - Fee Related JP4571462B2 (ja) 2004-09-07 2004-09-07 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP4571462B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009099054A (ja) * 2007-10-18 2009-05-07 Fujitsu Microelectronics Ltd 半導体集積回路及びデバッグモード決定方法
WO2013073009A1 (ja) * 2011-11-15 2013-05-23 トヨタ自動車株式会社 マイコンシステム、監視マイコン
JP6463445B1 (ja) * 2017-11-09 2019-02-06 三菱電機株式会社 車載制御装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63184848A (ja) * 1987-01-27 1988-07-30 Nec Corp マイクロプロセツサ
JPH0683671A (ja) * 1992-08-28 1994-03-25 Fujitsu Ten Ltd 半導体装置の動作監視回路
JPH06175888A (ja) * 1992-12-09 1994-06-24 Toshiba Corp 異常アクセス検出回路
JPH08153018A (ja) * 1994-11-29 1996-06-11 Sharp Corp 半導体システム
JPH09237205A (ja) * 1996-02-29 1997-09-09 Denso Corp プログラム暴走検出装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63184848A (ja) * 1987-01-27 1988-07-30 Nec Corp マイクロプロセツサ
JPH0683671A (ja) * 1992-08-28 1994-03-25 Fujitsu Ten Ltd 半導体装置の動作監視回路
JPH06175888A (ja) * 1992-12-09 1994-06-24 Toshiba Corp 異常アクセス検出回路
JPH08153018A (ja) * 1994-11-29 1996-06-11 Sharp Corp 半導体システム
JPH09237205A (ja) * 1996-02-29 1997-09-09 Denso Corp プログラム暴走検出装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009099054A (ja) * 2007-10-18 2009-05-07 Fujitsu Microelectronics Ltd 半導体集積回路及びデバッグモード決定方法
WO2013073009A1 (ja) * 2011-11-15 2013-05-23 トヨタ自動車株式会社 マイコンシステム、監視マイコン
JP6463445B1 (ja) * 2017-11-09 2019-02-06 三菱電機株式会社 車載制御装置

Also Published As

Publication number Publication date
JP4571462B2 (ja) 2010-10-27

Similar Documents

Publication Publication Date Title
US10235254B2 (en) Processor and method of controlling execution of processes
US20090063907A1 (en) Debugging system, debugging apparatus and method
US7966486B2 (en) Computer system with dual basic input output system and operation method thereof
US7558990B2 (en) Semiconductor circuit device and method of detecting runaway
JP2003296136A (ja) トレース装置
CA2292991C (en) Watch dog timer system
US10108469B2 (en) Microcomputer and microcomputer system
US6158023A (en) Debug apparatus
JP4893427B2 (ja) マイクロコンピュータシステム
US8762792B2 (en) Event monitor having switch matrix, separate counter, and compare circuitry
JP2007323631A (ja) Cpu暴走判定回路
JP4571462B2 (ja) マイクロコンピュータ
JP2000322264A (ja) 電子機器
US11656964B2 (en) Processor with non-intrusive self-testing
JP4647276B2 (ja) 半導体回路装置
US6567930B1 (en) Method and apparatus for controlling writing of flash EEPROM by microcomputer
JP2006221606A (ja) データプロセッサ
JP2017162135A (ja) 情報処理装置、デバッグシステムおよびスタックオーバフロー検出方法
JP2009042971A (ja) リアルタイムウォッチ装置及びその方法
JP7120957B2 (ja) 半導体装置
KR100239438B1 (ko) 오동작 방지 기능을 갖는 중앙 처리 장치
KR100442290B1 (ko) 프로그램 카운터 제어회로
JPH05197585A (ja) データ比較装置及びエミュレータ
JPH0436841A (ja) マイクロコンピュータ
JPH09319592A (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070814

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091027

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100712

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100810

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100812

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130820

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees