(57)【要約】【課題】システムの修復に用いるデータを確実に保持することができるフェイルセーフ対策を実現するマイクロコンピュータを提供する。【解決手段】マイクロコンピュータは、ウォッチドッグタイマを用いて、システムの修復を行うマイクロコンピュータであって、正常時処理プログラムを格納する正常時処理プログラムエリア３１と、フェイルセーフ時処理プログラムを格納するフェイルセーフ時処理プログラムエリア１１と、フェイルセーフ時に使用するフェイルセーフ用データを一時的に格納するフェイルセーフ用データテンポラリーエリア１２と、フェイルセーフ用データテンポラリーエリア１２に格納したフェイルセーフ用データを、ウォッチドッグタイマの動作に応じて格納するフェイルセーフ用データ退避エリア１３と、を備える。【選択図】図１
2010128511.tif 000002
【特許請求の範囲】
【請求項１】
ウォッチドッグタイマを用いて、システムの修復を行うマイクロコンピュータであって、
正常時処理プログラムを格納する正常時処理プログラムエリアと、
フェイルセーフ時処理プログラムを格納するフェイルセーフ時処理プログラムエリアと、
フェイルセーフ時に使用するフェイルセーフ用データを一時的に格納するフェイルセーフ用データテンポラリーエリアと、
前記フェイルセーフ用データテンポラリーエリアに格納したフェイルセーフ用データを、前記ウォッチドッグタイマの動作に応じて格納するフェイルセーフ用データ退避エリアと、を備えるマイクロコンピュータ。
【請求項２】
前記フェイルセーフ用データ退避エリアは、ウォッチドッグタイマからクリア信号が出力されるタイミングで、前記フェイルセーフ用データテンポラリーエリアから前記フェイルセーフ用データが転送されることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
ウォッチドッグタイマから出力されるクリア信号に応じて、前記フェイルセーフ用データテンポラリーエリアに格納したデータを前記フェイルセーフ用退避エリアへ転送する転送部を、さらに備えることを特徴とする請求項１または２記載のマイクロコンピュータ。
【請求項４】
前記ウォッチドッグタイマがオーバーフローした場合、前記正常時処理プログラムと前記フェイルセーフ時処理プログラムとを切り替える切替部を、さらに備えることを特徴とする請求項１乃至３のいずれか一項に記載のマイクロコンピュータ。
【請求項５】
正常時処理プログラムが使用するデータを保持するメモリを、さらに備え、
前記フェイルセーフ用データ退避エリアは、前記メモリ及び前記フェイルセーフ用データテンポラリーエリアと異なるハードウェアで構成されていることを特徴とする請求項１乃至４のいずれか一項に記載のマイクロコンピュータ。
【請求項６】
前記フェイルセーフ用データテンポラリーエリアは、前記メモリと異なるハードウェアで構成されていることを特徴とする請求項５記載のマイクロコンピュータ。
【請求項７】
前記フェイルセーフ用データ退避エリアは、前記正常時処理プログラムからの書き込みを禁止していることを特徴とする請求項１乃至６のいずれか一項に記載のマイクロコンピュータ。
【請求項８】
前記正常時処理プログラムエリアと前記フェイルセーフ時処理プログラムエリアとは異なるハードウェアで構成されていることを特徴とする請求項１乃至７のいずれか一項に記載のマイクロコンピュータ。
【請求項９】
前記フェイルセーフ用データテンポラリーエリアは、前記正常時処理プログラムによってデータが書き込まれることを特徴とする請求項１乃至８のいずれか一項に記載のマイクロコンピュータ。
【請求項１０】
前記正常時処理プログラムエリアと前記フェイルセーフ時処理プログラムエリアとは、異なるＲＯＭ（Read Only Memory）で構成され、
前記フェイルセーフ用データテンポラリーエリアと、前記フェイルセーフ用データ退避エリアとは、異なるＲＡＭ（Random Access Memory）で構成されていることを特徴とする請求項１乃至９のいずれか一項に記載のマイクロコンピュータ。
【請求項１１】
ウォッチドッグタイマを用いて、システムの修復を行うフェイルセーフ対策方法であって、
フェイルセーフ時処理プログラムを正常時処理プログラムとは異なるハードウェアで構成されたメモリに格納し、
フェイルセーフ時に使用するフェイルセーフ用データを一時的にフェイルセーフ用データテンポラリーエリアへ格納し、
前記フェイルセーフ用データテンポラリーエリアに格納したフェイルセーフ用データを、前記ウォッチドッグタイマの動作に応じて、前記フェイルセーフ用データテンポラリーエリアとは異なるハードウェアで構成されたフェイルセーフ用データ退避エリアへ格納するフェイルセーフ対策方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウォッチドッグタイマを用いてフェイルセーフ対策を行うマイクロコンピュータ及びその対策方法に関する。
【背景技術】
【０００２】
近年、マイクロコンピュータによって実現するシステムが、例えば車載用など、様々な装置などに搭載されている。このような場合マイクロコンピュータに不具合が生じることによって暴走すると、システムに致命的なエラーを引き起し、これにより重大な事故につながる場合がある。その時最低限の機能で、暴走したマイクロコンピュータのシステムを正常に復帰させることが望まれている。
【０００３】
システム設計などにおいて、故障や操作ミス、設計上の不具合などの障害が発生することをあらかじめ想定し、起きた際の被害を最小限にとどめるような工夫をしておくという設計思想がある。この設計思想はフェイルセーフと呼ばれている。フェイルルセーフは、部品やシステムなどの故障が確実に安全側のものとなること、あるいは少なくともほぼ確実に安全側のものとなる(すなわち、危険側の故障の可能性が極めて低い)ことをいう。
【０００４】
例えば、マイクロコンピュータにおいてプログラムを実行させる場合、外部からのノイズ等により、想定外の信号が印加されることがある。このような異常が発生すると、プログラムは正常に動作しないことがある。例えば、図５は、異常が発生するメカニズムの一例を示すフローチャートである。変数Ｘへ値を設定し（Ｓ９１）、所定の条件に該当する場合（Ｓ９２でＹｅｓ）、処理Ａ（Ｓ９３）、処理Ｂ（Ｓ９４）を実施し、所定の条件に該当しない場合（Ｓ９２でＮｏ）、処理Ｃ（Ｓ９５）、処理Ｄ（Ｓ９６）を実施する工程を想定する。
【０００５】
ここで、プログラム処理の実行中、例えば、ステップＳ９１を処理中にマイクロコンピュータ外部からノイズ等の想定外の信号が印加され、変数Ｘが想定外の値に設定される異常が発生したとする。その結果、ステップＳ９２の判断結果が正常処理時とは異なってくる場合がある。例えば、処理Ａ（Ｓ９３）、処理Ｂ（Ｓ９４）の代わりに、処理Ｃ（Ｓ９５）、処理Ｄ（Ｓ９６）が実行される事態が発生する。
【０００６】
また、変数Ｘがメモリのアドレスを示す場合や、変数Ｘが次に実行するプログラムのアドレスを示す場合などでは、メモリの書き込み先を誤ったり、実行するプログラムが正常時とは異なってしまう事態が生じることがある。このようにして、プログラムの誤動作やプログラムの暴走が生じる。
【０００７】
このような異常状態が発生した場合、早期に検出し、修復処理が実行されることが望まれる。例えば、異常状態の発生を検出する一つの手法として、ウォッチドッグタイマが用いられている。ウォッチドッグタイマは、指定された時間が経過すると，割り込み機能を使ってプログラムに通知する監視用のタイマーである。ある一定時間毎に、相互で何らかの通信を取り合うように作られたものであり、この通信が途切れた時点で装置が故障したりハングアップ等の不正動作が発生したことを検出する。例えば、ウォッチドッグタイマは、システム上で動作しているそれぞれのアプリケーションに定期的に信号を送らせている。一定周期を経過してウォッチドッグタイマに信号を送らなかったアプリケーションがあれば、そのアプリケーションがハングアップなどの異常状態に陥っていると判断し、ＣＰＵ（Central Processing Unit）に割り込みをかけてアプリケーションを停止したり再起動したりする。
【０００８】
また、特許文献１には、マイクロコンピュータの外部にフェイルセーフ回路を設けることなく、外部システムをフェイルセーフ側に設定することができるマイクロコンピュータが開示されている。
【特許文献１】特開平８−２２１３８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ウォッチドッグタイマなどを用いて異常状態を検出し、システムの修復を行う場合、修復処理に必要なデータが必要であり、修復処理に用いるデータを確実に保持する手段が必要である。例えば、修復処理に用いるデータを通常使用するメモリ内の所定の領域に保存している場合には、修復処理に用いるデータが破壊される事態が生じることがある。このような場合、システム修復に用いるデータを喪失することになり、システムの修復処理を困難にしていた。
【００１０】
しかしながら、特許文献１の技術には、修復処理に用いるデータを確実に保持する手段については触れられていない。異常発生時に早期にシステムを修復するためには、修復処理に用いるデータがシステム内に保持されていることが要請される。また、修復処理に用いるデータは、システムの異常発生前の状態に復帰させるために必要なデータであることが要望される。
このように、異常状態からシステムを修復させるときに、修復処理に用いるデータを確実に保持する必要があった。
【課題を解決するための手段】
【００１１】
本発明に係るマイクロコンピュータの一態様は、ウォッチドッグタイマを用いて、システムの修復を行うマイクロコンピュータであって、正常時処理プログラムを格納する正常時処理プログラムエリアと、フェイルセーフ時処理プログラムを格納するフェイルセーフ時処理プログラムエリアと、フェイルセーフ時に使用するフェイルセーフ用データを一時的に格納するフェイルセーフ用データテンポラリーエリアと、前記フェイルセーフ用データテンポラリーエリアに格納したフェイルセーフ用データを、前記ウォッチドッグタイマの動作に応じて格納するフェイルセーフ用データ退避エリアと、を備える。フェイルセーフ用データテンポラリーエリア１２に保持するフェイルセーフ用データを、ウォッチドッグタイマの動作に応じてフェイルセーフ用データ退避エリア１３へ転送、より具体的には別の場所に退避させて保持する。フェイルセーフ用データテンポラリーエリア１２、フェイルセーフ用データ退避エリア１３を備えることにより、フェイルセーフ処理において、修復するために必要なデータを確実に確保することができる。
【００１２】
また、本発明に係るフェイルセーフ対策方法の一態様は、ウォッチドッグタイマを用いて、システムの修復を行うフェイルセーフ対策方法であって、フェイルセーフ時処理プログラムを正常時処理プログラムとは異なるハードウェアで構成されたメモリに格納し、フェイルセーフ時に使用するフェイルセーフ用データを一時的にフェイルセーフ用データテンポラリーエリアへ格納し、前記フェイルセーフ用データテンポラリーエリアに格納したフェイルセーフ用データを、前記ウォッチドッグタイマの動作に応じて、前記フェイルセーフ用データテンポラリーエリアとは異なるハードウェアで構成されたフェイルセーフ用データ退避エリアへ格納する。
【発明の効果】
【００１３】
本発明によれば、システムの修復に用いるデータを確実に保持することができる。これにより、システムに異常が発生した場合に、修復処理を確実に実施することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００１５】
各実施形態では、ウォッチドッグタイマを用いるシステムを前提とし、異常状態を検出した場合、修復処理に用いるデータを確実に保持しているフェイルセーフ対策装置及び方法の一態様について説明する。
【００１６】
（実施形態１）
図１は、本発明の実施の形態のフェイルセーフ対策回路を搭載したマイクロコンピュータの構成例を示すブロック図である。図１は、フェイルセーフ対策回路に関連する構成要素を表したブロック図である。マイクロコンピュータに搭載される構成要素のうち実施形態の説明に関連しない構成要素については省略している。マイクロコンピュータは、フェイルセーフ対策回路１０、ウォッチドッグ２０、正常時処理プログラムエリア３１、ＣＰＵ３２、メモリ３３及び、内部バス３４を備える。
【００１７】
フェイルセーフ対策回路１０は、異常状態が検出されたときに、修復処理を行うフェイルセーフ処理を実施する。ウォッチドッグタイマ（以下、適宜「ＷＤＴ」と記す）２０は、異常状態を検出するタイマー機能を有する装置であり、ここでは異常状態を検出する一つの手段として用いている。
【００１８】
正常時処理プログラムエリア３１は、正常時に実施する処理プログラム（アプリケーションプログラム）を記憶するメモリであり、読み出し専用の記憶媒体、例えばＲＯＭ（Read Only Memory）を用いる。ＣＰＵ３２は、メモリに記憶されたプログラムを読み出し、実行する。また、マイクロコンピュータ全体を制御する。メモリ３３は、ＣＰＵ３２が処理（例えば、プログラムの実行）を行うときに用いる。例えば、ＲＡＭ（Random Access Area）を用いる。
【００１９】
フェイルセーフ対策回路１０は、フェイルセーフ時処理プログラムエリア１１、フェイルセーフ用データテンポラリーエリア１２、フェイルセーフ用データ退避エリア１３、転送部１４、及びバッファ１５を備える。
【００２０】
フェイルセーフ時処理プログラムエリア１１は、フェイルセーフ処理において実施する処理プログラムを記憶するメモリであり、読み出し専用の記憶媒体、例えばＲＯＭを用いる。
【００２１】
フェイルセーフ用データテンポラリーエリア１２は、フェイルセーフ処理において用いるデータを一時的に保持するメモリである。例えば、ＲＡＭが用いられる。フェイルセーフ用データテンポラリーエリア１２は、正常時処理プログラムエリア３１のプログラムによって、フェイルセーフ用データとしてフェイルセーフ時に用いられるデータが書き込まれる。正常時処理プログラムエリア３１に格納するプログラムは、マイクロコンピュータの利用者によって作成されるものである。従って、フェイルセーフ用データテンポラリーエリア１２に格納されるデータは利用者に依存するものとなる。
【００２２】
フェイルセーフ用データ退避エリア１３は、フェイルセーフ用データテンポラリーエリア１２に格納されたデータが、所定のタイミングで転送されるメモリである。フェイルセーフ用データ退避エリア１３は、データ転送時を除いて、読み出し専用のメモリとし、異常状態発生後、書き込み禁止となるよう制御される。
【００２３】
転送部１４は、フェイルセーフ用データテンポラリーエリア１２からフェイルセーフ用データ退避エリア１３へのデータ転送を制御する。データ転送は、ＷＤＴ２０からクリア・リセット信号が入力されたときに実施される。図１では、転送部１４は、ＡＮＤ回路によって実現している。
【００２４】
フェイルセーフ対策回路１０において、フェイルセーフ時処理プログラムエリア１１は、正常時処理プログラムエリア３１とは異なるハードウェアとして構成される。また、フェイルセーフ用データテンポラリーエリア１２は、メモリ３３と異なるハードウェアとして構成される。さらに、フェイルセーフ用データ退避エリア１３は、メモリ３３及びフェイルセーフ用データテンポラリーエリア１２とは異なるハードウェアから構成される。このように、フェイルセーフ用のプログラムまたはデータを、正常時処理プログラムを記憶するエリア、あるいは正常時処理で用いるメモリとハードウェアとして別個に設置することにより、異常状態発生時に想定外の処理が実施された場合に、メモリに記憶しているデータを破壊することを確実に防止することができる。
【００２５】
ＷＤＴ２０は、指定された時間が経過すると，割り込み機能を使ってプログラムに通知する監視用のタイマーである。装置などが正常に稼働しているかどうかを常時監視するタイマー機能である。ここでは、正常時処理プログラムエリア３１に記憶するアプリケーションプログラムが正常に実行されているかを監視する。ＷＤＴ２０は、タイマレジスタ２１、クリア・リセット制御部２２、カウンタ２３、及びクロック入力制御部２４を備える。
【００２６】
タイマレジスタ２１は、所定の時間が設定されるレジスタである。タイマレジスタ２１は、カウンタ２３がクリア・リセットされるまでの最大値を設定する。従って、一般には、タイマレジスタ２１は、正常時に処理される処理プログラムの処理時間の最大値を設定する。また、正常時処理プログラムエリア３１に格納する正常時処理プログラムは、タイマレジスタ２１に設定した時間内に処理を終了させるようにプログラムを設計しておく。以下の説明では、タイマレジスタ２１に１秒が設定される場合を一例として説明する。
【００２７】
クリア・リセット制御部２２は、処理プログラムからの指示を受けて、クリア・リセット信号を出力する。クリア・リセット制御部２２は、正常動作時には、処理プログラムからの指示により、タイマレジスタ２１に設定された時間より小さい時間間隔でクリア・リセット信号を出力する。ここでは、クリア・リセット信号が出力されるとは、例えば、クリア・リセット信号がロウレベルからハイレベルに変化する（アクティブになる）ことを意味する。クリア・リセット信号は、カウンタ２３と転送部１４に出力される。
【００２８】
カウンタ２３は、クロック入力制御部２４から発信されるクロックに基づいて、カウントする。また、カウンタ２３は、クリア・リセット制御部２２からクリア・リセット信号を入力したときにリセットする。カウンタ２３は、正常時処理プログラムエリア３１とフェイルセーフ時処理プログラムエリア１１とへオーバーフロー信号を出力している。ここでは、オーバーフロー信号は、正常時はロウレベルとし（アクティブでない状態）、異常発生時には、ロウレベルからハイレベルに変化する（アクティブになる）ことを前提とする。カウンタ２３は、カウント結果がタイマレジスタ２１に設定された値を超えたことを検出すると、オーバーフロー信号をハイレベルにする。
クロック入力制御部２４は、カウンタ２３へクロックを出力する回路である。
【００２９】
このように、フェイルセーフ対策回路１０は、正常時ＷＤＴ２０のクリア・リセット制御部２２から出力されるクリア・リセット信号に同期し、クリア・リセット信号がハイレベルになったときに、フェイルセーフ用データテンポラリーエリア１２から、フェイルセーフ用データ退避エリア１３にフェイルセーフ用データを転送する。また、フェイルセーフ用データ退避エリア１３は、ＷＤＴ２０のカウンタ２３のクリア・リセット信号に応じて、データが更新される。
【００３０】
さらに、正常時処理プログラムエリア３１と、フェイルセーフ時処理プログラムエリア１１とは排他的に活性化される。具体的には、正常時処理プログラムエリア３１と、フェイルセーフ時処理プログラムエリア１１とは、オーバーフロー信号の値に応じて活性化される。オーバーフロー信号がロウレベルのときには正常時処理プログラムエリア３１が活性化され、ハイレベルになるとフェイルセーフ時処理プログラムエリア１１が活性化される。このとき、活性化されるプログラムエリアを切り替えるとき、バッファ１５によって、フェイルセーフ時処理プログラムエリア１１が活性化されるタイミングが調整され、確実に二つのプログラムエリアが排他的に活性化されるようにしている。
【００３１】
続いて、実施形態１のフェイルセーフ対策回路１０の動作を説明する。図２は、データの流れを示したタイムチャートである。図３は、フェイルセーフ対策回路の動作例を示すフローチャートである。図２中、Ｔ１からＴ５は、正常時においてクリア・リセット制御部２２からクリア・リセット信号が出力される（アクティブになる）タイミングを示す。また、ＡＢＮは、異常状態が発生したタイミング、ＯＦＳは、オーバーフロー信号が出力されるタイミングを示す。また、タイマレジスタ２１には、１秒が設定されていることを前提として説明する。従って、Ｔ１−Ｔ２、Ｔ２−Ｔ３、Ｔ３−Ｔ４、及びＴ４−Ｔ５の時間間隔は１秒以内になるように、処理プログラムが設計されており、処理プログラムがクリア・リセット制御部２２へクリア・リセット信号の出力を指示することを前提とする。
【００３２】
図２中、実線の〇で囲んだ値は、フェイルセーフ用データテンポラリーエリア１２が保持する値であり、点線の○で囲んだ値は、フェイルセーフ用データ退避エリア１３が保持する値とする。また、二段に示した実線の○のうち、上段は、クリア・リセット信号が出力されるまでの期間にフェイルセーフ用データテンポラリーエリア１２に書き込まれたデータを示し、下段は、クリア・リセット信号が出力された時点で、フェイルセーフ用データテンポラリーエリア１２が最終的に保持しているデータを示す。図２では、クリア・リセット信号が出力されるまでの間に１回のデータ更新があった場合を示しているが、複数回データが更新された場合、リセット・クリア信号が出力されたタイミングでフェイルセーフ用データテンポラリーエリア１２が保持していたデータが、フェイルセーフ用データ退避エリア１３へ転送されることになる。また、フェイルセーフ用データ退避エリア１３は、クリア・リセット信号が出力されたタイミングで転送されたデータを、次にデータが転送されるまで保持する。
【００３３】
まず、正常時の動作を説明する。フェイルセーフ用データテンポラリーエリア１２は、処理プログラムによってデータが更新される（Ｓ１１）。図２、図３では、データ更新の回数を１回として示しているが、更新回数は、２回以上であってもよく、処理プログラムに依存する。クリア・リセット制御部２２は、処理プログラムからの指示に基づいて、クリア・リセット信号を出力する。クリア・リセット信号は、カウンタ２３と転送部１４へ出力される。カウンタ２３は、クリア・リセット信号に応じてカウンタをリセットする。また、転送部１４は、クリア・リセット信号が入力されたタイミングで（Ｓ１２）、フェイルセーフ用データテンポラリーエリア１２が保持するデータをフェイルセーフ用データ退避エリア１３へ転送する（Ｓ１３）。図２では、Ｔ１からＴ３のタイミングでクリア・リセット信号が出力されていることを示している。正常時においては、図３のステップＳ１１からＳ１３が繰り返されることになる。
【００３４】
ここで、データ転送時の動作を具体的に説明する。例えば、Ｔ１−Ｔ２間において、処理プログラムは、フェイルセーフ用データテンポラリーエリア１２にデータＡを書き込んだとする。Ｔ２において、クリア・リセット信号が出力されると、転送部１４は、この信号に応じて、フェイルセーフ用データテンポラリーエリア１２が保持するデータＡをフェイルセーフ用データ退避エリア１３に転送する。また、Ｔ１−Ｔ２間で何度かデータが書き換えられた場合には、クリア・リセット信号が出力されたタイミングでフェイルセーフ用データテンポラリーエリア１２が保持する値を転送する。Ｔ２、Ｔ３のタイミングにおいても、クリア・リセット信号の出力に応じて、フェイルセーフ用データテンポラリーエリア１２からフェイルセーフ用データ退避エリア１３へデータ転送が実施される。
【００３５】
次に、異常発生時の動作を説明する。ＡＢＮにおいて異常が発生し、Ｔ４において、処理プログラムがクリア・リセット信号の出力指示が実施されなかったとする。例えば、図５のフローチャートにおいて、変数Ｘの値がノイズにより、正常時処理の処理Ａ、処理Ｂを実行すると、１秒以内で処理が終了するところ、処理Ｃ、処理Ｄが実行されたために、１秒より長く時間がかかった場合などである。この場合、カウンタ２３は、クロック入力制御部２４からのクロック入力に応じてカウントを継続し、ＯＦＳにおいてタイマレジスタ２１に設定した値を超えたことを検出する。このとき、カウンタ２３は、オーバーフロー信号をハイレベルする。オーバーフロー信号がハイレベルになると（Ｓ２１）、ＣＰＵ３２は、処理プログラムから、フェイルセーフ時処理プログラムに排他的に切り替えて処理を実行する（Ｓ２２）。このとき、フェイルセーフ用データ退避エリア１３は、書き込み禁止の処理がとられ、データが保護される。フェイルセーフ時処理プログラムは、フェイルセーフ用データ退避エリア１３に保存したデータを用いてシステムの修復処理を実施する（Ｓ２３）。マイクロコンピュータは、修復処理終了後、正常時処理に戻ることになる（Ｓ２４）。
【００３６】
異常状態発生時には、オーバーフロー信号がハイレベルになることに応じて、正常時処理プログラムエリア３１が非活性化し、内部バス３４から切り離される。そして、フェイルセーフ時処理プログラムエリア１１が活性化することによって、フェイルセーフ時処理プログラムが実行され、暴走の影響を受けなくすることができる。更に同時にフェイルセーフ用データ退避エリア１３が書き込み禁止になる構成により、暴走の直前のデータの内容が保持される。
【００３７】
このように、本実施形態では、正常動作時にＷＤＴ２０のカウンタクリアのタイミング、すなわち、クリア・リセット制御部２２からクリア・リセット信号が出力されるタイミングにより、フェイルセーフ用データをフェイルセーフ用データテンポラリーエリア１２からフェイルセーフ用データ退避エリア１３に転送させるフェイルセーフ対策回路１０を動作させる。これにより、フェイルセーフ用データ退避エリア１３に正常なデータを保持することが可能となる。さらに、フェイルセーフ用データ退避エリア１３は、ハードウェアとしても他のメモリとは異なる構成とし、かつ、データ転送時を除いて読み出し専用として用いることにより、破壊される可能性はなくなる。従って、何らかの原因で、マイクロコンピュータ搭載の処理プログラムの暴走により、フェイルセーフ時処理プログラムエリア１１に記憶するプログラムが暴走した場合、破壊されたくない、フェイルセーフ用データテンポラリーエリア１２のデータを確実に保持するため、フェイルセーフ用データ退避エリア１３にデータ転送を実施する。
【００３８】
具体的には、ＷＤＴ２０のオーバーフロー信号によって、処理プログラムの暴走を検知した場合、正常時処理プログラムエリア３１を内部バス３４から切り離すと同時に、フェイルセーフ時処理プログラムエリア１１を内部バス３４に接続する。これにより、フェイルセーフ時処理プログラムエリア１１内のプログラムとフェイルセーフ用データ退避エリア１３が保持するデータとを、マイクロコンピュータの暴走の影響を回避させ、処理の実行を可能とする。これにより、異常状態が発生した場合の修復処理を確実に実施することができる。
【００３９】
ここで、図４に示すようなシステムの構成例と本実施形態とを比較・検討する。図４は、関連する技術として例示するフェイルセーフ対策回路のブロック図である。図４の回路では、一つのハードウェアのプログラムエリア４０に、正常時処理プログラムエリア４１とフェイルセーフ用プログラムエリア４２とを格納し、メモリ（ＲＡＭ）５０にフェイルセーフ用データエリア５１を備える構成の回路である。
【００４０】
一般的なマイクロコンピュータで、ウォッチドッグ機能を有しているマイクロコンピュータが、暴走した場合、ＷＤＴ２０が暴走を検出し、フェイルセーフ処理を実行しようとする。図４の構成例では、フェイルセーフ用データエリア５１と、一般のメモリ５０を兼用する構成の為、その直前に、暴走によりプログラムカウンタが異常をおこし、正常時処理プログラムエリア４１のプログラムが、保存しておきたいフェイルセーフ用データエリア５１のデータを破壊してしまうことがあった。例えば、図４では暴走により正常時処理プログラムエリア４１のプログラムの処理が異常を起こした場合、フェイルセーフ用データエリア５１は正常時処理プログラムが使用するメモリ５０と兼用している為、正常時処理プログラムの暴走により破壊する可能性があった。
【００４１】
また、プログラムエリア４０の内部には、フェイルセーフ用プログラムエリア４２と、正常時処理プログラムエリア４１とがあるため、ＷＤＴ２０がオーバーフロー信号を発生したときに、プログラムカウンタが異常になっていた場合には、所望のプログラムを実行することが困難であった。
【００４２】
これに対し、本実施形態の構成例では、メモリ３３と、フェイルセーフ用データテンポラリーエリア１２及びフェイルセーフ用データ退避エリア１３とを異なるハードウェアにしたため、フェイルセーフ用データを確実に保持することができる。さらにフェイルセーフ用データ退避エリア１３は、データ転送時を除き読み出し専用にすると共に、フェイルセーフ処理の開始時に書き込み禁止の処理をとるため、より確実にフェイルセーフ用データを保持することができる。
【００４３】
（その他の実施形態）
実施形態１では、フェイルセーフ用データテンポラリーエリア１２とメモリ３３とを異なるハードウェアから構成した。フェイルセーフ用データを保持することに対する確実性は劣るものの、メモリ３３内に、フェイルセーフ用データのテンポラリーエリアを設け、クリア・リセット信号に基づいて、フェイルセーフ用データ退避エリア１３へデータ転送し、フェイルセーフ用データを確保するようにしてもよい。
【００４４】
また、図１では、正常時処理プログラムエリア３１とフェイルセーフ時処理プログラムエリア１１の切り替える機能（切替部）を、オーバーフロー信号によって実現する例を示している。具体的には、正常時処理プログラムエリア３１へは、オーバーフロー信号をそのまま入力し、他方、フェイルセーフ時処理プログラムエリア１１へは、オーバーフロー信号を、バッファ１５を介して反転させて入力する。これにより、正常時処理プログラムエリア３１とフェイルセーフ時処理プログラムエリア１１とを排他的に切り替えるようにしている。しかしながら、この構成に限られることはなく、オーバーフロー信号に基づいて、正常時処理プログラムエリア３１とフェイルセーフ時処理プログラムエリア１１とを排他的に切り替える機能であれば、他の構成であってもよい。同様に、転送部１４もＡＮＤ回路によって実現する例を示したが、クリア・リセット信号に応じて、データ転送を実施する他の構成であってもよい。
【００４５】
以上の説明したように、この発明の一態様によれば、マイクロコンピュータが暴走をした場合でも、フェイルセーフ時処理プログラムエリア１１と、フェイルセーフ用データ退避エリア１３を備える構成することによって、暴走直前のフェイルセーフ用データの破壊を回避できる。さらに、その退避したデータ及びフェイルセーフ時処理プログラムエリアのプログラムを使って、暴走直前に復帰させることが可能である。
【００４６】
具体的には、ＷＤＴを利用し、暴走する前の直前の情報を、フェイルセーフ用データ退避エリア１３に保持し、保持されていたデータを使って、確実にフェイルセーフ処理を行える構成を実現する。また、正常時には、フェイルセーフ対策回路１０は、ＷＤＴ２０からのクリア・リセット信号に応じて、正常時のフェイルセーフ用データをフェイルセーフ用テンポラリーエリアに退避しておくことで、暴走時の直前のデータを確実に確保し、破壊を回避することができる。さらに、上記フェイルセーフ対策回路１０内部に、フェイルセーフ時処理プログラムエリア１１を有することで、暴走時、そのプログラムにより、確実にフェイルセーフ処理を行うことができる。また、フェイルセーフ用データ退避エリア及びフェイルセーフ時処理プログラムエリアを暴走時のみ活性化させることで、確実にフェイルセーフの処理を行うことができる。さらに、ＷＤＴのクリア・リセット信号に応じてフェイルセーフ用データを転送しているため、システムを異常状態発生前の直近データを保持することができる。これにより、異常発生前の最近データを用いることが可能になり、システムを初期状態に戻すことなく、システムを異常状態発生前の状態に回復させることが可能になる。
【００４７】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施の形態のフェイルセーフ対策回路を搭載したマイクロコンピュータの構成例を示すブロック図である。
【図２】データの流れを示したタイムチャートである。
【図３】フェイルセーフ対策回路の動作例を示すフローチャートである。
【図４】関連する技術として例示するフェイルセーフ対策回路のブロック図である。
【図５】異常が発生するメカニズムの一例を示すフローチャートである。
【符号の説明】
【００４９】
１０  フェイルセーフ対策回路
１１  フェイルセーフ時処理プログラムエリア
１２  フェイルセーフ用データテンポラリーエリア
１３  フェイルセーフ用データ退避エリア
１４  転送部
１５  バッファ
２０  ウォッチドッグ
２１  タイマレジスタ
２２  クリア・リセット制御部
２３  カウンタ
２４  クロック入力制御部
３１  正常時処理プログラムエリア
３２  ＣＰＵ
３３  メモリ
３４  内部バス
４０  プログラムエリア
４１  正常時処理プログラムエリア
４２  フェイルセーフ用プログラムエリア
５０  メモリ
５１  フェイルセーフ用データエリア
【図１】
2010128511.tif 000003
【図２】
2010128511.tif 000004
【図３】
2010128511.tif 000005
【図４】
2010128511.tif 000006
【図５】
2010128511.tif 000007