(57)【要約】迅速に診断装置へＣＶＮを表示させて正当性の判断を容易にする【課題】トラニオンの回動位置にかかわらずリンクとの摩擦抵抗を低減する。【解決手段】書き換え可能に構成されてプログラムまたはデータを格納するフラッシュメモリ５と、この内容を保証するＣＶＮ値を演算するＣＶＮ演算手段とを備えた制御装置１において、書き換え可能に構成されてＣＶＮ演算記憶値を格納するＥＥＰＲＯＭ６を備えて、フラッシュメモリ５に書き換えがないと判定したときには、ＥＥＰＲＯＭ６に格納されたＣＶＮ演算記憶値を出力した後に、ＣＶＮの演算を行って、この演算結果を出力する一方、フラッシュメモリ５に書き換えがあったときには、ＣＶＮの演算が終了した後にこの演算結果を出力する。【選択図】図１
2005056263.tif 000002
【特許請求の範囲】
【請求項１】
書き換え可能に構成されてプログラムまたはデータを格納する第１の記憶手段と、
前記第１の記憶手段の内容を保証する内容保証値を演算するＣＶＮ演算手段とを備えた制御装置において、
書き換え可能に構成されて前記内容保証値の基準値を格納する第２の記憶手段と、
前記第１の記憶手段が書き換えられたことを判定する書き換え判定手段と、
前記判定手段が第１の記憶手段に書き換えがないと判定したときには、前記第２の記憶手段に格納された基準値を出力した後に、前記ＣＶＮ演算手段の演算を行って、この演算結果を出力する第１の検証手段と、
前記判定手段が第１の記憶手段に書き換えがあったと判定したときには、前記ＣＶＮ演算手段の演算が終了した後にこの演算結果を出力する第２の検証手段と、
を備えたことを特徴とする制御装置。
【請求項２】
前記第２の検証手段は、ＣＶＮ演算手段の演算結果で前記基準値を更新することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記第１の記憶手段は、プログラムまたはデータに対応する第１の固有コードを格納し、
前記第２の記憶手段は、前記第１の固有コードに対応する第２の固有コードを格納し、
前記判定手段は、第１の固有コードと第２の固有コードが異なるときに前記第１の記憶手段の書き換えがあったことを判定することを特徴とする請求項１または請求項２に記載の制御装置。
【請求項４】
前記第２の検証手段は、前記第２の記憶手段の第２の固有コードを出力した後に、ＣＶＮ演算手段で演算を行った結果を出力することを特徴する請求項３に記載の制御装置。
【請求項５】
前記第２の検証手段は、前記第１の記憶手段の第１の固有コードを前記第２の記憶手段の第２の固有コードに書き込むことを特徴する請求項４に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両等に用いられる制御装置の改良に関し、書換可能な記憶手段に制御用のプログラムとデータを格納する際の改竄を検出するものに関する。
【背景技術】
【０００２】
自動車などの車両では、マイクロプロセッサを主体とするコントロールユニットにより、エンジン制御、変速制御、ブレーキ制御などを電子的に行われている。エンジン制御においては、機関出力と排気性能との両立を図るため、実験などを通して得られた最適な制御データ（マップなど）をＥ2ＰＲＯＭやフラッシュメモリなどの不揮発性記憶手段に格納して制御を行っている。
【０００３】
一方、市場の一部においては、排気性能が低下することも配慮せずに、エンジン出力のみを向上させるため、最適に設定された制御データを書き換える不法改造が行われていることも否めない。このため北米では、排気規制強化の一環として、コントロールユニットの不法改造を防止すべく、ＣＶＮ（Calibration Verification Number）を診断装置に出力することを義務付けている（米国のＯＢＤII法規など）。
【０００４】
プログラムや制御データの正当性をチェックサムの演算によりＣＶＮとして出力する場合では、チェックサムが、バイナリデータを単純に加算した総和なので、加減算した分をダミーデータなどで打ち消すようにすれば、ＣＶＮを変えずにプログラムの改竄が可能であった。
【０００５】
これを防ぐため、制御装置のデータは、データの各アドレスに格納される値を、データのアドレスを示すアドレスデータとして、このアドレスデータが指し示すアドレスに本来のデータを格納しておく。
【０００６】
そして、ＣＶＮ値の演算は、上記アドレスデータが指し示す本来のデータの総和をＣＶＮ値として求め、このＣＶＮ値と予め設定した既知のＣＶＮである基準値と比較して、改竄の有無を判定するものが知られている（特許文献１）。
【特許文献１】特開２００３−５８４２４号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、上記北米のＯＢＤII法規などでは、車両に搭載されている制御装置のうち、排気性能に影響を与える制御装置については、書き込まれたソフトウェアの内容を保証する値であるＣＶＮを、診断装置を制御装置に接続したときに演算し、この演算結果を診断装置に送信して表示させることが義務づけられている。
【０００８】
しかしながら、上記従来例においては、制御装置のソフトウェア（プログラム及びデータ）が書き込まれている全ての領域についてＣＶＮの演算を行うため、ＣＶＮを表示するまでに多大な時間を要し、ソフトウェアの正当性の判断を迅速に行うことができないという問題がある。この演算回数は、少なくとも全記憶容量÷記憶管理単位だけ演算を繰り返す必要があり、例えば、全記憶容量＝５１２Ｋbyte、記憶管理単位＝１byte＝１０２４byteの場合、
５１２×１０２４÷１＝５２４２８８回の演算を行う必要がある。
【０００９】
なお、部分的な書換も検出するためには、全記憶容量について演算を行わなければならない。
【００１０】
また、不揮発性記憶手段としてＥ2ＰＲＯＭやフラッシュメモリなどの記憶素子を採用した場合には、書き換え回数に上限が設定されており、この上限を超えると書き込みが不能となる場合があるため、自動車などの車両のように長期間に渡って使用されるものでは、制御装置が作動するたびにＣＶＮを演算して不揮発性記憶手段へ書き込むようにすると、記憶素子の寿命を縮めてしまう、という問題があった。
【００１１】
そこで本発明は、上記問題点に鑑みてなされたもので、迅速に診断装置へＣＶＮを表示させて正当性の判断を容易にすることを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、書き換え可能に構成されてプログラムまたはデータを格納する第１の記憶手段の内容を保証する内容保証値を演算するＣＶＮ演算手段とを備えた制御装置において、
書き換え可能に構成されて前記内容保証値の基準値を格納する第２の記憶手段を備えて、前記第１の記憶手段に書き換えがないと判定したときには、前記第２の記憶手段に格納された基準値を出力した後に、前記ＣＶＮ演算手段の演算を行って、この演算結果を出力する第１の検証手段と、前記第１の記憶手段に書き換えがあったときには、前記ＣＶＮ演算手段の演算が終了した後にこの演算結果を出力する第２の検証手段とを備える。
【００１３】
また、前記第１の記憶手段に書き換えがあったときにのみ基準値を更新する。
【発明の効果】
【００１４】
したがって、本発明によれば、第１の記憶手段のプログラムやデータが書き換えられていないと判定された場合には、第１の記憶手段とは別途設けた第２の記憶手段に記憶した内容保証値の基準値をまず出力し、その後、内容保証値の演算が終了した時点で、内容保証値の演算結果を出力し、第１の記憶手段のプログラムやデータが書き換えられたと判定された場合には内容保証値の演算が終了するまで出力が行われないので、制御装置のプログラムまたはデータの正当性を検査する際には、基準値が即座に出力されるか否かで容易且つ迅速に正当性の判断を行うことが可能となる。例えば、制御装置の出力を診断装置に接続し、診断装置で即座に基準値が出力されれば、第１の記憶手段に書き換えがないことを保証でき、診断装置に内容保証値が出力されるまでに時間を要する場合には、書き換えがあったことを示唆することができる。
【００１５】
また、第１の記憶手段に書き換えがあったときにのみ基準値を更新するようにしたので、第１の記憶手段に書き換え回数の制限がある場合では、書き換え回数を抑制することができるので、第１の記憶手段の寿命を伸ばすことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１７】
図１は、車両に搭載された制御装置１に診断装置７を接続した状態を示す。
【００１８】
制御装置１は、例えば、車両のエンジンを制御するものであり、演算を行うＣＰＵ２、ワークエリアなどを提供するＲＡＭ３、外部との信号の入出力を行うインターフェース４、プログラムやデータなどを記憶したフラッシュメモリ５、フラッシュメモリ５に記憶されたソフトウェアの内容を保証するためのＣＶＮ演算結果記憶値などのデータを記憶したＥＥＰＲＯＭ（＝Ｅ2ＰＲＯＭ、Electrically Erasable Programmable Read-Only Memory）６を主体に構成され、それぞれバス１０を介して接続されている。
【００１９】
ＣＰＵ２は、フラッシュメモリ５（第１の記憶手段）に格納されたプログラムとデータを読み出すとともに、インターフェース４に接続されたセンサ（図示せず）の検出値などに基づいて制御対象への指令値を演算するものである。
【００２０】
フラッシュメモリ５には、制御を実行するプログラムと、実験などから求められたデータが格納され、さらに、プログラム及びデータを識別するためのソフトウェア固有情報Ａが書き込まれている。このソフトウェア固有情報Ａは、プログラムのバージョンコード、データのバージョンコード、制御装置の部品コードなど、ソフトウェアに固有のコードから構成されるもので、このソフトウェア固有情報Ａによりソフトウェアの内容が特定できるものである。
【００２１】
また、フラッシュメモリ５は書き込み可能であるから、プログラムのバージョンアップやデータのバージョンアップなどにより、ソフトウェア固有情報Ａは書き換えられる可能性を有している。
【００２２】
ＥＥＰＲＯＭ６（第２の記憶手段）には、ＣＶＮ演算記憶値（ソフトウェア内容保証基準値）、ソフトウェア固有情報記憶値Ｂや、制御で使用するエラーコードなどが書き込まれている。
【００２３】
ＣＶＮ演算記憶値は、フラッシュメモリ５の内容が書き換えられてＣＶＮ（ソフトウェア内容保証値）の演算結果が変わったときに書き換えられるもので、初期状態は、フラッシュメモリ５のデータの総和であるＣＶＮが書き込まれている。
【００２４】
ソフトウェア固有情報記憶値Ｂは、プログラムまたはデータの内容が書き換えられてバージョンコードや部品コードが変わったときに書き換えられるもので、初期状態は、フラッシュメモリ５の内容に対応したコード、つまりソフトウェアに固有のコードが書き込まれている。
【００２５】
インターフェース４に接続された診断装置７は、起動すると制御装置１に対してＣＶＮの演算結果を要求し、制御装置１が返信したＣＶＮの演算結果を表示部７０等の出力手段に出力するものである。
【００２６】
図２は、診断装置７が接続されたときに制御装置１で実行されるＣＶＮの演算処理（自己診断処理）の一例を示すフローチャートで、所定時間毎（例えば、数十msec）おきに繰り返して実行されるものである。
【００２７】
ステップＳ１では、診断装置７からＣＶＮの送信要求があったか否かを判定し、送信要求があればステップＳ２に進み、そうでない場合には、一旦処理を終了する。
【００２８】
ステップＳ２では、フラッシュメモリ５からソフトウェア固有情報Ａを読み込むとともに、ＥＥＰＲＯＭ６からソフトウェア固有情報記憶値Ｂを読み込む。
【００２９】
ステップＳ３では、フラッシュメモリ５のソフトウェア固有情報Ａが、ＥＥＰＲＯＭ６のソフトウェア固有情報記憶値Ｂと等しいか否かを判定し、Ａ＝Ｂであればフラッシュメモリ５の書き換えは行われていないと判定してステップＳ４に進む。一方、Ａ≠Ｂの場合は、フラッシュメモリ５の書き換えが行われたと判定して、ステップＳ９に進む。
【００３０】
書き換えがないと判定されたステップＳ４では、ＥＥＰＲＯＭ６からＣＶＮ演算記憶値を読み込んで、ステップＳ５では、このＣＶＮ演算記憶値を診断装置７へ送信する。このとき、まだＣＶＮの演算結果は出ていない訳であるが、フラッシュメモリ５の書き換えが行われていないことは、ＣＶＮの演算結果はＣＶＮ演算記憶値と一致することになる。
【００３１】
したがって、書き換えが無かったと判定した時点で、ＣＶＮ演算記憶値を診断装置７へ送信しておくことで、診断装置７の操作者はＣＶＮの値を即座に確認することができるのである。
【００３２】
次に、ステップＳ６では、ＣＶＮの演算をフラッシュメモリ５の全記憶領域について開始し、ステップＳ７では全記憶領域についてＣＶＮの演算が終わったか否かを判定し、この演算が終わるまでステップＳ６を繰り返して実行する。
【００３３】
このＣＶＮの演算は、前記従来例と同様に行われ、例えば、図３に示すように、フラッシュメモリ５の記憶領域のアドレスＡＤＤＲ１のＤＡＴＡ１を読み込み、このＤＡＴＡ１をアドレスＡＤＤＲ２として、ＡＤＤＲ２に格納されているデータを制御に用いるデータＤＡＴＡ２として読み込み、このＤＡＴＡ２の総和をＣＶＮとするものである。
【００３４】
そして、ステップＳ７の判定で全記憶領域についてＣＶＮの演算が終了すると、ステップＳ８で実際に演算したＣＶＮの演算結果を診断装置７に送信して処理を終了する。
【００３５】
一方、上記ステップＳ３の判定で、Ａ≠Ｂとなってフラッシュメモリ５の書き換えが行われたと判定された場合では、ステップＳ９に進んで、ＥＥＰＲＯＭ６からソフトウェア固有情報記憶値Ｂを読み込み、ステップＳ１０ではこのソフトウェア固有情報記憶値Ｂを診断装置７に送信する。
【００３６】
したがって、診断装置７の操作者は、ＣＶＮ値ではなくソフトウェア固有情報記憶値Ｂ（プログラムやデータのバージョンコードまたは部品コード）が表示されることから、ソフトウェアの書き換えがあったことを判定することができる。
【００３７】
次に、ステップＳ１１、１２では、上記ステップＳ６、Ｓ７と同様にフラッシュメモリ５の全記憶領域についてＣＶＮの演算を行い、この演算が終了すると、ステップＳ１３に進む。
【００３８】
ステップＳ１３では、フラッシュメモリ５からソフトウェア固有情報Ａを読み込み、ステップＳ１４で、このソフトウェア固有情報ＡをＥＥＰＲＯＭ６のソフトウェア固有情報記憶値Ｂに上書きして更新する。これは、異なる記憶手段に格納されたソフトウェア固有情報Ａとソフトウェア固有情報記憶値Ｂが一致しないため、ソフトウェア（プログラムまたはデータ）のアップデートが行われた場合、上記コードが変更されるため、新たなコードでソフトウェア固有情報記憶値Ｂを更新する。なお、フラッシュメモリ５に対して改竄が行われた場合もソフトウェア固有情報Ａが変更される場合があり、この場合は、上記ステップＳ１０で、診断装置７にソフトウェア固有情報Ａを送信しているので、操作者は正規のコードであるか否かを判断できる。
【００３９】
次に、ステップＳ１５では、上記ステップＳ１１、Ｓ１２のループで求めたＣＶＮの演算結果を診断装置７に送信する。この時点で、診断装置７の操作者はＣＶＮが変更されていることを確認でき、このＣＶＮの値が正規なものであるか否かを調べることができる。
【００４０】
最後にステップＳ１６では、上記ＣＶＮの演算結果をＥＥＰＲＯＭ６のＣＶＮ演算記憶値に上書きして更新する。これにより、ＣＶＮ演算記憶値は、フラッシュメモリ５の書き換えがソフトウェアのアップデートなどの正規なものであれば、このアップデートに対応した正規のＣＶＮ値となって、次回の診断時には、迅速にＣＶＮの送信を行うことができる。一方、フラッシュメモリ５の書き換えが不正なものであれば、診断装置７等からＣＶＮ演算記憶値を読み出し、正規な値と比較することで、いちいちＣＶＮの演算を待つことなく容易かつ迅速に不正なものであることを判定できるのである。
【００４１】
以上のように、フラッシュメモリ５のプログラムやデータが書き換えられていないと判定された場合には、フラッシュメモリ５とは別途設けたＥＥＰＲＯＭ６に記憶したＣＶＮ演算記憶値を診断装置７へまず送信することで、操作者にＣＶＮの値を迅速に表示でき、さらに、ＣＶＮの演算が終了した時点で、ＣＶＮの演算結果を診断装置７に送信するので、信頼性を確保することができる。
【００４２】
また、フラッシュメモリ５の書き換えが無かった場合（正常な場合）には、ＥＥＰＲＯＭ６のＣＶＮ演算記憶値を更新せず、診断装置７に送信するだけであるので、ＥＥＰＲＯＭ６の書き換え回数を行わず、素子の寿命を延ばすことができる。
【００４３】
一方、フラッシュメモリ５のプログラムやデータが書き換えられたと判定される場合には、まず、診断装置７にソフトウェア固有情報Ａを送信することで、診断装置７の操作者はフラッシュメモリ５の書き換えがあったことを認識でき、さらに、このソフトウェア固有情報Ａが正規のアップデートなどあるかを検証することができる。また、ＣＶＮの演算が終了すると、診断装置７へＣＶＮの演算結果が送信されるので、操作者は最初に表示されたソフトウェア固有情報Ａに対するＣＶＮの演算結果が正しいものであるかを検討することが可能となる。
【００４４】
そして、ソフトウェアの書き換えが行われたときにのみ、ＥＥＰＲＯＭ６のソフトウェア固有情報記憶値ＢとＣＶＮ演算記憶値を書き換えるようにしたので、必要なときにのみ書き換えを行って不要な書き込みを抑制し、素子の寿命を延長することができるのである。
【００４５】
また、制御で用いるプログラムやデータを記憶するフラッシュメモリ５と、検証に用いるデータ（ＣＶＮ演算記憶値、ソフトウェア固有情報記憶値Ｂ）を記憶するＥＥＰＲＯＭ６を備えたので、前記従来例で示したようなプログラムやデータの改竄があっても、ＥＥＰＲＯＭ６の内容は書き換えられないので、診断装置７を接続した際には、ソフトウェア固有情報Ａとソフトウェア固有情報記憶値Ｂの違いから容易にフラッシュメモリ５の書き換えを検出することができる。
【００４６】
なお、上記実施形態において、ステップＳ１５の処理で、ＣＶＮの演算結果を診断装置７に送信したが、ＣＶＮの演算結果に加えてＥＥＰＲＯＭ６のＣＶＮ演算記憶値を送信し、診断装置７の表示部７０に２つのＣＶＮ値を表示してもよい。
【００４７】
また、上記実施形態では、制御に用いるソフトウェアをフラッシュメモリ５に記憶し、検証用のデータをＥＥＰＲＯＭ６に記憶させたが、２つの記憶手段は同種の記憶手段であっても良い。
【００４８】
また、上記ではフラッシュメモリ５やＥＥＰＲＯＭ６にソフトウェアや検証用データを格納した例を示したが、書き換え可能な記憶手段であればよく、上記の他、ＭＲＡＭ（Magnetoresistive Random Access Memory）やＦｅＲＡＭ（Ferroelectric Random Access Memory）、ハードディスク、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、−ＲＷ、＋ＲＷ等の記憶手段をい採用することができる。
【産業上の利用可能性】
【００４９】
以上のように、本発明に係る制御装置では、書き換え可能な記憶手段に格納したプログラムやデータの正当性を迅速に判定できるので、排気性能を保証する必要のある自動車などの制御装置に適用することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施形態を示す制御装置を示すシステム図。
【図２】同じく制御装置で行われるＣＶＮの演算処理の一例を示すフローチャート。
【図３】同じくＣＶＮの演算を示す説明図。
【符号の説明】
【００５１】
１  制御装置
２  ＣＰＵ
５  フラッシュメモリ
６  ＥＥＰＲＯＭ
７  診断装置
【図１】
2005056263.tif 000003
【図２】
2005056263.tif 000004
【図３】
2005056263.tif 000005