JP6624005B2 - 相互監視システム - Google Patents

相互監視システム Download PDF

Info

Publication number
JP6624005B2
JP6624005B2 JP2016201988A JP2016201988A JP6624005B2 JP 6624005 B2 JP6624005 B2 JP 6624005B2 JP 2016201988 A JP2016201988 A JP 2016201988A JP 2016201988 A JP2016201988 A JP 2016201988A JP 6624005 B2 JP6624005 B2 JP 6624005B2
Authority
JP
Japan
Prior art keywords
program
monitoring
cpu
memory
application program
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.)
Active
Application number
JP2016201988A
Other languages
English (en)
Other versions
JP2018063599A (ja
Inventor
豪 平安名
豪 平安名
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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2016201988A priority Critical patent/JP6624005B2/ja
Publication of JP2018063599A publication Critical patent/JP2018063599A/ja
Application granted granted Critical
Publication of JP6624005B2 publication Critical patent/JP6624005B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、少なくとも2つのCPUが、それぞれ、アプリケーションプログラムを実行する際に正常に実行しているかを相互に監視する相互監視システムに関する。
例えば、特許文献1には、あるプロセッサに異常が発生しても、そこに割り付けられた機能を保証するための自動車用電子制御システムについて開示されている。このシステムでは、プロセッサAが独占使用するメモリAのROMに、プログラムAと、そのプログラムAの機能の一部を実現するRAMプログラムAとを格納しておく。また、プロセッサBが独占使用するメモリBのROMに、プログラムBと、そのプログラムBの機能の一部を実現するRAMプログラムBとを格納しておく。そして、電子制御システムの起動時に、プロセッサAのRAMプログラムAをプロセッサBのRAMに転送して展開するとともに、プロセッサBのRAMプログラムBをプロセッサAのRAMに転送して展開する。プロセッサA、Bの一方に異常が発生したときには、他方のプロセッサがRAMプログラムを実行することにより、異常が発生したプロセッサに割り付けられていた機能を代行する。
特開2014−49013号公報
上述したシステムでは、一方のプロセッサの異常時に、その一方のプロセッサに割り付けられていた機能を、他方の正常なプロセッサが代行することで、制御を継続させることを可能としている。
上述したシステムにおいて、さらにシステムによる制御の安全性を高めることなどを目的として、それぞれに割り付けられた機能が正常に実行されているかを相互に監視することが考えられる。この場合、例えば、プロセッサAのメモリAに、プロセッサBによりプログラムBが正常に実行されているかを監視する監視プログラムAを格納しておき、プロセッサAは、プログラムAに加えて監視プログラムAを実行するように構成する。同様に、プロセッサBのメモリBに、プロセッサAによりプログラムAが正常に実行されているかを監視する監視プログラムBを格納しておき、プロセッサBは、プログラムBに加えて監視プログラムBを実行するように構成する。
しかしながら、相互監視を行うようにシステムを構成した場合に、いずれか一方のプロセッサに異常が発生したとき、特許文献1に記載されたように、他方のプロセッサがRAMプログラムを実行することで、異常が発生したプロセッサに割り付けられていた機能を代行することはできるが、相互監視を行う構成が崩れるため、監視機能が働かなくなってしまうという問題が生じる。この問題に対処するため、仮に、正常なプロセッサにおいて、通常のプログラムとRAMプログラムとに加えて、監視プログラムA,Bを実行させたとしても、監視する側と監視される側が同じプロセッサにあるため、監視のレベルが低下してしまう。
本発明は、上述した点に鑑みてなされたものであり、少なくとも2つのCPUが、アプリケーションプログラムを実行する際に正常に実行しているかを相互に監視する相互監視システムにおいて、一方のCPUに異常が生じた場合に、他方のCPUにてアプリケーションプログラムの実行を代行しながら、相互監視機能も維持することが可能な相互監視システムを提供することを目的とする。
上記目的を達成するために、本発明に係る相互監視システムは、
不揮発性の第1のメモリ(12)を有し、当該第1のメモリに記憶されている第1のアプリケーションプログラムを実行する第1のCPU(10)と、
不揮発性の第2のメモリ(22)を有し、当該第2のメモリに記憶されている第2のアプリケーションプログラムを実行する第2のCPU(20)と、を備え、
第1のメモリには、第2のCPUが第2のアプリケーションプログラムを正常に実行しているかどうかを監視する第1の監視プログラムも記憶され、第1のCPUは、第1の監視プログラムも実行し、
第2のメモリには、第1のCPUが第1のアプリケーションプログラムを正常に実行しているかどうかを監視する第2の監視プログラムも記憶され、第2のCPUは、第2の監視プログラムも実行するものであって、
第1のCPUは、第1のメモリの異常を検出する異常検出機能(S200、S210)と、異常検出機能によって第1のメモリの異常を検出した場合に、第2のCPUへメモリ異常の発生を通知する通知機能(S330)と、を備えており、
第2のメモリには、予め第1のアプリケーションプログラムの代行用プログラムが記憶されており、
第2のCPUは、第1のCPUからメモリ異常発生の通知を受信すると、第2のアプリケーションプログラムに加えて第1のアプリケーションプログラムの代行用プログラムも実行し、その一方で、第2の監視プログラムの実行を停止し、
第1のCPUは、第1のメモリとは異なる第3のメモリ(13、14)も有し、メモリ異常発生の通知後に、第3のメモリに記憶された、第2のアプリケーションプログラムの正常実行を監視するための第3の監視プログラムと、第1のアプリケーションプログラムの代行用プログラムの正常実行を監視するための第4の監視プログラムとを実行するように構成される。
第1のアプリケーションプログラム及び第1の監視プログラムを記憶する第1のメモリに何らかの異常が生じて、第1のアプリケーションプログラム及び/又は第1の監視プログラムを正しく読み出すことができなくなると、第1のCPUは、第1のアプリケーションプログラムによる制御機能及び/又は第1の監視プログラムによる監視機能を正しく実行することができなくなる虞が生じる。しかしながら、第1のCPUによる演算処理機能に支障が生じていなければ、その後も、なんらかの形で、第1のCPUを活用することは可能である。
このような着眼点の下、本発明に係る相互監視システムでは、第1のメモリの異常検出機能、及び異常を検出した場合に第2のCPUに通知する通知機能を第1のCPUに持たせた。そして、第2のCPUは、第1のCPUからメモリ異常発生の通知を受信すると、第2のアプリケーションプログラムに加えて第1のアプリケーションプログラムの代行用プログラムも実行するように構成した。これにより、第1のCPUの第1のメモリに異常が発生した場合であっても、第1のアプリケーションプログラムによる機能が、第2のCPUにて代行して実現される。
その一方で、第1のCPUは、メモリ異常発生の通知後に、第1のメモリとは異なる第3のメモリに記憶された、第2のアプリケーションプログラムの正常実行を監視するための第3の監視プログラムと、第1のアプリケーションプログラムの代行用プログラムの正常実行を監視するための第4の監視プログラムとを実行する。これにより、第2のCPUにおける第2のアプリケーションプログラム及び代行用プログラムの正常実行を第1のCPUにて監視することが可能となり、相互監視機能も維持することができる。
上記括弧内の参照番号は、本発明の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本発明の範囲を制限することを意図したものではない。
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
実施形態に係る相互監視システムの主要な構成を示す構成図である。 起動プログラムによって実行される起動処理を示すフローチャートである。 ROMチェックの処理の詳細を示すフローチャートである。 フェールセーフ処理の詳細を示すフローチャートである。 起動プログラムによりROM起動が実行された後に、所定時間経過ごとに実行されるROMチェック処理を示すフローチャートである。 CPU10から、ROM異常通知もしくはフェールセーフ処理の実行指示通知のいずれかの通知を受信したときに、CPU20において実行される処理を示すフローチャートである。 CPU10においてROM異常が発生したため、CPU10からCPU20へROM異常通知が出力され、それに応じて、CPU20からCPU10へリセット信号が出力されることを示す動作説明図である。 図7に示す動作に引き続いて、CPU20からCPU10へとRAM起動信号が出力されるとともにリセット信号の出力が解除され、CPU10のRAM13には、CPU20のフラッシュメモリ24から転送された異常時監視プログラム1a及び異常時監視プログラム2aが書き込まれて、それらのプログラムが起動されることを示す動作説明図である。 図8に示す動作に引き続いて、起動された異常時監視プログラム1a及び異常時監視プログラム2aにより、CPU20によりアプリケーションプログラム2及び代行用アプリケーションプログラム1aが正常実施されているかを監視することを示す動作説明図である。
以下、本発明に係る相互監視システムの実施形態について、図面に基づいて詳細に説明する。図1は、本実施形態に係る相互監視システムの主要な構成を示す構成図である。
図1に示すように、相互監視システムは、第1のCPUとしてのCPU10と、第2のCPUとしてのCPU20とを備える。CPU10とCPU20とは、いわゆるマルチコアプロセッサとして、1つのパッケージに集積して形成されたものであっても良いし、それぞれ独立したプロセッサとして形成され、外部通信線を介して通信可能に接続されたものであっても良い。
なお、図1には、2個のCPUしか図示していないが、相互監視システムは、3個以上のCPUを備えていても良い。例えば、CPUの個数が3である場合、第1のCPUが第2のCPUを監視し、第2のCPUが第3のCPUを監視し、第3のCPUが第1のCPUを監視するように構成することができる。
本実施形態に係る相互監視システムを構成するCPU10及びCPU20は、例えば、車両に搭載されたエンジン、走行用モータ、ブレーキ、トランスミッション等の車載機器を制御する用途に用いられる。
CPU10及びCPU20は、それぞれ、起動プログラム格納メモリ11、21と、ROM12、22と、RAM13、23と、フラッシュメモリ14、24とを有する。なお、図1には、各CPU10、20の内部に、起動プログラム格納メモリ11、21、ROM12、22、RAM13、23、及び、フラッシュメモリ14、24の各メモリを設けた例を示しているが、各メモリは、各CPU10、20の外部に設けても構わない。
起動プログラム格納メモリ11、21は不揮発性メモリであって、図1に示すように、起動プログラムであるboot1、boot2を格納している。起動プログラムであるboot1、boot2は、電源投入時やリセット後に動作し、通常は、ROM12、22に格納されたプログラムを起動するように構成されている。しかし、相手側のCPU10、20からRAM起動信号が与えられているときには、boot1、boot2は、RAM13、23に格納されたプログラムを起動するように構成されている。
なお、図1には、起動プログラム格納メモリ11、21をROM12、22とは独立して設ける例を示しているが、ROM12、22の一部の記憶領域を、起動プログラム格納メモリ11、21として用いても良い。
ROM12、22は、制御対象となる車載機器を制御するためのアプリケーションプログラム1、アプリケーションプログラム2(図では‘アプリ1’、‘アプリ2’と記載)をそれぞれ格納している。これらのアプリケーションプログラム1及びアプリケーションプログラム2は、それぞれ、車両の運転者による運転操作や、車両の状態、外部環境などに応じて、制御対象となる車載機器を適切に制御するようにプログラムされている。なお、アプリケーションプログラム1及びアプリケーションプログラム2は、演算処理が正しく行われているかを確認するため実質的に同じ内容のプログラムであっても良いし、異なる車載機器を制御するための異なる内容のプログラムであっても良い。
CPU10のROM12には、さらに、CPU20がアプリケーションプログラム2を正常に実行しているかどうかを監視する監視プログラム2(図では‘監視2’と記載、第1の監視プログラムに相当)と、アプリケーションプログラム2の代行用プログラムである代行用アプリケーションプログラム2aとが予め格納されている。同様に、CPU20のROM22には、さらに、CPU10がアプリケーションプログラム1を正常に実行しているかどうかを監視する監視プログラム1(図では‘監視1’と記載、第2の監視プログラムに相当)と、アプリケーションプログラム1の代行用プログラムである代行用アプリケーションプログラム1aとが予め格納されている。
上述したように、CPU10は、ROM12に異常が生じていなければ、boot1により、ROM12に格納されているプログラムであるアプリケーションプログラム1及び監視プログラム2を起動して実行する。同様に、CPU20は、ROM22に異常が生じていなければ、boot2により、ROM22に格納されているプログラムであるアプリケーションプログラム2及び監視プログラム1を起動して実行する。従って、それぞれのCPU10、20にてアプリケーションプログラムが実行されるときには、相手側のCPU10、20にてそのアプリケーションプログラムの正常実行を監視する監視プログラムが実行されることになる。このようにして、CPU10とCPU20との間で、アプリケーションプログラムの正常実行が相互に監視されるようになっている。
監視プログラム1及び監視プログラム2は、例えば、アプリケーションプログラム1及びアプリケーションプログラム2の各プロセスが所定の順序で実行されているか否か、及び/又は、各プロセスの実行時間が所定時間内に収まっているか否かなどに基づき、アプリケーションプログラム1及びアプリケーションプログラム2が正常に実行されているか否かを監視するものである。なお、アプリケーションプログラム1及びアプリケーションプログラム2が正常に実行されているかどうかを監視する手法は、上述した手法に限らず、公知のいかなる手法を適用しても良い。
代行用アプリケーションプログラム2a及び代行用アプリケーションプログラム1aは、それぞれ、ROM12及びROM22に格納されているが、通常は、boot1及びboot2によって起動されず、停止したままである。これらの代行用アプリケーションプログラム2a及び代行用アプリケーションプログラム1aは、いずれかのCPU10、20のROM12、22に異常が発生した場合に、その異常が発生したROM12、22に格納されていたアプリケーションプログラム2又はアプリケーションプログラム1の代行用プログラムとして実行される。
代行用アプリケーションプログラム2a及び代行用アプリケーションプログラム1aは、それぞれ、アプリケーションプログラム2及びアプリケーションプログラム1に比較して、機能が制限されている。これは、上述したように、代行用アプリケーションプログラム2a及び代行用アプリケーションプログラム1aとも、いずれかのCPU10、20のROM12、22に異常が発生したときに実行されるものであり、このような異常事態においては、最低限度の制御機能が得られれば十分であるためである。例えば、アプリケーションプログラム1が車両のエンジンを制御するためのプログラムである場合、代行用アプリケーションプログラム1aは、車両の速度とトルクが所定の値以上に上昇しないようにエンジン出力の制御範囲を制限する。また、アプリケーションプログラム1が車両のトランスミッションを制御するためのプログラムである場合には、代行用アプリケーションプログラム1aは、車両の速度とトルクが所定の値以上に上昇しないようにトランスミッションの変速比の制御範囲を制限する。このような機能制限の下で、代行用アプリケーションプログラム1aによって制御対象となる車載機器を制御することにより、車両を安全に退避走行させることが可能となる。
なお、代行用アプリケーションプログラム1a又は代行用アプリケーションプログラム2aが実行されるときには、車両を確実に退避走行させるために、同時に実行されるアプリケーションプログラム2又はアプリケーションプログラム1の機能も制限することが好ましい。このような機能制限を行うため、例えば、アプリケーションプログラム1及びアプリケーションプログラム2が通常モードと異常モードとを備え、通常モードではなんら機能を制限することなく制御対象の制御を実行するが、いずれかのCPU10、20にてROM異常が発生したときには異常モードとなり、当該異常モードでは所定の機能制限の下で制御を実行するように構成することができる。
RAM13及びRAM23は、それぞれ、CPU10がアプリケーションプログラム1及び監視プログラム2を実行する際及びCPU20がアプリケーションプログラム2や監視プログラム1を実行する際などに、演算処理結果や、入出力データを一時的に記憶するためのものである。さらに、RAM13及びRAM23は、対応するCPU10、20のROM12、22に異常が発生した場合に、CPU10とCPU20のいずれかのフラッシュメモリ14、24から転送される異常時監視プログラム1a、異常時監視プログラム2aが書き込まれて記憶する機能も有する。そして、異常時監視プログラム1a、異常時監視プログラム2aが書き込まれたRAM13、23を保有するCPU10、20は、相手側のCPU10、20からリセット信号及びRAM起動信号を与えられ、RAM13、23に記憶した異常時監視プログラム1a、異常時監視プログラム2aを起動して実行する。
異常時監視プログラム1a及び異常時監視プログラム2aは、記憶内容を電気的に一括消去したり、再書き込みしたりすることが可能な不揮発性のフラッシュメモリ14、24の両方に予め格納されている。ただし、異常時監視プログラム1a及び異常時監視プログラム2aをフラッシュメモリ14、24のいずれか一方のみに格納しておき、どちらのCPU10、20のRAM13、23に転送する場合にも、同じフラッシュメモリを使用するようにしても良い。
異常時監視プログラム1a及び異常時監視プログラム2aは、代行用アプリケーションプログラム1a及び代行用アプリケーションプログラム2aが正常に実行されているか否か、さらには機能制限されたアプリケーションプログラム1及びアプリケーションプログラム2が正常に実行されているか否かを監視するようにプログラムされている。このため、異常時監視プログラム1a及び異常時監視プログラム2aは、それぞれ、監視プログラム1及び監視プログラム2に比較して、監視機能を削減することが可能であり、プログラム容量も削減されている。
なお、図1には、フラッシュメモリ14、24に、ともに異常時監視プログラム1a及び異常時監視プログラム2aを格納した例を示している。しかし、ROM異常が発生した場合にも、アプリケーションプログラム1、アプリケーションプログラム2が機能制限を行わない場合には、フラッシュメモリ14、24の一方に、監視プログラム1、異常時監視プログラム2aを格納しておき、他方に、異常時監視プログラム1a、監視プログラム2を格納しておくようにしても良い。そして、CPU10が、機能制限を行わないアプリケーションプログラム1と代行用アプリケーションプログラム2aとを実行するときには、監視プログラム1、異常時監視プログラム2aを格納しているフラッシュメモリから、CPU20のRAM23にそれらのプログラムを転送して書き込むようにすれば良い。また、CPU20が、機能制限を行わないアプリケーションプログラム2と代行用アプリケーションプログラム1aとを実行するときには、監視プログラム2、異常時監視プログラム1aを格納しているフラッシュメモリから、CPU10のRAM13にそれらのプログラムを転送して書き込むようにすれば良い。
上述したように、本実施形態に係る相互監視システムでは、CPU10のROM12にアプリケーションプログラム2の代行用アプリケーションプログラム2aが予め格納され、CPU20のROM22にアプリケーションプログラム1の代行用アプリケーションプログラム1aが予め格納されている。また、詳しくは後述するが、CPU10、20は、それぞれ、ROM12、22の異常を検出する異常検出機能と、その異常検出機能によってROM12、22の異常を検出した場合に、相手側のCPU10、20へROM異常の発生を通知する通知機能と、を備えている。
例えば、CPU10がROM12の異常を検出すると、CPU10はCPU20へROM異常の発生を通知する。CPU20は、CPU10からROM異常の発生通知を受信すると、アプリケーションプログラム2に加えて代行用アプリケーションプログラム1aも実行する。これにより、CPU10のROM12に異常が発生した場合であっても、アプリケーションプログラム1による機能が、CPU20にて代行して実現される。なお、この際、CPU10においてアプリケーションプログラム1は実行されないので、CPU20は監視1の実行を停止する。
また、CPU20において、ROM22の異常が発生した場合には、上述したケースとは逆に、CPU10が、アプリケーションプログラム1に加えて代行用アプリケーションプログラム2aも実行する。これにより、CPU20のROM22に異常が発生した場合であっても、アプリケーションプログラム2による機能が、CPU1にて代行して実現される。
さらに、本実施形態に係る相互監視システムでは、上述したように、一方のCPU10、20が、自身のアプリケーションプログラムに加えて、本来、他方のCPU10、20にて実行されるべきアプリケーションプログラムの代行用アプリケーションプログラムを実行する場合には、他方のCPU10、20が、その他方のCPU10、20のRAM13、23に記憶された異常時監視プログラム1a及び異常時監視プログラム2aを実行する。これにより、一方のCPU10、20におけるアプリケーションプログラム及び代行用アプリケーションプログラムの正常実行を他方のCPU10、20にて監視することが可能となり、相互監視機能も維持することができる。
次に、相互監視システムを構成する各CPU10、20において実行される具体的な処理の一例について図2〜図6のフローチャートを参照して説明する。なお、図2〜図5のフローチャートに示す処理は、CPU10、20のどちらにおいても実行されるものであるが、説明の便宜上、CPU10において実行される場合について説明する。また、図6のフローチャートに示す処理も、CPU10、20のどちらにおいても実行されるものであるが、説明の便宜上、CPU20において実行される場合について説明する。
図2のフローチャートは、CPU10における起動プログラムboot1によって実行される起動処理を示している。起動処理が開始されると、まずステップS100において、CPU20からRAM起動信号を受信しているか否かを判定する。RAM起動信号に関しては、後に図6のフローチャートに基づき詳しく説明する。このステップS100において、RAM起動信号を受信していないと判定すると、ステップS110の処理に進む。
ステップS110では、起動時のROMチェックを行う。このROMチェックの処理の詳細を、図3のフローチャートに基づいて説明する。
ROMチェック処理が開始されると、まず、ステップS200において、ROM12から読み出したプログラムの誤り検出演算処理を実行する。この処理には、例えば、誤り訂正符号(Error-Correcting Code)、巡回冗長検査(Cyclic Redundancy Check)、パリティ検査(Parity Check)、チェックサム(Check Sum)などの誤り検出訂正のための任意の手法を適用することができる。
続くステップS210では、ステップS200にて誤り検出演算処理を行った結果が、異常なしを示しているか、異常ありを示しているかを判定する。異常なしを示している場合には、そのままROMチェック処理を終了する。一方、異常ありを示している場合には、ROM12に異常が発生している可能性があるため、ステップS220に進み、フェールセーフ処理を実行する。
図4のフローチャートは、フェールセーフ処理の詳細を示している。このフェールセーフ処理では、最初にステップS300において、アプリケーションプログラム1及び監視プログラム2に関するフェールセーフ処理を実行する。ROM異常が発生している場合には、アプリケーションプログラム1及び監視プログラム2を正しく読み出すことができないため、それらのプログラムの実行により予期しない事態の発生を防止するためである。フェールセーフ処理としては、例えば、アプリケーションプログラム1に関しては、アプリケーションプログラム1の制御対象へ安全側で停止するよう指示を出したり、車両を走行させる側へ制御対象を駆動することを制限したりする。また、監視プログラム2に関しては、CPU20に対して、監視プログラム2による監視が実行できないことを伝えたり、監視プログラム2の監視対象であるアプリケーションプログラム2の制御対象へ停止指示を出したりする。
続くステップS310では、異常時監視プログラム1a、異常時監視プログラム2aを転送して書き込む前に、RAM13に異常が生じていないかどうかのチェックを実施する。例えば、RAM13に所定のデータを書き込み、その書き込んだデータを読み出したときに、書き込んだデータと同一のデータが読み出せたかどうかにより、RAM13の異常をチェックする。ステップS320では、ステップS310におけるRAMチェックの結果に基づき、RAM13に異常が生じているか否かを判定する。
ステップS320の判定処理において、RAM13に異常が生じていないと判定した場合には、ステップS330に進んで、図7に示すように、CPU20に対してROM異常が発生した旨を通知し、その後、フェールセーフ処理を終了する。一方、RAM13に異常が生じていると判定した場合には、ステップS340に進んで、CPU20に対してフェールセーフ処理の実行指示を通知し、その後、フェールセーフ処理を終了する。ただし、RAM13に異常が生じていると判定された場合であっても、CPU10のフラッシュメモリ14に異常時監視プログラム1a、異常時監視プログラム2aが格納されている場合には、CPU10が、CPU20にROM異常が発生した旨を通知するとともに、フラッシュメモリ14から、直接、異常時監視プログラム1a及び異常時監視プログラム2aを読み出して実行することとしても良い。
以上のようにして、ROMチェック処理が終了すると、処理は、図2のフローチャートのステップS120に進む。ステップS120では、ステップS110のROMチェックにおいてROM異常が検出されたか否かを判定する。ROM異常が検出されたと判定した場合には、そのまま起動プログラムboot1を終了する。一方、ROM異常が検出されなかったと判定した場合には、ステップS130に進んで、通常どおり、ROM12に格納されたアプリケーションプログラム1と監視プログラム2とを起動し、その後、起動プログラムboot1を終了する。
同様の起動プログラムboot2は、CPU20においても実行され、CPU20のROM22に異常が生じていなければ、ROM22に格納されたアプリケーションプログラム2と監視プログラム1とが起動される。この結果、相互監視システムは、図1に示すように、CPU10とCPU20との間で、監視プログラム1及び監視プログラム2を用いて、アプリケーションプログラム1及びアプリケーションプログラム2の正常実行が相互に監視される。
一方、ステップS100において、CPU20からRAM起動信号を受信していると判定した場合、CPU10はリプログラミングモード(リプロモード)となり、ステップS140の処理に進む。ステップS140では、図8に示すように、CPU20から転送される異常時監視プログラム1a、異常時監視プログラム2aをRAM13に書き込む。なお、リプロモードが実行されるときには、CPU10において、上述したフェールセーフ処理が実行され、かつRAM13に異常が生じていないとの判定がなされているため、異常時監視プログラム1a、異常時監視プログラム2aを正しくRAM13に書き込んで記憶させることができる。
続くステップS150では、RAM13に記憶された異常時監視プログラム1aと異常時監視プログラム2aとを起動する。このRAM起動が完了すると、ステップS160において、異常時監視プログラム1aと異常時監視プログラム2aとの起動が完了した旨をCPU20に通知する。
図5のフローチャートは、起動プログラムboot1によりROM起動が実行された後に、所定時間経過ごとに実行されるROMチェック処理を示している。このように、ROM12に異常が発生していないかどうかは、起動時のみではなく、起動後も定期的に実行される。なお、定期処理におけるROMチェックの内容は、起動時のROMチェック、すなわち、図2のフローチャートのステップS110〜ステップS130と実質的に同様であるため、これ以上の説明は省略する。
図6のフローチャートは、CPU10から、ROM異常通知もしくはフェールセーフ処理の実行指示通知のいずれかの通知を受信したときに、CPU20において実行される処理を示している。
まず、ステップS500では、受信した通知の種類が、ROM異常通知か、フェールセーフ処理の実行指示通知かを判別する。ROM異常通知であると判別した場合、ステップS510に進み、代行用アプリケーションプログラム1aの実行を開始する。この際、同時に、アプリケーションプログラム2の機能を制限するようにしても良い。
続くステップS520では、図7に示すように、CPU20からCPU10へとリセット信号を出力する。そして、図8に示すように、ステップS530においてCPU10へRAM起動信号の出力を開始するとともに、ステップS540においてCPU10に対するリセット信号の出力を解除する。さらに、CPU20は、ステップS550において、CPU10へ異常時監視プログラム1a、異常時監視プログラム2aを自身のフラッシュメモリ24から読み出して転送する。
これにより、CPU10では、リセット信号の出力が解除されて、起動プログラムboot1が作動するときに、RAM起動信号を受信しているため、リプロモードとなる。この場合、図2のフローチャートを用いて説明したように、CPU10は、CPU20から転送された異常時監視プログラム1a、異常時監視プログラム2aを受信して、RAM13に書き込む。そして、RAM13に記憶された異常時監視プログラム1a、異常時監視プログラム2aを起動する(図8参照)。その起動が完了すると、CPU10は、CPU20へ起動完了通知を出力する。
なお、CPU10のフラッシュメモリ14に異常時監視プログラム1a、異常時監視プログラム2aが格納されている場合には、CPU10は、自身のフラッシュメモリ14から異常時監視プログラム1a、異常時監視プログラム2aを読み出して、RAM13に書き込むようにしても良い。
図6のフローチャートのステップS560では、このCPU10からの起動完了通知を受信したか否かにより、CPU10は監視機能を起動したか否かを判定する。未だ監視機能が起動していないと判定すると、起動するまで待機し、監視機能が起動したと判定すると、ステップS570の処理に進む。
CPU10において、異常時監視プログラム1a及び異常時監視プログラム2aが起動されると、図9に示すように、CPU20において実行されるアプリケーションプログラム2及び代行用アプリケーションプログラム1aが正常実行されているかどうかは、CPU10において監視されている。このため、ステップS570では、CPU20は監視プログラム1の実行を停止させ、図6のフローチャートに示す処理を終了する。
一方、ステップS500の判定処理において、受信した通知の種類がフェールセーフ処理の実行指示通知であると判別した場合には、ステップS580の処理に進む。ステップS580では、図4のフローチャートのステップS300の処理と同様に、CPU20は、アプリケーションプログラム2及び監視プログラム1に関するフェールセーフ処理を実行する。
以上、本発明の好ましい実施形態について説明したが、本発明は、上述した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
例えば、上述した実施形態では、異常時監視プログラム1a及び異常時監視プログラム2aをRAM13、23に記憶させて実行する例について説明した。このように、一旦、異常時監視プログラム1a及び異常時監視プログラム2aをRAM13、23に記憶させて実行することにより、異常時監視プログラム1a及び異常時監視プログラム2aの読み出し速度を相対的に早く行うことができる。ただし、異常時監視プログラム1a及び異常時監視プログラム2aは、RAM13、23に記憶させずに、直接、フラッシュメモリ14、24から読み出して実行するようにしても良い。この場合、ROM12、22に加えてRAM13、23に何らかの異常が生じていても、異常時監視プログラム1a及び異常時監視プログラム2aを起動することが可能となる。
10、20 CPU
11、21 起動プログラム格納メモリ
12、22 ROM
13、23 RAM
14、24 フラッシュメモリ

Claims (10)

  1. 不揮発性の第1のメモリ(12)を有し、当該第1のメモリに記憶されている第1のアプリケーションプログラムを実行する第1のCPU(10)と、
    不揮発性の第2のメモリ(22)を有し、当該第2のメモリに記憶されている第2のアプリケーションプログラムを実行する第2のCPU(20)と、を備え、
    前記第1のメモリには、前記第2のCPUが前記第2のアプリケーションプログラムを正常に実行しているかどうかを監視する第1の監視プログラムも記憶され、前記第1のCPUは、前記第1の監視プログラムも実行し、
    前記第2のメモリには、前記第1のCPUが前記第1のアプリケーションプログラムを正常に実行しているかどうかを監視する第2の監視プログラムも記憶され、前記第2のCPUは、前記第2の監視プログラムも実行する相互監視システムであって、
    前記第1のCPUは、前記第1のメモリの異常を検出する異常検出機能(S200、S210)と、前記異常検出機能によって前記第1のメモリの異常を検出した場合に、前記第2のCPUへメモリ異常の発生を通知する通知機能(S330)と、を備えており、
    前記第2のメモリには、予め前記第1のアプリケーションプログラムの代行用プログラムが記憶されており、
    前記第2のCPUは、前記第1のCPUからメモリ異常発生の通知を受信すると、前記第2のアプリケーションプログラムに加えて前記第1のアプリケーションプログラムの代行用プログラムも実行し、その一方で、前記第2の監視プログラムの実行を停止し、
    前記第1のCPUは、前記第1のメモリとは異なる第3のメモリ(13、14)も有し、前記メモリ異常発生の通知後に、前記第3のメモリに記憶された、前記第2のアプリケーションプログラムの正常実行を監視するための第3の監視プログラムと、前記第1のアプリケーションプログラムの代行用プログラムの正常実行を監視するための第4の監視プログラムとを実行する相互監視システム。
  2. 前記第3のメモリ(14)は不揮発性メモリであって、前記第3の監視プログラムと前記第4の監視プログラムとが前記第3のメモリに予め格納されている請求項1に記載の相互監視システム。
  3. 前記第3のメモリ(13)は揮発性メモリであって、前記第3の監視プログラムと前記第4の監視プログラムとは、前記第1のCPUと前記第2のCPUとの少なくとも一方に設けられる不揮発性メモリ(14,24)に格納され、当該不揮発性メモリから前記第3のメモリに転送されることにより、前記第3の監視プログラムと前記第4の監視プログラムとが前記第3のメモリに記憶される請求項1に記載の相互監視システム。
  4. 前記第1のアプリケーションプログラムの代行用プログラムは、前記第1のアプリケーションプログラムに比較して機能が制限されたものである請求項1乃至3のいずれかに記載の相互監視システム。
  5. 前記第1のアプリケーションプログラムの代行用プログラムの正常実行を監視するための前記第4の監視プログラムは、代行用プログラムが機能制限されたことに応じて、前記第1のアプリケーションプログラムの正常実行を監視するための前記第2の監視プログラムに比較して、プログラム容量が削減されている請求項4に記載の相互監視システム。
  6. 前記第2のCPUも、前記第2のメモリの異常を検出する異常検出機能と、前記異常検出機能によって前記第2のメモリの異常を検出した場合に、前記第1のCPUへメモリ異常の発生を通知する通知機能と、を備えており、
    前記第1のメモリには、予め前記第2のアプリケーションプログラムの代行用プログラムが記憶されており、
    前記第1のCPUは、前記第2のCPUからメモリ異常発生の通知を受信すると、前記第1のアプリケーションプログラムに加えて前記第2のアプリケーションプログラムの代行用プログラムも実行し、その一方で、前記第1の監視プログラムの実行を停止し、
    前記第2のCPUは、前記第2のメモリとは異なる第4のメモリ(23、24)も有し、前記メモリ異常発生の通知後に、前記第4のメモリに記憶された、前記第1のアプリケーションプログラムの正常実行を監視するための第5の監視プログラムと、前記第2のアプリケーションプログラムの代行用プログラムの正常実行を監視するための第6の監視プログラムとを実行する請求項1に記載の相互監視システム。
  7. 前記第4のメモリ(24)は不揮発性メモリであって、前記第5の監視プログラムと前記第6の監視プログラムとが前記第4のメモリに予め格納されている請求項6に記載の相互監視システム。
  8. 前記第4のメモリ(23)は揮発性メモリであって、前記第5の監視プログラムと前記第6の監視プログラムとは、前記第1のCPUと前記第2のCPUとの少なくとも一方に設けられる不揮発性メモリ(14、24)に格納され、当該不揮発性メモリから前記第4のメモリに転送されることにより、前記第5の監視プログラムと前記第6の監視プログラムとが前記第4のメモリに記憶される請求項6に記載の相互監視システム。
  9. 前記第2のアプリケーションプログラムの代行用プログラムは、前記第2のアプリケーションプログラムに比較して機能が制限されたものである請求項6乃至8のいずれかに記載の相互監視システム。
  10. 前記第2のアプリケーションプログラムの代行用プログラムの正常実行を監視するための前記第6の監視プログラムは、代行用プログラムが機能制限されたことに応じて、前記第2のアプリケーションプログラムの正常実行を監視するための前記第1の監視プログラムに比較して、プログラム容量が削減されている請求項9に記載の相互監視システム。
JP2016201988A 2016-10-13 2016-10-13 相互監視システム Active JP6624005B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016201988A JP6624005B2 (ja) 2016-10-13 2016-10-13 相互監視システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016201988A JP6624005B2 (ja) 2016-10-13 2016-10-13 相互監視システム

Publications (2)

Publication Number Publication Date
JP2018063599A JP2018063599A (ja) 2018-04-19
JP6624005B2 true JP6624005B2 (ja) 2019-12-25

Family

ID=61967875

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016201988A Active JP6624005B2 (ja) 2016-10-13 2016-10-13 相互監視システム

Country Status (1)

Country Link
JP (1) JP6624005B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020030536A (ja) * 2018-08-21 2020-02-27 株式会社デンソー 電子制御装置

Also Published As

Publication number Publication date
JP2018063599A (ja) 2018-04-19

Similar Documents

Publication Publication Date Title
WO2014091666A1 (ja) 車載電子制御装置
JP5163807B2 (ja) マイコン相互監視システム及びマイコン相互監視方法
WO2019058607A1 (ja) 車載電子制御装置およびその異常時処理方法
JP2010285001A (ja) 電子制御システム、機能代行方法
JP6393628B2 (ja) 車両制御装置
JP2009274569A (ja) 車両制御装置
JP6624005B2 (ja) 相互監視システム
KR100711850B1 (ko) 마이크로컴퓨터 감시 금지 기능을 갖는 전자 제어 시스템및 방법
JP2006259935A (ja) 演算異常判断機能付き演算装置
JP6512065B2 (ja) 電子制御装置
JP6869743B2 (ja) 自動車用電子制御装置
JP2016126692A (ja) 電子制御装置
JP6946954B2 (ja) 監視システム
JP4820679B2 (ja) 車両用電子制御装置
JP5978873B2 (ja) 電子制御装置
JP6075262B2 (ja) 制御装置
JP6524989B2 (ja) 演算器の動作保証方法
JP5095241B2 (ja) データ処理装置及びプログラム起動方法
CN113993752A (zh) 电子控制单元和程序
JP2020035503A (ja) 自動車用電子制御装置
WO2022215402A1 (ja) 車両用電子制御装置及びプログラムの書き換え方法
WO2024062898A1 (ja) 制動制御装置及びソフトウェア更新方法
JP6887277B2 (ja) 自動車用電子制御装置
US20240036878A1 (en) Method for booting an electronic control unit
JP6702161B2 (ja) 車載電子制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191016

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: 20191029

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191111

R151 Written notification of patent or utility model registration

Ref document number: 6624005

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250