(57)【特許請求の範囲】
【請求項１】
プログラムに従って処理を行う演算処理手段と、
記憶内容の書き換えが可能であるとともに、所定の制御対象を制御するための制御プログラムと、前記制御プログラムの内容を書き換えるための書換プログラムとを記憶する書換可能不揮発性メモリと、
前記演算処理手段が、通常時には、前記書換可能不揮発性メモリに記憶された前記制御プログラムに従って、前記制御対象を制御するための制御処理を行い、予め設定された書換条件が成立した場合には、前記書換可能不揮発性メモリに記憶された前記書換プログラムに従って、前記制御プログラムの内容を書き換える書換処理を行うように構成された電子制御装置であって、
前記書換プログラムは、圧縮された状態で前記書換可能不揮発性メモリに記憶されており、
さらに、前記書換条件が成立した場合に、前記書換可能不揮発性メモリに記憶されている前記書換プログラムを解凍して、解凍後の前記書換プログラムを、記憶内容の読み出し及び書き込みが可能な揮発性メモリに書き込み、前記演算処理手段に、前記揮発性メモリ内の書換プログラムに従って前記書換処理を行わせる書換プログラム実行手段を備え、
前記書換処理は、
前記制御プログラムの内容を書き換えるために当該電子制御装置に接続されるデータ書換装置から、予め設定された暗号化式で用いられる鍵情報を受信すると、前記鍵情報を用いた前記暗号化式に基づいて、復号に必要な全ての平文を暗号化することによって、前記全ての平文のそれぞれについて平文と暗号文との対応関係が設定された復号化テーブルを作成し、
さらに、前記鍵情報を用いた前記暗号化式に基づいて暗号化された前記制御プログラムを前記データ書換装置から受信すると、受信した前記制御プログラムを前記復号化テーブルを用いて復号し、復号した前記制御プログラムを前記書換可能不揮発性メモリに書き込むことにより、前記制御プログラムの内容を書き換える
ことを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の制御対象の制御に用いる制御プログラムをオンボード書き換え可能な電子制御装置に関する。
【背景技術】
【０００２】
従来、例えば自動車のエンジンやトランスミッション等を制御する電子制御装置として、電気的に記憶内容の書き換え（詳しくは、データの消去および書き込み）が可能なフラッシュメモリやＥＥＰＲＯＭ等の書換可能不揮発性メモリを備え、その書換可能不揮発性メモリに記憶された制御プログラムおよび制御データを、当該装置の完成状態で書き換えることができるようにした所謂オンボード書き換え可能なものが知られている。
【０００３】
すなわち、この種の電子制御装置では、それに搭載されたマイクロコンピュータの主要部を成すＣＰＵ（中央演算処理装置）が、通常時には、書換可能不揮発性メモリ内の制御プログラムおよび制御データに従って、エンジン等の制御対象を制御するための制御処理を行うが、例えば別途接続されるデータ書換装置から書換信号を受けると、上記書換可能不揮発性メモリの記憶内容（つまり、制御プログラムを構成するデータ、および制御プログラムの実行時に参照される制御データ）を、上記データ書換装置から送信される新たなデータに書き換えるための書換処理を行う（例えば、特許文献１を参照）。
【０００４】
また、書換可能不揮発性メモリに記憶された制御プログラムが書き換え可能に構成された電子制御装置において、上記データ書換装置から新たなデータを電子制御装置に送信する際のデータ漏洩、および電子制御装置に記憶される制御プログラムと制御データの改ざんを防止するために、暗号化されたデータを上記データ書換装置から電子制御装置に送信するように構成されたものが知られている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−２５９３７１号公報
【特許文献２】特開２０００−３３７２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献２に記載のように暗号化されたデータを用いて制御プログラム等を書き換える技術では、暗号化されたデータを復号するための処理が必要となり、その分、書換処理に要する時間が長くなるという問題が生じる。これに対しては、暗号化されたデータを復号するための変換テーブル（以下、復号化テーブルという）を予め保持し、この復号化テーブルを用いて復号することにより復号に要する時間を短縮する手法が考えられる。しかし、書換処理のためのプログラムと復号化テーブルとを予め書換可能不揮発性メモリに記憶しておく必要があるため、その分、制御プログラム等を書換可能不揮発性メモリに記憶するための記憶容量が減少してしまうという問題があった。
【０００７】
本発明は、こうした問題に鑑みてなされたものであり、制御プログラム等を書換可能不揮発性メモリに記憶するための記憶容量の減少を抑制することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた請求項１に記載の電子制御装置は、プログラムに従って処理を行う演算処理手段と、記憶内容の書き換えが可能であるとともに、所定の制御対象を制御するための制御プログラムと、制御プログラムの内容を書き換えるための書換プログラムとを記憶する書換可能不揮発性メモリとを備え、演算処理手段が、通常時には、書換可能不揮発性メモリに記憶された制御プログラムに従って、制御対象を制御するための制御処理を行い、予め設定された書換条件が成立した場合には、書換可能不揮発性メモリに記憶された書換プログラムに従って、制御プログラムの内容を書き換える書換処理を行うように構成され、書換プログラムは、圧縮された状態で書換可能不揮発性メモリに記憶されており、書換プログラム実行手段は、書換条件が成立した場合に、書換可能不揮発性メモリに記憶されている書換プログラムを解凍して、解凍後の書換プログラムを、記憶内容の読み出し及び書き込みが可能な揮発性メモリに書き込み、演算処理手段に、揮発性メモリ内の書換プログラムに従って書換処理を行わせる。
【０００９】
このように構成された電子制御装置では、書換プログラムが、圧縮された状態で書換可能不揮発性メモリに記憶されているため、圧縮されていない状態で書換プログラムを記憶する場合と比較して、データを書換可能不揮発性メモリに記憶するための記憶容量を低減することができる。これにより、制御プログラム等を書換可能不揮発性メモリに記憶するための記憶容量の減少を抑制することができる。
【００１０】
さらに、書換プログラムは、圧縮された状態で書換可能不揮発性メモリに記憶されており、そのままでは書換処理を行うことができないデータ配列に変更されている。このため、演算処理手段にプログラム暴走が生じて、書換可能不揮発性メモリ内の書換プログラムが実行されたとしても、書換可能不揮発性メモリの記憶内容が不適当に書き換えられてしまうことがない。
【００１１】
また請求項１に記載の電子制御装置において、書換処理は、制御プログラムの内容を書き換えるために当該電子制御装置に接続されるデータ書換装置から、予め設定された暗号化式で用いられる鍵情報を受信すると、鍵情報を用いた暗号化式に基づいて、復号に必要な全ての平文を暗号化することによって、全ての平文のそれぞれについて平文と暗号文との対応関係が設定された復号化テーブルを作成し、さらに、鍵情報を用いた暗号化式に基づいて暗号化された制御プログラムをデータ書換装置から受信すると、受信した制御プログラムを復号化テーブルを用いて復号し、復号した制御プログラムを書換可能不揮発性メモリに書き込むことにより、制御プログラムの内容を書き換える。
【００１２】
このように構成された電子制御装置によれば、暗号化された制御プログラムを復号するために用いる復号化テーブルを予め書換可能不揮発性メモリに記憶しておく必要がないため、その分、データを書換可能不揮発性メモリに記憶するための記憶容量を低減することができる。これにより、制御プログラム等を書換可能不揮発性メモリに記憶するための記憶容量の減少を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】ＥＣＵ１の構成を示すブロック図である。
【図２】フラッシュメモリ１５内のプログラム配置を示す図である。
【図３】ＥＣＵ１のマイコン５で実行される処理を示すフローチャートである。
【図４】復号化テーブル作成方法を説明するための図である。
【発明を実施するための形態】
【００１４】
以下に本発明の実施形態について図面とともに説明する。
図１は、本実施形態の電子制御装置（以下、ＥＣＵという）１の構成を示すブロック図である。図２は、フラッシュメモリ１５内のプログラム配置を示す図である。
【００１５】
ＥＣＵ１は、車両に搭載され、図１に示すように、エンジンの運転状態を検出する様々なセンサからの信号を入力して波形処理を行う入力回路３と、入力回路３からのセンサ信号に基づき、エンジンを制御するための様々な処理を行うマイクロコンピュータ（以下、マイコンという）５と、マイコン５からの制御信号に応じて、エンジンに取り付けられたインジェクタ（燃料噴射弁）およびイグナイタ等のアクチュエータへ駆動信号を出力する出力回路７とを備えている。
【００１６】
そしてＥＣＵ１は、マイコン５がエンジンを制御するために用いるプログラムを、オンボード書き換え可能に構成されており、そのプログラムを書き換える際には、当該ＥＣＵ１にデータ書換装置９が接続される。またマイコン５は、プログラムに従って処理を行うＣＰＵ１１と、ＣＰＵ１１によって実行されるプログラムを格納する不揮発性のフラッシュメモリ１５と、ＣＰＵ１１の演算結果等を一時格納するための揮発性メモリであるＲＡＭ１７と、入力回路３等からの信号を受け取るとともに出力回路７に制御信号を出力するためのＩ／Ｏ１９と、データ書換装置９との間でデータ通信を行うための通信回路２１と、各種レジスタ（不図示）等を備えている。
【００１７】
ここでフラッシュメモリ１５は、所定の書換電圧が印加された状態でデータの書き換え（消去および書き込み）が可能な不揮発性ＲＯＭである。なおＥＣＵ１には、マイコン５からの指令に応じてフラッシュメモリ１５に上記書換電圧を印加する電圧印加回路（不図示）が設けられている。
【００１８】
そして図２に示すように、フラッシュメモリ１５には、マイコン５のリセット解除直後に実行されるブートプログラム５０と、エンジンを制御するための制御プログラム５２（詳しくは、エンジン制御用の制御プログラムを構成するデータと、その制御プログラムの実行時に参照される制御データ）と、フラッシュメモリ１５の記憶内容（すなわち、制御プログラムを構成するデータおよび制御データ）を、データ書換装置９から送信される新たなデータに書き換えるための書換プログラム５１とが記憶されている。なお、書換プログラム５１は圧縮された状態でフラッシュメモリ１５に記憶されている。
【００１９】
このように構成されたＥＣＵ１において、マイコン５のＣＰＵ１１は、リセット解除直後に、フラッシュメモリ１５内のブートプログラム５０を実行し、データ書換装置９が接続されていない通常時には、そのブートプログラム５０にてフラッシュメモリ１５内の制御プログラム５２をコールして、エンジンを制御するための制御処理を行う。
【００２０】
また、マイコン５のＣＰＵ１１は、ブートプログラム５０の実行時に、後述する書換許可条件が成立していると判断すると、圧縮された状態でフラッシュメモリ１５に記憶されている書換プログラム５１を解凍してＲＡＭ１７に書き込む。
【００２１】
そしてＣＰＵ１１は、ＲＡＭ１７内の書換プログラム５１を実行することにより、フラッシュメモリ１５内のデータを、データ書換装置９から送信される新たなデータ（すなわち、新たなエンジン制御用の制御プログラムおよび制御データ）に書き換える書換処理を行う。
【００２２】
一方、データ書換装置９は、ＥＣＵ１側のマイコン５にフラッシュメモリ１５の書き換えを行わせるための処理を実行するマイコン（不図示）を主要部として構成されている。またデータ書換装置９には、図１に示すように、ＥＣＵ１の動作モードを、エンジンの制御を行う通常モードからフラッシュメモリ１５内のデータを書き換える書換モードに変更させるためのモード切換スイッチＳＷが設けられている。
【００２３】
そして、データ書換装置９とＥＣＵ１との接続は、データ書換装置９側の雌コネクタ２３ＦとＥＣＵ１に設けられた雄コネクタ２３Ｍとを嵌合することにより行われる。すなわち、上記両コネクタ２３Ｆ，２３Ｍが嵌合されると、通信線２５を介して、データ書換装置９側のマイコンとＥＣＵ１側のマイコン５との間におけるシリアルデータ通信が可能となる。また、データ書換装置９側でモード切換スイッチＳＷを介して接地電位（０Ｖ）に接続される信号線２７が、ＥＣＵ１側で抵抗器Ｒにより所定の電源電圧（本実施形態では５Ｖ）にプルアップされたモード判定用信号ラインＬに接続される。よって、データ書換装置９側でモード切換スイッチＳＷがオンされると、ＥＣＵ１側においては上記モード判定用信号ラインＬがハイレベル（５Ｖ）からロウレベル（０Ｖ）に変化することとなる。そして、ＥＣＵ１のマイコン５は、ブートプログラム５０の実行を開始した時に、モード判定用信号ラインＬがロウレベルであれば、書換許可条件が成立したと判断して、自己の動作モードを通常モードから書換モードへと移行させる。
【００２４】
またデータ書換装置９は、モード切換スイッチＳＷがオンされると、通信線２５を介して復号化キー情報（後述）をＥＣＵ１へ送信するように構成される。
次に、ＥＣＵ１のマイコン５で実行される処理について、図３を用いて説明する。図３は、ＥＣＵ１のマイコン５で実行される処理を示すフローチャートであり、そのステップ（以下、単に「Ｓ」と記す）１００〜Ｓ１３０の処理が、フラッシュメモリ１５内のブートプログラム５０によって実行され、Ｓ２００の処理が、フラッシュメモリ１５内の制御プログラム５２によって実行される。そして、Ｓ３００〜Ｓ３３０の処理が、解凍後の書換プログラム５１によって実行される。
【００２５】
ＥＣＵ１では、車両のイグニッションスイッチ（不図示）のオンに伴い電源が投入されると、マイコン５のＣＰＵ１１がリセット状態から動作を開始して、ブートプログラム５０の実行を開始し、図３に示すように、まずＳ１００にて、書換許可条件が成立しているか否かを、モード判定用信号ラインＬがロウレベルであるか否かによって判断する。そして、モード判定用信号ラインＬがロウレベルでない場合には、書換許可条件が非成立であると判断して（Ｓ１００：ＮＯ）、通常モードの動作を行うためにＳ１１０へ進み、このＳ１１０にて、フラッシュメモリ１５内の制御プログラム５２へジャンプする。
【００２６】
すると、その後は、Ｓ２００に示すように、フラッシュメモリ１５内の制御プログラム５２が実行されて、エンジンを制御するための制御処理が行われることとなる。なお、この制御処理は、入力回路３からの各種センサ信号とフラッシュメモリ１５に格納されている制御データとに基づき、エンジンに対する最適な燃料噴射量や点火時期等を演算し、その演算結果に応じて、インジェクタおよびイグナイタ等のアクチュエータを駆動するための制御信号を出力回路７に出力するといった手順で実行される。
【００２７】
一方、ブートプログラム５０において、上記Ｓ１００で書換許可条件が成立していると判断した場合（Ｓ１００：ＹＥＳ）、すなわち、ＥＣＵ１にデータ書換装置９が接続されてモード切換スイッチＳＷがＯＮされたことにより、モード判定用信号ラインＬがロウレベルであった場合には、書換モードの動作を行うためにＳ１２０に移行する。
【００２８】
そしてＳ１２０にて、データ書換装置９から復号化キー情報を受信したか否かを判断する。ここで、復号化キー情報を受信していない場合には（Ｓ１２０：ＮＯ）、Ｓ１２０の処理を繰り返すことにより、復号化キー情報を受信するまで待機する。一方、復号化キー情報を受信した場合には（Ｓ１２０：ＹＥＳ）、Ｓ１３０にて、フラッシュメモリ１５内の書換プログラム５１を解凍するとともに、その解凍後の書換プログラム５１をＲＡＭ１７に書き込む（転送する）。
【００２９】
そしてＳ１４０にて、Ｓ１３０でＲＡＭ１７に転送した解凍後の書換プログラム５１へジャンプする。すると、ＣＰＵ１１は上記解凍後の書込プログラム５１をＲＡＭ１７上で実行することとなり、これによりＳ３００〜Ｓ３５０の書換処理が行われる。
【００３０】
すなわち、まずＳ３００にて、データ書換装置９から受信した復号化キー情報と演算式とを用いて復号化テーブルを作成する。ここで、具体的な復号化テーブル作成方法を図４を用いて説明する。
【００３１】
まず、復号化テーブルを図４（ａ）に示すように初期化する。すなわち、復号化テーブルは、複数の暗号文のそれぞれについて、その暗号文と平文との対応関係が記載されたものであり、Ｓ３００では、各暗号文に対応する平文の値を０に設定することにより復号化テーブルを初期化する。
【００３２】
次に、例えば下式（１）で表される暗号化式を用い、例えば図４（ｂ）に示すように、復号に必要な全ての平文Ｖそれぞれに対応する暗号文Ｕを算出する。
【００３３】
【数１】
0005589958.tif 000002
【００３４】
なお式（１）において、ＮおよびＫはＥＣＵ１側で保持している定数、Ｊは上記の復号化キー情報である。
そして図４（ｃ）に示すように、初期化された復号化テーブルにおける複数の暗号文の値それぞれについて、対応する平文の値を、０から、上記算出結果で得られた対応関係に基づいて置き換える。
【００３５】
例えば、図４（ｃ）の復号化テーブルでは、暗号文０，１，３に対応する平文はＶ0，Ｖ1，Ｖ3である。すなわち、式（１）によって、平文Ｖ0，Ｖ1，Ｖ3に対応する暗号文がそれぞれ０，１，３であるという算出結果が得られたことを表している。また、暗号文２，４に対応する平文は０である。すなわち、暗号文２，４に対応する平文は存在しないことを表している。
【００３６】
さらにＳ３１０にて、フラッシュメモリ１５内の制御プログラム５２を消去する。
その後Ｓ３２０にて、データ書換装置９から送信されて来る所定バイト分の書換データ（つまり、フラッシュメモリ１５に格納すべき新たなデータのうちの所定バイト分）を受信したか否かを判断する。ここで、所定バイト分の書換データを受信していない場合には（Ｓ３２０：ＮＯ）、Ｓ３２０の処理を繰り返すことにより、所定バイト分の書換データを受信するまで待機する。なお、この書換データは暗号化されている。
【００３７】
一方、所定バイト分の書換データを受信した場合には（Ｓ３２０：ＹＥＳ）、Ｓ３３０にて、Ｓ３００で作成した復号化テーブルを用いて、受信した書換データを復号し、さらにＳ３４０にて、復号した書換データを、フラッシュメモリ１５内において制御プログラム５２を記憶する領域に書き込む。
【００３８】
次にＳ３５０にて、フラッシュメモリ１５の全データの書き換えが完了したか否かを判断する。ここで、全データの書き換えが完了していない場合には（Ｓ３５０：ＮＯ）、Ｓ３２０に戻る。一方、フラッシュメモリ１５の全データの書き換えが完了した場合には（Ｓ３５０：ＹＥＳ）、処理を終了して無処理状態となる。
【００３９】
このように構成されたＥＣＵ１は、プログラムに従って処理を行うＣＰＵ１１と、記憶内容の書き換えが可能であるとともに、エンジンを制御するための制御プログラム５２と、制御プログラム５２の内容を書き換えるための書換プログラム５１とを記憶するフラッシュメモリ１５とを備え、ＣＰＵ１１が、通常時には、フラッシュメモリ１５に記憶された制御プログラム５２に従って、エンジンを制御するための制御処理を行い、予め設定された書換許可条件が成立した場合には、フラッシュメモリ１５に記憶された書換プログラム５１に従って、制御プログラム５２の内容を書き換える書換処理を行うように構成され、書換プログラム５１は、圧縮された状態でフラッシュメモリ１５に記憶されており、書換許可条件が成立した場合に、フラッシュメモリ１５に記憶されている書換プログラム５１を解凍して、解凍後の書換プログラム５１を、記憶内容の読み出し及び書き込みが可能なＲＡＭ１７に書き込み、ＣＰＵ１１に、ＲＡＭ１７内の書換プログラム５１に従って書換処理を行わせる（Ｓ１３０，Ｓ１４０）。
【００４０】
このように構成されたＥＣＵ１では、書換プログラム５１が、圧縮された状態でフラッシュメモリ１５に記憶されているため、圧縮されていない状態で書換プログラム５１を記憶する場合と比較して、データをフラッシュメモリ１５に記憶するための記憶容量を低減することができる。これにより、制御プログラム５２等をフラッシュメモリ１５に記憶するための記憶容量の減少を抑制することができる。
【００４１】
さらに、書換プログラム５１は、圧縮された状態でフラッシュメモリ１５に記憶されており、そのままでは書換処理を行うことができないデータ配列に変更されている。このため、ＣＰＵ１１にプログラム暴走が生じて、フラッシュメモリ１５内の書換プログラム５１が実行されたとしても、フラッシュメモリ１５の記憶内容が不適当に書き換えられてしまうことがない。
【００４２】
また書換処理は、制御プログラム５２の内容を書き換えるためにＥＣＵ１に接続されるデータ書換装置９から、上式（１）で表される暗号化式で用いられる復号化キー情報を受信すると、復号化キー情報を用いた上式（１）の暗号化式に基づいて、復号に必要な全ての平文を暗号化することによって、全ての平文のそれぞれについて平文と暗号文との対応関係が設定された復号化テーブルを作成し、さらに、復号化キー情報を用いた上式（１）の暗号化式に基づいて暗号化された書換データをデータ書換装置９から受信すると、受信した書換データを復号化テーブルを用いて復号し、復号した書換データをフラッシュメモリ１５に書き込むことにより、制御プログラムの内容を書き換える（Ｓ３００〜Ｓ３５０）。
【００４３】
これにより、暗号化された書換データを復号するために用いる復号化テーブルを予めフラッシュメモリ１５に記憶しておく必要がないため、その分、データをフラッシュメモリ１５に記憶するための記憶容量を低減することができる。これにより、制御プログラム５２等をフラッシュメモリ１５に記憶するための記憶容量の減少を抑制することができる。
【００４４】
以上説明した実施形態において、ＣＰＵ１１は本発明における演算処理手段、フラッシュメモリ１５は本発明における書換可能不揮発性メモリ、ＲＡＭ１７は本発明における揮発性メモリ、Ｓ１３０およびＳ１４０の処理は本発明における書換プログラム実行手段、書換許可条件は本発明における書換条件、式（１）は本発明における暗号化式、復号化キー情報は本発明における鍵情報である。
【００４５】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
例えば上記実施形態においては、式（１）で表される暗号化式を用いて復号化テーブルを作成するものを示したが、暗号化式は、式（１）に限定されるものではなく、鍵情報を用いて暗号化と復号を行うことができるものであればよい。
【符号の説明】
【００４６】
１…ＥＣＵ、３…入力回路、５…マイコン、７…出力回路、９…データ書換装置、１１…ＣＰＵ、１５…フラッシュメモリ、１７…ＲＡＭ、１９…Ｉ／Ｏ、２１…通信回路、２３Ｆ…雌コネクタ、２３Ｍ…雄コネクタ、２５…通信線、２７…信号線、５０…ブートプログラム、５１…書換プログラム、５２…制御プログラム
【図１】
0005589958.tif 000003
【図２】
0005589958.tif 000004
【図３】
0005589958.tif 000005
【図４】
0005589958.tif 000006