(57)【要約】【課題】書き換え対象領域に格納されたデータが不定な状態になっていても所期の処理が中断するのを抑制可能な電子制御装置を提供する。【解決手段】電子制御装置は、Ｓ１０７において、書き換え対象領域に格納されたデータが読み取られた際に、書き換え対象領域に格納されたデータが不定な状態になっているか否かを判定する。書き換え対象領域に格納されたデータが不定な状態になっている、とＳ１０７において判定された場合に、Ｓ１３１では、Ｓ１０５によるステータスの読み取りが実行されたか否かを判定する。Ｓ１０５によるステータスの読み取りが実行された、とＳ１３１において判定された場合に、Ｓ１０９以降の第１処理を実行する。【選択図】図２
2020149428.tif 000002
【特許請求の範囲】
【請求項１】
データの消去及び書き込みが可能な記憶領域を備える不揮発性メモリによって構成され、当該記憶領域には書き換え対象となるデータが格納される書き換え対象領域（４０）が含まれ、かつ当該書き換え対象領域には当該書き換え対象領域に格納されたデータの書き換えが完了しているか否かを判定するためのステータスが格納されるステータス格納領域（４１）が含まれ、前記書き換え対象領域が初期状態にある場合及びデータ消去後の状態にある場合には、前記書き換え対象領域に格納されたデータが不定な状態になる記憶部（１３）と、
前記ステータス格納領域からステータスを読み取る読取部（１１，Ｓ１０５）と、
前記書き換え対象領域に格納されたデータが読み取られた際に、前記書き換え対象領域に格納されたデータが不定な状態になっているか否かを判定する第１判定部（１１，Ｓ１０７）と、
前記書き換え対象領域に格納されたデータが不定な状態になっている、と前記第１判定部によって判定された場合に、前記読取部によるステータスの読み取りが実行されたか否かを判定する第２判定部（１１，Ｓ１３１）と、
前記書き換え対象領域に格納されたデータが不定な状態にはなっていない、と前記第１判定部によって判定された場合、又は前記読取部によるステータスの読み取りが実行された、と前記第２判定部によって判定された場合に、第１処理を実行する第１処理部（１１，Ｓ１０９−Ｓ１１１，Ｓ１１３−Ｓ１１９，Ｓ１２５−Ｓ１２９）と、
前記読取部によるステータスの読み取りが実行されていない、と前記第２判定部によって判定された場合に、第２処理を実行する第２処理部（１１，Ｓ１４１）と、
を備える電子制御装置。
【請求項２】
請求項１に記載の電子制御装置であって、
前記記憶領域に記憶されるデータ内に生じたエラーの検出及び訂正が可能なＥＣＣ部（１４）を備え、前記読取部によって前記ステータス格納領域からステータスを読み取る際に、前記ステータス格納領域に格納されたデータが不定な状態にあると、前記ＥＣＣ部によってエラーが検出されて割り込み処理が発生するように構成され、
前記第１判定部は、前記割り込み処理が発生したら、前記書き換え対象領域に格納されたデータが不定な状態になっていると判定し、前記割り込み処理が発生しなかったら、前記書き換え対象領域に格納されたデータが不定な状態にはなっていないと判定するように構成されている
電子制御装置。
【請求項３】
請求項２に記載の電子制御装置であって、
前記第２判定部は、前記割り込み処理の中で、前記読取部によるステータスの読み取りが実行されたか否かを判定するように構成されている
電子制御装置。
【請求項４】
請求項３に記載の電子制御装置であって、
前記読取部によって前記ステータス格納領域からステータスを読み取る場合と当該場合以外の場合とで、オンとオフとが切り替えられるフラグを記憶するフラグ記憶部（２１）を備え、
前記第２判定部は、前記フラグ記憶部に記憶されたフラグに基づいて、前記読取部によるステータスの読み取りが実行されたか否かを判定するように構成されている
電子制御装置。
【請求項５】
請求項４に記載の電子制御装置であって、
ＣＰＵ（１１）を備えるマイコン（６）を有し、
前記フラグ記憶部は、前記ＣＰＵの内部にある記憶領域によって構成されている
電子制御装置。
【請求項６】
請求項３から請求項５までのいずれか一項に記載の電子制御装置であって、
前記第１処理部は、前記読取部によるステータスの読み取りが実行された、と前記第２判定部によって判定された場合に、前記割り込み処理を終了して元の処理へと復帰することにより、前記第１処理を実行するように構成され、
前記第２処理部は、前記読取部によるステータスの読み取りが実行されていない、と前記第２判定部によって判定された場合に、前記割り込み処理を継続して前記第２処理を実行するように構成されている
電子制御装置。
【請求項７】
請求項１から請求項６までのいずれか一項に記載の電子制御装置であって、
前記第１処理部は、前記読取部によって前記ステータス格納領域から読み取られたステータスが適正なステータスであるか否かを判定する判定処理（Ｓ１１１）と、前記判定処理において前記読取部によって前記ステータス格納領域から読み取られたステータスが適正なステータスであると判定された場合に、前記書き換え対象領域に格納されたプログラムに基づく処理を実行する通常処理（Ｓ１１３−Ｓ１１９）と、前記判定処理において前記読取部によって前記ステータス格納領域から読み取られたステータスが適正なステータスではないと判定された場合に、前記電子制御装置と通信可能な外部装置から伝送されてくるデータを前記書き換え対象領域に書き込む書き換え処理（Ｓ１２５−Ｓ１２９）とが含まれる前記第１処理を実行するように構成されている
電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子制御装置に関する。
【背景技術】
【０００２】
下記特許文献１に開示された電子制御装置（以下、ＥＣＵと略称する。）は、電気的にデータの消去及び書き込みが可能なフラッシュメモリを備える。フラッシュメモリには、制御対象を制御するためのソフトウェアが格納される。下記特許文献１に開示されたフラッシュメモリは、データを消去した場合に、消去後のデータが「不定」になる。
【０００３】
ＥＣＵには、フラッシュメモリ内に格納されたソフトウェアを書き換える機能を備えたソフトウェア（以下、リプログソフトと称する。）があらかじめ搭載されている。ＥＣＵと通信可能な外部装置を車両に接続し、外部装置から車載ＬＡＮ経由でリプログソフトへデータを送信すると、リプログソフトは、そのデータをフラッシュメモリ内の書き換え対象領域に書き込む。これにより、書き換え対象領域内のソフトウェアを書き換えることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１３９３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
リプログソフトでは、以下のような書き換え処理が実行される。まず、ＥＣＵの起動時に実行されるブート処理の中で、フラッシュメモリ内の書き換え対象領域に含まれるステータス格納領域からステータスを読み取る。次に、ステータス格納領域に書き換え完了を示すステータスが格納されているか否かをチェックする。
【０００６】
既に書き換え対象領域にデータが書き込まれている場合、ステータス格納領域から読み取られるステータスは、書き換え完了を示すステータスとなる。したがって、ステータス格納領域から書き換え完了を示すステータスを読み取ることができた場合には、外部装置から受信したデータの書き込みは行わない。
【０００７】
書き換え対象領域に書き換え予定のデータがまだ書き込まれていない場合、ステータス格納領域から読み取られるステータスは、書き換え完了を示すステータスとは別のステータスとなる。したがって、ステータス格納領域から書き換え完了を示すステータスを読み取ることができなかった場合には、外部装置から受信したデータを書き換え対象領域に書き込む。
【０００８】
フラッシュメモリとしては、ＥＣＣ機能付きフラッシュメモリが利用される。ＥＣＣ機能付きフラッシュメモリの場合、フラッシュメモリの記憶領域に格納されているデータを読み取る際に１ビット又は２ビットのエラーが生じていれば、そのエラーの検出及び訂正を行うことができる。ただし、３ビット以上のエラーが生じている場合、又はデータが不定な状態にある場合には、例外が発生する。
【０００９】
そのため、上述のような書き換え処理が実行される際、ステータス格納領域に格納されたデータが不定な状態になっていると、ステータス格納領域からステータスを読み取ろうとしたときに例外が発生する。例外が発生した場合、上述の書き換え処理は中断され、例外処理が実行される。すなわち、ステータス格納領域に格納されたデータが不定な状態になっている場合には、実行したい第１処理（例えば、上述の書き換え処理。）は中断され、強制的に第２処理（例えば、上述の例外処理。）が実行される。そのため、第１処理を完了させることができず、上述の書き換え処理の場合であれば、書き換え対象領域へのデータの書き込みを完了させることができない。
【００１０】
また、例えば、例外処理が実行された際、ＥＣＵが再起動される構成を採用している場合には、再起動後のブート処理においても、ステータス格納領域からステータスを読み取ろうとする段階で例外が発生する。この場合、ＥＣＵは再起動を繰り返すだけとなり、書き換え対象領域へのデータの書き込みを完了させることができない。
【００１１】
本開示の一局面においては、書き換え対象領域に格納されたデータが不定な状態になっていても所期の処理が中断するのを抑制可能な電子制御装置を提供することが望ましい。
【課題を解決するための手段】
【００１２】
本開示の一局面における電子制御装置は、記憶部（１３）と、読取部（１１，Ｓ１０５）と、第１判定部（１１，Ｓ１０７）と、第２判定部（１１，Ｓ１３１）と、第１処理部（１１，Ｓ１０９−Ｓ１１１，Ｓ１１３−Ｓ１１９，Ｓ１２５−Ｓ１２９）と、第２処理部（１１，Ｓ１４１）と、を備える。記憶部は、データの消去及び書き込みが可能な記憶領域を備える不揮発性メモリによって構成され、当該記憶領域には書き換え対象となるデータが格納される書き換え対象領域（４０）が含まれる。かつ当該書き換え対象領域には当該書き換え対象領域に格納されたデータの書き換えが完了しているか否かを判定するためのステータスが格納されるステータス格納領域（４１）が含まれる。書き換え対象領域が初期状態にある場合及びデータ消去後の状態にある場合には、書き換え対象領域に格納されたデータが不定な状態になる。読取部は、ステータス格納領域からステータスを読み取る。第１判定部は、書き換え対象領域に格納されたデータが読み取られた際に、書き換え対象領域に格納されたデータが不定な状態になっているか否かを判定する。第２判定部は、書き換え対象領域に格納されたデータが不定な状態になっている、と第１判定部によって判定された場合に、読取部によるステータスの読み取りが実行されたか否かを判定する。第１処理部は、書き換え対象領域に格納されたデータが不定な状態にはなっていない、と第１判定部によって判定された場合、又は読取部によるステータスの読み取りが実行された、と第２判定部によって判定された場合に、第１処理を実行する。第２処理部は、読取部によるステータスの読み取りが実行されていない、と第２判定部によって判定された場合に、第２処理を実行する。
【００１３】
このように構成された電子制御装置によれば、書き換え対象領域に格納されたデータが不定な状態にはなっていない、と第１判定部によって判定された場合、第１処理部が第１処理を実行する。一方、書き換え対象領域に格納されたデータが不定な状態になっている、と第１判定部によって判定された場合には、更に第２判定部による判定が行われる。すなわち、第２判定部は、読取部によるステータスの読み取りが実行されたか否かを判定する。その際、読取部によるステータスの読み取りが実行された、と第２判定部によって判定された場合、第１処理部が第１処理を実行する。一方、読取部によるステータスの読み取りが実行されていない、と第２判定部によって判定された場合、第２処理部が第２処理を実行する。
【００１４】
したがって、書き換え対象領域に格納されたデータが不定な状態にはなっていなければ第１処理を実行し、書き換え対象領域に格納されたデータが不定な状態になっていれば第２処理を実行するように構成されていた技術とは異なり、書き換え対象領域に格納されたデータが不定な状態になっている場合でも、読取部がステータスを読み取った場合については、書き換え対象領域に格納されたデータが不定な状態にはなっていない場合と同様に、第１処理を実行させることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は実施形態のソフトウェア書き換えシステムを表す構成図である。
【図２】図２は書き換え処理を表すフローチャートである。
【図３】図３はＥＣＣエラーに対する処理を表すフローチャートである。
【図４】図４は書き換えシーケンスの一例を説明するための説明図である。
【発明を実施するための形態】
【００１６】
次に、上述の電子制御装置について、例示的な実施形態を挙げて説明する。
［ソフトウェア書き換えシステム１及び電子制御装置の構成］
図１に示すように、ソフトウェア書き換えシステム１は、電子制御装置２（以下、ＥＣＵ２と称する。）及び外部装置３を備える。ＥＣＵは「Electronic Control Unit」の略称である。ＥＣＵ２と外部装置３は、それぞれが車載ＬＡＮ５に接続されることによって互いに通信可能に構成されている。
【００１７】
ＥＣＵ２は、車両に搭載されている。ＥＣＵ２は、例えば、車両のエンジンを制御するように構成される。ＥＣＵ２は、車両に設けられた車載ＬＡＮ５に常時接続されている。外部装置３は、例えば自動車整備工場等、車両の外部となる場所に設けられる。外部装置３は、車両に装備されたコネクタを介して車載ＬＡＮ５に接続される。外部装置３は、当該外部装置３を書き換えツールとして機能させるためのソフトウェアが作動するように構成された装置である。外部装置３は、例えば汎用のパーソナルコンピュータ又は書き換えツールを作動させるための専用の装置によって構成される。
【００１８】
ＥＣＵ２は、マイコン６、入出力回路７及び電源８等を備える。マイコン６は、入出力回路７を介してＥＣＵ２による制御対象との間で制御信号や検知信号の入出力を実行する。電源８は、マイコン６に内蔵された各部に電力を供給する。マイコン６は、ＣＰＵ１１、ＲＡＭ１２、フラッシュメモリ１３及びＥＣＣ１４等を備える。ＥＣＣは「error checking and correction」の略称である。
【００１９】
ＣＰＵ１１は、ＲＡＭ１２又はフラッシュメモリ１３に格納されたプログラムに従って処理及び制御を実行する。ＲＡＭ１２は、通電時にデータを記憶可能な記憶装置である。ＲＡＭ１２には、ＣＰＵ１１による演算結果等が格納される。フラッシュメモリ１３は、データの消去及び書き込みが可能な不揮発性の非遷移的実体的記録媒体である。フラッシュメモリ１３には、ＣＰＵ１１が実行するプログラムやプログラムの実行時に参照されるデータ等が格納される。
【００２０】
本実施形態において、ＣＰＵ１１の内部には、キーワードチェックフラグ２１を記憶可能な記憶領域（例えばレジスタに含まれる少なくとも１ビットの記憶領域。）が確保される。キーワードチェックフラグ２１の使用方法については、後述する処理に関する説明の中で言及する。また、本実施形態の場合、フラッシュメモリ１３としては、フラッシュメモリ１３の記憶領域が初期状態（すなわち、記憶領域にまだデータが１度も書き込まれていない状態。）及び消去状態（すなわち、記憶領域に書き込まれたデータが消去された状態。）にある場合には、記憶領域に格納されたデータが不定な状態になるフラッシュメモリ１３が用いられている。フラッシュメモリ１３の記憶領域が不定な状態にある場合、その記憶領域に格納されたデータ中に含まれるビット値は「０」又は「１」のいずれとなるのかが「不定」となる。このような状態において、ＣＰＵ１１がフラッシュメモリ１３の記憶領域からデータを読み出そうとすると、ＥＣＣ１４によってエラーが検出されて例外が発生する。
【００２１】
フラッシュメモリ１３には、リプログソフト３０が記憶されている。リプログソフト３０は、ＣＰＵ１１によってフラッシュメモリ１３から読み出され、リプログソフト３０を構成するプログラムに従ってＣＰＵ１１が処理を実行することにより、リプログソフト３０が機能するように構成されている。リプログソフト３０は、ブート制御部３１、通信制御部３３及びフラッシュ制御部３５等を備える。ブート制御部３１は、ＥＣＵ２の起動時に実行されるソフトウェア等によって構成される。通信制御部３３は、外部装置３との通信を制御するためのソフトウェア等によって構成される。フラッシュ制御部３５は、フラッシュメモリ１３の記憶領域に対する消去や書き込みを制御するためのソフトウェア等によって構成される。
【００２２】
フラッシュメモリ１３の記憶領域には、書き換え対象領域４０が確保されている。書き換え対象領域４０には、キーワード格納領域４１や書き込み可能領域４３が含まれている。詳しくは後述するが、上述のリプログソフト３０は、ＥＣＵ２の起動時にキーワード格納領域４１をチェックして、書き換え対象領域４０に対する書き換え処理を実行する必要があるか否かを判定する。書き換え処理を実行する必要がないと判定された場合は、ＥＣＵ２が通常モードで起動される。この場合、ＣＰＵ１１は、書き換え対象領域４０に記憶されたプログラム等を読み出して、そのプログラムに従って処理を実行する。これにより、ＥＣＵ２による通常の制御が実行される。
【００２３】
一方、書き換え処理を実行する必要があると判定された場合は、ＥＣＵ２がリプログモードで起動される。この場合、ＣＰＵ１１は、外部装置３から伝送されてくる書き込みデータ５１を書き換え対象領域４０に書き込むための処理を実行する。これにより、ＥＣＵ２が通常モードで起動される際に書き換え対象領域４０から読み出されるプログラム等を更新することができる。外部装置３を用いて書き換え対象領域４０内のソフトウェアを書き換えようとするユーザーは、例えば、書き込みデータ５１が格納された非遷移的実態的記録媒体（例えば、ＵＳＢメモリ等。）を外部装置３に接続し、外部装置３において所定の操作を行う。これにより、外部装置３とＥＣＵ２とが協働してリプログ処理が実行され、書き換え対象領域４０内のソフトウェアを書き換えることができる。
【００２４】
［書き換え処理］
次に、ＥＣＵ２において実行される書き換え処理について図２に基づいて説明する。この書き換え処理は、マイコン６によって実行される処理であり、より詳細にはＣＰＵ１１によって実行される処理である。ＣＰＵ１１は、ＥＣＵ２の起動時に書き換え処理を開始する。
【００２５】
書き換え処理を開始すると、Ｓ１０１において、ＣＰＵ１１は、ＣＰＵ１１に内蔵されたリソース（例えばレジスタ等。）の初期化を行う。Ｓ１０３において、ＣＰＵ１１は、キーワードチェックフラグ２１をオンにする。この書き換え処理を実行している時点では、ＣＰＵ１１のレジスタ以外のリソースは初期化されていない状態にあり、例えばＲＡＭ１２やフラッシュ制御部３５等は未初期化の状態にある。そのため、この書き換え処理で利用するキーワードチェックフラグ２１は、Ｓ１０１において初期化が完了しているＣＰＵ１１内部の記憶領域に確保される。
【００２６】
Ｓ１０５において、ＣＰＵ１１は、フラッシュメモリ１３の書き換え対象領域４０に含まれるキーワード格納領域４１からキーワードを読み出す。ここで読み出されるキーワードは、書き換え対象領域４０のステータスを表す情報であり、当該キーワードに基づいて、書き換え対象領域４０の書き換えが完了しているか否か等の情報を得ることができる。
【００２７】
続いて、Ｓ１０７において、ＣＰＵ１１は、キーワード格納領域４１が不定な状態にあるか否かを判定する。本実施形態の場合、キーワード格納領域４１が不定な状態にある場合にＳ１０５を実行すると、ＥＣＣ１４によってエラーが検出されて例外が発生し、割り込み処理として実行される例外処理へと移行する。そこで、本実施形態では、Ｓ１０５を実行した際に例外が発生したか否かにより、キーワード格納領域４１が不定な状態にあるか否かを判定する。
【００２８】
すなわち、Ｓ１０５を実行した際に例外処理へと移行しなければ、Ｓ１０７においてキーワード格納領域４１が不定な状態ではないと判定されたことになり、この場合はＳ１０９へと進む。また、Ｓ１０５を実行した際に例外処理へと移行すれば、Ｓ１０７においてキーワード格納領域４１が不定な状態であると判定されたことになり、この場合は例外処理に含まれるＳ１３１へと進む。
【００２９】
フラッシュ制御部３５の作動開始後は、フラッシュ制御部３５を利用してフラッシュメモリ１３の記憶領域が不定な状態にあるか否かを知ることができる。ただし、この書き換え処理を実行している時点では、上述の通り、フラッシュ制御部３５は未初期化の状態にある。そのため、フラッシュ制御部３５を利用してフラッシュメモリ１３の記憶領域が不定な状態にあるか否かを知ることはできない。そのため、Ｓ１０５では、キーワード格納領域４１が不定な状態にあるか否かを事前に判定することなく、キーワードの読み出しを実行する。その結果、キーワード格納領域４１が不定な状態になければ例外は発生せず、キーワード格納領域４１が不定な状態にあれば例外が発生する。
【００３０】
Ｓ１０５を実行したことによって例外が発生しなければＳ１０７でＮＯと判定されたことになり、この場合、Ｓ１０９において、ＣＰＵ１１は、キーワードチェックフラグ２１をオフにする。すなわち、キーワードチェックフラグ２１は、Ｓ１０５の実行前にオンにされて、Ｓ１０５の実行後にオフにされる。このようなタイミングでキーワードチェックフラグ２１のオンとオフを切り替える理由は、詳しくは後述する処理の中で明らかになるが、例外処理へ移行した際に、例外処理に移行した契機がＳ１０５を実行したことにあるか否かを例外処理の中で判定するためである。
【００３１】
Ｓ１１１において、ＣＰＵ１１は、キーワードの有無を判定する。Ｓ１１１では、Ｓ１０５において書き換え完了を示すキーワードを読み出すことができた場合に、キーワード有りと判定される。また、Ｓ１１１では、Ｓ１０５において書き換え完了を示すキーワードを読み出すことができていない場合に、キーワード無しと判定される。Ｓ１０５において書き換え完了を示すキーワードを読み出すことができていない場合としては、キーワード格納領域４１からキーワードを読み出すことができたが、そのキーワードが書き換え完了を示すキーワードではなかった場合と、キーワード格納領域４１が不定な状態になっていることが原因でキーワード格納領域４１からキーワードを読み出すことができなかった場合とを考え得る。
【００３２】
Ｓ１１１においてキーワード有りと判定された場合は、フラッシュメモリ１３の書き換え対象領域４０に適正なプログラム（例えば、最新版のプログラム。）が格納されている状態にある。そこで、この場合は、Ｓ１１３において、ＣＰＵ１１は、起動アドレスを取得する。Ｓ１１５において、ＣＰＵ１１は、通常起動のための設定を行う。Ｓ１１７において、ＣＰＵ１１は、ＥＣＣエラーをチェックする。以降はＳ１１９へ進み、通常起動へと移行する。これにより、Ｓ１１３において取得された起動アドレス以降に格納されたプログラムがＣＰＵ１１によって実行され、ＥＣＵ２による通常の制御が実行される。
【００３３】
一方、Ｓ１１１においてキーワード無しと判定された場合は、フラッシュメモリ１３の書き換え対象領域４０に適正なプログラムが格納されていない状態にある。このような状態の具体例としては、最新版のプログラムよりも古いプログラム（すなわち、書き換え対象となるプログラム。）が書き換え対象領域４０に格納されている場合、あるいは書き換え対象領域４０が消去状態とされて不定な状態になっている場合等を考え得る。
【００３４】
そこで、この場合は、Ｓ１２５において、ＣＰＵ１１は、リプログ起動のための設定を行う。Ｓ１２７において、ＣＰＵ１１は、ＥＣＣエラーをチェックする。以降はＳ１２９へ進み、リプログ起動へと移行し、リプログソフト３０に対応するプログラムがＣＰＵ１１によって実行される。これにより、外部装置３とＥＣＵ２とが協働してリプログ処理が実行され、書き換え対象領域４０内のソフトウェアを書き換えることができる。
【００３５】
Ｓ１１７又はＳ１２７においてＥＣＣエラーが発生した場合は、そのエラーを訂正可能か否かに応じて、所期の処理を継続するか否かの判定が分かれる。例えば、Ｓ１２７を実行した際、図３に示すように、Ｓ２０１においてＥＣＣエラーが発生した場合、Ｓ２０３において、ＣＰＵ１１は、エラー種別を判定する。
【００３６】
エラー種別が１ビット又は２ビットエラーの場合、Ｓ２０５において、ＣＰＵ１１は、エラー情報を記録する。Ｓ２０７において、ＣＰＵ１１は、エラーの訂正が可能か否かを判定する。エラーの訂正が可能な場合は、Ｓ２０９へ進み、訂正されたデータに基づいてリプログ処理を継続する。一方、エラーの訂正が不可能な場合は、Ｓ２１１へ進み、リセット処理へと移行する。これにより、ＥＣＵ２は再起動される。エラー種別が３ビット以上エラーの場合、Ｓ２２１において、ＥＣＣエラー例外が発生する。この場合もＳ２１１へ進み、リセット処理へと移行する。これにより、ＥＣＵ２は再起動される。
【００３７】
Ｓ１０５を実行したことによって例外が発生すればＳ１０７でＹＥＳと判定されたことになり、Ｓ１３１へと進む。Ｓ１３１において、ＣＰＵ１１は、キーワードチェックフラグ２１がオンかオフかを判定する。Ｓ１３１において、キーワードチェックフラグ２１がオンの場合、Ｓ１３３において、ＣＰＵ１１は、エラー情報を消去する。Ｓ１３３を終えたら、例外処理から元の処理へと復帰する。これにより、Ｓ１３３からＳ１０９へと進むことになる。一方、Ｓ１３１において、キーワードチェックフラグ２１がオフの場合は、Ｓ１４１へ進み、ＥＣＣエラー例外処理へと移行する。ＥＣＣエラー例外処理では、リセット処理が実行され、ＥＣＵ２は再起動される。
【００３８】
Ｓ１３１及びＳ１３３は、キーワード格納領域４１が不定な状態であることが原因で例外が発生した場合であっても、Ｓ１０５を実行したことが例外発生の契機となっている場合に限り、例外処理から元の処理へと復帰するために設けられた処理ステップである。キーワードチェックフラグ２１は、Ｓ１０５を実行したことが例外発生の契機となっていることを判定するために設けられたフラグである。
【００３９】
キーワードチェックフラグ２１と処理ステップＳ１３１及びＳ１３３を設けることにより、キーワード格納領域４１からキーワードを読み出そうとした際に例外が発生しても元の処理へと復帰することができる。これにより、Ｓ１１１，Ｓ１２５及びＳ１２７を経て、リプログ起動へと移行し、書き換え対象領域４０内のソフトウェアを書き換えることができる。また、Ｓ１０５を実行したこと以外が例外発生の契機となっている場合には、キーワードチェックフラグ２１がオフになっているので、ＥＣＣエラー例外処理へと移行し、ＥＣＵ２は再起動される。
【００４０】
次に、ソフトウェア書き換えシステム１における書き換えシーケンスの一例を、図４に基づいて説明する。以下に説明する書き換えシーケンスは、不定な状態になっているキーワード格納領域４１からキーワードを読み出そうとして例外が発生した場合に、元の処理へと復帰してリプログ処理を継続する場合に該当する書き換えシーケンスである。
【００４１】
ユーザーは、書き込みデータ５１が格納された非遷移的実体的記録媒体（例えばＣＤＲＯＭやメモリカード等。）を外部装置３に接続し、外部装置３に対して開始指令を与える操作を実行する。これにより、ＥＣＵ２ではリプログソフト３０が起動されて上述の書き換え処理が実行される。ＥＣＵ２において書き換え処理が実行されると、ＥＣＵ２では、マイコン６の初期化処理、ＥＣＣ１４の有効化及びキーワードチェックフラグ２１のオン等が実行された後、キーワードチェックが実行される。
【００４２】
キーワードチェックが実行された際、キーワード格納領域４１が不定な状態になっていると、キーワード格納領域４１を読み出した際に、ＥＣＣエラーによる例外が発生する。このとき、割り込み処理として実行される例外処理では、キーワードチェックフラグ２１の確認が行われ、キーワードチェックフラグ２１がオンの場合には、ＥＣＣエラー情報が消去される。そして、ここで発生したＥＣＣエラーは問題ないと考えられるため、元の処理（すなわち、リプログソフト３０による書き換え処理。）へと復帰する。
【００４３】
これにより、ＥＣＵ２では、リプログソフト３０による書き換え処理が継続され、起動判定、起動モード設定及びＥＣＣエラーチェックなどが実行され、以降の起動処理へと進む。なお、キーワード格納領域４１から読み出されたキーワードが書き換え完了を示すキーワードではない場合は、リプログソフト３０によって書き換え対象領域４０へのデータの書き込みが実行され、書き換え対象領域４０に格納された制御プログラム等が更新される。
【００４４】
［効果］
上記ＥＣＵ２によれば、書き換え対象領域４０に格納されたデータが不定な状態にはなっていない、とＳ１０７によって判定された場合、ＣＰＵ１１はＳ１０９以降の処理を実行する。一方、書き換え対象領域４０に格納されたデータが不定な状態になっている、とＳ１０７によって判定された場合には、更にＳ１３１による判定が行われる。Ｓ１３１では、Ｓ１０５が実行されたか否かを判定する。
【００４５】
Ｓ１０５が実行されたとＳ１３１によって判定された場合、元の処理へと復帰し、ＣＰＵ１１はＳ１０９以降の処理を実行する。一方、Ｓ１０５が実行されていないとＳ１３１によって判定された場合、ＣＰＵ１１はＥＣＣエラー例外処理を実行する。
【００４６】
したがって、書き換え対象領域４０に格納されたデータが不定な状態にはなっていなければ通常処理又はリプログ処理を実行し、書き換え対象領域４０に格納されたデータが不定な状態になっていればＥＣＣエラー例外処理を実行するように構成されていた技術とは異なり、書き換え対象領域４０に格納されたデータが不定な状態になっている場合でも、Ｓ１０５を実行した場合については、書き換え対象領域４０に格納されたデータが不定な状態にはなっていない場合と同様に、通常処理又はリプログ処理を実行させることができる。
【００４７】
また、本実施形態の場合、マイコン６は、書き換え対象領域４０に格納されたデータが不定な状態にある場合に、当該書き換え対象領域４０に格納されたデータが読み取られると、割り込み処理を発生させる。Ｓ１０７は、割り込み処理が発生したら、書き換え対象領域４０に格納されたデータが不定な状態になっていると判定し、割り込み処理が発生しなかったら、書き換え対象領域４０に格納されたデータが不定な状態にはなっていないと判定する。したがって、上述のような割り込み処理を利用して、書き換え対象領域４０に格納されたデータが不定な状態になっているか否かを判定することができる。
【００４８】
また、本実施形態の場合、Ｓ１３１では、キーワードチェックフラグ２１に基づいて、Ｓ１０５が実行されたか否かを判定する。したがって、割り込み処理への移行後であっても、Ｓ１０５が実行されたか否かを簡便に判定することができる。
【００４９】
また、本実施形態の場合、キーワードチェックフラグ２１は、ＣＰＵ１１の内部にある記憶領域によって構成されている。したがって、ＲＡＭ１２やフラッシュメモリ１３の初期化が完了していない段階であっても、キーワードチェックフラグ２１を利用した判定を適切に実施することができる。
【００５０】
なお、本実施形態において、フラッシュメモリ１３は、本開示でいう記憶部に対応する。キーワード格納領域４１は、本開示でいうステータス格納領域に対応する。Ｓ１０５を実行するＣＰＵ１１は、本開示でいう読取部に対応する。Ｓ１０７を実行するＣＰＵ１１は、本開示でいう第１判定部に対応する。Ｓ１３１を実行するＣＰＵ１１は、本開示でいう第２判定部に対応する。Ｓ１０９−Ｓ１１１，Ｓ１１３−Ｓ１１９及びＳ１２５−Ｓ１２９を含む処理は、本開示でいう第１処理に対応する。Ｓ１０９−Ｓ１１１，Ｓ１１３−Ｓ１１９及びＳ１２５−Ｓ１２９を含む処理を実行するＣＰＵ１１は、本開示でいう第１処理部に対応する。Ｓ１４１を含む処理は、本開示でいう第２処理に対応する。Ｓ１４１を含む処理を実行するＣＰＵ１１は、本開示でいう第２処理部に対応する。ＥＣＣ１４は、本開示でいうＥＣＣ部に対応する。キーワードチェックフラグ２１を記憶するための記憶領域は、本開示でいうフラグ記憶部に対応する。Ｓ１１１は、本開示でいう第１処理に含まれる判定処理に対応する。Ｓ１１３−Ｓ１１９は、本開示でいう第１処理に含まれる通常処理に対応する。Ｓ１２５−Ｓ１２９は、本開示でいう第１処理に含まれる書き換え処理に対応する。
【００５１】
［他の実施形態］
以上、本開示の電子制御装置について、例示的な実施形態を挙げて説明したが、上述の実施形態は本開示の一態様として例示されるものにすぎない。すなわち、本開示は、上述の例示的な実施形態に限定されるものではなく、本開示の技術的思想を逸脱しない範囲内において、様々な形態で実施することができる。
【００５２】
例えば、上記実施形態では、第１処理の一例として、キーワード格納領域４１から読み取られたキーワードが適正なキーワードであるか否かを判定する判定処理と、判定処理においてキーワード格納領域４１から読み取られたキーワードが適正なキーワードであると判定された場合に、書き換え対象領域４０に格納されたプログラムに基づく処理を実行する通常処理と、判定処理においてキーワード格納領域４１から読み取られたキーワードが適正なキーワードではないと判定された場合に、ＥＣＵ２と通信可能な外部装置３から伝送されてくるデータを書き換え対象領域４０に書き込む書き換え処理とが含まれる第１処理を例示したが、第１処理は、上述の例とは異なっていてもよい。
【００５３】
一例を挙げれば、ＥＣＵ２による通常の制御（例えば、エンジン制御。）に用いられるプログラムとして、最新版のプログラムと、最新版のプログラムよりも古いバージョンのプログラムを、それぞれフラッシュメモリ１３に記憶するように構成してもよい。この場合、キーワードの読み取りに成功して適正なキーワードを読み取ることができた場合は、最新版のプログラムに基づく制御を実行する。一方、キーワードの読み取りに失敗した場合（すなわち、例外が発生した場合。）又はキーワードの読み取りには成功したが適正なキーワードではなかった場合は、古いバージョンのプログラムに基づく制御を実行する。すなわち、第１処理は、上述のリプログ処理の実行に代えて、古いバージョンのプログラムに基づく制御を実行するように構成されていてもよい。このように構成された場合でも、キーワードの読み取りに失敗した場合に、単に第２処理へ移行してしまうのを回避できるシステムとなる。
【００５４】
更に一例を挙げれば、ＥＣＵ２による通常の制御（例えば、エンジン制御。）に用いられるプログラムとして、全ての機能を実現可能なアプリケーション（以下、フルアプリとも称する。）と、必要最低限の機能を実現可能なアプリケーション（以下、ミニマムアプリとも称する。）を、それぞれフラッシュメモリ１３に記憶するように構成してもよい。この場合、キーワードの読み取りに成功して適正なキーワードを読み取ることができた場合は、フルアプリに基づく制御を実行する。一方、キーワードの読み取りに失敗した場合（すなわち、例外が発生した場合。）又はキーワードの読み取りには成功したが適正なキーワードではなかった場合は、ミニマムアプリに基づく制御を実行する。すなわち、第１処理は、上述のリプログ処理の実行に代えて、ミニマムアプリに基づく制御を実行するように構成されていてもよい。このように構成された場合でも、キーワードの読み取りに失敗した場合に、単に第２処理へ移行してしまうのを回避できるシステムとなる。
【００５５】
また、上記実施形態では、キーワード格納領域４１が不定な状態でＳ１０５を実行すると例外が発生するのを利用してＳ１０７での判定を行っていたが、マイコン６の機能として、キーワード格納領域４１が不定な状態であるか否かを判定できる機能がある場合は、例外を発生させることなく、ＣＰＵ１１においてキーワード格納領域４１が不定な状態であるか否かを判定するようにしてもよい。
【００５６】
また、上記実施形態では言及していないが、フラッシュメモリ１３及びＥＣＣ１４は、ＥＣＣ付きフラッシュメモリとして構成されていてもよいし、フラッシュメモリとは別にＥＣＣ回路が実装されていてもよい。あるいは、ＥＣＣ回路相当の機能をＣＰＵ１１がソフトウェア処理によって実現するように構成されていてもよい。
【００５７】
本開示に記載のＥＣＵ２及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載のＥＣＵ２及びその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。若しくは、本開示に記載のＥＣＵ２及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されてもよい。ＥＣＵ２に含まれる各部の機能を実現する手法には、必ずしもソフトウェアが含まれている必要はなく、その全部の機能が、一つあるいは複数のハードウェアを用いて実現されてもよい。
【００５８】
上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現してもよい。上記実施形態における１つの構成要素が有する１つの機能を、複数の構成要素によって実現してもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現してもよい。複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現してもよい。上記実施形態の構成の一部を省略してもよい。
【００５９】
上述したＥＣＵ２の他、当該ＥＣＵ２を構成要素とするシステム、当該ＥＣＵ２としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、ＥＣＵ２において実行される処理方法など、種々の形態で本開示を実現することもできる。
【００６０】
［補足］
なお、以上説明した例示的な実施形態から明らかなように、本開示の電子制御装置は、更に以下に挙げるような構成を備えていてもよい。
【００６１】
（１）記憶領域に記憶されるデータ内に生じたエラーの検出及び訂正が可能なＥＣＣ部を備え、読取部によってステータス格納領域からステータスを読み取る際に、ステータス格納領域に格納されたデータが不定な状態にあると、ＥＣＣ部によってエラーが検出されて割り込み処理が発生するように構成されてもよい。第１判定部は、割り込み処理が発生したら、書き換え対象領域に格納されたデータが不定な状態になっていると判定し、割り込み処理が発生しなかったら、書き換え対象領域に格納されたデータが不定な状態にはなっていないと判定するように構成されていてもよい。
【００６２】
（２）第２判定部は、割り込み処理の中で、読取部によるステータスの読み取りが実行されたか否かを判定するように構成されていてもよい。
（３）読取部によってステータス格納領域からステータスを読み取る場合と当該場合以外の場合とで、オンとオフとが切り替えられるフラグを記憶するフラグ記憶部を備えてもよい。第２判定部は、フラグ記憶部に記憶されたフラグに基づいて、読取部によるステータスの読み取りが実行されたか否かを判定するように構成されていてもよい。
【００６３】
（４）ＣＰＵを備えるマイコンを有してもよい。フラグ記憶部は、ＣＰＵの内部にある記憶領域によって構成されていてもよい。
（５）第１処理部は、読取部によるステータスの読み取りが実行された、と第２判定部によって判定された場合に、割り込み処理を終了して元の処理へと復帰することにより、第１処理を実行するように構成されてもよい。第２処理部は、読取部によるステータスの読み取りが実行されていない、と第２判定部によって判定された場合に、割り込み処理を継続して第２処理を実行するように構成されていてもよい。
【００６４】
（６）第１処理部は、読取部によってステータス格納領域から読み取られたステータスが適正なステータスであるか否かを判定する判定処理と、判定処理において読取部によってステータス格納領域から読み取られたステータスが適正なステータスであると判定された場合に、書き換え対象領域に格納されたプログラムに基づく処理を実行する通常処理と、判定処理において読取部によってステータス格納領域から読み取られたステータスが適正なステータスではないと判定された場合に、電子制御装置と通信可能な外部装置から伝送されてくるデータを書き換え対象領域に書き込む書き換え処理とが含まれる第１処理を実行するように構成されていてもよい。
【符号の説明】
【００６５】
１…ソフトウェア書き換えシステム、２…ＥＣＵ（電子制御装置）、３…外部装置、５…車載ＬＡＮ、６…マイコン、７…入出力回路、８…電源、１１…ＣＰＵ、１２…ＲＡＭ、１３…フラッシュメモリ、１４…ＥＣＣ、２１…ステータスチェックフラグ、３０…リプログソフト、３１…ブート制御部、３３…通信制御部、３５…フラッシュ制御部、４０…書き換え対象領域、４１…ステータス格納領域、４３…書き込み可能領域、５１…書き込みデータ。
【図１】
2020149428.tif 000003
【図２】
2020149428.tif 000004
【図３】
2020149428.tif 000005
【図４】
2020149428.tif 000006