(57)【要約】【課題】メモリ領域の冗長化やオーバーヘッドの増加を招くことなく、極力安全にプログラムの実行を継続することが可能な電子制御装置を提供する。【解決手段】電子制御装置１０は、アクセスが認められたメモリ領域外へのアクセスを違反アクセスとして禁止するとともに、違反アクセスが生じた場合にメモリ保護違反割込みを発生させるメモリ保護部２２、２４、２８を有するマイコン１２を備えている。マイコン１２は、違反アクセスの回数をカウントし、カウントされた回数が所定回数以上となった場合に、メモリ保護違反割込みの発生を無効化する。このため、メモリ保護違反割込みの無効化後は、現行のプロセスが終了されたり、ＯＳがリスタートされたりすることなく、プログラムの実行を継続することが可能になる。この場合、メモリ保護部による保護は継続されるので、安全にプログラムの実行を継続させることができる。【選択図】図１
2018018274.tif 000002
【特許請求の範囲】
【請求項１】
アクセスが認められたメモリ領域外へのアクセスを違反アクセスとして禁止するとともに、前記違反アクセスが生じた場合にメモリ保護違反割込みを発生させるメモリ保護部（２２、２４、２８）を有するマイコン（１２）を備えた電子制御装置において、
前記違反アクセスの回数をカウントするカウント部（Ｓ４００）と、
前記カウント部によってカウントされた回数が所定回数以上となった場合に、前記メモリ保護違反割込みの発生を無効化する無効化部（Ｓ３００、Ｓ３２０）と、を備える電子制御装置。
【請求項２】
前記電子制御装置は、所定の制御対象に制御信号を出力して制御するものであり、
前記無効化部によって前記メモリ保護違反割込みの発生を無効化してからの無効化時間を計測する計測部（Ｓ３４０）と、
前記計測部により計測される無効化時間が所定時間に達したとき、前記制御対象への前記制御信号の出力を遮断する遮断部（Ｓ３５０、Ｓ３６０）と、を備える請求項１に記載の電子制御装置。
【請求項３】
前記電子制御装置は、車両に搭載された車載機器を制御するものであり、
前記車両のイグニッションスイッチがオフされる第１のタイミングにおいて、前記カウント部によってカウントされている前記違反アクセスの回数を保存する保存部（Ｓ５５０）と、
前記車両のイグニッションスイッチがオンされた後の第２のタイミングにおいて、前記カウント部によってカウントされている前記違反アクセスの回数を読み出して、前記保存部に保存されている回数と比較した結果、前記違反アクセスの回数に変化がない場合、前記カウント部によりカウントされた回数をリセットするリセット部（Ｓ５２０、Ｓ５３０、Ｓ５４０）と、を備える請求項１に記載の電子制御装置。
【請求項４】
前記電子制御装置は、車両に搭載された車載機器を制御するものであり、
前記車両のイグニッションスイッチがオフされる第１のタイミングにおいて、前記カウント部によってカウントされている前記違反アクセスの回数を保存する保存部（Ｓ５５０）と、
前記車両のイグニッションスイッチがオンされた後の第２のタイミングにおいて、前記カウント部によってカウントされている前記違反アクセスの回数を読み出して、前記保存部に保存されている回数と比較した結果、前記違反アクセスの回数に変化がない場合、前記カウント部によりカウントされた回数及び前記計測部により計測された無効化時間をリセットするリセット部（Ｓ５２０、Ｓ５３０、Ｓ５４０）と、を備える請求項２に記載の電子制御装置。
【請求項５】
前記メモリ保護違反割込みが発生する間隔を測定する間隔測定部を備え、
前記遮断部は、前記間隔測定部が測定する間隔の平均値が長くなるほど、前記無効化時間と比較される前記所定時間を長く設定する請求項２又は４に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセスが認められたメモリ領域外へのアクセスを違反アクセスとして禁止するとともに、違反アクセスが生じた場合にメモリ保護違反割込みを発生させるメモリ保護部を有するマイコンを備えた電子制御装置に関する。
【背景技術】
【０００２】
例えば、メモリ保護を行うための技術として、特許文献１に記載された情報処理装置が知られている。特許文献１の情報処理装置は、メモリに記憶された複数のアプリを実行するＣＰＵと、各アプリ毎にメモリへのアクセスを許可するか又は禁止するかの許否情報がアドレスに対応付けて登録されるアクセス監視手段と、を備えている。
【０００３】
さらに、特許文献１の情報処理装置は、アプリを実行するＣＰＵによって禁止されたメモリへのアクセスがなされたことをアクセス監視手段が検出した場合に、ＣＰＵがメモリアクセスしたアドレスに記憶されたデータを、そのアドレスと対応付けてメモリから退避領域に退避させるデータ退避手段と、ＣＰＵがメモリアクセスしたアドレスへのアクセスが許可されるように、許否情報を変更する許否情報変更手段と、禁止されたメモリへのアクセスを行ったアプリを実行するＣＰＵが、該当するアドレスへのメモリアクセスを行った後に、そのアドレスのデータを当該アドレスと対応付けてメモリからバックアップ領域にバックアップするバックアップ手段と、を有している。そして、バックアップ手段は、ＣＰＵが禁止されたメモリアクセスを行ったアプリを次に実行する前に、バックアップ領域のデータを、対応付けられているアドレスに復帰させるように構成されている。なお、バックアップ手段が、バックアップ領域のデータを復帰させる場合には、当該アドレスのデータは、データ退避手段により、退避領域に退避させられる。
【０００４】
一般的なメモリ保護装置では、アクセス違反が生じた場合、例外処理として、メモリ保護違反割込みを発生させ、現行のプロセスを終了（命令の破棄）させて、次のプロセスをＣＰＵに割り付けたり、ＯＳをリスタートさせたりする。この場合、プログラムの実行が制限されてしまうが、特許文献１の情報処理装置によれば、アクセス違反が生じてもプログラム（アプリ）の実行を継続することが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１３７７３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の情報処理装置では、データの退避用及びバックアップ用のメモリ領域を冗長に確保しなければならないという問題がある。さらに、アクセス違反が生じた場合、メモリ保護装置が例外を発生させ、割込みにより、データのバックアップや許否情報の変更処理が行われたり、アプリの切り替え時に、データを退避領域に退避させた上で、バックアップ領域からデータを移したりするため、オーバーヘッドが増加するという問題も生じる。
【０００７】
本発明は、上述した点に鑑みてなされたもので、メモリ領域の冗長化やオーバーヘッドの増加を招くことなく、極力安全にプログラムの実行を継続することが可能な電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明による電子制御装置（１０）は、アクセスが認められたメモリ領域外へのアクセスを違反アクセスとして禁止するとともに、違反アクセスが生じた場合にメモリ保護違反割込みを発生させるメモリ保護部（２２、２４、２８）を有するマイコン（１２）を備え、さらに、
違反アクセスの回数をカウントするカウント部（Ｓ４００）と、
カウント部によってカウントされた回数が所定回数以上となった場合に、メモリ保護違反割込みの発生を無効化する無効化部（Ｓ３００、Ｓ３２０）と、を備える。
【０００９】
このような構成を備えるため、本発明による電子制御装置では、違反アクセスの回数が所定回数以上となると、メモリ保護違反割込みの発生が無効化される。このため、メモリ保護違反割込みの無効化後は、現行のプロセスが終了されたり、ＯＳがリスタートされたりすることなく、プログラムの実行を継続することが可能になる。この場合、メモリ保護違反割込みは無効化されるが、メモリ保護部による、アクセスが認められたメモリ領域外への違反アクセスは継続して禁止されるので、データが不当に書き込まれたり、読み出されたりすることはなく、安全にプログラムの実行を継続させることができる。
【００１０】
上述した電子制御装置において、さらに、
電子制御装置は、所定の制御対象に制御信号を出力して制御するものであり、
無効化部によってメモリ保護違反割込みの発生を無効化してからの無効化時間を計測する計測部（Ｓ３４０）と、
計測部により計測される無効化時間が所定時間に達したとき、制御対象への制御信号の出力を遮断する遮断部（Ｓ３５０、Ｓ３６０）と、を備えるように構成しても良い。
【００１１】
上述したように、違反アクセスは禁止されるが、違反アクセスが継続して発生する状況のまま、無制限にプログラムの実行を継続すると、万一、メモリ保護部に故障が生じた場合、違反アクセスを禁止することができず、不測の事態を招く虞がある。そのため、上述したように、メモリ保護違反割込みの発生を無効化してからの無効化時間が所定時間に達した時に、制御対象への制御信号の出力を遮断して、制御対象に対する制御が行われなくすることが好ましい。
【００１２】
上記括弧内の参照番号は、本発明の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本発明の範囲を制限することを意図したものではない。
【００１３】
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
【図面の簡単な説明】
【００１４】
【図１】実施形態に係る電子制御装置の構成を示すブロック図である。
【図２】メモリ保護設定レジスタに設定されたメモリ領域設定用データに基づく、メモリ保護装置によるメモリ保護処理を示すフローチャートである。
【図３】エラー制御装置における処理を示すフローチャートである。
【図４】メモリ保護違反割込みが無効設定に切り替えられる判定処理、及びメモリ保護違反割込みが無効設定された場合の安全処理を示すフローチャートである。
【図５】違反アクセスが発生し、メモリ保護装置にてメモリ保護違反の発生が判定されたときに実行されるエラー処理を示すフローチャートである。
【図６】マイコンにおいて実行される各プログラムによる処理の時間的な関係の一例を示したシーケンス図である。
【図７】メモリ保護違反カウンタ及び無効化時間のリセット処理を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を図に基づいて説明する。本実施形態に係る電子制御装置は、例えば、電子スロットルなどの車載装置を制御するために使用される。図１には、電子スロットル４０を制御対象とした場合の電子制御装置（Electronic Control Unit:ＥＣＵ）１０の全体構成の一例を図示している。この場合、ＥＣＵ１０は、アクセルセンサによって検出される運転者のアクセルペダルの操作量に基づき、運転者が求めるエンジン出力を計算し、その計算したエンジン出力が発生するように、電子スロットル４０を制御する。
【００１６】
ただし、本発明に係る電子制御装置の制御対象は、電子スロットルに限られる訳ではなく、他の車載機器を制御対象としても良い。さらに、車載機器以外の機器を制御対象としても良い。
【００１７】
図１において、ＥＣＵ１０は、マイコン１２、スロットルモータ駆動回路１４、及び監視ＩＣ１６を備えている。マイコン１２は、入力回路３４を介してアクセルペダルの操作量を検出するアクセルセンサの検出信号を入力する。そして、入力した検出信号に基づいて、運転者が要求するエンジン出力（エンジントルク）を計算する。マイコン１２は、計算したエンジン出力を発生させるように電子スロットル４０を制御するべく、出力回路３６を介してスロットルモータ駆動回路１４に駆動出力を与える。スロットルモータ駆動回路１４は、マイコン１２から与えられた駆動出力に応じて、スロットルモータ（図示せず）を回転させるための駆動電流を出力する。この駆動電流によりスロットルモータが回転することで、電子スロットル４０の開度が変化する。
【００１８】
マイコン１２は、上述した入力回路３４、出力回路３６に加えて、ＣＰＵ２０、メモリ保護設定レジスタ２２、メモリ保護装置２４、メモリ保護違反割込み設定レジスタ２６、エラー制御装置２８、ＲＯＭ３０、ＲＡＭ３２、及び通信装置３８を備えている。ＣＰＵ２０は、ＲＯＭ３０に記憶された各種のプログラムを実行することで、電子スロットル４０の開度制御機能、メモリ保護違反が生じたときのエラー処理機能や安全機能などを発揮する。そのため、ＲＯＭ３０には、図１に示すように、少なくとも、電子スロットル４０の開度を制御するための制御機能プログラム３０Ａ、マイコン１２の診断を行ったり、メモリ保護違反が生じたときに、安全を確保するための処置を行ったりする安全機能プログラム３０Ｂ、エラー制御装置２８によるメモリ保護違反割込みが生じたときに実行するエラー処理を規定するエラー処理プログラム３０Ｃ、及び上述した各アプリケーションプログラムの実行を支援、管理する基本ソフトとしてのＯＳプログラム３０Ｄが記憶されている。
【００１９】
マイコン１２に電源が投入されると、ＣＰＵ２０は、ＯＳプログラム３０ＤをＲＯＭ３０から読み込んで実行する。その他のアプリケーションプログラムも、各々の起床条件が成立したときに、ＣＰＵ２０に読み込まれて実行される。それぞれのプログラムが実行されるときに、その実行に必要な各種のデータを保存しておくため、ＲＡＭ３２には、各プログラムに割り当てられた専用領域が設けられている。各プログラムの専用領域は、原則として、別のプログラムによってアクセスすることができないように、メモリ保護装置２４が設けられている。
【００２０】
メモリ保護装置２４は、メモリ保護設定レジスタ２２に設定されたメモリ領域設定用データに基づき、ＣＰＵ２０によって実行されるプログラムによるメモリアクセス要求に対して、アクセスを許容するか否かを判定する。具体的には、メモリアクセス要求が、アクセスが許可されているメモリ領域に対するものである場合にはアクセスを許容すると判定し、該当するメモリ領域へのアクセスを許可する。一方、メモリアクセス要求が、アクセスが禁止されているメモリ領域に対する違反アクセスであると判定した場合、該当するメモリ領域へのアクセスを禁止するとともに、メモリ保護違反の発生を判定する。これにより、例えば、あるアプリケーションプログラムの実行によって、別のアプリケーションプログラム又はＯＳプログラムや、それぞれのプログラムによって使用されるデータ等が誤って書き換えられてしまうような事態の発生を防止することができる。
【００２１】
メモリ保護設定レジスタ２２に設定されるメモリ領域設定用データは、各アプリケーションプログラムやＯＳプログラムがアクセス可能なメモリ領域を示すものである。ただし、各プログラムがアクセス不可のメモリ領域をメモリ領域設定用データとしても良い。
【００２２】
メモリ保護設定レジスタ２２へのメモリ領域設定用データの格納は、ＯＳプログラムによって行われる。例えば、メモリ領域設定用データは、予めプログラム毎にＲＯＭ３０に保存されている。そして、電源が投入されてマイコン１２が起動されると、各プログラムのメモリ領域設定用データは、ＲＯＭ３０から読み出されて、ＲＡＭ３２に保存される。ＯＳプログラムは、ＲＡＭ３２から、実行されるプログラムのメモリ領域設定用データを読み出して、メモリ保護設定レジスタ２２へ格納する。
【００２３】
なお、メモリ保護設定レジスタ２２は、例えば、複数のレジスタを備えていても良い。この場合、例えば、少なくとも１つのレジスタは、ＯＳプログラムがアクセス可能なメモリ領域を示すメモリ領域設定用データを格納するために使用される。他のレジスタは、アプリケーションプログラムがアクセス可能なメモリ領域を示すメモリ領域設定用データを格納するために使用される。そして、ＯＳプログラムは、実行するアプリケーションプログラムが切り替えられる時に、アプリケーションプログラム用のメモリ領域設定用データを格納するレジスタの内容だけを書き換える。このように、メモリ保護設定レジスタ２２として複数のレジスタが設けられていると、メモリ領域設定用データの書き換え頻度を低減することが可能になる。
【００２４】
また、上述したメモリは、主として、各プログラムのワークスペースとして用いられるＲＡＭ３２を意味するが、さらに、ＲＯＭ３０やレジスタなどを含むものであっても良い。すなわち、メモリは、ＲＡＭ３２、ＲＯＭ３０、レジスタを含み、これらを、一つのアドレス空間として一括管理されるものであっても良い。
【００２５】
エラー制御装置２８は、メモリ保護装置２４がメモリ保護違反の発生を判定し、その旨の通知を受信したとき、メモリ保護違反割込み設定レジスタ２６において、メモリ保護違反割込みが有効設定されている場合、ＣＰＵ２０へメモリ保護違反割込みを出力する。一方、メモリ保護違反割込み設定レジスタ２６において、メモリ保護違反割込みが無効設定されている場合には、メモリ保護装置２４からメモリ保護違反の発生通知を受信しても、メモリ保護違反割込みを出力しない。ＣＰＵ２０は、エラー制御装置２８からのメモリ保護違反割込みを受信すると、所定のエラー処理を実行する。この所定のエラー処理として、メモリ保護違反カウンタによってメモリ保護違反の発生回数をカウントするとともに、例えば無限ループ処理を実行することでマイコン１２の出力回路３６から監視ＩＣ１６へのウォッチドッグ信号の出力を停止させる処理を行う。
【００２６】
マイコン１２の監視ＩＣ１６は、マイコン１２から所定時間、ウォッチドッグ信号が出力されない場合、マイコン１２に対してリセット信号を出力する。このため、メモリ保護違反割込みが有効と設定されている場合には、メモリ保護装置２４がメモリ保護違反の発生を判定するごとに、マイコン１２がリセットされることになる。なお、メモリ保護違反割込みに応じて、従来と同様に、現行のプロセスを終了（命令の破棄）させて、次のプロセスに遷移したり、ＯＳをリスタートさせたりするようにしても良い。
【００２７】
しかしながら、メモリ保護違反の発生原因がプログラムのバグなど恒久的な異常によるものである場合、マイコン１２をリセットしても、メモリ保護違反割込みが繰り返され、実質的に、マイコン１２による制御を継続することが困難になる可能性がある。また、メモリ保護違反割込みに応じて、現行のプロセスを終了させて次のプロセスに遷移したり、ＯＳをリスタートさせたりする場合には、プログラムを正常に継続することができなくなる可能性が高い。
【００２８】
そこで、本実施形態では、上述したように、メモリ保護違反割込み設定レジスタ２６を設けて、メモリ保護違反割込みを無効と設定することができるようにした。メモリ保護違反割込み設定レジスタ２６において、メモリ保護違反割込みが無効と設定されている場合には、メモリ保護装置２４からメモリ保護違反の発生通知を受信しても、エラー制御装置２８はメモリ保護違反割込みを発生しないようになっている。このため、マイコン１２がリセットされたり、現行のプロセスが終了されたり、ＯＳプログラムがリスタートされたりすることなく、プログラムの実行を継続することが可能になる。この場合、メモリ保護違反割込みは無効化されるが、メモリ保護装置２４による、アクセスが認められたメモリ領域外への違反アクセスは継続して禁止される。このため、データが不当に書き込まれたり、読み出されたりすることはなく、安全にプログラムの実行を継続させることができる。
【００２９】
上述したメモリ保護の他にも、例えば、ＣＰＵ２０は、安全機能プログラム３０Ｂを実行することにより、マイコン１２が正常に動作しているかを確認するための診断処理を行う。この診断処理による診断結果は、通信装置３８を介して、監視ＩＣ１６に送信される。監視ＩＣ１６は、診断結果に基づき、電子スロットル４０に対する制御を正常に実行することができないような重大な異常が発生していると判定した場合、スロットルモータ駆動回路１４に対して、シャットダウン出力を与える。スロットルモータ駆動回路１４は、シャットダウン出力が与えられると、電子スロットル４０を駆動するスロットルモータへの駆動電流を停止する。これにより、マイコン１２の異常により電子スロットル４０の動作異常が生じて、不測の事態を招くことを未然に防ぐことができる。
【００３０】
本実施形態では、マイコン１２の出力回路３６からも、スロットルモータ駆動回路１４に対してシャットダウン出力を与えることができるように構成されている。マイコン１２が、出力回路３６を介して、スロットルモータ駆動回路１４にシャットダウン出力を与えるのは、例えば、次のような場合である。マイコン１２は、メモリ保護違反割込み設定レジスタ２６により、メモリ保護違反割込みの発生を無効化してからの無効化時間を計測する。そして、計測された無効化時間が所定時間に達したときに、出力回路３６からスロットルモータ駆動回路１４へシャットダウン出力を与える。
【００３１】
メモリ保護違反割込みの発生を無効化すると、違反アクセスによるメモリへのアクセスは禁止されるが、違反アクセスそのものが継続して発生可能な状況となり得る。このような状況のまま、無制限にプログラムの実行を継続すると、万一、メモリ保護装置２４に故障が生じた場合、メモリへの違反アクセスを禁止することができず、不測の事態を招く虞がある。そのため、上述したように、メモリ保護違反割込みの発生を無効化してからの無効化時間が所定時間に達した時に、出力回路３６からスロットルモータ駆動回路１４にシャットダウン出力を与えるようにして、電子スロットル４０への駆動電流を停止するのである。
【００３２】
次に、メモリ保護に関して、マイコン１２のＣＰＵ２０等において実行される処理について、図２〜５のフローチャートを参照して説明する。なお、図２のフローチャートは、メモリ保護設定レジスタ２２に設定されたメモリ領域設定用データに基づく、メモリ保護装置２４によるメモリ保護処理を示している。図３のフローチャートは、エラー制御装置２８における処理を示している。図４のフローチャートは、メモリ保護違反割込みが無効設定に切り替えられる判定処理、及びメモリ保護違反割込みが無効設定された場合の安全処理を示している。さらに、図５のフローチャートは、エラー制御装置２８によってメモリ保護違反割込みが発生されたときに実行されるエラー処理を示している。
【００３３】
図２のフローチャートにおいて、まず、ステップＳ１００では、メモリ保護装置２４はメモリへのアクセス要求を受信する。このメモリアクセス要求には、例えば、アクセスしようとしているメモリのアドレス、メモリアクセス要求を出したプログラムの種類、メモリに対する処理内容（読み出し、書き込み）を示す情報が含まれている。
【００３４】
メモリ保護装置２４は、ステップＳ１１０において、実行中のプログラムがアクセスしようとしているメモリのアドレスが、メモリ保護設定レジスタ２２に設定されたアドレス範囲に含まれる正常アクセスであるか、それともアドレス範囲に含まれない違反アクセスであるかを判定する。なお、メモリ保護設定レジスタ２２へのメモリ領域設定用データの格納は、実行されるプログラムが切り替えられるときに、ＯＳプログラムによって行われている。そのため、メモリ保護装置２４は、メモリへのアクセス要求を受信したときに、メモリ保護設定レジスタ２２の内容を参照することで、正常アクセスであるか、違反アクセスであるかを判定することができる。
【００３５】
ステップＳ１１０の判定処理において、正常アクセスであると判定した場合には、ステップＳ１２０の処理に進んで、メモリへのアクセスを許可する。一方、ステップＳ１１０の判定処理において、違反アクセスであると判定した場合には、ステップＳ１３０の処理に進んで、メモリへのアクセスを禁止する。さらに、続くステップＳ１４０において、メモリ保護違反が発生した旨をエラー制御装置２８に通知する。なお、正常アクセスであるか違反アクセスであるかを判定する際、アクセスしようとしているメモリ領域のみでなく、メモリに対する処理内容も考慮するようにしても良い。
【００３６】
次に、エラー制御装置２８における処理を図３のフローチャートに基づき説明する。図３のフローチャートでは、まず、ステップＳ２００において、メモリ保護装置２４からメモリ保護違反の発生通知を受信したか否かを判定する。受信したと判定した場合、ステップＳ２１０の処理に進み、受信していないと判定した場合には、再度ステップＳ２００の処理を実行することで、メモリ保護違反発生通知の受信を待機する。
【００３７】
ステップＳ２１０では、メモリ保護違反割込み設定レジスタ２６の設定が、違反割込みを有効とする設定となっているか、無効とする設定となっているかを判定する。この判定処理において、違反割込みを有効とする設定となっていると判定すると、ステップＳ２２０において、エラー制御装置２８はメモリ保護違反割込みを発生する。一方、違反割込みを無効とする設定となっていると判定した場合には、メモリ保護違反割込みを発生することなく、処理を一旦終了する。
【００３８】
次に、図４のフローチャートについて説明する。この図４のフローチャートに示す処理は、所定の周期で繰り返し実行される。まず、ステップＳ３００において、メモリ保護違反カウンタのカウント値が所定値以下であるか否かを判定する。メモリ保護違反カウンタは、後述する図５のフローチャートのステップＳ３００において、インクリメントされるものであり、図５のフローチャートは、エラー制御装置２８によってメモリ保護違反割込みが発生された場合に実行されるものである。このため、メモリ保護違反カウンタのカウント値は、違反アクセスの回数、すなわちメモリ保護違反の発生回数を示すものとなる。
【００３９】
ステップＳ３００において、メモリ保護違反カウンタのカウント値が所定値以下であると判定すると、ステップＳ３１０の処理に進んで、メモリ保護違反割込み設定レジスタ２６における設定として、メモリ保護違反割込みは有効と設定する。一方、メモリ保護違反カウンタのカウント値が所定値より大きいと判定すると、ステップＳ３２０の処理に進んで、メモリ保護違反割込みは無効と設定する。従って、メモリ保護違反の発生回数が所定値以下である間は、メモリ保護違反割込みは有効であり、メモリ保護違反の発生の都度、メモリ保護違反割込みが発生する。しかし、メモリ保護違反の発生回数が所定値より大きくなると、メモリ保護違反割込みが無効化されるため、メモリ保護違反が生じても、メモリ保護違反割込みは発生しなくなる。
【００４０】
続くステップＳ３３０では、例えば、運転者前方のメータパネル内に設けられた警告灯を点灯することにより、メモリ保護違反が継続的に発生する異常が生じていることを運転者に報知する。ただし、警告灯が点灯した段階では、メモリ保護違反割込みは無効化されているが、メモリ保護装置２４によるメモリ保護機能は有効に作動しており、メモリ内のデータが不当に書き換えられたりされることはなく、安全に制御を継続することができる。
【００４１】
続くステップＳ３４０では、メモリ保護違反割込みの無効設定後の無効化時間を計測する。そして、ステップＳ３５０において、無効化時間が所定時間よりも長くなったか否かを判定する。無効化時間が所定時間よりも長くなったと判定した場合には、ステップＳ３６０の処理に進み、出力回路３６を介して、スロットルモータ駆動回路１４へシャットダウン出力を与える。これにより、メモリ保護違反割込みを無効化した後に、メモリ保護装置２４に故障が生じて、違反アクセスを禁止することができず、不測の事態を招いてしまう虞を低減することができる。この際、ステップＳ３３０の警告灯とは異なる警告灯を点灯したり、もしくは警告灯を点灯する態様を異ならせたりすることにより、運転者に対し、ＥＣＵ１０が制御対象への制御を停止したことを報知することが望ましい。
【００４２】
メモリ保護違反割込みの発生時に実行される図５のフローチャートに示す処理では、ステップＳ４００において、メモリ保護違反カウンタをインクリメントする。さらに、ステップＳ４１０で、例えば無限ループ処理を実行することにより、ウォッチドッグ信号の出力を停止させる。これにより、監視ＩＣ１６からのマイコンリセット信号によってマイコン１２がリセットされるので、メモリアクセス違反が一時的な原因によって生じた場合には、以後、メモリアクセス違反が発生しないようにマイコン１２を正常化することができる。
【００４３】
しかし、メモリアクセス違反が恒久的な原因によって生じた場合には、マイコン１２のリセットが繰り返され、実質的に、マイコン１２が制御を継続することができなくなってしまう。その点、本実施形態では、ステップＳ２１０において、メモリ保護違反割込みは無効に設定されていると判定した場合には、メモリ保護違反割込みを発生することなく、図３のフローチャートの処理を一旦終了する。このため、ＥＣＵ１０は、メモリ保護違反が発生しても、制御対象に対する制御を継続することが可能となる。
【００４４】
図６は、マイコン１２において実行される各プログラムによる処理の時間的な関係の一例を示したシーケンス図である。図６に示される例によれば、ＯＳプログラムが、メモリ保護違反カウンタのカウント値に基づき、メモリ保護違反割込みの有効もしくは無効を設定した後、制御機能プログラムを呼び出して起動する。この制御機能プログラムの実行中にメモリ保護違反が発生すると、メモリ保護違反割込みが有効設定されている場合には、エラー制御装置２８によりメモリ保護違反割込みが発生される。このメモリ保護違反割込みにより、制御機能プログラムは実行を中断されるとともに、エラー処理が開始される。具体的には、メモリ保護違反カウンタをインクリメントし、さらに、ウォッチドッグ信号を停止するための処理を実施する。これにより、ウォッチドッグ信号が停止されるので、マイコン１２は監視ＩＣ１６によってリセットされる。
【００４５】
マイコン１２がリセットにより再起動されると、ＯＳプログラムが起動することで、ウォッチドッグ信号が定期的に出力されるようになる（ウォッチドッグ信号の活性化）。そして、ＯＳプログラムは、安全機能プログラムを呼び出して起動する。安全機能プログラムは、マイコン１２が正常に動作しているか否かに関する診断を行い、その診断結果を監視ＩＣ１６に出力する。監視ＩＣ１６は、診断結果が重大な故障を示す場合、スロットルモータ駆動回路１４にシャットダウン出力を与える。
【００４６】
また、安全機能プログラムは、メモリ保護違反カウンタのカウント値が所定値より大きい場合、すなわち、メモリ保護違反割込みが無効設定されている場合、メモリ保護違反割込みの無効化時間を計測するとともに、警告灯を点灯する処理を行う。そして、無効化時間が所定時間よりも長くなったと判定すると、出力回路３６を介して、スロットルモータ駆動回路１４にシャットダウン出力を与える。
【００４７】
次に、図７のフローチャートを参照して、メモリ保護違反カウンタ及び無効化時間のリセット処理について説明する。図７のフローチャートに示すリセット処理は、車両のイグニッションスイッチがオフされたことが検出されたときに実行される。すなわち、イグニッションスイッチのオンからオフまでを１ドライビングサイクルとすると、図７のフローチャートに示すリセット処理は、各ドライビングサイクルの終了時に実行される。
【００４８】
まず、最初のステップＳ５００では、ドライビングサイクルの終了に合わせて、ドライビングサイクルの更新処理を行う。続くステップＳ５１０では、前回のドライビングサイクルにて記憶されたメモリ保護違反カウンタのカウント値を読み出す。なお、メモリ保護違反カウンタのカウント値は、対応するドライビングサイクルと関連付けて、イグニッションスイッチがオフされた後も、記憶内容を保持可能な不揮発性メモリや電源バックアップされたＲＡＭ等に保存されている。
【００４９】
続くステップＳ５２０では、現在のメモリ保護違反カウンタのカウント値を読み出す。そして、ステップＳ５３０において、前回のドライビングサイクルで記憶されたメモリ保護違反カウンタのカウント値と、現在のメモリ保護違反カウンタのカウント値とを比較して、両カウント値が同じであるか否かを判定する。メモリ保護違反カウンタは、上述した図５のフローチャートのステップＳ４００でインクリメントされるか、後述するステップＳ５４０にてゼロクリアされるまでは、イグニッションスイッチのオン、オフに係わらず、カウント値を維持する。従って、ステップＳ５３０の判定処理において、両カウント値が同じである場合、今回のドライビングサイクルでは、メモリ保護違反は発生しておらず、メモリ保護違反に関する異常は正常復帰したとみなすことができる。そのため、ステップＳ５４０に進んで、メモリ保護違反カウンタのカウント値及び無効化時間をゼロクリアする。一方、両カウント値が異なる場合、すなわち、記憶されたカウント値よりも現行のカウント値が大きい場合、ステップＳ５５０に進んで、現在のカウント値を更新されたドライビングサイクルに関連付けて保存する。
【００５０】
なお、イグニッションスイッチがオンされて、今回のドライビングサイクルが開始されるときに、初期化処理の一環として、メモリ保護違反割込みが有効設定される。そのため、今回のドライビングサイクルにおいて、メモリ保護違反が発生すると、メモリ保護違反割込みによるエラー処理が実行され、メモリ保護違反カウンタのカウント値がインクリメントされる。一方、今回のドライビングサイクルにてメモリ保護違反が発生していなければ、メモリ保護違反カウンタのカウント値は、前回のドライビングサイクルで記憶されたメモリ保護違反カウンタのカウント値と同一値を維持する。
【００５１】
また、初期化処理の一環として、メモリ保護違反割込みを有効設定した後、少なくとも１回、メモリ保護違反の発生が判定されるまでは、メモリ保護違反カウンタのカウント値に基づく、メモリ保護違反割込みの有効、無効の設定の切り替えは、行われないようになっている。これにより、前回のドライビングサイクルにおいて、メモリ保護違反割込みが無効設定されるまで、メモリ保護違反カウンタのカウント値がインクリメントされていても、今回のドライビングサイクルにおいて、少なくとも１回は、メモリ保護違反カウンタにより、メモリ保護違反の発生をカウントすることができる。
【００５２】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上述した実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【００５３】
例えば、上述した実施形態において、スロットルモータ駆動回路１４にシャットダウン出力を与えるタイミングを判定するために、無効化時間と比較される所定時間は、一定時間であっても良いし、可変時間であっても良い。所定時間を可変時間とする場合には、例えばメモリ保護違反割込みの発生時間間隔に応じて、所定時間の長さを可変することができる。具体的には、メモリ保護違反割込みが発生する間隔を測定する間隔測定部を設け、この間隔測定部が測定するメモリ保護違反割込みの発生間隔の平均値が長くなるほど、無効化時間と比較される所定時間が長くなるように設定すれば良い。
【００５４】
また、上述した実施形態では、前回のドライビングサイクルの終了時点のメモリ保護違反カウンタのカウンタ値を記憶しておき、今回のドライビングサイクルの終了時点のメモリ保護違反カウンタのカウンタ値と比較して、メモリ保護違反に関する異常が回復したか否かを判定するものであった。しかしながら、今回のドライビングサイクルにおいて、メモリ保護違反カウンタのカウント値を測定するタイミング（第２のタイミング）は、今回のドライビングサイクルが開始された後に、メモリ保護違反を発生したプログラムが少なくとも１回実行されるに十分な間隔を確保できるタイミングであれば良く、必ずしも、今回のドライビングサイクルの終了時点でなくとも良い。
【符号の説明】
【００５５】
１０  電子制御装置（ＥＣＵ）
１２  マイコン
１４  スロットルモータ駆動回路
１６  監視ＩＣ
２０  ＣＰＵ
２２  メモリ保護設定レジスタ
２４  メモリ保護装置
２６  メモリ保護違反割込み設定レジスタ
２８  エラー制御装置
３０  ＲＯＭ
３２  ＲＡＭ
【図１】
2018018274.tif 000003
【図２】
2018018274.tif 000004
【図３】
2018018274.tif 000005
【図４】
2018018274.tif 000006
【図５】
2018018274.tif 000007
【図６】
2018018274.tif 000008
【図７】
2018018274.tif 000009