説明

電子制御装置及びマイクロコンピュータ

【課題】データの誤りを検出する機能を備えた電子制御装置及びマイクロコンピュータにおいて、データに誤りが生じた際の誤動作や異常動作を、処理負荷を増大させることなく抑制する。
【解決手段】電子制御装置におけるマイクロコンピュータ100では、予め定められた固定データを記憶するメモリ17が設けられ、RAM112から読み出されたデータについてデコーダ14によって誤りが検出された場合は、RAM112から読み出されたデータに代え、メモリ17が記憶する固定データが読み出されて演算に使用される。固定データについて、例えば正常値として扱われるよう定義付けしておくことで、RAM112から読み出されたデータに誤りが生じていた場合でもマイクロコンピュータ100及び電子制御装置が正常に動作するようになる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの誤りを検出する機能を備えた電子制御装置及びマイクロコンピュータに関する。
【背景技術】
【0002】
例えば車載エンジンの制御を司る電子制御装置では、その電子制御装置が備えるマイクロコンピュータが、各種データに基づいて、燃料噴射量の制御、点火時期の制御等のエンジン制御をリアルタイムに行う。
【0003】
そのようなマイクロコンピュータ或いは電子制御装置においては、データに誤りが生じた場合の障害を防止するため、データの誤りを検出・訂正する機能が搭載される場合がある。尚、データの誤りの検出が可能な機構としてEDC(Error Detection Code)機構が知られている。また、データの誤りの検出・訂正が可能な機構として、例えばECC(Error Correction Code)機構が知られている。
【0004】
図8は、マイクロコンピュータの構成の一例を表す図面である。
図8に示すマイクロコンピュータ100は、プログラムに従い動作するCPU110と、CPU110の演算結果等を記憶するRAM112と、データ保持用の電源が常時供給されるバックアップRAM114と、CPU110が実行するプログラム等を記憶するROM116と、周辺機能回路120,122,124,126とを備えている。周辺機能回路120〜126は、マイクロコンピュータ100の周辺機能としての例えば通信機能、タイマ機能、入力機能(入力ポート)、出力機能(出力ポート)、などを実現する回路である。
【0005】
図9は、図8のマイクロコンピュータ100に実装され得る、データのエラー(誤り)を検出するためのハード構成を表す図である。具体的に、RAM112或いはバックアップRAM114から読み出されるデータの誤りを検出する構成を表し(図9では、RAM112についてのみ記載)、前述のEDC機構に相当する。
【0006】
図9では、データの誤りを検出するために本来のデータとは別に付加される冗長データ(以下、検出用冗長データとも記載する)を用いて誤りを検出するようになっている。
図9に示すように、RAM112は、データ領域201と、冗長データ領域202とを有している。演算に用いられるデータであって、RAM112に一時的に格納されることとなるデータ(以下、WRITEデータとも記載する)は、RAM112のデータ領域201に格納される。また、エンコーダ132により、WRITEデータに基づき検出用冗長データが生成されるとともに、その生成された検出用冗長データは、冗長データ領域202に格納される。
【0007】
データ領域201に格納されたデータのうち、読み出し対象のデータはそのデータ領域201から読み出されてデコーダ130に入力されるとともに、その読み出し対象のデータに対応する検出用冗長データが冗長データ領域202から読み出されて同じくデコーダ130に入力される。
【0008】
デコーダ130では、エンコーダ132により検出用冗長データが生成される場合と同じルールで、データ領域201から読み出された読み出し対象のデータに基づき冗長データが生成される。そして、その生成された冗長データと、読み出し対象のデータに対応して冗長データ領域202から読み出された検出用冗長データとが比較されることによって、誤りが検出される。
【0009】
具体的に、デコーダ130において生成された冗長データと、冗長データ領域202から読み出された検出用冗長データとが一致すれば、データ領域201から読み出されたデータに誤りが生じていないと判断される。この場合、そのデータ領域201から読み出されたデータがそのままCPU110において使用されることとなる(READデータとしてCPU110に出力される)。
【0010】
一方、デコーダ130において生成された冗長データと、冗長データ領域202から読み出された検出用冗長データとが一致しなければ、データ領域201から読み出されたデータに誤りが生じていると判断される。この場合、デコーダ130により、データに誤りがあることを表すエラーフラグがセットされる。
【0011】
図10に、エンコーダ132、デコーダ130において実現される冗長データの生成に関わる演算式を示す。
エンコーダ132では、図10に示すようなチェック行列にWRITEデータ(図10の例では8ビット)がかけ合わされることにより、検出用冗長データが生成される。また、デコーダ130では、同じチェック行列にデータ領域201から読み出されたデータ(図10の例では8ビット)がかけ合わされることにより、冗長データが生成される。このように、エンコーダ132、デコーダ130では、同じチェック行列を用いて冗長データが生成される。なお、WRITEデータ、或いはデータ領域201から読み出されたデータが2バイト(16ビット)の場合は、そのデータが上位8ビットと下位8ビットとに分けられ、それぞれについて冗長データが生成される。つまり、2つの冗長データが生成される。WRITEデータ、或いはデータ領域201から読み出されたデータが4バイト(32ビット)の場合は、そのデータが8ビットずつ4分割され、同様にそれぞれについて冗長データが生成される。つまり、4つの冗長データが生成される。
【0012】
図11は、図8のマイクロコンピュータ100に実装され得る、データのエラー(誤り)を検出・訂正するための構成を表す図である。具体的に、RAM112或いはバックアップRAM114から読み出されるデータの誤りを検出・訂正する構成を表し(図11では、RAM112についてのみ記載)、前述のECC機構に相当する。
【0013】
図11におけるハード構成は、図9と同じである。そして、図11では、データの誤りを検出・訂正するために本来のデータとは別に付加される冗長データ(以下、訂正用冗長データとも記載する)が用いられて、誤りの検出・訂正が実現されるようになっている。
【0014】
具体的に、WRITEデータの書き込み時に、エンコーダ132によりそのWRITEデータに基づき訂正用冗長データが生成される。訂正用冗長データは、WRITEデータに対応付けてRAM112の冗長データ領域202に格納される。そして、データ領域201からのデータの読み出し時に、そのデータとともに訂正用冗長データが読み出されてデコーダ130に入力されるとともに、デコーダ130により、エンコーダ132が訂正用冗長データを生成するのと同じルールで、データ領域201から読み出されたデータに基づき冗長データが生成される。
【0015】
デコーダ130において、そのデコーダ130にて生成された冗長データと冗長データ領域202から読み出された訂正用冗長データとに基づき、データ領域201から読み出されたデータの誤りが検出されるとともに、誤りが検出された場合には誤りが生じたビットが特定され、誤りが訂正される。
【0016】
そして、訂正後のデータが、CPU110において使用されることとなる(READデータとしてCPU110に出力される)。
このようなECC機構では、1ビット分の誤りの訂正が可能とされている。複数ビット分の誤りについては、検出は可能であるが、訂正は確実なものではなく誤った値に訂正される場合もある。尚、データの誤りの検出・訂正の原理については、周知であるためここでは詳しい説明を省略する。
【0017】
図12は、EDC機構、或いはECC機構において、CPU110が実行する処理を表すフローチャートである。
まず、図12(A)に示す処理は、EDC機構においてCPU110が実行する処理として適用できるものである。ここではEDC機構に適用した場合について説明するが、ECC機構において適用しても良い。
【0018】
CPU110は、データをRAM112から読み出す旨の命令が発生すると、S310にて、そのRAM112のデータ領域201から読み出し対象のデータを読み出す。この際、その読み出し対象のデータに対応した検出用冗長データもRAM112の冗長データ領域202から読み出す。データ領域201から読み出されたデータ、及び冗長データ領域202から読み出された検出用冗長データは、デコーダ130に入力され、デコーダ130にて誤りの検出が行われる。
【0019】
次に、S320にて、RAM112のデータ領域201から読み出したデータが有効であるか否か、言い換えると、データに誤りが生じていないか否かを判定する。より具体的に、データの誤りの有無を表すエラーフラグを確認する。尚、前述のように、エラーフラグはデコーダ130によりセットされる。
【0020】
S320にてデータ領域201から読み出したデータが有効である(データに誤りが生じていない)と判定すると(S320:YES)、S330に移行し、その読み出したデータを用いたソフト処理を実行する。そしてその後、当該処理を終了する。
【0021】
一方、S320にてデータ領域201から読み出したデータが有効でない(データに誤りが生じている)と判定すると(S320:NO)、S340に移行し、エラー処理を実行する。エラー処理としては、例えば、エラーが生じたことを履歴として記録する処理、エラーの発生回数をカウントする処理、異常ランプを点灯させる処理、などがある。エラー処理の後は、当該処理(図12(A)の処理)を終了する。
【0022】
このように、EDC機構においては、エラーチェック(S320)が実施されるようにすることで、データに誤りが生じた場合にその誤りが生じたデータが所定のソフト処理に使用されないように構成することができる(S320:NO→S340)。
【0023】
図12(B)に示す処理は、ECC機構においてCPU110が実行する処理として適用できるものである。
CPU110は、データをRAM112から読み出す旨の命令が発生すると、S410にて、そのRAM112のデータ領域201から読み出し対象のデータを読み出す。この際、その読み出し対象のデータに対応した訂正用冗長データもRAM112の冗長データ領域202から読み出す。データ領域201から読み出されたデータ、及び冗長データ領域202から読み出された訂正用冗長データは、デコーダ130に入力され、デコーダ130にて誤りの検出・訂正が行われる。
【0024】
CPU110は、デコーダ130を介してデータ領域201から読み出されたデータを用いて、S420にて所定のソフト処理を実行する。そしてその後、当該処理を終了する。
【0025】
ECC機構では、データ領域201から読み出されたデータに誤りが生じていた場合にその誤りが訂正されるため(但し、訂正可能なのは1ビット分)、誤りが訂正されることを前提に図12(A)のS320のようなエラーチェックが実施されることなく、ソフト処理が実行されるように構成することができる。
【0026】
以上、データの誤りを検出・訂正する構成について説明したが、この点については、例えば、特許文献1,2にも記載されている。
【先行技術文献】
【特許文献】
【0027】
【特許文献1】特開平9−292312号公報
【特許文献2】特開平4−127340号公報
【発明の概要】
【発明が解決しようとする課題】
【0028】
前述のように、例えばEDC機構において、データの読み出し毎にソフト処理にてエラーチェックを実施することで、誤りが生じたデータが使用されることを回避できる。しかし、この場合、データの読み出し毎にエラーチェックを実施する必要があり、処理負荷が増大してしまう。特に、例えばRAM112において、テンポラリ領域やスタック領域として使用される領域については、データの読み書きの頻度が高くなるため、処理負荷の問題はますます大きくなる。尚、データの読み出し毎にエラーチェックを実施するのではなく、所定の周期でエラーチェックを実施するようにすることで処理負荷を抑えることも考えられるが、この場合、誤りが生じているデータについてエラーチェックが実施されることなく、その誤りが生じたデータがそのまま演算に使用されてしまうことも懸念される。
【0029】
一方、ECC機構では、データに誤りが生じた場合にその誤りが訂正される点に鑑み、誤りが訂正されることを前提にエラーチェックを実施しないように構成し、これにより処理負荷の問題を回避することもできる。しかしながら、ECC機構では、1ビット分の誤りは訂正できるものの、データに複数ビット分の誤りが生じた場合には、正しく訂正されない可能性もある。正しく訂正されなければ、誤りが生じたデータがそのまま演算に使用されることとなる。
【0030】
そして、マイクロコンピュータ100やそのマイクロコンピュータ100が搭載されたシステムにおいて、誤りが生じたデータが使用されると、誤動作や異常動作が生じるおそれがある。
【0031】
例えば車両において、車載エンジンの制御を司る電子制御装置は、リアルタイムに制御を実施するため、誤りが生じたデータが使用され続けてしまうと、車両の異常動作(オーバーランなど)が発生したりする懸念がある。このため、誤りが生じたデータについては、車両の異常動作の要因とならないよう即座にデータの訂正がなされることが重要である。
【0032】
本発明は、こうした問題に鑑みなされたもので、データの誤りを検出する機能を備えた電子制御装置及びマイクロコンピュータにおいて、データに誤りが生じた際の誤動作や異常動作を、処理負荷を増大させることなくより確実に防止することを目的とする。
【課題を解決するための手段】
【0033】
上記目的を達成するためになされた請求項1に記載の発明は、CPUと、CPUによってデータの読み書きが行われるメモリと、CPUによってメモリから読み出されるデータの異常を検出する異常検出手段と、を備えた電子制御装置において、CPUは、メモリから読み出したデータについて異常検出手段により異常が検出されると、その異常が検出されたデータに代え、予め定められた固定データを用いて演算を実行するようになっている。
【0034】
このような電子制御装置によれば、メモリから読み出されたデータに異常が生じていた場合に、その異常が生じたデータが演算に用いられることを防止し得る。そして、固定データを、例えばその電子制御装置を正常に動作させるようなデータに定義しておけば、メモリから読み出されたデータに異常が生じていた場合でも電子制御装置は固定データを用いて正常に動作し得るようになる。したがって、メモリから読み出されたデータに異常が生じていた場合に、電子制御装置においてその異常が生じたデータが使用されることで誤動作や異常動作が生じてしまうことを回避し、その電子制御装置を正常に動作させることを可能とし得る。しかも、異常が生じたデータに代えて固定データを使用するという簡単な構成により、処理負荷を抑えることができる。また、データに異常が生じた際のアプリケーションによる対応が不要となるため、このことからも処理負荷を抑えることができる。さらに、そのアプリケーションが不要となることから開発コストも抑えることができる。
【0035】
また、本発明の電子制御装置は、固定データを記憶する固定データ記憶手段を備え、CPUは、メモリから読み出したデータについて異常検出手段により異常が検出されると、固定データ記憶手段から固定データを読み出すようになっていても良い。
【0036】
これによれば、メモリから読み出されたデータに異常が生じていた場合に、CPUによって固定データ記憶手段から固定データを読み出すという簡単な構成で、電子制御装置の誤動作や異常動作を防止することができる。そして、そのような簡単な構成ならば、CPUの処理負荷を抑えることができる。
【0037】
また、本発明の電子制御装置は、出力側がCPUと接続され、入力側がメモリ及び固定データ記憶手段に接続され、メモリから読み出されたデータについて異常検出手段により異常が検出されると、そのメモリから読み出されたデータに代え、固定データ記憶手段から読み出される固定データをCPUに出力し得るセレクタを備えていても良い。
【0038】
尚、異常検出手段を回路として構成し、その異常検出手段を構成する回路を、メモリとセレクタとの間に設けても良い。このような構成によれば、メモリから読み出されたデータについて異常検出手段(回路)により異常が検出された場合に、固定データ記憶手段が記憶する固定データのみがCPUに出力され得るようになる。つまり、メモリ側のデータ(異常が生じたデータ)がCPUに出力されることを防止し得る。これによれば、確実かつ簡単に、メモリから読み出されたデータであって異常が生じたデータに代え、固定データがCPUに出力される(固定データがCPUにおいて演算に用いられる)ようになる。
【0039】
尚、異常検出手段がメモリから読み出されたデータについて異常を検出した場合に、その異常検出手段が異常を表す信号をセレクタに出力するようにし、セレクタは、異常を表す信号が入力されると、そのメモリから読み出されたデータに代え固定データ記憶手段から読み出されるデータを出力するように構成されていても良い。
【0040】
また、本発明の電子制御装置は、CPUによってメモリに書き込まれる書き込み対象のデータに基づき、予め定められたルールで冗長データを生成する書込時冗長データ生成手段を備え、CPUは、書き込み対象のデータとともに、その書き込み対象のデータに基づき書込時冗長データ生成手段により生成された冗長データもメモリに書き込むようになっていても良い。
【0041】
これによれば、その冗長データを用いて、メモリに書き込まれたデータ(メモリに書き込まれてその後読み出されたデータ)に異常が生じたか否かをより確実に検出し得るようになる。
【0042】
つまり、本発明のように、CPUによりメモリから読み出されるデータに基づき、前記ルールと同じルールで冗長データを生成する読込時冗長データ生成手段を備え、異常検出手段は、メモリから読み出されたデータである読出データについて、書込時冗長データ生成手段により生成された冗長データ(以下、書込時冗長データとも記載する)と、読込時冗長データ生成手段により生成された冗長データ(以下、読込時冗長データとも記載する)とを比較し、一致するか否かに基づきその読出データの異常を検出するよう構成すると良い。
【0043】
これによれば、メモリから読み出されたデータについて、書込時冗長データと読込時冗長データとが一致すれば、そのメモリから読み出されたデータは正常(データに異常が生じていない)と判別されるようにすることができる。逆に、メモリから読み出されたデータについて、書込時冗長データと読込時冗長データとが一致しなければ、そのメモリから読み出されたデータに異常が生じていると判別されるようにすることができる。つまり、異常を検出し得る。
【0044】
また、本発明の電子制御装置では、CPUがメモリから読み出したデータであって、重要度が所定の度合いより低いデータである低重要データについて、異常検出手段により異常が検出された場合、その低重要データに対応して固定データ記憶手段から読み出される固定データが電子制御装置による制御を安全側に動作させるためのフェールセーフ値として扱われるように構成されても良い。
【0045】
ここで、重要度が所定の度合いよりも低い低重要データとしては、車両の走行自体に直接の影響が無いようなデータを割り当てることが想定され得る。また、制御を安全側に動作させるためのフェールセーフ値とは、電子制御装置による通常の制御を継続させ得るためのデータ値であることを指す趣旨である。
【0046】
このような電子制御装置によれば、メモリから読み出されたデータであって低重要データに異常が生じ、その異常が生じた低重要データに代えて固定データが演算に用いられた場合に、電子制御装置は、その固定データに基づき安全側に動作し得る(通常の制御を継続し得る)ようになる。換言すると、電子制御装置による制御の緊急停止等を回避し得るようになる。
【0047】
また、本発明の電子制御装置は、CPUがメモリから読み出したデータであって、重要度が所定の度合い以上のデータである高重要データについて、異常検出手段により異常が検出された場合、その高重要データに対応して固定データ記憶手段から読み出される固定データが当該電子制御装置に異常が発生したことを表す異常値として扱われるように構成されていても良い。
【0048】
ここで、重要度が所定の度合い以上の高重要データとしては、車両の走行自体に直接影響するようなデータを割り当てることが想定され得る。また、異常が発生したことを表す異常値とは、電子制御装置による制御を中断(緊急停止)させ得るためのデータ値であることを指す趣旨である。これは、車両の走行自体に直接影響するデータに異常が生じたような場合には、制御を中断したほうがむしろ安全であることを想定したものである。
【0049】
このような電子制御装置によれば、メモリから読み出されたデータであって高重要データに異常が生じ、その異常が生じた高重要データに代えて固定データが演算に用いられた場合に、電子制御装置における制御が例えば中断(緊急停止)し得るようにすることができる。そして、これにより、安全性がより高いレベルで実現され得るようになる。
【0050】
また、本発明の電子制御装置は、CPUが複数のアプリケーションを実行可能に構成され、固定データは、複数のアプリケーションのそれぞれについてのフェールセーフ値を含み、アプリケーションの種類に応じて固定データの一部又は全部がフェールセーフ値として用いられるように構成されても良い。
【0051】
このような電子制御装置では、アプリケーションの種類に関わらず、メモリから読み出されたデータに異常が生じ、固定データが演算に用いられた場合に、固定データに基づきその電子制御装置が安全側に動作する(通常の制御を継続する)ようになり、汎用性が広がる。換言すると、どのようなアプリケーションにも適用可能となり得る。
【0052】
また、本発明の電子制御装置は、CPUが複数のアプリケーションを実行可能に構成され、固定データは、複数のアプリケーションのそれぞれについての異常値を含み、アプリケーションの種類に応じて固定データの一部又は全部が異常値として用いられるように構成されても良い。このような構成によれば、どのようなアプリケーションにも適用可能となり得る。
【0053】
また、本発明の電子制御装置は、CPUが浮動小数点数形式のデータに基づく演算を実行する機能を有し、固定データは、浮動小数点数形式の演算における非数として構成されても良い。
【0054】
浮動小数点数形式の演算において、非数は、演算結果が不正な値(無限大や定義できない値)であることを表すものである。例えば、浮動小数点数形式の演算では、0で除算した場合などに特殊な数値表現(即ち非数)を結果として返し、処理を続行することができる。
【0055】
このような電子制御装置では、メモリから読み出されたデータに異常が生じた場合に、非数が結果(読み出し結果)として返され、電子制御装置の誤動作や異常動作を生じさせることなく、処理が続行されるようになる。
【0056】
また、本発明は、CPUと、CPUによってデータの読み書きが行われるメモリと、異常検出手段と、を備えたマイクロコンピュータとして構成され得る。
異常検出手段は、CPUによってメモリから読み出されるデータの異常を検出する。
【0057】
そして、本発明では、CPUは、メモリから読み出したデータについて異常検出手段により異常が検出されると、その異常が検出されたデータに代え、予め定められた固定データを用いて演算を実行するようになっている。
【0058】
このような本発明によれば、メモリから読み出されたデータに異常が生じていた場合に、その異常が生じたデータが演算に用いられることを防止し得る。
つまり、メモリから読み出されたデータに異常が生じていた場合に、その異常が生じたデータが使用されることで誤動作や異常動作が生じてしまうことを回避し、ひいてはマイクロコンピュータを正常に動作させることを可能とし得る。
【0059】
尚、上述した電子制御装置のそれぞれの特徴及び機能を実現し得るマイクロコンピュータも本発明として構成し得る。
【図面の簡単な説明】
【0060】
【図1】本実施形態のマイクロコンピュータ100の構成を表す図である。
【図2】データの読み書きを実現するハード構成を表す図である。
【図3】データの読み書きを実現するハード構成及びソフト処理を表す図である。
【図4】エラーフラグのセット態様及び固定データの読み出し態様を表す図である。
【図5】正常値、異常値の判別に係る定義付けを説明する図である。
【図6】本実施形態の固定データ(浮動小数点数形式)の構成を表す図である。
【図7】本実施形態のマイクロコンピュータ100が実行する処理を表すフローチャートである。
【図8】マイクロコンピュータの構成の一例を表す図である。
【図9】EDC機構を表す図である。
【図10】冗長データの生成に関わる演算式を表す図である。
【図11】ECC機構を表す図である。
【図12】マイクロコンピュータのCPUにより実行される処理を表す図である。
【図13】車両ネットワークシステムの一例を表す図面である。
【図14】本実施形態の電子制御装置の構成を表す図面である。
【図15】データの読み書きを実現するハード構成及びソフト処理を表す図である
【図16】本実施形態の電子制御装置において実行される処理の流れを表すフローチャートである。
【図17】従来の処理の流れを表すフローチャートである。
【発明を実施するための形態】
【0061】
以下に、本発明の実施形態を図面に基づき説明する。
[第1実施形態]
図13は、本実施形態の車両ネットワークシステム200を表す構成図である。尚、図13に示す車両ネットワークシステム200は一例である。
【0062】
また、以下の説明において、ECUとは、電子制御装置のことである。
図13に示す車両ネットワークシステム200の例では、例えば、エンジン210の制御を司るエンジンECU220、ナビゲーション機能の制御を司るナビゲーションECU230、ドアのロック/アンロック等のボデー系の制御を司るボデーECU240、等がネットワーク290を介して通信可能に接続される。
【0063】
図14は、エンジンECU220の具体的構成を示す構成図である。
エンジンECU220は、前述したようにエンジン210の制御を司るものであり、マイクロコンピュータ100と、入力部81,82と、出力ドライバ83,84,85と、コネクタ86とを備えている。入力部81,82は、入力回路と、AD変換回路とから構成される。
【0064】
エンジンECU220は、アクセルセンサ71、スロットルセンサ72、ノッキングセンサ73、インジェクタ74、イグナイタ75、電子スロットル76等とコネクタ86を介して電気的に接続される。
【0065】
アクセルセンサ71は、ユーザのアクセル操作を介して制御されるアクセル開度を検出するためのセンサである。
スロットルセンサ72は、エンジン210(図13参照)への吸入空気量を制御する電子スロットル76のスロットル開度を検出するためのセンサである。
【0066】
ノッキングセンサ73は、エンジン210の振動レベルを検出するためのセンサである。
インジェクタ74は、エンジン210の気筒内に燃料を噴射するための装置である。
【0067】
イグナイタ75は、エンジン210の気筒内の混合気に点火するための装置である。
電子スロットル76については前述した通りである。
アクセルセンサ71からのセンサ信号(アナログ信号)は、入力部81を介してデジタル信号に変換され、マイクロコンピュータ100に入力される。同様に、スロットルセンサ72からのセンサ信号(アナログ信号)は、入力部82を介してデジタル信号に変換され、マイクロコンピュータ100に入力される。
【0068】
マイクロコンピュータ100は、アクセルセンサ71やスロットルセンサ72等から入力される信号が表す値を元に演算を行い、インジェクタ74、イグナイタ75、電子スロットル76等の駆動を制御する。具体的には、インジェクタ74の通電タイミングや通電期間を制御して、燃料噴射タイミングや燃料噴射量の制御を行う。また、イグナイタ75への通電タイミングを制御して、点火時期の制御を行う。また、電子スロットル76のスロットル開度を制御する。エンジンECU220は、このような制御をリアルタイムに行う。
【0069】
図1は、本実施形態のマイクロコンピュータ100の構成図である。尚、図1のマイクロコンピュータ100は、[背景技術]の欄にて説明した図8と同じであるため、ここでは説明を省略することとする。
【0070】
図2は、RAM112に対するデータの読み書きを実現するハード構成を表す図面である。尚、ここでは、RAM112の場合について説明するが、バックアップRAM114についても同様の構成が設けられている。
【0071】
図2において、デコーダ14と、エンコーダ18とを有している点、RAM112がデータ領域10及び冗長データ領域12を有している点は、図9と同じである。
つまり、図2では、図9と同様、WRITEデータはRAM112のデータ領域10に書き込まれるとともに、エンコーダ18によりWRITEデータに基づき検出用冗長データが生成され、その生成された検出用冗長データがRAM112の冗長データ領域12に書き込まれるようになっている。
【0072】
また、RAM112のデータ領域10から読み込まれたデータ、及びそのデータに対応して冗長データ領域12から読み込まれた検出用冗長データはデコーダ14に入力されるとともに、デコーダ14において、データ領域10から読み出されたデータについて誤りの検出が実行される。デコーダ14は、データ領域10から読み出されたデータについて誤りが検出された場合に、エラーフラグをセットするとともに、異常を表す異常信号を出力するようになっており、この異常信号は、後述するセレクタ16に入力されるように構成されている。尚、冗長データの生成に際しては、図10に示す演算式が用いられる。
【0073】
ここで、本実施形態のマイクロコンピュータ100は、図2に示すように、セレクタ16と、予め定められた固定データを記憶するメモリ17とを備えている。
セレクタ16は、入力側において、RAM112のデータ領域10、及びメモリ17と信号線を介して接続可能に構成される。そして、セレクタ16の出力側は、CPU110と接続される。
【0074】
このセレクタ16は、通常は、内部の入力側においてRAM112のデータ領域10側と接続される。この場合、そのデータ領域10から読み出されたデータがREADデータとしてCPU110側に出力される(CPU110により読み出される)。
【0075】
一方、デコーダ14から異常信号が入力されると、内部の入力側の接続を、メモリ17側に切り換える。この場合、そのメモリ17が記憶する固定データがREADデータとしてCPU110側に出力されるようになる(CPU110により読み出されるようになる)。
【0076】
図3を用いて、より具体的に説明する。
図3では、マイクロコンピュータ100のCPU110において実行される処理を示すとともに、ハード部における作用も示す。尚、図3において、CPU110が実行する処理は、図12(B)に示す処理と同じである。つまり、CPU110は、読み出したデータのソフト上でのエラーチェックを実行することなく、その読み出したデータを使用するようになっている。
【0077】
まず、図3におけるフローチャートを説明する。
CPU110は、データをRAM112から読み出す旨の命令が発生すると、S110にて、読み出し対象のデータの読み出しを行う。続いて、S120にて、読み出したデータを用いて所定のソフト処理を実行する。
【0078】
ソフト処理において、データが異常値と判別された場合は、システムダウンするようになっている。正常値と異常値との判別は、読み出し対象のアドレス毎(読み出し対象のRAM値毎)に異なる内容となる。この点については後述する。S120の後は、当該処理を終了する。
【0079】
次に、ハード構成における作用について説明する。
S110においては、RAM112におけるデータ領域10のうち、プログラムによって指示されるアドレスの領域から、データが読み出される。ここでは、アドレス4,5にまたがって2バイトのデータが読み出されるよう指示されているものとする。尚、RAM112において、各アドレスには1バイト(8ビット)のデータを格納可能である。
【0080】
アドレス4,5から読み出されたデータについては、前述のように、デコーダ14において、誤りの検出が行われる。
デコーダ14にて誤りが検出されなければ、セレクタ16の内部の入力側はRAM112のデータ領域10側に接続される。そして、図3において黒の太矢印にてデータの流れを示すように、RAM112のデータ領域10から読み出されたデータがセレクタ16を介してREADデータとして出力され、CPU110において演算で使用される。
【0081】
一方、アドレス4,5から読み出されたデータについて、デコーダ14にて誤りが検出されたならば、デコーダ14によってエラーフラグがセットされるとともに、セレクタ16に異常信号が入力される。この場合、セレクタ16の内部の入力側はメモリ17側に切り換えて接続される。そして、図3において白抜きの矢印にてデータの流れを示すように、メモリ17に記憶された固定データ(正確には固定データの一部)がセレクタ16を介してREADデータとして出力され、CPU110において演算で使用される。
【0082】
後述するが、エラーフラグがセットされるレジスタは4ビットからなり、アドレス4,5から読み出されたデータに誤りが生じていたならば、そのアドレス4,5に応じたビット位置にエラーフラグがセットされる。そして、エラーフラグがセットされたビット位置及び読み出し対象のデータのバイト数に応じて、固定データの一部又は全部が読み出されるようになっている。本例では、アドレス4,5にまたがって読み出した2バイトのデータに誤りが生じていた場合、固定データ「0xFFFF0000」のうち、「0x0000」の部分が読み出される。
【0083】
S120のソフト処理では、S110で読み出されたデータが、「0x0000」〜「0x9FFF」の範囲の値ならそのデータが正常値とみなされて所定の処理が実行される。一方、S110で読み出されたデータが「0xA000」〜「0xFFFF」の範囲の値ならそのデータが異常値とみなされてシステムダウンする。
【0084】
アドレス4,5にまたがって読み出されたデータに誤りが生じていた場合は、前述のようにメモリ17が記憶する固定データ「0xFFFF0000」のうち、「0x0000」が読み出される。その読み出されたデータ「0x0000」はソフト処理にて正常値と認識され、処理が継続される。このように、RAM112から読み出されたデータに誤りが生じていた場合に、メモリ17が記憶する固定データが読み出されることによって、マイクロコンピュータ100が搭載されるシステムがダウンしない(正常動作する)ようになっている。
【0085】
次に、図4を用いて、エラーフラグのセットについて、及び固定データの読み出しについて具体的に説明する。
図4(B)に示すが、前述したように、エラーフラグがセットされるレジスタは4ビットからなる。ここでは、各ビットを、ビット0、ビット1、ビット2、ビット3とする。
【0086】
アドレス値を4で割ったときの余りが3となるアドレス(以下、バイトレーンが「0x03」であるアドレス、とも記載する)から読み出されたデータに誤りが生じていた場合、ビット3にエラーフラグがセットされる。バイトレーンが「0x03」であるアドレスとは、具体的に、アドレス3,7,11,15,19,・・・251,255(図3参照)である。
【0087】
アドレス値を4で割ったときの余りが2となるアドレス(以下、バイトレーンが「0x02」であるアドレス、とも記載する)から読み出されたデータに誤りが生じていた場合、ビット2にエラーフラグがセットされる。バイトレーンが「0x02」であるアドレスとは、具体的に、アドレス2,6,10,14,18,・・・250,254(図3参照)である。
【0088】
アドレス値を4で割ったときの余りが1となるアドレス(以下、バイトレーンが「0x01」であるアドレス、とも記載する)から読み出されたデータに誤りが生じていた場合、ビット1にエラーフラグがセットされる。バイトレーンが「0x01」であるアドレスとは、具体的に、アドレス1,5,9,13,17,・・・249,253(図3参照)である。
【0089】
アドレス値を4で割ったときの余りが0となるアドレス(以下、バイトレーンが「0x00」であるアドレス、とも記載する)から読み出されたデータに誤りが生じていた場合、ビット0にエラーフラグがセットされる。バイトレーンが「0x00」であるアドレスとは、具体的に、アドレス0,4,8,12,16,・・・248,252(図3参照)である。
【0090】
そして、図4(A)に示すが、エラーフラグの位置、及び読み出し対象のデータのバイト数に応じて、メモリ17から、そのメモリ17が記憶する固定データの一部又は全部が読み出される。
【0091】
例えば、RAM112から読み出された1バイトのデータに誤りが生じていたなら、その読み出されたデータが格納されていたアドレスに応じて、メモリ17が記憶する固定データ「0xFFFF0000」は、「0xFF」」、「0xFF」、「0x00」、「0x00」の何れかに切り出されて読み出される。
【0092】
また、RAM112から読み出された2バイトのデータに誤りが生じていたなら、その読み出されたデータが格納されていたアドレスに応じて、メモリ17が記憶する固定データ「0xFFFF0000」は、「0xFFFF」、「0x0000」の何れかに切り出されて読み出される。
【0093】
また、RAM112から読み出された4バイトのデータに誤りが生じていたなら、メモリ17が記憶する固定データ「0xFFFF0000」はそのまま読み出される。
図4(A)において、バイトリード時の欄は、読み出し対象のデータが1バイトの場合を表し、ハーフワード時の欄は、読み出し対象のデータが2バイトの場合を表し、ワードリード時の欄は、読み出し対象のデータが4バイトの場合を表す。
【0094】
バイトリード時において(つまり、読み出し対象のデータが1バイトの場合)、ビット3にエラーフラグがセットされたならば、メモリ17が記憶する固定データ「0xFFFF0000」のうち、左端2桁分(1バイト分)の「0xFF」が読み出される。また、バイトリード時において、ビット2にエラーフラグがセットされたならば、メモリ17が記憶する固定データ「0xFFFF0000」のうち、中間の4桁における左寄りの2桁分(1バイト分)の「0xFF」が読み出される。また、バイトリード時において、ビット1にエラーフラグがセットされたならば、メモリ17が記憶する固定データ「0xFFFF0000」のうち、中間の4桁における右寄りの2桁分(1バイト分)の「0x00」が読み出される。また、バイトリード時において、ビット0にエラーフラグがセットされたならば、メモリ17が記憶する固定データ「0xFFFF0000」のうち、右端2桁分(1バイト分)の「0x00」が読み出される。
【0095】
次に、ハーフワードリード時(つまり、2バイトのデータが読み出される場合)であるが、まず、2バイトのデータがRAM112からどのように読み出されるかについて説明する。
【0096】
2バイトのデータが読み出される場合は、読み出し対象を2バイトとする旨が指定されるとともに、読み出し先のアドレスとしては、バイトレーンが「0x00」、又は「0x02」となるアドレスが指定される。つまり、アドレス0,2,4,6,・・・(図3参照)の何れかが指定される。そして、例えばアドレス0が指定されたなら、そのアドレス0、及びそのアドレス0と連続するアドレス1のデータが合わせて読み出される。
【0097】
つまり、アドレス0が指定されることによってアドレス0,1にまたがって2バイト分のデータが読み出される。アドレス2が指定された場合も同様に、アドレス2,3にまたがって2バイト分のデータが読み出される。
【0098】
次に、エラーフラグについて説明する。
RAM112から読み出された2バイトのデータにおいて、バイトレーンが「0x03」であるアドレスから読み出された部分に誤りが検出されれば、ビット3にエラーフラグがセットされる。同様に、バイトレーンが「0x02」であるアドレスから読み出された部分に誤りが検出されれば、ビット2にエラーフラグがセットされる。バイトレーンが「0x01」であるアドレスから読み出された部分に誤りが検出されれば、ビット1にエラーフラグがセットされる。バイトレーンが「0x00」であるアドレスから読み出された部分に誤りが検出されれば、ビット0にエラーフラグがセットされる。
【0099】
そして、ハーフワードリード時において、ビット3或いはビット2にエラーフラグがセットされたならば、メモリ17が記憶する固定データ「0xFFFF0000」のうち、左側4桁分(2バイト分)の「0xFFFF」が読み出される。また、ハーフワードリード時において、ビット1或いはビット0にエラーフラグがセットされたならば、メモリ17が記憶する固定データ「0xFFFF0000」のうち、右側4桁分(2バイト分)の「0x0000」が読み出される。
【0100】
次に、ワードリード時(つまり、4バイトのデータが読み出される場合)であるが、まず、4バイトのデータがRAM112からどのように読み出されるかについて説明する。
4バイトのデータが読み出される場合は、読み出し対象を4バイトとする旨が指定されるとともに、読み出し先のアドレスとしては、バイトレーンが「0x00」となるアドレスが指定される。つまり、アドレス0,4,8,12・・・(図3参照)が指定される。そして、例えばアドレス0が指定されたなら、そのアドレス0、及びそのアドレス0から連続するアドレス1〜3までのデータが合わせて読み出される。
【0101】
つまり、アドレス0が指定されることによってアドレス0〜3にまたがって4バイト分のデータが読み出される。
次に、エラーフラグについて説明する。
【0102】
RAM112から読み出された4バイトのデータにおいて、バイトレーンが「0x03」であるアドレスから読み出された部分に誤りが検出されれば、ビット3にエラーフラグがセットされる。同様に、バイトレーンが「0x02」であるアドレスから読み出された部分に誤りが検出されれば、ビット2にエラーフラグがセットされる。バイトレーンが「0x01」であるアドレスから読み出された部分に誤りが検出されれば、ビット1にエラーフラグがセットされる。バイトレーンが「0x00」であるアドレスから読み出された部分に誤りが検出されれば、ビット0にエラーフラグがセットされる。
【0103】
そして、ハーフワードリード時において、ビット3〜0の何れかでもエラーフラグがセットされたならば、メモリ17が記憶する固定データ「0xFFFF0000」がそのまま読み出される。
【0104】
このような本実施形態では、メモリ17から読み出されたデータ(固定データの一部又は全部)がCPU110が実行する処理において正常値とみなされるよう、RAMマッピングが行われる。より具体的に、ソフトウェアの設計時に、メモリ17から読み出されるデータが正常値とみなされるような定義付けがなされる。例えば、図3の例では、メモリ17から読み出されるデータ「0x0000」は正常値とみなされるよう定義付けがなされている(S120参照)。ところで、図3における定義付けは、その図3の場合、即ち、バイトレーンが「0x00」であるアドレスからバイトレーンが「0x01」であるアドレスにまたがって2バイト分のデータを読み出す場合に限った定義付けである。
【0105】
他の定義付けについて、図5に示す。
図5(A)は、バイトリード時(1バイトデータの読み出しの際)であって、読み出し対象のRAM112のアドレスが、バイトレーンが「0x00」、「0x01」であるアドレスの場合である。この場合、読み出されたデータ(READデータ)は、「0x00」〜「0x9F」の範囲の値なら正常値とみなされ、「0xA0」〜「0xFF」の範囲の値なら異常値とみなされるようになっている。このため、RAM112から読み出されたデータに誤りが生じていた場合にメモリ17から読み出されることとなるデータ「0x00」は、正常値として扱われることとなる。
【0106】
図5(B)は、バイトリード時であって、読み出し対象のRAM112のアドレスが、バイトレーンが「0x02」、「0x03」であるアドレスの場合である。この場合、READデータは、「0x00」〜「0x3F」の範囲の値なら異常値とみなされ、「0x40」〜「0xFF」の範囲の値なら正常値とみなされるようになっている。このため、RAM112から読み出されたデータに誤りが生じていた場合にメモリ17から読み出されることとなるデータ「0xFF」は、正常値として扱われることとなる。
【0107】
図5(C)は、図3の例と同じである。
図5(D)は、ハーフワードリード時(2バイトデータの読み出しの際)であって、データの読み出しの際に指定されるRAM112のアドレスが、バイトレーンが「0x02」であるアドレスの場合である。この場合、READデータは、「0x0000」〜「0x3FFF」の範囲の値なら異常値とみなされ、「0x4000」〜「0xFFFF」の範囲の値なら正常値とみなされるようになっている。このため、RAM112から読み出されたデータに誤りが生じていた場合にメモリ17から読み出されることとなるデータ「0xFFFF」は、正常値として扱われることとなる。
【0108】
図5(E)は、ワードリード時(4バイトデータの読み出しの際)である。尚、データの読み出しの際に指定されるRAM112のアドレスは、バイトレーンが「0x00」であるアドレスとなる。この場合、READデータは、「0x00000000」〜「0x10000000」の範囲の値なら異常値とみなされ、「0x10000001」〜「0xFFFFFFFF」の範囲の値なら正常値とみなされるようになっている。このため、RAM112から読み出されたデータに誤りが生じていた場合にメモリ17から読み出されることとなるデータ「0xFFFF0000」は、正常値として扱われることとなる。
【0109】
以上説明したように、本実施形態においては、マイクロコンピュータ100において、RAM112から読み出されたデータに誤りが検出された場合、その誤りが検出されたデータに代え、メモリ17が記憶する固定データが即座に読み出されて演算に使用されるようになっている。そして、メモリ17から読み出される固定データは、マイクロコンピュータ100における演算において、そのマイクロコンピュータ100、ひいてはエンジンECU220を正常に動作させる正常値として予め定義されている。ここで、正常値とは、マイクロコンピュータ100(ひいてはエンジンECU220)の動作を(正常に)継続させるためのデータであることを指す。
【0110】
このような本実施形態においては、RAM112から読み出されたデータに誤りが生じていた場合に、データに誤りが生じていることによって(誤りが生じているデータが演算に使用されることによって)マイクロコンピュータ100或いはエンジンECU220が誤動作してしまったり異常動作してしまったりする、ということを防止することができる。
【0111】
ところで、アプリケーションの種類によっては、安全側のフェールセーフ値が、フラグ情報として、「1」のみで表されたり、或いは「0」のみで表されたりする。この点、本実施形態においては、固定データは、その半分が「1」で構成され、残り半分が「0」で構成され、「1」と「0」を同じ割合づつ含んでいる。そして、上記実施形態でも説明したように、例えば、固定データのうち「1」のみから構成される部分のデータ、及び固定データのうち「0」のみから構成される部分のデータ、の何れかが読み出されるように構成できる。このため、フェールセーフ値が「1」のみで表されるアプリケーション、フェールセーフ値が「0」のみで表されるアプリケーションの何れにも対応できる。
【0112】
尚、本実施形態において、デコーダ14が異常検出手段及び読込時冗長データ生成手段に相当し、メモリ17が固定データ記憶手段に相当し、エンコーダ18が書込時冗長データ生成手段に相当している。
〈変形例〉
次に、変形例について、図15〜図17を用いて説明する。
【0113】
本変形例では、車両の制御に使用されるデータ(RAM112に記憶されるデータ)としては、重要度が所定の度合いよりも低いデータ(以下、低重要データとも記載する)と、重要度が所定の度合い以上のデータ(以下、高重要データとも記載する)と、があることを前提とする。
【0114】
データの重要度の高低は、例えばそのデータが車両の走行自体に直接影響するか否かに基づき定められる。
具体的には、車両の走行自体には影響しないデータ(車両の走行の可否を決定づけないデータ)を、低重要データとすることができる。尚、車両の走行性能を改善し得るデータについても、車両の走行自体には影響しないデータであれば、低重要データとしても良い。
【0115】
一方、車両の走行自体に影響するデータ(車両の走行の可否を決定づけるデータ)を、高重要データとすることができる。
ここで、図15に基づき説明すると、本変形例では、RAM112のデータ領域10のうち、バイトレーンが「0x00」、「0x01」であるアドレスに低重要データが記憶されるようになっており、バイトレーンが「0x02」、「0x03」であるアドレスに高重要データが記憶されるようになっている。
【0116】
低重要データの例、及び高重要データの例とともに、本変形例の作用について以下に説明する。
まず、低重要データの一例としては、例えば学習値などがある。
【0117】
車両の走行に関連する学習値は、その車両の走行性能や走行状態を最適化するうえでは有用である。一方で、学習値自体がなくても、初期値或いはデフォルト値を用い、車両の走行は十分に可能である。
【0118】
例えば、エンジン210における点火時期を最適化するための学習値の一例について説明する。
車両では、ノッキングセンサ73によりエンジン210の振動レベルが検出され、その検出値に基づきノッキングの発生が検出される。エンジンECU220は、ノッキングが検出されると、エンジン210の点火時期を進角又は遅角することでノッキングの発生を抑制する。
【0119】
初期状態では、点火時期は最遅角側に設定される。そして、ノッキングセンサ73の検出値に応じて点火時期の調整量が学習され、その学習値がRAM112等に記憶される。
そして、本変形例において、このような学習値は、低重要データとして、前述のようにバイトレーンが「0x00」、「0x01」であるアドレスに記憶されるようになっている。
【0120】
RAM112から読み出された学習値について、誤りが検出された場合には、その学習値に代わって、メモリ17に記憶された固定データが読み込まれて使用される。そして、上記実施形態にて既に述べたように、バイトレーンが「0x00」、「0x01」であるアドレス(RAM112のアドレス)と、メモリ17の右寄り2バイト分の領域とが対応するようになっている。つまり、学習値のように、バイトレーンが「0x00」、「0x01」であるアドレスに記憶されるデータに対応する固定データは、メモリ17に記憶されたデータのうち、「0x0000」の部分となる。
【0121】
そして、その固定データは、図15中に示すように、正常値として扱われるように定義されている。
具体的には、図15の例では、「0x0000」〜「0x9000」の範囲の値が正常値とみなされ、「0xA000」〜「0xFFFF」の範囲の値が異常値とみなされるようになっている。
【0122】
学習値の例において、固定データが表す正常値とは換言すれば初期値のことである。
つまり、学習値に誤りが検出された場合に使用される固定データは、初期値として扱われ、例えば上述の点火時期の例では、その点火時期は初期値にリセットされて最遅角側になることとなる。また、この場合、点火時期の調整に関する学習は再度やり直されることとなる。
【0123】
尚、点火時期に関する学習値のみならず、他の学習値についても、車両の走行性能や走行状態を最適化するうえでは有用である一方、車両の走行自体に直接影響するものではない場合が多い。また、学習値については、誤りが検出されたことで初期化(リセット)されても、学習のやり直しにより再度の取得が可能である。
【0124】
このため、学習値については、対応する固定データが正常値(初期値)となるように定義しておくことができる。
次に、高重要データの一例を説明する。
【0125】
例えば、電子スロットル76の駆動制御においては、その電子スロットル76の全閉時にスロットルセンサ72から検出される検出値(電圧値)を基準として、電子スロットル76の制御値(目標開度を示す制御値)として出力する。
【0126】
このため、電子スロットル76の全閉時におけるスロットルセンサ72の検出値(電圧値)を表すデータに誤りが生じると、それに応じた制御値も誤ったものとなってしまう。具体的には、本来の目標開度に対してずれが生じた値となってしまう。制御値が誤ったものとなってしまうと、例えば、エンジン210において急激な吹き上がりが生じて車両が急加速したり、逆に急激な減速が生じたりすることも懸念される。
【0127】
このため、例えば電子スロットル76の駆動制御のためのデータ(電子スロットル76の全閉時におけるスロットルセンサ75の検出値のデータや、電子スロットル76の目標開度を示すデータなど)は、車両の走行自体に大きく影響するデータであると言える。このようなデータを、高重要データとすることができる。
【0128】
そして、本変形例では、このような高重要データについては、RAM112のデータ領域10のうち、バイトレーンが「0x02」,「0x03」であるアドレスに記憶されるように構成されている(図15参照)。
【0129】
そして、上記実施形態にて既に述べたように、バイトレーンが「0x02」,「0x03」であるアドレス(RAM112のアドレス)と、メモリ17の左寄り2バイト分の領域とが対応する。
【0130】
図15に示す例では、RAM112のデータ領域10のうち、バイトレーンが「0x02」,「0x03」であるアドレスから読み出されたデータ(即ち、高重要データ)に誤りが検出された場合、それに対応して、メモリ17における左寄りの2バイト分の領域から固定データが読み出される。
【0131】
具体的には、図15において、RAM112のアドレス6,7にわたって2バイトの高重要データが読み出されたとし、その読み出された高重要データに誤りが生じていた場合には、メモリ17から、固定データとして、「0xFFFF」が読み出される。
【0132】
そして、固定データとしての「0xFFFF」という値は、同図中に示すように異常値として認識されるように定義されており、この場合、システムがダウンするようになっている。
【0133】
ここで、システムダウン処理の内容は、制御の種類(アプリケーションの種類)に応じて適宜決定され得る。
以下、電子スロットル76に関するシステムダウン処理の内容について説明する。
【0134】
まず、電子スロットル76の制御において、その電子スロットル76のバルブを全閉するような処理が行われると、次に説明するように不都合が生じることも懸念される。具体的には、例えば走行中(特に高速走行中)にいきなり電子スロットル76のバルブが全閉してしまうと、急激なエンジンブレーキ作用による減速ショックが発生する可能性がある。
【0135】
このような点に鑑みると、例えば電子スロットル76の制御においては、システムダウン処理として、次のような処理が行われることが好ましい。
具体的には、バルブの開度を全閉状態に対し若干開いた状態(退避走行モード)とするような処理が、電子スロットル76に関するシステムダウン処理として好ましい。車両の停止(急激な停止)を防止し、最低限の走行ができるようにするためである。また、その他、ダイアグ記憶や、異常を示す異常ランプを点灯させる等の処理を、システムダウン処理として行う。
【0136】
このように、例えば電子スロットル76の駆動を制御する際に使用されるデータのような高重要データについては、対応する固定データが異常値と認識されるように定義しておくことができる。高重要データが、例えば車両の走行自体に影響するようなデータであることに鑑みれば、その高重要データに誤りが検出された場合には、システム全体をダウンする側に導いたほうが安全と考えられるためである。
【0137】
ところで、RAM112から読み出したデータの全てについてエラーチェックを行っていると処理負荷は高くなる。図17は、エラーチェックを行う従来の制御例を表すフローチャートである。
【0138】
図17の処理では、まず、S610において、読み出し対象のデータを読み出す。より具体的には、RAM112におけるデータ領域10のうち、プログラムによって指示されるアドレスの領域からデータを読み出す。
【0139】
次に、S620にて、読み出したデータが有効であるか否か、言い換えると、データに誤りが生じていないか否かを判定する。より具体的には、データの誤りの有無を表すエラーフラグを確認する。
【0140】
S620にて、読み出したデータが有効である(データに誤りが生じていない)と判定すると(S620:YES)、S640に移行する。
S640では、データが正常範囲か否かを判定する。S640にてデータが正常範囲であると判定すると(S640:YES)、S650に移行し、通常の制御処理を実行する。そしてその後、当該処理を終了する。
【0141】
一方、S640にてデータが正常範囲でないと判定すると(S640:NO)、S660に移行し、システムダウン処理を実行する。そしてその後、当該処理を終了する。
一方、S620でデータが有効でないと判定すると(S620:NO)、S630に移行し、データの初期化を行う。
【0142】
例えば、エンジン210を制御するエンジンECU220のようにリアルタイムな制御が必要とされる場合に、図17に示す処理を適用して全てのデータに対してエラーチェックを行うようにしてしまうと、リアルタイムな制御ができなくなるおそれがある。
【0143】
そこで、図16に示すような処理を実行することとしても良い。図16の処理によれば、エラーチェックを実施しない分だけ処理負荷を抑えることができる。一方、エラーチェックを実施しないとしても、誤りが検出された場合には固定データによって正常/異常の動作が規定されるため、適切かつリアルタイムな制御が可能となる。
【0144】
図16の処理では、まず、S510にて、読み出し対象のデータを読み出す。より具体的には、RAM112におけるデータ領域10のうち、プログラムによって指示されるアドレスの領域からデータを読み出す。尚、RAM112から読み出したデータについて、誤りが検出された場合(デコーダ14によって誤りが検出された場合)には、代わってメモリ17の固定データが読み込まれることとなる。尚、CPU100自体が誤りの検出を行うわけではなく、デコーダ14及びセレクタ16の構成により、誤りの検出、及び誤りが検出された場合の固定データの読み出しが実現される。
【0145】
S510の後はS520に移行し、読み出したデータが正常範囲か否かを判定する。
S520でデータが正常範囲であると判定すると(S520:YES)、S530に移行し、通常の制御処理を実行する。
【0146】
一方、S520でデータは正常範囲でないと判定すると(S520:NO)、S540に移行し、システムダウン処理を実行する。
尚、S520〜S540からなるS550の処理が、図3のソフト処理(S120の処理)に対応する。
【0147】
ところで、アプリケーションの種類によっては、正常側のフェールセーフ値、或いは異常側の異常値が、フラグ情報として、「1」のみで表されたり、或いは「0」のみで表されたりする。この点、本実施形態(及び変形例)においては、固定データは、その半分が「1」で構成され、残り半分が「0」で構成され、「1」と「0」を同じ割合づつ含んでいる。そして、上記実施形態でも説明したように、例えば、固定データのうち「1」のみから構成される部分のデータ、及び固定データのうち「0」のみから構成される部分のデータ、の何れかが読み出されるように構成できる。このため、フェールセーフ値が「1」のみで表されるアプリケーション、フェールセーフ値が「0」のみで表されるアプリケーションの何れにも対応できる。
[第2実施形態]
次に、第2実施形態として、マイクロコンピュータ100において浮動小数点数の計算が実行される場合について説明する。本第2実施形態において、マイクロコンピュータ100のハード構成は第1実施形態と同様とする。
【0148】
浮動小数点数の計算において、数値は、±a×2b、というように表される。「a」は仮数、「b」は指数である。また、2は基数である。
10進数で例を挙げる。10進数で0.0021という数値は、0.21×10-2と表すことができるが、この場合において、0.21の21の部分を仮数と言い、10-2の−2を指数と言う。基数は10である。尚、0.0021を0.21×10-2の形式で表すことを正規化と言う。
【0149】
浮動小数点数の計算のための標準規格としてIEEE754があり、マイクロコンピュータ100のCPU110においてその標準規格が適用されている。IEEE754では、浮動小数点数のデータの表現形式として、例えば、単精度型(32ビット)、倍精度型(64ビット)、が規定されている。
【0150】
単精度型のデータ及び倍精度型のデータの何れも、符号部、指数部、仮数部の順で構成される。単精度型では、符号部は1ビット、指数部は8ビット、仮数部は23ビットである。倍精度型では、符号部は1ビット、指数部は11ビット、仮数部は52ビットである。
【0151】
指数部は、指数+バイアスの値をとる。
単精度型の場合、指数部は0〜255の値をとり、バイアスは127である。つまり、単精度型においては、指数は、−127〜128の値をとる。一方、倍精度型の場合、指数部は0〜2047の値をとり、バイアスは1023である。つまり、倍精度型においては、指数は、−1023〜1024の値をとる。
【0152】
仮数部は、1以下の2進小数で表される。まず、前提として、仮数は、1の位が1となるように表される。例えば1.1010・・・(2進数)のように表される。そして、仮数部は、仮数の1の位の1を取り除いた数値が左詰に入り、余ったビットは全て0で埋められた形で表される。仮数が1.1010である上記の例では、仮数部は、小数点以下の1010の後ろに0を加え、10100000・・・というように表される。
【0153】
ここで、一例として、10進数の−58.875を浮動小数点数形式で表すことを考える。尚、単精度型(32ビット)で表すものとする。
(1)まず、−58.875を、符号を除いて2進数に変換する。
【0154】
10進数の58.875は2進数で111010.111と表される。
(2)次に、111010.111を正規化する。
111010.111は111010.111×20であり、即ち1.11010111×25となる。
(3)符号部(1ビット)を算出する。
【0155】
−58.875の符号は−であり、符号部は1となる。尚、符号部において、1は負数を表し、0は正数を表す。
(4)指数部(8ビット)を算出する。
【0156】
指数は、25の5である。5は、2進数で00000101である。これに、バイアス01111111(10進数で127)を加算し、指数部は10000100と表される。
(5)仮数部(23ビット)を算出する。
【0157】
仮数は、1.11010111×25の1.11010111の部分である。そして、仮数部は、仮数の小数点以下の11010111に、さらにその後ろに0を挿入した値となる。つまり、仮数部は、11010111000000000000000となる。
(6)以上より、10進数の−58.875を浮動小数点数形式で表すと、1 10000100 11010111000000000000000 となる。
【0158】
ところで、IEEE754では、表現可能なデータは、ゼロ(0)、正規化数、非正規化数、無限大、非数(NaN:Not a Number)の5種類に分類される。
指数部の値が0、仮数部の値が0なら、ゼロ(0)である。
【0159】
指数部の値が1〜254なら、仮数部の値にかかわらず、正規化数である。
指数部の値が0で、仮数部の値が0以外なら、非正規化数である。
指数部の値が255、仮数部の値が0なら、無限大である。尚、符号部の値が0なら正の無限大となり、符号部の値が1なら負の無限大となる。
【0160】
指数部の値が255で、仮数部の値が0以外なら、非数(NaN)となる。例えば、ある数値を0で割った結果や、−1の平方根は非数(NaN)である。
図6に、本実施形態における固定データの構成を示すが、固定データは、前述したように、「0xFFFF0000」で表される。この固定データを浮動小数点数形式で解釈すると、ビット31が符号部となり、ビット30〜23が指数部となり、ビット22〜0が仮数部となる。
【0161】
固定データの「0xFFFF0000」は、2進数で「11111111111111110000000000000000」であり、指数部(ビット30〜23)の値は255(10進数)である。また、仮数部(ビット22〜0)の値は8323072(10進数)、即ち0以外の値である。
【0162】
そうすると、本実施形態の固定データは、IEEE754によれば、浮動小数点数形式において非数として扱われる。
本実施形態において、非数が結果として与えられた場合、図7に示すような形態で処理が実行される。図7の処理は、具体的に、マイクロコンピュータ100のCPU110が実行するものである。
【0163】
図7では、処理A〜Cを順次実行することを前提とする。規定のタイミングになって処理が開始されると、まず、S410において処理Aが実行され、続いて、S420において処理Bが実行される。次に、S430において変数Aを使用する演算を実行するものとし、この変数Aが、ゼロ(0)、正規化数、非正規化数であれば、そのまま変数Aを使用する演算が実行される。そしてその後、S440で処理Cが実行され、一連の処理が終了する。
【0164】
一方、S430における変数Aが非数であった場合、例外処理(割込処理)が発生する。この場合、その例外処理(割込処理)に移行し、S510にて、フェールセーフ処理が実行される。フェールセーフ処理は、例外処理(割込処理)が中止されるまで継続して実行される。
【0165】
このように、浮動小数点数形式の演算において、固定データ「0xFFFF0000」は非数として扱われ、RAM112から読み出されたデータに誤りが生じてその固定データが演算に用いられた場合、例外処理(割込処理)が発生してフェールセーフ処理が実行されるようになる。このため、マイクロコンピュータ100、或いはマイクロコンピュータ100が搭載されたシステムが誤動作したり異常動作したりすることを防止できる。
【0166】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術範囲内において種々の形態をとることができる。
本実施形態において、固定データは一例であり、上記実施形態における値に何ら限定されるものではない。
【0167】
また、上記実施形態において、図3及び図5に示す定義付けは一例であり、定義付けは任意に行うことができる。
また、上記実施形態において、図10の演算式におけるチェック行列は一例であり、その図10のチェック行列に何ら限定されるものではない。
【0168】
また、上記実施形態において、エラーフラグがセットされるレジスタは1ビットから構成されても良い。つまり、RAM112から読み出されたデータに誤りが生じていた場合に、その誤りの箇所にかかわらず同じエラーフラグがセットされるようにしても良い。そして、この場合、その誤りの箇所、及び読み出し対象のデータのバイト数にかかわらず、同じ固定データが読み出されるようにし、その読み出された固定データが正常値として認識されるように構成すれば良い。
【0169】
また、上記実施形態において、RAM112から読み出されたデータについて、誤りが生じた箇所がアドレス単位で検出されるようになっているが、ビット単位で検出されるように構成しても良い。例えば、アドレス0から読み出された1バイト(8ビット)のデータについて、誤りが生じた箇所がビット0〜ビット7の何れであるかが検出されるように構成しても良い。
【0170】
また、上記変形例において、RAM112にて低重要データ、及び高重要データに応じて記憶領域が分けられることで、その低重要データ及び高重要データのそれぞれと、固定データとの対応関係がとられるようになっているが、これは一例であり、対応関係をとるにあたっては種々の方法をとることができる。
【符号の説明】
【0171】
10…データ領域、12…冗長データ領域、14…デコーダ、16…セレクタ、17…メモリ、100…マイクロコンピュータ、110…CPU、112…RAM、114…バックアップRAM114、116…ROM、120,122,124,126…周辺機能回路、130…デコーダ、132…エンコーダ、201…データ領域、202…冗長データ領域。

