(57)【要約】【課題】実行中のプログラムにより使用される揮発性メモリと、データの書き換えが可能な不揮発性メモリとを備えた自動車用制御装置において、揮発性メモリに対して不適切な書き込みが発生したときに、当該書き込み原因の解析に使用可能なデータを適切に記録する。【解決手段】実行中のプログラムが揮発性メモリの領域のうち当該プログラムに対して割り当てられた使用領域以外の領域に対する書き込みを行なったときに、当該プログラムの実行を書き込みが発生した時点のプログラムコードの進行状態で停止させて割り込みを発生させ、書き込みが発生した原因の解析に使用可能なデータを不揮発性メモリに格納する。【選択図】図３
2014186453.tif 000002
【特許請求の範囲】
【請求項１】
実行中のプログラムにより使用される揮発性メモリと、データの書き換えが可能な不揮発性メモリとを備えた自動車用制御装置において、
前記プログラムが前記揮発性メモリの領域のうち該プログラムに対して割り当てられた使用領域以外の領域に対する書き込みを行なったときに、前記プログラムの実行を該書き込みが発生した時点のプログラムコードの進行状態で停止させて割り込みを発生させ、該書き込みが発生した原因の解析に使用可能なデータを前記不揮発性メモリに格納する、自動車用制御装置。
【請求項２】
前記割り込みをユーザブレーク機能により発生させる、請求項１記載の自動車用制御装置。
【請求項３】
前記書き込みが発生した原因の解析に使用可能なデータは、前記書き込みが発生した時点において実行されていた前記プログラムのコードのアドレスを特定可能なデータを含む、請求項１又は２に記載の自動車用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用制御装置におけるプログラム実行時に発生するエラー監視技術に関する。
【背景技術】
【０００２】
自動車に搭載される制御装置には、プロセッサが各種プログラムを実行する際に作業領域として使用するＲＡＭ（Random Access Memory）等の揮発性メモリを備えているものがある。ここで、プログラムの実行時に、様々な要因により想定外のエラーが発生することがある。かかるエラーの監視技術の一例として、特許文献１には、ＲＡＭのアクセス禁止領域へのデータの書き込みを監視するプログラムを所定周期毎に実行し、アクセス禁止領域へのデータの書き込みを検出したときに、エラー原因を解析するための情報をＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等の不揮発性メモリに記録することについて記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１７２８９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、所定周期毎にエラーの監視処理を行った場合、エラーが発生してから監視処理によりエラーを検出するまでに時間を要する。このため、エラー発生時の正確な情報を記録することが困難である。
【０００５】
本発明は上記問題点に鑑みなされたものであり、自動車用制御装置において、揮発性メモリの領域のうちプログラムに対して割り当てられた使用領域以外の領域へのデータの書き込みが発生したときに、当該書き込みの原因の解析に使用可能なデータを適切に記録することを目的とする。
【課題を解決するための手段】
【０００６】
そのため、本願発明は、実行中のプログラムにより使用される揮発性メモリと、データの書き換えが可能な不揮発性メモリとを備えた自動車用制御装置において、前記プログラムが前記揮発性メモリの領域のうち該プログラムに対して割り当てられた使用領域以外の領域に対する書き込みを行なったときに、前記プログラムの実行を該書き込みが発生した時点のプログラムコードの進行状態で停止させて割り込みを発生させ、該書き込みが発生した原因の解析に使用可能なデータを前記不揮発性メモリに格納するようにした。
【発明の効果】
【０００７】
上記発明によると、揮発性メモリの領域のうちプログラムに対して割り当てられた使用領域以外の領域へのデータの書き込みが発生したときに、当該書き込みの原因の解析に使用可能なデータを適切に記録することが可能になる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態における制御装置の構成の一例を示すブロック図である。
【図２】本発明の実施形態におけるＲＡＭ及びＲＯＭの構成の一例を示す回路図である。
【図３】本発明の実施形態におけるＲＡＭの未使用領域への書き込みがなされたときの処理の一例を示す図である。
【図４】本発明の実施形態におけるＲＡＭの構成（複数のプログラム使用領域及び未使用領域を含んだ構成）の一例を示す図である。
【図５】本発明の実施形態におけるＲＡＭの構成（実行される間隔やトリガが同じであるタスクのプログラムがアクセスする領域を集約した構成）の一例を示す図である。
【図６】本発明の実施形態におけるＲＡＭの領域のうち実行中のプログラムへの割り当て領域以外の使用領域への書き込みがなされたときの処理の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
［実施形態の概要］
本実施形態では、自動車用の制御装置が備えるプロセッサが実行するプログラムが、実行中に使用する揮発性メモリのうち当該プログラムに割当てられた領域以外の領域に書き込みをしたときに割り込みを発生させ、書き込みが発生した原因の解析に使用可能なデータを不揮発性メモリに格納する。ここで本実施形態では、割り込みを発生させる一実施形態として、マイクロコンピュータが備えるユーザブレーク機能を用いる。ユーザブレーク機能とは、プログラムの実行中に特定の事象が発生したときに、当該プログラムの実行をその特定の事象が発生した時点のプログラムコードの進行状態で停止させて割り込みを行うことができる機能である。本実施形態では、制御装置のマイクロコンピュータに対し、実行中のプログラムが揮発性メモリの領域のうち当該プログラムに対して割り当てられた使用領域以外の領域に対する書き込みをしたときにユーザブレークを発生させる設定を予め行っておくことで、当該書き込みが発生した時点において揮発性メモリに保持されている各種情報を、不揮発性メモリに退避させることができる。
【００１０】
［実施例１］
〔１．装置構成〕
図１は、本実施例における自動車用の制御装置の一例を示すブロック図である。
制御装置１は、自動車に搭載された各種装置（例えば、エンジン、自動変速機、燃料ポンプ等）を制御するマイクロコンピュータである。制御装置１は、プロセッサ２、ＲＡＭ３、ＲＯＭ（Read Only Memory）４、ＥＥＰＲＯＭ５及びインタフェース（Ｉ／Ｆ）６を有する。プロセッサ２、ＲＡＭ３、ＲＯＭ４、ＥＥＰＲＯＭ５及びインタフェース６は、バス７を介して相互に接続されている。
【００１１】
プロセッサ２は、ＲＯＭ４に格納されたプログラムを実行して各種装置を制御する。なお、プロセッサ２は、シングルコアプロセッサ又はマルチコアプロセッサのいずれであってもよい。ＲＡＭ３は、揮発性メモリの一例であり、プロセッサ２がプログラムを実行する際に、一時的な作業領域として使用される。ＲＯＭ４は、不揮発性メモリの一例であり、プロセッサ２が実行する各種プログラムを格納する。ＥＥＰＲＯＭ５は、不揮発性メモリの一例であって、書き替え可能であり且つ電源遮断後でも記録内容を保持可能な記憶手段である。本実施例におけるＥＥＰＲＯＭ５の具体的な用途は後述する。インタフェース６は、制御装置１が制御する対象となる各種装置との間で、制御に要する各種データを送受信する。
【００１２】
〔２．ＲＡＭ、ＲＯＭの領域の詳細〕
図２は、本実施例におけるＲＡＭ３及びＲＯＭ４の構成を示す。ＲＡＭ３には、プロセッサ２によって実行されるプログラムによって使用するプログラム使用領域３１と、プログラムによって使用しない未使用領域３２が予め設定されている。具体的には、アドレスＡからアドレスＢの領域がプログラム使用領域３１として設定され、アドレスＢからアドレスＣが未使用領域３２として設定されている。さらに、ＲＡＭ３のアドレスＣからアドレスＤには、現在実行されているプログラムコードのアドレスを特定することができるプログラムカウンタの値が保存されるスタック領域３３が設定されている。
【００１３】
一方、ＲＯＭ４には、プロセッサ２によって実行される１つまたは複数のプログラムがプログラム格納領域４１に格納されている。具体的には、ＲＯＭ４のアドレスＸからアドレスＺの領域が、プログラム格納領域４１である。なお、プログラム格納領域４１に格納されているプログラムの実行中のコードのアドレスをアドレスＹとする。すなわち、ＲＡＭ３のスタック領域３３には、このアドレスＹを特定することが可能なプログラムカウンタの値が保存される。
【００１４】
〔３．ＲＡＭの未使用領域への書き込み検出時の処理〕
図３は、プロセッサ２が実行する処理を示す。ここでまず、当該処理が実行される前提条件として、本実施形態では、マイクロコンピュータが備えるユーザブレーク機能を用い、実行中のプログラムが未使用領域３２に書き込みをしたときにユーザブレークを発生させる設定を、実行対象のプログラムに対して予め行っておく。これにより、当該プログラムによるＲＡＭ３の未使用領域３２への書き込みが検出されると、ユーザブレークが発生することとなる。なお、未使用領域３２は、ＲＡＭ３の領域のうちプログラムに対して割り当てられた使用領域以外の領域の一例である。
【００１５】
ステップＳ１０１では、プログラムによる未使用領域３２への書き込みが発生したか否かを判定し、発生すればステップＳ１０２に進む。なお、本実施例では、前述したようにユーザブレーク機能を用い、プログラムに対してユーザブレークの設定を行っているため、プログラムの実行中には常にこのステップＳ１０１の判定が行われていることとなる。
ステップＳ１０２では、ユーザブレーク機能により、ユーザブレークの割り込みが発生する。これにより、未使用領域３２への書き込みを行ったプログラムの実行が、未使用領域３２への書き込みが発生した時点のプログラムコードの進行状態で停止される。
【００１６】
ステップＳ１０３では、ユーザブレーク機能により、プログラムカウンタの値（アドレスＹを特定できる値）がスタック領域３３に保存される。
ステップＳ１０４では、スタック領域３３に保存されたプログラムカウンタの値を、ＥＥＰＲＯＭ５に保存する。なお、このプログラムカウンタの値は、書き込みが発生した原因の解析に使用可能なデータの一例である。
ステップＳ１０５では、ユーザブレーク機能により、再びスタック領域３３からプログラムカウンタの値が読み出され、プログラムカウンタにセットされる。
【００１７】
ステップＳ１０６では、ユーザブレーク機能により、RETI (return from interrupt) 命令が実行され、ユーザブレークが発生した時点で実行されていたコードの次のコードからプログラムが再開される。
なお、この場合、ＲＡＭ３における不正なアクセスが発生したため、制御装置１を再起動して各種設定をリセットすることも当然に可能である。
【００１８】
〔４．本実施例による効果等〕
本実施例によれば、例えばマイクロコンピュータの故障等によってプログラムコードが書き換えられたり、オーバーフローが生じたりするなどの異常事態が発生して、本来プログラムが書き込みを行うことのないＲＡＭ３の未使用領域３２に対して書き込みがなされたときに、ユーザブレークを発生させる。このようにユーザブレークを発生させることにより、例えば所定周期毎にエラーの監視処理を行う場合と比較すると次のような利点がある。すなわち、所定周期毎にエラーの監視処理を行う場合には、エラーの発生時点と監視処理によりエラーを検出するまでの間にプログラムがさらに実行されてプログラムコードの進行状態が変わる可能性があるのに対し、本実施例では、未使用領域３２に対する書き込みが発生した時点のプログラムコードの進行状態でプログラムの実行を停止させることとなる。このため、当該時点において実行されていたプログラムコードのアドレスを特定できるプログラムカウンタの値を、ＥＥＰＲＯＭ５に格納することができる。したがって、ＥＥＰＲＯＭ５に格納されたプログラムカウンタの値により、未使用領域３２に対する書き込みの発生時点において実行されていたプログラムコードを特定し、当該書き込みが発生した原因を解析することが可能となる。また、不揮発性のＥＥＰＲＯＭ５にプログラムカウンタの値が保持されるため、このような不正な書き込みの発生後に制御装置１をリセットした場合においても、当該プログラムカウンタの値を参照することができる。このように、本実施例によれば、ＲＡＭ３の領域のうちプログラムに対して割り当てられた使用領域以外の領域へのデータの書き込みが発生したときに、当該書き込みの原因の解析に使用可能なデータを適切に記録することが可能になる。
【００１９】
なお、本実施例においてプログラム使用領域３１及び未使用領域３２はそれぞれ１つずつとしているが、例えば、図４に示すように、複数の領域を設定してもよい。図４の場合には、アドレスＡからアドレスＢの領域がプログラム使用領域３１Ａ、アドレスＢからアドレスＣが未使用領域３２Ａ、アドレスＣからアドレスＤの領域がプログラム使用領域３１Ｂ、アドレスＤからアドレスＥが未使用領域３２Ｂ、アドレスＥからアドレスＦが未使用領域３１Ｃ、アドレスＦからアドレスＧの領域がプログラム使用領域３２Ｃである。この場合、プログラムが未使用領域３２Ａ、未使用領域３２Ｂ及び未使用領域３２Ｃのいずれかに書き込みをしたときに、ユーザブレークを発生させればよい。なお、このとき、ユーザブレークの設定における未使用領域３２の領域指定を簡易にするべく、例えば未使用領域３２Ａ、３２Ｂ及び３２Ｃを等間隔に設定してもよい。
【００２０】
［実施例２］
〔１．実施例２の概要〕
前述した実施例１では、ＲＡＭ３の未使用領域３２に対して書き込みが発生したときにユーザブレークを発生させて割り込みを行っていた。これに対して実施例２では、プログラム使用領域３１であっても、実行中の特定のプログラムが、当該プログラムに対して割り当てられた使用領域以外のプログラム使用領域３１に書き込みを行ったときに、割り込みを発生させる。
以下、実施例１と同様の内容については原則として説明を省略する。
【００２１】
〔２．ＲＡＭ領域の詳細〕
図５は、本実施例におけるＲＡＭ３の構成を示す。ＲＡＭ３には、プログラムへの領域の割り当ての一態様として、実行される間隔やトリガが同じであるタスクのプログラムに割り当てる使用領域を、それぞれ、プログラム使用領域３１のうち特定の領域に集約させて設定しておく。具体的には、アドレスＡからアドレスＢの領域が１ｍｓ毎のタスク用使用領域３１Ｄ、アドレスＢからアドレスＣが２ｍｓ毎のタスク用使用領域３１Ｅ、アドレスＣからアドレスＤの領域が５ｍｓ毎のタスク用使用領域３１Ｆ、アドレスＤからアドレスＥが１０ｍｓ毎のタスク用使用領域３１Ｇ、アドレスＥからアドレスＦが１００ｍｓ毎のタスク用使用領域３１Ｈ、アドレスＦからアドレスＧの領域が２００ｍｓ毎のタスク用使用領域３１Ｉ、アドレスＧからアドレスＨの領域がクランク角３０度毎のタスク用使用領域３１Ｊ、アドレスＨからアドレスＩの領域が気筒毎のタスク用使用領域３１Ｋ、アドレスＩからアドレスＪの領域が回転毎のタスク用使用領域３１Ｌである。また、アドレスＪからアドレスＫの領域には、実施例１と同様にスタック領域３３が確保されている。
なお、ＲＯＭ４については実施例と同様であるため、説明を省略する。
【００２２】
〔３．特定プログラムに対して割当てられたＲＡＭの使用領域以外のプログラム使用領域への書き込み検出時の処理〕
図６は、プロセッサ２が実行する処理を示す。ここでまず、当該処理が実行される前提条件として、本実施例では、各プログラムについて、プログラム使用領域３１Ｄ〜３１Ｌのうち各プログラムへの割り当て領域以外のプログラム使用領域３１に書き込みをしたときにユーザブレークを発生させる設定を、予め行っておく。例えば、１０ｍｓ毎に実行されるタスクのプログラムについては、図５に示したＲＡＭ３のプログラム使用領域３１Ｄ〜３１Ｌのうち、１０ｍｓ毎のタスク用使用領域３１Ｇ以外の領域に書き込みをした場合にユーザブレークが発生するように予め設定しておく。他の間隔やトリガで実行されるプログラムについても同様である。これにより、以下に説明する処理において、プログラムが当該プログラムへの割り当て領域以外のプログラム使用領域３１に対して書き込みを行うと、ユーザブレークが発生することとなる。
【００２３】
ステップＳ２０１では、実行中のプログラムが当該プログラムに割り当てられた使用領域以外のプログラム使用領域３１に対して書き込みを行ったか否かを判定し、かかる不正な書き込みが発生すればステップＳ１０２に進む。なお、例えば実行中のプログラムが１０ｍｓ毎に実行されるタスクのプログラムの場合、当該プログラムが１０ｍｓ毎のタスク用使用領域３１Ｇ以外の領域（例えば、隣接する１００ｍｓ毎のタスク用使用領域３１Ｈ）に書き込みをしたときに、不正な書き込みが発生したと判定する。
ステップＳ１０２以降は、実施例１と同様であるため、説明を省略する。
【００２４】
〔４．実施例２による効果等〕
本実施例によれば、実行中のプログラムが、ＲＡＭ３のプログラム使用領域３１のうち、当該プログラムが本来書き込みをするべきではない領域に不正な書き込みをしたときに、当該不正な書き込みの発生時点において実行されていたプログラムコードのアドレスを特定できるプログラムカウンタの値がＥＥＰＲＯＭ５に格納される。このため、プログラム使用領域３１への書き込みであっても不正な書き込みがなされれば、かかる書き込みが発生した原因を解析することが可能となる。
【００２５】
［その他］
なお、上記各実施例において、ＥＥＰＲＯＭ５に格納する情報は、プログラムカウンタの値に限らず、ＲＡＭ３に対する不正な書き込みが発生した原因の解析に使用可能なデータであればいかなるデータであってもよい。例えば、ユーザブレーク発生時におけるプログラムの内部パラメータの値などをＥＥＰＲＯＭ５に保存してもよい。これにより、不正な書き込みが発生した原因の解析をさらに詳細に行うことができる。また、ユーザブレーク発生時においてＲＡＭ３に格納されている各種装置の制御情報自体をＥＥＰＲＯＭ５に保存することも、当然に可能である。
【００２６】
また、上記各実施例ではユーザブレーク機能を用いているが、実行中のプログラムによりＲＡＭ３に対する不正な書き込みが発生したときに、当該プログラムの実行を書き込みが発生した時点のプログラムコードの進行状態で停止させて割り込みを発生させることができる方法であれば、ユーザブレーク機能を用いた方法に限らず、いかなる方法を採用してもよい。
【００２７】
ここで、上記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
（イ）
実行中のプログラムにより使用される揮発性メモリと、データの書き換えが可能な不揮発性メモリとを備えた自動車用制御装置において、
前記プログラムが前記揮発性メモリの領域のうち該プログラムに対して割り当てられた使用領域以外の領域に対する書き込みを行なったときに、前記プログラムの実行を該書き込みが発生した時点のプログラムコードの進行状態で停止させて割り込みを発生させ、前記書き込みが発生した時点における前記プログラムの内部パラメータを含むデータを前記不揮発性メモリに格納する、自動車用制御装置。
上記発明によると、揮発性メモリに対する不正な書き込みが行われたときにどのようなパラメータでプログラムが動作していたかを特定することができ、より詳細な解析を行うことが可能となる。
（ロ）
実行中のプログラムにより使用される揮発性メモリと、データの書き換えが可能な不揮発性メモリとを備えた自動車用制御装置において、
前記プログラムが前記揮発性メモリの領域のうち前記揮発性メモリの未使用領域に対する書き込みを行なったときに、前記プログラムの実行を該書き込みが発生した時点のプログラムコードの進行状態で停止させて割り込みを発生させ、該書き込みが発生した原因の解析に使用可能なデータを前記不揮発性メモリに格納する、自動車用制御装置。
上記発明によると、揮発性メモリの未使用領域、すなわち本来プログラムが書き込みを行うはずのない領域に書き込みがなされた不正な状態を検知し、割り込みを発生させることができる。
（ハ）
実行中のプログラムにより使用される揮発性メモリと、データの書き換えが可能な不揮発性メモリとを備えた自動車用制御装置において、
前記プログラムが前記揮発性メモリの領域のうち前記プログラム以外の他のプログラムに対して割り当てられた領域に対する書き込みを行なったときに、前記プログラムの実行を該書き込みが発生した時点のプログラムコードの進行状態で停止させて割り込みを発生させ、該書き込みが発生した原因の解析に使用可能なデータを前記不揮発性メモリに格納する、自動車用制御装置。
上記発明によると、実行中のプログラム以外の他のプログラムに対して割り当てられた領域、すなわち、プログラム使用領域であっても当該プログラムが書き込みを行うはずのない領域に書き込みがなされた不正な状態を検知して割り込みを発生させることができる。
【符号の説明】
【００２８】
１…制御装置、２…プロセッサ、３…ＲＡＭ、４…ＲＯＭ、５…ＥＥＰＲＯＭ、６…インタフェース、３１…プログラム使用領域、３２…未使用領域、３３…スタック領域
【図１】
2014186453.tif 000003
【図２】
2014186453.tif 000004
【図３】
2014186453.tif 000005
【図４】
2014186453.tif 000006
【図５】
2014186453.tif 000007
【図６】
2014186453.tif 000008