(57)【要約】【課題】不揮発性メモリにおけるデータの書き換えの進捗を表す情報を保持する技術を提供する。【解決手段】電子制御装置は、書き換え可能なメモリであるＲＯＭを有する。ＲＯＭは、ロック単位で、該ブロックが消去状態にされた後に該ブロックに書き換えの対象となるデータである対象データが書き込まれることによって、書き換えが行われる。電子制御装置は、情報取得部（Ｓ８５）と、記憶実行部（Ｓ９５、Ｓ１０５、Ｓ１１０）と、を備える。記憶実行部は、進捗情報が取得される毎に、複数の管理ブロックのうち少なくとも１つに、進捗情報を記憶させる。そして、記憶実行部は、複数の管理ブロックのうち、進捗情報が前回記憶された管理ブロックとは異なる管理ブロックに、進捗情報を記憶させる。【選択図】図１０
2019020837.tif 000002
【特許請求の範囲】
【請求項１】
書き換え可能なメモリである不揮発性メモリを有する電子制御装置（１３）であって、
前記不揮発性メモリは、予め定められた大きさの記憶領域を表す複数のブロックを有し、且つ、前記ブロック単位で、該ブロックが該ブロックに記憶されている全てのデータが消去された状態である消去状態にされた後に該ブロックに書き換えの対象となるデータである対象データが書き込まれることによって、書き換えが行われるように構成されており、
前記書き換えの進捗の度合いを表す情報である進捗情報、を繰り返し取得するように構成された情報取得部（Ｓ８５）と、
前記進捗情報が取得される毎に、前記対象データが書き込まれるブロックとは異なる予め定められた複数の管理ブロックのうち少なくとも１つに、前記進捗情報を記憶させるように構成された記憶実行部（Ｓ９５、Ｓ１０５、Ｓ１１０）と、
を備え、
前記記憶実行部は、前記複数の管理ブロックのうち、前記進捗情報が前回記憶された管理ブロックとは異なる管理ブロックに、前記進捗情報を記憶させるように構成された
電子制御装置。
【請求項２】
請求項１に記載の電子制御装置であって、
前記不揮発性メモリは、予め定められた複数の書換手順が順に実行されることによって、前記書き換えが行われるように構成されており、
前記情報取得部は、前記書換手順が実行される毎に、前記進捗情報であって前記複数の書換手順のうち実行が終了した手順である終了手順を表す情報を含む進捗情報を取得し、
前記記憶実行部は、前記複数の管理ブロックのうちの１つであって前記進捗情報が前回記憶された管理ブロックとは異なる管理ブロックに、前記進捗情報を記憶させ、
全ての前記複数の書換手順が実行されて前記書き換えが完了したか否かを判断するように構成された完了判断部（Ｓ５）と、
前記書き換えが完了していないと判断された場合に、前記複数の管理ブロックのそれぞれから前記進捗情報を取得し、前記進捗情報に基づいて、前記複数の書換手順に含まれる１つの手順であって前記書き換えを再開するときの最初の書換手順を表す再開手順を特定するように構成された再開特定部（Ｓ３５、Ｓ６５）と、
を更に備える電子制御装置。
【請求項３】
請求項２に記載の電子制御装置であって、
前記再開特定部（Ｓ３５）は、前記複数の管理ブロックのそれぞれから取得された全ての前記進捗情報が前記消去状態を表しているか否かを判断し、前記全ての進捗情報が前記消去状態を表している場合に、前記複数の書換手順のうち最初の書換手順を前記再開手順として特定するように構成された
電子制御装置。
【請求項４】
請求項２または請求項３に記載の電子制御装置であって、
前記再開特定部（Ｓ６５）は、前記複数の管理ブロックのそれぞれから取得された全ての前記進捗情報のうち少なくとも１つが、前記進捗情報であって前記消去状態を表していない更新情報であるか否かを判断し、前記全ての進捗情報のうち少なくとも１つが前記更新情報である場合、前記更新情報に基づいて前記再開手順を特定するように構成された
電子制御装置。
【請求項５】
請求項４に記載の電子制御装置であって、
前記再開特定部（Ｓ６５）は、前記複数の管理ブロックのそれぞれから取得された全ての前記進捗情報なかに複数の前記更新情報が含まれる場合、前記複数の更新情報のそれぞれによって表される複数の前記終了手順のうちの１つであって前記複数の書換手順における最後の書換手順に最も近い直前手順を特定し、前記直前手順の次の手順を前記再開手順として特定するように構成された
電子制御装置。
【請求項６】
請求項５に記載の電子制御装置であって、
前記再開特定部（Ｓ６５）は、前記全ての進捗情報のなかに複数の更新情報が含まれる場合、前記複数の終了手順のそれぞれが互いに連続する手順であるか否かを判断するように構成された連続判断部（Ｓ４５）を備える
電子制御装置。
【請求項７】
請求項６に記載の電子制御装置であって、
前記再開特定部（Ｓ６５）は、前記複数の終了手順のそれぞれが互いに連続する手順であると判断された場合に、前記直前手順を特定し、前記直前手順の次の手順を前記再開手順として特定するように構成された
電子制御装置。
【請求項８】
請求項６または請求項７に記載の電子制御装置であって、
前記再開特定部（Ｓ３５）は、前記複数の終了手順のそれぞれが互いに連続する手順でないと判断された場合に、前記複数の書換手順のうち最初の書換手順を前記再開手順として特定するように構成された
電子制御装置。
【請求項９】
請求項４から請求項８のいずれか一項に記載の電子制御装置であって、
前記再開特定部（Ｓ６５）は、前記複数の管理ブロックのそれぞれから取得された全ての前記進捗情報に１つの前記更新情報が含まれる場合に、前記更新情報によって表される前記終了手順の次の手順を前記再開手順として特定するように構成された
電子制御装置。
【請求項１０】
請求項２から請求項９のいずれか一項に記載の電子制御装置であって、
車両に搭載され、前記車両に搭載される他の電子制御装置と通信線によって通信可能に接続されて車両ネットワークを構成しており、
前記車両ネットワーク外の装置であって当該電子制御装置と通信可能な外部装置に、前記再開手順を表す情報を送信するように構成された再開送信部（Ｓ３５、Ｓ６５）
を更に備える電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、書き換え可能なメモリを有する電子制御装置に関する。
【背景技術】
【０００２】
特許文献１には、書き換え可能なメモリである不揮発性メモリを有する電子制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−５６１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
書き換えの際、不揮発性メモリでは、ブロック単位で該不揮発性メモリに記憶されているデータが一旦消去され、該データが消去されたブロックに所定のバイト毎に対象データが書き込まれる。ここでいう対象データとは、書き換えの対象となるデータをいう。すなわち、不揮発性メモリの書き換えは、一又は複数のブロックを順次書き換えることにより実現される。特許文献１に記載の電子制御装置は、書き換えの際、不揮発性メモリ内の所定の１つのブロックに、書き換えが終了したブロックを示す情報（以下、履歴情報）を記憶させている。
【０００５】
上記電子制御装置においても、履歴情報が記憶されているブロックのデータが一旦消去された後に、該ブロックに新たな履歴情報が書き込まれることによって、履歴情報が更新される。そのため、例えば、履歴情報が記憶されているブロックのデータが消去されたときに不揮発性メモリへの電力の供給が絶たれた場合などに、履歴情報が失われるおそれがある。
【０００６】
本開示の１つの局面は、不揮発性メモリを有する電子制御装置において、電力の供給が途絶えた場合であっても、不揮発性メモリにおけるデータの書き換えの進捗を表す情報を保持する技術を提供する。
【課題を解決するための手段】
【０００７】
本開示の１つの局面は、書き換え可能なメモリである不揮発性メモリ（３３）を有する電子制御装置（１３）である。不揮発性メモリは、予め定められた大きさの記憶領域を表す複数のブロックを有し、且つ、ブロック単位で、該ブロックが該ブロックに記憶されている全てのデータが消去された状態である消去状態にされた後に該ブロックに書き換えの対象となるデータである対象データが書き込まれることによって、書き換えが行われるように構成されている。電子制御装置は、情報取得部（Ｓ５５、Ｓ６０）と、記憶実行部（Ｓ８５、Ｓ９５、Ｓ１００）と、を備える。
【０００８】
情報取得部は、書き換えの進捗の度合いを表す情報である進捗情報、を繰り返し取得するように構成されている。記憶実行部は、進捗情報が取得される毎に、対象データが書き込まれるブロックとは異なる予め定められた複数の管理ブロックのうち少なくとも１つに、進捗情報を記憶させるように構成されている。そして、記憶実行部は、複数の管理ブロックのうち、進捗情報が前回記憶された管理ブロックとは異なる管理ブロックに、進捗情報を記憶させるように構成されている。
【０００９】
このような構成によれば、不揮発性メモリにおける複数の管理ブロックのうち、進捗情報が前回記憶された管理ブロックとは異なる管理ブロックに新たな進捗情報が記憶される。すなわち、仮に進捗情報の書き換えが行われている際に不揮発性メモリへの電力供給が途絶えたとしても、複数の管理ブロックのいずれかには進捗情報が記憶されている。その結果、不揮発性メモリを有する電子制御装置において、電力の供給が途絶えた場合であっても、不揮発性メモリにおけるデータの書き換えの進捗を表す情報を保持することができる。
【００１０】
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】車両制御システムの構成を示すブロック図。
【図２】ＲＯＭの記憶領域を示す説明図。
【図３】制御プログラムを書き換えるための複数の書換手順を示す説明図。
【図４】書換処理に基づいて、複数手順のうちの先頭手順から書き換えが行われる場合の処理の流れを示すシーケンス図。
【図５】図５における進捗情報の遷移を説明する図。
【図６】書換処理に基づいて、複数手順のうちの途中の手順から書き換えが行われる場合の処理の流れを示すシーケンス図。
【図７】図６における進捗情報の遷移を説明する図。
【図８】ＥＣＵが実行する起動処理のフローチャート。
【図９】ＥＣＵが実行する書換処理のフローチャート（１／２）。
【図１０】ＥＣＵが実行する書換処理のフローチャート（２／２）。
【図１１】外部装置が実行する外部処理のフローチャート。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本開示の実施形態を説明する。
［１．構成］
図１に示す車両制御システム１は、例えば乗用車等といった車両に搭載された車載制御システム１０が備える電子制御装置（以下、ＥＣＵ）１３において、制御プログラムやデータ等（以下、制御プログラム等）の書き換えを行うシステムである。ＥＣＵは、Electronic Control Unitの略である。ここでいう書き換えには、ＥＣＵ１３に予め記憶されている制御プログラム等の書き換えや、ＥＣＵ１３への制御プログラム等の初めての書き込み、が含まれ得る。
【００１３】
車両制御システム１は、車載制御システム１０と外部装置２０とを備える。外部装置２０は、車載制御システム１０が搭載された車両の外部の装置であり、センタ２１と診断装置２２とを備えていてもよい。
【００１４】
センタ２１は、所定の場所に固定されている。センタ２１は、図示しないが、通信装置と、ＣＰＵ、及びＲＡＭ、ＲＯＭ等といったメモリを有するコンピュータと、を備える。メモリには、制御プログラムが記憶されている。センタ２１は、車載制御システム１０のＥＣＵ１３に記憶されている制御プログラムのアップデートが必要になったときに、ＥＣＵ１３にセンタ２１のメモリに記憶されている新しい制御プログラムを送信し、ＥＣＵ１３の制御プログラムを書き換える。
【００１５】
診断装置２２は、診断対象となるＥＣＵ１３から該ＥＣＵ１３に関するデータを受信して、車載制御システム１０が搭載された車両の診断を行うとともに、診断結果に応じて、ＥＣＵ１３に記憶されているデータを書き換える。診断装置２２は、図示しないが、通信装置と、ＣＰＵ、及びＲＡＭ、ＲＯＭ等といったメモリを有するコンピュータと、を備える。
【００１６】
なお、診断装置２２は、車載制御システム１０のＥＣＵ１３に記憶されている制御プログラムのアップデートが必要になったときに、ＥＣＵ１３に診断装置２２のメモリに記憶されている新しい制御プログラムを送信し、ＥＣＵ１３の制御プログラムを書き換えるように構成されてもよい。
【００１７】
車載制御システム１０は、ＥＣＵ１３を備える。車載制御システム１０は、車外通信装置（以下、ＤＣＭ−ＥＣＵ）１１、セントラルゲートウェイ（以下、Ｃ−ＧＷ）１２を備えていても良い。ＤＣＭ−ＥＣＵ１１、Ｃ−ＧＷ１２、ＥＣＵ１３は、通信線１５で接続されており、ＣＡＮ規格に従って通信を行う。ＣＡＮは、登録商標である。
【００１８】
つまり、ＥＣＵ１３は、ＤＣＭ−ＥＣＵ１１及びＣ−ＧＷ１２と、通信線１５によって通信可能に接続されて、車両ネットワークを構成している。なお、図示していないが、ＥＣＵ１３は、車両に搭載される他のＥＣＵと通信線１５によって通信可能に接続されて、車両ネットワークを構成していてもよい。なお、上述の外部装置２０が該車両ネットワーク外の装置に相当する。
【００１９】
ＤＣＭ−ＥＣＵ１１は、センタ２１との間で、無線通信を行う装置である。
Ｃ−ＧＷ１２は、診断装置２２と通信線５によって接続され、診断装置２２との間で、ＣＡＮ規格に従って通信を行う装置である。
【００２０】
ＥＣＵ１３は、例えば、エンジンやブレーキ等といった、車両に搭載された制御対象の制御を行う電子制御装置である。ＥＣＵ１３は、ＣＰＵ３１と、ＲＡＭ３３、ＲＯＭ３４、等の半導体メモリ（以下、メモリ３２）と、を有するマイクロコンピュータを備える。なお、ＥＣＵ１３は、図示しないが、電源装置（以下、電源）を備えており、電源がオンの場合に電力が供給され、電源がオフの場合に電力の供給が停止されるように構成されている。
【００２１】
ＣＰＵ３１は、演算装置であり、ＲＡＭ３３は、ＣＰＵ３１の演算結果等を一時記憶するための揮発性メモリである。ＲＯＭ３４は、書き換え可能な記憶領域を有する不揮発性メモリである。ここでいう不揮発性メモリには、例えば、フラッシュメモリやＥＥＰＲＯＭ等が含まれ得る。ＲＯＭ３４には、ＣＰＵ３１により実行される各種プログラムが記憶される。ＲＯＭ３４の構成の詳細については後述する。
【００２２】
ＥＣＵ１３の各種機能は、ＣＰＵ３１がＲＯＭ３４に記憶されたプログラムを実行することにより実現される。ＥＣＵ１３は、後述する書換処理を実行することによって、ＲＯＭ３４に記憶されている制御プログラムの書き換えを実現する。
【００２３】
ＲＯＭ３４は、図２に示すように書き換え不可能な領域（以下、非書換領域）３４１と書き換え可能な領域（以下、書換領域）３４２とを有する。ＲＯＭ３４において、予め定められた大きさの領域をブロックという。ブロックは、例えば、数十バイト〜数百バイトであり得る。
【００２４】
ＲＯＭ３４は、ＣＰＵ３１からの指示に従って、ブロック単位でのデータの消去が可能である。また、ＲＯＭ３４は、例えば２バイト、４バイト等といった、一又は複数のバイト単位でのデータの書き込みが可能である。ＲＯＭ３４は、初期状態では、全ブロックに論理値１が書き込まれている。また、ＲＯＭ３４は、ブロック単位で、該ブロックが該ブロックに記憶されている全てのデータが消去された状態である消去状態にされた後に、該ブロックに対象データが書き込まれることによって、書き換えが行われる。ここでいう対象データとは、書き換えの対象となるデータである。なお、消去状態にされたブロックは、ブロック内の全てに論理値１が書き込まれる。
【００２５】
非書換領域３４１には、リプロプログラムが記憶されている。リプロプログラムは、ＣＰＵ３１に実行されることによって、書換領域３４２に記憶されている制御プログラムを書き換えるためのプログラムである。書換処理は、リプロプログラムを実行する際の処理手順を表している。
【００２６】
書換領域３４２には、制御プログラム、完了フラグ、進捗情報、が記憶されている。制御プログラムは、ＣＰＵ３１に実行されて、ＥＣＵ１３の制御対象を制御するためのプログラムである。
【００２７】
完了フラグとは、ＲＯＭ３４において、リプロプログラムによる書き換えの対象となる制御プログラムの書き換えが完了したか否かを表すフラグである。完了フラグがオフの場合には、制御プログラムの書き換えが完了していない状態を表し、完了フラグがオンの場合には、制御プログラムの書き換えが完了した状態を表す。完了フラグは、リプロプログラムが実行されることをきっかけとして、初期状態としてのオフに設定される。
【００２８】
進捗情報とは、ＲＯＭ３４における、リプロプログラムによる書き換えの対象となる制御プログラムの、書き換えの進捗の度合い、を表す情報である。進捗情報は、ＲＯＭ３４における複数の管理ブロックに記憶されている。ここでいう管理ブロックとは、ＲＯＭ３４が備える複数のブロックのうち、対象データが書き込まれるブロックとは異なる、予め定められたブロックをいう。
【００２９】
具体的には、ＲＯＭ３４の書換領域３４２に含まれる第１の情報ブロック１０１及び第２の情報ブロック１０２といった、異なる２つのブロックが管理ブロックに相当する。以下では、第１の情報ブロック１０１に記憶されている進捗情報を第１の情報といい、第２の情報ブロック１０２に記憶されている進捗情報を第２の情報という。
【００３０】
ＲＯＭ３４は、図３に示すように、書き換えの対象であるＥＣＵ１３によって予め定められた複数の書換手順（以下、複数手順）が順に実行されることによって、制御プログラムの書き換えが行われるように構成されている。ＥＣＵ１３は、外部装置２０としてのセンタ２１又は診断装置２２との間での通信に基づいて、制御プログラムの書き換えを実行する。複数手順には、認証手順、消去手順、書込手順、ベリファイ手順、完了手順が含まれ得る。
【００３１】
例えば、複数手順のうち実行が終了した手順が特定されれば、該実行が終了した手順によって制御プログラムの書き換えの進捗の度合いを表すことができる。以下でいう終了手順とは、複数手順のうち、ＥＣＵ１３による実行が終了した手順をいう。
【００３２】
認証手順では、外部装置２０がＥＣＵ１３の正しい通信相手であるか否か、が確認される。例えば、後述する図４におけるＡ６−Ａ８が認証手順に相当する。
消去手順では、外部装置２０からの消去要求に従って、ＲＯＭ３４において、書き換えの対象となる制御プログラムを書き込むブロック（以下、対象ブロック）が消去状態にされる。例えば、図４におけるＡ９−Ａ１２が消去手順に相当する。
【００３３】
書込手順では、外部装置２０からＥＣＵ１３に書き換えの対象となる制御プログラムが送信され、該制御プログラムがＲＯＭ３４に書き込まれる。書込手順は、書き換えの対象となる制御プログラムを表すデータが複数に分割された分割データ毎に行われても良い。分割データは、１ブロック分の大きさのデータであっても良い。なお、本実施形態では、分割データの書き込みが終了する毎にＥＣＵ１３から外部装置２０へＡＣＫが送信される。例えば、図４におけるＡ１３−Ａ２０が書込手順に相当する。
【００３４】
ベリファイ手順では、書き換えの対象となる制御プログラムが正常に書きかえられたか否かが検証される。図４におけるＡ２１−Ａ２４がベリファイ手順に相当する。
完了処理は、書き換えの対象となる制御プログラムの書き換えが完了したか否かが判断される。例えば、図４におけるＡ２５−Ａ２７が完了手順に相当する。
【００３５】
複数手順のそれぞれは、認証手順、消去手順、書込手順、ベリファイ手順、完了手順の順に実行され、予め定められた識別符号が一又は複数の書換手順に付されている。識別符号は、例えば、それぞれの書換手順を識別可能な記号や数字やこれらの組合せ等で有り得る。
【００３６】
本実施形態では、書き換えの対象となる制御プログラムを表すデータは、第１の分割データ及び第２の分割データといった２つの分割データからなる。また、複数手順のうち、消去手順には「１」、第１の分割データを書き込む書込手順（以下、第１の書込手順）には「２」、第２の分割データの書込手順（以下、第２の書込手順）には「３」、ベリファイ手順には「４」、完了手順には「５」といったように、識別符号が付されている。なお、複数手順のうち、このように識別符号が付されている書換手順を、書換通知手順ともいう。
【００３７】
［２．処理］
［２−１．最初の書換手順からの書き換えシーケンス］
次に、ＥＣＵ１３が、書換処理に基づいて、外部装置２０と間で通信を行うことによって、制御プログラムの書き換えを実行する際の処理の流れを説明する。ここでは、センタ２１を外部装置２０とする。なお、診断装置２２を外部装置２０とする場合も、同様の流れで処理が行われる。
【００３８】
図４は、ＥＣＵ１３において電源がオフされてからオンされた際に、制御プログラムを書き換えるために、上述の複数手順のうちの最初の書換手順から書き換えが行われる場合の処理の流れ、を示している。ＥＣＵ１３は、例えば、外部装置２０との通信が途絶した場合等に、電源がオフされるように構成されている。
【００３９】
はじめに、Ａ１では、ＥＣＵ１３の電源がオンされる。ここでいう電源がオンされる状況には、ＥＣＵ１３において制御プログラムの書き換えが、例えば外部装置２０との通信途絶等によって中断された際に、一旦ＥＣＵ１３の電源がオフされた後、再びＥＣＵ１３の電源がオンされる、というような状況が含まれ得る。
【００４０】
続いて、Ａ２では、ＥＣＵ１３は、完了フラグを確認する。完了フラグはオフに設定されている。
次に、Ａ３、Ａ４では、ＥＣＵ１３は、完了フラグがオフであるので、ＲＯＭ３４から進捗情報を読み出す。
【００４１】
続いて、Ａ５では、ＥＣＵ１３は、読み出された進捗情報に従って再開手順を特定し、再開手順を外部装置２０へ通知する。再開手順とは、上述の複数手順に含まれる１つの手順であって、書き換えが再開されるときの最初の書換手順である。ここでは、ＥＣＵ１３は、上述の複数手順のうちの最初の書換手順、つまり先頭の手順（以下、先頭手順）である認証手順、を再開手順として特定し、再開手順を表す情報を外部装置２０へ送信する。再開手順は、後述する書換処理において、進捗情報に基づいて特定される。
【００４２】
次に、Ａ６では、ＥＣＵ１３は、外部装置２０から送信されたＡＣＫを受信する。ここでいうＡＣＫは、外部装置２０によって再開手順が受信されたことを表す応答である。
続いて、Ａ７では、ＥＣＵ１３は、外部装置２０から送信された認証要求を受信する。認証要求は、外部装置２０がＥＣＵ１３に対して外部装置２０の認証を要求する通信フレームである。認証要求には、外部装置２０を識別するための情報（以下、識別情報）が含まれている。
【００４３】
次に、Ａ８では、ＥＣＵ１３は、ＥＣＵ１３のＲＯＭ３４に予め記憶されている外部装置２０についての識別情報と認証要求に含まれる識別情報とが一致することを確認する。ＥＣＵ１３は、これらが一致する場合に、外部装置２０へＡＣＫを送信する。ここでいうＡＣＫは、外部装置２０の認証が完了したことを表す応答である。
【００４４】
続いて、Ａ９では、ＥＣＵ１３は、外部装置２０から送信された消去要求を受信する。消去要求とは、上述の複数手順のうちの再開手順以降の書換手順を実行する際に、書き換えの対象となるデータが記憶されているブロックを消去状態にするための要求をいう。ここでは、先頭手順を再開手順とするので、書き換え対象となる制御プログラムが記憶されている全てのブロックと、第１の情報ブロック１０１及び第２の情報ブロック１０２と、が、消去の対象として指定された消去要求を受信する。
【００４５】
次に、Ａ１０では、ＥＣＵ１３は、消去要求に従って、ブロックの消去を実行する。ブロックの消去では、ＥＣＵ１３は、上述のように、指定されたブロック内の全てのビットを論理値１に設定する。
【００４６】
続いて、Ａ１１では、ＥＣＵ１３は、進捗情報を更新する。具体的には、ＥＣＵ１３は、第１の情報ブロック１０１に、消去手順を終了手順として、消去手順を表す識別符号である「１」を進捗情報として書き込む。
【００４７】
次に、Ａ１２では、ＥＣＵ１３は、外部装置２０にＡＣＫを送信する。ここでいうＡＣＫは、消去要求に従ってブロックの消去が完了したことを表す応答である。
続いて、Ａ１３では、ＥＣＵ１３は、外部装置２０から送信された第１の分割データを受信する。
【００４８】
次に、Ａ１４では、ＥＣＵ１３は、ＲＯＭ３４において、第１の分割データに対応するアドレスへ、受信した第１の分割データを書き込む。
続いて、Ａ１５では、ＥＣＵ１３は進捗情報を更新する。具体的には、ＥＣＵ１３は、第２の情報ブロック１０２に、第１の書込手順を終了手順として、第１の書込手順が完了したことを表す識別符号である「２」を進捗情報として書き込む。
【００４９】
次に、Ａ１６では、ＥＣＵ１３は、外部装置２０にＡＣＫを送信する。ここでいうＡＣＫは、第１の書込手順が完了したことを表す応答である。
続いて、Ａ１７では、ＥＣＵ１３は、外部装置２０から送信された第２の分割データを受信する。
【００５０】
次に、Ａ１８では、ＥＣＵ１３は、ＲＯＭ３４において、第２の分割データに対応するアドレスへ、受信した第２の分割データを書き込む。
続いて、Ａ１９では、ＥＣＵ１３は、進捗情報を更新する。具体的には、ＥＣＵ１３は、第１の情報ブロック１０１を一旦消去状態にし、その後で、第１の情報ブロック１０１に、第２の書込手順を終了手順として、第２の書込手順が完了したことを表す識別符号である「３」を進捗管理情報として書き込む。
【００５１】
次に、Ａ２０では、ＥＣＵ１３は、外部装置２０にＡＣＫを送信する。ここでいうＡＣＫは、第２の書込手順が完了したことを表す応答である。
続いて、Ａ２１では、ＥＣＵ１３は、外部装置２０から送信されたベリファイ要求を受信する。ここでいうベリファイ要求とは、ＥＣＵ１３に、制御プログラムの書き換えが正常に終了したか否かの検証（以下、ベリファイ）を要求するものである。
【００５２】
次に、Ａ２２は、ＥＣＵ１３は、ベリファイを実行する。ベリファイは、パリティビットや誤り訂正符号等といった、各種手法により実行され得る。
続いて、Ａ２３では、ＥＣＵ１３は、ベリファイにより、制御プログラムが正常に書き換えられたことが検証された場合に、進捗情報を更新する。具体的には、ＥＣＵ１３は、第２の情報ブロック１０２を一旦消去状態にし、その後で、第２の情報ブロック１０２に、ベリファイ手順を終了手順として、ベリファイ手順が完了したことを表す識別符号である「４」を進捗管理情報として書き込む。
【００５３】
次に、Ａ２４では、ＥＣＵ１３は、外部装置２０にＡＣＫを送信する。ここでいうＡＣＫは、ベリファイの完了を表す応答である。
続いて、Ａ２５では、ＥＣＵ１３は、外部装置２０から送信された完了通知を受信する。完了通知とは、書き換えるべき制御プログラムの全てのデータの送信が完了したことを表す通知である。
【００５４】
次に、Ａ２６では、ＥＣＵ１３は、進捗情報を更新する。具体的には、ＥＣＵ１３は、第１の情報ブロック１０１を一旦消去状態にし、その後で、第１の情報ブロック１０１に、完了手順を終了手順として、完了手順が終了したことを表す識別符号である「５」を進捗管理情報として書き込む。
【００５５】
最後にＡ２５では、ＥＣＵ１３は、外部装置２０にＡＣＫを送信する。ここでいうＡＣＫは、書き換えの対象となる制御プログラムの書き換えが全て完了したこと、を表す応答（以下、最終応答）である。
【００５６】
このようにして、ＥＣＵ１３は、外部装置２０と通信を行い、書き換えの対象となる制御プログラムの書き換えを実行する。この際、進捗情報、つまり、第１の情報及び第２の情報は、図５に示すように遷移する。図５では、第２の書込手順が完了する迄の進捗情報の遷移が示されている。
【００５７】
すなわち、第１の情報ブロック１０１と第２の情報ブロック１０２とに、交互に、書換手順が終了する毎に、進捗情報が書き込まれる。換言すれば、第１の情報ブロック１０１及び第２の情報ブロック１０２といった複数の管理ブロックのうち、前回進捗情報が書き込まれた管理ブロックとは異なる管理ブロックに、書換手順が終了する毎に、進捗情報が書き込まれる。
【００５８】
［２−２．途中の手順からの書き換えシーケンス］
図６は、ＥＣＵ１３において電源がオフされてからオンされた際に、制御プログラムを書き換えるために、上述の複数手順のうちの途中の手順から書き換えが行われる場合の処理の流れ、を示している。つまり、ＥＣＵ１３において制御プログラムの書き換えが実行されている最中に書き換えが中断された際等に、制御プログラムを書き換えるための上述の複数手順のうちの先頭手順以外の手順から書き換えが再開される場合の処理の流れ、を示している。図６では、図４におけるＡ１８を実行中に、ＥＣＵ１３の電源がオフとなった例が示されている。以下でいう電源断とは電源がオフとなった状態をいう。
【００５９】
ＥＣＵ１３が電源断となり書き換えが中断された後、まず、Ｂ１では、ＥＣＵ１３の電源がオンされる。
続いて、Ｂ２では、ＥＣＵ１３は、完了フラグを確認する。完了フラグはオフに設定されている。
【００６０】
次に、Ｂ３、Ｂ４では、ＥＣＵ１３は、完了フラグがオフであるので、ＲＯＭ３４から進捗情報を読み出す。
続いて、Ｂ５では、ＥＣＵ１３は、読み出された進捗情報に従って再開手順を特定し、再開手順を外部装置２０へ通知する。ここでは、後述する図７に示すように、再開時、第１の情報は「ＦＦＨ」であり、第２の情報は「２」であるので、後述する書換処理に従って、ＥＣＵ１３は、「２」に相当する第１の書込手順を終了手順として特定し、該終了手順の次の手順である第２の書込手順を再開手順として特定する。ＥＣＵ１３は、第２の書込手順を再開手順として、再開手順を表す情報を外部装置２０へ送信する。
【００６１】
次に、Ｂ６では、外部装置２０から送信されたＡＣＫを受信する。ここでいうＡＣＫは、外部装置２０によって再開手順が受信されたことを表す応答であり、外部装置２０がＥＣＵ１３に再開手順の実行を要求する処理要求でもある。
【００６２】
続いて、Ｂ７では、ＥＣＵ１３は、外部装置２０から送信された認証要求を受信する。
次に、Ｂ８では、ＥＣＵ１３は、外部装置２０へＡＣＫを送信する。ここでいうＡＣＫは、外部装置２０の認証が完了したことを表す応答である。
【００６３】
続いて、Ｂ９では、ＥＣＵ１３は、外部装置２０から送信された消去要求を受信する。ここでいう消去要求では、第２の書込手順が再開手順として設定されているので、書き換え対象となる制御プログラムのうち第２の分割データが記憶されている全てのブロックが消去の対象として指定される。
【００６４】
次に、Ｂ１０では、ＥＣＵ１３は、消去要求に従って、ブロックの消去を実行する。
続いて、Ｂ１１では、ＥＣＵ１３は、外部装置２０にＡＣＫを送信する。ここでいうＡＣＫは、消去要求に従ってブロックの消去が完了したことを表す応答である。
【００６５】
そして、ＥＣＵ１３は、Ｂ１２以降は、図４におけるＡ１７以降と同様の処理を実行する。
ここで、Ｂ７−Ｂ８では、ＥＣＵ１３と外部装置２０との間で、書き換えが再開される際には、認証手順が再度実施されている。堅牢性の高い安全な通信を実現するためである。但し、これに限定されるものではなく、該認証手順は省略されても良い。
【００６６】
また、直前まで書き込みを実行していたブロックに対して書き込み再開する際は、不揮発性メモリの特性上、該当するブロック内のデータを一旦消去状態とする必要があるため、Ｂ９−Ｂ１１では、該当するブロック内のデータが消去されている。
【００６７】
このようにして、ＥＣＵ１３は、通信途絶等により電源断となった場合に、書き換えの対象となる制御プログラムの書き換えを実行する。上述のように、複数の管理ブロックである第１の情報ブロック１０１と第２の情報ブロック１０２とのうち、前回とは異なる管理ブロックに進捗情報が書き込まれている。つまり、ＥＣＵ１３が電源断となった場合には、第１の情報ブロック１０１に書き込まれている第１の情報と第２の情報ブロック１０２に書き込まれている第２の情報とに基づいて、再開すべき書換手順である再開手順を特定することが可能である。
【００６８】
例えば、第２の書込手順についての進捗情報を第１の情報ブロック１０１に書き込む際にＥＣＵ１３が電源断となった場合は、図７に示すように、第１の情報ブロック１０１及び第２の情報ブロック１０２のうち、第２の情報ブロックに第２の情報として書き込まれている「２」に基づいて、「２」の次の「３」に相当する第２の書込手順が再開手順として特定される。そして、第２の書込手順が再度実行される。なお、再開手順は、後述する書換処理に従って特定される。
【００６９】
［２−３．ＥＣＵが実行する処理］
次に、ＥＣＵ１３が実行する処理を図８−図１０のフローチャートに基づいて説明する。
［２−３−１．起動処理］
図８に示す起動処理は、ＥＣＵ１３の電源がオフされた後にオンされた際に、実行される。なお、起動処理は、起動プログラムを実行する際の処理手順を表している。起動プログラムは、図示していないが、ＲＯＭ３４の非書換領域３４１に予め記憶されている。
【００７０】
はじめに、ＥＣＵ１３は、Ｓ５では、完了フラグがオンであるか否かを判断する。つまり、制御プログラムの書き換えが完了しているか否かを判断する。ＥＣＵ１３は、完了フラグがオンである場合に処理をＳ１０へ移行させ、完了フラグがオフである場合に処理をＳ１５へ移行させる。
【００７１】
ＥＣＵ１３は、Ｓ１０では、適宜、所定の制御プログラムを起動し、本起動処理を終了する。
ＥＣＵ１３は、Ｓ１５では、リプロプログラムを起動し、本起動処理を終了する。
【００７２】
［２−３−２．書換処理］
図９−図１０に示す書換処理は、ＥＣＵ１３が、起動処理のＳ１５にて、制御プログラムの書き換えが完了していないと判断し、リプロプログラムを実行する際の処理手順を表している。
【００７３】
ＥＣＵ１３は、Ｓ２０では、進捗情報を取得する。具体的には、ＥＣＵ１３は、第１の情報ブロック１０１及び第２の情報ブロック１０２から、それぞれ、第１の情報、第２の情報を取得する。ここでいう取得とは、ＥＣＵ１３が、第１の情報ブロック１０１及び第２の情報ブロック１０２から、それぞれ、進捗情報である第１の情報、第２の情報を読み出すことをいう。
【００７４】
ＥＣＵ１３は、Ｓ２５では、第１の情報がＦＦＨであるか否かを判断する。つまり、第１の情報ブロック１０１が消去状態であるか否かを判断する。ＥＣＵ１３は、第１の情報がＦＦＨである場合に処理をＳ３０へ移行させ、第１の情報がＦＦＨでない場合に処理をＳ４０へ移行させる。
【００７５】
ＥＣＵ１３は、Ｓ３０では、第２の情報がＦＦＨであるか否かを判断する。つまり、第２の情報ブロック１０２が消去状態であるか否かを判断する。ＥＣＵ１３は、第２の情報がＦＦＨである場合に処理をＳ３５へ移行させ、第１の情報がＦＦＨでない場合に処理をＳ５５へ移行させる。
【００７６】
ＥＣＵ１３は、Ｓ３５では、上述の複数手順のうちの先頭手順である認証手順を再開手順として特定する。ＥＣＵ１３は、センタ２１に、再開手順を表す情報を送信する。そして、ＥＣＵ１３は、処理をＳ７０へ移行させる。
【００７７】
ＥＣＵ１３は、Ｓ４０では、第２の情報がＦＦＨであるか否かを判断する。ＥＣＵ１３は、第２の情報がＦＦＨである場合に処理をＳ６０へ移行させ、第１の情報がＦＦＨでない場合に処理をＳ４５へ移行させる。
【００７８】
ＥＣＵ１３は、Ｓ４５では、第１の情報が表す終了手順と、第２の情報が表す終了手順と、に連続性が有るか否かを判断する。つまり、これらが互いに連続する手順であるか否かを判断する。本ステップでは、第１の情報及び第２の情報は、いずれも、ＦＦＨではない。以下でいう更新情報とは、このように、消去状態を表していない進捗情報、つまり第１の情報又は第２の情報をいう。
【００７９】
すなわち、本ステップでは、ＥＣＵ１３は、Ｓ２０にて取得された進捗情報に複数の更新情報が含まれる場合に、これらの更新情報のそれぞれによって表される複数の終了手順が互いに連続する手順であるか否かを判断している。
【００８０】
終了手順は、上述のように、例えば「１」、「２」等といったように、数値による識別符号で表されている。ＥＣＵ１３は、第１の情報による終了手順を示す情報と、第２の情報による終了手順を示す情報とに連続性がある場合、処理をＳ５０へ移行させる。また、ＥＣＵ１３は、これらに連続性が無い場合、処理を上述のＳ３５へ移行させる。
【００８１】
ＥＣＵ１３は、Ｓ５０では、第１の情報による終了手順を示す情報と、第２の情報による終了手順を示す情報とに連続性がある場合に、第１の情報による終了手順及び第２の情報による終了手順のうちいずれが上述の複数手順における最後の手順（以下、最終手順）に最も近い手順であるか、を特定する。以下でいう直前手順とは、第１の情報による終了手順及び第２の情報による終了手順のうち、最終手順に最も近い手順をいう。
【００８２】
ここで、ＥＣＵ１３は、第１の情報による終了手順を示す情報としての識別符号が、第２の情報による終了手順を示す情報としての識別符号よりも大きい場合に、第１の情報による終了手順を直前手順として特定し、処理をＳ６０へ移行させる。一方、ＥＣＵ１３は、第１の情報による終了手順を示す情報としての識別符号が、第２の情報による終了手順を示す情報としての識別符号よりも小さい場合に、第２の情報による終了手順を直前手順として特定し、処理をＳ５５へ移行させる。
【００８３】
ＥＣＵ１３は、Ｓ５５では、第２の情報を取得する。すなわち、第２の情報によって表される終了情報を取得する。そして、ＥＣＵ１３は、処理をＳ６５へ移行させる。
ＥＣＵ１３は、Ｓ６０では、第１の情報を取得する。すなわち、第１の情報によって表される終了情報を取得する。そして、ＥＣＵ１３は、処理をＳ６５へ移行させる。
【００８４】
ＥＣＵ１３は、Ｓ６５では、上述の複数手順のうち、Ｓ５５またはＳ６０にて取得された終了手順の次の手順を再開手順として特定する。ＥＣＵ１３は、センタ２１に、再開手順を表す情報を送信する。そして、ＥＣＵ１３は、処理をＳ７０へ移行させる。
【００８５】
ＥＣＵ１３は、Ｓ７０では、センタ２１から再開手順の実行を要求する処理要求を受信したか否か判断する。ＥＣＵ１３は、処理要求を受信するまで待機し、処理要求を受信すると処理をＳ７５へ移行させる。
【００８６】
ＥＣＵ１３は、Ｓ７５では、処理要求に従って、処理要求にて要求された手順を実行する。
ＥＣＵ１３は、Ｓ８０では、処理要求にて要求された手順が完了したか否かを判断する。ＥＣＵ１３は、処理要求にて要求された手順が完了するまで待機し、処理要求にて要求された手順が完了すると処理をＳ８５へ移行させる。
【００８７】
ＥＣＵ１３は、Ｓ８５では、新たな進捗情報を取得する。ここでは、ＥＣＵ１３は、処理要求にて要求された書換手順であって完了した書換手順である終了情報を表す情報含む進捗情報を新たな進捗情報として生成する。
【００８８】
ＥＣＵ１３は、Ｓ９０では、全ての管理ブロックのそれぞれに記憶されている全ての進捗情報がＦＦＨであるか否か、を判断する。具体的には、ＥＣＵ１３は、第１の情報ブロック１０１及び第２の情報ブロック１０２がいずれも消去状態であるか否か、を判断する。
【００８９】
ここで、ＥＣＵ１３は、全ての進捗情報がＦＦＨである場合に処理をＳ９５へ移行させる。ＥＣＵ１３は、Ｓ９５では、第１の情報ブロック１０１及び第２の情報ブロック１０２のうち、予め定められた一方を更新する。ここでいう更新するとは、Ｓ８５にて取得された新たな進捗情報を、１つの管理ブロックに書き込むことをいう。ここでは、ＥＣＵ１３は、第１の情報ブロック１０１を更新する。すなわち、ＥＣＵ１３は、第１の情報ブロック１０１にＳ８５にて取得された新たな進捗情報を書き込む。そして、ＥＣＵ１３は、処理をＳ１１５へ移行させる。一方、ＥＣＵ１３は、全ての進捗情報がＦＦＨでない場合に処理をＳ１００へ移行させる。
【００９０】
ＥＣＵ１３は、Ｓ１００では、全ての進捗情報のなかにＦＦＨが含まれているか否かを判断する。つまり、ＥＣＵ１３は、第１の情報ブロック１０１及び第２の情報ブロック１０２のうち、消去状態のブロックがあるか否かを判断する。ここで、ＥＣＵ１３は、第１の情報ブロック１０１及び第２の情報ブロック１０２のうち、消去状態のブロックがある場合に、処理をＳ１０５へ移行させる。ＥＣＵ１３は、Ｓ１０５では、第１の情報ブロック１０１及び第２の情報ブロック１０２のうち、消去状態のブロックを更新する。つまり、消去状態のブロックにＳ８５にて取得された新たな進捗情報を書き込む。そして、処理をＳ１１５へ移行させる。
【００９１】
一方、ＥＣＵ１３は、第１の情報ブロック１０１及び第２の情報ブロック１０２のうち、消去状態のブロックが無い場合に、処理をＳ１１０へ移行させる。つまり、複数の管理ブロックに記憶されている進捗情報のそれぞれが全て更新情報である場合に、処理をＳ１１０へ移行させる。
【００９２】
ＥＣＵ１３は、Ｓ１０５では、第１の情報が表す終了手順を示す情報、及び第２の情報が表す終了手順を表す情報のうち、上述の複数手順における先頭手順に最も近い手順を特定し、該手順が記憶されている管理ブロックを更新する。そして、ＥＣＵ１３は、処理をＳ１１５へ移行させる。
【００９３】
ＥＣＵ１３は、Ｓ１１５では、センタ２１から完了通知を受信したか否かを判断する。ここで、ＥＣＵ１３は、完了通知を受信した場合に処理をＳ１１５へ移行させる。一方、ＥＣＵ１３は、完了通知を受信していない場合に処理をＳ７０へ移行させ、上述の複数手順において再開手順から後の手順について、Ｓ７０−Ｓ１１０の処理を繰り返し実行する。つまり、ＥＣＵ１３は、再開手順から最終手順迄、Ｓ７０−Ｓ１１０を繰り返し実行する。
【００９４】
ＥＣＵ１３は、Ｓ１１５では、センタ２１から受信した完了通知に対して、センタ２１へＡＣＫである最終応答を送信し、書換処理を終了する。
［２−４．外部装置が実行する処理］
次に、外部装置２０が、外部装置２０に記憶されている新しい制御プログラムをＥＣＵ１３に送信し、ＥＣＵ１３の制御プログラムを書き換えるための外部装置処理、を図１１のフローチャートに基づいて説明する。外部装置２０は、ＥＣＵ１３との間の通信が途絶したことを検出可能に構成されている。図１１に示す処理は、例えば、ＥＣＵ１３との間の通信が途絶したことをきっかけとして、開始される。
【００９５】
はじめに、外部装置２０は、Ｓ２１０では、ＥＣＵ１３から再開手順を受信したか否かを判断する。外部装置２０は、再開手順が受信されていないと判断された場合は、再開手順が受信されたと判断される迄待機する。外部装置２０は、再開手順が受信されたと判断された場合に、処理をＳ２２０へ移行させる。
【００９６】
外部装置２０は、Ｓ２２０では、ＥＣＵ１３へ処理要求を送信する。ここでいう処理要求とは、ＥＣＵ１３から受信した再開手順の実行をＥＣＵ１３に要求するものである。
外部装置２０は、Ｓ２３０では、ＥＣＵ１３からＡＣＫを受信したか否かを判断する。ここでいうＡＣＫは、Ｓ２３０にて送信した処理要求に従う手順がＥＣＵ１３にて実行されたことを表す応答である。外部装置２０は、ＡＣＫが受信されていないと判断された場合は、ＡＣＫが受信されたと判断される迄待機する。外部装置２０は、再開手順が受信されたと判断された場合に、処理をＳ２４０へ移行させる。
【００９７】
外部装置２０は、Ｓ２４０では、上述の複数手順のうち全ての書換手順が完了したか否かを判断する。ここで、外部装置２０は、全ての書換手順が完了したと判断された場合に処理をＳ２５０へ移行させる。一方、外部装置２０は、全ての書換手順が完了していないと判断された場合に、処理をＳ２２０へ移行させ、再開手順から最終手順までのそれぞれについて、Ｓ２２０−Ｓ２４０の処理を繰り返し実行する。
【００９８】
外部装置２０は、Ｓ２５０では、ＥＣＵ１３へ完了通知を送信する。
外部装置２０は、Ｓ２６０では、ＥＣＵ１３から最終応答を表すＡＣＫを受信したか否かを判断する。外部装置２０は、最終応答を表すＡＣＫが受信されていないと判断された場合は、該ＡＣＫが受信されたと判断される迄待機し、該ＡＣＫが受信されたと判断されると、本外部装置処理を終了する。
【００９９】
［３．効果］
以上詳述した実施形態によれば、以下の効果を奏する。
（３ａ）ＥＣＵ１３は、不揮発性メモリであるＲＯＭ３４を有する。ＥＣＵ１３は、Ｓ８５では、新たな進捗情報を繰り返し取得する。ＥＣＵ１３は、Ｓ８５、Ｓ９５、Ｓ１００では、進捗情報が取得される毎に、例えば第１の情報ブロック１０１及び第２の情報ブロック１０２といった複数の管理ブロック、のうちの少なくとも１つに、進捗情報を記憶させる。ここで特にＥＣＵ１３は、複数の管理ブロックのうち、進捗情報が前回記憶された管理ブロックとは異なる管理ブロックに、進捗情報を記憶させる。
【０１００】
その結果、仮に進捗情報の書き換えが行われている際にＥＣＵ１３が電源断になったとしても、進捗情報は複数の管理ブロックのいずれかに記憶されている。つまり、不揮発性メモリを有するＥＣＵ１３が電源断となった場合であっても、不揮発性メモリにおけるデータの書き換えの進捗を表す進捗情報を保持することができる。
【０１０１】
（３ｂ）ＥＣＵ１３は、（３ａ）に記載の構成において、Ｓ８５では、書換手順が実行される毎に、進捗情報を取得する。進捗情報には終了手順を表す情報が含まれている。ＥＣＵ１３は、Ｓ９５、Ｓ１０５、Ｓ１１０では、複数の管理ブロックのうちの１つの管理ブロックであって進捗情報が前回記憶された管理ブロックとは異なる管理ブロックに、取得した進捗情報を記憶させる。
【０１０２】
ＥＣＵ１３は、Ｓ５では、ＥＣＵ１３への電力の供給が停止から開始となった際に、上述の複数手順のうちの全ての書換手順が実行されてＲＯＭ３４の書き換えが完了しているか否かを判断する。ＥＣＵ１３は、書き換えが完了していないと判断された場合に、Ｓ２０では複数の管理ブロックのそれぞれから進捗情報を取得し、Ｓ３５、Ｓ６５では、取得した進捗情報に基づいて再開手順を特定する。
【０１０３】
その結果、進捗情報に含まれる終了手順は上述の複数手順のうちの実行が終了した書換手順を表しているので、終了情報に基づいて、再開手順を特定することが可能となる。また、進捗情報は、複数の管理ブロックのうち進捗情報が前回記憶された管理ブロックとは異なるブロックに記憶されるので、仮に進捗情報が複数の管理ブロックの一方に書き込まれる際に通信途絶等の理由によりＥＣＵ１３が電源断になったとしても、複数の管理ブロックの他方には既に書き込まれた進捗情報が残っている。
【０１０４】
従って、ＥＣＵ１３が電源断になったとしても、進捗情報を保持することができる。また、進捗情報に基づいて特定された再開手順から書き換えを再開することができるので、書き換えに要する時間を短縮することができる。
【０１０５】
（３ｃ）ＥＣＵ１３は、（３ｂ）に記載の構成において、Ｓ３５では、Ｓ２０にて複数の管理ブロックのそれぞれから取得された全ての進捗情報が消去状態を表しているか否かを判断し、全ての進捗情報が消去状態を表している場合に、上述の複数手順のうちの先頭手順を再開手順として特定する。
【０１０６】
その結果、複数の管理ブロックが全て消去状態であったとしても、先頭手順が再開手順として特定されるので、制御プログラムの書き換えを確実に再開することができる。
（３ｄ）ＥＣＵ１３は、（３ｂ）または（３ｃ）に記載の構成において、Ｓ６５では、Ｓ２０にて複数の管理ブロックのそれぞれから取得された全ての進捗情報のうち少なくとも１つが、消去状態を表していない更新情報であるか否かを判断し、全ての進捗情報のうち少なくとも１つが更新情報である場合は、更新情報に基づいて再開手順を特定する。
【０１０７】
すなわち、少なくとも１つの更新情報が取得された場合、更新情報に基づいて再開手順を特定することができる。その結果、書き換えに要する時間を短縮することができる。
（３ｅ）ＥＣＵ１３は、（３ｄ）に記載の構成において、Ｓ６５では、複数の管理ブロックのそれぞれから取得された全ての進捗情報なかに複数の更新情報が含まれる場合、複数の更新情報のそれぞれによって表される複数の終了手順のうち、上述の複数手順における最終手順に最も近い手順である直前手順を特定し、直前手順の次の手順を再開手順として特定する。
【０１０８】
すなわち、複数の更新情報が取得された場合、より最終手順に近い手順から、書き換えを再開することができる。その結果、書き換えに要する時間を短縮することができる。
（３ｆ）ＥＣＵ１３は、（３ｅ）に記載の構成において、Ｓ４５では、全ての進捗情報のなかに複数の更新情報が含まれる場合、複数の終了手順のそれぞれが互いに連続する手順であるか否かを判断する。
【０１０９】
その結果、例えば、複数の管理ブロックのそれぞれに予め定められた順番に進捗情報が記憶されるような場合に、複数の終了手順のそれぞれが互いに連続する手順であると判断されたときには、進捗情報が正常に記憶されている状況であると認識することができる。
【０１１０】
（３ｇ）ＥＣＵ１３は、（３ｆ）に記載の構成において、Ｓ６５では、上述のように、複数の終了手順のそれぞれが互いに連続する手順であると判断された場合に、直前手順を特定し、直前手順の次の手順を再開手順として特定する。
【０１１１】
すなわち、進捗情報が正常に記憶されている状況であると認識された場合に、より最終手順に近い手順から、書き換えを再開することができる。その結果、書き換えを開始すべき手順を正確に特定することができる。
【０１１２】
（３ｈ）ＥＣＵ１３は、（３ｆ）または（３ｇ）に記載の構成において、Ｓ６５では、上述のように、複数の終了手順のそれぞれが互いに連続する手順でないと判断された場合に、上述の複数手順のうち先頭手順を再開手順として特定する。
【０１１３】
すなわち、進捗情報が正常に記憶されている状況でないと認識された場合には、先頭手順から書き換えが再開される。その結果、書き換えを確実に実行することができる。
（３ｉ）ＥＣＵ１３は、（３ｄ）から（３ｈ）のいずれか一項に記載の構成において、Ｓ３５では、複数の管理ブロックのそれぞれから取得された全ての進捗情報に１つの更新情報が含まれる場合に、更新情報によって表される終了手順の次の手順を再開手順として特定する。
【０１１４】
すなわち、１つの更新情報が取得された場合、該更新情報に基づいて、再開手順を特定することができる。その結果、書き換えに要する時間を短縮することができる。
（３ｊ）ＥＣＵ１３は、（３ｂ）から（３ｉ）のいずれか一項に記載の構成において、車両に搭載され、車両に搭載される他の電子制御装置としてのＤＣＭ−ＥＣＵ１１やＣ−ＧＷ１２等と通信線１５によって通信可能に接続されて車両ネットワークを構成している。ＥＣＵ１３は、Ｓ３５、Ｓ６５では、車両ネットワーク外の装置であってＥＣＵ１３と通信可能な外部装置２０に、再開手順を表す情報を送信する。
【０１１５】
上述のように、外部装置２０は、対象データをＥＣＵ１３に送信するように構成されている。ＥＣＵ１３は、外部装置２０から受信した対象データをＲＯＭ３４に書き込むことによって書き換えを実行するように構成されている。本実施形態では、再開手順を外部装置２０へ送信するので、外部装置２０に、制御プログラムを構成するデータのうち書き換えの再開に必要な対象データを送信させることが可能となる。
【０１１６】
（３ｋ）ＥＣＵ１３は、（３ｂ）から（３ｊ）のいずれかに記載の構成において、Ｓ９５では、全ての管理ブロックが消去状態であるか否かを判断し、全ての管理ブロックが消去状態である場合に、予め定められた１つの管理ブロックに進捗情報を記憶させるように構成される。その結果、全ての管理ブロックが消去状態である場合に、進捗情報を記憶させるべき管理ブロックが予め定められているので、進捗情報を確実に記憶させることができる。
【０１１７】
（３ｌ）ＥＣＵ１３は、（３ｂ）から（３ｋ）のいずれかに記載の構成において、Ｓ１０５では、全ての管理ブロックのうち少なくとも１つの管理ブロックが消去状態であるか否かを判断し、少なくとも１つの管理ブロックが消去状態である場合に、少なくとも１つの管理ブロックのうちの１つに進捗情報を記憶させるように構成される。例えば、上述のように、第１の情報ブロック１０１及び第２の情報ブロック１０２のうち一方が消去状態である場合に、該消去状態である第２の情報ブロック１０２に進捗情報が記憶される。
【０１１８】
すなわち、新たな進捗情報は消去状態でない管理ブロックよりも優先して消去状態である管理ブロックに記憶されるので、過去の進捗情報及び新たな進捗情報をそれぞれ異なる管理ブロックに記憶させることができる。その結果、（３ａ）と同様の効果を得ることができる。
【０１１９】
（３ｍ）ＥＣＵ１３は、（３ｂ）から（３ｌ）のいずれかに記載の構成において、Ｓ１１０では、全ての管理ブロックが非消去状態であるか否かを判断するように構成される。ＥＣＵ１３は、全ての管理ブロックが非消去状態である場合に、全ての管理ブロックのそれぞれに記憶されている複数の終了手順のうちの１つであって上述の先頭手順に最も近い終了手順が記憶されている管理ブロックに、進捗情報を記憶させるように構成される。
【０１２０】
例えば、上述のように、第１の情報ブロック１０１及び第２の情報ブロック１０２のうち両方が非消去状態である場合に、第１の情報ブロック１０１及び第２の情報ブロック１０２のそれぞれに記憶されている複数の終了手順のうち先頭手順に最も近い終了手順が記憶されている管理ブロックに進捗情報が記憶される。その結果、より直近の進捗情報を保持することができる。
【０１２１】
上記実施形態における車両制御システム１が制御システムに相当し、ＥＣＵ１３が電子制御装置に相当し、ＲＯＭ３４が不揮発性メモリに相当する。また、ＥＣＵ１３が情報取得部、記憶実行部、完了判断部、再開特定部、連続判断部、再開送信部に相当する。また、Ｓ８５が情報取得部としての処理に相当し、Ｓ９５、Ｓ１０５、Ｓ１１０が記憶実行部としての処理に相当し、Ｓ５が完了判断部としての処理に相当し、Ｓ３５、Ｓ６５が再開特定部、再開送信部としての処理に相当し、Ｓ４５が連続判断部としての処理に相当する。
【０１２２】
ＤＣＭ−ＥＣＵ１１、Ｃ−ＧＷ１２が、車両ネットワークを構成する、他の電子制御装置に相当する。第１の情報ブロック１０１及び第２の情報ブロックのそれぞれが管理ブロックに相当し、第１の情報及び第２の情報のそれぞれが進捗情報に相当し、複数手順が複数の書換手順に相当する。また、先頭手順が複数の書換手順のうち最初の書換手順に相当し、終了手順が複数の書換手順における最後の書換手順に相当する。
【０１２３】
［４．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【０１２４】
（４ａ）上記実施形態では、ＤＣＭ−ＥＣＵ１１、Ｃ−ＧＷ１２、ＥＣＵ１３は、ＣＡＮ規格に従って通信を行うように構成されていた。但し、これに限定されるものではない。ＤＣＭ−ＥＣＵ１１、Ｃ−ＧＷ１２、ＥＣＵ１３は、Ethernet規格に従って通信を行うように構成され得る。Ethernetは登録商標である。
【０１２５】
（４ｂ）上記実施形態では、上述の複数手順に、認証手順、消去手順、書込手順としての第１の書込手順及び第２の書込手順、ベリファイ手順、完了手順、が含まれていたが、これらに限定されるものではない。上述の複数手順には、認証手順、消去手順、書込手順、ベリファイ手順、完了手順、のうち一又は複数が含まれ得る。また、書込手順は、書き換えの対象となる制御プログラムを表すデータを分割することなく行われても良い。
【０１２６】
（４ｃ）上記実施形態では、進捗情報は、第１の情報ブロック１０１及び第２の情報ブロック１０２といった、異なる２つの管理ブロックに交互に記憶されていたが、これに限定されるものではない。進捗情報は、第１の情報ブロック１０１、第２の情報ブロック１０２、及び図示しない第３の情報ブロックといった、異なる３つの管理ブロックに記憶されてもよい。または、進捗情報は、４つ以上の異なる管理ブロックに記憶されてもよい。いずれの場合であっても、進捗情報が前回書き込まれた管理ブロックとは異なる管理ブロックに書き込まれることによって、上記実施形態と同様の効果が奏される。
【０１２７】
（４ｄ）上記実施形態では、制御プログラムの書き換えを行う例を説明したが、これに限定されるものではない。例えば、ＥＣＵ１３は、ＲＯＭ３４の書換領域３４２に、診断装置２２による車両の診断結果に応じて書き換えられるデータ（以下、診断データ）が記憶されていても良い。そして、ＥＣＵ１３は、上記実施形態と同様に書換処理を実行することによって、ＲＯＭ３４に記憶されている診断データを対象データとして、診断データの書き換えを実現しても良い。
【０１２８】
（４ｅ）上記実施形態では、ＥＣＵ１３は、Ｓ８５にて進捗情報が取得される毎に、複数の管理ブロックのうちの１つに、進捗情報を記憶させていたが、これに限定されるものではない。ＥＣＵ１３は、Ｓ８５にて進捗情報が取得される毎に、複数の管理ブロックのうちの２つ以上の管理ブロックに、進捗情報を記憶させるように構成されても良い。
【０１２９】
（４ｆ）上記実施形態では、図５、図７にて第２の書込手順の説明で示すように、書換手順の完了時に、進捗情報を更新すべき管理ブロックを消去していた。但し、これに限定されるものではない。例えば、図５、図７にて第２の書込手順の開始直前に進捗情報を更新すべき管理ブロックである第１の情報ブロック１０１を消去する、といったように、書換手順の開始直前に、進捗情報を更新すべき管理ブロックを消去してもよい。
【０１３０】
（４ｇ）上記実施形態では、図６に示すＢ５にてＥＣＵ１３から再開手順が通知された際、外部装置２０は、Ｂ６にて、ＥＣＵ１３から受信した再開手順を表す情報をＡＣＫとしてＥＣＵ１３へ送信するように構成されていた。但し、これに限定されるものではない。ＥＣＵ１３は、Ｂ６にて、再開手順と、外部装置２０からＡＣＫとして受信した再開手順とが一致しているか否かを判断するように構成されてもよい。ここで、ＥＣＵ１３は、再開手順と、外部装置２０からＡＣＫとして受信した再開手順とが一致している場合に、Ｂ７以降の処理を実行するように構成されてもよい。一方、ＥＣＵ１３は、再開手順と、外部装置２０からＡＣＫとして受信した再開手順とが不一致である場合に、外部装置２０へ否定応答を送信し、外部装置２０へ先頭処理から書き換えを実行することを要求するように構成されてもよい。
【０１３１】
（４ｈ）上記実施形態は、車両制御システム１として実現されても良い。車両制御システム１は、車両に搭載されて車両ネットワークを構成し、書き換え可能なメモリである不揮発性メモリを有するＥＣＵ１３と、車両ネットワーク外の装置であってＥＣＵ１３と通信可能な外部装置２０と、を備えていても良い。ここで、車両制御システム１は、上記（３ａ）に記載のように構成されたＥＣＵ１３を備えていても良い。また、車両制御システム１が備えるＥＣＵ１３は、更に、上記（３ｂ）−（３ｍ）に記載のように構成されていても良い。
【０１３２】
（４ｉ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【０１３３】
（４ｊ）上述した車両制御システム１、車載制御システム１０、外部装置２０、センタ２１、診断装置２２、ＥＣＵ１３の他、外部装置２０、センタ２１、ＥＣＵ１３を機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、書き換え方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【０１３４】
１  車両制御システム、１３  ＥＣＵ、２０  外部装置。
【図１】
2019020837.tif 000003
【図２】
2019020837.tif 000004
【図３】
2019020837.tif 000005
【図４】
2019020837.tif 000006
【図５】
2019020837.tif 000007
【図６】
2019020837.tif 000008
【図７】
2019020837.tif 000009
【図８】
2019020837.tif 000010
【図９】
2019020837.tif 000011
【図１０】
2019020837.tif 000012
【図１１】
2019020837.tif 000013