【特許請求の範囲】
【請求項1】
CPUと、
前記CPUによってデータの読み書きが行われるメモリと、
前記CPUによって前記メモリから読み出されるデータの異常を検出する異常検出手段と、
を備えた電子制御装置において、
前記CPUは、前記メモリから読み出したデータについて前記異常検出手段により異常が検出されると、その異常が検出されたデータに代え、予め定められた固定データを用いて演算を実行するようになっていることを特徴とする電子制御装置。
【請求項2】
請求項1に記載の電子制御装置において、
前記固定データを記憶する固定データ記憶手段を備え、
前記CPUは、前記メモリから読み出したデータについて前記異常検出手段により異常が検出されると、前記固定データ記憶手段から前記固定データを読み出すようになっていることを特徴とする電子制御装置。
【請求項3】
請求項2に記載の電子制御装置において、
出力側が前記CPUと接続され、入力側が前記メモリ及び前記固定データ記憶手段に接続され、前記メモリから読み出されたデータについて前記異常検出手段により異常が検出されると、そのメモリから読み出されたデータに代え、前記固定データ記憶手段から読み出される前記固定データを前記CPUに出力するセレクタを備えていることを特徴とする電子制御装置。
【請求項4】
請求項1ないし請求項3の何れか1項に記載の電子制御装置において、
前記CPUによって前記メモリに書き込まれる書き込み対象のデータに基づき、予め定められたルールで冗長データを生成する書込時冗長データ生成手段を備え、
前記CPUは、書き込み対象のデータとともに、その書き込み対象のデータに基づき前記書込時冗長データ生成手段により生成された冗長データも前記メモリに書き込むようになっていることを特徴とする電子制御装置。
【請求項5】
請求項4に記載の電子制御装置において、
前記CPUにより前記メモリから読み出されるデータに基づき、前記ルールと同じルールで冗長データを生成する読込時冗長データ生成手段を備え、
前記異常検出手段は、前記メモリから読み出されたデータである読出データについて、前記書込時冗長データ生成手段により生成された冗長データと前記読込時冗長データ生成手段により生成された冗長データとを比較し、一致するか否かに基づきその読出データの異常を検出することを特徴とする電子制御装置。
【請求項6】
請求項1ないし請求項5の何れか1項に記載の電子制御装置において、
前記CPUが前記メモリから読み出したデータであって、重要度が所定の度合いより低いデータである低重要データについて、前記異常検出手段により異常が検出された場合、その低重要データに対応して前記固定データ記憶手段から読み出される前記固定データが当該電子制御装置による制御を安全側に動作させるためのフェールセーフ値として扱われるように構成されていることを特徴とする電子制御装置。
【請求項7】
請求項1ないし請求項5の何れか1項に記載の電子制御装置において、
前記CPUが前記メモリから読み出したデータであって、重要度が所定の度合い以上のデータである高重要データについて、前記異常検出手段により異常が検出された場合、その高重要データに対応して前記固定データ記憶手段から読み出される前記固定データが当該電子制御装置に異常が発生したことを表す異常値として扱われるように構成されていることを特徴とする電子制御装置。
【請求項8】
請求項6に記載の電子制御装置において、
前記CPUは複数のアプリケーションを実行可能であり、
前記固定データは、前記複数のアプリケーションのそれぞれについてのフェールセーフ値を含み、
アプリケーションの種類に応じて前記固定データの一部又は全部がフェールセーフ値として用いられるように構成されていることを特徴とする電子制御装置。
【請求項9】
請求項7に記載の電子制御装置において、
前記CPUは複数のアプリケーションを実行可能であり、
前記固定データは、前記複数のアプリケーションのそれぞれについての異常値を含み、
アプリケーションの種類に応じて前記固定データの一部又は全部が異常値として用いられるように構成されていることを特徴とする電子制御装置。
【請求項10】
請求項1ないし請求項9の何れか1項に記載の電子制御装置において、
前記CPUは浮動小数点数形式のデータに基づく演算を実行する機能を有し、
前記固定データは、浮動小数点数形式の演算における非数であることを特徴とする電子制御装置。
【請求項11】
CPUと、
前記CPUによってデータの読み書きが行われるメモリと、
前記CPUによって前記メモリから読み出されるデータの異常を検出する異常検出手段と、
を備えたマイクロコンピュータにおいて、
前記CPUは、前記メモリから読み出したデータについて前記異常検出手段により異常が検出されると、その異常が検出されたデータに代え、予め定められた固定データを用いて演算を実行するようになっていることを特徴とするマイクロコンピュータ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図4】
image rotate