(57)【要約】      （修正有）【課題】メモリチェックによるＣＰＵ負荷を増大することなく、適切なタイミングでメモリチェック可能な電子制御装置を提供する。【解決手段】プログラム記憶手段２４と、プログラムを実行する演算手段と、を有する電子制御装置であって、プログラムが記憶されているアドレスのアドレス情報と、各プログラムが記憶されている領域毎に、予め定められている検査基準値と、領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、領域毎に、メモリ検査手段による検査済みか否かが登録された検査実行登録テーブル３３と、予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録３４と、を有し、メモリ検査手段は、検査実行登録テーブルに検査済みと登録された領域の検査を、特定プログラム実行記録に特定プログラムが実行されことが登録されている場合に行う。【選択図】図１
2013143095.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムを記憶するプログラム記憶手段と、
前記プログラムを実行する演算手段と、を有する電子制御装置であって、
各プログラムが記憶されているアドレスのアドレス情報と、
各プログラムが記憶されている領域毎に、予め定められている検査基準値と、
前記領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、
前記領域毎に、前記メモリ検査手段により検査済みか否かが登録された検査実行登録テーブルと、
予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録と、を有し、
前記メモリ検査手段は、前記検査実行登録テーブルに検査済みと登録された前記領域の検査を、前記特定プログラム実行記録に前記特定プログラムが実行されことが登録されている場合に行う、
ことを特徴とする電子制御装置。
【請求項２】
前記プログラム実行記録には、複数の各プログラムに対応づけて、前記特定プログラムが実行されたことを示す実行記録が登録されており、
前記メモリ検査手段は、１つの前記領域を検査する毎に、該領域に記憶されているプログラムに対応づけられた前記実行記録を消去する、
ことを特徴とする請求項１記載の電子制御装置。
【請求項３】
前記演算手段により実行された前記特定プログラムは、前記プログラム実行記録の各プログラムの全てに対応付けて実行記録を登録する、
ことを特徴とする請求項２記載の電子制御装置。
【請求項４】
車載装置を制御するプログラムは、プログラムに特有の制御処理を開始する前に、前記メモリ検査手段を呼び出し、
前記メモリ検査手段は、呼び出したプログラムが記憶された前記領域を予め定められている方法で検査する、
ことを特徴とする請求項１〜３いずれか１項記載の電子制御装置。
【請求項５】
前記演算手段が実行することで前記メモリ検査手段を実現するプログラムが記憶された前記領域を、前記メモリ検査手段を呼び出したプログラムが記憶された前記領域よりも先に、前記メモリ検査手段が予め定められている方法で検査する、
ことを特徴とする請求項４記載の電子制御装置。
【請求項６】
前記メモリ検査手段は、前記特定プログラムが記憶された前記領域を検査しない、
ことを特徴とする請求項１〜５いずれか１項記載の電子制御装置。
【請求項７】
前記特定プログラムはＡＳＩＬがＱＭのプログラムであり、その他のプログラムはＡＳＩＬがＡ以上のプログラムである、ことを特徴とする請求項１〜６いずれか１項記載の電子制御装置。
【請求項８】
複数のプログラムを記憶するプログラム記憶手段と、
前記プログラムを実行する演算手段と、
各プログラムが記憶されているアドレスのアドレス情報と、
各プログラムが記憶されている領域毎に、予め定められている検査基準値と、
前記領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、を有する電子制御装置のメモリ検査方法であって、
前記メモリ検査手段が、
前記領域毎に、前記メモリ検査手段による検査済みか否かが登録された検査実行登録テーブルと、予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録と、を参照して、
前記検査実行登録テーブルに検査済みと登録された前記領域の検査を、前記特定プログラム実行記録に前記特定プログラムが実行されことが登録されている場合に行う、
ことを特徴とするメモリ検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置の記憶内容を検査して記憶内容の変更を検出する電子制御装置に関する。
【背景技術】
【０００２】
エンジンやブレーキなどの車載装置をマイコンなどで制御する電子化が進んでいる。このため、車両には種々の電子制御装置が搭載されており、各電子制御装置はそれぞれ制御対象のアクチュエータ等を制御する。電子制御装置はコンピュータの一態様であるため、ＣＰＵがフラッシュメモリなどの不揮発性の記憶装置に記憶されているプログラムを、必要であればパラメータを使用して実行することで車載装置を適切に制御する。
【０００３】
一般に、不揮発性の記憶装置の情報保持期間は十分に長いので、プログラムやパラメータが消失することはない。しかしながら、上記のプログラムはいわゆる組み込み系のプログラムであるため、車両が駐車されていれば車両と共に駐車場などに放置される。このため、第三者が故意にプログラムを書き換えたり、一部を消去したりする作為的な改竄が行われるそれがある。また、不揮発性の記憶装置においても、電磁波などによって書き換わる可能性がある。
【０００４】
そこで、従来から、プログラムやパラメータの書き換えを検出する技術が考えられている（例えば、特許文献１参照。）。特許文献１には、不揮発性メモリの記憶領域を複数のサブプログラムの実行順序に基づいて分割しておき、サブプログラムの実行順序に従って、順次、次に実行されるサブプログラムを記憶する一の分割領域のメモリチェックを実行する車両用制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１２６４５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された車両用制御装置では、サブプログラムの実行前に毎回、メモリチェックする必要があるため電子制御装置の負荷が増大してしまうという問題がある。
【０００７】
そこで、特許文献１に記載されているように、メモリチェックが１回終了した分割領域に対しメモリチェックを行わないことが考えられる。しかし、メモリチェックを初回の１回のみに限定してしまうと、チェック後に発生するメモリ異常を検出できないという問題がある。
【０００８】
本発明は、上記課題に鑑み、メモリチェックによるＣＰＵ負荷を増大することなく、適切なタイミングでメモリチェック可能な電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、複数のプログラムを記憶するプログラム記憶手段と、前記プログラムを実行する演算手段と、を有する電子制御装置であって、各プログラムが記憶されているアドレスのアドレス情報と、各プログラムが記憶されている領域毎に、予め定められている検査基準値と、前記領域を予め定められている方法で検査し、検査結果を前記検査基準値と比較するメモリ検査手段と、前記領域毎に、前記メモリ検査手段による検査済みか否かが登録された検査実行登録テーブルと、予め定められた特定プログラムが実行されたことが登録された特定プログラム実行記録と、を有し、前記メモリ検査手段は、前記検査実行登録テーブルに検査済みと登録された前記領域の検査を、前記特定プログラム実行記録に前記特定プログラムが実行されことが登録されている場合に行う、ことを特徴とする。
【発明の効果】
【００１０】
メモリチェックによるＣＰＵ負荷を増大することなく、適切なタイミングでメモリチェック可能な電子制御装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】電子制御装置によるメモリチェックの概略的な特徴を説明する図の一例である。
【図２】電子制御装置のブロック図の一例である。
【図３】フラッシュＲＯＭに記憶されたＳＣとその領域を説明する図の一例である。
【図４】メモリチェック部の機能を説明する図の一例である。
【図５】メモリチェック部の動作手順を示すフローチャート図の一例を示す。
【図６】メモリチェック部が共通領域（ＳＣ４）のメモリチェックを行う手順を示すフローチャート図の一例である。
【図７】チェック履歴テーブル及び実行フラグの遷移例を示す図の一例である。
【図８】ＳＣ１〜ＳＣ４の領域のメモリチェックの有無を模式的に説明する図の一例である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図１は、本実施形態の電子制御装置によるメモリチェックの概略的な特徴を説明する図の一例である。電子制御装置のフラッシュＲＯＭ２４には、いくつかのＳＣ（Software  Component）が記憶されている。
【００１３】
メモリチェック部３１は、ＳＣが記憶されている領域毎にメモリチェックを行う。メモリチェックは、ＳＣが書き換わっている可能性がある場合にだけ行えばよい。そこで、メモリチェック部３１は以下のようなタイミングでメモリチェックを行う。なお、以下のＩＧ−ＯＮとは、ハイブリッド車や電気自動車の場合はメインシステムがＯＮとなることに相当する。以下では区別することなく単にＩＧ−ＯＮという。
（i）ＩＧ−ＯＮの後、初めてＳＣが実行される場合
（ii）所定のＳＣが実行された後、初めてＳＣが実行される場合
すなわち、ＩＧ−ＯＦＦからＩＧ−ＯＮになるまでの間に、ＳＣが書き換わっている可能性があるので、メモリチェック部３１がＩＧ−ＯＮの後、初めてＳＣが実行される場合に実行されるＳＣの領域のみをメモリチェックする。これにより、ＩＧ−ＯＮ後、実行されるＳＣの領域が１回だけメモリチェックされるので、メモリチェックによるＣＰＵ負荷の増大を抑制できる。メモリチェック部３１は、ＩＧ−ＯＮ後にメモリチェックを実行したＳＣを、チェック履歴テーブル３３に記録しておく。
【００１４】
また、ＩＧ−ＯＮ後に一度だけしかメモリチェックされないと、ＳＣの実行中に、ＳＣが他のＳＣを書き換えたことを検出できない。そこで、メモリチェック部３１は、所定のＳＣが実行された後、初めてＳＣが実行される場合、再度、実行されるＳＣの領域をメモリチェックする。所定のＳＣは、例えば図のＳＣ３である。このＳＣ３は、ＳＣ１〜４を書き換える可能性があるＳＣとして予め特定されている。
【００１５】
ＳＣ３が実行されたことを検出するため、メモリチェック部３１は実行フラグ３４を監視する。実行フラグ３４はＳＣ３が実行されるとＯＮになるフラグである。メモリチェック部３１は、実行フラグ３４がＯＮのＳＣのメモリチェックを実行する。そして、メモリチェックしたＳＣの実行フラグ１〜４を個別にＯＦＦに設定する。
【００１６】
こうすることで、ＳＣを書き換える可能性がある所定のＳＣ(ＳＣ３)が実行された後、ＳＣ１〜４の領域をメモリチェックするので、ＳＣ１〜４の書き換えを検出できる。また、所定のＳＣ３が実行された後も、ＳＣ１〜４の領域は一度しかメモリチェックされないので、メモリチェックによるＣＰＵ負荷の増大を抑制できる。
【００１７】
〔構成例〕
図２は、電子制御装置のブロック図の一例を示す。電子制御装置１００は、入力Ｉ／Ｆ１１、電源回路１４、マイクロコンピュータ１２、及び、出力Ｉ／Ｆ１３を有する。この他、ＣＡＮコントローラのような他の電子制御装置と通信するための通信装置等を有しているが、図示を省略した。
【００１８】
車載される電子制御装置１００には種々のものがある。例えば、ＨＶ−ＥＣＵ（（Electronic  Control  Unit）、エンジンＥＣＵ、ブレーキＥＣＵ、ボディＥＣＵ、パワステＥＣＵ、ナビゲーションＥＣＵ（ＡＶ・情報処理ＥＣＵ）、ゲートウェイＥＣＵ等が知られている。本実施例の電子制御装置１００はこれら機能の違いに影響されることなく、メモリチェックすることが可能である。
【００１９】
電源回路１４はＩＧ−ＳＷ１５のＯＮ／ＯＦＦを検出する。ＩＧ−ＳＷ１５のＯＮを検出した場合、電源回路１４はバッテリ１６から供給される電力を必要に応じて降圧して、入力Ｉ／Ｆ１１、マイクロコンピュータ１２及び出力Ｉ／Ｆ１３に供給する。また、ＩＧ−ＳＷ１５のＯＦＦを検出した場合、電源回路１４は各回路への電力の供給を停止するが、例えば、ＲＡＭ２５にだけ電力を供給してパラメータを保持するとしてもよい。このようなＩＧ−ＯＦＦ時の省電力制御により、電子制御装置１００は、ＩＧ−ＯＮ時に演算した（学習した）パラメータを、次回のＩＧ−ＯＮ後に使用でき、操作性などを向上させることができる。
【００２０】
入力Ｉ／Ｆ１１には、各種のセンサが接続されている。入力Ｉ／Ｆ１１はマルチプレクサとして機能し、各センサの検出信号を時分割又は優先度に基づき読み出し、センサの識別情報と共にマイクロコンピュータ１２のＡ／Ｄ２１又はＩ／Ｏ２２に送信する。なお、マイクロコンピュータ１２はどのセンサからの入力かを、識別情報ではなく動作クロックにより識別してもよい。また、入力Ｉ／Ｆ１１は、ＣＰＵからの指示によりセンサから検出信号を取得する場合と、指示がなくてもセンサから検出信号を取得する場合がある。
【００２１】
マイクロコンピュータ１２は、バスを介してＣＰＵ２３と接続されたＡ／Ｄ２１、Ｉ／Ｏ２２、フラッシュＲＯＭ２４、ＲＡＭ２５、及び、Ｉ／Ｏ２６を有する。Ｉ／Ｏ２２は、入力Ｉ／Ｆ１１から入力された検出信号を検出信号の種別と共に、割込みなどの仕組みを利用してＣＰＵ２３に通知する。また、Ａ／Ｄ２１はアナログの検出信号をデジタルの検出信号に変換する回路であり、変換後の検出信号を検出信号の種別と共に、割込みなどの仕組みを利用してＣＰＵ２３に通知する。
【００２２】
ＣＰＵ２３は、フラッシュＲＯＭ２４に記憶されているプログラムを実行して、検出信号の読み取り、演算、マップ引き、ＲＡＭ２５への書き込み又はＩ／Ｏ２６への出力を行う。演算内容は電子制御装置１００の種類や、後述するＳＣ１〜４によって異なる。フラッシュＲＯＭ２４に記憶されているプログラムについては後述する。なお、フラッシュＲＯＭ２４は、不揮発メモリであればよく、例えば、磁気抵抗RAM（MRAM）、強誘電体メモリ（FeRAM）、PCM（相変化メモリ）、ReRAM（抵抗変化型メモリ）などでもよい。
【００２３】
後段のＩ／Ｏ２６は、ＣＰＵ２３からの指示により制御対象の識別情報と共に演算結果を出力Ｉ／Ｆ１３に出力する。出力Ｉ／Ｆ１３は、各種のアクチュエータと接続されている。出力Ｉ／Ｆ１３は、例えばＤ／Ａ変換した電圧値等をアクチュエータに出力することでアクチュエータを制御する。また、出力Ｉ／Ｆ１３は例えば、スイッチ素子であり、ソレノイドやリレーなどの開閉を制御する。また、出力Ｉ／Ｆ１３は例えば、ドライバ回路であり、直流電圧を交流電圧に変換してモータの回転数を制御する。
【００２４】
電子制御装置１００がＨＶ−ＥＣＵの場合、電子制御装置１００は、エンジン出力及びモータ出力をそれぞれ決定する処理、バッテリ１６のＳＯＣを制御する処理、などを行う。入力Ｉ／Ｆ１１にはアクセル開度、車速、モータ回転角、エンジン回転数等が入力される。ＣＰＵ２３は、マップなどを参照して最適な燃費効率のエンジン出力及びモータ出力をそれぞれ決定し、出力Ｉ／Ｆ１３からエンジンＥＣＵやモータＥＣＵに演算した出力を要求する。
【００２５】
電子制御装置１００がエンジンＥＣＵの場合、電子制御装置１００は、燃料噴射量の制御、点火時期制御、スロットル開度制御等を行う。入力Ｉ／Ｆ１１にはアクセル開度、車速、エンジン回転数等が入力される。ＣＰＵ２３は、燃料噴射量や点火タイミング、スロットル開度を決定し、出力Ｉ／Ｆ１３から各種のアクチュエータに制御信号を出力する。
【００２６】
また、電子制御装置１００がブレーキＥＣＵの場合、ブレーキＥＣＵは各車輪のホイルシリンダ圧を制御する。入力Ｉ／Ｆ１１には車速、減速度、ストップランプスイッチ等が入力される。ＣＰＵ２３は車速からスリップ等を検出するとブレーキアクチュエータの複数の電磁開閉弁の開閉状態を決定し、出力Ｉ／Ｆ１３からブレーキアクチュエータに制御信号を出力する。
【００２７】
図３は、フラッシュＲＯＭ２４に記憶されたＳＣ１〜ｎとその領域を説明する図の一例である。フラッシュＲＯＭ２４は第１〜第ｎ領域まで複数の領域に区分されている。実際にフラッシュＲＯＭ２４に領域が明示されているのではなく、１つのＳＣが記憶されているアドレス範囲が１つの領域である。本実施形態では、ＳＣ１〜ｎを区別しない場合又は全てのＳＣ１〜ｎをまとめてプログラムと称している。フラッシュＲＯＭ２４は不揮発メモリなので領域は固定である。
【００２８】
ディーラなどで１つ以上のＳＣが更新された場合、領域の区分が変わる場合があるが、この場合は、更新後において１つのＳＣが占めるアドレス範囲が１つの領域となる。なお、ＳＣが更新された場合、後述するＳＣ領域テーブルやサム値テーブルも更新されるので、メモリチェックに支障はない。
【００２９】
各領域には、ＳＣのプログラム（ロジック部分）とＳＣが使用するデータ（マップなど）が対に記憶される。データが複数ある場合もあるし、データがないＳＣもあり得る。また、プログラム（ロジック部分）にデータが記述されている場合もある。
【００３０】
例えば、電子制御装置１００がＨＶ−ＥＣＵの場合、ＳＣ１〜ｎには、エンジン出力及びモータ出力をそれぞれ決定する処理に対応するＳＣ、バッテリ１６のＳＯＣを制御する処理に対応するＳＣが含まれる。また、ハイブリッド車に特有の機能ではないが、定速で走行する定速走行機能や先行車両との車間を保って追従走行する追従走行機能を提供するＳＣが含まれる。
【００３１】
なお、ＳＣ１〜ｎのいずれか１つ以上のＳＣはＰＦ（プラットフォーム）であり、メモリチェックを行うメモリチェック部３１の機能を備えている。この他、ＰＦには、デバイスドライバやミドルウェア等が含まれている。
【００３２】
本実施形態では、各ＳＣのＡＳＩＬ（Automotive  Safety  Integrity  Level）が定められている。ＡＳＩＬにはＡ〜Ｄ、ＱＭの安全性レベルがあり、Ｄ＞Ｃ＞Ｂ＞Ａ＞ＱＭの順に安全性レベルが高い。ＡＳＩＬは、ハザード（障害）を避けるために達成する必要のある安全性のレベルである。ＡＳＩＬの決定に際しては、例えば、ハザードによって生じる被害の大きさ、ハザードの生じる頻度、ハザードが生じた場合の制御難易度がハザード毎に検討される。したがって、安全性に影響し、よく使用され、異常により対応が困難な状況をもたらす可能性が高いＳＣほどＡＳＩＬが高くなる傾向になる。このような観点から、メーカや開発者は、各ＳＣの安全性レベルをＱＭ、Ａ〜Ｄのいずれかに決定しており、安全性レベルに応じた設計がなされている。例えば、ブレーキを制御するＳＣ、パワーステアリングを制御するＳＣはＡＳＩＬが高く、直接、走行制御に影響しにくいナビやＡＶ系のＳＣのＡＳＩＬは低くなる。図の例では、ＳＣ１はＡＳＩＬ−Ａ、ＳＣ２はＡＳＩＬ−Ｂ、ＳＣ３はＡＳＩＬ−ＱＭ、ＳＣｎはＡＳＩＬ−Ｃ、となっている。また、各ＳＣの領域のメモリチェックを行うＰＦは、最もＡＳＩＬが高いＳＣと同じＡＳＩＬに設定される（図の例ではＡＳＩＬ−Ｃ）。
【００３３】
ここで、本実施形態では、ＡＳＩＬがＡ以上のＳＣは、プログラムが想定外の動作をすることがないように設計されている。想定外の動作とは例えば無限ループに陥ったり、デッドロックしたり、他のＳＣを実行したりすることが挙げられる。
【００３４】
一方、ＡＳＩＬがＱＭのＳＣは、例えば他のＳＣの領域にアクセスする可能性がある。アクセスしただけではＳＣを書き換えることはないが、本実施形態では監視を強化するため、書き換わる可能性を考慮して処理を行う。ＡＳＩＬ−ＱＭのＳＣは複数あってもよい。なお、ＡＳＩＬ−ＱＭのＳＣは、例えば、イモビライザの照合を行うＳＣや車両の存在を歩行者に気付かせる気づき音（例えば、擬似的なエンジン音）を再生するＳＣが挙げられる。
【００３５】
なお、ＡＳＩＬがＡ以上のＳＣであっても、人間、外部の情報処理装置、電磁波などが故意又は偶然、フラッシュＲＯＭ２４のＳＣを書き換える可能性がある。
【００３６】
〔メモリチェック部の機能〕
図４は、メモリチェック部３１の機能を説明する図の一例である。図４では、電子制御装置１００はＳＣ１〜４の４つのＳＣを有している。そして、本実施形態では以下の前提を利用する。
(i)  ＳＣ１〜４のＡＳＩＬが全て同じでない
(ii)  ＡＳＩＬが所定値以下のＳＣは想定外の動作をしてプログラムを書き換えるおそれがある（ＡＳＩＬが所定値より大きいＳＣは想定外の動作をしてプログラムを書き換えることがない）
(i)については、１つの電子制御装置１００に２種類以上のＡＳＩＬが存在することを意味する。図４の例ではＡ，Ｂ，ＱＭの３種類のＡＳＩＬが存在する。(ii)については、ＡＳＩＬが所定値以下のＡＳＩＬのＳＣはＳＣ３である。また、ＡＳＩＬと比較される所定値は、ＡＳＩＬに応じて開発者等がどの程度、品質レベルを設計しているかに依存する。例えば、ＡＳＩＬがＡ以上のＳＣについて、想定外の動作しないという品質レベルに基づき設計されている場合、所定値はＱＭである。また、例えば、ＡＳＩＬがＢ以上のＳＣについて想定外の動作をしないという品質レベルに基づき設計されている場合、所定値はＡである。このように、ＡＳＩＬと比較される所定値はメーカや開発者が設定できる。本実施形態ではＡＳＩＬと比較される所定値をＱＭとする。
【００３７】
ＡＳＩＬに基づき品質レベルを設計することで、メモリ異常発生（ＳＣの書き換え）条件を明確にすることができる。すなわち、ＡＳＩＬが所定値以下のＳＣが実行された場合、ＳＣの書き換えが発生するおそれがあると判断できるので、ＡＳＩＬが所定値以下のＳＣが実行された場合に、メモリチェックすればよい。こうすることで、過不足のないメモリチェックが可能となる。
【００３８】
本実施形態では、ＩＧ−ＯＮにより、ＣＰＵ２３が入力Ｉ／Ｆ１１、出力Ｉ／Ｆ１３の死活チェック、レジスタの初期化等の初期処理を行い、ＳＣ１〜３の実行を開始する。ＰＦは他のアプリ的なＳＣ１〜３と異なり、入出力処理を行うなど、他のＳＣ１〜３に共通の機能を提供するため、他のＳＣ１〜ＳＣ３から呼び出されることで実行される。ＳＣ１、２は、例えば時分割に順次、実行される。すなわち、ＣＰＵ２３にＳＣ１が割り当てられ、ＳＣ１による制御が必要であればＳＣ１が処理を行う。ＳＣ１による制御が必要でなければ、ＳＣ１は処理を行わない。この後、ＳＣ２がＣＰＵ２３に割り当てられ、ＳＣ２も同様に、必要であれば処理を行う。ＳＣ２まで実行が完了するとＣＰＵ２３にはＳＣ１が割り当てられる。
【００３９】
ＳＣ３は、車載装置を制御するＳＣではないので、例えば、ＳＣ１、２がＮ回実行されると１回実行されるなど、不定期に実行される。または、何らかのイベント割込みにより実行されてもよいし、タイマ割込みで定期的に実行されてもよい。ＳＣ３の実行後は、ＳＣ１が実行される。
【００４０】
そして、各ＳＣ１〜３は、好ましくは処理の最初に（又は、少なくとも制御に必要な処理（センサの検出信号の取得など）を開始する前に）メモリチェック部３１を呼び出す関数を実行する。したがって、ＣＰＵ２３は以下の順にＳＣを実行する
※ＳＣ１→メモリチェック部（ＳＣ４）→ＳＣ１
ＳＣ２→メモリチェック部（ＳＣ４）→ＳＣ２（※に戻る）
また、ＳＣ３が実行された場合、ＳＣ３の実行後、ＳＣ１が実行される。
【００４１】
ＳＣ３→メモリチェック部（ＳＣ４）→ＳＣ３（※に戻る）
チェック履歴テーブル３３は、ＩＧ−ＯＮの後、メモリチェック部３１がＳＣ１〜４の領域をメモリチェックしたことが登録されるテーブルである。また、実行フラグ３４は、ＳＣ１〜４に対応したＳＣ１〜４と同じ数の実行フラグ１〜４を有している。実行フラグ１〜４は、ＡＳＩＬがＱＭのＳＣ３が実行された際に、ＳＣ３がＯＮに設定するフラグである。また、メモリチェック部３１は、ＳＣ１〜４の領域をメモリチェックすると、チェックしたＳＣに対応する実行フラグ１〜４をＯＦＦに設定する。
【００４２】
なお、メモリチェック部は、ＳＣ３の領域をチェック対象外とすることもできる。ＳＣ３のＡＳＩＬはＱＭであるため、異常監視の必要性が低いためである。ＳＣ３の領域をチェック対象外としてもＡＳＩＬ−Ａ以上のＳＣの領域はメモリチェックされているので、異常は検出可能である。このように、ＳＣ３の領域のチェックを任意とすることで、ＣＰＵの負荷を低減できる。
【００４３】
メモリチェック部３１は、チェック履歴テーブル３３を参照して、メモリチェックを行うか否かを判定する。メモリチェックを行う場合、ＳＣ１〜４毎にメモリチェックを行う。メモリチェックの方法は例えばチェックサムとする。メモリチェック部３１は、ＳＣ領域テーブル３５とサム値テーブル３６を参照して、各領域毎にチェック結果が正常か否かを判定する。ＳＣ領域テーブル３５には、各ＳＣの領域のアドレス範囲が登録されている。サム値テーブル３６には各ＳＣのサム値が登録されている。メモリチェック部３１は、各ＳＣの領域のbit（１の場合は１を足し、０の場合は加算しない）の合計を算出し、合計値がサム値と一致するか否かに基づきチェック結果が正常か否かを判定する。なお、ＳＣ領域テーブル３５やサム値テーブル３６はメモリチェック部３１に記述されていてもよい。
【００４４】
なお、メモリチェック部３１は、１つのＳＣの全てのbitの合計を求めるのでなく、奇数アドレス又は偶数アドレスのみの合計を求めたり、アドレスがｎの倍数になるアドレスのみの合計を求めるなどしてもよい。こうすることでメモリチェック時間を短縮できる。
【００４５】
フェールセーフ部３２は、合計値がサム値と一致しなかった場合に、フェールセーフ処理を行う。フェールセーフ処理は、例えば、異常検出の記録、再度のメモリチェック、以上が検出された領域のＳＣの実行禁止、マイコンのリセット等である。
【００４６】
〔動作手順〕
図５は、メモリチェック部３１の動作手順を示すフローチャート図の一例を示す。
運転者がブレーキペダルを踏み込みながらスタートボタンを押下すると、ＩＧ−ＳＷ１５がＯＮとなる。これにより、電子制御装置１００は初期処理を行い、ＳＣ１〜ＳＣ４の実行を開始する。
【００４７】
ＣＰＵ２３がＳＣ１の実行を開始すると、ＳＣ１がメモリチェック部３１を呼び出す。メモリチェック部３１は上記のようにＰＦの一部なので、メモリチェック部３１がＳＣ１をメモリチェックする前にＰＦのような各ＳＣに共通に使用される領域をメモリチェックすることが好ましい。このため、メモリチェック部３１は、ＳＣ１をメモリチェックする前に共通領域（ＳＣ４）のメモリチェックを行う（Ｓ１０）。この処理については後述する。
【００４８】
次に、メモリチェック部３１は、ＩＧ−ＯＮ後、初めてＳＣ１を実行するか否かを判定する（Ｓ２０）。すなわち、メモリチェック部３１は、チェック履歴テーブル３３を参照し、ＳＣ１の領域がチェック済みになっているか否かを判定する。
【００４９】
チェック履歴テーブル３３のＳＣ１の領域がチェック済みでない場合（Ｓ２０のＹｅｓ）、メモリチェック部３１はＳＣ１の領域をメモリチェックする（Ｓ３０）。
【００５０】
メモリチェック後、メモリチェック部３１はチェック履歴テーブル３３のＳＣ１をチェック済みに変更する（Ｓ４０）。
【００５１】
チェック履歴テーブル３３のＳＣ１の領域がチェック済みの場合（Ｓ２０のＮｏ）、メモリチェック部３１は、ＳＣ３が実行された後、初めてＳＣ１を実行するか否かを判定する（Ｓ５０）。すなわち、メモリチェック部３１は、実行フラグ１がＯＮであるかを判定する。実行フラグ１がＯＮの場合、メモリチェック部３１がＳＣ１の領域をメモリチェックした後（実行フラグ１をＯＦＦにした後）、ＳＣ３が実行されたことを意味する。
【００５２】
ＳＣ３実行後、初めてＳＣ１を実行する場合（Ｓ５０のＹｅｓ）、メモリチェック部３１はＳＣ１の領域をメモリチェックする（Ｓ６０）。
【００５３】
また、メモリチェック部３１は実行フラグ１をＯＦＦに設定する（Ｓ７０）。
【００５４】
この後、メモリチェック部３１は、チェック結果が正常か否かを判定する（Ｓ８０）。チェック結果が正常でない場合（Ｓ８０のＮｏ）、フェールセーフ部３２がフェールセーフ処理を行う（Ｓ９０）。例えば、異常検出の記録、再度のメモリチェック、マイコンのリセット等を行う。
【００５５】
チェック結果が正常だった場合（Ｓ８０のＹｅｓ）、メモリチェック部３１は処理をＳＣ１に戻す。これによりＳＣ１が実行される（Ｓ１００）。
【００５６】
図６（ａ）は、ステップＳ１０において、メモリチェック部３１が共通領域（ＳＣ４）のメモリチェックを行う手順を示すフローチャート図の一例である。全体的な手順は図５と同様である。
【００５７】
まず、メモリチェック部３１は、共通領域のＳＣがＩＧ−ＯＮ後、初めて実行されか否かを判定する（Ｓ１０１）。すなわち、メモリチェック部３１は、チェック履歴テーブル３３を参照し、ＳＣ４の領域がチェック済みになっているか否かを判定する。
【００５８】
チェック履歴テーブル３３のＳＣ４の領域がチェック済みでない場合（Ｓ１０１のＹｅｓ）、メモリチェック部３１はＳＣ４の領域をメモリチェックする（Ｓ１０２）。
【００５９】
メモリチェック後、メモリチェック部３１はチェック履歴テーブル３３のＳＣ４をチェック済みに変更する（Ｓ１０３）。
【００６０】
チェック履歴テーブル３３のＳＣ４の領域がチェック済みの場合（Ｓ１０１のＮｏ）、メモリチェック部３１は、ＳＣ３が実行された後、初めてＳＣ４を実行するか否かを判定する（Ｓ１０４）。すなわち、メモリチェック部３１は、実行フラグ４がＯＮであるかを判定する。実行フラグ４がＯＮの場合、メモリチェック部３１がＳＣ４の領域をメモリチェックした後（実行フラグ４をＯＦＦにした後）、ＳＣ３が実行されたことを意味する。
【００６１】
ＳＣ３実行後、初めてＳＣ４を実行する場合（Ｓ１０４のＹｅｓ）、メモリチェック部３１はＳＣ４の領域をメモリチェックする（Ｓ１０５）。
【００６２】
また、メモリチェック部３１は実行フラグ４をＯＦＦに設定する（Ｓ１０６）。
このように、ＳＣ４についてはＳＣ１〜ＳＣ３のメモリチェックの前に付随してメモリチェックが行われる。ＳＣ２、ＳＣ３についてはＳＣ１と同様にメモリチェックされる。また、ＳＣ３の領域をチェック対象外とした場合は、ＳＣ３はメモリチェックされない。
【００６３】
ＳＣ３のメモリチェックについて補足する。
１．Ｓ２０においてチェック履歴テーブル３３のＳＣ３の領域がチェック済みでない場合、ＳＣ３の領域がメモリチェックされる（チェック履歴テーブル３３のＳＣ３の領域がＯＮになる）。
２．この後、ＳＣ３が実行されることで、実行フラグ１〜４がＯＮになる。
【００６４】
図６（ｂ）は、ＳＣ３が実行フラグ１〜４をＯＮに設定する手順を示すフローチャート図の一例である。
【００６５】
ＣＰＵ２３はＳＣ３を実行する（Ｓ２０１）。
【００６６】
ＳＣ３は、実行フラグ１〜４を全てＯＮに設定する（Ｓ２０２）。すなわち、すでにＯＮであればＯＮを維持し、ＯＦＦの場合はＯＮに設定する。
【００６７】
実行フラグ１〜４のＯＮにより、ＳＣ３の実行後は、ステップＳ５０の判定により、ＳＣ１〜ＳＣ３の全ての領域がメモリチェックの対象となる（ＳＣ３がチェック対象の場合）。また、実行フラグ４のＯＮにより、ＳＣ３の実行後は、ステップＳ１０４の判定により、ＳＣ４がメモリチェックの対象となる。
【００６８】
したがって、ＳＣ３が実行される頻度が多いと、結局、各ＳＣの実行前に各ＳＣの領域のメモリチェックが必要になるため、ＣＰＵ２３負荷の低減効果が低下してしまう。このため、上述したように、ＳＣ３については、ＳＣ１、２と比較して実行頻度が十分に小さくなるように（例えば、半分未満）設計することが有効になる。
【００６９】
なお、図５，６ではメモリチェック部３１がチェック履歴テーブル３３と実行フラグ１〜４を参照して、メモリチェックが必要か否かを判定している。しかし、メモリチェックの必要性はＳＣ１〜３が判定してもよい。チェック履歴テーブル３３と実行フラグを参照できれば、各ＳＣ１〜ＳＣ３がメモリチェックの必要性を判定できる。すなわち、各ＳＣ１〜ＳＣ３は、メモリチェックが必要であると判定した場合にメモリチェック部を呼び出す。呼び出すことで、ＳＣ４の領域もメモリチェックされる。
【００７０】
〔チェック履歴テーブル３３、実行フラグの遷移〕
図７は、チェック履歴テーブル３３及び実行フラグ１〜４の遷移例を示す図の一例である。
図７（ａ）：ＩＧ−ＯＮの前、チェック履歴テーブル３３のＳＣ１〜ＳＣ４は全て「未」、実行フラグ１〜４は全てＯＦＦである。
図７（ｂ）：ＩＧ−ＯＮによりＳＣ１が実行されると、メモリチェック部３１はＳＣ１の領域をメモリチェックするので、チェック履歴テーブル３３のＳＣ１が「済み」となる。また、ＳＣ１がメモリチェックされる前、メモリチェック部３１はＳＣ４の領域をメモリチェックするので、チェック履歴テーブル３３のＳＣ４が「済み」となる。
図７（ｃ）：次に、ＳＣ２が実行されると、メモリチェック部３１はＳＣ２の領域をメモリチェックするので、チェック履歴テーブル３３のＳＣ２が「済み」となる。
【００７１】
図７（ｃ）の後、ＳＣ１、２が実行されても、チェック履歴テーブル３３のＳＣ１，２、４の領域は「済み」であり、実行フラグ１〜４はＯＦＦのままなので、メモリチェックは行われない。
図７（ｄ）：次に、ＳＣ３が実行されると、メモリチェック部３１はＳＣ３の領域をメモリチェックするので、チェック履歴テーブル３３のＳＣ３が「済み」となる。一方、ＳＣ３が実行フラグ１〜４をＯＮに設定する。これにより、ＳＣ３が実行されたことを検出可能になる。
図７（ｅ）：次に例えばＳＣ１が実行されると、チェック履歴テーブル３３のＳＣ１が「済み」だが、実行フラグ１がＯＮなので、メモリチェック部３１はＳＣ１の領域をメモリチェックする。また、メモリチェック部３１は実行フラグ１をＯＦＦに設定する。また、メモリチェック部３１はＳＣ４の実行フラグ４がＯＮであることから、ＳＣ１がメモリチェックされる前、ＳＣ４の領域をメモリチェックする。また、メモリチェック部３１は実行フラグ４をＯＦＦに設定する。
図７（ｆ）：ＳＣ２が実行されると、チェック履歴テーブル３３のＳＣ２が「済み」だが、実行フラグ２がＯＮなので、メモリチェック部３１はＳＣ２の領域をメモリチェックする。また、メモリチェック部３１は実行フラグ２をＯＦＦに設定する。
図７（ｇ）：ＳＣ１が実行されても、チェック履歴テーブル３３のＳＣ１の領域は「済み」であり、実行フラグ１はＯＦＦのままなので、メモリチェック部はＳＣ１の領域をメモリチェックしない。
図７（ｈ）：ＳＣ２が実行されても、チェック履歴テーブル３３のＳＣ２の領域は「済み」であり、実行フラグ２はＯＦＦのままなので、メモリチェック部はＳＣ２の領域をメモリチェックしない。
図７（ｉ）：ＳＣ３が実行されると、チェック履歴テーブル３３のＳＣ３が「済み」だが、実行フラグ３がＯＮなので、メモリチェック部３１はＳＣ３の領域をメモリチェックする。また、メモリチェック部３１は実行フラグ３をＯＦＦに設定する。しかし、その後、ＳＣ３が実行されると、ＳＣ３は実行フラグ１〜４をＯＮに設定する。これにより、チェック履歴テーブル３３及び実行フラグ１〜４は、図７（ｄ）と同じ状態になり、ＳＣ１，２が実行された場合にはＳＣ１，２，４のメモリチェックが可能になる。
【００７２】
したがって、ＡＳＩＬがＱＭのＳＣ３が実行されない限り、メモリチェックを行う必要がなくＣＰＵ負荷を低減できる。一方、ＡＳＩＬがＱＭのＳＣ３が実行された場合、メモリチェック部３１は、ＳＣ１〜ＳＣ４の領域のメモリチェックを行うことができるので、異常を監視できる。
【００７３】
図８は、ＳＣ１〜ＳＣ４の領域のメモリチェックの有無を模式的に説明する図の一例である。なお、図８ではＳＣ４の実行を省略している。また、ＳＣ３のメモリチェックは行われない。
ｔ０：ＩＧ−ＯＮとなる
ｔ１：ＳＣ１の領域がメモリチェックされた後、ＳＣ１が実行される（この時、ＳＣ４の領域もメモリチェックされる。）。
ｔ２：ＳＣ２の領域がメモリチェックされた後、ＳＣ２が実行される。
ｔ３：ＳＣ１が実行されるが、ＳＣ１の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、ＳＣ３（ＱＭ）の実行がない場合、チェックが省略される。
ｔ４：ＳＣ２が実行されるが、ＳＣ２の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、ＳＣ３（ＱＭ）の実行がない場合、チェックが省略される。
ｔ５：ＳＣ３が実行される。ＳＣ３はＡＳＩＬが所定値以下なのでＳＣ３の領域はメモリチェックされない。
ｔ６：ＳＣ３の実行後、初めてＳＣ１が実行されるので、ＳＣ１の領域がメモリチェックされた後、ＳＣ１が実行される（この時、ＳＣ４の領域もメモリチェックされる。）。すなわち、ＳＣ３（ＱＭ）の実行後、初回の実行時はメモリチェックされる。
ｔ７：ＳＣ１が実行されるが、ＳＣ１の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、ＳＣ３（ＱＭ）の実行がない場合、チェックが省略される。
ｔ８：ＳＣ３の実行後、初めてＳＣ２が実行されるので、ＳＣ２の領域がメモリチェックされた後、ＳＣ２が実行される。すなわち、ＳＣ３（ＱＭ）の実行後、初回の実行時はメモリチェックされる。
ｔ９：ＳＣ２が実行されるが、ＳＣ２の領域はメモリチェックされない。すなわち、前回のメモリチェック以降、ＳＣ３（ＱＭ）の実行がない場合、チェックが省略される。
【００７４】
以上説明したように、本実施形態の電子制御装置は、ＩＧ−ＯＮの後は各ＳＣの領域をメモリチェックすることができる。また、想定外の動作を行う可能性があるＳＣが実行された後、最初にＳＣが実行される場合に限り、ＳＣの各領域毎にメモリチェックすることができる。したがって、ＳＣが書き換えられた可能性がある場合にのみメモリチェックすることができ、異常監視することでＣＰＵ負荷が増大しすぎることも、異常監視を怠ることも防止できる。
【符号の説明】
【００７５】
１１    入力Ｉ／Ｆ
１２    マイクロコンピュータ
１３    出力Ｉ／Ｆ
２４    フラッシュＲＯＭ
３１    メモリチェック部
３２    フェールセーフ部
３３    チェック履歴テーブル
３４    実行フラグ
３５    ＳＣ領域テーブル
３６    サム値テーブル
１００    電子制御装置
【図１】
2013143095.tif 000003
【図２】
2013143095.tif 000004
【図３】
2013143095.tif 000005
【図４】
2013143095.tif 000006
【図５】
2013143095.tif 000007
【図６】
2013143095.tif 000008
【図７】
2013143095.tif 000009
【図８】
2013143095.tif 000010