(57)【要約】【課題】不揮発性メモリを効率的に利用する。【解決手段】電子制御装置のコードフラッシュメモリ１４０には、アクティブ状態とインアクティブ状態とを排他的に切り替え可能な２つの記憶領域（バンクＡ及びバンクＢ）が確保されている。アクティブ状態のバンクＡには、実行対象の制御プログラムが格納され、インアクティブ状態のバンクＢは、制御プログラムを更新するための予約領域として使用される。そして、インアクティブ状態のバンクＢには、制御プログラムを更新する予約領域として使用されないとき、故障情報などの任意のデータが書き込まれる。【選択図】図６
2020126452.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリにアクティブ状態とインアクティブ状態とを排他的に切り替え可能な２つの記憶領域が確保され、前記アクティブ状態の記憶領域に実行対象の制御プログラムが書き込まれ、前記インアクティブ状態の記憶領域が前記制御プログラムを更新するための予約領域として使用される電子制御装置であって、
前記制御プログラムを更新しないとき、前記インアクティブ状態の記憶領域に任意のデータが書き込まれる、
電子制御装置。
【請求項２】
前記任意のデータは故障情報である、
請求項１に記載の電子制御装置。
【請求項３】
前記インアクティブ状態の記憶領域には、故障発生時及び故障発生前後の前記故障情報が書き込まれる、
請求項２に記載の電子制御装置。
【請求項４】
前記制御プログラムを更新するとき、前記インアクティブ状態の記憶領域に書き込まれている前記任意のデータを外部装置に送信し、前記外部装置から送信された更新プログラムを前記インアクティブ状態の記憶領域に書き込み、前記アクティブ状態の記憶領域をインアクティブ状態に切り替えると共に前記インアクティブ状態の記憶領域をアクティブ状態に切り替え、前記外部装置から送信された前記任意のデータを前記インアクティブ状態の記憶領域に書き込む、
請求項１〜請求項３のいずれか１つに記載の電子制御装置。
【請求項５】
前記外部装置はＯＴＡセンターのサーバーである、
請求項４に記載の電子制御装置。
【請求項６】
不揮発性メモリにアクティブ状態とインアクティブ状態とを排他的に切り替え可能な２つの記憶領域が確保され、前記アクティブ状態の記憶領域に実行対象の制御プログラムが書き込まれ、前記インアクティブ状態の記憶領域が前記制御プログラムを更新するための予約領域として使用される電子制御装置のプロセッサが、前記制御プログラムを更新しないとき、前記インアクティブ状態の記憶領域に任意のデータを書き込む、
不揮発性メモリの使用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置及び不揮発性メモリの使用方法に関する。
【背景技術】
【０００２】
自動車などの車両に搭載された電子制御装置は、機能追加、不具合改修などによって制御プログラムが更新される場合がある。従来では、車両をディーラなどに持ち込んで、電子制御装置の制御プログラムを更新していた。この場合、車両ユーザの利便性が良くないことから、特開２０１８−８６８９４号公報（特許文献１）に記載されるように、無線通信を使用したＯＴＡ（Over The Air）によって、ユーザの手元で制御プログラムを更新する技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−８６８９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＯＴＡによって制御プログラムを更新する場合、車両走行中などにも制御プログラムを更新できることが望ましい。これを実現するため、電子制御装置の不揮発性メモリに確保された２つの記憶領域を交互に使用し、一方の記憶領域に実行対象の制御プログラムを書き込んでおき、他方の記憶領域を制御プログラムの更新用の予約領域とすることが考えられる。そして、予約領域に更新プログラムを書き込み、例えば、再起動時などのタイミングで更新プログラムに切り替えることで、車両走行中などにも制御プログラムを更新できるようになる。しかしながら、不揮発性メモリに確保された予約領域は、制御プログラムを更新するためだけに使用されるため、不揮発性メモリの利用可能な記憶領域が小さくなってしまう。
【０００５】
そこで、本発明は、不揮発性メモリを効率的に利用可能な、電子制御装置及び不揮発性メモリの使用方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
このため、電子制御装置において、不揮発性メモリにアクティブ状態とインアクティブ状態とを排他的に切り替え可能な２つの記憶領域が確保され、アクティブ状態の記憶領域に実行対象の制御プログラムが書き込まれ、インアクティブ状態の記憶領域が制御プログラムを更新するための予約領域として使用される。そして、電子制御装置は、制御プログラムを更新しないとき、インアクティブ状態の記憶領域に任意のデータを書き込む。
【発明の効果】
【０００７】
本発明によれば、電子制御装置の不揮発性メモリを効率的に利用することができる。
【図面の簡単な説明】
【０００８】
【図１】電子制御装置の制御プログラムを更新するシステム図である。
【図２】電子制御装置の一例を示す内部構成図である。
【図３】コードフラッシュメモリのデータ構造図である。
【図４】制御プログラムの更新方法の説明図である。
【図５】車両で実行される故障情報書込み処理の一例を示すフローチャートである。
【図６】インアクティブ状態の記憶領域に故障情報を書き込んだ状態の説明図である。
【図７】故障発生時及び故障発生前後の故障情報を書き込む方法の説明図である。
【図８】アドレス空間が同一の記憶領域に故障情報を書き込む方法の説明図である。
【図９】ＯＴＡセンターで実行されるプログラム更新処理の一例を示すフローチャートである。
【図１０】制御プログラムの更新ができない故障を定義したテーブルの説明図である。
【図１１】車両で実行される故障情報返送処理の一例を示すフローチャートである。
【図１２】車両で実行されるプログラム更新処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図１は、ＯＴＡを利用して、車両ＶＨに搭載された電子制御装置の制御プログラムを更新するシステムの一例を示している。更新プログラムは、ＯＴＡセンターＣＴＲのサーバーＳＶＲに格納されており、ＯＴＡセンターＣＴＲに接続された基地局ＢＳから無線通信で車両ＶＨに配信される。車両ＶＨに配信された更新プログラムは、無線送受信機、ゲートウェイ及び車載ネットワークを介して電子制御装置に送られ、電子制御装置の不揮発性メモリに書き込まれる。ここで、ＯＴＡセンターＣＴＲのサーバーＳＶＲが、外部装置の一例として挙げられる。なお、サーバーＳＶＲは、例えば、汎用コンピュータシステムから構成されている。
【００１０】
図２は、車両ＶＨに搭載された電子制御装置１００の一例を示している。
電子制御装置１００は、プロセッサ１２０と、コードフラッシュメモリ１４０と、データフラッシュメモリ１６０と、ＲＡＭ（Random Access Memory）１８０と、入出力回路２００と、通信回路２２０と、これらを相互通信可能に接続する内部バス２４０と、を備えている。ここで、コードフラッシュメモリ１４０が、不揮発性メモリの一例として挙げられる。なお、図２においては、１つの電子制御装置１００のみが図示されているが、車両ＶＨには、ＣＡＮ（Controller Area Network）などの車載ネットワークに接続された、複数の電子制御装置１００が搭載されている。
【００１１】
プロセッサ１２０は、プログラムに記述された命令セット（データの転送、演算、加工、制御、管理など）を実行するハードウエアであって、演算装置、命令や情報を格納するレジスタ、周辺回路などから構成されている。コードフラッシュメモリ１４０は、電気的にデータを書き換え可能な不揮発性メモリからなり、例えば、エンジン、自動変速機、燃料噴射装置などを制御する制御プログラムなどを格納する。データフラッシュメモリ１６０は、電気的にデータを書き換え可能な不揮発性メモリからなり、例えば、学習値などのデータを格納する。ＲＡＭ１８０は、電源供給遮断によってデータが消失する揮発性メモリからなり、プロセッサ１２０の一時的な記憶領域を提供する。
【００１２】
入出力回路２００は、Ａ／Ｄコンバータ、Ｄ／Ａコンバータ、Ｄ／Ｄコンバータなどからなり、外部機器に対するアナログ信号及びデジタル信号の入出力機能を提供する。通信回路２２０は、ＣＡＮトランシーバなどからなり、車載ネットワークに接続する機能を提供する。内部バス２４０は、各デバイス間でデータを交換するための経路であって、アドレスを転送するためのアドレスバス、データを転送するためのデータバス、アドレスバスやデータバスで実際に入出力を行うタイミングや制御情報を遣り取りするコントロールバスを含んでいる。
【００１３】
また、電子制御装置１００の通信回路２２０は、ゲートウェイ２６０を介して、基地局ＢＳと無線通信する無線送受信機２８０に接続されている。ここで、ゲートウェイ２６０は、基地局ＢＳから送信されたデータのプロトコルを通信回路２２０で処理可能なプロトコルに変換すると共に、電子制御装置１００で処理されるデータのプロトコルを基地局ＢＳで処理可能なプロトコルに変換する機能を提供する。
【００１４】
従って、基地局ＢＳから配信された更新プログラムは、車両ＶＨに搭載された無線送受信機２８０で受信され、ゲートウェイ２６０によってプロトコル変換されつつ、通信回路２２０及び内部バス２４０を介してプロセッサ１２０に送られる。そして、プロセッサ１２０は、例えば、コードフラッシュメモリ１４０に予め格納されたプログラムに従って、以下で詳細に説明するように、コードフラッシュメモリ１４０の制御プログラムを更新する。なお、コードフラッシュメモリ１４０に予め格納されたプログラム自体も、更新対象となり得る。
【００１５】
コードフラッシュメモリ１４０には、図３に示すように、アクティブ状態とインアクティブ状態とを排他的に切り替え可能な２つの記憶領域として、バンクＡとバンクＢとが予め確保されている。図３に示す一例では、アクティブ状態のバンクＡに、電子制御装置１００の制御対象を制御するための制御プログラムＡ〜Ｆが書き込まれ、インアクティブ状態のバンクＢにデータが書き込まれていない状態を示している。ここで、インアクティブ状態のバンクＢは、制御プログラムＡ〜Ｆを更新するための予約領域として使用される。なお、以下の説明においては、アクティブ状態のバンクを「アクティブＲＯＭ」、インアクティブ状態のバンクを「インアクティブＲＯＭ」と呼ぶこととする。
【００１６】
電子制御装置１００の初期状態では、図４に示すように、アクティブＲＯＭにリビジョン１．０の制御プログラムが書き込まれ、インアクティブＲＯＭが未使用となっている。この初期状態において、アクティブＲＯＭに書き込まれている制御プログラムを更新する場合、インアクティブＲＯＭにリビジョン２．０の更新プログラムが書き込まれ、例えば、電子制御装置１００の再起動時などの所定のタイミングで、アクティブＲＯＭがインアクティブＲＯＭに切り替えられると共に、インアクティブＲＯＭがアクティブＲＯＭに切り替えられる。従って、電子制御装置１００は、その後、アクティブＲＯＭに書き込まれているリビジョン２．０の制御プログラムを実行し、例えば、機能追加、不具合改修などが行われた制御を実行することができる。
【００１７】
そして、アクティブＲＯＭに書き込まれているリビジョン２．０の制御プログラムを更に更新する場合、インアクティブＲＯＭにリビジョン３．０の更新プログラムが書き込まれ、例えば、電子制御装置１００の再起動時などの所定のタイミングで、アクティブＲＯＭがインアクティブＲＯＭに切り替えられると共に、インアクティブＲＯＭがアクティブＲＯＭに切り替えられる。このようにすることで、車両ＶＨが走行中であっても制御プログラムを更新することができる。
【００１８】
しかしながら、インアクティブＲＯＭが制御プログラムの更新のためだけに使用されると、コードフラッシュメモリ１４０の使用可能な記憶領域が小さくなってしまう。そこで、コードフラッシュメモリ１４０を効率的に利用するため、電子制御装置１００のプロセッサ１２０は、制御プログラムを更新しないとき、インアクティブＲＯＭに任意のデータを書き込む。ここで、任意のデータとしては、例えば、ＯＢＳ（On Board Snapshot）やＦＦＤ（Freeze Frame Data）などの故障情報とすることができる。
【００１９】
図５は、電子制御装置１００が起動されたことを契機として、電子制御装置１００のプロセッサ１２０が所定時間ごとに繰り返し実行する、故障情報書込み処理の一例を示している。ここで、電子制御装置１００のプロセッサ１２０は、コードフラッシュメモリ１４０に書き込まれているプログラムに従って、故障情報書込み処理を実行する。
【００２０】
ステップ１（図５では「Ｓ１」と略記する。以下同様。）では、電子制御装置１００のプロセッサ１２０が、電子制御装置１００の制御対象及びセンサなどに故障が発生したか否かを判定する。故障発生の有無は、例えば、自己診断機能、ＢＩＳＴ（Built-In Self Test）などを使用して判定することができる。そして、電子制御装置１００のプロセッサ１２０は、故障が発生したと判定すれば、処理をステップ２へと進める（Ｙｅｓ）。一方、電子制御装置１００のプロセッサ１２０は、故障が発生していないと判定すれば、故障情報書込み処理を終了させる（Ｎｏ）。
【００２１】
ステップ２では、電子制御装置１００のプロセッサ１２０が、図６に示すように、インアクティブＲＯＭに故障情報を書き込む。図６に示す一例では、電子制御装置１００のプロセッサ１２０は、故障情報として、インアクティブＲＯＭにＯＢＳ１〜９９及びＦＦＤ１〜９９を書き込んでいるが、その故障情報の種類及び個数は任意とすることができる。また、インアクティブＲＯＭへの故障情報の書き込みは、例えば、時系列で書き込むことができる。
【００２２】
このようにすれば、インアクティブＲＯＭが制御プログラム更新のために使用されないとき、インアクティブＲＯＭの記憶領域が故障情報の格納領域として利用される。従って、コードフラッシュメモリ１４０を効率的に利用することができる。また、故障情報がコードフラッシュメモリ１４０のインアクティブＲＯＭに書き込まれることから、従来技術において故障情報をバックアップＲＡＭに書き込んでいた場合と比較して、バックアップＲＡＭの容量を小さくすることが可能となって、電子制御装置１００のコストを低減することができる。なお、現状の法規では、制御プログラムを更新したときには故障情報が消失しても問題がなく、インアクティブＲＯＭを制御プログラム更新のために使用することを妨げない。コードフラッシュメモリ１４０のインアクティブＲＯＭに書き込まれた故障情報は、例えば、ＢＳＴ（Generic Scan Tool）などにより読み出され、故障発生の原因を特定することなどに利用することができる。
【００２３】
コードフラッシュメモリ１４０は、比較的大容量であるため、図７に示すように、インアクティブＲＯＭに故障発生時のＯＢＳ及びＦＦＤだけでなく、故障発生前の少なくとも１つのＯＢＳ及びＦＦＤ、故障発生後の少なくとも１つのＯＢＳ及びＦＦＤを書き込むこともできる。この場合、故障発生前のＯＢＳ及びＦＦＤは、ＲＡＭ１８０に時系列で一時的に保存しておく必要があるため、例えば、ＲＡＭ１８０の容量に応じた個数とすることができる。また、故障発生後のＯＢＳ及びＦＦＤは、インアクティブＲＯＭの容量などを考慮して、その個数を適宜決定することができる。このようにすれば、故障情報の取得期間及び頻度が増加し、故障発生の経緯や故障発生後の挙動を把握することが可能となり、故障原因の解析に役立つことができる。
【００２４】
アクティブＲＯＭ及びインアクティブＲＯＭのアドレス空間が同一の場合、アクティブＲＯＭに書き込まれている故障情報書込みプログラムで故障情報をインアクティブＲＯＭに書き込むことができない。この場合、図８に示すように、電子制御装置１００のプロセッサ１２０は、アクティブＲＯＭに書き込まれている故障情報書込みプログラムをＲＡＭ１８０に転送して実行する（手順（１））。ＲＡＭ１８０で実行された故障情報書込みプログラムは、アクティブＲＯＭとインアクティブＲＯＭとを排他的に切り替えるＲＯＭ切替スイッチを制御してインアクティブＲＯＭへのアクセスを可能とし（手順（２））、故障情報をインアクティブＲＯＭに書き込む（手順（３））。なお、故障情報書込みプログラムは、インアクティブＲＯＭへの故障情報の書き込みが完了したら、ＲＯＭ切替スイッチを制御してアクティブＲＯＭへのアクセスを可能にする。
【００２５】
コードフラッシュメモリ１４０のインアクティブＲＯＭを使用して制御プログラムを更新しても、インアクティブＲＯＭに書き込まれていた故障情報を継続して保持したい場合、次のようにすればよい。
【００２６】
図９は、ＯＴＡセンターＣＴＲにおいて、例えば、管理者によって制御プログラムの更新指示がなされたことを契機として、サーバーＳＶＲが実行するプログラム更新処理の一例を示している。なお、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、例えば、ハードディスクドライブなどのストレージに格納されたプログラムに従って、プログラム更新処理を実行する。
【００２７】
ステップ１１では、ＯＴＡセンターＣＴＲのサーバーＳＶＲが、車両ＶＨに故障情報を問い合わせる。ここで、故障情報の問い合わせは、例えば、制御プログラムの更新対象となる各車両ＶＨに対して行われる。
【００２８】
ステップ１２では、ＯＴＡセンターＣＴＲのサーバーＳＶＲが、車両ＶＨから故障情報を受信したか否かを判定する。そして、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、故障情報を受信したと判定すれば、処理をステップ１３へと進める（Ｙｅｓ）。一方、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、故障情報を受信していない、即ち、車両ＶＨのインアクティブＲＯＭに故障情報が書き込まれていないと判定すれば、処理をステップ１５へと進める（Ｎｏ）。
【００２９】
ステップ１３では、ＯＴＡセンターＣＴＲのサーバーＳＶＲが、車両ＶＨから受信した故障情報を、例えば、ハードディスクなどのストレージに車両ＶＨの識別子と関連付けた状態で一時的に記憶させる。なお、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、故障情報をクラウドサービスに記憶させることもできる。
【００３０】
ステップ１４では、ＯＴＡセンターＣＴＲのサーバーＳＶＲが、受信した故障情報を参照し、制御プログラムを更新することが可能であるか否かを判定する。即ち、ＯＴＡセンターＣＴＲのサーバーＳＶＲには、制御プログラムの更新が正常に行うことができない可能性がある車両ＶＨの故障として、図１０に示すように、故障情報に含まれる故障コードが少なくとも１つ格納されたテーブルＴＢＬが備えられている。そして、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、受信した故障情報に含まれる故障コードがテーブルＴＢＬに格納されているか否かを確認することで、制御プログラムを更新することが可能であるか否かを判定する。そして、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、制御プログラムの更新が可能であると判定すれば、処理をステップ１５へと進める（Ｙｅｓ）。一方、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、制御プログラムの更新が可能でないと判定すれば、プログラム更新処理を終了させる（Ｎｏ）。
【００３１】
ステップ１５では、ＯＴＡセンターＣＴＲのサーバーＳＶＲが、車両ＶＨに対して更新プログラムを送信する。ここで、更新プログラムが大きく１回の通信で送信できない場合、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、１回の通信で送信可能な所定サイズに更新プログラムを分割し、分割した更新プログラムを順次送信することができる。なお、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、更新プログラムの全体を送信せずに、アクティブＲＯＭに格納されている制御プログラムの差分を送信するようにしてもよい。
【００３２】
ステップ１６では、ＯＴＡセンターＣＴＲのサーバーＳＶＲが、車両ＶＨから制御プログラムの更新完了応答があったか否かを判定する。そして、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、更新完了応答があったと判定すれば、処理をステップ１７へと進める（Ｙｅｓ）。一方、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、更新完了応答がないと判定すれば、更新完了応答があるまで待機する（Ｎｏ）。
【００３３】
ステップ１７では、ＯＴＡセンターＣＴＲのサーバーＳＶＲが、車両ＶＨに対して、ストレージに一時的に記憶させておいた故障情報を送信する。即ち、車両ＶＨにおいて制御プログラムの更新が完了したので、ＯＴＡセンターＣＴＲのサーバーＳＶＲが故障情報を車両ＶＨに送信することで、車両ＶＨにおける故障情報を継続して利用することを可能にする。なお、故障情報の送信対象となる車両ＶＨのインアクティブＲＯＭに故障情報が書き込まれていなかった場合、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、車両ＶＨに対して、故障情報に代えて、故障情報が書き込まれていなかった旨を送信すればよい。
【００３４】
ＯＴＡセンターＣＴＲのサーバーＳＶＲは、車両ＶＨに故障情報を送信するとき、どのリビジョンの制御プログラムに関する故障情報であるかを特定可能とするため、故障情報に制御プログラムのリビジョン情報を付加することもできる。このようにすれば、異なるリビジョンの制御プログラムに関する故障情報が混在していても、そのリビジョン情報を参照することで、故障情報と制御プログラムとを紐付けすることができる。
【００３５】
図１１は、車両ＶＨの電子制御装置１００が故障情報問い合わせを受信したことを契機として、電子制御装置１００のプロセッサ１２０が実行する、故障情報返送処理の一例を示している。なお、電子制御装置１００のプロセッサ１２０は、コードフラッシュメモリ１４０に格納されているプログラムに従って、故障情報返送処理を実行する。
【００３６】
ステップ２１では、電子制御装置１００のプロセッサ１２０が、故障情報問い合わせを行ったＯＴＡセンターＣＴＲに対して、コードフラッシュメモリ１４０のインアクティブＲＯＭに書き込まれている故障情報を返送する。なお、電子制御装置１００のプロセッサ１２０は、インアクティブＲＯＭに故障情報が書き込まれていない場合、故障情報としてその旨を返送する。
【００３７】
図１２は、車両ＶＨの電子制御装置１００が更新プログラムを受信したことを契機として、電子制御装置１００のプロセッサ１２０が実行する、プログラム更新処理の一例を示している。なお、電子制御装置１００のプロセッサ１２０は、コードフラッシュメモリ１４０に格納されているプログラムに従って、プログラム更新処理を実行する。
【００３８】
ステップ３１では、電子制御装置１００のプロセッサ１２０が、受信した更新プログラムをインアクティブＲＯＭに書き込む。ここで、電子制御装置１００のプロセッサ１２０は、アクティブＲＯＭに格納されている制御プログラムの差分を受信した場合には、アクティブＲＯＭに格納されている制御プログラムにパッチを当てつつ、これをインアクティブＲＯＭに書き込むことができる。
【００３９】
ステップ３２では、電子制御装置１００のプロセッサ１２０が、所定のタイミングで、アクティブＲＯＭをインアクティブＲＯＭに切り替えると共に、インアクティブＲＯＭをアクティブＲＯＭに切り替える。ここで、所定のタイミングとは、例えば、電子制御装置１００の再起動時、アイドリングストップ時、駐車時など、切替時間に制御が不可又は不十分となっても支障がない状態となったタイミングとすることができる。従って、電子制御装置１００は、その後、更新された制御プログラムによって制御対象を制御することができる。
【００４０】
ステップ３３では、電子制御装置１００のプロセッサ１２０が、更新プログラムを送信したＯＴＡセンターＣＴＲに対して、制御プログラムの更新完了応答を返送する。なお、電子制御装置１００のプロセッサ１２０は、インアクティブＲＯＭへの更新プログラムの書き込みが正常に行われなかった場合、更新完了応答に代えて、更新プログラムの再送要求を送信するようにしてもよい。この場合、ＯＴＡセンターＣＴＲのサーバーＳＶＲは、再送要求に応答して、更新プログラムを再送すればよい。
【００４１】
ステップ３４では、電子制御装置１００のプロセッサ１２０が、ＯＴＡセンターＣＴＲから故障情報を受信したか否かを判定する。そして、電子制御装置１００のプロセッサ１２０は、故障情報を受信したと判定すれば、処理をステップ３５へと進める（Ｙｅｓ）。一方、電子制御装置１００のプロセッサ１２０は、故障情報を受信していない、即ち、故障情報が書き込まれていなかったと判定すれば、プログラム更新処理を終了させる（Ｎｏ）。
【００４２】
ステップ３５では、電子制御装置１００のプロセッサ１２０が、故障情報をインアクティブＲＯＭに書き込む。
【００４３】
このようにすれば、電子制御装置１００の制御プログラムを更新する場合、最初に、ＯＴＡセンターＣＴＲから車両ＶＨに対して故障情報が問い合わされる。故障情報が問い合わされた車両ＶＨの電子制御装置１００は、インアクティブＲＯＭに書き込まれている故障情報又は故障が書き込まれていない旨をＯＴＡセンターＣＴＲに返送する。ＯＴＡセンターＣＴＲは、故障情報を受信した場合、ストレージに故障情報を一時的に記憶すると共に、故障情報により特定される故障によって制御プログラムの更新が可能であるか否かを判定する。そして、ＯＴＡセンターＣＴＲは、制御プログラムの更新が可能であるか、故障情報が書き込まれていなければ、車両ＶＨの電子制御装置１００に対して更新プログラムを送信する。
【００４４】
更新プログラムを受信した車両ＶＨの電子制御装置１００は、インアクティブＲＯＭに更新プログラムを書き込み、所定のタイミングで、アクティブＲＯＭをインアクティブＲＯＭに切り替えると共に、インアクティブＲＯＭをアクティブＲＯＭに切り替える。そして、車両ＶＨの電子制御装置１００は、ＯＴＡセンターＣＴＲに対して、制御プログラムの更新完了応答を返送する。その後、車両ＶＨの電子制御装置１００は、ＯＴＡセンターＣＴＲから故障情報を受信すると、インアクティブＲＯＭに故障情報を書き込む。
【００４５】
要するに、車両ＶＨの電子制御装置１００は、制御プログラムを更新するとき、インアクティブＲＯＭに書き込まれている故障情報をＯＴＡセンターＣＴＲに送信し、ＯＴＡセンターＣＴＲから送信された更新プログラムをインアクティブＲＯＭに書き込む。また、車両ＶＨの電子制御装置１００は、アクティブＲＯＭをインアクティブＲＯＭに切り替えると共にインアクティブＲＯＭをアクティブＲＯＭに切り替え、ＯＴＡセンターＣＴＲから送信された故障情報をインアクティブＲＯＭに書き込む。
【００４６】
従って、車両ＶＨの電子制御装置１００は、コードフラッシュメモリ１４０に確保された２つの記憶領域を交互に使用して制御プログラムを更新しつつ、インアクティブＲＯＭに書き込まれていた故障情報を継続して利用することができる。
【００４７】
以上説明した実施形態では、コードフラッシュメモリ１４０に２つの記憶領域が確保されていたが、データフラッシュメモリ１６０に２つの記憶領域が確保されていたり、物理的に１つの不揮発性メモリに２つの記憶領域が確保されていたりしてもよい。また、インアクティブＲＯＭには、故障情報に限らず、又は故障情報に加え、学習値などの任意のデータを書き込むようにしてもよい。
【００４８】
なお、当業者であれば、様々な上記実施形態の技術的思想について、その一部を省略したり、その一部を適宜組み合わせたり、その一部を置換したりすることで、新たな実施形態を生み出せることを容易に理解できるであろう。
【符号の説明】
【００４９】
１００  電子制御装置
１２０  プロセッサ
１４０  コードフラッシュメモリ（不揮発性メモリ）
ＶＨ  車両
ＣＴＲ  ＯＴＡセンター
ＳＶＲ  サーバー（外部装置）
【図１】
2020126452.tif 000003
【図２】
2020126452.tif 000004
【図３】
2020126452.tif 000005
【図４】
2020126452.tif 000006
【図５】
2020126452.tif 000007
【図６】
2020126452.tif 000008
【図７】
2020126452.tif 000009
【図８】
2020126452.tif 000010
【図９】
2020126452.tif 000011
【図１０】
2020126452.tif 000012
【図１１】
2020126452.tif 000013
【図１２】
2020126452.tif 000014