(57)【要約】      （修正有）【課題】不揮発性メモリに記憶された不正なプログラムを確実に検出する。【解決手段】ユーザプログラムを記憶する際に、メモリブロック１のチェックサム結果をメモリブロック３の記憶領域Ｂ１４ｂに記憶し、起動時にＣＰＵがメモリブロック１の記憶領域Ａ１４ａに記憶された情報を読出してプログラムの正当性を判定し、プログラムが正当であると判定された場合にメモリブロック３の記憶エリアＢ１４ｂに記憶されたメモリブロック１のチェックサム結果と、今回計算したメモリブロック１のチェックサム結果とが一致するか否かを判定する。そして、一致する場合にプログラムを起動させ、一致しない場合は、プログラムを起動させない。【選択図】図２
2016062173.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの正当性の判定結果を格納する正当性判定領域を備えた第１メモリブロックと、複数の第２メモリブロックとを有する不揮発性メモリにおける前記第１メモリブロックのチェックサムの計算結果を前記複数の第２メモリブロックの何れかの第２メモリブロックに格納する格納部と、
起動時に前記第１メモリブロックのチェックサムを計算し、前記格納部に格納されたチェックサムの計算結果との一致判定を行う判定部と、
を含む電子制御装置。
【請求項２】
前記判定部の判定結果が一致しない場合には、プログラムの起動を禁止する禁止部を更に備えた請求項１の電子制御装置。
【請求項３】
前記正当性判定領域に格納された正当性判定結果が正当なプログラムであることを表す情報であり、かつ前記判定部の判定結果が一致した場合に、プログラムを起動する起動部を更に備えた請求項１又は請求項２に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリへのプログラムの書換えを制御する電子制御装置に関する。
【背景技術】
【０００２】
自動車に搭載された電子制御装置では、不揮発性メモリ等のメモリに格納されるプログラムの書換えについて種々の方法が提案されている（例えば、特許文献１〜４）。
【０００３】
特許文献１では、外部から取得した更新プログラムを副格納エリアに格納する格納処理と、更新バージョンプログラムの副格納エリアへの書き込みに成功した場合は、現在主格納エリアとして使用されているメモリ領域に代え、更新バージョンプログラムの格納が完了した副格納エリアを、新たな主格納エリアとして切り替える一方、副格納エリアへの書き込みに失敗した場合は当該切替えを行わないメモリ切替え処理とを含むプログラム書換え処理を実行することが提案されている。
【０００４】
特許文献２では、リプログの対象外となるブロックＡに簡易通信プログラムを格納し、リプログの対象となるブロックＢ、Ｃに正規通信プログラムを格納する。そして、通常時には、正規通信プログラムに基づく正規通信を利用し、リプログ手順を実行する時には、簡易プログラムに基づく簡易通信を利用することが提案されている。
【０００５】
特許文献３には、不揮発性メモリに書き込まれていたリプログに従って、不揮発性メモリに書き込まれていたアプリを消去する第１消去処理と、第１消去処理後、不揮発性メモリに書き込まれていたリプログに従って、新たなリプログを不揮発性メモリに書き込む第１書き込み処理と、第１書き込み処理後、第１書き込み処理にて書き込まれたリプログに従って、不揮発性メモリに書き込まれていたリプログを消去する第２消去処理と、第２消去処理後、アプリを不揮発性メモリに書き込む第２書き込み処理と、を含む書換処理を行う電子制御装置が提案されている。
【０００６】
特許文献４には、ＣＰＵが、動作期間中にデータ待避実施タイミングが到来すると、ＲＡＭ内のデータ群と、そのデータ群に対して計算したチェックサムとを、不揮発性メモリにおける２つのブロックの各々に書き込む。そして、ＣＰＵが電源供給により起動すると、前回の動作期間において書き込みを実施した２つのブロックのうち、記憶されているデータ群に対するチェックサムの計算結果と、記憶されているチェックサムとが一致するブロックを特定し、特定したブロックに記憶されているデータ群を、ＲＡＭに保存して復帰させることが提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３０１９６０号公報
【特許文献２】特開２０１３−１９２０９２号公報
【特許文献３】特開２０１４−２４７８号公報
【特許文献４】特開２０１４−７５８０７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１〜４では、プログラム消去中に電源断等によって異常終了が発生して、一部のプログラムが消去された場合について考慮していないため改善の余地がある。例えば、プログラム書換えによりプログラムを消去する際に電源断が発生してプログラムの正当性を判定する領域が消去されずに、他の一部が消去された場合、次回の起動時に正当性を判定する領域が残っているためプログラムが正当であると誤判定してしまう。
【０００９】
本発明は、上記事実を考慮して成されたもので、不揮発性メモリに記憶された不正なプログラムを確実に検出することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために請求項１に記載の発明は、プログラムの正当性の判定結果を格納する正当性判定領域を備えた第１メモリブロックと、複数の第２メモリブロックとを有する不揮発性メモリにおける前記第１メモリブロックのチェックサムの計算結果を前記複数の第２メモリブロックの何れかの第２メモリブロックに格納する格納部と、起動時に前記第１メモリブロックのチェックサムを計算し、前記格納部に格納されたチェックサムの計算結果との一致判定を行う判定部と、を含んでいる。
【００１１】
請求項１に記載の発明によれば、不揮発性メモリは、プログラムの正当性の判定結果を格納する正当性判定領域を備えた第１メモリブロックと、複数の第２メモリブロックを有している。
【００１２】
格納部では、第１メモリブロックのチェックサムの計算結果が複数の第２メモリブロックの何れかの第２メモリブロックに格納される。
【００１３】
そして、判定部では、起動時に第１メモリブロックのチェックサムが計算され、格納部に格納されたチェックサムの計算結果と一致判定される。これにより、例えば、不揮発性メモリのプログラムの消去中に電源断等が発生し、正当性判定領域は消去されずに、メモリブロックの一部のみが消去されるような場合でも、第２メモリブロックに格納されたチェックサムの計算結果と、起動時のチェックサムの計算結果とが一致しない場合は、不正なプログラムであると判定することができる。従って、不正なプログラムを確実に検出することができる。
【００１４】
なお、請求項２に記載の発明のように、判定部の判定結果が一致しない場合には、プログラムの起動を禁止する禁止部を更に備えるようにしてもよい。これにより、不正なプログラムの起動が防止される。
【００１５】
また、請求項２に記載の発明のように、正当性判定領域に格納された正当性判定結果が正当なプログラムであることを表す情報であり、かつ判定部の判定結果が一致した場合に、プログラムを起動する起動部を更に備えるようにしてもよい。これにより、正当なプログラムのみを起動することができる。
【発明の効果】
【００１６】
以上説明したように本発明によれば、不揮発性メモリに記憶された不正なプログラムを確実に検出することができる、という効果がある。
【図面の簡単な説明】
【００１７】
【図１】本実施形態に係るマイクロコンピュータの概略構成を示す図である。
【図２】本実施形態に係るマイクロコンピュータのメモリのメモリマップの一例を示す図である。
【図３】メモリのプログラムの書換えを説明するための図であり、（Ａ）は消去終了時を示す図であり、（Ｂ）は書込み終了時を示す図であり、（Ｃ）は正当性判定及びチェックサム書込み終了時を示す図である。
【図４】本実施形態に係るマイクロコンピュータで行われる処理の一例を示すフローチャートである。
【図５】本実施形態に係るマイクロコンピュータで行われるリプログラミング処理の流れの一例を示すフローチャートである。
【図６】従来のメモリのプログラムの書換えを説明するための図であり、（Ａ）はメモリブロック１消去前を示す図であり、（Ｂ）はメモリブロック１消去中を示す図であり、（Ｃ）はメモリブロック１消去中の異常終了後を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。本実施形態では、電子制御装置としてのマイクロコンピュータを一例として説明する。図１は、本実施形態に係るマイクロコンピュータの概略構成を示す図である。
【００１９】
本実施形態に係るマイクロコンピュータ１０は、ＣＰＵ１２、メモリ１４、及びＣＡＮモジュール１６等を含んだ１チップマイコンとして構成されている。  なお、マイクロコンピュータ１０は、ＣＡＮモジュール１６を省略した構成としてもよいし、他の通信モジュールを備える構成としてもよい。或いは、上記の構成の他にタイマ等の他の構成を含むようにしてもよい。
【００２０】
ＣＡＮモジュール１６は、ＣＡＮプロトコルで動作するネットワーク通信を行うためモジュールである。例えば、車両内に設けられたＣＡＮネットワークに接続された各種機器との通信を行う。
【００２１】
メモリ１４は、例えば、ＲＯＭなどの不揮発性メモリやＲＡＭなどの揮発性メモリを含み、ＣＰＵ１２は、メモリ１４を用いて各種プログラムの実行等を制御する。例えば、ＲＯＭ等に記憶されたプログラムをＲＡＭに展開してＣＰＵ１２が実行することにより、各種処理を行う。
【００２２】
本実施形態では、例えば、ＣＡＮネットワークを利用して、マイクロコンピュータ１０のメモリ１４に記憶されたプログラムを書き換えることが可能とされている。
【００２３】
図２は、本実施形態に係るマイクロコンピュータ１０のメモリ１４のメモリマップの一例を示す図である。
【００２４】
メモリ１４は、プログラムＲＯＭ領域を含んで構成されており、当該プログラムＲＯＭ領域は、図２に示すように、複数のメモリブロック（図２では、一例としてブロック０〜３）に分割されている。
【００２５】
詳細には、メモリブロック０は、書換え非対象とされた書換え制御プログラムが記憶されている。メモリブロック１〜３は、書換え対象とされた領域とされており、ユーザプログラムが書き込まれ、プログラムの書換え（以下、リプログと称する場合がある）が可能とされている。
【００２６】
書換え対象のメモリブロック１には、正当性判定領域とされた記憶エリアＡ１４ａが設けられている。記憶エリアＡ１４ａには、ユーザプログラムを書き込んだ際に正当性判定（所謂ベリファイ等）を行った際の正当性判定結果が格納される。すなわち、プログラムが正常に書き込まれた否かを表す情報が書き込まれる。
【００２７】
また、本実施形態では、書き換え対象のメモリブロック３に、メモリブロック１のチェックサムの計算結果を記憶する記憶エリアＢ１４ｂを備えている。記憶エリアＢ１４ｂには、ユーザプログラムを書き込んだ際にメモリブロック１のチェックサムを計算した計算結果が記憶される。チェックサムの計算結果としては、例えば、サム値や、ＣＲＣの符号値、ＭＤ５のハッシュ値等が挙げられる。
【００２８】
図３は、メモリ１４のプログラムの書換えを説明するための図であり、図３（Ａ）は消去終了時を示す図であり、図３（Ｂ）は書込み終了時を示す図であり、図３（Ｃ）は正当性判定及びチェックサム書込み終了時を示す図である。
【００２９】
プログラムを書き換える際には、まず、図３（Ａ）に示すように、メモリ１４の書換え対象となるメモリブロック１〜３に記憶されたユーザプログラムを消去する。
【００３０】
次に、メモリブロック１〜３に新しいユーザプログラムを書き込んで図３（Ｂ）に示す状態となる。
【００３１】
そして、新しいユーザプログラムのベリファイチェック等を行うことにより、書き込まれたプログラムにエラーがないか、正しく読み出せるか否かをチェックする正当性判定を行う。そして、図３（Ｃ）に示すように、プログラムが正当に書き込まれたことを表す情報を記憶エリアＡ１４ａに書き込む。また、本実施形態では、メモリブロック１のチェックサムを計算し、計算したチェックサム値をメモリブロック３の記憶エリアＢ１４ｂに記憶する。
【００３２】
続いて、上述のように構成された本実施形態に係るマイクロコンピュータ１０で行われる処理について説明する。図４は、本実施形態に係るマイクロコンピュータ１０で行われる処理の一例を示すフローチャートである。なお、図４の処理は、マイクロコンピュータ１０の電源がオンされた場合に開始するものとして説明する。
【００３３】
マイクロコンピュータ１０の電源がオンされると、ステップ１００では、ＣＰＵ１２が、記憶エリアＡ１４ａに記憶された正当性判定結果を読出してステップ１０２へ移行する。  
【００３４】
ステップ１０２では、正当性判定が正常であるか否かＣＰＵ１２が判定する。該判定は、ステップ１００で読出した正当性判定結果が正常を表す情報であるか否かを判定し、判定が否定された場合にはステップ１１２へ移行し、判定が肯定された場合にはステップ１０４へ移行する。
【００３５】
ステップ１０４では、ＣＰＵ１２がメモリブロック１のチェックサムを算出してステップ１０６へ移行する。
【００３６】
ステップ１０６では、ＣＰＵ１２がメモリブロック３の記憶エリアＢ１４ｂに記憶されたチェックサム結果を読出してステップ１０８へ移行する。すなわち、メモリ１４にユーザプログラムが書き込まれた際に計算したブロック１のチェックサム結果をＣＰＵ１２が読出す。
【００３７】
ステップ１０８では、ステップ１０４で今回計算したチェックサム結果と、記憶エリアＢ１４ｂから読出したチェックサム結果が一致するか否かをＣＰＵ１２が判定する。該判定が肯定された場合にはステップ１１０へ移行し、否定された場合にはステップ１１２へ移行する。
【００３８】
ステップ１１０では、ＣＰＵ１２がユーザプログラム起動処理を実行して電源オンの際の処理を終了する。なお、ユーザプログラム起動処理は、ＣＰＵ１２が、メモリ１４に記憶されたユーザプログラムを起動して実行する。
【００３９】
一方、ステップ１１２では、ＣＰＵ１２がリプログラミング処理を実行して電源オンの際の処理を終了する。すなわち、正当性判定結果がＯＫではない場合や、チェックサムの算出結果が記憶領域Ｂ１２ｂに記憶されたプログラムを記憶する際のチェックサムの算出結果と一致しない場合にはユーザプログラムが起動されず、リプログラミング処理を行う。換言すれば、不正なプログラムの場合にはプログラムの起動が禁止されることになる。
【００４０】
ここで、リプログラミング処理について詳細に説明する。図５は、本実施形態に係るマイクロコンピュータ１０で行われるリプログラミング処理の流れの一例を示すフローチャートである。なお、リプログラミング処理は、ユーザプログラム実行中にユーザプログラムによってプログラムの書換え等が指示された場合も実行される。
【００４１】
まず、ステップ２００では、ＣＰＵ１２がメモリ１４に記憶されたユーザプログラムを消去するプログラム消去処理を行ってステップ２０２へ移行する。すなわち、図３（Ａ）に示すように、メモリ１４の書換え対象となるメモリブロック１〜３が消去される。
【００４２】
ステップ２０２では、ＣＰＵ１２がメモリ１４にユーザプログラムを書き込んでステップ２０４へ移行する。すなわち、図３（Ｂ）に示すように、ユーザプログラムが消去されたメモリ１４の各メモリブロック１〜３に新たなユーザプログラムが書き込まれる。
【００４３】
ステップ２０４では、ＣＰＵ１２がベリファイ処理を行ってステップ２０６へ移行する。ベリファイ処理は、ユーザプログラムがメモリ１４のメモリブロック１〜３に正しく書き込まれて読出されるか否かをチェックする。
【００４４】
ステップ２０６では、ＣＰＵ１２がベリファイ処理の結果がＯＫであるか否かを判定する。判定が肯定された場合にはステップ２０８へ移行し、否定された場合にはそのままリプログラミング処理を終了して、エラー処理等の処理を行う。なお、ベリファイ処理がＯＫではない場合には、ステップ２００に戻って再度ユーザプログラムの消去及び書込みを行うようにしてもよい。
【００４５】
ステップ２０８では、ＣＰＵ１２が記憶エリアＡ１４ａに正当性判定結果、すなわち、プログラムが正常に書き込まれたことを表す情報を書き込んでステップ２１０へ移行する。
【００４６】
ステップ２１０では、ＣＰＵ１２がメモリブロック１のチェックサムを算出して、算出したチェックサム結果をメモリブロック３の記憶エリアＢ１４ｂに書き込んでリプログラミング処理を終了する。
【００４７】
このように本実施形態では、ユーザプログラムをメモリ１４に記憶する場合、正当性判定を記憶した記憶エリアＡ１２ａを備えたメモリブロック１とは異なるメモリブロック３の記憶エリアＢ１２ｂにメモリブロック１のチェックサムの計算結果を記憶する。そして、ユーザプログラムの起動時に、メモリ１４の記憶エリアＡ１４ａに記憶された正当性判定結果が正常であっても、記憶エリアＢ１４ｂに記憶したチェックサム結果と、今回のチェックサム結果とが一致しない場合はプログラムの実行を禁止するようにした。これにより、ユーザプログラムを書き換える際などに、プログラム消去中に電源断などによる異常終了により、正当性判定が消去されずに、一部が削除される等の不正なプログラムを正当であると誤認識することがなくなる。
【００４８】
例えば、メモリ１４の状態が、図６（Ａ）のブロック１消去前に示すように、ユーザプログラムが記憶されている場合に、ユーザプログラムの書換えを行うとする。この場合には、図６（Ｂ）に示すように、まず、メモリブロック１を消去する。ここで、電源断等により異常終了が発生した場合には、図６（Ｃ）に示すように、正当性判定は消去されず、ユーザプログラムの一部が消去された状態となることがある。
【００４９】
図６（Ｃ）に示すように、正当性判定が消去されていないような場合には、従来では、正当性判定結果が正常であれば、正当なプログラムと誤認識して、一部が消去された不正なユーザプログラムを起動してしまう。
【００５０】
しかしながら、本実施形態では、正当性判定結果が正常であっても、上述のように記憶エリアＢ１４ｂに記憶された、ユーザプログラムを記憶した際に計算したチェックサム結果と、今回のチェックサム結果が一致しない場合にはユーザプログラムが起動されない。従って、不正なプログラムを正当なプログラムと誤判定することなく、確実に不正なプログラムを検出することができる。また、不正なプログラムを検出することができるので、不正なプログラムの起動を確実に防止することができる。
【００５１】
なお、本発明は、上記に限定されるものでなく、上記以外にも、その主旨を逸脱しない範囲内において種々変形して実施可能であることは勿論である。
【符号の説明】
【００５２】
１０    マイクロコンピュータ
１２    ＣＰＵ
１２ａ    記憶領域Ａ
１２ｂ    記憶領域Ｂ
１４    メモリ
【図１】
2016062173.tif 000003
【図２】
2016062173.tif 000004
【図３】
2016062173.tif 000005
【図４】
2016062173.tif 000006
【図５】
2016062173.tif 000007
【図６】
2016062173.tif 000008