(第1実施形態)
以下、本発明の第1実施形態について図1から図20を参照して説明する。車両用プログラム書換えシステムは、車両に搭載されているECUの車両制御や診断等のアプリプログラムをOTAにより書換え可能なシステムである。図1に示すように、車両用プログラム書換えシステム1は、通信ネットワーク2側のセンター装置3と、車両側の車両側システム4と、表示端末5とを有する。通信ネットワーク2は、例えば4G回線等による移動体通信ネットワークやインターネットやWiFi(Wireless Fidelity)(登録商標)等を含んで構成される。
表示端末5は、ユーザからの操作入力を受付ける機能や各種画面を表示する機能を有する端末であり、例えばユーザが携帯可能なスマートフォンやタブレット等の携帯端末6、車室内に配置されているナビゲーション機能を兼用するディスプレイやメータディスプレイ等の車載ディスプレイ7である。携帯端末6は、移動体通信ネットワークの通信圏内であれば、通信ネットワーク2に接続可能である。車載ディスプレイ7は、車両側システム4に接続されている。
ユーザは、車室外であって移動体通信ネットワークの通信圏内であれば、アプリプログラムの書換えに関与する各種画面を携帯端末6で確認しながら操作入力を行い、アプリプログラムの書換えに関与する手続きを可能である。ユーザは、車室内では、アプリプログラムの書換えに関与する各種画面を車載ディスプレイ7で確認しながら操作入力を行い、アプリプログラムの書換えに関与する手続きを可能である。即ち、ユーザは、車室外と車室内で携帯端末6と車載ディスプレイ7を使い分け、アプリプログラムの書換えに関与する手続きを可能である。
センター装置3は、車両用プログラム書換えシステム1において通信ネットワーク2側のOTAの機能を統括し、OTAセンターとして機能する。センター装置3は、ファイルサーバ8と、ウェブサーバ9と、管理サーバ10とを有し、各サーバ8~10が相互にデータ通信可能に構成されている。
ファイルサーバ8は、センター装置3から車両側システム4に送信されるアプリプログラムの管理機能を備え、アプリプログラムの提供事業者であるサプライヤ等から提供されるECUプログラム及びそれに付随する情報、OEM(Original Equipment Manufacturer)から提供される配信諸元データ、車両側システム4から取得する車両状態等を管理するサーバである。ファイルサーバ8は、通信ネットワーク2を介して車両側システム4との間でデータ通信可能であり、配信パッケージのダウンロード要求が発生すると、リプログデータと配信諸元データをパッケージ化した配信パッケージを車両側システム4に送信する。ウェブサーバ9は、ウェブ情報を管理するサーバであり、携帯端末6に対し、アプリプログラムの書換えに関与する各種画面を提供する。管理サーバ10は、アプリプログラムの書換えのサービスに登録しているユーザの個人情報等を管理し、車両毎のアプリプログラムの書換え履歴等を管理する。
車両側システム4は、マスタ装置11を有する。マスタ装置11は、DCM12とCGW13を有し、DCM12とCGW13が第1バス14を介してデータ通信可能に接続されている。DCM12は、センター装置3との間で通信ネットワーク2を介してデータ通信を行う車載通信機であり、ファイルサーバ8から配信パッケージをダウンロードすると、その配信パッケージから書込みデータを抽出してCGW13に転送する。
CGW13は、データ中継機能を有する車両用ゲートウェイ装置であり、DCM12から書込みデータを取得すると、その書込みデータを、アプリプログラムを書換える書換え対象ECUに配信する。マスタ装置11は、車両用プログラム書換えシステム1において車両側のOTAの機能を統括し、OTAマスタとして機能する。尚、図1では、DCM12と車載ディスプレイ7が同一の第1バス14に接続されている構成を例示しているが、DCM12と車載ディスプレイ7が別々のバスに接続されている構成でも良い。
CGW13には、第1バス14に加え、第2バス15、第3バス16、第4バス17、第5バス18が車内側のバスとして接続されており、バス15~17を介して各種ECU19が接続されていると共に、バス18を介して電源管理ECU20が接続されている。
第2バス15は、例えばボディ系ネットワークのバスである。第2バス15に接続されているECU19は、例えばドアのロック/アンロックを制御するドアECU、メータ表示を制御するメータECU、エアコンの駆動を制御するエアコンECU、ウィンドウの開閉を制御するウィンドウECU等のボディ系の制御を行うECUである。第3バス16は、例えば走行系ネットワークのバスである。第3バス16に接続されているECU19は、例えばエンジンの駆動を制御するエンジンECU、ブレーキの駆動を制御するブレーキECU、自動変速機の駆動を制御するECT(ETC(Electronic Toll Collection System、登録商標))ECU、パワーステアリングの駆動を制御するパワーステアリングECU等の走行系の制御を行うECUである。
第4バス17は、例えばマルチメディア系ネットワークのバスである。第4バス17に接続されているECU19は、例えばナビゲーションシステムを制御するためのナビゲーションECU、電子式料金収受システム,すなわちECTシステムを制御するETCECU等のマルチメディア系の制御を行うECUである。バス15~17は、ボディ系ネットワークのバス、走行系ネットワークのバス、マルチメディア系ネットワークのバス以外の系統のバスであっても良い。また、バスの本数やECU19の個数は例示した構成に限らない。
電源管理ECU20は、DCM12、CGW13、各種ECU19等の電源管理を行う機能を有するECUである。
CGW13には、第6バス21が車外側のバスとして接続されている。第6バス21には、ツール23が着脱可能に接続されるDLC(Data Link Coupler)コネクタ22が接続されている。車内側のバス14~18及び車外側のバス21は、例えばCAN(Controller Area Network、登録商標)バスにより構成されており、CGW13は、CANのデータ通信規格や診断通信規格(UDS:ISO14229)にしたがってDCM12、各種ECU19、ツール23との間でデータ通信を行う。尚、DCM12とCGW13がイーサーネットにより接続されていても良いし、DLCコネクタ22とCGW13がイーサーネットにより接続されても良い。
書換え対象ECU19は、CGW13から書込みデータを受信すると、その書込みデータをフラッシュメモリに書込んでアプリプログラムを書換える。上記した構成では、CGW13は、書換え対象ECU19から書込みデータの取得要求を受信すると、書込みデータを書換え対象ECU19に配信するリプログマスタとして機能する。書換え対象ECU19は、CGW13から書込みデータを受信すると、その書込みデータをフラッシュメモリに書込んでアプリプログラムを書換えるリプログスレーブとして機能する。
アプリプログラムを書換える態様としては、有線で書換える態様と、無線で書換える態様とがある。アプリプログラムを有線で書換える態様では、ツール23がDLCコネクタ22に接続されると、ツール23は、書込みデータをCGW13に転送する。CGW13は、ツール23から転送された書込みデータを書換え対象ECU19に中継又は配信する。アプリプログラムを無線で書換える態様では、上記したように、DCM12は、ファイルサーバ8から配信パッケージをダウンロードすると、その配信パッケージから書込みデータを抽出し、その書込みデータをCGW13に転送する。
図2に示すように、CGW13は、電気的な機能ブロックとして、マイクロコンピュータ(以下、マイコンと称する)24と、データ転送回路25と、電源回路26と、電源検出回路27とを有する。マイコン24は、CPU(Central Processing Unit)24aと、ROM(Read Only Memory)24bと、RAM(Random Access Memory)24cと、フラッシュメモリ24dとを有する。マイコン24は、非遷移的実体的記憶媒体に格納されている各種制御プログラムを実行して各種処理を行い、CGW13の動作を制御する。
データ転送回路25は、バス14~18,21との間のCANのデータ通信規格や診断通信規格に準拠したデータ通信を制御する。電源回路26は、バッテリ電源(以下、+B電源と称する)、アクセサリ電源(以下、ACC電源と称する)、イグニッション電源(以下、IG電源と称する)を入力する。電源検出回路27は、電源回路26が入力する+B電源の電圧値、ACC電源の電圧値、IG電源の電圧値を検出し、これらの検出した電圧値を所定の電圧閾値と比較し、その比較結果をマイコン24に出力する。マイコン24は、電源検出回路27から入力する比較結果により、外部からCGW13に供給されている+B電源、ACC電源、IG電源が正常であるか異常であるかを判定する。
図3に示すように、ECU19は、電気的な機能ブロックとして、マイコン28と、データ転送回路29と、電源回路30と、電源検出回路31とを有する。マイコン28は、CPU28aと、ROM28bと、RAM28cと、フラッシュメモリ28dとを有する。マイコン28は、非遷移的実体的記憶媒体に格納されている各種制御プログラムを実行して各種処理を行い、ECU19の動作を制御する。
データ転送回路29は、バス15~17との間のCANのデータ通信規格に準拠したデータ通信を制御する。電源回路30は、+B電源、ACC電源、IG電源を入力する。電源検出回路31は、電源回路30が入力する+B電源の電圧値、ACC電源の電圧値、IG電源の電圧値を検出し、これらの検出した電圧値を所定の電圧閾値と比較し、その比較結果をマイコン28に出力する。マイコン28は、電源検出回路27から入力する比較結果により、外部からECU19に供給されている+B電源、ACC電源、IG電源が正常であるか異常であるかを判定する。尚、ECU19は、接続する例えばセンサやアクチュエータ等の負荷が異なり、基本的には同等の構成である。また、DCM12、車載ディスプレイ7、及び電源管理ECUも、基本構成は図3に示すECU19と同様である。
図4に示すように、電源管理ECU20、CGW13、ECU19は、+B電源ライン32、ACC電源ライン33、IG電源ライン34に接続されている。+B電源ライン32は、車両バッテリ35の正極に接続されている。ACC電源ライン33は、ACCスイッチ36を介して車両バッテリ35の正極に接続されている。ユーザがACC操作を行うと、ACCスイッチ36がオフからオンに切替わり、車両バッテリ35の出力電圧がACC電源ライン33に印加される。ACC操作とは、例えばキーを差込口に挿入する型の車両であれば、キーを差込口に挿入して「OFF」位置から「ACC」位置に回動する操作であり、スタートボタンを押下する型の車両であれば、スタートボタンを1回押下する操作である。
IG電源ライン34は、IGスイッチ37を介して車両バッテリ35の正極に接続されている。ユーザがIG操作を行うと、IGスイッチ37がオフからオンに切替わり、車両バッテリ35の出力電圧がIG電源ライン34に印加される。IG操作とは、例えばキーを差込口に挿入する型の車両であれば、キーを差込口に挿入して「OFF」位置から「ON」位置に回動する操作であり、スタートボタンを押下する型の車両であれば、スタートボタンを2回押下する操作である。車両バッテリ35の負極は接地されている。
ACCスイッチ36とIGスイッチ37の両方がオフであるときには、+B電源だけが車両側システム4に供給される。+B電源だけが車両側システム4に供給されている状態を+B電源状態と称する。ACCスイッチ36がオンであり、IGスイッチ37がオフであるときには、ACC電源と+B電源が車両側システム4に供給される。ACC電源と+B電源が車両側システム4に供給されている状態をACC電源状態と称する。ACCスイッチ36とIGスイッチ37の両方がオンであるときには、+B電源とACC電源とIG電源が車両側システム4に供給される。+B電源とACC電源とIG電源が車両側システム4に供給されている状態をIG電源状態と称する。
ECU19は、電源状態に応じて起動条件が異なり、+B電源状態で起動する+B系ECU、ACC電源状態で起動するACC系ECU、IG電源状態で起動するIG系ECUに区分される。例えば車両盗難等の用途で駆動するECU19は+B系ECUである。例えばオーディオ等の非走行系の用途で駆動するECU19はACC系ECUである。例えばエンジン制御等の走行系の用途で駆動するECU19はIG系ECUである。
CGW13は、スリープ状態にあるECU19に対して起動要求を送信することで、その起動要求の送信先のECU19をスリープ状態から起動状態に移行させる。また、CGW13は、起動状態にあるECU19に対してスリープ要求を送信することで、そのスリープ要求の送信先のECU19を起動状態からスリープ状態に移行させる。CGW13は、例えばバス15~17に送信する送信信号の波形を異ならせることで、起動要求やスリープ要求の送信先のECU19を複数のECUの中から選択する。
ACCスイッチ36及びIGスイッチ37に対して電源制御回路38が並列接続されている。CGW13は、電源制御要求を電源管理ECU20に送信し、電源管理ECU20に電源制御回路38を制御させる。即ち、CGW13は、電源制御要求として電源起動要求を電源管理ECU20に送信し、ACC電源ライン33やIG電源ライン34と車両バッテリ35の正極を電源制御回路38の内部で接続させる。この状態では、ACCスイッチ36やIGスイッチ37がオフであってもACC電源やIG電源が車両側システム4に供給される。CGW13は、電源制御要求として電源停止要求を電源管理ECU20に送信し、ACC電源ライン33やIG電源ライン34と車両バッテリ35の正極を電源制御回路38の内部で途絶させる。
DCM12、CGW13、ECU19は、電源自己保持機能を有する。即ち、DCM12、CGW13、ECU19は、起動状態にあるときに車両電源がACC電源又はIG電源から+B電源に切替わると、その切替わった直後に起動状態からスリープ状態又は停止状態に移行するのではなく、その切替わった直後でも起動状態を所定時間に亘って継続して駆動電源を自己保持する。DCM12、CGW13、ECU19は、車両電源がACC電源又はIG電源から+B電源に切替わった直後から所定時間(例えば数秒)が経過した後に起動状態からスリープ状態又は停止状態に移行する。
次に、センター装置3からマスタ装置11に配信される配信パッケージについて図5から図6を参照して説明する。車両用プログラム書換えシステム1においては、アプリプログラムの提供事業者であるサプライヤから提供される書込みデータと、主にOEMから提供される書換え諸元データとからリプログデータが生成される。サプライヤから提供される書込みデータとしては、旧アプリプログラムと新アプリプログラムとの差分に相当する差分データと、新アプリプログラムの全体に相当する全データとがある。差分データや全データは周知のデータ圧縮技術により圧縮されていても良い。図5では、サプライヤA~Cから書込みデータとして差分データが提供され、サプライヤAから提供されるECU(ID1)の暗号済みの差分データと認証子、サプライヤBから提供されるECU(ID2)の暗号済みの差分データと認証子、サプライヤCから提供されるECU(ID3)の暗号済みの差分データと認証子、OEMから提供される書換え諸元データからリプログデータが生成されている場合を例示している。認証子は書込みデータ毎に付与されている。
尚、図5では、旧アプリプログラムから新アプリプログラムに更新する際の差分データを示しているが、新アプリプログラムから旧アプリプログラムに書き戻すためのロールバック用差分データを、合わせてリプログデータに含める構成としても良い。例えば、書換え対象ECU19が1面メモリの場合、リプログデータにロールバック用差分データを含める。
OEMから提供される書換え諸元データは、アプリプログラムの書換えに関与する情報として、書換え対象ECU19を特定可能な情報、書換え対象ECU19が複数であるときの書換え順序を特定可能な情報、後述するロールバック方法を特定可能な情報等を含み、DCM12やCGW13や書換え対象ECU19における書換えに関与する動作を定義するデータである。書換え諸元データは、DCM12が使用するDCM用の書換え諸元データと、CGW13が使用するCGW用の書換え諸元データとに区分される。DCM用の書換え諸元データには、書換え対象ECU19に対応するファイルの読出しに必要な情報が記載されている。CGW用書換え諸元データには、上述のように、書換え対象ECU19における書換えを制御するために必要な情報が記載されている。
DCM12は、DCM用の書換え諸元データを取得すると、そのDCM用の書換え諸元データを解析し、その解析結果にしたがってCGW13への書込みデータの転送等の書換えに関与する動作を制御する。CGW13は、CGW用の書換え諸元データを取得すると、そのCGW用の書換え諸元データを解析し、その解析結果にしたがってDCM12からの書込みデータの取得や書換え対象ECU19への書込みデータの配信等の書換えに関与する動作を制御する。
ファイルサーバ8には、上記したリプログデータが登録されると共に、OEMから提供される配信諸元データが登録される。OEMから提供される配信諸元データは、表示端末5における各種画面の表示に関与する動作を定義するデータである。
ファイルサーバ8は、リプログデータと配信諸元データが登録されると、リプログデータを暗号化し、パッケージを認証するためのパッケージ認証子と、暗号済みのリプログデータと、配信諸元データとを1つのファイルにパッケージングした配信パッケージを生成する。ファイルサーバ8は、外部から配信パッケージのダウンロード要求を受信すると、その配信パッケージをDCM12に送信する。尚、ファイルサーバ8は、図5では、リプログデータと配信諸元データを格納した配信パッケージを生成し、リプログデータと配信諸元データを同時にDCM12に送信する場合を例示しているが、リプログデータと配信諸元データを別々にDCM12に送信しても良い。即ち、ファイルサーバ8は、先に配信諸元データをDCM12に送信し、後からリプログデータをDCM12に送信しても良い。また、ファイルサーバ8は、リプログデータと配信諸元データとを1つのファイルである配信パッケージとし、配信パッケージとパッケージ認証子とをDCM12へ送信しても良い。
DCM12は、ファイルサーバ8から配信パッケージをダウンロードすると、その配信パッケージに格納されているパッケージ認証子と、暗号済みのリプログデータとを検証し、検証結果が正であると、暗号済みのリプログデータを復号化する。DCM12は、暗号済みのリプログデータを復号化すると、その復号化したリプログデータをアンパッケージングし、ECU毎の暗号済みの差分データと認証子、DCM用の書換え諸元データ、CGW用の書換え諸元データを生成する。図6では、ECU(ID1)の暗号済みの差分データと認証子、ECU(ID2)の暗号済みの差分データと認証子、ECU(ID3)の暗号済みの差分データと認証子、書換え諸元データを生成する場合を例示している。
図7は、センター装置3における主としてサーバ8~10の各機能に係る部分をブロック図化して示す。また図8は、センター装置3がECUのプログラム更新に関して行う処理の概要を示す。尚、以下では「データベース」を「DB」と表記することがある。図7に示すように、センター装置3は、パッケージ管理部3A,構成情報管理部3B,個車情報管理部3C及びキャンペーン管理部3Dを備えている。パッケージ管理部3Aは、諸元データ生成部201,パッケージ生成部202及びパッケージ配信部203と、ECUリプロデータDB204,ECUメタデータDB205及びパッケージDB206とを有している。構成情報管理部3Bは、構成情報登録部207及び構成情報DB208を有している。
サプライヤは、管理サーバ10のユーザインターフェイス(UI)機能である入力部218及び表示部219を用いて、ECU個別のデータを登録する。ECU個別のデータとして、新プログラムや差分データ等のプログラムファイル、プログラムファイルの検証データやサイズ、暗号化方式等のプログラムファイル関連情報、及びECU19のメモリ構造などECU属性情報に関するものなどがある。プログラムファイルは、ECUリプロデータDB204に記憶される。ECU属性情報は、ECUメタデータDB205に記憶される。プログラムファイル関連情報は、ECUリプロデータDB204に記憶されてもよいし、ECUメタデータDB205に記憶されても良い。ECUリプログデータDB204は、更新データ記憶部の一例である。また、ECUメタデータDB205は、装置関連情報記憶部の一例である。
OEMは、構成情報登録部207を介して、車両型式ごとに、正規の構成情報を構成情報DB208に登録する。正規の構成情報とは、公的な機関により認可された車両の構成情報である。構成情報は、車両に搭載されるECU19のハードウェア及びソフトウェアに関する識別情報であり、車両関連情報の一例である。構成情報には、複数のECU19から成るシステム構成の識別情報や、複数のシステムから成る車両構成の識別情報も含まれる。また、構成情報として、プログラムの更新に関する車両の制約情報を登録しても良い。例えば、書換え諸元データに記載されるECUのグループ情報,バス負荷テーブル,バッテリ負荷に関する情報等を登録しても良い。ECUメタデータDB205は、装置関連情報記憶部の一例である。また、構成情報DB208は、車両情報記憶部の一例である。
諸元データ生成部201は、各DBを参照し、書換え諸元データを生成する。パッケージ生成部202は、書換え諸元データとリプログデータとを含む配信パッケージを生成し、パッケージDB206に登録する。パッケージ生成部202は、配信諸元データを含めて配信パッケージを生成しても良い。パッケージ配信部203は、登録された配信パッケージを車両側システム4に配信する。配信パッケージはファイルに相当する。
個車情報管理部3Cは、個車情報登録部209,構成情報確認部210,更新有無確認部211及びSMS送信制御部212と、個車情報DB213とを有している。個車情報登録部209は、個々の車両よりアップロードされる個車情報を個車情報DB213に登録する。個車情報登録部209は、初期値として、車両生産又は販売時点での個車情報を、個車情報DB213に登録しても良い。構成情報確認部210は、アップロードされる個車情報の登録を行う際に、個車情報を、構成情報DB208に登録されている同一型式車両の構成情報と照合。更新有無確認部211は、個車情報について新たなプログラムによる更新の有無、すなわちキャンペーンの有無を確認する。SMS送信制御部212は、個車情報が更新されている場合は、更新に関するメッセージを対応する車両にSMS(Short Message Service)により送信する。
キャンペーン管理部3Dは、キャンペーン生成部214,キャンペーン配信部215及び指示通知部216とキャンペーンDB217とを備えている。OEMは、キャンペーン生成部214によりプログラム更新に関する情報であるキャンペーン情報を生成して、キャンペーンDB217に登録する。尚、ここでのキャンペーン情報は、前述した「配信諸元データ」に相当し、主に車両側システム4で表示する更新内容に関する情報である。キャンペーン配信部215は、キャンペーン情報を車両に配信する。指示通知部216は、プログラム更新に関連して必要な指示を車両に通知する。車両側システム4では、センター装置3より送信されたキャンペーン情報に基づいて、更新プログラムのダウンロードを行うか否かを例えばユーザが判断し、必要であればダウンロードを行う。
尚、各管理部3A~3Dの各データベースを除く部分は、コンピュータのハードウェア及びソフトウェアにより実現されている機能である。
車両通信部222は、センター装置3と車両側システム4との間で無線により相互にデータ通信を行うための機能ブロックである。
以下、上記の処理についてより詳細に説明するが、先ず各データベースに登録されるデータの内容を説明する。図9に示すように、構成情報DB208には、一例として以下のデータが登録される。「車両型式」は車種を示す。「Vehicle SW ID」は、車両全体に対するソフトウェアIDであり、車両ソフトウェアIDに相当する。「Vehicle SW ID」は各車両に1つだけ付与され、何れか1つ以上のECUのアプリプログラムのバージョンが更新されるのに伴い更新される。「Sys ID」は、各車両に搭載されている複数のECU19のグループを「システム」とすると、そのシステムのIDである。
例えば、図1において、ボディ系ECU19のグループがボディ系システム、走行系ECU19のグループが走行系システムである。「Sys ID」は、システムを構成する何れか1つ以上のECUのアプリプログラムのバージョンが更新されるのに伴い更新される。「ECU ID」は、各ECUの種別を示す装置識別用のIDである。「ECU SW ID」は、各ECUに対するソフトウェアIDであり、ECUソフトウェアIDに相当する。ここでは便宜上、「ECU ID」にソフトウェアのバージョンを付したもので示している。「ECU SW ID」は、当該ECUのアプリプログラムのバージョンが更新されるのに伴い更新される。また、同一の「ECU ID」で同一のプログラムバージョンであったとしても、ハードウェア構成が異なる場合は、異なる「ECU SW ID」を用いる。即ち、「ECU SW ID」はECUの品番を示す情報でもある。
図9では、「車両型式」=「aaa」の車両に関する構成情報を示している。車両に搭載されるECU19のうち、自動運転ECU(ADS)、エンジンECU(ENG)、ブレーキECU(BRK)、及び電動パワーステアリングECU(EPS)を例示している。
例えば、「Vehicle SW ID」=「0001」の「ECU SW ID」が、「ads_001」,「eng_010」,「brk_001」,「eps_010」であるのに対し、「Vehicle SW ID」=「0002」の「ECU SW ID」は、「ads_002」,「eng_010」,「brk_005」,「eps_011」であり、3つのソフトウェアバージョンが更新されている。これに伴い、「Sys ID」=「SA01」は「SA02」に更新され、「Sys ID」=「SA02」は「SA03」に更新される。このように、構成情報DB208には、車両の生産又は販売時点で初期値が登録され、その後、何れか1つ以上のECUのアプリプログラムのバージョンが更新されるのに伴い更新される。すなわち、構成情報DB208は、各車両型式について、市場で正規に存在する構成情報を示す。
図10に示すように、ECUリプロデータDB204には、一例として以下のプログラムやデータが登録される。図10では、ある車両型式に搭載されるECU19のうち、アプリプログラムが更新されるECU19として、自動運転ECU(ADS)、ブレーキECU(BRK)、及び電動パワーステアリングECU(EPS)を例示している。これら更新対象ECU19の最新の「ECU SW ID」について、ECUの旧プログラム及び新プログラムファイル,新プログラムの完全性検証データ,新プログラムと旧プログラムとの差分データである更新データファイル,更新データの完全性検証データ,同じく差分データであるロールバックデータファイル,ロールバックデータの完全性検証データ等が登録される。完全性検証データは、データ値にハッシュ関数を適用して得られるハッシュ値である。尚、更新データを、差分データに替えて新プログラムの全データとする際には、更新データの完全性検証データは、新プログラムの同データに等しくなる。
尚、図10では、最新の「ECU SW ID」についてのデータ構造を示したが、古い「ECU SW ID」についてのデータが保存されている場合、旧プログラムファイルについては、1つ古い「ECU SW ID」の新プログラムファイルを参照するよう構成しても良い。また、各完全性検証データは、サプライヤにて演算した値を登録する形式としても良いし、センター装置3が演算して登録する形式としても良い。
図11に示すように、ECUメタデータDB205には、一例として以下に示すECU個別の諸元データが登録される。最新の「ECU SW ID」について、更新データファイルのサイズ,ロールバックデータファイルのサイズ,ECU19が備えるフラッシュメモリ28dが2面以上の構成である場合に、A面,B面,C面等何れの面用のプログラムであるかを示す面情報,転送サイズ,プログラムファイルの読出し用アドレス等である。これらは更新データ関連情報の一例である。
また、ECUメタデータDB205には、ECU19の属性を示す属性情報も登録される。属性情報とは、ECUに関するハードウェア属性、及びソフトウェア属性を示す情報である。「転送サイズ」は、CGW13からECU19へ書換えデータを分割して転送する際の転送サイズ、「鍵」は、CGW13がECU19へセキュアにアクセスする際に用いる鍵である。これらは、ソフトウェア属性情報の一例である。また、「車両型式」及び「ECU ID」について、ECU19が備えるフラッシュメモリ28dのメモリ構成,ECU19が接続されているバス種別,ECU19に接続されている電源の種類なども含まれる。これらは、ハードウェア属性情報の一例である。
ここで、メモリ構成「1面」はフラッシュ面を1面で持つ1面単独方式メモリであり、「2面」はフラッシュ面を2面で持つ2面メモリであり、「サスペンド」はフラッシュ面を疑似的な2面で持つ1面サスペンド方式メモリである。ハードウェア属性情報及びソフトウェア属性情報は、車両側システム4において、個々のECU19の書換え制御に用いられる情報である。ハードウェア属性情報は、予めCGW13が記憶しておくことも可能であるが、本実施例では、車両側システム4での管理負荷を軽減するため、センター装置3にて管理することとした。また、ソフトウェア属性情報は、個々のECU19の書換え動作を直接指定するデータである。車両側システム4における柔軟な制御が実現できるよう、センター装置3にて管理することとした。
図12に示すように、個車情報DB213には、一例として以下に示す個車毎のデータが登録される。主に、個車毎の構成情報や、プログラム更新に対する個車のステータス情報が登録される。具体的には、各車両のIDである「VIN」について、構成情報である「Vehicle SW ID」,「Sys ID」,「ECU ID」,「ECU SW ID」等である。これら構成情報についてのハッシュ値である「Digest」値も、センター装置3にて演算され、記憶される。「運用面」は、メモリ構成が2面である場合に、ECU19が現在運用しているプログラムが書き込まれている面であり、構成情報とともにアップロードされた値が登録される。
「アクセスログ」は、車両が個車情報をセンター装置3にアップロードした年月日及び時刻である。「リプロステータス」は、車両におけるリプログのステータスを示し、例えば「キャンペーン発行済み」,「アクティベート完了」,「ダウンロード完了」等がある。つまり、この進捗ステータスにより、車両におけるリプログが、どのフェーズまで進み、どのフェーズで停滞しているかが分かる。尚、車両側システム4よりセンター装置3に対して構成情報等がアップロードされる際には、その情報等に各車両の「VIN」が付与される。
図13に示すように、パッケージDB206には、配信パッケージのID,配信パッケージファイル及び配信パッケージの完全性検証用のデータが登録される。
図14に示すように、キャンペーンDB217には、以下のデータが登録される。キャンペーン情報のID,配信パッケージID,キャンペーン内容として具体的な更新内容を示すテキスト文等のメッセージ情報,キャンペーンの対象となる車両のIDである「VIN」のリスト,更新前後の「Vehicle SW ID」,更新前後の「ECU SW ID」のリスト等である。「対象VIN」リストは、個車情報DB213とキャンペーンDB217とを照合して登録することができる。尚、これらのキャンペーン情報は、パッケージDB206に併せて登録しても良い。
次に、本実施形態の作用について説明する。図15では、パッケージ管理部3AにおけるECUリプロデータDB204への登録処理について説明する。図15に示すように、表示部219及び入力部218は、管理サーバ10のリプロデータ登録用の画面を起動し、サプライヤの作業者からECU19の新旧プログラムファイルの入力を受け付ける(A1)。例えば、構成情報をCSV形式等で記入したファイルを、ファイルとして登録させるUI等を用いても良い。続いて、パッケージ管理部3Aは、新プログラムの完全性検証データを生成し(A2)、更新用の差分データとして旧プログラムをベースとして新プログラムへ更新する際の差分データファイル及び更新用差分データの完全性検証データを生成する(A3,A4)。
次に、ロールバック用の差分データとして新プログラムをベースとして旧プログラムへ更新する際の差分データファイル及び当該データの完全性検証データを生成する(A5,A6)。これらのプログラムファイル及び検証データをECUリプロデータDB204に登録すると共に、1つ古い「ECU SW ID」に基づいて新たな「ECU SW ID」を生成し、登録する(A7)。ここで、差分でなく全データを配信する場合は、差分データに関するステップは省略可能である。
完全性検証データは、例えばハッシュ関数を適用して生成されるハッシュ値である。例えばハッシュ関数としてSHA-256(Secure Hash Algorithm 256-bit)を用いる場合は、データ値を64バイト毎にメッセージブロックに区切る。そして、初期ハッシュ値に対して最初のメッセージブロックのデータ値を適用し、32バイト長のハッシュ値を得ると、そのハッシュ値に次のメッセージブロックのデータ値を適用し、同様に32バイト長のハッシュ値を得ることを順次繰り返す。
図16では、諸元データ生成部201における書換え諸元データの生成処理について説明する。ここでは、「車両型式」=「aaa」の車両に対する書換え諸元データの生成処理について説明するが、他の車両についても同様である。
センター装置3は、諸元データ生成部201の諸元データ生成プログラムを起動し、表示部219及び入力部218を介してOEMの作業者からの入力を受付ける。先ず、諸元データ生成部201は、更新対象とするECU19を決定する。図16に示すように、諸元データ生成部201は、ECUリプロデータDB204にアクセスして、登録されている「ECU SW ID」のうち、更新対象とするものを選択できる表示画面を表示部219に出力する。諸元データ生成部201は、入力部218を介してOEMの作業者により選択された1以上の「ECU SW ID」を、特定のECU順序で保持する(B1)。ここでECU順序とは、車両側システム4におけるECU19の書換え順序を示すものである。諸元データ生成部201は、OEMの作業者により指定された順番を特定のECU順序とする。
また、諸元データ生成部201は、構成情報DB208にアクセスして、OEMの作業者からの入力を受けることなく、更新対象とするECU19を決定しても良い。諸元データ生成部201は、最新の「Vehicle SW ID」に対する「ECU SW ID」と、1つ古い「Vehicle SW ID」に対する「ECU SW ID」とを参照し、更新のあったECU19を抽出する。例えば、図9において、「ADS」「BRK」「EPS」が更新対象ECU19である。諸元データ生成部201は、構成情報DB208に登録されている順番を、特定のECU順序とする。
そして、諸元データ生成部201は、更新対象とする複数の「ECU SW ID」を有するECUについてグループ情報を生成する(B2)。ここでは、構成情報DB208を参照し、「Sys ID」を用い、例えばグループ1を「Sys ID」が「SA01_02」である「ECU ID」でまとめ、グループ2を「Sys ID」が「SA02_02」である「ECU ID」でまとめる。例えば、図9において、グループ1を「ADS」とし、グループ2を1番目が「BRK」、2番目が「EPS」とする。このように、諸元データ生成部201は、更新対象とするECUと、ECUの属するグループと、グループ内のECU順序とを決定する。
次に、諸元データ生成部201は、ECUメタデータDB205にアクセスして、更新対象としたECU19に関する諸元データとして、更新データ関連情報、ハードウェア属性情報、及びソフトウェア属性情報を取得する(B3)。例えば図17に示すように、更新データ関連情報は、「更新プログラムバージョン」「更新プログラム取得アドレス」「更新プログラムサイズ」「ロールバックプログラムバージョン」「ロールバックプログラム取得アドレス」「ロールバックプログラムサイズ」「書込みデータ種別」「書込み面」である。ハードウェア属性情報は、「接続バス」「接続電源」「メモリ種別」である。ソフトウェア属性情報は、「書換え面情報」「セキュリティアクセス鍵情報」「書換え方法」「転送サイズ」である。「書換え方法」とは、IGオンからオフに切り替わった際、電源自己保持回路を有効として書換えを行うか(電源自己保持)、それとも、IGオン及びIGオフに従って書換えを行うか(電源制御)、を示すデータである。「セキュリティアクセス鍵情報」として、鍵以外の情報を含めても良い。
以下、各情報について説明する。
・「書込みデータ種別」は、プログラムが差分データか全データかを示す種別である。更新プログラムに対する書込みデータ種別と、ロールバックプログラムに対する書込みデータ種別とを別々に記載しても良い。
・「書込み面」は、2面メモリのECU19に対し、いずれの面に書込むためのプログラムかを示す情報である。
・「接続バス」は、ECU19が接続されるバスを識別する情報である。
・「接続電源」は、ECU19が接続される電源状態を示す情報であり、バッテリ電源(+B電源)、アクセサリ電源(ACC電源)、及びイグニッション電源(IG電源)のいずれかを示す値が記載される。
・「メモリ種別」は、ECU19のメモリ構成を識別する情報であり、2面メモリ、1面サスペンド方式メモリ(疑似2面メモリ)、及び1面メモリ等を示す値が記載される。
・「書換え面情報」は、ECU19のいずれの面が起動面(運用面)で、いずれの面が書換え面(非運用面)であるかを示す情報である。
・「セキュリティアクセス鍵情報」は、鍵を用いてECU19へのアクセス認証を行うための情報であり、鍵導出鍵、鍵パターン、及び復号演算パターンの情報を含む。
・「転送サイズ」は、ECU19へプログラムを分割して転送する際のデータサイズである。
これらの情報は、例えば図17に示すように、「ECU ID」をキーとして、上述した特定のECU順序として保持する。諸元データ生成部201は、全てのECUについて情報を取得すると(B4;YES)、更新対象となる車両について「書換え環境情報」を指定する(B5)。「書換え環境情報」とは、ECUのグループ又は車両全体を対象とした、車両側システム4における書換え制御に用いられる情報であって、書換え動作を直接指定するデータである。例えば、車両全体を対象とした書換え環境情報としては、車両側システム4におけるプログラム更新を車両の走行中(IGスイッチのオン中)に行うか駐車中(IGスイッチのオフ中)に行うかを示す「車両状態」、車両側システム4においてプログラム更新を実行可能なバッテリ残量の制約を示す「バッテリ負荷(バッテリの残量)」,車両側システム4において書込みデータを転送可能なバス負荷の制約を示すバス負荷テーブル情報等である。
また、グループを対象とした書換え環境情報としては、そのグループに属するECU19及びグループ内のECU順序等である。車両側システム4では、プログラム更新がグループ単位で同期するよう制御し、指定されたECU順序でECU19への書込みを実行する。諸元データ生成部201は、書換え環境情報登録用の画面を起動し,OEMの作業者から入力を受付ける。または、書換え環境情報が入力されたエクセル(登録商標)をインポートする形式としても良い。または、構成情報DB208に登録された制約情報を抽出する形式としても良い。なお、諸元データ生成部201は、グループを対象とした書換え環境情報としては、上述したステップB2の生成結果を用いる。
バス負荷テーブルは、電源状態とバスの伝送許容量との対応関係を示すテーブルである。図18に示すように、伝送許容量は、最大伝送許容量に対して伝送可能な車両制御データと書込みデータとの伝送量の合計である。この例示では、第1バスについて、伝送許容量が最大伝送許容量に対して「80%」であるので、CGW13は、IG電源状態では、車両制御データの伝送許容量として最大伝送許容量に対して「50%」を許容し、書込みデータの伝送許容量として最大伝送許容量に対して「30%」を許容する。また、CGW13は、ACC電源状態では、車両制御データの伝送許容量として最大伝送許容量に対して「30%」を許容し、書込みデータの伝送許容量として最大伝送許容量に対して「50%」を許容する。また、CGW13は、+B電源状態では、車両制御データの伝送許容量として最大伝送許容量に対して「20%」を許容し、書込みデータの伝送許容量として最大伝送許容量に対して「60%」を許容する。第2バス及び第3バスについても同様である。
最後に、諸元データ生成部201は、生成又は取得した各データを、予め定められた所定のデータ構造に合せて配置し、図17に示すような書換え諸元データを生成する(B6)。すなわち、諸元データ生成部201は、車両側システム4で解釈可能なデータ構造にて書換え諸元データを生成する。なお、各ECU情報については、グループの若い順かつグループ内ECU順序に従って書換え諸元データに記載すると良い。例えば、図9において、グループ1を「ADS」とし、グループ2を1番目が「BRK」、2番目が「EPS」とする場合、諸元データのECU情報欄は、最初に「ADS」のECU情報、次に「BRK」のECU情報、最後に「EPS」のECU情報が並ぶこととなる。
図17に示す諸元データにおいて、ECU情報の「ECU ID」~「転送サイズ」は、対象ECU19の種別を含む対象装置関連情報の一例であり、上述したハードウェア属性情報及びソフトウェア属性情報に対応する。また、「更新プログラムバージョン」~「書込み面」は更新データ関連情報の一例である。また、ECUのグループ又は車両全体を対象とした「書換え環境」は、車両における更新処理を指定する更新処理情報の一例である。
図19では、パッケージ生成部202におけるパッケージ生成処理について説明する。前述と同様、ここでは、「車両型式」=「aaa」の車両に対するパッケージ生成処理について説明する。図19に示すように、作業者の指示を契機として、センター装置3はパッケージ管理部3Aのパッケージ生成部202を起動する。パッケージ生成部202は、ステップB1と同様に更新対象とする「ECU SW ID」を決定する(C1)。パッケージ生成部202は、更新対象とする「ECU SW ID」に対応する各データをECUリプロデータDB204より取得して1つのリプログデータを生成する(C2)。例えば、図10において、パッケージ生成部201は、新プログラムの完全性検証データ、差分データである更新データ、更新データの完全性検証データ、旧プログラムの完全性検証データ、差分データであるロールバックデータ、及びロールバックデータの完全性検証データを取得し、リプログデータを生成する。そして、生成したリプログデータとステップB1~B6にて説明した、対応する書換え諸元データとを統合して一つの配信パッケージファイルを生成する(C3)。次に、生成したパッケージファイルについての完全性検証データを生成し(C4)、パッケージファイルと共にパッケージDB206に登録する(C5)。
図20は、上記のように生成されたパッケージファイルの内容をイメージ的に示したものである。更新対象とする「ADS」、「BRK」及び「EPS」に対応する更新データや完全性検証データを、ECU順序に従って1つのリプログデータに統合し、さらに書換え諸元データと統合して一つの配信パッケージファイルを生成するイメージを示している。ここで、ロールバックデータは、更新対象とするECU19のメモリ構成が1面の場合にのみ、リプログデータへ含めるとしても良い。メモリ構成が2面又はサスペンドの場合、運用面に対する書換えは行わないため、旧プログラムであるロールバックデータは省略可能である。
以上のように本実施形態によれば、センター装置3のECUリプロデータDB204には、車両に搭載される複数のECU19のうち、アプリプログラムを更新する対象となるECU19の更新プログラムのデータが記憶される。構成情報DB208には、車両に搭載される複数のECU19それぞれに対する「ECU ID」及びECU19に記憶されるアプリプログラムの「ECU SW ID」等の車両関連情報が、車両の種別と共に記憶される。ECUメタデータDB205には、書換え対象ECU19の属性及び更新データに関連する更新データ関連情報が記憶される。
そして、諸元データ生成部201は、対象ECU19に書込む更新データと共に車両へ送信する諸元データを、構成情報DB208及びECUメタデータDB205に記憶された情報に基づいて、対象ECU19についての種別、属性、更新データ関連情報、及びデータ更新に関する書換え環境を示す情報を含むように生成する。更に、パッケージ生成部202は、諸元データとリプログデータとを含む配信パッケージを生成し、パッケージDB206に登録する。そして、パッケージ配信部203は、登録された配信パッケージを車両側システム4に配信する。これにより、車両側システム4は、更新データと共に送信される諸元データを受信することで、その諸元データに基づいて、対象ECU19を適切に選択し、更新データを用いた書き込み処理を適切に制御することが可能になる。
そして、諸元データ生成部201は、複数のECU19に対する諸元データを1つのファイルとして生成し、さらにパッケージ生成部202が複数のECU19に対するリプログデータとともに1つのファイルとしてパッケージ化するので、車両側システム4は、1つの配信パッケージを受信すれば複数のECU19に更新データを書き込むことができる。
また、諸元データとしての車両関連情報には、複数のECU19の一部をグルーピングしたグループ情報を含むので、車両側システム4は、グループ情報で規定される順序に従って対象となるECU19を選択し、更新データを書き込むことができる。例えば、ある機能改善の対象となるECU19が多数ある場合、グループ1をボディ系ECU19、グループ2を走行系ECU19、グループ3をMM系ECU19とすることで、車両側システム4におけるプログラム更新を、3回に分けて実行させることが可能となる。そのため、プログラム更新を全ECUまとめて実行する場合に比べ、回ごとのユーザの待ち時間を短縮することができる。
また、書換え環境情報には、車両に関する「車両状態(IGオン状態)」及び「バッテリ負荷」と、ECU19に関する「バス負荷テーブル」とを含むので、車両側システム4は、これらの情報に基づいて更新データを書き込むタイミング等を決定できる。つまり、OEM又はセンター装置3を用いたサービス事業者は、書換え環境情報として、車両に対する実行制約条件を指定することにより、柔軟なプログラム更新を運用可能となる。
加えて、諸元データ生成部201は、予め設定された書換え順番の早いECU19に関する情報から順に、予め定められたデータ構造に従って諸元データを生成するので、車両側システム4は、諸元データにおけるECU IDの配置順に従って更新データを書き込むことができる。つまり、互いに連携し合う処理を有するECU19を1つのグループにグルーピングし、その連携し合う処理の内容を考慮し、ECU順序を規定することで、車両側システム4において、新プログラムへの更新タイミングが完全に同期しなかった場合でも、不都合なくプログラム更新を完了させることができる。例えば、ECU(ID1)の新プログラムが、ECU(ID2)へ所定メッセージを送信する処理を有しており、ECU(ID2)の新プログラムが、ECU(ID1)から送信される所定メッセージが受信できない場合にタイムアウトエラーとなる処理を有している場合、ECU(ID1)を先に更新し、ECU(ID2)を後から更新するようECU順序を規定すると良い。
(第2実施形態)
図21に示すように、第2実施形態は、図8において車両側システム4が最初にセンター装置3に送信を行う「車両構成情報同期」に関するものである。車両側でIGスイッチ37がオンされると、それを契機としてCGW13は、DCM12に対して「同期開始要求」を送信する。DCM12はそれを受けて「構成情報収集要求」をCGW13に返信する。すると、CGW13は、各ECU19に対してプログラムバージョンの問い合わせを行う。各ECU19は、「ECU SW ID」をCGW13に返信する。また、メモリ構成が2面又はサスペンドのECU19は、複数ある面のうち何れが運用面であって、何れが非運用面であるかを示す面情報も、合わせてCGW13へ返信する。更に、各ECU19は、制御対象となるアクチュエータ等のキャリブレーション情報や、プログラム更新サービスを受けるためのライセンス情報や、ECU19に発生している故障コードを、合わせてCGW13へ送信しても良い。
CGW13は、各ECU19からの「ECU SW ID」の受信を完了すると、それらの全てを「VIN」と共にDCM12に送信する。このとき、CGW13で管理している「Vehicle SW ID」及び「Sys ID」も合わせてDCM12へ送信しても良い。DCM12はそれを受けて、全ての「ECU SW ID」を対象とし、例えばハッシュ関数を用いてダイジェスト値であるハッシュ値を1つ生成する。前述のように、ハッシュ関数としてSHA-256を用いる場合は、全ての「ECU SW ID」の値をシリアルに連結したデータ値を64バイト毎にメッセージブロックに区切り、初期ハッシュ値に対して最初のメッセージブロックのデータ値を適用し32バイト長のハッシュ値を得て、そのハッシュ値に順次後続のメッセージブロックのデータ値を適用し、最終的に32バイト長のハッシュ値を得る。ここで、DCM12は、全ての「ECU SW ID」だけでなく「Vehicle SW ID」、「Sys ID」、面情報及びキャリブレーション情報を含む値を対象とし、1つのハッシュ値を生成しても良い。
DCM12は、上記のようにして得た「ECU SW ID」のダイジェスト値を、「VIN」と共にセンター装置3に送信する。また、DCM12は、故障コードやライセンス情報を、ダイジェスト値と合わせて送信しても良い。以下では、前記ダイジェスト値を「構成情報ダイジェスト」と称し、その元である「ECU SW ID」の全てのデータ値を「構成情報オール」と称する場合がある。「構成情報オール」には、「Vehicle SW ID」、「Sys ID」、面情報、及びキャリブレーション情報を含めるとしても良い。
センター装置3は、後述するように、ダイジェスト値の比較や個車情報DB213の更新を行う。構成情報を同期させたセンター装置3は、プログラム更新の有無を確認し、更新がある場合はキャンペーン情報を車両側システム4へ通知する。その後、車両側システム4が、配信パッケージをダウンロードし、対象となるECU19へのインストールを行い、新プログラムのアクティベートを行う。これら更新処理が完了したことを契機として、CGW13は、DCM12に対して「同期開始要求」を送信し、以降、同期完了通知まで前述と同様の処理を行う。また、IGスイッチ37がオンされたことを契機として行われる上述の処理を、プログラムの更新後にも行っても良い。
図22に示すように、センター装置3の個車情報管理部3Cは、車両側システム4より「構成情報ダイジェスト」を受信すると(D1)、その時点で個車情報DB213に登録されている対応する車両の「構成情報ダイジェスト」と照合し、両者が一致するか否かを判断する(D2)。「個車情報ダイジェスト」は、個車情報DB213に予め演算した値を登録しておいても良いし、車両側システム4から受信した時点で、個車情報DB213に登録されている構成情報を用いてダイジェスト値を演算しても良い。両者が一致すれば(YES)、車両の個車情報が構成情報DB208に登録されている正規の組み合わせに適合するか否かを判断する(D6)。尚、構成情報DB208が所定のタイミングで更新される可能性もあるため、ステップD2において両者が一致した場合も(YES)、両者が不一致の場合も(NO)、ステップD6の判断は行うこととする。
ここで、上記の適合するか否かの判断は、例えば図23に示すように、車両側システム4からアップロードされた構成情報の「Vehicle SW ID」と「ECU SW ID」との組み合わせが正規か否かをチェックする。同図に示すリストにおいて、構成情報DB208に登録されている「Vehicle SW ID=0001」に対応する「ECU ID=ADS」の「ECU SW ID」は「ads_001」,「ECU ID=BRK」の「ECU SW ID」は「brk_001」、「ECU ID=EPS」の「ECU SW ID」は「eps_010」である。
これに対して、VIN=300の車両Cは同じく「Vehicle SW ID=0001」であるが、「ECU ID=ADS」の「ECU SW ID」は「ads_002」,「ECU ID=BRK」の「ECU SW ID」は「brk_003」であり、これら2つのECU19は、構成情報DB208に登録されている構成情報とは異なっている。したがって、ステップD6では「NO」,つまり非正規であり「NG」と判断し、構成情報確認部210が車両側システム4及びOEM等の生産した車両の情報を管理する装置である、図8に示す管理装置220に異常を通知する(D12)。異常の通知は、例えばSMS送信制御部212によりSMSを用いて行う。SMS送信制御部212は通信部の一例である。仮に、これら2つのECU19が、新プログラムによる更新対象ECUでなかったとしても、センター装置3は、当該車両を非正規と判断し、ステップD7以降の処理を行わないものとする。
一方、VIN=100の車両Aは「Vehicle SW ID=0001」であり、「ECU ID=ADS」の「ECU SW ID」は「ads_001」,「ECU ID=BRK」の「ECU SW ID」は「brk_001」であり、構成情報DB208に登録されている構成情報と全て一致している。したがって、ステップD6では「YES」、つまり正規であり「OK」と判断し、ステップD7へ進む。ここで、構成情報確認部210は、車両Cの「ECU SW ID」の組合せが構成情報DB208に存在するか否かで、正規か非正規かを判断しても良い。また、「Vehicle SW ID」に加え、「Sys ID」を判断の材料に加えても良い。
次に、更新有無確認部211がキャンペーン管理部3Dを介してキャンペーンDB217にアクセスし、新プログラムによる更新の有無を確認する(D7)。更新の有無は、車両側システム4からアップロードされた「Vehicle SW ID」と、キャンペーンDB217の「更新前Vehicle SW ID」とを比較して判断する。例えば図23に示すように、VIN=100の車両Aは更新前の「Vehicle SW ID=0001」であるから、更新有りと判断される(YES)。この場合、更新有無確認部211は、対応するキャンペーンID「Cpn_001」を上記車両Aの車両側システム4に通知する(D8)。キャンペーン情報は更新通知情報に相当し、キャンペーンDB217は、更新通知情報記憶部の一例である。
尚、キャンペーンDB217に更新前後の「Sys ID」を持たせるようにすれば、「Sys ID」により更新の有無を確認することも可能である。また、「Vehicle SW ID」に代えて、アップロードされた「ECU SW ID」リストと、キャンペーンDB217の「更新前ECU SW IDリスト」とを比較して、更新有無を判断しても良い。
車両側システム4は、通知されたキャンペーンIDをキーとしてセンター装置3から前記IDに対応するキャンペーンファイルを取得する(D9)。キャンペーンファイルには、キャンペーン内容を説明するテキスト文や、プログラム更新を実行する際の制約事項等が含まれている。制約事項とは、ダウンロードやインストールを実行する際の条件であり、例えば、バッテリ残量、配信パッケージのダウンロードに必要なRAMの空き容量、車両の現在位置等である。車両側システム4は、キャンペーンファイルを解析し、車載ディスプレイ7を用いてキャンペーン内容等を表示する。ユーザは、キャンペーン内容に応じて車載ディスプレイ7に表示されるメッセージを参照し、ECU19のアプリプログラムを更新するか否かを決定する。車載ディスプレイ7を介してユーザの承諾操作を受付けると、CGW13は、DCM12を介して、センター装置3に更新を承諾する旨を通知する。すると、センター装置3は、前記キャンペーンIDに対応するパッケージIDの配信パッケージファイル及び完全性検証データを車両側システム4に送信する(D10)。
また、ステップD7において更新が無ければ(NO)、車両側システム4に「更新なし」を通知する(D11)。例えば図23に示すように、VIN=200の車両Aは更新後の「Vehicle SW ID=0002」であり、キャンペーンDB217の「更新前Vehicle SW ID」いずれにも合致しないから、更新無しと判断される。
一方、ステップD2において「構成情報ダイジェスト」の照合結果が不一致であれば(NO)、センター装置3は、車両側システム4に「構成情報オール」の送信を要求する(D3)。この送信が「全データ送信要求の通知」に対応する。それに応じて、車両側システム4が「構成情報オール」を送信すると、センター装置3はそれを受信する(D4)。そして、センター装置3の個車情報管理部3Cは、個車情報DB213に登録されている当該車両の情報を更新する(D4)。それから、ステップD6に移行する。個車情報DB213は、車両側構成情報記憶部の一例である。
尚、CGW13による「同期開始要求」の送信は、IGスイッチ37がオフされたタイミング等に行っても良い。
以上のように第2実施形態によれば、車両側システム4は、複数のECU19より、各ECU19の構成に関する構成情報を受信すると、複数の構成情報のデータ値に基づいたハッシュ値を生成し、そのハッシュ値をセンター装置3に送信する。センター装置3は、個車情報DB213を有し、車両側システム4より送信されたハッシュ値と個車情報DB213に記憶されている車両の構成情報のハッシュ値とを比較する。そして、両者が不一致であれば、車両側システム4に「構成情報オール」の送信を要求する。すると、車両側システム4は、その送信を受けて、「構成情報オール」をセンター装置3に送信し、センター装置3は、「構成情報オール」を受信すると、そのデータ値に基づいて個車情報DB213に記憶されている構成情報を更新する。
このように構成すれば、車両側システム4は、当初はセンター装置3に構成情報のハッシュ値を送信し、センター装置3におけるハッシュ値の比較結果が不一致であった際にだけ、構成情報の全てのデータ値をセンター装置3に送信する。これにより、車両側システム4が送信するデータのサイズを縮減できるので、車両側システム4が多数の車両に搭載されたとしても、通信量を総じて削減できる。特に、車両側システム4において、IGオン時など予め定められたタイミングで構成情報をアップロードする場合、その通信が集中する時間帯が発生し得る。そのため、ハッシュ値を用いて送信データ量を削減することで、通信負荷を低減することができる。
また、CGW13は、更新データの書換え対象となる全てのECU19より構成情報を受信し、それら全てのデータ値に基づいたハッシュ値を生成し、DCM12は、車両のイグニッションスイッチ37がオン又はオフされたタイミングでハッシュ値を送信するので、車両の走行が開始される又は終了するタイミングで、センター装置3にハッシュ値を送信できる。そのため、センター装置3は、個車情報DB213の構成情報を、適切に車両と同期させることができる。
また、車両側システム4は、複数のECU19より各ECU19の「ECU SW ID」を受信すると、それらに「Vehicle SW ID」を組み合わせた構成情報リストをセンター装置3に送信する。センター装置3は、車両側システム4より送信された「ECU SW ID」リストと、構成情報DB208に記憶されている対応する車両の正規のECU SW ID」リストとを比較して、送信されたリストの組合せが非正規であると判断すると異常検知を車両側システム4及び管理装置220に送信する。
このように構成すれば、センター装置3は、車両の構成情報の組み合わせが、複数のECU19が協働できず車両の走行に支障を来すような状態にあることを異常として検知し、車両側システム4に通知できる。これにより、車両側システム4は、車両の走行を禁止する等の対応を行うことが可能になる。
センター装置3は、車両の構成情報の組合せが非正規の車両に対しては、更新有無の確認処理(D7)を実施しない。そのため、正規でない車両においてプログラム更新が実行されることを防ぐことができる。仮に、正規でないECU19が、新プログラムによる更新対象ECUではなかったとしても、センター装置3は、更新有無の確認処理(D7)を実施しない。車両側システム4において、プログラム更新を実行する際、更新対象でないECU19に対する制御も発生する。そのため、正規でないECU19を有する車両では、プログラム更新が正常に完了しない可能性があるため、センター装置3は、当該車両に対してプログラム更新が実行されないようにする。
また、センター装置3は、新プログラムによる更新が発生したことを車両側に通知するために使用するキャンペーン情報が記憶されているキャンペーンDB217を備え、正規と判断された車両に対しては、対応する車両のキャンペーン情報の有無を確認する。更新が有れば、そのキャンペーン情報を車両側システム4に送信する。これにより、ユーザに対してキャンペーン情報を提示し、アプリプログラムの更新を促すことができる。これら構成情報の同期、正規の構成情報か否かの判断、及び更新有無の確認を、車両からの構成情報アップロードを契機とし、センター装置3が一連の処理として実行することで、適切な車両に対してプログラムの更新を速やかに通知することができる。
尚、第2実施形態を以下のように変形して実施しても良い。
・「同期開始要求」の送信は、センター装置3が車両側システム4に対して行うようにし、「同期開始要求」を受信するとDCM12がCGW13に対して「構成情報収集要求」を送信しても良い。例えば、「車両型式=aaa」の構成情報DB208が更新された際に、センター装置3は、当該車両型式の車両に対し、「同期開始要求」を送信する。
・また、更新データの書換え対象となったECU19において、書換えが完了したタイミングでハッシュ値をセンター装置3に送信しても良い。すなわち、書換え対象となったECU19全てのプログラム更新が完了したタイミングにおいても、図22に示すステップD1~D12のフローチャートを実行する。
・センター装置3は、双方のハッシュ値の比較結果が一致であった際に、車両側システム4に対して各ECU16の構成情報の組合せリストの送信を要求する。そして、前記組合せリストを受信すると、ステップD6~D12の処理を行っても良い。
・センター装置3は、双方のハッシュ値の比較結果が一致であった際にもキャンペーンDB217を参照し、対応する車両のキャンペーン情報の有無を確認しても良い。
車両側システム4からセンター装置3へのハッシュ値の送信を、図23Aに示すように行っても良い。図23Aは、CGW13の処理を示すフローチャートである。例えば、IGスイッチ37がオンされた際に、CGW13が各ECU19より構成情報を収集し(D21)、収集した構成情報のデータ値についてハッシュ値を生成する(D22)。そして、生成したハッシュ値をフラッシュメモリ24dに記憶しているハッシュ値(前回生成値)と比較し、差異があるか否かを判断する(D23)。差異があれば(YES)、今回生成したハッシュ値をフラッシュメモリ24dに記憶し(D24)、前記ハッシュ値をセンター装置3に送信する。ステップD23において、双方のハッシュ値に差異が無ければ(NO)処理を終了する。尚、フラッシュメモリ24dには、構成情報の初期値に対するハッシュ値は予め記憶されているものとする。これにより、車両側システム4が、センター装置3へ、構成情報をアップロードする回数を削減することができる。
(第3実施形態)
第3実施形態は、車両側システム4におけるアプリプログラムの更新率を向上させるため、センター装置3のキャンペーン管理部3Dが実行する機能に関する。図24に示すように、例えば車両側システム4において、ユーザがConfigファイルによりHTTPポーリングのインターバルを3日程度に設定しておくことで、車両側システム4がセンター装置3に対して周期的にアプリプログラムの更新有無を確認する。これにより、キャンペーンDB217に対応する車両;VINのキャンペーン情報が設定された後に更新確認が行われた時点で、センター装置3より車両側システム4に「更新あり」が通知される。すなわち、第2実施形態にて説明したように、車両側システム4からHTTPを用いて構成情報がアップロードされることを契機として、センター装置3が更新確認を行うという処理が、3日経過後のIGオンのタイミングで実行されることとなる。
このように車両からの通知を契機として更新有無を行うよう構成すれば、センター装置3は、キャンペーン情報が設定された時点でそのキャンペーンの対象となる全ての車両にセンター装置3からキャンペーン情報を送信する必要がなくなる。しかしながら、ユーザが長期に渡り車両を使用しない場合、その間ずっとHTTPを用いた更新有無の確認が行われない。そのため、ユーザは新たなキャンペーンが発行されたことを知らず、アプリプログラムの更新が行われない車両が発生することも想定される。
そこで、図25に示すように、センター装置3のSMS送信制御部212は、定期的又は所定のタイミングで、個車情報DB213を参照して各車両のアクセスログをチェックする(E1)。そして、センター装置3へのアクセス,つまりアプリプログラムの更新確認のための構成情報の送信を所定期間行っていない車両があるか否かを判断する(E2)。所定期間は、キャンペーンDB217に新たなキャンペーンが設定された日を起算日として、例えば7日間程度とする。つまり、SMS送信制御部212は、個車情報DB213の「Vehicle SW ID」がキャンペーンDB217の「更新前Vehicle SW ID」に該当する車両を対象として、更新確認が7日間行われていない車両を特定する。なお、SMS送信制御部212は、全ての車両を対象として、更新確認が所定期間行われていない車両を特定してもよい。
尚、個車情報DB213には、車両が工場で生産された際にOEMによって初期データが登録されるが、その後、例えば車両が販売されたことに伴うOEMからの通知によって最初のアクセスログを入力する。このアクセスログは、実質的には以降のプログラムの更新を有効化するための通知に相当する。アクセスログが入力されていない車両は、ステップE2の判断対象外とする。
更新確認を所定期間行っていない車両があれば(YES)、SMS送信制御部212は、その車両の特性を個車情報DB213の型式や装備情報等より判断する(E3)。ここでの特性として、SMS送信制御部212は、電気自動車;SMS(Short Message Service)受信可能なEVであるか、SMS受信可能な従来のガソリンエンジン車,つまりコンベンショナルエンジン車;コンベ車か、SMSを受信困難な車両か否かを判断する。例えば、車両に搭載されるDCM12が、SMSを受信する機能を有していない場合やSMSを受信する契約をしていない場合には、SMSを受信困難な車両と判断する。
EVであれば、その車両のECU19を起動させて構成情報送信シーケンスを開始させるSMSを送信する(E5,図26参照)。DCM12がSMSを受信し、SMSに記載されたコマンドを実行すると、IGオン電源状態となり、起動したCGW13は、DCM12を介してセンター装置3へ構成情報を送信する。その後、図22に示したステップD1~D12のように、更新確認が行われ、配信パッケージのダウンロード等が実行される。EVの場合、バッテリの容量が大きいため、駐車状態のままIGオン電源状態としてプログラムのダウンロードを行うことが十分可能であると考えられる。したがって、SMSを用いてECU19を起動させて自動的に更新確認及びダウンロード以降のシーケンスを開始させる。
仮に、EV車のバッテリの残量が少ない場合は、車両側システム4において、図17に示す書換え諸元データを参照し、指定されたバッテリ残量を下回る状態の場合は、インストールを開始しないよう制御される。または、センター装置3がステップD9にて送信するキャンペーンファイルに制約事項として記載されるバッテリ残量を参照し、指定されたバッテリ残量を下回る状態の場合は、車両側システム4において配信パッケージのダウンロードを開始しないよう制御される。
コンベ車において、DCM12が間欠的に起動している期間に当たりSMSを受信可能な状態にある車両には、SMS送信制御部212が車載ディスプレイ7に表示可能なSMSを送信する(E4,図26参照)。例えば、CGW13は、受信したSMSに記載されたテキスト文を、次回IGオンのタイミングで車載ディスプレイ7へ表示指示する。また、個車情報DB213にユーザの携帯端末6の情報が登録されている場合は、その携帯端末6にSMSを送信しても良い。例えば、「キャンペーン情報があります。IG-ONしてください。」といった文字メッセージを表示させる。個車情報DB213は、ユーザ情報記憶部の一例である。一方、SMSを受信困難な状態にある車両には何もせず、別途ユーザに郵送を行うなどして対応する(E6)。
以上のように第3実施形態によれば、車両側システム4は、複数のECU19の構成情報をセンター装置3に送信し、個車情報DB213には、各車両より送信された構成情報が送信日と共に記憶される。また、キャンペーンDB217には、キャンペーン情報として、キャンペーンID及びデータ更新の対象車両を識別可能な対象VINリストが記憶される。そして、センター装置3は、個車構成DB213を参照し、対象車両に紐づく送信日から所定期間内に構成情報の送信がなければ、対象車両の車両側システム4にデータ更新を促すためのメッセージをSMSにより送信する。
このように構成すれば、ユーザが車両に乗車する機会が無いため、構成情報がセンター装置3に送信されない状況が継続された場合でも、センター装置3が、個車情報DB213に記憶されている送信日から所定期間を経過すると、対象車両の車両側システム4にデータ更新を促すためのメッセージを送信する。したがって、ユーザは、そのメッセージを参照することでデータ更新が必要であることを認識できる。
そして、センター装置3は、個車情報DB213とキャンペーンDB217とを参照することでプログラム更新の対象車両を決定する。すなわち、個車情報DB213には、各車両より構成情報が送信された日付が記憶されており、キャンペーンDB217には、対象VINリストが記憶されている。したがって、センター装置3は、各車両からの構成情報の送信日と対象VINリストとによりプログラム更新の対象車両を決定できる。
また、車両側システム4は、車両のイグニッションスイッチ37がオンされたことを契機として、各ECU19よりそれぞれの構成情報を受信すると、構成情報をセンター装置3に送信する。したがって、ユーザが車両に乗車した際には、構成情報を確実にセンター装置3に送信できる。
そして、センター装置3は、対象車両が電気自動車であれば、その対象車両のECUを起動させる指令をメッセージに含ませて送信し、そのメッセージを受信した車両側システム4は、ECU19を起動させ、データ更新に関する処理を実行させる。すなわち、電気自動車はバッテリの容量に比較的余裕があるため、ユーザの操作を待つことなくECU19にデータ更新に関する処理を実行させることが可能である。したがって、データ更新を効率的に実行させることができる。
また、センター装置3は、対象車両がコンベ車であれば、メッセージとして、少なくとも対象車両の車載ディスプレイ7に表示可能な文字情報を送信する。したがって、コンベ車のユーザは、車載ディスプレイ7に表示された文字情報を参照することで、データ更新が必要であることを認識できる。
また、センター装置3は、個車情報DB213にユーザの携帯端末6の送信先が記憶されている際には、メッセージとして携帯端末6に表示可能な文字情報を送信する。これにより、ユーザは、車両に乗車する機会が無くても、携帯端末6に表示された文字情報を参照することで、データ更新が必要であることを認識できる。
更に、ユーザが携帯端末6を介して、予めキャンペーンの送信日と送信先とをセンター装置3に送信すると、センター装置3は、その送信日及び送信先を個車情報DB213に記憶する。例えば、ユーザは、送信日としてキャンペーン発行の翌日を指定し、送信先として車載ディスプレイ7でなく携帯端末6を指定する。また、ユーザは、送信日として乗車しない所定時刻を指定し、送信先として車両を指定し、自動的にプログラム更新されることへの承諾操作を行う。これにより、センター装置3は、構成情報の送信の有無にかかわらず、キャンペーン情報を、前記送信日に前記送信先に対して送信する。したがって、ユーザが車両に乗車する機会が暫くないことを予め把握している際には、ユーザが設定した送信日にキャンペーン情報を受信するように設定できる。
尚、第3実施形態を以下のように変形して実施しても良い。
・ユーザ情報記憶部を、個車情報DB213と別個に設けても良い。
・キャンペーン情報の送信には、SMS以外を用いても良い。
・センター装置3が、送信日を個車情報DB213に記憶する替わりに、例えば車両側からの送信が無かった日を記憶し、その日が7日間連続した際にデータ更新を促すメッセージを送信しても良い。
(第4実施形態)
第4実施形態は、ユーザがキャンペーン情報,メッセージの通知方法を指定する場合を示す。例えば、ユーザが1か月間程度乗車せず、IGスイッチ37をONにする機会が無いことが予め確定している場合を想定する。図27に示すように、ユーザは、携帯端末6によりセンター装置3にキャンペーン発生時の通知先及び通知する日時の設定を送信する。例えば、1か月後にキャンペーン情報を携帯端末6に通知する、といった設定を行う。これにより、個車情報管理部3Cは、前記通知先及び通知日時の情報を個車情報DB213に記憶させ、設定に従いユーザに通知を行う。例えば、その1か月の間にキャンペーン(1,2)の2つが設定されたとすれば、SMS送信制御部212が、1か月後にキャンペーン(1,2)の情報をユーザの携帯端末6に通知して、プログラム更新を促す。
以上のように第4実施形態によれば、ユーザが携帯端末6を介して、キャンペーン情報の送信日と送信先とをセンター装置3に送信すると、センター装置3は、前記送信日及び送信先を個車情報DB213に記憶する。そして、センター装置3は、記憶した送信日に送信先に対してキャンペーン情報を送信する。これにより、ユーザが一定期間車両に乗車しないことが確定している場合に、センター装置3からの不要なキャンペーン情報の送信を停止できる。
(第5実施形態)
第5実施形態は、センター装置3が車両側システム4に更新プログラムのデータを送信する際に、車両側システム4がデータの完全性を検証するために用いる検証データを付与する機能について示す。図28及び図29に示すように、サプライヤは、パッケージ管理部3Aを用い、ECUリプロデータDB204に登録するデータを作成する。具体的には、パッケージ管理部3Aは、更新データとして旧プログラムを新プログラムに書き換えるための新差分データを作成し(Y1)、ECU19の新プログラムに対する完全性検証データであるハッシュ値、及び新差分データに対するハッシュ値を作成する(Y2)。ここで、ECUが1面メモリの場合、ロールバックデータとして新プログラムを旧プログラムに書き換えるための旧差分データを作成し、ECU19の旧プログラムに対するハッシュ値、及び旧差分データに対するハッシュ値を作成しても良い。
パッケージ管理部3Aは、各ハッシュ値に対して所定の鍵であるキー値を用いた暗号化を適用して認証子を生成する(Y3)。そして、パッケージ管理部3Aは、更新データ及び各認証子付き完全性検証データを送信し、ECUリプロデータDB204に記憶する(Y4)。パッケージ管理部3Aは前述したように、パッケージを生成し、パッケージに対する完全性検証データを生成し、車両側システム4へ送信する(Y5)。
マスタ装置(OTAマスタ)11は、パッケージに対する完全性検証データを演算し、その演算値と受信したパッケージの完全性検証データとを比較し、パッケージの完全性検証を行う(Y6)。パッケージの完全性検証に成功すると、マスタ装置11は、ECUの更新データ及び完全性検証データを書換え対象ECU(ターゲットECU)19へ送信する(Y7)。
書換え対象ECU19は、更新データに対する完全性検証データを演算し、その演算値と受信した更新データの完全性検証データとを比較し、更新データの完全性検証を行う(Y8)。更新データの完全性検証に成功すると、書換え対象ECU19は、更新データである差分データを復元し、フラッシュメモリ28dへの書込みを行う(Y9)。書込みが完了すると、書換え対象ECU19は、フラッシュメモリ28dへ書込まれたデータに対する完全性検証データを演算し、その演算値と受信した新プログラムの完全性検証データとを比較し、フラッシュメモリ28dの完全性検証を行う(Y10)。書換え対象ECU19は、その検証結果をマスタ装置11へ送信し(Y11)、マスタ装置11は、受信したその検証結果をインストール結果通知としてセンター装置3へ送信する(Y12)。
例えば図10に示したように、パッケージ管理部3Aは、最新の「ECU SW ID」について、以下の完全性検証データを生成する。ECUのメモリ構成が2面メモリ又はサスペンドの場合、以下(3)(4)は省略可能である。
(1)ECUの新プログラムに対する完全性検証データであるハッシュ値を生成する。この処理を行う機能部分が、第1検証値生成部(ステップA1)の一例である。
(2)ECUの旧プログラムをベースに新プログラムへ更新するための差分データである更新データ,その更新データの完全性検証データであるハッシュ値を生成する。この処理を行う機能部分が、第2検証値生成部(ステップA4)の一例である。
(3)ECUの旧プログラムに対する完全性検証データであるハッシュ値を生成する。この処理を行う機能部分が、第4検証値生成部(ステップA5)の一例である。
(4)ECUの新プログラムをベースに旧プログラムへ更新するための差分データである更新データ,その更新データの完全性検証データであるハッシュ値を生成する。この処理を行う機能部分が、第5検証値生成部(ステップA7)の一例である。
尚、「プログラム」にはプログラム中で使用する定数データ等も含む。「ECU SW ID=ads_002」であれば、更新データ「Adsfile001-002」に対して、そのハッシュ値x1を生成する。ハッシュ関数には、前述したように例えばSHA-256を用いる。ハッシュ値は検証値に相当する。ここで、パッケージ管理部3Aは、ハッシュ値に対して所定の鍵であるキー値を用いた暗号化を適用して認証子を生成することで認証子付き完全性検証データを生成するよう構成しても良い。
次に、サプライヤは、完全性検証データに対して所定の鍵であるキー値を用いた暗号化を適用して認証子を生成することで認証子付き完全性検証データを生成し、更新データと認証子付き完全性検証データとを対応付けてOEMに提供する。つまり、パッケージ管理部3Aにより、各プログラムとそれに対する認証子付き完全性検証データがECUリプロデータDB204へ登録されることをもって、OEMに提供となる。OEMの指示により、パッケージ管理部3Aは、ECUリプロデータDB204等を用いて、前述のように書換え諸元データを生成し、配信パッケージを生成し、パッケージDB206に登録する。センター装置3は、車両側システム4から更新データのダウンロード要求が発生すると、そのダウンロード要求に従って更新データと認証子付き完全性検証データとを含む配信パッケージを車両側システム4に配信する。
尚、特許請求の範囲における「完全性検証データ」は、ハッシュ値のみのものと、鍵による暗号化を含む認証子付き完全性検証データの何れをも含む。
車両側システム4のマスタ装置11は、配信パッケージを受信すると、配信パッケージに付与された完全性検証データ(第3検証値)を用いて、配信パッケージの妥当性を検証する。具体的には、配信パッケージを用いて演算した完全性検証データと、受信した完全性検証データとを比較し、合致すれば正常と判断する。検証の結果、正常と確認された場合、マスタ装置11は、配信パッケージをECU毎のデータにアンパッケージングする(図6参照)。そして、マスタ装置11は、更新データ及び認証子付き完全性検証データを書込み先のECU19に転送する。
ECU19は、認証子付き完全性検証データ(第2検証値)を用いて、更新データの妥当性を検証する。具体的には、受信した更新データを用いて演算した完全性検証データと、受信した完全性検証データとを比較し、合致すれば正常と判断する。検証の結果、正常と確認された場合、ECU19のCPU28aはフラッシュメモリ28dへの書込み処理を行う。書込み処理が完了すると、ECU19は、認証子付き完全性検証データ(第1検証値)を用いて、フラッシュメモリ28dに書込んだデータを読み出して、その妥当性を検証する。具体的には、読み出したデータを用いて演算した完全性検証データと、受信した完全性検証データとを比較し、合致すれば正常と判断する。なお、ここでの完全性検証データは、ECU19の起動時にも使用するため、フラッシュメモリ28dの所定領域へ記憶しておく。ECU19は、これらの処理が完了すると、検証結果を含め、書込み応答をマスタ装置11に送信する。マスタ装置11は、センター装置3にインストール結果を通知する。尚、図中の「ターゲットECU」は「対象ECU」と同義であり、「OTAマスタ」は「DCM」と同義である。CPU28aは書き込み処理部の一例である。
ここで、インストールの途中に、プログラム更新のキャンセルが発生した場合、ECU19はロールバック処理を行うこととなる。ECU19は、更新データを書込むとともに、認証子付き完全性検証データ(第5検証値)を用いて、ロールバック用差分データの妥当性を検証する。具体的には、ロールバック用差分データを用いて演算した完全性検証データと、受信した完全性検証データとを比較し、合致すれば正常と判断する。検証の結果、正常と確認された場合、ECU19は、更新データの書込みを完了した後、ロールバック用差分データを用いた書込みを開始する。そして、書込みを完了した後、ECU19は、認証子付き完全性検証データ(第4検証値)を用いて、フラッシュメモリ28dに書込んだデータを読み出して、その妥当性を検証する。
なお、受信した差分データ(更新データ、ロールバック用差分データ)の完全性検証は、ECU19でなく、マスタ装置11が行う構成としても良い。
図30に示すように、その後、上記車両のIGスイッチ37がONされると、それを契機としてECU19は、起動時のデータ検証を行う。ECU19は、認証子付き完全性検証データ(第1検証値又は第4検証値)を用いて起動するプログラム等の完全性を検証する。先ず、フラッシュメモリ28dにおいて、更新されたプログラムや定数データが書き込まれている評価対象領域のデータ値に対してハッシュ関数を適用し、ハッシュ値を取得する。次に、認証子付き完全性検証データを復号し、復号結果に含まれているハッシュ値(期待値)と取得したハッシュ値(演算値)とを照合し、フラッシュメモリ28dに書き込まれたプログラム等が改竄されているか否かを判断する。双方のハッシュ値が一致して「OK」であれば、ECU19は通常通り起動処理を行う。各ECU19について同様の処理が行われ、全ての評価対象ECU19の結果が「OK」であれば、処理を終了する。
一方、何れかのECU19について検証の結果が異常;「NG」であれば、ECU19は、処理のログを保存してマスタ装置11にエラーを通知する。マスタ装置11は、同様にログを保存してセンター装置3にエラーを通知する。センター装置3は、同様にログを保存してOEM等の管理装置220にエラーを通知する。管理装置220への通知は、例えばSMS送信制御部212によりSMSを用いて行ったり、インターネット回線を介した電子メールの送信等により行う。
上述した実施例では、車両側システム4において、完全性の検証を行う構成とした。図31では、完全性の検証(期待値との比較)をセンター装置3にて行う場合について説明する。図31は、例えばIGオン等のタイミングにおいて、ECU19は、マスタ装置11に更新したアプリプログラムのバージョン情報を送信する際に、バージョン情報と共に上記と同様に認証子付き完全性検証データを生成して送信する(X1)。ECU19は、フラッシュメモリ28dのデータに対する完全性検証データを演算し、その演算値をマスタ装置11へ送信する。マスタ装置11は、構成情報として認証子付き完全性検証データを含めてセンター装置3に送信する(X2)。
センター装置3は、ECUリプロデータDB204にアクセスし、ターゲットECU19の「ECU SW ID」に合致する認証子付き完全性検証データを取得し(X3,X4)、車両側よりアップロードされた完全性検証データと照合する(X5)。具体的には、ECUリプロデータDBより、「ECU SW ID」に対応する新プログラムの完全性検証データを取得し、照合する。照合の結果が不一致;NGであれば(X6;NG)、OEMの管理装置220に対して異常を通知する(X7)。この処理部分の機能が異常報知部に相当する。
センター装置3は、照合結果を、マスタ装置11へ送信し(X8)、マスタ装置11は受信した照合結果を書換え対象ECU19へ送信する(X9)。書換え対象ECU19は、照合結果がOKの場合、通常通りアプリプログラムを動作させ、照合結果がNGの場合、アプリプログラムを動作させない。尚、本実施例において、パッケージ管理部3Aは、新プログラムの完全性検証データ生成(ステップA1)や旧ECUプログラムの完全性検証データ生成(ステップA5)を省略可能となる。
尚、上記では、ECU19は、更新データの書き込みを行った後、車両のIGスイッチ37がONされたタイミングで更新データの完全性を検証するが、それに替えて、更新データの書き込みを行った直後に完全性を検証しても良い。
また、上記の実施形態では、更新データのみについて認証子付き完全性検証データを付与しているが、これを以下のように実施しても良い。
・ECUリプロデータDB204より、新プログラム及び対応する更新データを取得する(データ取得手順;ステップA1)。
・第1検証値生成部は、新プログラムについて第1ハッシュ値を生成する(第1検証値生成手順;ステップA2)。
・第2検証値生成部は、更新データについて第2ハッシュ値を生成する(第2検証値生成手順;ステップA4)。パッケージ生成部202は、配信パッケージに、更新データ、諸元データ並びに第1及び第2ハッシュ値を含ませる(配信パッケージ生成手順)。更新データは新差分データに対応する。
・第3検証値生成部は、配信パッケージについて第3ハッシュ値を生成する(第3検証値生成手順;ステップC4)。
・パッケージ配信部203は、配信パッケージ及び第3ハッシュ値を車両側システム4に送信する(送信手順)。
尚、認証子については、配信パッケージ及び第3ハッシュ値についてのみ付与しても良いし、各ハッシュ値を生成する段階毎に付与しても良い。パッケージ配信部203は送信部に相当する。
この場合、車両側システム4では、
・受信処理部であるDCM12が、配信パッケージ及び第3ハッシュ値を受信する。
・第3検証処理部は、配信パッケージデータより生成したハッシュ値と受信した第3ハッシュ値とを比較して、配信パッケージデータの完全性を検証する。
・第2検証処理部は、更新データより生成したハッシュ値と受信した第2ハッシュ値とを比較して、更新データの完全性を検証する。
・書込み処理部の一例であるCPU28aは、更新データをフラッシュメモリ28dに書き込む。
・第1検証処理部は、更新データを書込むことで新プログラムとなったフラッシュメモリ28d内のデータ値についてハッシュ値を生成し、受信した第1ハッシュ値と比較して、新プログラムの完全性を検証する。
更新データの検証結果がNGであれば、フラッシュメモリ28dへの書き込みは中止する。また、フラッシュメモリ28dに書き込んだ新プログラムの検証結果がNGであれば、新プログラムを無効とし、必要に応じてロールバック処理を行う。尚、第1~第3検証処理部は、CPU28aにより実現されても良い。また、第1~第3検証処理部の何れかの検証結果がNGであれば、送信処理部としてのDCM12は、センター装置3に異常を通知する。
更に、上記に加えて、図10に示したように、更新データを書き加える前の旧プログラムの状態に戻すためのロールバックデータが存在する際には、以下のように実施しても良い。
・第4検証値生成部は、旧プログラムについて第4ハッシュ値を生成する(第4検証値生成手順;ステップA5)。
・第5検証値生成部は、新プログラムを旧プログラムに戻すためのロールバックデータについて第5ハッシュ値を生成する(第5検証値生成手順;ステップA7)。ロールバックデータは、ロールバック用差分データを示しており、旧差分データに対応する。
・パッケージ生成部202は、配信パッケージに、更新データ、ロールバック用差分データ、書換え諸元データ並びに第1及、第2、第3及び第4ハッシュ値を含ませる(配信パッケージ生成手順)。
この場合、車両側システム4において、フラッシュメモリ28dに更新データを書換えている間に、例えばユーザにより書換え中止が指示されると書き換えキャンセルとなり、旧プログラムへの復旧,つまりロールバックが行われる。これは、ECU19のメモリ構成が1面メモリの場合のみである。
・第2検証処理部が、配信パッケージに含まれるロールバックデータに対するハッシュ値を算出し、算出したハッシュ値と第5ハッシュ値とを比較してロールバックデータの完全性を検証する。
・CPU28aは、ロールバックデータを用いてフラッシュメモリ28dへの書込みを行う。
・第1検証処理部が、フラッシュメモリ28dへの書込みにより復旧された旧プログラムについてハッシュ値を算出し、算出したハッシュ値と第4ハッシュ値とを比較して旧プログラムの完全性を検証する。
以上のように第5実施形態によれば、ECUリプロデータDB204には、書換え対象であるターゲットECU19の新プログラム、旧プログラム、及び旧プログラムから新プログラムに更新するための新差分データである更新データが記憶される。第1検証値生成部は、新プログラムを用いて第1ハッシュ値を生成し、第2検証値生成部は、更新データを用いて第2ハッシュ値を生成する。パッケージ生成部202は、複数のターゲットECU19に対する更新データと第1及び第2検証値並びに諸元データを含むパッケージを生成する。第3検証値生成部は、配信パッケージを用いて第3ハッシュ値を生成し、パッケージ配信部203は、配信パッケージを第3ハッシュ値と共に車両側システム4に送信する。
車両側システム4は、配信パッケージ及び第3ハッシュ値を受信すると、第3検証処理部が、配信パッケージに対するハッシュ値を算出し、第3ハッシュ値と比較して配信パッケージの完全性を検証する。第2検証処理部は、配信パッケージに含まれるターゲットECU19に対応する更新データについてハッシュ値を算出し、配信パッケージに含まれる第2ハッシュ値とを比較して更新データの完全性を検証する。
CPU28aは、更新データをフラッシュメモリ28dに書込み、第1検証処理部は、フラッシュメモリ28dの更新された新プログラムのデータに対するハッシュ値を算出し、第1ハッシュ値とを比較して、新プログラムのデータの完全性を検証する。このように、各ハッシュ値を用いて複数段階で各データ値の完全性を検証できる。そして、新プログラムについては完全性を3重に検証できることになり、車両側システム4が不完全な新プログラムを書込むこと、不正な新プログラムで動作することを回避させることができる。
また、ECUリプロデータDB204にロールバックデータが存在する際に、第4検証値生成部が旧プログラムについて第4ハッシュ値を生成し、第5検証値生成部がロールバックデータについて第5ハッシュ値を生成する。パッケージ生成部202は、配信パッケージに、更新データ、第1及び第2ハッシュ値、ロールバックデータ、第4及び第5ハッシュ値を含ませる。
そして、車両側システム4においてロールバックが行われる際には、第2検証処理部が、配信パッケージに含まれるロールバックデータに対するハッシュ値を算出し、第5ハッシュ値と比較してロールバックデータの完全性を検証する。CPU28aは、ロールバックデータを用いてフラッシュメモリ28dへの書込みを行う。第1検証処理部は、フラッシュメモリ28dへの書込みにより復旧された旧プログラムについてハッシュ値を算出し、第4ハッシュ値と比較して旧プログラムの完全性を検証する。これにより、書き戻された旧プログラムについても完全性を検証できる。上記において、第1~第5検証値生成部は、センター装置3のパッケージ管理部3A内の機能ブロックである。第1、第2、第4及び第5検証処理部は、車両側システム4のターゲットECU19内の機能ブロックである。また第3検証処理部は、車両側システム4のマスタ装置11(OTAマスタ11)内の機能ブロックである。
(第1実施形態の変形その1)
図32及び図33に示すように、1つのキャンペーン「cpn_001」について複数のパッケージ「pkg_001_1」及び「pkg_001_2」を対応させても良い。また複数のパッケージを複数のグループとしても良い。前述の実施例では、1つのパッケージの中に、複数のグループを含む構成とした。本変形例では、1つのグループで1つのパッケージを生成し、1つのキャンペーンに対して複数のパッケージを配信する。例えば、パッケージ「pkg_001_1」には、グループ1に所属するECUである「ADS」及び「BRK」が含まれ、パッケージ「pkg_001_2」には、グループ2に所属するECUである「EPS」が含まれる。
この場合、図34及び図35に示すように、諸元データ及び配信パッケージを、グループ毎に個別に生成する。図34において、諸元データ生成部201は、グループ1の諸元データとして、例えば「ADS」及び「BRK」のECU情報を記載した第1諸元データを生成する。諸元データ生成部201は、グループ2の諸元データとして、例えば「EPS」のECU情報を記載した第2諸元データを生成する。そして、図35において、パッケージ生成部202は、例えばグループ1に所属する「ADS」及び「BRK」の更新データ等をECU順序に従って統合したリプログデータを生成し、第1諸元データと統合してパッケージファイル「pkg001_1.dat」を生成する。パッケージ生成部202は、グループ2に所属する「EPS」の更新データ等を用いてリプログデータを生成し、第2諸元データと統合してパッケージファイル「pkg001_2.dat」を生成する。
(第1実施形態の変形その2)
図36は、諸元データ生成部201及びパッケージ生成部202の機能を統合して1つのパッケージ生成ツール221を構成した場合の処理内容を示す。以下、各処理について改めて説明する。
諸元データ生成処理では、諸元データ情報として作業者により入力された値を、ビット数や並び順が予め定められたデータ構造で出力し、諸元データ生成する。諸元データ情報としては、例えば図17に例示した値であり、ECU(ID1),ECU(ID2),ECU(ID3)といったECU単位の情報に加え、車両単位又はシステム(グループ)単位の情報を入力する。車両単位の情報とは、例えば図17に示す書換え環境情報であり、システム単位の情報とは、例えば図17に示すグループ情報やECU順序の情報である。車両単位、システム単位の入力情報は、それぞれを別ファイルとしても良い。諸元データ生成処理に、更新データのファイルサイズ等、一部の値を自動的に計算して諸元データに反映させる機能を持たせても良い。
パッケージ生成処理では、生成された諸元データや各ECUの更新データ,各ECUの完全性検証データとして入力された値やファイルを、ビット数や並び順が予め定められたデータ構造で出力し配信パッケージのファイルを生成する。各ECUの更新データ及び完全性検証データは、グループの若い順、ECU順序の若い順に並べる。ここで、更新データ(新差分データ)に加え、ロールバック用データ(旧差分データ)も入力に加えて良い。完全性検証データとしては、「ECUプログラム(新)の完全性検証データ」「更新データの完全性検証データ」が入力される。ロールバックデータも加える場合は、「ECU旧プログラムの完全性検証データ」「旧差分データの完全性検証データ」も入力に加える。
完全性検証データ生成処理では、図19のステップC4について述べたように、生成されたパッケージファイルについて完全性検証データを生成する。
生成されたパッケージファイルやパッケージファイルについて生成された完全性検証データは、作業者がパッケージDB206に登録する。
(その他の実施形態)
センター装置3が実行する機能は、ハードウェアで実現しても良いし、ソフトウェアで実現しても良い。また、ハードウェアとソフトウェアとの協働により実現しても良い。
書換えるデータは、アプリプログラムだけでなく、地図等のデータや、制御パラメータ等のデータであっても良い。
構成情報の内容は例示したものに限ることなく、個別の設計に応じて適宜選択すれば良い。
諸元データの内容についても、例示したものに限ることはない。
キャンペーン情報,配信諸元データについては、配信パッケージに含めて車両側に送信しても良く、配信パッケージとは別個に車両側に送信しても良い。
第5実施形態において、予め配信パッケージ及び第3検証値をパッケージ記憶部に記憶しておき、パッケージ送信部213は、車載側システム4からの要求に応じて、当該要求に紐づく配信パッケージ及び第3検証値を車載側システム4に送信しても良い。
以下、車両用プログラム書換えシステム1の動作を中心とする第6実施形態について図面を参照して説明する。車両用プログラム書換えシステム(車両用電子制御システムに相当する)は、電子制御装置(以下、ECU(Electronic Control Unit)と称する)に搭載されている車両制御や診断等のアプリプログラムをOTA(Over The Air)により書換え可能なシステムである。本実施形態では、アプリプログラムを有線又は無線で書換える場合について説明するが、例えば地図アプリで使用される地図データ、ECUで使用される制御パラメータ等、各種アプリで使用されるデータを有線又は無線で書換える場合にも適用することができる。
有線でのアプリプログラムの書換えは、アプリプログラムを車両外部から有線を介して取得して書換えることに加え、アプリプログラムが実行される際に使用される各種データを車両外部から有線を介して取得して書換えることも含む。無線でのアプリプログラムの書換えは、アプリプログラムを車両外部から無線を介して取得して書換えることに加え、アプリプログラムが実行される際に使用される各種データを車両外部から無線を介して取得して書換えることも含む。
図37に示すように、車両用プログラム書換えシステム1は、通信ネットワーク2側のセンター装置3と、車両側の車両側システム4と、表示端末5とを有する。通信ネットワーク2は、例えば4G回線等による移動体通信ネットワーク、インターネット、WiFi(Wireless Fidelity)(登録商標)等を含んで構成される。
表示端末5は、ユーザからの操作入力を受付ける機能や各種画面を表示する機能を有する端末であり、例えばユーザが携帯可能なスマートフォンやタブレット等の携帯端末6、車室内に配置されている車載ディスプレイ7である。携帯端末6は、移動体通信ネットワークの通信圏内であれば、通信ネットワーク2を介してセンター装置3とデータ通信可能である。車載ディスプレイ7は、車両側システム4に接続されており、ナビゲーション機能を兼用する構成であっても良い。又、車載ディスプレイ7は、ECUの機能を有する車載ディスプレイECUであっても良いし、センターディスプレイやメータディスプレイ等への表示を制御する機能を有していても良い。
ユーザは、車室外であって移動体通信ネットワークの通信圏内であれば、アプリプログラムの書換えに関与する各種画面を携帯端末6により確認しながら操作入力を行い、アプリプログラムの書換えに関与する手続きを可能である。ユーザは、車室内では、アプリプログラムの書換えに関与する各種画面を車載ディスプレイ7により確認しながら操作入力を行い、アプリプログラムの書換えに関与する手続きを可能である。即ち、ユーザは、車室外と車室内で携帯端末6と車載ディスプレイ7を使い分け、アプリプログラムの書換えに関与する手続きを可能である。
センター装置3は、車両用プログラム書換えシステム1において通信ネットワーク2側のプログラム更新機能を統括し、OTAセンターとして機能する。センター装置3は、ファイルサーバ8と、ウェブサーバ9と、管理サーバ10とを有し、各サーバ8~10が相互にデータ通信可能に構成されている。即ち、センター装置3は、機能毎に異なる複数のサーバを含んで構成されている。
ファイルサーバ8は、センター装置3から車両側システム4に配信されるアプリプログラムのファイルを管理するサーバである。ファイルサーバ8は、センター装置3から車両側システム4に配信されるアプリプログラムの提供事業者であるサプライヤ等から提供される更新データ(以下、リプログデータ、書込みデータとも称する)、OEM(Original Equipment Manufacturer)から提供される配信諸元データ、車両側システム4から取得する車両状態等を管理する。ファイルサーバ8は、通信ネットワーク2を介して車両側システム4との間でデータ通信可能であり、配信パッケージのダウンロード要求が発生すると、リプログデータと配信諸元データとが1つのファイルにパッケージ化された配信パッケージを車両側システム4に送信する。
ウェブサーバ9は、ウェブ情報を管理するサーバである。ウェブサーバ9は、携帯端末6等が有するウェブブラウザからの要求に応じて自己が管理するウェブデータを送信する。管理サーバ10は、アプリプログラムの書換えのサービスに登録しているユーザの個人情報、車両毎のアプリプログラムの書換え履歴等を管理するサーバである。
車両側システム4は、マスタ装置11(車両用マスタ装置に相当する)を有する。マスタ装置11は、DCM(Data Communication Module)12(車載通信機に相当する)と、CGW(Central Gate Way)13(車両用ゲートウェイ装置に相当する)とを有する。DCM12とCGW13とは、第1バス14を介してデータ通信可能に接続されている。DCM12は、センター装置3との間で通信ネットワーク2を介してデータ通信を行う。DCM12は、ファイルサーバ8から配信パッケージをダウンロードすると、そのダウンロードした配信パッケージから書込みデータを抽出し、その抽出した書込みデータをCGW13に転送する。
CGW13は、データ中継機能を有し、DCM12から書込みデータを取得すると、その取得した書込みデータの書込みをアプリプログラムの書換え対象である書換え対象ECUに指示し、書込みデータを書換え対象ECUに配信する。又、CGW13は、書換え対象ECUにおいて書込みデータの書込みが完了し、アプリプログラムの書換えが完了すると、その書換え完了後のアプリプログラムを有効とするアクティベートを書換え対象ECUに指示する。
マスタ装置11は、車両用プログラム書換えシステム1において車両側のプログラム更新機能を統括し、OTAマスタとして機能する。尚、図37では、DCM12と車載ディスプレイ7が同一の第1バス14に接続されている構成を例示しているが、DCM12と車載ディスプレイ7とが別々のバスに接続されている構成でも良い。又、DCM12の機能の一部又は全体をCGW13が有する構成でも良いし、CGW13の機能の一部又は全体をDCM12が有する構成でも良い。即ち、マスタ装置11において、DCM12とCGW13との機能分担がどのように構成されていても良い。マスタ装置11は、DCM12及びCGW13の2つのECUから構成されても良いし、DCM12の機能とCGW13の機能とを有する1つの統合ECUで構成されても良い。
CGW13には、第1バス14に加え、第2バス15と、第3バス16と、第4バス17と、第5バス18とが車内側のバスとして接続されており、バス15~17を介して各種ECU19が接続されていると共に、バス18を介して電源管理ECU20が接続されている。
第2バス15は、例えばボディ系ネットワークのバスである。第2バス15に接続されているECU19は、ボディ系の制御を行うECUである。ボディ系の制御を行うECUは、例えばドアのロック/アンロックを制御するドアECU、メータディスプレイへの表示を制御するメータECU、エアコンの駆動を制御するエアコンECU、ウィンドウの開閉を制御するウィンドウECU、車両の盗難防止のために駆動するセキュリティECU等である。
第3バス16は、例えば走行系ネットワークのバスである。第3バス16に接続されているECU19は、走行系の制御を行うECUである。走行系の制御を行うECUは、例えばエンジンの駆動を制御するエンジンECU、ブレーキの駆動を制御するブレーキECU、自動変速機の駆動を制御するECT(Electronic Controlled Transmission)ECU、パワーステアリングの駆動を制御するパワーステアリングECU等である。
第4バス17は、例えばマルチメディア系ネットワークのバスである。第4バス17に接続されているECU19は、マルチメディア系の制御を行うECUである。マルチメディア系の制御を行うECUは、例えばナビゲーションシステムを制御するためのナビゲーションECU、電子式料金収受システム(ETC(Electronic Toll Collection System、登録商標))を制御するETCECU等である。バス15~17は、ボディ系ネットワークのバス、走行系ネットワークのバス、マルチメディア系ネットワークのバス以外の系統のバスであっても良い。又、バスの本数やECU19の個数は例示した構成に限らない。
電源管理ECU20は、DCM12、CGW13、各種ECU19等に供給する電源を管理するECUである。
CGW13には、第6バス21が車外側のバスとして接続されている。第6バス21には、ツール23(サービスツールに相当する)が着脱可能に接続されるDLC(Data Link Coupler)コネクタ22が接続されている。車内側のバス14~18及び車外側のバス21は、例えばCAN(Controller Area Network、登録商標)バスにより構成されており、CGW13は、CANのデータ通信規格や診断通信規格(UDS(Unified Diagnosis Services):ISO14229)にしたがってDCM12と、各種ECU19と、ツール23との間でデータ通信を行う。尚、DCM12とCGW13とがイーサーネットにより接続されていても良いし、DLCコネクタ22とCGW13とがイーサーネットにより接続されても良い。
書換え対象ECU19は、CGW13から書込みデータを受信すると、その受信した書込みデータをフラッシュメモリ(不揮発性メモリに相当する)に書込んでアプリプログラムを書換える。上記した構成では、CGW13は、書換え対象ECU19から書込みデータの取得要求を受信すると、書込みデータを書換え対象ECU19に配信するリプログマスタとして機能する。書換え対象ECU19は、CGW13から書込みデータを受信すると、その受信した書込みデータをフラッシュメモリに書込んでアプリプログラムを書換えるリプログスレーブとして機能する。
アプリプログラムを書換える態様としては、有線で書換える態様と、無線で書換える態様とがある。アプリプログラムを有線で書換える態様とは、車両外部から有線を介して取得したアプリプログラムを用いて書換え対象ECU19を書換える態様である。具体的には、ツール23がDLCコネクタ22に接続されると、ツール23は、書込みデータをCGW13に転送する。CGW13は、ゲートウェイとして機能し、有線書換え要求を書換え対象ECU19に送信し、書込みデータの書込み(インストール)を書換え対象ECU19に指示し、ツール23から転送された書込みデータを書換え対象ECU19に配信する。書込みデータを書換え対象ECU19に配信することは、書込みデータを中継することである。
アプリプログラムを無線で書換える態様とは、車両外部から無線を介して取得したアプリプログラムを用いて書換え対象ECU19を書換える態様である。具体的には、DCM12は、ファイルサーバ8から配信パッケージをダウンロードすると、そのダウンロードした配信パッケージから書込みデータを抽出し、その書込みデータをCGW13に転送する。CGW13は、書換えツールとして機能し、書込みデータの書込み(インストール)を書換え対象ECU19に指示し、DCM12から転送された書込みデータを書換え対象ECU19に配信する。
ECU19を診断する態様としては、有線で診断する態様と、無線で診断する態様とがある。有線で診断する態様とは、車両外部から有線を介してECU19を診断する態様である。具体的には、ツール23がDLCコネクタ22に接続されると、ツール23は、診断要求をCGW13に転送する。CGW13は、ゲートウェイとして機能し、診断要求を診断対象ECU19に送信し、ツール23から転送された診断コマンドを診断対象ECU19に配信する。診断対象ECU19は、CGW13から受信した診断コマンドに応じた診断処理を行う。
無線で診断する態様とは、車両外部から無線を介してECU19を診断する態様である。具体的には、センター装置3からDCM12に診断要求として診断コマンドが送信されると、DCM12は、診断コマンドをCGW13に転送する。CGW13は、ゲートウェイとして機能し、診断要求として診断コマンドを診断対象ECU19に配信する。診断対象ECUは、CGW13から受信した診断コマンドに応じた診断処理を行う。
図38に示すように、CGW13は、電気的な機能ブロックとして、マイクロコンピュータ(以下、マイコンと称する)24と、データ転送回路25と、電源回路26と、電源検出回路27とを有する。マイコン24は、CPU(Central Processing Unit)24aと、ROM(Read Only Memory)24bと、RAM(Random Access Memory)24cと、フラッシュメモリ24dとを有する。フラッシュメモリ24dには、CGW13の外部から情報の読出しが不可であるセキュア領域が含まれる。マイコン24は、非遷移的実体的記憶媒体に格納されている各種制御プログラムを実行して各種処理を行い、CGW13の動作を制御する。
データ転送回路25は、バス14~18,21との間のCANのデータ通信規格や診断通信規格に準拠したデータ通信を制御する。電源回路26は、バッテリ電源(以下、+B電源と称する)、アクセサリ電源(以下、ACC電源と称する)、イグニッション電源(以下、IG電源と称する)を入力する。電源検出回路27は、電源回路26が入力する+B電源の電圧値、ACC電源の電圧値、IG電源の電圧値を検出し、これらの検出した電圧値を所定の電圧閾値と比較し、その比較結果をマイコン24に出力する。マイコン24は、電源検出回路27から入力する比較結果により、外部からCGW13に供給されている+B電源、ACC電源、IG電源が正常であるか異常であるかを判定する。
図39に示すように、DCM12は、電気的な機能ブロックとして、マイコン28と、無線回路29と、データ転送回路30と、電源回路31と、電源検出回路32とを有する。マイコン28は、CPU28aと、ROM28bと、RAM28cと、フラッシュメモリ28dとを有する。フラッシュメモリ28dには、DCM12の外部から情報の読出しが不可であるセキュア領域が含まれる。マイコン28は、非遷移的実体的記憶媒体に格納されている各種制御プログラムを実行して各種処理を行い、DCM12の動作を制御する。センター装置3からダウンロードするデータを保存するためのフラッシュメモリは、CGW13に配置しても良い。
無線回路29は、センター装置3との通信ネットワーク2を介したデータ通信を制御する。データ転送回路30は、バス14との間のCANのデータ通信規格に準拠したデータ通信を制御する。電源回路31は、+B電源、ACC電源、IG電源を入力する。電源検出回路32は、電源回路31が入力する+B電源の電圧値、ACC電源の電圧値、IG電源の電圧値を検出し、これらの検出した電圧値を所定の電圧閾値と比較し、その比較結果をマイコン28に出力する。マイコン28は、電源検出回路32から入力する比較結果により、外部からDCM12に供給されている+B電源、ACC電源、IG電源が正常であるか異常であるかを判定する。
又、DCM12は、例えばGPS(Global Positioning System)により車両位置を検出する車両位置検出機能を有する。DCM12のフラッシュメモリ28dは、センター装置3からダウンロードした配信パッケージを記憶可能な十分なメモリ容量を有し、CGW13のフラッシュメモリ24dよりも大きいメモリ容量を有する。即ち、DCM12のフラッシュメモリ28dが十分なメモリ容量を有する構成であることにより、CGW13のフラッシュメモリ24dが十分なメモリ容量を有する構成でなくても、マスタ装置11において、センター装置3から配信パッケージをダウンロードし、そのダウンロードした配信パッケージをDCM12に蓄積しておくことが可能である。
図40に示すように、ECU19は、電気的な機能ブロックとして、マイコン33と、データ転送回路34と、電源回路35と、電源検出回路36とを有する。マイコン33は、CPU28aと、ROM28bと、RAM33cと、フラッシュメモリ28dとを有する。フラッシュメモリ28dには、ECU19の外部から情報の読出しが不可であるセキュア領域が含まれる。マイコン33は、非遷移的実体的記憶媒体に格納されている各種制御プログラムを実行して各種処理を行い、ECU19の動作を制御する。
データ転送回路34は、バス15~17との間のCANのデータ通信規格に準拠したデータ通信を制御する。電源回路35は、+B電源、ACC電源、IG電源を入力する。電源検出回路36は、電源回路35が入力する+B電源の電圧値、ACC電源の電圧値、IG電源の電圧値を検出し、これらの検出した電圧値を所定の電圧閾値と比較し、その比較結果をマイコン33に出力する。マイコン33は、電源検出回路27から入力する比較結果により、外部からECU19に供給されている+B電源、ACC電源、IG電源が正常であるか異常であるかを判定する。尚、ECU19は、自己が接続する例えばセンサやアクチュエータ等の負荷が異なり、基本的には同等の構成である。
車載ディスプレイ7は、図40に示すECU19と同様の構成を有する。電源管理ECU20は、図40に示すECU19と同様の構成を有する。電源管理ECU20は、後述する電源制御回路43との間でデータ通信可能に接続される。
図41に示すように、電源管理ECU20、CGW13、ECU19は、電源供給ラインである+B電源ライン37、ACC電源ライン38、IG電源ライン39に接続されている。+B電源ライン37は、車両バッテリ40の正極に接続されている。ACC電源ライン38は、ACCスイッチ41を介して車両バッテリ40の正極に接続されている。ユーザがACC操作を行うと、ACCスイッチ41がオフからオンに切替わり、車両バッテリ40の出力電圧がACC電源ライン38に印加される。ACC操作とは、例えばキーを差込口に挿入する型の車両であれば、キーを差込口に挿入して「OFF」位置から「ACC」位置に回動する操作であり、スタートボタンを押下する型の車両であれば、スタートボタンを1回押下する操作である。
IG電源ライン39は、IGスイッチ42を介して車両バッテリ40の正極に接続されている。ユーザがIG操作を行うと、IGスイッチ42がオフからオンに切替わり、車両バッテリ40の出力電圧がIG電源ライン39に印加される。IG操作とは、例えばキーを差込口に挿入する型の車両であれば、キーを差込口に挿入して「OFF」位置から「ON」位置に回動する操作であり、スタートボタンを押下する型の車両であれば、スタートボタンを2回押下する操作である。車両バッテリ40の負極は接地されている。
ACCスイッチ41とIGスイッチ42との両方がオフであるときには、+B電源だけが車両側システム4に供給される。+B電源だけが車両側システム4に供給されている状態を+B電源状態と称する。ACCスイッチ41がオンであり、IGスイッチ42がオフであるときには、ACC電源と+B電源とが車両側システム4に供給される。ACC電源と+B電源とが車両側システム4に供給されている状態をACC電源状態と称する。ACCスイッチ41とIGスイッチ42との両方がオンであるときには、+B電源とACC電源とIG電源とが車両側システム4に供給される。+B電源とACC電源とIG電源とが車両側システム4に供給されている状態をIG電源状態と称する。又、上記した各電源状態に加え、無線によるプログラム更新に適した電源を与える電源状態等も考えられる。
ECU19は、電源状態に応じて起動条件が異なり、+B電源状態で起動する+B電源系ECU、ACC電源状態で起動するACC系ECU、IG電源状態で起動するIG系ECUに区分される。例えば車両盗難等の用途で駆動するECU19は、+B電源系ECUに区分される。例えばオーディオ等の非走行系の用途で駆動するECU19は、ACC系ECUに区分される。例えばエンジン制御等の走行系の用途で駆動するECU19は、IG系ECUに区分される。
+B電源系ECUは、+B電源ライン37、ACC電源ライン38及びIG電源ライン39に接続され、+B電源状態のときには+B電源ライン37を選択し、ACC電源状態のときにはACC電源ライン38を選択し、IG電源状態のときにはIG電源ライン39を選択するように構成される。ACC系ECUは、ACC電源ライン38及びIG電源ライン39に接続され、ACC電源状態のときにはACC電源ライン38を選択し、IG電源状態のときにはIG電源ライン39を選択するように構成される。IG系ECUは、IG電源ライン39に接続される。
CGW13は、スリープ状態にあるECU19に起動要求を送信することで、その起動要求の送信先のECU19をスリープ状態から起動状態に移行させる。又、CGW13は、起動状態にあるECU19にスリープ要求を送信することで、そのスリープ要求の送信先のECU19を起動状態からスリープ状態に移行させる。CGW13は、例えばバス15~17に送信する送信信号の波形を異ならせることで、特定のECU19を起動状態又はスリープ状態に移行させることが可能である。即ち、ECU19毎に起動要求波形及びスリープ要求波形が予め定められており、ECU19は、自己に適合する起動要求波形を受信すると、スリープ状態から起動状態に移行し、CGW13から自己に適合するスリープ要求波形を受信すると、起動状態からスリープ状態に移行する。
CGW13は、例えばECU(ID1)及びECU(ID2)が起動状態の場合に第1波形を送信することで、ECU(ID1)を起動状態からスリープ状態に移行させ、ECU(ID2)を起動状態に保持する。又、CGW13は、ECU(ID1)及びECU(ID2)が起動状態の場合に第2波形を送信することで、ECU(ID1)を起動状態に保持し、ECU(ID2)を起動状態からスリープ状態に移行させる。
ACCスイッチ41及びIGスイッチ42に対して電源制御回路43が並列接続されている。CGW13は、電源制御要求を電源管理ECU20に送信し、電源管理ECU20に電源制御回路43を制御させる。即ち、CGW13は、電源制御要求として電源起動要求を電源管理ECU20に送信することで、ACC電源ライン38やIG電源ライン39と車両バッテリ40の正極を電源制御回路43の内部で接続させる。この状態では、ACCスイッチ41やIGスイッチ42がオフであってもACC電源やIG電源が車両側システム4に供給される。又、CGW13は、電源制御要求として電源停止要求を電源管理ECU20に送信することで、ACC電源ライン38やIG電源ライン39と車両バッテリ40の正極を電源制御回路43の内部で途絶させる。
DCM12、CGW13、ECU19、電源管理ECU20は、それぞれ電源自己保持回路を有し、車両バッテリ40からの電源供給を保持する電源自己保持機能を有する。即ち、DCM12、CGW13、ECU19は、電源管理ECU20は、起動状態にあるときに車両電源がACC電源又はIG電源から+B電源に切替わると、その切替わった直後に起動状態から停止状態又はスリープ状態に移行するのではなく、車両バッテリ40からの電源供給により起動状態を所定時間(例えば数分間)に亘って継続して駆動電源を自己保持する。DCM12、CGW13、ECU19、電源管理ECU20は、車両電源がACC電源又はIG電源から+B電源に切替わった直後から所定時間が経過した後に起動状態から停止状態又はスリープ状態に移行する。例えばエンジン制御系のECU19であれば、車両電源がACC電源又はIG電源から+B電源に切替わった後に電源自己保持機能が作動することで、車両走行中に取得したエンジン制御に関する各種データをログとして記憶する。
次に、センター装置3からマスタ装置11に配信される配信パッケージについて説明する。図41に示すように、車両用プログラム書換えシステム1においては、アプリプログラムの提供事業者であるサプライヤから提供される書込みデータと、OEMから提供される書換え諸元データ(諸元データに相当する)とからリプログデータが生成される。書換え諸元データについては、センター装置3で生成しても良い。サプライヤから提供される書込みデータとしては、旧アプリプログラムと新アプリプログラムとの差分に相当する差分データと、新アプリプログラムの全体に相当する全データとがある。差分データや全データは周知のデータ圧縮技術により圧縮されていても良い。図42では、サプライヤA~Cから書込みデータとして差分データが提供され、サプライヤAから提供されるECU(ID1)の暗号済みの差分データと認証子、サプライヤBから提供されるECU(ID2)の暗号済みの差分データと認証子、サプライヤCから提供されるECU(ID3)の暗号済みの差分データと認証子、OEMから提供される書換え諸元データからリプログデータが生成されている場合を例示している。
認証子は、差分データの完全性を検証するために書込みデータ毎に付与されるデータであり、例えばECU(ID)と、そのECU(ID)に紐付く鍵情報と、差分データとから生成される。ここで、アプリプログラムの書換えが途中でキャンセルされる場合に備え、旧バージョンへの書戻し(ロールバック)用の書込みデータがリプログデータに含まれていても良い。
OEMから提供される書換え諸元データは、アプリプログラムの書換えに関与する情報として、書換え対象ECU19を特定可能な情報、書換え対象ECU19が複数の場合の書換え順序を特定可能な情報、後述するロールバック方法を特定可能な情報等を含む。書換え諸元データは、DCM12、CGW13、書換え対象ECU19等における書換えに関与する動作を定義するデータである。書換え諸元データは、DCM12が使用するDCM用の書換え諸元データと、CGW13が使用するCGW用の書換え諸元データとに区分される。
図43に示すように、DCM用の書換え諸元データは、諸元データ情報と、ECU情報とを含む。諸元データ情報は、アドレス情報と、ファイル名とを含む。ECU情報は、各書換え対象ECU19の更新プログラム(書込みデータ)をCGW13に送信する際に参照するアドレス情報等を書換え対象ECU19の個数分だけ含む。具体的には、ECU情報は、ECUを識別するID(ECU(ID))と、更新プログラムを取得する際の参照アドレス(更新プログラム取得アドレス)と、更新プログラムサイズと、ロールバックプログラムを取得する際の参照アドレス(ロールバックプログラム取得アドレス)と、ロールバックプログラムサイズとを少なくとも含む。ロールバックプログラムは、アプリプログラムの書換えが途中でキャンセルされた際に、アプリプログラムを元のバージョンに戻すためのプログラム(書込みデータ)である。
図44に示すように、CGW用の書換え諸元データは、グループ情報と、バス負荷テーブルと、バッテリ負荷と、書換え時の車両状態と、ECU情報とを含む。CGW用の書換え諸元データは、これらの他に、書き換え手順情報や表示のシーン情報等を含んでいても良い。グループ情報は、書換え対象ECU19の属するグループ及び書換え順序を示す情報であり、例えば第1グループ情報として、ECU(ID1)、ECU(ID2)、ECU(ID3)の順序でアプリプログラムを書換える旨、第2グループ情報として、ECU(ID4)、ECU(ID5)、ECU(ID6)の順序でアプリプログラムを書換える旨が規定されている。バス負荷テーブルは、後述する図136に示すテーブルであり、詳細については後述する。バッテリ負荷は、車両において許容可能な車両バッテリ40のバッテリ残量の下限値を示す情報である。書換え時の車両状態は、車両状態がどのような場合に書換えを行うかを示す情報である。
ECU情報は、書換え対象ECU19に関する情報であり、ECU_ID(装置識別情報に相当する)と、接続バス(バス識別情報に相当する)と、接続電源と、セキュリティアクセス鍵情報と、メモリ種別と、書換え方法と、電源自己保持時間と、書換え面情報と、更新プログラムバージョンと、更新プログラム取得アドレスと、更新プログラムサイズと、ロールバックプログラムバージョンと、ロールバックプログラム取得アドレスと、ロールバックプログラムサイズと、書込みデータ種別とを少なくとも含む。
接続バスは、ECU19が接続されるバスを示す。接続電源は、ECU19が接続される電源ラインを示す。セキュリティアクセス鍵情報は、CGW13が書換え対象ECU19にアクセスするための認証に用いる鍵情報を示し、乱数値又はユニークな情報、鍵パターン、復号演算パターンを含む。メモリ種別は、書換え対象ECU19に搭載されているメモリが1面単独メモリ、1面サスペンドメモリ(疑似2面メモリとも称する)、2面メモリの何れであるかを示す。書換え方法は、電源自己保持による書換え又は電源制御による書換えの何れであるかを示す。電源自己保持時間は、書換え方法が電源自己保持による書換えである場合に、電源自己保持を継続する時間を示す。書換え面情報は、何れの面が運用面であり、何れの面が非運用面であるかを示す。運用面は起動面とも称し、非運用面は書換え面とも称する。
更新プログラムバージョンは、更新プログラムのバージョンを示す。更新プログラム取得アドレスは、更新プログラムのアドレスを示す。更新プログラムサイズは、更新プログラムのデータサイズを示す。ロールバックプログラムバージョンは、ロールバックプログラムのバージョンを示す。ロールバックプログラム取得アドレスは、ロールバックプログラムのアドレスを示す。ロールバックプログラムサイズは、ロールバックプログラムのデータサイズを示す。書込みデータ種別は、書込みデータが差分データ又は全データの何れの種別であるかを示す。尚、書換え諸元データには、これらの情報の他に、システムで独自に定義した情報を含むことが可能である。
DCM12は、DCM用の書換え諸元データを取得すると、その取得したDCM用の書換え諸元データを解析する。DCM12は、DCM用の書換え諸元データを解析すると、書換え対象ECU19の更新プログラムが格納されるアドレスから書込みデータを取得し、その取得した書込みデータをCGW13に転送する等の書換えに関与する動作を制御する。
CGW13は、CGW用の書換え諸元データを取得すると、その取得したCGW用の書換え諸元データを解析する。CGW13は、CGW用の書換え諸元データを解析すると、その解析結果にしたがって書換え対象ECU19の更新プログラムの所定サイズ分の転送をDCM12に要求したり、書込みデータを指定された順序で書換え対象ECU19に配信したりする等の書換えに関与する動作を制御する。
ファイルサーバ8には、上記したリプログデータが登録されると共に、OEMから提供される配信諸元データが登録される。OEMから提供される配信諸元データは、表示端末5における各種画面の表示に関与する動作を定義するデータである。図45に示すように、配信諸元データは、言語情報と、表示文言と、パッケージ情報と、画像データと、表示パターンと、表示制御プログラム等を含む。
表示端末5は、CGW13から配信諸元データを取得すると、その取得した配信諸元データ解析し、その解析結果にしたがって各種画面の表示を制御する。表示端末5は、例えば予め保持している表示用フレームに対し、配信諸元データから取得した表示文言を重畳して表示したり、配信諸元データから取得した表示制御プログラムを実行したりする。尚、配信諸元データには、これらの情報の他に、システムで独自に定義した情報を含めることが可能である。
ファイルサーバ8は、リプログデータと配信諸元データとが登録されると、その登録されたリプログデータを暗号化し、パッケージを認証するためのパッケージ認証子と、暗号済みのリプログデータと、配信諸元データとを格納した配信パッケージを生成する。認証子は、リプログデータ及び配信諸元データの完全性を検証するために付与されるデータであり、例えばCGW13に紐付く鍵情報、リプログデータ及び配信諸元データから生成される。ファイルサーバ8は、外部から配信パッケージのダウンロード要求を受信すると、その配信パッケージをDCM12に送信する。尚、ファイルサーバ8は、図42では、リプログデータと配信諸元データとを格納した配信パッケージを生成し、リプログデータと配信諸元データを1つのファイルとして同時にDCM12に送信する場合を例示しているが、リプログデータと配信諸元データとを別々のファイルとしてDCM12に送信しても良い。即ち、ファイルサーバ8は、先に配信諸元データをDCM12に送信し、後からリプログデータをDCM12に送信しても良い。その場合、配信諸元データ、リプログデータのそれぞれに対して認証子を付与すると良い。
図46に示すように、DCM12は、ファイルサーバ8から配信パッケージをダウンロードすると、そのダウンロードした配信パッケージに格納されているパッケージ認証子を用い、暗号済みのリプログデータの完全性を検証する。DCM12は、検証結果が正であると、暗号済みのリプログデータを復号化する。DCM12は、暗号済みのリプログデータを復号化すると、その復号化したリプログデータをアンパック(以下、アンパッケージングとも称する)し、暗号済みの差分データと認証子、DCM用の書換え諸元データ、CGW用の書換え諸元データに分割して抽出する。図46では、ECU(ID1)の暗号済みの差分データと認証子、ECU(ID2)の暗号済みの差分データと認証子、ECU(ID3)の暗号済みの差分データと認証子、DCM用の書換え諸元データ、CGW用の書換え諸元データに分割して抽出する場合を例示している。
次に、ECU19のフラッシュメモリ33dについて図47から図58を参照して説明する。ECU19のフラッシュメモリ33dは、メモリ構成に応じて、フラッシュ面を1面で持つ1面単独メモリ、フラッシュ面を疑似的な2面で持つ1面サスペンドメモリ、フラッシュ面を実質的な2面で持つ2面メモリに区分される。これ以降、1面単独メモリを搭載するECU19を1面単独メモリECUと称し、1面サスペンドメモリを搭載するECU19を1面サスペンドメモリECUと称し、2面メモリを搭載するECU19を2面メモリECUと称する。
1面単独メモリは、フラッシュ面を1面で持つ構成であるので、運用面及び非運用面と言う概念はなく、アプリプログラムを実行中にアプリプログラムを書換え不可である。一方、1面サスペンドメモリや2面メモリは、フラッシュ面を2面で持つ構成であるので、運用面及び非運用面と言う概念があり、運用面のアプリプログラムを実行中に非運用面のアプリプログラムを書換え可能である。2面メモリは、フラッシュ面を完全に分離した2面で持つ構成であるので、車両走行中等の任意のタイミングでアプリプログラムを書換え可能である。1面サスペンドメモリは、1面単独メモリを疑似的に2面で区切っている構成であるので、読出しや書込みを正常に行えるタイミングに制約があり、車両走行中でアプリプログラムを書換え不能であり、IG電源がオフされている駐車中にアプリプログラムを書換え可能である。
又、1面単独メモリ、1面サスペンドメモリ、2面メモリは、それぞれリプログファームウェアが組込まれているリプログファームウェア組込み型(以下、組込み型と称する)と、リプログファームウェアを外部からダウンロードするリプログファームウェアダウンロード型(以下、ダウンロード型と称する)とがある。リプログファームウェアは、アプリプログラムを書換えるためのファームウェアである。
以下、各フラッシュメモリの構成について順次説明する。
(A)1面単独メモリ
(A-1)組込み型の1面単独メモリ
組込み型の1面単独メモリについて図47及び図48を参照して説明する。組込み型の1面単独メモリは、差分エンジンワーク領域と、アプリプログラム領域と、ブートプログラム領域とを有する。アプリプログラム領域には、バージョン情報と、パラメータデータと、アプリプログラムと、ファームウェアと、通常時ベクタテーブルとが配置されている。ブート領域には、ブートプログラムと、進捗状態ポイント2と、進捗状態ポイント1と、起動判定情報と、無線リプログファームウェアと、有線リプログファームウェアと、起動判定用プログラムと、ブート時ベクタテーブルとが配置されている。
図47に示すように、マイコン33は、車両制御処理や診断処理等のアプリ処理を実行する通常動作時では、起動判定用プログラムを実行し、ブート時ベクタテーブルと通常時ベクタテーブルを参照して先頭アドレスを探索し、アプリプログラムの所定アドレスを実行する。
マイコン33は、アプリプログラムの書換え処理を実行する書換え動作時では、アプリプログラムでなく無線又は有線リプログファームウェアを実行する。図48は、更新プログラムとして差分データを用いてアプリプログラムを書換える動作を示す。図48に示すように、マイコン33は、アプリプログラムを旧データとして差分エンジンワーク領域に一旦退避させる。マイコン33は、差分エンジンワーク領域に一旦退避させた旧データを読出し、組込んでいるリプログファームウェアに含まれる差分エンジンにより、その読出した旧データと、RAM33cに記憶した差分データとから新データを復元する。マイコン33は、旧データと差分データから新データを生成すると、その新データをメモリの所定アドレスに書込んでアプリプログラムを書換える。
(A-2)ダウンロード型の1面単独メモリ
ダウンロード型の1面単独メモリについて図49及び図50を参照して説明する。ダウンロード型は、上記した組込み型と比較し、無線リプログファームウェアや有線リプログファームウェアを外部からダウンロードし、アプリプログラムを書換えた後に、その無線リプログファームウェアや有線リプログファームウェアを削除する点で異なる。アプリプログラムを無線で更新する場合、例えば図42に示したリプログデータの中に、各ECU19で実行する無線リプログファームウェアを含めておく。ECU19は、CGW13から自ECU向け無線リプログファームウェアを受信し、その受信した自ECU向け無線リプログファームウェアをRAMに保存する。
図49に示すように、マイコン33は、車両制御処理や診断処理等のアプリ処理を実行する通常動作時では、組込み型と同様に、起動判定用プログラムを実行し、ブート時ベクタテーブルと通常時ベクタテーブルを参照して先頭アドレスを探索し、アプリプログラムの所定アドレスを実行する。
図50に示すように、マイコン33は、アプリプログラムの書換え処理を実行する書換え動作時では、アプリプログラムを旧データとして差分エンジンワーク領域に一旦退避させる。マイコン33は、差分エンジンワーク領域に一旦退避させた旧データを読出し、外部からダウンロードされたリプログファームウェアに含まれる差分エンジンにより、その読出した旧データと、RAM33cに記憶した差分データとから新データを復元する。マイコン33は、旧データと差分データから新データを生成すると、その新データを書込んでアプリプログラムを書換える。
(B)1面サスペンドメモリ
(B-1)組込み型の1面サスペンドメモリ
組込み型の1面サスペンドメモリについて図51及び図52を参照して説明する。組込み型の1面サスペンドメモリは、差分エンジンワーク領域と、アプリプログラム領域と、ブートプログラム領域とを有する。プログラム更新を行うリプログファームウェアは、1面単独メモリと同様、ブートプログラム領域に配置され、プログラム更新の対象外である。プログラム更新の対象であるアプリプログラム領域は、A面とB面を疑似的に有し、A面とB面には、それぞれバージョン情報と、アプリプログラムと、通常時ベクタテーブルとが配置されている。ブート領域には、ブートプログラムと、リプログファームウェアと、リプログ時ベクタテーブルと、起動面判定機能と、起動面判定情報と、ブート時ベクタテーブルとが配置されている。
図51に示すように、マイコン33は、車両制御処理や診断処理等のアプリ処理を実行する通常動作時では、ブートプログラムを実行して起動面判定機能によりA面とB面の各起動面判定情報からA面及びB面のうち何れが運用面であるかを判定する。マイコン33は、A面を運用面とすると判定すると、A面の通常時ベクタテーブルを参照して先頭アドレスを探索し、A面のアプリプログラムを実行する。同様に、マイコン33は、B面を運用面とすると判定すると、B面の通常時ベクタテーブルを参照して先頭アドレスを探索し、B面のアプリプログラムを実行する。尚、図51では、リプログファームウェアをブートプログラム領域に配置したが、リプログファームウェアもプログラム更新の対象とし、A面又はB面のそれぞれの領域に配置するように構成しても良い。
図52に示すように、マイコン33は、非運用面のアプリプログラムの書換え処理を実行する書換え動作時では、非運用面のアプリプログラムを旧データとして差分エンジンワーク領域に一旦退避させる。マイコン33は、差分エンジンワーク領域に一旦退避させた旧データを読出し、組込んでいるリプログファームウェア内の差分エンジンにより、その読出した旧データと、RAM33cに記憶した差分データとから新データを復元する。マイコン33は、旧データと差分データから新データを生成すると、その新データを非運用面に書込んで非運用面のアプリプログラムを書換える。図52では、A面が運用面であり、B面が非運用面である場合を例示している。
(B-2)ダウンロード型の1面サスペンドメモリ
ダウンロード型の1面サスペンドメモリについて図53及び図54を参照して説明する。ダウンロード型は、上記した組込み型と比較し、リプログファームウェアとリプログ時ベクタテーブルを外部からダウンロードし、アプリプログラムを書換えた後に、そのリプログファームウェアとリプログ時ベクタテーブルを削除する点で異なる。
図53に示すように、マイコン33は、車両制御処理や診断処理等のアプリ処理を実行する通常動作時では、組込み型と同様に、ブートプログラムを実行して起動面判定機能によりA面とB面の各起動面判定情報から新旧を判定し、A面及びB面のうち何れが運用面であるかを判定する。マイコン33は、A面を運用面とすると判定すると、A面の通常時ベクタテーブルを参照して先頭アドレスを探索し、A面のアプリプログラムを実行する。同様に、マイコン33は、B面を運用面とすると判定すると、B面の通常時ベクタテーブルを参照して先頭アドレスを探索し、B面のアプリプログラムを実行する。
図54に示すように、マイコン33は、アプリプログラムの書換え処理を実行する書換え動作時では、非運用面のアプリプログラムを旧データとして差分エンジンワーク領域に一旦退避させる。マイコン33は、差分エンジンワーク領域に一旦退避させた旧データを読出し、外部からダウンロードされたリプログファームウェア内の差分エンジンにより、その読出した旧データと、RAM33cに記憶した差分データとから新データを復元する。マイコン33は、旧データと差分データから新データを生成すると、その新データを書込んでアプリプログラムを書換える。図54では、A面が運用面であり、B面が非運用面である場合を例示している。このように1面サスペンドメモリでは、A面のアプリプログラムを実行しつつ、B面のアプリプログラムの書換えをバックグラウンドで実行することができる。
(C)2面メモリ
(C-1)組込み型の2面メモリ
組込み型の2面メモリについて図55及び図56を参照して説明する。組込み型の1面単独メモリは、A面のアプリプログラム領域及び書換えプログラム領域と、B面のアプリプログラム領域及び書換えプログラム領域と、ブートプログラム領域とを有する。ブート領域には、ブートプログラムが書換え不能として配置されている。ブートプログラムは、ブートスワップ機能と、ブート時ベクタテーブルを含む。各アプリプログラム領域には、バージョン情報と、パラメータデータと、アプリプログラムと、ファームウェアと、通常時ベクタテーブルとが配置されている。各書換えプログラム領域には、書換えを制御するプログラムと、リプログ進捗管理情報2と、リプログ進捗管理情報1と、起動面判定情報と、無線リプログファームウェアと、有線リプログファームウェアと、ブート時ベクタテーブルとが配置されている。ブート領域には、ブートプログラムと、ブートスワップ機能と、ブート時ベクタテーブルとが配置されている。
図55に示すように、マイコン33は、車両制御処理や診断処理等のアプリ処理を実行する通常動作時及び非運用面のアプリプログラムの書換え処理を実行する書換え動作時とも、ブートプログラムを実行してA面とB面の各起動面判定情報からブートスワップ機能により新旧を判定し、A面及びB面の何れが運用面であるかを判定する。マイコン33は、A面を運用面とすると判定すると、A面のブート時ベクタテーブルとA面の通常時ベクタテーブルを参照して先頭アドレスを探索し、A面のアプリプログラムを実行する。同様に、マイコン33は、B面を運用面とすると判定すると、B面のブート時ベクタテーブルとB面の通常時ベクタテーブルを参照して先頭アドレスを探索し、B面のアプリプログラムを実行する。
図56に示すように、マイコン33は、非運用面のアプリプログラムの書換え処理を実行する書換え動作時では、非運用面のアプリプログラムを旧データとして差分エンジンワーク領域に一旦退避させる。マイコン33は、差分エンジンワーク領域に一旦退避させた旧データを読出し、組込んでいるリプログファームウェア内の差分エンジンにより、その読出した旧データと、RAM33cに記憶した差分データとから新データを復元する。マイコン33は、旧データと差分データから新データを生成すると、その新データを非運用面に書込んで非運用面のアプリプログラムを書換える。尚、差分エンジンワーク領域に一旦退避させる旧データは、運用面のアプリプログラムを対象としても良いし、非運用面のアプリプログラムを対象としても良い。この時、運用面のアプリプログラムを対象とする場合は、新データの書込み前に非運用面のデータを消去する。ここで、車両外部から取得したリプログデータが差分データでなく全データ(フルデータ)である場合、取得したリプログデータを新データとして非運用面に書込むこととなる。図56では、A面が運用面であり、B面が非運用面である場合を例示している。尚、差分エンジンワーク領域に一旦退避させる旧データは、運用面のアプリプログラムを対象としても良いし、非運用面のアプリプログラムを対象としても良い。アプリプログラムの実行アドレスを合致させる必要がある場合には、非運用面のアプリプログラムを旧データとして退避させる。
(C-2)ダウンロード型の2面メモリ
ダウンロード型の2面メモリについて図57及び図58を参照して説明する。ダウンロード型は、上記した組込み型と比較し、無線リプログファームウェアや有線リプログファームウェアを外部からダウンロードし、アプリプログラムを書換えた後に、その無線リプログファームウェアや有線リプログファームウェアを削除する点で異なる。
図57に示すように、マイコン33は、車両制御処理等のアプリ処理や診断処理を実行する通常動作時及び非運用面のアプリプログラムの書換え処理を実行する書換え動作時とも、組込み型と同様に、ブートプログラムを実行してA面とB面の各起動面判定情報からブートスワップ機能により新旧を判定し、A面及びB面の何れが運用面であるかを判定し、運用面のアプリプログラムを実行してアプリ処理を実行する。
図58に示すように、マイコン33は、アプリプログラムの書換え処理を実行する書換え動作時では、非運用面のアプリプログラムを旧データとして差分エンジンワーク領域に一旦退避させる。マイコン33は、差分エンジンワーク領域に一旦退避させた旧データを読出し、その読出した旧データと、外部からダウンロードされたリプログファームウェアによりRAM33cに記憶した差分データとから新データを復元する。マイコン33は、旧データと差分データから新データを生成すると、その新データを非運用面に書込んで非運用面のアプリプログラムを書換える。尚、差分エンジンワーク領域に一旦退避させる旧データは、運用面のアプリプログラムを対象としても良いし、非運用面のアプリプログラムを対象としても良い。この時、運用面のアプリプログラムを対象とする場合は、新データの書込み前に非運用面のデータを消去する。ここで、車両外部から取得したリプログデータが差分データでなく全データ(フルデータ)である場合、取得したリプログデータを新データとして非運用面に書込むこととなる。図58では、A面が運用面であり、B面が非運用面の場合を例示している。尚、差分エンジンワーク領域に一旦退避させる旧データは、運用面のアプリプログラムを対象としても良いし、非運用面のアプリプログラムを対象としても良い。このように2面メモリでは、A面のアプリプログラムを実行しつつ、B面のアプリプログラムの書換えをバックグラウンドで実行することができる。
上記したように、組込み型及びダウンロード型の何れの構成でも、各アプリ領域に、アプリプログラムと、アプリプログラムを書換えるための書換えプログラムが配置されている。尚、図56及び図58では、アプリプログラムをリプログ対象として示したが、書換えプログラムもリプログ対象としても良い。又、書換えプログラムを書換え不能としたい場合には、書換えプログラムをブート領域に配置しても良い。例えばディーラー等においてツール23を介した有線での書換えが確実に実施可能となるように有線書換えのためのプログラムをブート領域に配置して良い。
次に、アプリプログラムを書換える全体シーケンスについて図59から図61を参照して説明する。尚、ここでは、ユーザが表示端末5として携帯端末6を操作して駐車中にアプリプログラムを書換える場合について説明するが、車載ディスプレイ7を操作して駐車中にアプリプログラムを書換える場合についても同様である。センター装置3からDCM12に送信される配信パッケージには、1つ以上の書換え対象ECU19の書込みデータが格納される。即ち、配信パッケージには、書換え対象ECU19が1つであれば、その1つの書換え対象ECU19に向けた1つの書込みデータが格納され、書換え対象ECU19が複数であれば、その複数の書換え対象ECU19の個々に向けた複数の書込みデータが格納される。ここでは、書換え対象ECU19が2個であり、2つの書換え対象ECU19を書換え対象ECU(ID1)及び書換え対象ECU(ID2)と称する。又、書換え対象ECU(ID1)及び書換え対象ECU(ID2)以外のECU19を、その他のECUと称する。
書換え対象ECU(ID1)及び書換え対象ECU(ID2)は、それぞれ例えばバージョン通知信号の送信要求をマスタ装置11から受信したと判定すると、バージョン通知信号の送信条件が成立したと判定する。書換え対象ECU(ID1)は、バージョン通知信号の送信条件が成立すると、自己が記憶しているアプリプログラムのバージョン情報と自己を識別可能なECU(ID)を含むバージョン通知信号をマスタ装置11に送信する。マスタ装置11は、書換え対象ECU(ID1)からバージョン通知信号を受信すると、その受信したバージョン通知信号をセンター装置3に送信する。同様に、書換え対象ECU(ID2)は、バージョン通知信号の送信条件が成立すると、自己が記憶しているアプリプログラムのバージョンと自己を識別可能なECU(ID)とを含むバージョン通知信号をマスタ装置11に送信する。マスタ装置11は、書換え対象ECU(ID2)からバージョン通知信号を受信すると、その受信したバージョン通知信号をセンター装置3に送信する。
センター装置3は、書換え対象ECU(ID1)及び書換え対象ECU(ID2)からバージョン通知信号を受信すると、その受信したバージョン通知信号に含まれるアプリプログラムのバージョンとECU(ID)を特定し、そのバージョン通知信号の送信元の書換え対象ECU19に配信すべき書込みデータの有無を判定する。センター装置3は、書換え対象から受信したバージョン通知信号から書換え対象ECU19の現在のアプリプログラムのバージョンを特定し、その現在のアプリプログラムのバージョンと、管理している最新のバージョンとを照合する。
センター装置3は、バージョン通知信号から特定したバージョンが、管理している最新のバージョンと同じ値であれば、そのバージョン通知信号の送信元の書換え対象ECU19に配信すべき書込みデータがなく、書換え対象ECU19に記憶されているアプリプログラムをアップデートする必要がないと判定する。一方、センター装置3は、バージョン通知信号から特定したバージョンが、管理している最新のバージョンよりも小さい値であれば、そのバージョン通知信号の送信元の書換え対象ECU19に配信すべき書込みデータがあり、書換え対象ECU19に記憶されているアプリプログラムをアップデートする必要があると判定する。
センター装置3は、書換え対象ECU19に記憶されているアプリプログラムをアップデートする必要があると判定すると、アップデートする必要がある旨を携帯端末6に通知する。携帯端末6は、アップデートする必要がある旨を通知されると、配信可否画面を表示する(A1)。配信可否画面は、後述するキャンペーン通知画面と同等である。ユーザは、携帯端末6に表示される配信可否画面によりアップデートする必要がある旨を確認することができ、アップデートするか否かを選択することができる。
ユーザがアップデートする旨を携帯端末6において選択すると(A2)、携帯端末6は、配信パッケージのダウンロード要求をセンター装置3に通知する。センター装置3は、携帯端末6から配信パッケージのダウンロード要求が通知されると、配信パッケージをマスタ装置11に送信する。
マスタ装置11は、センター装置3から配信パッケージをダウンロードすると、そのダウンロードした配信パッケージに対してパッケージ認証処理を開始する(B1)。マスタ装置11は、配信パッケージを認証し、パッケージ認証処理を完了すると、書込みデータ抽出処理を開始する(B2)。マスタ装置11は、配信パッケージから書込みデータを抽出し、書込みデータ抽出処理を完了すると、ダウンロード完了通知信号をセンター装置3に送信する。
センター装置3は、マスタ装置11からダウンロード完了通知信号を受信すると、ダウンロードの完了を携帯端末6に通知する。携帯端末6は、センター装置3からダウンロードの完了が通知されると、ダウンロード完了通知画面を表示する(A3)。ユーザは、携帯端末6に表示されるダウンロード完了通知画面によりダウンロードが完了した旨を確認することができ、車両側におけるアプリプログラムの書換え開始時刻を設定することができる。
ユーザが車両側におけるアプリプログラムの書換え開始時刻を携帯端末6において設定すると(A4)、携帯端末6は、書換え開始時刻をセンター装置3に通知する。センター装置3は、携帯端末6から書換え開始時刻が通知されると、そのユーザが設定した書換え開始時刻を設定開始時刻として記憶する。センター装置3は、現在時刻が設定開始時刻に到達すると(A5)、書換え指示信号をマスタ装置11に送信する。
マスタ装置11は、センター装置3から書換え指示信号を受信すると、電源起動要求を電源管理ECU20に送信し、書換え対象ECU(ID1)、書換え対象ECU(ID2)、その他のECUを停止状態又はスリープ状態から起動状態に移行させる(X1)。
マスタ装置11は、書換え対象ECU(ID1)への書込みデータの配信を開始し、書込みデータの書込みを書換え対象ECU(ID1)に指示する。書換え対象ECU(ID1)は、マスタ装置11からの書込みデータの受信を開始し、書込みデータの書込みが指示されると、書込みデータの書込みを開始し、プログラム書換え処理を開始する(C1)。書換え対象ECU(ID1)は、マスタ装置11からの書込みデータの受信を完了し、書込みデータの書込みを完了し、プログラム書換え処理を完了すると、書換え完了通知信号をマスタ装置11に送信する。
マスタ装置11は、書換え対象ECU(ID1)から書換え完了通知信号を受信すると、書換え対象ECU(ID2)への書込みデータの配信を開始し、書込みデータの書込みを書換え対象ECU(ID2)に指示する。書換え対象ECU(ID2)は、マスタ装置11からの書込みデータの受信を開始し、書込みデータの書込みが指示されると、書込みデータの書込みを開始し、プログラム書換え処理を開始する(D1)。書換え対象ECU(ID2)は、マスタ装置11からの書込みデータの受信を完了し、書込みデータの書込みを完了し、プログラム書換え処理を完了すると、書換え完了通知信号をマスタ装置11に送信する。マスタ装置11は、書換え対象ECU(ID2)から書換え完了通知信号を受信すると、書換え完了通知信号をセンター装置3に送信する。
センター装置3は、マスタ装置11から書換え完了通知信号を受信すると、アプリプログラムの書換え完了を携帯端末6に通知する。携帯端末6は、センター装置3からアプリプログラムの書換え完了が通知されると、書換え完了通知画面を表示する(A6)。ユーザは、携帯端末6に表示される書換え完了通知画面によりアプリプログラムの書換えが完了した旨を確認することができ、アクティベートとして同期の実施を設定することができる。
ユーザが同期の実施を携帯端末6において設定すると(A7)、即ち、ユーザが新プログラムのアクティベートに対する承諾を設定すると、携帯端末6は、同期の実施をセンター装置3に通知する。センター装置3は、携帯端末6から同期の実施が通知されると、同期切替え指示信号をマスタ装置11に送信する。マスタ装置11は、センター装置3から同期切替え指示信号を受信すると、その受信した同期切替え指示信号を書換え対象ECU(ID1)及び書換え対象ECU(ID2)に配信する。
書換え対象ECU(ID1)及び書換え対象ECU(ID2)は、それぞれマスタ装置11から同期切替え指示信号を受信すると、次回に起動するアプリプログラムを旧アプリプログラムから新アプリプログラムに切替えるプログラム切替え処理を開始する(C2,D2)。書換え対象ECU(ID1)及び書換え対象ECU(ID2)は、それぞれプログラム切替え処理を完了すると、切替え完了通知信号をマスタ装置11に送信する。
マスタ装置11は、書換え対象ECU(ID1)及び書換え対象ECU(ID2)から切替え完了通知信号を受信すると、バージョン読出信号を書換え対象ECU(ID1)及び書換え対象ECU(ID2)に配信する。書換え対象ECU(ID1)及び書換え対象ECU(ID2)は、それぞれマスタ装置11からバージョン読出信号を受信すると、これ以降に運用するアプリプログラムのバージョンを読出し(C3,D3)、その読出したバージョンを含む最新バージョン通知信号をマスタ装置11に送信する。マスタ装置11は、書換え対象ECU(ID1)及び書換え対象ECU(ID2)からバージョン通知信号を受信することで、ソフトウェアのバージョンをチェックしたり、必要に応じてロールバックを行ったりする。
マスタ装置11は、書換え対象ECU(ID1)及び書換え対象ECU(ID2)からバージョン通知信号を受信すると、電源停止要求を電源管理ECU20に送信し、書換え対象ECU(ID1)、書換え対象ECU(ID2)、その他のECUを起動状態から停止状態又はスリープ状態に移行させる(X2)。
マスタ装置11は、最新バージョン通知信号をセンター装置3に送信する。センター装置3は、マスタ装置11から最新バージョン通知信号を受信すると、その受信した最新バージョン通知信号から書換え対象ECU(ID1)及び書換え対象ECU(ID2)のアプリプログラムの最新のバージョンを特定し、その特定した最新のバージョンを携帯端末6に通知する。携帯端末6は、センター装置3から最新のバージョンが通知されると、その通知された最新のバージョンを示す最新バージョン通知画面を携帯端末6において表示する(A8)。ユーザは、携帯端末6に表示される最新バージョン通知画面により最新のバージョンを確認することができ、アクティベートが完了した旨を確認することができる。
次に、アプリプログラムを書換える場合におけるDCM12、CGW13、書換え対象ECU19の動作のタイミングチャートについて図62から図65を参照して説明する。尚、ここでは、ユーザ操作によりIGスイッチ42がオンされている期間中、即ち、車両が走行可能中に2面メモリECUのアプリプログラムを書換え、ユーザ操作によりIGスイッチ42がオフされた以降の駐車中に1面サスペンドメモリECU及び1面単独メモリECUのアプリプログラムを書換える場合について説明する。又、電源制御によりアプリプログラムを書換える場合と、電源自己保持によりアプリプログラムを書換える場合とについて説明する。
(ア)電源制御によりアプリプログラムを書換える場合
電源制御によりアプリプログラムを書換える場合について図62及び図63を参照して説明する。電源制御によるアプリプログラムの書換えとは、電源自己保持回路を用いず、電源の切り替わりに応じて書換え動作を制御する構成を意味する。ユーザがIGスイッチオフからオンに切替えたことで車両電源が+B電源からIG電源に切替わると、DCM12、CGW13、2面メモリECU、1面サスペンドメモリECU、1面単独メモリECUは、それぞれ通常動作を開始する(t1)。
DCM12は、センター装置3からダウンロード開始が通知されると、通常動作からダウンロード動作に移行し、センター装置3からの配信パッケージのダウンロードを開始する(t2)。DCM12は、通常動作を行いつつ、配信パッケージのダウンロードをバックグラウンドで行うと良い。DCM12は、センター装置3からの配信パッケージのダウンロードを完了すると、ダウンロード動作から通常動作に復帰する(t3)。
DCM12は、センター装置3又はCGW13から書換え指示信号(インストール指示信号)が通知されると、通常動作からデータ転送/センター通信動作に移行し、データ転送/センター通信動作を開始する(t4)。即ち、DCM12は、配信パッケージから書込みデータを抽出し、CGW13への書込みデータの転送を開始すると共に、書換えの進捗状況をCGW13から取得し、センター装置3への書換えの進捗状況の通知を開始する。
CGW13は、DCM12から書込みデータの取得を開始すると、通常動作からリプログマスタ動作に移行し、リプログマスタ動作を開始し、2面メモリECUへの書込みデータの配信を開始し、書込みデータの書込みを指示する。2面メモリECUは、CGW13からの書込みデータの受信を開始すると、通常動作においてプログラミングフェーズ(以下、インストールフェーズとも称する)を開始する。即ち、2面メモリECUは、通常動作を行いつつ、アプリプログラムのインストールをバックグラウンドで行う。2面メモリECUは、受信した書込みデータのフラッシュメモリへの書込みを開始し、アプリプログラムの書換えを開始する。
2面メモリECUにおいてアプリプログラムの書換え中に、ユーザがIGスイッチオンからオフに切替えたことで車両電源がIG電源から+B電源に切替わると、DCM12は、データ転送/センター通信動作を中断し、CGW13は、リプログマスタ動作を中断し、2面メモリECUは、インストールフェーズを中断し、アプリプログラムの書換えを中断する(t5)。
その後、ユーザがIGスイッチオフからオンに切替えたことで車両電源が+B電源からIG電源に切替わると、DCM12は、データ転送/センター通信動作を再開し、CGW13は、リプログマスタ動作を再開し、2面メモリECUは、インストールフェーズを再開し、アプリプログラムの書換えを再開する(t6)。即ち、ユーザがIGスイッチオンからオフに切替えたことで車両電源がIG電源から+B電源に切替わり、その後、ユーザがIGスイッチオフからオンに切替えたことで車両電源が+B電源からIG電源に切替わり、トリップが発生する毎に、2面メモリECUは、アプリプログラムの書換えの中断と再開を繰返す(t7,t8)。
2面メモリECUは、書込みデータの書込みを完了し、アプリプログラムの書換えを完了すると、インストールフェーズを終了し、通常動作からアクティベート待ちに移行する。即ち、2面メモリECUは、アクティベートフェーズを行っていない時点ではアプリプログラムを書換えた新面(B面)では起動せず、旧面(A面)起動のままとする(t9)。
ユーザがIGスイッチオンからオフに切替えたことで車両電源がIG電源から+B電源に切替わった後に(t10)、その時点で2面メモリECUがアプリプログラムの書換えを完了していると、CGW13が電源起動要求を電源管理ECU20に送信する。CGW13が電源起動要求を電源管理ECU20に送信したことで車両電源が+B電源からIG電源に切替わると、DCM12は、データ転送/センター通信動作を再開し、CGW13は、リプログマスタ動作を再開し、1面サスペンドメモリECU及び1面単独メモリECUへの書込みデータの配信を開始する。1面サスペンドメモリECU及び1面単独メモリECUは、それぞれCGW13からの書込みデータの受信を開始すると、通常動作からブート処理に移行し、ブート処理においてインストールフェーズを開始する(t11)。即ち、1面サスペンドメモリECU及び1面単独メモリECUは、通常動作と並行してインストールを行うことはなく、アプリプログラムが動作していないブート処理においてインストールを行う。
1面サスペンドメモリECUは、アプリプログラムの書換えを開始すると、アプリプログラムの書換えを完了する前にユーザ操作によりIGスイッチ42がオフからオンに切替えられた場合には、アプリプログラムの書換えを中断する。1面サスペンドメモリECUは、アプリプログラムの書換えを中断した非運用面(B面)でなく、運用面(A面)を起動面として復帰する。1面単独メモリECUは、アプリプログラムの書換えを開始すると、アプリプログラムの書換えを完了する前にユーザ操作によりIGスイッチ42がオフからオンに切替えられたとしても、アプリプログラムの書換えを継続する。1面単独メモリECUは、アプリプログラムの書換え途中で中断してしまうと、通常動作として復帰不能であるからである。好ましくは、1面単独メモリECUのアプリプログラムの書換えを開始した以降は、アプリプログラムの書換えを完了するまでユーザによるIGスイッチ42操作を無効とするのが良い。
1面サスペンドメモリECUは、書込みデータの書込みを完了し、アプリプログラムの書換えを完了すると、ブート処理においてインストールフェーズを終了し、ブート処理からアクティベート待ちに移行する。即ち、1面サスペンドメモリECUは、アクティベートフェーズを行っていない時点ではアプリプログラムを書換えた新面(B面)では起動せず、旧面(A面)起動のままとする。1面単独メモリECUは、書込みデータの書込みを完了し、アプリプログラムの書換えを完了すると、ブート処理においてインストールフェーズを終了し、アクティベート待ちとする(t12)。
CGW13からのアクティベート指示により電源管理ECU20が車両電源をIG電源から+B電源に切替えると、2面メモリECU及び1面サスペンドメモリECUは、それぞれ旧面から新面への切替えを行い、新面で起動し、新面起動においてポストプログラミングフェーズ(以下、アクティベートフェーズとも称する)を開始する。1面単独メモリECUは、再起動を開始し、インストール完了後の再起動においてアクティベートフェーズを開始する(t13,t14)。アクティベートでは、新プログラムで正しく起動することの確認やCGW13へのバージョン情報の通知等を行う。
アクティベートが完了し、CGW13からのアクティベート完了指示により電源管理ECU20が車両電源をIG電源から+B電源に切替えると、DCM12は、データ転送/センター通信動作からスリープ/停止動作に移行し、スリープ/停止動作を開始する。CGW13は、リプログマスタ動作からスリープ/停止動作に移行し、スリープ/停止動作を開始する。2面メモリECU、1面サスペンドメモリECU、1面単独メモリECUは、それぞれ新面起動からスリープ/停止動作に移行する(t15)。
これ以降、ユーザがIGスイッチオフからオンに切替えたことで車両電源が+B電源からIG電源に切替わると、2面メモリECU及び1面サスペンドメモリECUは、それぞれ新面(B面)を起動面として新アプリプログラムを起動し、1面単独メモリECUは、新アプリプログラムを起動する(t16)。
(イ)電源自己保持によりアプリプログラムを書換える場合
電源自己保持によりアプリプログラムを書換える場合について図64及び図65を参照して説明する。電源自己保持によるアプリプログラムの書換えとは、電源自己保持回路を用いて、書換え動作を制御する構成を意味する。ユーザがIGスイッチオフからオンに切替えたことで車両電源が+B電源からIG電源に切替わると、DCM12、CGW13、2面メモリECU、1面サスペンドメモリECU、1面単独メモリECUは、それぞれ通常動作を開始する(t21)。
DCM12は、センター装置3からダウンロード開始が通知されると、即ち、新プログラムによる更新有りと通知されると、通常動作からダウンロード動作に移行し、センター装置3からの配信パッケージのダウンロードを開始する(t22)。DCM12は、センター装置3からの配信パッケージのダウンロードを完了すると、ダウンロード動作から通常動作に復帰する(t23)。
DCM12は、センター装置3又はCGW13から書換え指示信号(インストール指示信号)が通知されると、通常動作からデータ転送/センター通信動作に移行し、データ転送/センター通信動作を開始する(t24)。即ち、DCM12は、配信パッケージから書込みデータを抽出し、CGW13への書込みデータの転送を開始すると共に、書換えの進捗状況をCGW13から取得し、センター装置3への書換えの進捗状況の通知を開始する。
CGW13は、DCM12から書込みデータの取得を開始すると、通常動作からリプログマスタ動作に移行し、リプログマスタ動作を開始し、2面メモリECUへの書込みデータの配信を開始し、書込みデータの書込みを指示する。2面メモリECUは、CGW13からの書込みデータの受信を開始すると、通常動作においてプログラミングフェーズ(以下、インストールフェーズとも称する)を開始する。即ち、2面メモリECUは、通常動作を行いつつ、アプリプログラムのインストールをバックグラウンドで行う。2面メモリECUは、受信した書込みデータのフラッシュメモリへの書込みを開始し、アプリプログラムの書換えを開始する。
2面メモリECUにおいてアプリプログラムの書換え中に、ユーザがIGスイッチオンからオフに切替えたことで車両電源がIG電源から+B電源に切替わると(t25)、車両電源がIG電源から+B電源に切替わった直後では、DCM12は、データ転送/センター通信動作を継続し、CGW13は、リプログマスタ動作を継続し、2面メモリECUは、インストールフェーズを継続し、アプリプログラムの書換えを継続する。車両電源がIG電源から+B電源に切替わってから予め設定された時間である自己保持期間が経過すると、DCM12は、データ転送/センター通信動作を中断し、CGW13は、リプログマスタ動作を中断し、2面メモリECUは、インストールフェーズを中断し、アプリプログラムの書換えを中断する(t26)。即ち、IGスイッチ42がオフされてから所定時間が経過するまでは車両バッテリ40からの電力供給によりインストールを継続する。
その後、ユーザがIGスイッチオフからオンに切替えたことで車両電源が+B電源からIG電源に切替わると、DCM12は、データ転送/センター通信動作を再開し、CGW13は、リプログマスタ動作を再開し、2面メモリECUは、インストールフェーズを再開し、アプリプログラムの書換えを再開する(t27)。即ち、ユーザがIGスイッチオンからオフに切替えたことで車両電源がIG電源から+B電源に切替わり、その後、ユーザがIGスイッチオフからオンに切替えたことで車両電源が+B電源からIG電源に切替わり、トリップが発生する毎に、2面メモリECUは、アプリプログラムの書換えの中断と再開を繰返す(t28~t30)。ただし、車両電源がIG電源から+B電源に切替わってから自己保持期間が経過するまでは、DCM12は、データ転送/センター通信動作を継続し、CGW13は、リプログマスタ動作を継続し、2面メモリECUは、インストールフェーズを継続し、アプリプログラムの書換えを継続する。
2面メモリECUは、書込みデータの書込みを完了し、アプリプログラムの書換えを完了すると、インストールフェーズを終了し、通常動作からアクティベート待ちに移行する。即ち、2面メモリECUは、アクティベートフェーズを行っていない時点ではアプリプログラムを書換えた新面(B面)では起動せず、旧面(A面)起動のままとする(t31)。
ユーザがIGスイッチオンからオフに切替えたことで車両電源がIG電源から+B電源に切替わり、その時点で2面メモリECUにおいてアプリプログラムの書換えを完了していると、1面サスペンドメモリECU及び1面単独メモリECUは、それぞれ通常動作からブート処理に移行し、ブート処理を開始し、ブート処理においてインストールフェーズを開始する(t32)。
1面サスペンドメモリECU及び単独メモリECUは、それぞれ書込みデータの書込みを完了し、アプリプログラムの書換えを完了すると、ブート処理においてインストールフェーズを終了する(t33)。CGW13が電源起動要求を電源管理ECU20に送信したことで車両電源が+B電源からIG電源に切替わると、DCM12は、データ転送/センター通信動作を再開する(t34)。
1面サスペンドメモリECUは、書込みデータの書込みを完了し、アプリプログラムの書換えを完了すると、ブート処理からアクティベート待ちに移行する。即ち、1面サスペンドメモリECUは、アクティベートフェーズを行っていない時点ではアプリプログラムを書換えた新面(B面)では起動せず、旧面(A面)起動のままとする。1面単独メモリECUは、書込みデータの書込みを完了し、アプリプログラムの書換えを完了すると、ブート処理においてインストールフェーズを終了し、アクティベート待ちとする(t35)。
CGW13からのアクティベート指示により電源管理ECU20が車両電源をIG電源から+B電源に切替えると、2面メモリECU及び1面サスペンドメモリECUは、それぞれ旧面から新面への切替えを行い、新面で起動し、新面起動においてアクティベートフェーズを開始する。1面単独メモリECUは、再起動を開始し、インストール完了後の再起動においてアクティベートフェーズを開始する(t36,t37)。
アクティベートが完了し、CGW13からのアクティベート完了指示により電源管理ECU20が車両電源をIG電源から+B電源に切替えると、DCM12は、データ転送/センター通信動作からスリープ/停止動作に移行し、スリープ/停止動作を開始する。CGW13は、リプログマスタ動作からスリープ/停止動作に移行し、スリープ/停止動作を開始する。2面メモリECU、1面サスペンドメモリECU及び1面単独メモリECUは、それぞれ新面起動からスリープ/停止動作に移行する(t38)。
これ以降、ユーザがIGスイッチオフからオンに切替えたことで車両電源が+B電源からIG電源に切替わると、2面メモリECU及び1面サスペンドメモリECUは、それぞれ新面(B面)を起動面として新アプリプログラムを起動し、1面単独メモリECUは、新アプリプログラムを起動する(t39)。
CGW13は、センター装置3から配信パッケージをダウンロードする前、書込みデータの書換え対象ECU19に配信する前には、以下のチェックを行う。CGW13は、センター装置3から配信パッケージをダウンロードする前では、ダウンロードを正常に行えるように、電波環境、車両バッテリ40のバッテリ残量、DCM12のメモリ容量のチェックを行う。CGW13は、書込みデータの書換え対象ECU19に配信する前には、書込みデータの配信を正常に行えるように、インストール環境を不安定にしないための有人環境のチェックとして、侵入センサの検知、ドアロックの検知、カーテンの検知、IGオフの検知を行い、書換え対象ECU19が書込み可能であるか否かのチェックとして、バージョン、異常発生のチェックを行う。又、CGW13は、書換え対象ECU19に配信する書込みデータのチェックとして、インストールを開始する前には、改ざんチェック、アクセス認証、バージョンチェック等を行い、インストールを実行中には、通信途絶チェック、異常発生のチェック等を行い、インストールを完了後には、バージョンチェック、完全性チェック、DTC(Diagnostic Trouble Code、エラーコード)チェック等を行う。
次に、表示端末5が表示する画面について図66から図82を参照して説明する。図66に示すように、書換え対象ECU19のアプリプログラムをOTAにより書換える構成では、キャンペーン通知、ダウンロード、インストール、アクティベートのフェーズがある。キャンペーン通知とは、プログラム更新のお知らせである。例えばセンター装置3においてアプリプログラムの更新有りと判断されたことを受けて、配信諸元データ等をマスタ装置11がダウンロードすることがキャンペーン通知である。表示端末5は、アプリプログラムの書換えが進行するにしたがって各フェーズにおいて画面を表示する。尚、ここでは、車載ディスプレイ7が表示する画面について説明する。
CGW13は、図67に示すように、キャンペーン通知前の通常時では、例えばナビゲーション機能の1つである周知の経路案内画面等のナビゲーション画面501を車載ディスプレイ7に表示させる。この状態からキャンペーン通知が発生すると、CGW13は、図32に示すように、ナビゲーション画面501の右下にキャンペーン通知の発生を示すキャンペーン通知アイコン501aを表示させる。ユーザは、キャンペーン通知アイコン501aの表示を確認することで、アプリプログラムの更新に関するキャンペーン通知の発生を把握することができる。
この状態からユーザがキャンペーン通知アイコン501aを操作すると、CGW13は、図69に示すように、ナビゲーション画面501上にキャンペーン通知画面502をポップアップ表示させる。尚、CGW13は、キャンペーン通知画面502をポップアップ表示させることに限らず、他の表示態様を採用しても良い。CGW13は、キャンペーン通知画面502では、例えば「利用できるソフトウェア更新があります」のガイダンスを表示してキャンペーン通知の発生をユーザに知らせると共に、「確認する」ボタン502a、「後で」ボタン502bを表示させ、ユーザの操作を待機する。この場合、ユーザは、「確認する」ボタン502aを操作することで、アプリプログラムの書換えを開始させるための次の画面へ進むことができる。尚、CGW13は、ユーザが「後で」ボタン502bを操作した場合には、キャンペーン通知画面502のポップアップ表示を消去させ、図32に示すキャンペーン通知アイコン501aを表示する画面に戻す。
この状態からユーザが「確認する」ボタン502aを操作すると、CGW13は、図70に示すように、ナビゲーション画面501からダウンロード承諾画面503に表示を切替え、ダウンロード承諾画面503を車載ディスプレイ7に表示させる。CGW13は、ダウンロード承諾画面503では、キャンペーンIDや更新名称をユーザに知らせると共に、「ダウンロード開始」ボタン503a、「詳細確認」ボタン503b、「戻る」ボタン503cを表示させ、ユーザの操作を待機する。この場合、ユーザは、「ダウンロード開始」ボタン503aを操作することで、ダウンロードを開始させることができ、「詳細確認」ボタン503bを操作することで、ダウンロードの詳細を表示させることができ、「戻る」ボタン503cを表示させることで、ダウンロードを拒否し、前の画面に戻ることができる。「戻る」ボタン503cを操作した場合であって、ユーザは、キャンペーン通知アイコン501aを操作することにより、ダウンロードを開始するための画面に進むことができる。
このダウンロード承諾画面503を表示させた状態からユーザが「詳細確認」ボタン503bを操作すると、CGW13は、図71に示すように、ダウンロード承諾画面503の表示内容を切替え、ダウンロードの詳細を車載ディスプレイ7に表示させる。CGW13は、ダウンロードの詳細として、受信した配信諸元データを用いて、更新内容や、更新にかかる時間、更新に伴う車両機能の制約等を表示させる。又、ユーザが「ダウンロード開始」ボタン503aを操作すると、CGW13は、DCM12を介して配信パッケージのダウンロードを開始する。CGW13は、配信パッケージのダウンロードを開始することと並行して、図72に示すように、ダウンロード承諾画面503からナビゲーション画面501に表示を切替え、ナビゲーション画面501を車載ディスプレイ7に再度表示させ、ナビゲーション画面501の右下にダウンロード実行中を示すダウンロード実行中アイコン501bを表示させる。ユーザは、ダウンロード実行中アイコン501bの表示を確認することで、配信パッケージのダウンロード実行中を把握することができる。
この状態からユーザがダウンロード実行中アイコン501bを操作すると、CGW13は、図73に示すように、ナビゲーション画面501からダウンロード実行中画面504に表示を切替え、ダウンロード実行中画面504を車載ディスプレイ7に表示させる。CGW13は、ダウンロード実行中画面504では、ダウンロードの実行中をユーザに知らせると共に、「詳細確認」ボタン504a、「戻る」ボタン504b及び「キャンセル」ボタン504cを表示させ、ユーザの操作を待機する。この場合、ユーザは、「詳細確認」ボタン504aを操作することで、ダウンロード実行中の詳細を表示させることができ、「キャンセル」ボタン504cを操作させることで、ダウンロードを中断させることができる。
CGW13は、ダウンロードを完了すると、図74に示すように、ナビゲーション画面501上にダウンロード完了通知画面505をポップアップ表示させる。CGW13は、ダウンロード完了通知画面505では、例えば「ダウンロードが完了しました ソフトウェア更新ができます」のガイダンスを表示してダウンロードの完了をユーザに知らせると共に、「確認する」ボタン505a、「後で」ボタン505bを表示させ、ユーザの操作を待機する。この場合、ユーザは、「確認する」ボタン505aを操作することで、インストールを開始するための画面に進むことができる。
この状態からユーザが「確認する」ボタン505aを操作すると、CGW13は、図75に示すように、ナビゲーション画面501からインストール承諾画面506に表示を切替え、インストール承諾画面506を車載ディスプレイ7に表示させる。CGW13は、インストール承諾画面506では、インストールに関する所要時間や制約事項及びスケジュールの設定をユーザに知らせると共に、「すぐ更新」ボタン506a、「予約して更新」ボタン506b、「戻る」ボタン506cを表示させ、ユーザの操作を待機する。この場合、ユーザは、「すぐ更新」ボタン506aを操作することで、インストールを直ぐに開始させることができる。又、ユーザは、インストールを実行したい時刻を設定し、「予約して更新」ボタン506bを操作することで、インストールを予約して開始させることができる。又、ユーザは、「戻る」ボタン506cを操作することで、インストールを拒否し、前の画面に戻ることができる。「戻る」ボタン506cを操作した場合であって、ユーザは、ダウンロード実行中アイコン501bを操作することにより、インストールを開始するための画面に進むことができる。
この状態からユーザが「すぐ更新」ボタン506aを操作すると、CGW13は、図76に示すように、インストール承諾画面506の表示内容を切替え、インストールの詳細を車載ディスプレイ7に表示させる。CGW13は、ここでのインストール承諾画面506では、インストールの要求を受付け、インストールを開始する旨をユーザに知らせる。
CGW13は、インストールを開始すると、図77に示すように、インストール承諾画面506からナビゲーション画面501に表示を切替え、ナビゲーション画面501を車載ディスプレイ7に再度表示させ、ナビゲーション画面501の右下にインストール実行中を示すインストール実行中アイコン501cを表示させる。ユーザは、インストール実行中アイコン501cの表示を確認することで、インストール実行中を把握することができる。
この状態からユーザがインストール実行中アイコン501cを操作すると、CGW13は、図78に示すように、ナビゲーション画面501からインストール実行中画面507に表示を切替え、インストール実行中画面507を車載ディスプレイ7に表示させる。CGW13は、インストール実行中画面507では、インストールの実行中をユーザに知らせる。CGW13は、例えばインストールの所要残り時間や進捗パーセントをインストール実行中画面507に表示させても良い。
CGW13は、インストールを完了すると、図79に示すように、ナビゲーション画面501からアクティベート承諾画面508に表示を切替え、アクティベート承諾画面508を車載ディスプレイ7に表示させる。CGW13は、アクティベート承諾画面508では、アクティベートの内容をユーザに知らせると共に、「戻る」ボタン508a及び「OK」ボタン508bを表示させ、ユーザの操作を待機する。この場合、ユーザは、「戻る」ボタン508aを操作することで、アクティベートを拒否し、前の画面に戻ることができる。又、ユーザは、「OK」ボタン508bを操作することで、アクティベートを承諾することができる。尚、「戻る」ボタン508aを操作した場合であって、ユーザは、インストール実行中アイコン501cを操作することにより、アクティベートを実行するための画面に進むことができる。尚、これらの表示や承諾については、ユーザの設定やプログラムのシーンにより表示させずに省略することも可能である。
ユーザが「OK」ボタン508bを操作した後の状態からユーザがIG電源をオンすると、CGW13は、図80に示すように、ナビゲーション画面501上にアクティベート完了通知画面509をポップアップ表示させる。CGW13は、アクティベート完了通知画面509では、例えば「ソフトウェア更新が完了しました」のガイダンスを表示してアクティベートの完了をユーザに知らせると共に、「OK」ボタン509a、「詳細確認」ボタン509bを表示させ、ユーザの操作を待機する。この場合、ユーザは、「OK」ボタン509aを操作することで、アクティベート完了通知画面509のポップアップ表示を消去させることができ、「詳細確認」ボタン509bを操作することで、アクティベートの完了の詳細を表示させることができる。
この状態からユーザが「OK」ボタン509aを操作すると、CGW13は、図81に示すように、ナビゲーション画面501から確認操作画面510に表示を切替え、確認操作画面510を車載ディスプレイ7に表示させる。CGW13は、確認操作画面510では、アクティベートの完了をユーザに知らせると共に、「詳細確認」ボタン510a、「OK」ボタン510bを表示させ、ユーザの操作を待機する。この場合、ユーザは、「詳細確認」ボタン510aを操作することで、アクティベートの完了の詳細を表示させることができる。
この状態からユーザが「詳細確認」ボタン510aを操作すると、CGW13は、図82に示すように、確認操作画面510の表示内容を切替え、アクティベートの完了の詳細を車載ディスプレイ7に表示させる。CGW13は、更新により追加された機能や変更された機能等を更新詳細として表示すると共に、「OK」ボタン510bを表示する。CGW13は、ユーザが「OK」ボタン509a、510bを操作したことをもって、ソフトウェア更新完了をユーザが確認したと判断する。
以上に説明したように、車両側システム4は、キャンペーン通知、ダウンロード、インストール、アクティベート、更新完了という各動作フェーズを制御すると共に、各動作フェーズに合わせた表示をユーザへ提示する。尚、上述した説明では、CGW13が表示の制御を行う構成としたが、車載ディスプレイ7がCGW13から動作フェーズや配信諸元データを受信し、表示を行うように構成しても良い。
次に、車両用プログラム書換えシステム1が行う特徴的な処理について図83から図269を参照して説明する。車両用プログラム書換えシステム1は、以下に示す特徴的な処理を行う。
(1)配信パッケージの送信判定処理
(2)配信パッケージのダウンロード判定処理
(3)書込みデータの転送判定処理
(4)書込みデータの取得判定処理
(5)インストールの指示判定処理
(6)セキュリティアクセス鍵の管理処理
(7)書込みデータの検証処理
(8)データ格納面情報の送信制御処理
(9)非書換え対象の電源管理処理
(10)ファイルの転送制御処理
(11)書込みデータの配信制御処理
(12)アクティベート要求の指示処理
(13)アクティベートの実行制御処理
(14)書換え対象のグループ管理処理
(15)ロールバックの実行制御処理
(16)書換え進捗状況の表示制御処理
(17)差分データの整合性判定処理
(18)書換えの実行制御処理
(19)セッションの確立処理
(20)リトライポイントの特定処理
(21)進捗状態の同期制御処理
(22)表示制御情報の送信制御処理
(23)表示制御情報の受信制御処理
(24)進捗表示の画面表示制御処理
(25)プログラム更新の報知制御処理
(26)電源自己保持の実行制御処理
センター装置3、DCM12、CGW13、ECU19、車載ディスプレイ7は、それぞれ上記した(1)~(26)の特徴的な処理を行う構成として以下の機能ブロックを有する。
図83に示すように、センター装置3は、配信パッケージ送信部51を有する。配信パッケージ送信部51は、DCM12から配信パッケージのダウンロード要求を受信すると、配信パッケージをDCM12に送信する。センター装置3は、上記した構成に加え、特徴的な処理を行う構成として、配信パッケージの送信判定部52と、進捗状態の同期制御部53と、表示制御情報の送信制御部54と、書込みデータ選定部55(更新データ選定部に相当する)を有する。書込みデータ選定部55(更新データ選定部に相当する)は、マスタ装置11からデータ格納面情報を受信すると、その受信したデータ格納面情報により特定されるソフトウェアバージョン及び運用面に基づいて、非運用面に適合する書込みデータを選定する。即ち、配信パッケージ送信部51は、書込みデータ選定部55により選定された書込みデータを含む配信パッケージをDCM12に送信する。特徴的な処理を行う機能ブロックについては後述する。
図84に示すように、DCM12は、ダウンロード要求送信部61と、配信パッケージダウンロード部62と、書込みデータ抽出部63と、書込みデータ転送部64と、書換え諸元データ抽出部65と、書換え諸元データ転送部66とを有する。ダウンロード要求送信部61は、配信パッケージのダウンロード要求をセンター装置3に送信する。配信パッケージダウンロード部62は、センター装置3から配信パッケージをダウンロードする。書込みデータ抽出部63は、センター装置3から配信パッケージが配信パッケージダウンロード部62によりダウンロードされると、そのダウンロードされた配信パッケージから書込みデータを抽出する。
書込みデータ転送部64は、配信パッケージから書込みデータが書込みデータ抽出部63により抽出されると、その抽出された書込みデータをCGW13に転送する。書換え諸元データ抽出部65は、センター装置3から配信パッケージが配信パッケージダウンロード部62によりダウンロードされると、そのダウンロードされた配信パッケージから書換え諸元データを抽出する。書換え諸元データ転送部66は、配信パッケージから書換え諸元データが書換え諸元データ抽出部56により抽出されると、その抽出された書換え諸元データをCGW13に転送する。DCM12は、上記した構成に加え、特徴的な処理を行う構成として、配信パッケージのダウンロード判定部67と、書込みデータの転送判定部68とを有する。特徴的な処理を行う機能ブロックについては後述する。
図85及び図86に示すように、CGW13は、取得要求送信部71と、書込みデータ取得部72(更新データ記憶部に相当する)と、書込みデータ配信部73(更新データ配信部に相当する)と、書換え諸元データ取得部74と、書換え諸元データ解析部75とを有する。書込みデータ取得部72は、DCM12から書込みデータが転送されることで、DCM12から書込みデータを取得する。書込みデータ配信部73は、書込みデータが書込みデータ取得部72により取得されると、その書込みデータの配信タイミングになると、その取得された書込みデータを書換え対象ECU19に配信する。書換え諸元データ取得部74は、DCM12から書換え諸元データが転送されることで、DCM12から書換え諸元データを取得する。書換え諸元データ解析部75は、書換え諸元データが書換え諸元データ取得部74により取得されると、その取得された書換え諸元データを解析する。
CGW13は、上記した構成に加え、特徴的な処理を行う構成として、書込みデータの取得判定部76と、インストールの指示判定部77と、セキュリティアクセス鍵の管理部78と、書込みデータの検証部79と、データ格納面情報の送信制御部80と、非書換え対象の電源管理部81と、ファイルの転送制御部82と、書込みデータの配信制御部83と、アクティベート要求の指示部84と、書換え対象のグループ管理部85と、ロールバックの実行制御部86と、書換え進捗状況の表示制御部87と、進捗状態の同期制御部88と、表示制御情報の受信制御部89と、進捗表示の画面表示制御部90と、プログラム更新の報知制御部91と、電源自己保持の実行制御部92とを有する。特徴的な処理を行う機能ブロックについては後述する。
図87に示すように、ECU19は、書込みデータ受信部101と、プログラム書換え部102とを有する。書込みデータ受信部101は、CGW13から書込みデータを受信する。プログラム書換え部102は、CGW13から書込みデータが書込みデータ受信部101により受信されると、その受信された書込みデータをフラッシュメモリに書込んでアプリプログラムを書換える。ECU19は、上記した構成に加え、特徴的な処理を行う構成として、差分データの整合性判定部103と、書換えの実行制御部104と、セッションの確立部105と、リトライポイントの特定部106と、アクティベートの実行制御部107と、電源自己保持の実行制御部108とを有する。特徴的な処理を行う機能ブロックについては後述する。
図88に示すように、車載ディスプレイ7は、配信諸元データの受信制御部111を有する。配信諸元データの受信制御部111は、配信諸元データの受信を制御する。
以下、上記した(1)~(26)の各処理について順次説明する。
(1)配信パッケージの送信判定処理、(2)配信パッケージのダウンロード判定処理
センター装置3における配信パッケージの送信判定処理について図89及び図90を参照して説明し、マスタ装置11における配信パッケージのダウンロード判定処理について図91及び図92を参照して説明する。
図89に示すように、センター装置3は、配信パッケージの送信判定部52において、ソフトウェア情報取得部52aと、更新有無判定部52bと、更新適否判定部52cと、キャンペーン情報送信部52dと有する。ソフトウェア情報取得部52aは、車両側から各ECU19のソフトウェア情報を取得する。具体的には、ソフトウェア情報取得部52aは、バージョンや書込み面等のソフトウェア情報とハードウェア情報とを含むECU構成情報を車両側から取得する。ソフトウェア情報取得部52aは、これらECU構成情報と合わせて、故障コード、盗難防止アラーム機能の設定、ライセンス契約情報等の車両状態情報を車両側から取得しても良い。
更新有無判定部52bは、ソフトウェア情報がソフトウェア情報取得部52aにより取得されると、その取得されたソフトウェア情報に基づいて、車両に対する更新データの有無を判定する。即ち、更新有無判定部52bは、その取得されたソフトウェア情報のバージョンと自己の管理する最新のソフトウェア情報のバージョンとを比較し、両者が一致するか否かを判定し、車両に対する更新データの有無を判定する。更新有無判定部52bは、両者が一致すると判定すると、車両に対する更新データが無いと判定し、両者が一致しないと判定すると、車両に対する更新データが有ると判定する。
更新適否判定部52cは、車両に対する更新データが有ることが更新有無判定部52bにより判定されると、車両状態が配信パッケージを用いたプログラム等の更新に適する状態であるか否かを判定する。具体的には、更新適否判定部52cは、ライセンス契約が成立しているか否か、車両位置がユーザにより予め登録された所定範囲内であるか否か、車両のアラーム機能の設定が有効化されているか否か、ECU19の故障情報が発生しているか否かを判定し、車両状態が配信パッケージのダウンロードに適する状態であるか否かを判定する。即ち、更新適否判定部52cは、ユーザの意に反する更新となる可能性のある車両や、仮にダウンロードが成功したとしても、ダウンロード後のインストールで失敗する可能性のある車両であるか否かを判定する。
更新適否判定部52cは、ライセンス契約が成立しており、車両位置がユーザにより予め登録された所定範囲内であり、車両のアラーム機能の設定が有効化されており、ECU19の故障情報が発生していない状態であると判定すると、車両状態が配信パッケージを用いたプログラム等の更新に適する状態であると判定する。更新適否判定部52cは、ライセンス契約が成立していない、車両位置がユーザにより予め登録された所定範囲内でない、車両のアラーム機能の設定が有効化されていない、ECU19の故障情報が発生しているうちの少なくとも何れかであると判定すると、車両状態が配信パッケージを用いたプログラム等の更新に適する状態でないと判定する。
キャンペーン情報送信部52dは、車両状態が配信パッケージを用いたプログラム等の更新に適する状態であると更新適否判定部52cにより判定されると、キャンペーン情報をマスタ装置11に送信する。キャンペーン情報送信部52dは、車両状態が配信パッケージを用いたプログラム等の更新に適する状態でないと更新適否判定部52cにより判定されると、キャンペーン情報をマスタ装置11に送信しない。キャンペーン情報送信部52dは、上記した判定を行うことで、キャンペーン情報をマスタ装置11に送信しなかった車両に関する情報を記憶しておく。尚、センター装置3において、キャンペーン情報をマスタ装置11に送信しなかった車両に関する情報を表示しても良い。
次に、センター装置3における配信パッケージの送信判定部52の作用について図90を参照して説明する。センター装置3は、配信パッケージの送信判定プログラムを実行し、配信パッケージの送信判定処理を行う。
センター装置3は、配信パッケージの送信判定処理を開始すると、車両側からソフトウェア情報を取得する(S101、ソフトウェア情報取得手順に相当する)。即ち、センター装置3は、車両に対するソフトウェア更新があるか否かを判定する。センター装置3は、その取得したソフトウェア情報に基づいて車両に対する更新データの有無を判定する(S102、更新有無判定手順に相当する)。センター装置3は、車両に対する更新データが有ると判定すると(S102:YES)、車両状態が配信パッケージを用いたプログラム等の更新に適する状態であるか否かを判定する(S103、更新適否判定手順に相当する)。センター装置3は、車両状態が配信パッケージを用いたプログラム等の更新に適する状態であると判定すると(S103:YES)、キャンペーン情報をマスタ装置11に送信し(S104、キャンペーン情報送信手順に相当する)、配信パッケージの送信判定処理を終了する。
センター装置3は、車両に対する更新データが無いと判定すると(S102:NO)、配信パッケージの送信対象でない旨、即ち、アプリプログラムの更新がない旨をマスタ装置11に送信し(S105)、配信パッケージの送信判定処理を終了する。センター装置3は、車両状態が配信パッケージを用いたプログラム等の更新に適する状態でないと判定すると(S103:NO)、プログラム等の更新に適さない旨及びその理由をマスタ装置11に送信し(S106)、配信パッケージの送信判定処理を終了する。この場合、マスタ装置11は、プログラム等の更新に適さない旨及びその理由を車載ディスプレイ7に表示させる。マスタ装置11は、例えばライセンス契約が成立していなければ、例えば「ライセンスが無効なためプログラム更新ができません。ディーラーへご相談下さい。」等を車載ディスプレイ7に表示させる。これにより、プログラム等の更新に適さない旨の理由をユーザに提示することができ、適切な情報をユーザに提示することができる。
以上に説明したように、センター装置3は、マスタ装置11への配信パッケージの送信前であり、キャンペーン情報の送信前に、配信パッケージの送信判定処理を行うことで、配信パッケージを用いたプログラム等の更新に適する状態であるか否かを判定することができる。そして、センター装置3は、配信パッケージを用いたプログラム等の更新に適する状態であると判定した場合に限って配信パッケージをマスタ装置11に送信すべく、キャンペーン情報をマスタ装置11に送信することができる。
センター装置3は、配信パッケージを用いたプログラム等の更新に適した場合として、ライセンス契約が成立しており、車両位置がユーザにより予め登録された所定範囲内であり、車両のアラーム機能の設定が有効化されており、ECU19の故障情報が発生していない場合に、キャンペーン情報をマスタ装置11に送信することができる。即ち、センター装置3は、ライセンス契約が未成立であったり、車両位置が自宅から遠く離れた位置等の所定範囲外であったり、車両のアラーム機能の設定が無効化されていたり、ECU19の故障情報が発生していたりする場合に、キャンペーン情報をマスタ装置11に送信する事態を回避することができる。このようにセンター装置3は、ユーザの意に反する更新となる可能性のある車両や、仮にダウンロードに成功したとしても、インストールで失敗する可能性のある車両に対し、キャンペーン情報をマスタ装置11に送信しないようすることができる。
尚、センター装置3は、配信パッケージの送信中に配信パッケージの送信判定処理を行っても良い。この場合、センター装置3は、配信パッケージの送信中に車両状態が配信パッケージを用いたプログラム等の更新に適する状態であると判定すると、配信パッケージの送信を継続するが、配信パッケージの送信中に車両状態が配信パッケージを用いたプログラム等の更新に適する状態でないと判定すると、配信パッケージの送信を中断する。即ち、センター装置3は、配信パッケージの送信中に例えばECU19の故障情報が発生すると、配信パッケージの送信を中断する。
次に、センター装置3から送信されたキャンペーン情報を受信したマスタ装置11の処理について説明する。マスタ装置11における配信パッケージのダウンロード判定処理について図91及び図92を参照して説明する。車両用プログラム書換えシステム1は、マスタ装置11において配信パッケージのダウンロード判定処理を行う。前述した(1)配信パッケージの送信判定処理は、センター装置3がダウンロードフェーズの前のキャンペーン通知フェーズで行う判定処理であるが、配信パッケージのダウンロード判定処理は、マスタ装置11がダウンロードフェーズで行う判定処理である。尚、本実施形態ではマスタ装置11において、DCM12が配信パッケージのダウンロード判定処理を行う場合を説明するが、CGW13がDCM12の機能を有することで、CGW13が配信パッケージのダウンロード判定処理を行っても良い。
図91に示すように、DCM12は、配信パッケージのダウンロード判定部67において、キャンペーン情報受信部67aと、ダウンロード可能判定部67bと、ダウンロード実行部67cとを有する。キャンペーン情報受信部67aは、センター装置3からキャンペーン情報を受信する。尚、センター装置3からキャンペーン情報を受信すると、図68に示したキャンペーン通知アイコン501aが表示される。ダウンロード可能判定部67bは、キャンペーン情報がキャンペーン情報受信部67aにより受信されると、車両状態が配信パッケージをダウンロード可能な状態であるか否かを判定する。即ち、ダウンロード可能判定部67bは、センター装置3と通信するための電波環境が良好であるか否か、車両バッテリ40のバッテリ残量が所定容量以上であるか否か、DCM12のメモリ空き容量が所定容量以上であるか否かを判定し、車両状態が配信パッケージをダウンロード可能な状態であるか否かを判定する。
ダウンロード可能判定部67bは、電波環境が良好であり、車両バッテリ40のバッテリ残量が所定容量以上であり、DCM12のメモリ空き容量が所定容量以上であると判定すると、車両状態が配信パッケージをダウンロード可能な状態であると判定する。ダウンロード可能判定部67bは、電波環境が良好でなく、車両バッテリ40のバッテリ残量が所定容量以上でなく、DCM12のメモリ空き容量が所定容量以上でないうちの少なくとも何れかを判定すると、車両状態が配信パッケージをダウンロード可能な状態でないと判定する。
このようにダウンロード可能判定部67bは、ダウンロードを正常に完了することができない可能性があるか否かを判定する。尚、ダウンロード可能判定部67bによる判定は、図70及び図71に示すダウンロード承諾画面503において、ユーザにより「ダウンロード開始」ボタン503aを操作されたことを条件として行う。又、ダウンロード可能判定部67bは、センター装置3における判定項目についても判定するように構成しても良い。即ち、ダウンロード可能判定部67bは、例えば車両のアラーム機能の設定が有効化されている場合や、ECU19の故障情報が発生していない場合に、ダウンロード可能な状態であると判定する。
ダウンロード実行部67cは、車両状態が配信パッケージをダウンロード可能な状態であるとダウンロード可能判定部67bにより判定されると、センター装置3から配信パッケージをダウンロードする。即ち、ダウンロード実行部67cは、ダウンロードを正常に完了することができることを確認した上で、配信パッケージのダウンロードを実行する。
ダウンロード実行部67cは、車両状態が配信パッケージをダウンロード可能な状態でないとダウンロード可能判定部67bにより判定されると、センター装置3から配信パッケージをダウンロードしない。即ち、ダウンロード実行部67cは、ダウンロードを正常に完了することができない可能性がある場合には、配信パッケージのダウンロードを実行しない。この場合、ダウンロード実行部67cは、ナビゲーション画面501にダウンロードを開始できなかった旨及びその理由を示すポップアップ画面を表示するように車載ディスプレイ7に指示する。
次に、マスタ装置11における配信パッケージのダウンロード判定部67の作用について図92を参照して説明する。マスタ装置11は、配信パッケージのダウンロード判定プログラムを実行し、配信パッケージのダウンロード判定処理を行う。
マスタ装置11は、配信パッケージのダウンロード判定処理を開始すると、センター装置3からキャンペーン情報を受信する(S201、キャンペーン情報受信手順に相当する)。マスタ装置11は、車両状態が配信パッケージをダウンロード可能な状態であるか否かを判定する(S202、ダウンロード可能判定手順に相当する)。マスタ装置11は、車両状態が配信パッケージをダウンロード可能な状態であると判定すると(S202:YES)、センター装置3から当該キャンペーンに対応する配信パッケージをダウンロードし(S203、ダウンロード実行手順に相当する)、配信パッケージのダウンロード判定処理を終了する。マスタ装置11は、車両状態が配信パッケージをダウンロード可能な状態でないと判定すると(S202:NO)、センター装置3から配信パッケージをダウンロードせず、配信パッケージのダウンロード判定処理を終了する。
以上に説明したように、マスタ装置11は、センター装置3からの配信パッケージのダウンロード前に、配信パッケージのダウンロード判定処理を行うことで、車両状態が配信パッケージをダウンロード可能な状態であるか否かを判定することができる。そして、マスタ装置11は、車両状態が配信パッケージをダウンロード可能な状態である場合に限って配信パッケージをダウンロードすることができる。
マスタ装置11は、配信パッケージのダウンロードに適した場合として、電波環境が良好であり、車両バッテリ40のバッテリ残量が所定容量以上であり、DCM12のメモリ空き容量が所定容量以上である場合に、センター装置3から配信パッケージをダウンロードすることができる。即ち、電波環境が良好でなかったり、車両バッテリ40のバッテリ残量が所定容量未満であったり、DCM12のメモリ空き容量が所定容量未満であったりする場合に、センター装置3から配信パッケージをダウンロードする事態を回避することができる。
尚、マスタ装置11は、配信パッケージのダウンロード中に配信パッケージのダウンロード判定処理を行っても良い。この場合、マスタ装置11は、配信パッケージのダウンロード中に車両状態が配信パッケージをダウンロード可能な状態であると判定すると、センター装置3からの配信パッケージのダウンロードを継続するが、配信パッケージのダウンロード中に車両状態が配信パッケージをダウンロード可能な状態でないと判定すると、センター装置3からの配信パッケージのダウンロードを中断する。即ち、マスタ装置11は
、配信パッケージのダウンロード中に例えば電波環境が良好でなくなったり車両バッテリ40のバッテリ残量が所定容量未満になったりDCM12のメモリ空き容量が所定容量未満になったりすると、配信パッケージのダウンロードを中断する。
このようにセンター装置3において、ユーザの意に反する更新となる可能性のある車両や、インストールに失敗する可能性のある車両であるか否かを判定すると共に、マスタ装置11において、ダウンロードに失敗する可能性があるか否かを判定することにより、センター装置3からマスタ装置11への無用なキャンペーン情報や配信パッケージの送信を抑制することができる。
センター装置3は、以下の構成を有する。車両側から電子制御装置のソフトウェア情報を取得するソフトウェア情報取得部52aと、前記ソフトウェア情報取得部により取得されたソフトウェア情報に基づいて、車両に対する更新データの有無を判定する更新有無判定部52bと、更新データが有ると前記更新有無判定部により判定された場合に、車両状態が更新に適する状態であるか否かを判定する更新適否判定部52cと、車両状態が更新に適する状態であると前記更新適否判定部により判定された場合に、更新に関するキャンペーン情報を車両用マスタ装置に送信するキャンペーン情報送信部52dとを備える。
マスタ装置11は、以下の構成を有する。センター装置からキャンペーン情報を受信するキャンペーン情報受信部67aと、キャンペーン情報が前記キャンペーン情報受信部により受信された場合に、車両状態が配信パッケージをダウンロード可能な状態であるか否かを判定するダウンロード可能判定部67bと、車両状態が配信パッケージをダウンロード可能な状態であると前記ダウンロード可能判定部により判定された場合に、センター装置から配信パッケージをダウンロードするダウンロード実行部67cとを備える。
(3)書込みデータの転送判定処理、(4)書込みデータの取得判定処理、(5)インストールの指示判定処理
書込みデータの転送判定処理について図93及び図94を参照して説明し、書込みデータの取得判定処理について図95及び図96を参照して説明し、インストールの指示判定処理について図97から図100を参照して説明する。車両用プログラム書換えシステム1は、DCM12において書込みデータの転送判定処理を行う。ここでは、センター装置3からDCM12に送信された配信パッケージがアンパッケージングされ、配信パッケージから書込みデータが抽出された状態とする。
図93に示すように、DCM12は、書込みデータの転送判定部68において、取得要求受信部68aと、通信状態判定部68bとを有する。取得要求受信部68aは、CGW13から書込みデータの取得要求を受信する。通信状態判定部68bは、書込みデータの取得要求が取得要求受信部68aにより受信されると、例えばユーザが予め設定する転送可否判定フラグが第1所定値である場合に、センター装置3とDCM12との間のデータ通信の状態を判定する。転送可否判定フラグとは、例えばインストールの際に所定条件をチェックする場合は1(第1所定値)、チェックを省略する場合は0(第2所定値)である。書込みデータ転送部64は、センター装置3とDCM12との間のデータ通信が接続状態であると通信状態判定部68bにより判定されていることを条件として書込みデータをCGW13に転送する。
次に、DCM12における書込みデータの転送判定部68の作用について図94を参照して説明する。DCM12は、書込みデータの転送判定プログラムを実行し、書込みデータの転送判定処理を行う。ここでは、センター装置3からのインストール指示にしたがい、CGW13がDCM12に対して書込みデータの取得を要求した場合の処理について説明する。
DCM12は、CGW13から書込みデータの取得要求を受信したと判定すると、書込みデータの転送判定処理を開始する。DCM12は、書込みデータの転送判定処理を開始すると、転送可否判定フラグを判定する(S301,S302)。DCM12は、転送可否判定フラグが第1所定値であると判定すると(S301:YES)、センター装置3と自己との間のデータ通信の状態を判定する(S303)。DCM12は、センター装置3と自己との間のデータ通信が接続状態であると判定すると(S303:YES)、書込みデータをCGW13に転送し(S304)、書込みデータの転送判定処理を終了する。DCM12は、センター装置3と自己との間のデータ通信が接続状態でなく途絶状態であると判定すると(S303:NO)、書込みデータをCGW13に転送せず、書込みデータの転送判定処理を終了する。
又、DCM12は、転送可否判定フラグが第2所定値であると判定すると(S302:YES)、センター装置3と自己との間のデータ通信の状態を判定せずに書込みデータをCGW13に転送し、書込みデータの転送判定処理を終了する。
以上に説明したように、DCM12は、CGW13への書込みデータの転送前に書込みデータの転送判定処理を行うことで、転送可否判定グラグが第1所定値の場合にセンター装置3と自己との間のデータ通信の状態を判定する。DCM12は、データ通信が接続状態であると判定すると、書込みデータの転送を開始し、データ通信が途絶状態であると判定すると、書込みデータの転送を開始せずに待機する。センター装置3とのデータ通信が可能な状況下において、書込みデータをCGW13に転送することができ、書換え対象ECU19においてインストールを実行することができる。
例えば書換え対象ECU19が複数であり、インストールに時間を要する場合に、インストールの進捗状況を車載側システム4からセンター装置3に通知することができ、携帯端末6にて進捗状況を逐一表示することができる。尚、DCM12は、書込みデータの転送中に書込みデータの転送判定処理を行っても良い。この場合、DCM12は、書込みデータの転送中にデータ通信が接続状態であると判定すると、書込みデータの転送を継続するが、書込みデータの転送中にデータ通信が途絶状態であると判定すると、書込みデータの転送を中断する。
次に、書込みデータの取得判定処理について説明する。車両用プログラム書換えシステム1は、CGW13において書込みデータの取得判定処理を行う。前述した(3)書込みデータの転送判定処理は、インストールフェーズでDCM12が行う判定処理であり、書込みデータの取得判定処理は、同じくインストールフェーズでCGW13が行う判定処理である。
図95に示すように、CGW13は、書込みデータの取得判定部76において、イベント発生判定部76aと、通信状態判定部76bとを有する。イベント発生判定部76aは、センター装置3からの書込みデータの取得要求(インストール指示)のイベント発生を判定する。通信状態判定部76bは、書込みデータの取得要求のイベント発生がイベント発生判定部76aにより判定されると、例えばユーザが予め設定する取得可否判定フラグが第1所定値である場合に、センター装置3とDCM12との間のデータ通信の状態を判定する。取得可否判定フラグとは、例えばインストールの際に所定条件をチェックする場合は1(第1所定値)、チェックを省略する場合は0(第2所定値)である。ここで、イベント発生判定部76aは、ユーザがインストールを指示したことに基づいてイベント発生を判定しても良く、例えばユーザが車載ディスプレイ7にてインストールの指示操作(図75参照)をした旨の通知を受けると、書込みデータの取得要求のイベントが発生したと判定する。
次に、CGW13における書込みデータの取得判定部76の作用について図96を参照して説明する。CGW13は、書込みデータの取得判定プログラムを実行し、書込みデータの取得判定処理を行う。
CGW13は、書込みデータの取得要求のイベント発生を判定すると、書込みデータの取得判定処理を開始する。CGW13は、書込みデータの取得判定処理を開始すると、取得可否判定フラグを判定する(S401,S402)。CGW13は、取得可否判定フラグが第1所定値であると判定すると(S401:YES)、センター装置3とDCM12との間のデータ通信の状態を判定する(S403:。CGW13は、センター装置3とDCM12との間のデータ通信が接続であると判定すると(S403:YES)、書込みデータの取得要求をDCM12に送信し(S404)、書込みデータの取得判定処理を終了する。これ以降、CGW13は、DCM12から書込みデータが転送されると、その転送された書込みデータを書換え対象ECU19に配信する。CGW13は、センター装置3とDCM12との間のデータ通信が接続でなく途絶であると判定すると(S403:NO)、書込みデータの取得要求をDCM12に送信せず、書込みデータの取得判定処理を終了する。
又、CGW13は、取得可否判定フラグが第2所定値であると判定すると(S402:YES)、センター装置3とDCM12との間のデータ通信の状態を判定せずに書込みデータの取得要求をDCM12に送信し、書込みデータの取得判定処理を終了する。
以上に説明したように、CGW13は、DCM12からの書込みデータの取得前に書込みデータの取得判定処理を行うことで、取得可否判定グラグが第1所定値の場合にセンター装置3とDCM12との間のデータ通信の状態を判定する。CGW13は、データ通信が接続状態であると判定すると、書込みデータの取得を開始し、データ通信が途絶状態であると判定すると、書込みデータの取得を開始せずに待機する。センター装置3との通信が可能な状況下において、DCM12から書込みデータを取得することができ、書換え対象ECU19においてインストールを実行することができる。
例えば書換え対象ECU19が複数であり、インストールに時間を要する場合に、インストールの進捗状況を車載側システム4からセンター装置3に通知することができ、携帯端末6にて進捗状況を逐一表示することができる。尚、CGW13は、書込みデータの取得中に書込みデータの取得判定処理を行っても良い。この場合、CGW13は、書込みデータの取得中にデータ通信が接続状態であると判定すると、書込みデータの取得を継続するが、書込みデータの取得中にデータ通信が途絶状態であると判定すると、書込みデータの取得を中断する。
次に、前述した書込みデータの取得判定についてより詳細に説明する。書込みデータの取得は、インストールに関する処理の一つであり、ここでは、インストールの指示判定処理について図97から図100を参照して説明する。車両用プログラム書換えシステム1は、CGW13においてインストールの指示判定処理を行う。前述した(1)配信パッケージの送信判定処理、(2)配信パッケージのダウンロード判定処理は、ダウンロードフェーズで行う判定処理であり、(3)書込みデータの転送判定処理、(4)書込みデータの取得判定処理は、ダウンロード完了後のインストールフェーズで行う処理であり、(5)インストールの指示判定処理は、インストールフェーズ及びアクティベートフェーズで行う処理である。ここで、配信パッケージがDCM12にダウンロードされ、図46に示すように、書込み対象ECU19への書込みデータ(更新データ、差分データ)がアンパッケージングされた状態とする。
図97に示すように、CGW13は、インストールの指示判定部77において、インストール条件判定部77aと、インストール指示部77bと、車両状態情報取得部77cと、アクティベート条件判定部77dと、アクティベート指示部77eとを有する。インストール条件判定部77aは、第1条件、第2条件、第3条件、第4条件、第5条件が成立しているか否かを判定する。第1条件は、インストールに関するユーザ承諾が得られている、という条件である。インストールに関するユーザ承諾とは、例えば図75に示す画面において、インストールに対するユーザの承諾操作(例えば「すぐ更新」ボタン506aを押下)を示す。又は、ダウンロードからアクティベートまでを一つの更新とみなし、更新に対するユーザの承諾操作としても良い。
第2条件は、CGW13がセンター装置3とデータ通信可能である、という条件である。第3条件は、車両状態がインストール可能である、という条件である。第4条件は、書換え対象ECU19がインストール可能である、という条件である。ここで、第4条件は、インストール対象の書換え対象ECU19がインストール可能であることだけでなく、そのインストール対象の書換え対象ECU19と連携する書換え対象ECU19もインストール可能であることも含む。第5条件は、書込みデータが正常なデータである、という条件である。ここで、正常なデータとは、書換え対象ECU19に適したデータであること、改ざんされていないデータであること等を含む。
インストール指示部77bは、第1条件、第2条件、第3条件、第4条件及び第5条件の全てが成立しているとインストール条件判定部77aにより判定されると、アプリプログラムのインストールを書換え対象ECU19に指示する。即ち、インストール指示部77bは、インストールに関するユーザ承諾が得られており、CGW13がセンター装置3とデータ通信可能であり、車両状態がインストール可能な状態であり、書換え対象ECU19がインストール可能な状態であり、書込みデータが正常なデータであるとインストール条件判定部77aにより判定されると、アプリプログラムのインストールを書換え対象ECU19に指示する。具体的には、インストール指示部77bは、書込みデータをDCM12から取得し、その取得した書込みデータを書換え対象ECU19に転送する。インストール指示部77bは、第1条件、第2条件、第3条件、第4条件及び第5条件の少なくとも何れかが成立していないとインストール条件判定部77aにより判定されると、アプリプログラムのインストールを書換え対象ECU19に指示せず、待機又はインストールを開始することができない旨及びその理由をユーザに提示する。
車両状態情報取得部77cは、センター装置3から車両状態情報を取得する。アクティベート条件判定部77dは、書換え対象ECU19の全てにおいてアプリプログラムのインストールが完了した場合に、第6条件、第7条件、第8条件が成立しているか否かを判定する。第6条件は、アクティベートに関するユーザ承諾が得られている、という条件である。アクティベートに関するユーザ承諾とは、例えば図79に示す画面において、アクティベートに対するユーザの承諾操作(例えば「OK」ボタン508bを押下)を示す。又は、ダウンロードからアクティベートまでを一つの更新とみなし、更新に対するユーザの承諾操作としても良い。第7条件は、車両状態がアクティベート可能な状態である、という条件である。第8条件は、書換え対象ECU19がアクティベート可能な状態である、という条件である。
アクティベート指示部77eは、第6条件、第7条件及び第8条件の全てが成立しているとアクティベート条件判定部77dにより判定されると、アプリプログラムのアクティベートを書換え対象ECU19に指示する。具体的には、後述する(12)アクティベート要求の指示処理において説明する。即ち、アクティベート指示部77eは、アクティベートに関するユーザ承諾が得られており、車両状態がアクティベート可能な状態であり、書換え対象ECU19がアクティベート可能な状態であるとアクティベート条件判定部77dにより判定されると、アプリプログラムのアクティベートを書換え対象ECU19に指示する。アクティベートを行うことにより、書換え対象ECU19に書込まれた更新プログラムが有効化される。アクティベート指示部77eは、第6条件、第7条件及び第8条件の少なくとも何れかが成立していないとアクティベート条件判定部77dにより判定されると、アプリプログラムのアクティベートを書換え対象ECU19に指示せず、待機又はアクティベートを開始ことができない旨及びその理由をユーザに提示する。
次に、CGW13におけるインストールの指示判定部77の作用について図98から図100を参照して説明する。CGW13は、インストールの指示判定プログラムを実行し、インストールの指示判定処理を行う。
CGW13は、インストールの指示判定処理を開始すると、第1条件が成立しているか否かを判定し、インストールに関するユーザ承諾が得られているか否かを判定する(S501、インストール条件判定手順の一部に相当する)。CGW13は、インストールに関するユーザ承諾が得られていると判定すると(S501:YES)、第2条件が成立しているか否かを判定し、センター装置3とデータ通信可能であるか否かを判定する(S502、インストール条件判定手順の一部に相当する)。CGW13は、DCM12での通信電波状況に基づいて、センター装置3とデータ通信可能であるか否かを判定する。
CGW13は、センター装置3とデータ通信可能であると判定すると(S502:YES)、第3条件が成立しているか否かを判定し、車両状態がインストール可能であるか否かを判定する(S503、インストール条件判定手順の一部に相当する)。CGW13は、車両状態として、例えば車両バッテリ40のバッテリ残量が所定容量以上であるか否か、書換え対象ECU19のメモリ構成が1面メモリの場合には車両が駐車状態(IGオフ状態)であるか否か等を判定し、車両状態がインストール可能であるか否かを判定する。これら車両状態の条件は、受信した書換え諸元データ(図44参照)を参照する構成としても良い。CGW13は、例えば車両バッテリ40のバッテリ残量が書換え諸元データで指定された所定容量以上であり、書換え諸元データで指定された車両状態(駐車状態のみ可、又は走行状態のみ可、又は駐車状態も走行状態も可)に合致する等の場合に、車両状態がインストール可能であると判定する。
CGW13は、車両状態がインストール可能であると判定すると(S503:YES)、第4条件が成立しているか否かを判定し、書換え対象ECU19がインストール可能であるか否かを判定する(S504、インストール条件判定手順の一部に相当する)。CGW13は、例えば書換え対象ECU19に故障コードが発生しておらず、書換え対象ECU19へのセキュリティアクセスに成功した等の場合に、書換え対象ECU19がインストール可能であると判定する。ここで、故障コードの発生有無は、書込みデータを書込む書換え対象ECU19に加え、その書換え対象ECU19と連携制御を行うECU19についても確認すると良い。即ち、CGW13は、書換え対象ECU19に対してだけでなく、その書換え対象ECU19と連携制御を行うECU19に対しても、故障コードが発生しているか否かを判定する。
CGW13は、書換え対象ECU19がインストール可能であると判定すると(S504:YES)、第5条件成立しているか否かを判定し、書込みデータが正常なデータであるか否かを判定する(S505、インストール条件判定手順の一部に相当する)。CGW13は、書換え対象ECU19の書込み面(非運用面)に合致する書込みデータであり、書込みデータに対する完全性の検証結果が正常である等の場合に、書込みデータが正常なデータであると判定する。CGW13は、書込みデータが正常なデータであると判定すると(S505:YES)、アプリプログラムのインストールを書換え対象ECU19に指示する(S506、インストール指示手順に相当する)、このようにCGW13は、第1条件を満たしたことを条件として、第2条件以降の判定を行う。又、CGW13は、最後に第5条件の判定を行う。CGW13は、第1条件から第5条件の全てが成立していると判定すると、アプリプログラムのインストールを書換え対象ECU19に指示する。
一方、CGW13は、インストールに関するユーザ承諾が得られていないと判定すると(S501:NO)、センター装置3とデータ通信可能でないと判定すると(S502:NO)、車両状態がインストール可能でないと判定すると(S503:NO、書換え対象ECU19がインストール可能でないと判定すると(S504:NO)、書込みデータが正常なデータでないと判定すると(S505:NO)、アプリプログラムのインストールを書換え対象ECU19に指示しない。尚、上記した処理では、インストールに関するユーザ承諾が得られている条件を、他の条件よりも先に判定する構成を説明したが、他の条件よりも後に判定する構成でも良い。
CGW13は、アプリプログラムのインストールを書換え対象ECU19に指示すると、書込みデータを書換え対象ECU19に配信し(S507)、インストールを完了したか否かを判定する(S508)。CGW13は、インストールを完了したと判定すると(S508:YES)、第6条件が成立しているか否かを判定し、アクティベートに関するユーザ承諾が得られているか否かを判定する(S509)。CGW13は、アクティベートに関するユーザ承諾が得られていると判定すると(S509:YES)、第7条件が成立しているか否かを判定し、車両状態がアクティベート可能な状態であるか否かを判定する(S510)。
CGW13は、車両状態がアクティベート可能な状態であると判定すると(S510:YES)、第8条件が成立しているか否かを判定し、書換え対象ECU19がアクティベート可能な状態であるか否かを判定する(S511)。CGW13は、書換え対象ECU19がアクティベート可能な状態であると判定すると(S511:YES)、アクティベートを書換え対象ECU19に指示する(S512)、このようにCGW13は、第6条件から第8条件の全てが成立していると判定すると、アクティベートを書換え対象ECU19に指示する。
又、CGW13は、書換え対象ECU19が複数の場合には、インストールを個別に指示しても良いし纏めて指示しても良い。書換え対象ECU19がECU(ID1)、ECU(ID2)の場合、インストールを個別に指示する態様では、CGW13は、図99に示すように、ECU(ID1)についてインストール条件が成立するか否かを判定する。CGW13は、ECU(ID1)についてインストール条件が成立すると判定すると、インストールをECU(ID1)に指示する。次いで、CGW13は、ECU(ID2)についてインストール条件が成立するか否かを判定する。ここでは、CGW13は、インストール条件として、ECU(ID2)について第4条件及び第5条件が成立するか否かを判定すれば良い。CGW13は、ECU(ID2)についてインストール条件が成立すると判定すると、インストールをECU(ID2)に指示する。
書換え対象ECU19がECU(ID1)、ECU(ID2)の場合、インストールを纏めて指示する態様では、CGW13は、図100に示すように、ECU(ID1)についてインストール条件が成立するか否かを判定する。即ち、CGW13は、第1条件から第3条件と、ECU(ID1)についての第4条件及び第5条件を判定する。CGW13は、ECU(ID1)についてインストール条件が成立すると判定すると、ECU(ID2)についてインストール条件が成立するか否かを判定する。即ち、CGW13は、ECU(ID2)についての第4条件及び第5条件を判定する。CGW13は、ECU(ID2)についてインストール条件が成立すると、インストールをECU(ID1)及びECU(ID2)に指示する。CGW13は、例えばECU(ID1)への書換えデータの転送と、ECU(ID2)への書換えデータの転送とを同時に並行して行う。このようにCGW13は、インストールを纏めて指示する態様では、第1条件から第3条件と、書換え対象ECU全てについての第4条件及び第5条件を判定する。そして、CGW13は、これら全ての条件を満たした上で、インストールを指示する。
以上に説明したように、CGW13は、インストールを書換え対象ECU19に指示する前に、インストール指示判定処理を行うことで、インストールに関するユーザ承諾が得られている第1条件、センター装置3とデータ通信可能である第2条件、車両状態がインストール可能な状態である第3条件、書換え対象ECU19がインストール可能な状態である第4条件、書込みデータが正常なデータである第5条件の全てが成立していると判定すると、アプリプログラムのインストールを書換え対象ECU19に指示するようにした。書換え対象ECU19に対してアプリプログラムのインストールを適切に指示することができる。
(6)セキュリティアクセス鍵の管理処理
セキュリティアクセス鍵の管理処理について図101から図105を参照して説明する。セキュリティアクセス鍵とは、CGW13が書込みデータのインストールを行う前に書換え対象ECU19にアクセスする際の機器認証を行うための鍵である。車両用プログラム書換えシステム1は、CGW13においてセキュリティアクセス鍵の管理処理を行う。ここでは、前述した(3)書込みデータの転送判定処理、又は(4)書込みデータの取得判定処理により、CGW13がDCM12から書込みデータを取得可能な状態であることを前提として説明する。セキュリティアクセス鍵を用いた機器認証は、前述した(5)インストールの指示判定処理における第4条件(ステップS505)に相当する。
CGW13が書込みデータを書換え対象ECU19に配信する際には、CGW13が書換え対象ECU19との間でセキュリティアクセス鍵を用いてセキュリティアクセス(機器認証)を行う必要がある。この場合、CGW13において、乱数値の生成を書換え対象ECU19に要求し、書換え対象ECU19により生成された乱数値を書換え対象ECU19から取得し、その取得した乱数値を計算してセキュリティアクセス鍵を生成する手法が考えられる。しかしながら、このような手法では、アプリプログラムの書換えを行わないときでも書換え対象ECU19から乱数値を取得すれば、セキュリティアクセス鍵を保持可能となるので、セキュリティアクセス鍵の漏洩リスクが生じ得る。
又、CGW13において、書換え対象ECU19から取得した乱数値をセンター装置3に送信し、センター装置3が乱数値を計算してセキュリティアクセス鍵を生成する構成とすれば、セキュリティアクセス鍵を保持しなくて済むので、セキュリティアクセス鍵の漏洩リスクを低減可能となる。しかしながら、センター装置3が乱数値を計算する構成では、書換え対象ECU19がセンター装置3から乱数値を取得するまでの待機時間が長くなり、ダイアグ通信の時間規定を満たすことが難しくなる。このような事情から、本実施形態では以下の構成を採用している。
図101に示すように、サプライヤは、書換え対象ECU19毎のセキュリティアクセス鍵を、セキュリティアクセス鍵の暗号・復号鍵を用いて暗号化して乱数値を生成する。ここでいう乱数値は、過去に使用した値と異なる値、過去に使用した値と同じ値の何れも含み、ランダムな値という意味である。乱数値は、暗号化されたセキュリティアクセス鍵である。サプライヤは、生成した乱数値をリプログデータと共に提供する。セキュリティアクセス鍵、セキュリティアクセス鍵の暗号・復号鍵、乱数値は、ECU19毎にユニークな鍵である。
OEMは、サプライヤからリプログデータと共に乱数値が提供されると、その提供された乱数値を、ECU19を識別するECU(ID)と対応付け、図44に示したCGW用の書換え諸元データに格納する。又、OEMは、乱数値を復号化するために必要な鍵パターンや復号演算パターンについても、CGW用の書換え諸元データに格納する。鍵パターンとしては、共通鍵/公開鍵等の方式や鍵長等を格納し、復号演算パターンとしては、復号演算に用いるアルゴリズムの種類等を格納する。OEMは、乱数値、鍵パターン及び復号演算パターンをCGW用の書換え諸元データに格納すると、その乱数値を格納したCGW用の書換え諸元データをリプログデータと共にセンター装置3に提供する。これらサプライヤから提供される情報は、後述するECUリプロデータDB及びECUメタデータDBに保存される。
センター装置3は、OEMからリプログデータと共に書換え諸元データ(DCM用の書換え諸元データ及びCGW用の書換え諸元データ)が提供されると、その提供された書換え諸元データとリプログデータとを含む配信パッケージをマスタ装置11に送信する。マスタ装置11において、DCM12は、センター装置3から配信パッケージをダウンロードすると、書換え諸元データと書込みデータをCGW13に転送する。
図102に示すように、CGW13は、セキュリティアクセス鍵の管理部78において、セキュア領域78a(復号鍵記憶部に相当する)と、乱数値抽出部78b(鍵導出値抽出部に相当する)と、鍵パターン抽出部78cと、復号演算パターン抽出部78dと、鍵生成部78eと、セキュリティアクセス実行部78fと、セッション移行要求部78gと、鍵消去部78hとを有する。セキュア領域78aは、ECU19の外部から情報の読出しが不可であり、セキュリティアクセス鍵の暗号・復号鍵、復号演算アルゴリズムが配置されている。乱数値抽出部78bは、CGW用の書換え諸元データの解析結果から当該書換え諸元データに含まれている乱数値(鍵導出値)を抽出する。乱数値は、書換え対象ECU19のECU(ID)に対応付けられて暗号化された値である。
鍵パターン抽出部78cは、CGW用の書換え諸元データの解析結果から当該書換え諸元データに含まれている鍵パターンを抽出する。復号演算パターン抽出部78dは、CGW用の書換え諸元データの解析結果から当該書換え諸元データに含まれている復号演算パターンを抽出する。
鍵生成部78eは、乱数値が乱数値抽出部78bにより抽出されると、セキュア領域78aを検索し、その抽出された乱数値を、セキュア領域78aに配置されているセキュリティアクセス鍵の復号鍵の束の中からECU(ID)に対応する復号鍵を用いて復号化し、セキュリティアクセス鍵を生成する。この場合、鍵生成部78eは、鍵導出値を、鍵パターン抽出部78cにより抽出された鍵パターンにより特定される復号鍵を用い、復号演算パターン抽出部78dにより抽出された復号演算パターンにより特定される復号演算方式にしたがって復号化する。即ち、複数の鍵パターン及び複数の復号演算パターンが用意されており、CGW用の書換え諸元データにより鍵パターン及び復号演算パターンが指定されることで、鍵生成部78eは、その鍵パターン及び復号演算パターンを用いてセキュリティアクセス鍵を生成する。
セキュリティアクセス実行部78fは、セキュリティアクセス鍵が鍵生成部78eにより生成されると、その生成されたセキュリティアクセス鍵を用いて書換え対象ECU19に対するセキュリティアクセスを実行する。具体的には、セキュリティアクセス実行部78fは、例えばセキュリティアクセス鍵を用いてECU(ID)を暗号化した暗号化データを送信し、書換え対象ECU19にアクセスを要求する。書換え対象ECU19は、暗号化データを受信すると、その受信した暗号化データを、自己が保持しているセキュリティアクセス鍵を用いて復号化する。そして、書換え対象ECU19は、復号化により生成した復号化データと自己のECU(ID)とを比較し、両者が一致する場合には自己へのアクセスを許可し、両者が一致しない場合には自己へのアクセスを許可しない。
セッション移行要求部78gは、書換えセッションへの移行を要求する。デフォルトセッションから書換えセッションへ移行した後に、セキュリティアクセス実行部78fがセキュリティアクセスを実行する。尚、デフォルトセッション以外のセッション(例えば診断セッション)に移行した上でセキュリティアクセスを行い、その後、書換えセッションに移行しても良い。鍵消去部78hは、書換え対象ECU19に対するセキュリティアクセスがセキュリティアクセス実行部78fにより実行されて書換え対象ECU19のアプリプログラムの書換えが完了された後に、鍵生成部78eにより生成されたセキュリティアクセス鍵を消去する。
次に、CGW13におけるセキュリティアクセス鍵の管理部78の作用について図103から図105を参照して説明する。CGW13は、セキュリティアクセス鍵の管理プログラムを実行し、セキュリティアクセス鍵の管理処理を行う。CGW13は、セキュリティアクセス鍵の管理処理として、セキュリティアクセス鍵の生成処理、セキュリティアクセス鍵の消去処理を行う。以下、それぞれの処理について順次説明する。
(6-1)セキュリティアクセス鍵の生成処理
CGW13は、セキュリティアクセス鍵の生成処理を開始すると、DCM12から取得した書換え諸元データを解析し(S601、書換え諸元データ解析手順に相当する)、CGW用の書換え諸元データから乱数値、鍵パターン、復号演算パターンを抽出する(S602、鍵導出値抽出手順に相当する)。
CGW13は、セキュア領域78aを検索し、CGW用の書換え諸元データから抽出した乱数値を、セキュア領域78aに配置されているセキュリティアクセス鍵の復号鍵の束の中からECU(ID)に対応する復号鍵を用いて復号化し、セキュリティアクセス鍵を生成する(S603、鍵生成手順に相当する)
CGW13は、図104示すように、CGW用の書換え諸元データからセキュリティアクセス鍵を生成する。CGW13は、書込みデータを書込み可能とする書換えセッションへのセッション移行要求を行い(S604)、セキュリティアクセス鍵を用い、書換え対象ECU19に対するセキュリティアクセスを実行する(S605)、CGW13は、セキュリティアクセスの実行を完了すると、書込みデータを書換え対象ECU19に配信し(S606)、セッション維持要求を行う(S607)。CGW13は、インストールを完了したと判定すると(S608:YES)、セキュリティアクセス鍵の生成処理を終了する。
(6-2)セキュリティアクセス鍵の消去処理
CGW13は、セキュリティアクセス鍵の消去処理を開始すると、書換え対象ECU19のアプリプログラムの書換えを完了したか否かを判定する(S611)。CGW13は、書換え対象ECU19のアプリプログラムの書換えを完了したと判定すると(S611:YES)、セキュリティアクセス鍵の生成処理を実行して生成したセキュリティアクセス鍵を消去し(S612)、セキュリティアクセス鍵の消去処理を終了する。
以上に説明したように、CGW13は、セキュリティアクセス鍵の管理処理を行うことで、書換え諸元データの解析結果から書換え対象ECU19に対応する乱数値を抽出し、その乱数値をセキュア領域78aに記憶されている書換え対象ECU19に対応する復号鍵を用いて復号化し、セキュリティアクセス鍵を生成するようにした。セキュリティアクセス鍵を外部から取得せず、セキュリティアクセス鍵をCGW13において生成することで、セキュリティアクセス鍵の漏洩リスクを低減しつつ、書換え対象ECU19に対するセキュリティアクセスを適切に実行することができる。
尚、CGW13は、書換え対象ECU19が複数の場合には、それぞれの書込みデータのインストールを行う直前にセキュリティアクセス鍵の生成処理を行うことが望ましい。即ち、CGW13は、書換え対象ECU19がECU(ID1)、ECU(ID2)、ECU(ID3)の場合あれば、ECU(ID1)のセキュリティアクセス鍵の生成処理、ECU(ID1)への書込みデータのインストール、ECU(ID2)のセキュリティアクセス鍵の生成処理、ECU(ID2)への書込みデータのインストール、ECU(ID3)のセキュリティアクセス鍵の生成処理、ECU(ID3)への書込みデータのインストールの順序で行うことが望ましい。例えば図99に示すように、CGW13は、ECU(ID1)に対するインストール条件が成立したか否かの一つとしてセキュリティアクセス処理を行い、正常にアクセスが許可された場合に、ECU(ID1)に対してインストールを指示する。その後、CGW13は、ECU(ID2)に対するインストール条件が成立したか否かの一つとしてセキュリティアクセス処理を行い、正常にアクセスが許可された場合に、ECU(ID2)に対してインストールを指示する。
又、書換え対象ECU19は、CGW13が自己へのセキュリティアクセスを行ったことで自己へのアクセスを許可すると、CGW13からセッション移行要求を受信することでセキュリティアクセスを解除し、書込みデータのフラッシュメモリに書込み可能な状態とする。セッション移行要求とは、例えば図191に示す第2状態の中の「書換えセッション移行要求」である。書換え対象ECU19は、自己へのアクセスを許可してから所定時間(例えば5秒)以内にCGW13からセッション移行要求を受信しないと、タイムアウトになり、セキュリティアクセスをロックし、セッション移行要求の受信を受付けない。CGW13は、書換え対象ECU19へのアクセスの許可を特定してから所定時間以内にセッション移行要求を書換え対象ECU19に送信しない場合には、セッション維持要求を書換え対象ECU19に送信し、書換え対象ECU19がタイムアウトしないように保持し、セッション移行要求を書換え対象ECU19に送信する必要がある。
又、例えば書換えの途中でキャンセル操作されたことで運用面にバージョン1.0のアプリププログラムが書込まれ、非運用面にバージョン2.0のアプリププログラムが書込まれており、その状態からバージョン2.0へのキャンペーン通知が発生すると、インストールを行わずにアクティベートだけを行えば良いので、セキュリティアクセス処理を省略しても良い。
(7)書込みデータの検証処理
書込みデータの検証処理について図106から図114を参照して説明する。車両用プログラム書換えシステム1は、CGW13において書込みデータの検証処理を行う。CGW13は、本実施形態で説明する書込みデータの検証処理を、前述した(6)セキュリティアクセス鍵の管理処理におけるアクセス許可を取得する前に行っても良いし、アクセス許可を取得した後に行っても良い。
図106に示すように、サプライヤやOEMは、書込みデータを生成すると、その生成した書込みデータに対してデータ検証値算出アルゴリズムを適用してデータ検証値を生成する。ここで、書込みデータは、更新する新プログラムであっても良いし、旧プログラムから新プログラムへの差分データであっても良い。サプライヤやOEMは、そのデータ検証値に対して所定の鍵(キー値)を用いた暗号化を適用して認証子を生成し、書込みデータと認証子とを対応付けてセンター装置3に登録する。具体的には、後述するリプロデータDBにECU19毎にこれらのデータを記憶する。そして、センター装置3は、書込みデータと認証子とを含む配信パッケージを生成し、パッケージDBに記憶する。
センター装置3は、マスタ装置11からの配信パッケージのダウンロード要求が発生すると、そのダウンロード要求にしたがって書込みデータと認証子とを含む配信パッケージをマスタ装置11に送信する。この場合、センター装置3からマスタ装置11に送信される書込みデータは暗文であり、センター装置3からマスタ装置11に送信される認証子も暗文である。尚、センター装置3からマスタ装置11に送信される認証子は平文であっても良い。センター装置3からマスタ装置11に送信される認証子が平文である場合には、後述する復号処理は不要である。
マスタ装置11は、センター装置3から配信パッケージをダウンロードすると、そのダウンロードした配信パッケージから書換え対象ECU19の書込みデータを抽出し、その書込みデータを書換え対象ECU19に配信する前に、その書込みデータの妥当性を検証する。即ち、マスタ装置11は、復号処理、第1検証値算出処理、第2検証値算出処理、比較処理、判定処理を順次実行し、書込みデータを検証する。復号処理は、暗文で送信された認証子を復号する処理である。第1検証値算出処理は、復号した認証子から鍵(キー値)を用いて期待値である第1データ検証値を算出する処理である。第2検証値算出処理は、データ検証値算出アルゴリズムを用いて書込みデータから第2データ検証値を算出する処理である。比較処理は、第1データ検証値と第2データ検証値とを比較する処理である。判定処理は、比較処理の比較結果から書込みデータの妥当性を判定する処理である。
図107に示すように、CGW13は、書込みデータの検証部79において、書込み可能判定部79aと、処理実行要求部79bと、処理結果取得部79cと、検証部79dとを有する。書込み可能判定部79aは、書換え対象ECU19において書込みデータの書込みが可能であるか否かを判定する。処理実行要求部79bは、書換え対象ECU19において書込みデータの書込みが可能であると書込み可能判定部69aにより判定されると、処理実行要求をDCM12に通知し、DCM12に対して処理の実行を要求する。処理実行要求部68bは、復号処理、第1検証値算出処理、第2検証値算出処理、比較処理、判定処理のうち少なくとも何れかの処理実行要求をDCM12に通知する。処理結果取得部68cは、DCM12から処理結果が通知されることで、DCM12から処理結果を取得する。検証部79dは、処理結果が処理結果取得部68cにより取得されると、その処理結果を用いて書込みデータを検証する。即ち、上記した構成では、CGW13は第1装置及び第1機能部に相当し、DCM12は第2装置及び第2機能部に相当する。
次に、CGW13における書込みデータの検証部79の作用について図108から図113を参照して説明する。CGW13は、書込みデータの検証プログラムを実行し、書込みデータの検証処理を行う。
CGW13は、書込みデータの検証処理を開始すると、処理実行要求をDCM12に通知し、DCM12に対して処理の実行を要求する(S701、処理実行要求手順に相当する)。CGW13は、上記した復号処理、第1検証値算出処理、第2検証値算出処理、比較処理、判定処理のうち少なくとも何れかの処理実行要求をDCM12に通知する。CGW13は、DCM12から処理結果を取得すると(S702、処理結果取得手順に相当する)、その取得した処理結果を用いて書込みデータを検証する(S703、検証手順に相当する)。
以下、CGW13が処理実行要求をDCM12に通知する幾つかの場合を例示する。図109の例示では、CGW13は、復号処理、第1検証値算出処理、第2検証値算出処理の処理実行要求をDCM12に通知する。DCM12は、CGW13から復号処理、第1検証値算出処理、第2検証値算出処理の処理実行要求が通知されると、復号処理、第1検証値算出処理、第2検証値算出処理を順次実行する。DCM12は、処理結果通知処理を実行し、第1検証値算出処理により算出した第1データ検証値、第2検証値算出処理により算出した第2データ検証値を処理結果としてCGW13に通知する。CGW13は、処理結果取得処理を実行し、DCM12から第1データ検証値、第2データ検証値を取得すると、その第1データ検証値、第2データ検証値を用い、比較処理、判定処理を順次実行する。CGW13は、判定処理の判定結果の正否により書込みデータを検証する。本例示では、第1データ検証値を算出するための鍵をDCM12が保持している。
図110の例示では、CGW13は、復号処理、第2検証値算出処理の処理実行要求をDCM12に通知する。DCM12は、CGW13から復号処理、第2検証値算出処理の処理実行要求が通知されると、復号処理、第2検証値算出処理を順次実行し、第2検証値算出処理により算出した第2データ検証値をCGW13に通知する。CGW13は、処理結果取得処理を実行し、DCM12から第2データ検証値を取得すると、第1検証値算出処理を実行し、第1検証値算出処理により算出した第1データ検証値、その第2データ検証値を用い、比較処理、判定処理を順次実行する。CGW13は、判定処理の判定結果の正否により書込みデータを検証する。本例示では、第1データ検証値を算出するための鍵をCGW13が保持している。
図111の例示では、CGW13は、復号処理、第1検証値算出処理、第2検証値算出処理、比較処理の処理実行要求をDCM12に通知する。DCM12は、CGW13から復号処理、第1検証値算出処理、第2検証値算出処理、比較処理の処理実行要求が通知されると、復号処理、第1検証値算出処理、第2検証値算出処理、比較処理を順次実行する。DCM12は、処理結果通知処理を実行し、比較処理の比較結果を処理結果としてCGW13に通知する。CGW13は、処理結果取得処理を実行し、DCM12から比較結果を取得すると、その比較結果を用い、判定処理を実行する。CGW13は、判定処理の判定結果の正否により書込みデータを検証する。本例示では、第1データ検証値を算出するための鍵をDCM12が保持している。
図112の例示では、CGW13は、復号処理、第1検証値算出処理、第2検証値算出処理、比較処理、判定処理の処理実行要求をDCM12に通知する。DCM12は、CGW13から復号処理、第1検証値算出処理、第2検証値算出処理、比較処理、判定処理の処理実行要求が通知されると、復号処理、第1検証値算出処理、第2検証値算出処理、比較処理、判定処理を順次実行する。DCM12は、処理結果通知処理を実行し、判定処理の判定結果を処理結果としてCGW13に通知する。CGW13は、処理結果取得処理を実行し、DCM12から処理結果を取得すると、その処理結果により示される判定結果の正否により書込みデータを検証する。本例示では、第1データ検証値を算出するための鍵をDCM12が保持している。
CGW13は、書換え対象ECU19が複数の場合には、複数の書換え対象ECU19に対する書込みデータの検証処理を、以下のようにして行う。CGW13は、書換え対象ECU19が複数の場合には、書込みデータを複数の書換え対象ECU19に対して纏めて検証する手法と、個別に検証する手法とがある。
CGW13は、書込みデータを複数の書換え対象ECU19に対して纏めて検証する手法では、図113に示すように、例えばECU(ID1)の書込みデータ、ECU(ID2)の書込みデータ、ECU(ID3)の書込みデータを纏めて検証し、ECU(ID1)の書込みデータの書込え対象ECU(ID1)に配信し、ECU(ID2)の書込みデータの書込え対象ECU(ID2)に配信し、ECU(ID3)の書込みデータの書込え対象ECU(ID3)に配信する。この場合、複数の書換え対象ECU19に対する書込みデータの検証を纏めることで、複数の書換え対象ECU19に対する書込みデータの検証の開始からプログラムの書換えの完了までに要する時間を短縮することができる。即ち、書込みデータを複数の書換え対象ECU19に対して個別に検証する構成よりも、複数の書換え対象ECU19に対する書込みデータの検証の開始からプログラムの書換えの完了までに要する時間を短縮することができる。
CGW13は、書込みデータを複数の書換え対象ECU19に対して個別に検証する手法では、図114に示すように、例えばECU(ID1)の書込みデータを検証し、ECU(ID1)の書込みデータの書込え対象ECU(ID1)に配信し、ECU(ID2)の書込みデータを検証し、ECU(ID2)の書込みデータの書込え対象ECU(ID2)に配信し、ECU(ID3)の書込みデータを検証し、ECU(ID3)の書込みデータの書込え対象ECU(ID2)に配信する。この場合、書込みデータを配信する直前に書込みデータを検証することで、不正なアクセスを回避することができ、信頼性を高めることができる。即ち、書込みデータを複数の書換え対象ECU19に対して纏めて検証する構成では、書換え順序により検証を完了してから書込みデータを配信するまでの時間が書換え順序により異なり、検証を完了してから書込みデータを配信するまでの時間が長くなると、その間に不正なアクセスによる改ざんの危険性が発生することが懸念されるが、書込みデータを配信する直前に書込みデータを検証することで、そのような事態を回避することができる。
以上に説明したように、CGW13は、書込みデータの検証処理を行うことで、書込みデータの検証に関与する処理のうち少なくとも一部を、センター装置3から配信パッケージをダウンロードするDCM12に実行させるようにした。CGW13や書換え対象ECU19において、書込みデータを記憶するための領域が確保不能であったり、検証用の演算プログラムを搭載不能であったりしても、書込みデータを書換え対象ECU19にて書込む前に、書込みデータの検証を適切に行うことができる。
図110に例示したCGW13が第1検証値算出処理を行う構成では、CGW13が鍵(キー値)を保持し、その鍵をDCM12に送信することなく検証処理を行うので、DCM12が第1検証値算出処理を行う構成に比べ、セキュリティ性を高めることができる。又、書換え対象ECU19が複数の場合には、複数の書換え対象ECU19で共通する共通鍵(キー値)を用いて第1検証値算出処理を行っても良いし、複数の書換え対象ECU19で異なる個別鍵(キー値)を用いて第1検証値算出処理を行っても良い。
尚、以上は、CGW13が処理実行要求をDCM12に通知する構成を例示したが、例えばDCM12において処理負荷が増大して本来の処理に支障が発生するような場合には、DCM12に代えてナビゲーション装置や書換え対象ECU19以外のECUを用い、処理実行要求をナビゲーション装置や書換え対象ECU19以外のECUに通知しても良い。
又、DCM12とCGW13とが一体型の場合において、本来の処理に支障が発生せずに対応可能な場合は、処理実行要求を自身の処理実行部に要求しても良い。例えば同一ECU内で異なるソフトコンポーネント間で行っても良い。又、DCM12及びCGW13の機能を有する1つの統合ECUとして構成されるマスタ装置11に対し、上述の発明を適用しても良い。例えば図109から図112において、CGW13における処理機能を第1機能部、DCM12における処理機能を第2機能部とし、第1機能部から第2機能部へ処理実行要求を通知し、第2機能部から第1機能部へ実行結果を返す。統合ECUとして構成されるマスタ装置11において、処理負荷が増大して通信処理や中継処理に支障が発生するような場合には、第2機能部に代えて、ナビゲーション装置や書換え対象ECU19以外のECUに処理実行要求を通知しても良い。
又、データ検証値は、アプリプログラム全体で1つの値を算出しても良いし、アプリプログラムのブロック単位で複数の値を算出しても良い。書込みデータが全データであれば、書込みデータの完了後に完全性検証で使うことができる。
尚、セキュリティアクセスがCGW13と書換え対象ECU19とが接続しても良いか否かを検証する手法であるのに対し、書込みデータの検証は、書込みデータの配信先であるセンター装置3が正規であること(TLS通信による接続、相互認証)、センター装置3から書込みデータをダウンロードする通信路が正規であること(通信路の秘匿化、暗号化)、センター装置3からダウンロードした書込みデータが改ざんされていないこと(改ざん検知)、センター装置3からダウンロードした書込みデータが改ざん不能であること(暗号化)、という概念を含む。
又、新プログラムの書換え時の書込みデータについて説明したが、旧プログラムへ書き戻す際のロールバック時の書込みデータについても同様である。その場合、CGW13は、ロールバック時の書込みデータをセンター装置3からダウンロードした時点で検証しても良いが、書込みのキャンセル要求が発生したことでロールバック用の書込みデータを書換え対象ECU19に配信する直前に検証すると良い。
(8)データ格納面情報の送信制御処理
データ格納面情報の送信制御処理について図115から図117を参照して説明する。車両用プログラム書換えシステム1は、CGW13においてデータ格納面情報の送信制御処理を行う。
図115に示すように、CGW13は、データ格納面情報の送信制御部80において、データ格納面情報取得部80aと、データ格納面情報送信部80bと、書換え方法特定部80cと、書換え方法指示部80dとを有する。データ格納面情報取得部80aは、ECU構成情報として、各ECU19からハードウェア及びソフトウェアに関する情報を取得する。詳細には、データ格納面を複数面で持つ2面メモリECU及び1面サスペンドメモリECUの場合、データ格納面それぞれのバージョン情報を含むソフトウェアID及び運用面を特定可能な情報を2面書換え情報(以下、面情報という)として取得する。
データ格納面情報送信部80bは、面情報を含むECU構成情報がデータ格納面情報取得部80aにより取得されると、その取得された面情報をECU構成情報の一つとしてDCM12からセンター装置3に送信させる。データ格納面情報送信部80bは、IGスイッチ42のオンオフが切替わる度にECU構成情報をセンター装置3に送信させても良いし、センター装置3からの要求に応じてECU構成情報をセンター装置3に送信させても良い。又、データ格納面情報送信部80bは、2面メモリECU及び1面サスペンドメモリECUだけでなく、1面単独メモリECUについても面情報を含むECU構成を合わせて送信しても良い。
書換え方法特定部80cは、CGW13用の書換え諸元データの解析結果から書換え方法を特定する。書換え方法は、書換え対象ECU19におけるインストール時の電源切替え方法を示す。書換え方法指示部80dは、書換え方法が書換え方法特定部80cにより特定されると、その特定された書換え方法によるアプリプログラムの書換えを書換え対象ECU19に指示する。即ち、書換え方法指示部80dは、電源自己保持による書換え方法が書換え方法特定部80cにより特定されると、電源自己保持によるアプリプログラムの書換えを書換え対象ECU19に指示する。書換え方法指示部80dは、電源制御による書換え方法が書換え方法特定部80cにより特定されると、電源自己保持を用いずに電源制御によるアプリプログラムの書換えを書換え対象ECU19に指示する。
次に、CGW13におけるデータ格納面情報の送信制御部80の作用について図116及び図117を参照して説明する。CGW13は、データ格納面情報の送信制御プログラムを実行し、データ格納面情報の送信制御処理を行う。
CGW13は、データ格納面情報の送信制御処理を開始すると、面情報を含むECU構成情報要求を全ECU19に送信し(S801)、全ECU19から面情報を含むECU構成情報を取得する(S802、データ格納面情報取得手順に相当する)。CGW13は、各書換え対象ECU19からECU構成情報を取得すると、その取得したECU構成情報をDCM12に送信し(S803、データ格納面情報送信手順に相当する)、DCM12からの書込みデータと書換え諸元データの取得を待機する(S804)。ここで、CGW13は、書換え対象ECU19が予め特定している場合は、その特定している書換え対象ECU19だけから面情報等を取得しても良い。
DCM12は、CGW13からECU構成情報を受信すると、その受信したECU構成情報を一時的に蓄積し、ECU構成情報をセンター装置3に送信する(アップロードする)タイミングになると、そのECU構成情報をセンター装置3に送信する。センター装置3は、DCM12からECU構成情報を受信すると、その受信したECU構成情報を保存し、解析する。
センター装置3は、面情報の送信元である各ECU19の各面のアプリプログラムのバージョン及び何れの面が運用面であるかを特定し、その特定した2面分のアプリプログラムのバージョン及び運用面に適合する書込みデータを特定する(更新データ選定手順に相当する)。センター装置3は、例えばA面が運用面であり、その運用面に格納されているアプリプログラムがバージョン2.0であり、B面が非運用面であり、その非運用面に格納されているアプリプログラムがバージョン1.0である場合には、書込みデータとしてB面用のバージョン3.0の書込みデータを特定する。センター装置3は、書込みデータが差分データである場合には、バージョン1.0からバージョン3.0に更新する差分データを特定する。センター装置3は、書込みデータを特定すると、その特定した書込みデータと書換え諸元データを含む配信パッケージをDCM12に送信する(配信パッケージ送信手順に相当する)。
センター装置3は、DCM12に送信する配信パッケージを静的に選択しても良いし、動的に生成しても良い。センター装置3は、DCM12に送信する配信パッケージを静的に選択する場合には、書込みデータが格納されている配信パッケージを複数管理しており、非運用面に適合する書込みデータを選定し、その選定した書込みデータが格納されている配信パッケージを複数の配信パッケージの中から選択してDCM12に送信する。センター装置3は、DCM12に送信する配信パッケージを動的に生成する場合には、非運用面に適合する書込みデータを特定すると、その特定した書込みデータを格納した配信パッケージを生成してDCM12に送信する。
DCM12は、センター装置3から配信パッケージをダウンロードすると、そのダウンロードした配信パッケージから書込みデータと書換え諸元データを抽出し、その抽出した書込みデータと書換え諸元データをCGW13に転送する。
CGW13は、DCM12から書込みデータと書換え諸元データを取得したと判定すると(S804:YES)、その取得した書換え諸元データを解析し(S805)、その書換え諸元データの解析結果から書換え対象ECU19に対する書換え方法を判定する(S806,S807)。
CGW13は、書換え方法が電源自己保持による書換えであると判定すると(S806:YES)、インストール可能な車両状態であることを条件として書込みデータ取得要求をDCM12に送信し、DCM12から書込みデータを取得し、その取得した書込みデータを書換え対象ECU19に配信し、アプリプログラムを電源自己保持により書換え(S808)、データ格納面情報の送信制御処理を終了する。アプリプログラムを電源自己保持により書換える方法については、前述した図64及び図65を用いて(イ)電源自己保持によりアプリプログラムを書換える場合において説明した通りである。
CGW13は、書換え方法が電源制御による書換えであると判定すると(S807:YES)、駐車中であることを条件として書込みデータ取得要求をDCM12に送信し、DCM12から書込みデータを取得し、その取得した書込みデータを書換え対象ECU19に配信し、アプリプログラムを電源制御により書換え(S809)、データ格納面情報の送信制御処理を終了する。アプリプログラムを電源制御により書換える方法については、前述した図62及び図63を用いて(ア)電源制御によりアプリプログラムを書換える場合において説明した通りである。
以上に説明したように、CGW13は、データ格納面情報の送信制御処理を行うことで、面情報を含むECU構成情報をセンター装置3に通知し、ECU構成情報に適合する書込みデータを含む配信パッケージをセンター装置3からDCM12にダウンロードさせる。CGW13は、その面情報に適合する書込みデータをDCM12から取得し、その書込みデータを書換え対象ECU19に配信する。データ格納面を2面で持つフラッシュメモリが搭載されているECU19を書換え対象とする場合に、アプリプログラムを適切に書換えることができる。
尚、センター装置3が配信パッケージを配信する態様としては、以下に示す第1配信態様から第3配信態様がある。第1配信態様では、センター装置3は、例えばA面用のバージョン2.0の書込みデータとB面用のバージョン2.0の書込みデータを格納した1つの配信パッケージを配信する。DCM12は、センター装置3からダウンロードした配信パッケージからA面用のバージョン2.0の書込みデータとB面用のバージョン2.0の書込みデータを抽出し、その抽出した書込みデータをCGW13に転送する。CGW13は、DCM12からA面用のバージョン2.0の書込みデータとB面用のバージョン2.0の書込みデータが転送されると、そのうち何れかを選択して書換え対象ECU19に配信する。即ち、各データ格納面に対応する書込みデータが配信パッケージに含まれており、マスタ装置11において書換え対象ECU19に適した書換えデータを選択する構成である。
第2配信形態では、センター装置3は、例えばA面用のバージョン2.0の書込みデータを格納した配信パッケージ又はB面用のバージョン2.0の書込みデータを格納した配信パッケージのうち何れかを選択して配信する。DCM12は、センター装置3からダウンロードした配信パッケージから書込みデータを抽出し、その抽出した書込みデータをCGW13に転送する。CGW13は、DCM12から転送された書込みデータを書換え対象ECU19に配信する。即ち、DCM12からアップロードされた面情報に基づいて、センター装置3が、非運用面用の書込みデータを含む配信パッケージを選択する構成である。
第3配信態様では、センター装置3は、例えばA面用及びB面用で共有のバージョン2.0の書込みデータを格納した配信パッケージを配信する。DCM12は、センター装置3からダウンロードした配信パッケージからA面用及びB面用で共有のバージョン2.0の書込みデータを抽出し、その抽出した書込みデータをCGW13に転送する。CGW13は、DCM12から転送されたA面用及びB面用で共有のバージョン2.0の書込みデータを書換え対象ECU19に配信する。書換え対象ECU19は、CGW13からA面用及びB面用で共有のバージョン2.0の書込みデータを受信すると、その受信した書込みデータをA面又はB面の何れかに書込む。この場合、書換え対象ECU19において、アプリプログラムを実行する際に、マイコンのアドレス解決機能が働くことで、書込みデータをA面又はB面の何れに書込んでも適切に動作する。即ち、書込み対象ECU19のマイコンが面の違いに伴う実行アドレスの相違を解決することにより、センター装置3及びマスタ装置11は、面を意識することなく動作することができる。
CGW13からDCM12を介してセンター装置3に送信される面情報を含むECU構成情報は、2面分のアプリプログラムのバージョン及び運用面を特定可能な情報に加え、車両特定情報、システム特定情報、ECU特定情報、利用環境情報等が含まれていても良い。
車両特定情報は、配信パッケージの配信先の車両を特定するためのユニークな情報であり、例えばVIN(Vehicle Identification Number)である。OBD(On-board diagnostics)法規に該当する車両では、OBD法規の規定によりVINを利用可能であるが、例えばEV車両のようにOBD法規に該当しない車両であれば、VINを利用可能でないので、VINに代わる個車識別情報を採用すれば良い。
システム特定情報は、どのようなリプログシステムであるかを特定するためのユニークな情報である。CGW13は、自己が管理するダイアグ通信を利用した有線書換えを可能なシステムに対して無線書換え可能であるが、それ以外の独自方式のシステムに対して無線書換え不能である。即ち、有線を介して取得したプログラム更新の仕組みを利用し、無線を介して取得したプログラム更新を行うシステムだからである。そのため、センター装置3において、何れのシステムに何れの配信パッケージを配信すれば良いかを判定する必要があり、システム特定情報を使うことで車両にどのようなシステムが搭載されているかを管理することが可能である。センター装置3は、システム特定情報を判定することで、システム毎の書換え方式、複数のシステムを書換え対象とする場合の書換え順序等を判定可能となる。
ECU特定情報は、書換え対象ECU19を特定するためのユニークな情報であり、書換えECUと、当該書換え対象ECU19に書込まれているアプリプログラムとを一意に特定するためのソフトウェアバージョンと、ハードウェアバージョンとを含む情報である。ECU特定情報は、ECU品番にも相当する。最新のソフトウェアを全データで書込む場合には、ハードウェアバージョンだけでも良い。又、仕様バージョン、コンフィグレーションバージョン等のアプリプログラムが特定可能な情報を定義することも可能であり、更に、マイコンID、サブマイコンID、フラッシュID、ソフトウェア子バージョン、ソフトウェア孫バージョン等を定義することも可能である。
利用環境情報は、ユーザが車両を利用する環境を特定するためのユニークな情報である。利用環境情報がCGW13からDCM12を介してセンター装置3に送信されることで、センター装置3は、ユーザが車両を利用する環境に適したアプリプログラムを配信することが可能となる。例えば停止時からの急加速運転を好むユーザには、加速に特化したアプリプログラムを配信し、エコ運転を好むユーザには、加速性能では劣るがエコ運転に特化したアプリプログラムを配信する等、ユーザが車両を利用する環境に適したアプリプログラムを配信することが可能となる。
又、以上は、書換え対象ECU19のマイコンにフラッシュメモリが搭載されている場合について説明したが、書換え対象ECU19のマイコンに外付けメモリが接続されている場合は、外付けメモリを2面メモリと同等として処理を行い、外付けメモリの書込み領域を2つに区分して書込みデータを書込む。書換え対象ECU19のマイコンにフラッシュメモリが搭載されており、且つ外付けメモリが接続されている場合は、外付けメモリに格納されているプログラムをマイコンのメモリに一旦複製する(コピーする)処理を行う場合もある。外付けメモリは一般的にECUの動作ログの記憶領域として用いられることもあるので、外付けメモリへの書込みデータの書込みを開始した場合には、動作ログの記憶を中断し、外付けメモリへの書込みデータの書込みを完了した場合に、動作ログの記憶を再開することが望ましい。
アプリプログラムを書換える場合に限らず、例えば地図データ等の逐一更新される性質を有するデータについても、2面及びバージョンという概念があるので、地図データを書換える場合についても同様である。
(9)非書換え対象の電源管理処理
非書換え対象ECU19の電源管理処理について図118から図123を参照して説明する。車両用プログラム書換えシステム1は、CGW13において非書換え対象ECU19の電源管理処理を行う。本実施形態では、DCM12により配信パッケージのダウンロードが完了し、CGW13が書換え諸元データを取得し、車両が駐車状態においてCGW13が書込みデータを書換え対象ECU19に配信する状況とする。CGW13は、書込みデータを書換え対象ECU19に配信する場合に、IG電源オンを電源管理ECU20に要求し、全てのECU19を起動状態とする。
図118に示すように、CGW13は、非書換え対象ECU19の電源管理部81において、書換え対象特定部81aと、インストール可能判定部81bと、状態移行制御部81cと、書換え順序特定部81dとを備える。書換え対象特定部81aは、書換え諸元データの解析結果から書換え対象ECU19及び非書換え対象ECU19を特定する。インストール可能判定部81bは、書換え対象ECU19に対してインストール可能であるか否かを判定する。
状態移行制御部81cは、ECU19の状態を移行可能であり、停止状態又はスリープ状態のECU19を起動状態(ウェイクアップ状態)に移行させたり、起動状態のECU19を停止状態又はスリープ状態に移行させたりする。又、状態移行制御部81cは、通常動作状態のECU19を省電力動作状態に移行させたり、省電力動作状態のECU19を通常動作状態に移行させたりする。状態移行制御部81cは、インストールが可能であるとインストール可能判定部81bにより判定されると、少なくとも一つ以上の非書換え対象ECU19を停止状態、スリープ状態又は省電力動作状態とするように制御する。書換え順序特定部81dは、書換え諸元データの解析結果から書換え対象ECU19の書換え順序を特定する。
次に、CGW13における非書換え対象ECU19の電源管理部81の作用について図119から図123を参照して説明する。CGW13は、非書換え対象の電源管理プログラムを実行し、非書換え対象の電源管理処理を行う。ここでは、CGW13が管理対象とする全てのECU19を起動状態とした場合について説明する。
CGW13は、非書換え対象ECU19の電源管理処理を開始すると、CGW用の書換え諸元データの解析結果により書換え対象ECU19と非書換え対象ECU19を特定し(S901)、書換え諸元データの解析結果により一つ以上の書換え対象ECU19の書換え順序を特定する(S902)。CGW13は、書込みデータの書込みが可能であるか否かを判定し(S903、書込み可能判定手順に相当する)、書込みデータの書込みが可能であると判定すると(S903:YES)、電源オフ要求(停止要求)をACC系の非書換え対象ECU19及びIG系の非書換え対象ECU19に送信し、ACC系の非書換え対象ECU19及びIG系の非書換え対象ECU19を起動状態から停止状態に移行させる(S904、状態移行制御手順に相当する)。
CGW13は、電源オフ要求を該当する全てのECU19に送信完了したか否かを判定し(S905)、電源オフ要求を該当する全てのECU19に送信完了したと判定すると(S905:YES)、スリープ要求を+B電源系の非書換え対象ECU19に送信し、+B電源系の非書換え対象ECU19を起動状態からスリープ状態に移行させる(S906、状態移行制御手順に相当する)。
CGW13は、スリープ要求を該当する全てのECU19に送信完了したか否かを判定し(S907)、スリープ要求を該当する全てのECU19に送信完了したと判定すると(S907:YES)、全ての書換え対象ECU19についてアプリプログラムの書換えを完了したか否かを判定する(S908)。CGW13は、全ての書換え対象ECU19についてアプリプログラムの書換えを完了したと判定すると(S908:YES)、非書換え対象ECU19の電源管理処理を終了する。CGW13は、全ての書換え対象ECU19についてアプリプログラムの書換えを完了していないと判定すると(S908:NO)、ステップS904に戻り、ステップS904以降を繰返す。
CGW13は、書換え対象ECU19が複数の場合に、複数の書換え対象ECU19の状態を個別に移行させても良いし、複数の書換え対象ECU19の状態を纏めて移行させても良い。即ち、図119では、非書換え対象ECU19に対し、CGW13が電源オフ要求又はスリープ要求を送信する処理について示している。次に示す図120及び図121では、非書換え対象ECU19に対する電源管理処理に加え、書換え対象ECU19に対する電源管理処理を行う場合について説明する。
まず、CGW13が複数の書換え対象ECU19の状態を個別に移行させる場合について図120を用いて説明する。図120に示すように、例えば書換え対象ECU19がECU(ID1)、ECU(ID2)、ECU(ID3)であり、書換え順序が早い方から順にECU(ID1)、ECU(ID2)、ECU(ID3)で指定されている書換え対象ECU19を駐車中に書換える場合について説明する。
CGW13は、ECU(ID1)、ECU(ID2)、ECU(ID3)の全てを停止状態又はスリープ状態から起動状態に移行させる。CGW13は、1番目に書き換えるECU(ID1)を起動状態のまま保持し、ECU(ID2)、ECU(ID3)を起動状態から停止状態又はスリープ状態に移行させ、書込みデータをECU(ID1)に配信する。CGW13は、ECU(ID1)への書込みデータの配信を完了すると、ECU(ID1)を起動状態から停止状態又はスリープ状態に移行させ、2番目に書き換えるECU(ID2)を停止状態又はスリープ状態から起動状態に移行させ、ECU(ID3)を停止状態又はスリープ状態のまま保持し、書込みデータをECU(ID2)に配信する。
CGW13は、ECU(ID2)への書込みデータの配信を完了すると、ECU(ID1)を停止状態又はスリープ状態のまま保持し、ECU(ID2)を起動状態から停止状態又はスリープ状態に移行させ、3番目に書き換えるECU(ID3)を停止状態又はスリープ状態から起動状態に移行させ、書込みデータをECU(ID3)に配信する。CGW13は、ECU(ID3)への書込みデータの配信を完了すると、ECU(ID1)、ECU(ID2)を停止状態又はスリープ状態のまま保持し、ECU(ID3)を起動状態から停止状態又はスリープ状態に移行させる。このようにCGW13は、複数の書換え対象ECU19のうち現在書換え中のECU19のみが起動状態となるように制御する。
次に、CGW13が複数の書換え対象ECU19の状態を纏めて移行させる場合について図121を用いて説明する。図121に示すように、例えば書換え対象ECU19がECU(ID1)、ECU(ID2)、ECU(ID3)であり、書換え順序が早い方から順にECU(ID1)、ECU(ID2)、ECU(ID3)で指定されている書換え対象ECU19を駐車中に書換える場合について説明する。
CGW13は、ECU(ID1)、ECU(ID2)、ECU(ID3)の全てを停止状態又はスリープ状態から起動状態に移行させる。CGW13は、ECU(ID1)、ECU(ID2)、ECU(ID3)の全てを起動状態のまま保持し、書込みデータをECU(ID1)に配信する。CGW13は、ECU(ID1)への書込みデータの配信を完了すると、書込みデータをECU(ID2)に配信する。CGW13は、ECU(ID2)への書込みデータの配信を完了すると、書込みデータをECU(ID3)に配信する。CGW13は、ECU(ID3)への書込みデータの配信を完了すると、ECU(ID1)、ECU(ID2)、ECU(ID3)の全てを起動状態から停止状態又はスリープ状態に移行させる。このようにCGW13は、インストールが全て完了するまで、複数の書換え対象ECU19の全てを起動状態となるように制御する。ここで、CGW13は、ECU(ID1)、ECU(ID2)、ECU(ID3)への書込みデータの配信を同時並行で行っても良い。
駐車中に書換え対象ECU19がアプリプログラムを書換える場合には、必ずしも書換え対象ECU19への供給電圧が安定した環境ではないので、アプリプログラムの書換え中に車両バッテリ40がバッテリ上がりとなる事態が懸念される。特に書換え対象ECU19が複数であると、アプリプログラムの書換えに要する時間が長くなるので、アプリプログラムの書換え中に車両バッテリ40がバッテリ上がりとなる可能性が高まる。この点に関し、上記したように非書換え対象ECU19を停止状態又はスリープ状態とすることで、プログラムの書換え中に車両バッテリ40のバッテリ残量が不十分となる事態を未然に回避する。更に、書換え対象ECU19のうち現在書換え中でないECU19を停止状態又はスリープ状態とすることで、より消費電力を抑えることができる。
以上は、駐車中に書換え対象ECU19のアプリプログラムを書換える場合について説明したが、車両走行中に書換え対象ECU19のアプリプログラムを書換える場合について説明する。車両走行中に書換え対象ECU19がアプリプログラムを書換える場合には、書換え対象ECU19への供給電圧が安定した環境にあるので、アプリプログラムの書換え中に車両バッテリ40がバッテリ上がりとなる事態が懸念されることはないが、車両バッテリ40のバッテリ残量が少ない場合もあり得る。このような事情から、車両走行中では、動作不要なECU19を停止状態又はスリープ状態に移行させておくことが望ましい。図122に示すように、車両走行中に動作不要なECU44が+B電源ライン37に接続されているが、ACC電源ライン38及びIG電源ライン39に接続されていない構成である場合には、CGW13は、その車両走行中に動作不要なECU44を起動状態から停止状態又はスリープ状態に移行させる。ECU44は、例えば盗難防止等の機能を有するECUである。即ち、CGW13は、車両走行中では全てのECU19が起動状態にある中、動作不要であり且つ書換え対象でないECU44に対し、停止状態又はスリープ状態に移行させる。これにより、車両走行中のインストールに伴う消費電力の増加を抑えることができる。
又、CGW13は、車両バッテリ40のバッテリ残量を監視し、上記した非書換え対象の電源管理処理を行う。ここで、バッテリ残量の監視処理について図123を用いて説明する。CGW13は、バッテリ残量の監視処理を開始すると、書込みデータを書換え対象ECU19に配信中においてバッテリ残量を監視し(S911)、バッテリ残量が第1所定容量以上であるか、バッテリ残量が第1所定容量未満であり且つ第2所定容量以上であるか、バッテリ残量が第2所定容量未満であるかを判定する(S912~S914)。
CGW13は、バッテリ残量が第1所定容量以上であると判定すると(S912:YES)、非書換え対象ECU19を起動状態のまま保持し、書込みデータの書換え対象ECU19への配信を継続する(S915)。CGW13は、バッテリ残量が第1所定容量未満であり且つ第2所定容量以上であると判定すると(S913:YES)、非書換え対象ECU19のうち走行中に動作不要なECUを停止状態又はスリープ状態に移行させ、書込みデータの書換え対象ECU19への配信を継続する(S916)。CGW13は、バッテリ残量が第2所定容量未満であると判定すると(S914:YES)、書換えを中断可能であるか否かを判定する(S917)。
CGW13は、書換えを中断可能であると判定すると(S917:YES)、書込みデータの配信を中断する(S918)。CGW13は、書換えを中断可能でないと判定すると(S917:NO)、非書換え対象ECU19のうち停止状態又はスリープ状態に移行可能な全てのECUを停止状態又はスリープ状態に移行させる(S919)。
CGW13は、書換えを完了したか否かを判定し(S920)、書換えを完了していないと判定すると(S920:NO)、ステップS911に戻り、ステップS911以降を繰返す。CGW13は、書換えを完了したと判定すると(S920:YES)、停止状態又はスリープ状態の書換え対象ECU19を起動状態に移行させ(S921)、バッテリ残量の監視処理を終了する。ここで、第1所定容量及び第2所定容量の値は、CGW13が予め保有していても良いし、書換え諸元データにより指定された値を用いても良い。
又、CGW13は、ステップS919において、例えばアラーム機能等の特定の機能を有するECU19については停止状態又はスリープ状態に移行させる対象から除外し、特定の機能を有するECU19を除く非書換え対象ECU19を起動状態から停止状態又はスリープ状態に移行させても良い。CGW13は、書換え対象ECU19がアプリプログラムの書換え中にアプリ制御を実行可能である場合には、その書換え対象ECU19と通信可能なECU19を除く非書換え対象ECU19を停止状態又はスリープ状態としても良い。CGW13は、全てのECU19が停止状態又はスリープ状態にあるときに、例えば車両位置が所定位置になったり現在時刻が所定時刻になったりする等して書換え条件が成立すると、書換え対象ECU19を停止状態又はスリープ状態から起動状態に移行させても良い。
CGW13は、書換え対象ECU19又は非書換え対象ECU19を、起動電源(+B電源系ECU、ACC系ECU、IG系ECU)、ドメイングループ(ボディ系、走行系、マルチメディア系)、同期タイミングの何れかを基準としてグループ化し、書換え対象ECU19をグループ単位で起動状態としたり、非書換え対象ECU19をグループ単位で停止状態又はスリープ状態としたりしても良い。
又、CGW13は、バス単位で電源制御する構成でも良い。即ち、CGW13は、特定のバスに接続されている全てのECU19が非書換え対象ECU19であると判定すると、その特定のバスの電源をオフすることで、その特定のバスに接続されている全ての非書換え対象ECU19を停止状態又はスリープ状態に移行させても良い。
以上に説明したように、CGW13は、非書換え対象の電源管理処理を行うことで、書換え対象ECU19に対してインストール可能であると判定すると、少なくとも一つ以上の非書換え対象ECU19を停止状態、スリープ状態又は省電力動作状態とするようにした。アプリプログラムの書換え中に車両バッテリ40のバッテリ残量が不十分となる事態を未然に回避することができる。又、非書換え対象ECU19が停止状態、スリープ状態又は省電力動作状態となることで、通信負荷の増大を抑えることができる。
(10)ファイルの転送制御処理
ファイルの転送制御処理について図124から図133を参照して説明する。車両用プログラム書換えシステム1は、CGW13においてファイルの転送制御処理を行う。本実施形態は、DCM12(第1装置が相当する)が保持している書換えデータを、CGW13(第2装置が相当する)を介して書換え対象ECU19(第3装置が相当する)に送信する際の処理である。
図124に示すように、CGW13は、ファイルの転送制御部82において、転送対象ファイル特定部82aと、第1データサイズ特定部82bと、取得情報特定部82cと、第2データサイズ特定部82dと、分割ファイル転送要求部82eとを有する。転送対象ファイル特定部82aは、書換え諸元データの解析結果を用いて書換え対象ECU19に書込まれる書込みデータを含むファイルを転送対象ファイルとして特定する。転送対象ファイル特定部82aは、例えば書換え対象ECU19がECU(ID1)、ECU(ID2)及びECU(ID3)の場合、図44に示すCGW用の書換え諸元データからECU(ID1)、ECU(ID2)及びECU(ID3)のECU情報を取得し、その取得したECU情報から書込みデータを含むファイルを転送対象ファイルとして特定する。転送対象ファイルとして、そのファイルを取得する際のアドレスやインデックスを特定しても良いし、そのファイルのファイル名を特定しても良い。
第1データサイズ特定部82bは、転送対象ファイルが転送対象ファイル特定部82aにより特定されると、その転送対象ファイルを取得するための第1データサイズを特定する。取得情報特定部82cは、転送対象ファイルが転送対象ファイル特定部82aにより特定されると、その転送対象ファイルを取得するための取得情報としてアドレスを特定する。尚、本実施形態では、転送対象ファイルを取得するための取得情報としてアドレスを特定するが、転送対象ファイルを取得するための取得情報であれば、アドレスに限らず、ファイル名称やECU(ID)等であっても良い。第2データサイズ特定部82dは、書込みデータを書換え対象ECU19に配信するための第2データサイズを特定する。即ち、第1データサイズは、DCM12からCGW13へのデータ転送サイズであり、第2データサイズは、CGW13から書換え対象ECU19へのデータ転送サイズである。
分割ファイル転送要求部82eは、アドレスが取得情報特定部82cにより特定され、第1データサイズが第1データサイズ特定部82bにより特定されると、そのアドレス及び第1データサイズをDCM12に指定し、分割ファイルの転送をDCM12に要求する。分割ファイル転送要求部82eは、例えばECU(ID1)に配信すべき書込みファイルのデータ量が1Mバイトの場合、書込みデータをアドレス0x10000000から1kバイト毎に転送するように要求する。
次に、CGW13におけるファイルの転送制御部82の作用について図125から図133を参照して説明する。CGW13は、ファイルの転送制御プログラムを実行し、ファイルの転送制御処理を行う。
CGW13は、DCM12からアンパッケージング完了通知信号を受信したと判定すると、ファイルの転送制御処理を開始する。アンパッケージングとは、図46に示すように、配信パッケージファイルをECU毎のデータ及び各書換え諸元データに分ける処理である。CGW13は、ファイルの転送制御処理を開始すると、所定のアドレスをDCM12に送信する(S1001)。DCM12は、CGW13から所定のアドレスを受信すると、その所定のアドレスの受信を契機としてCGW用の書換え諸元データをCGW13に転送する。CGW13は、DCM12からCGW用の書換え諸元データが転送されることで、CGW用の書換え諸元データを取得する(S1002)。
CGW13は、DCM12からCGW用の書換え諸元データを取得すると、その取得したCGW用の書換え諸元データを解析し(S1003)、書換え諸元データの解析結果から転送対象ファイルを特定する(S1004、転送対象ファイル特定手順に相当する)。CGW13は、その転送対象ファイルに対応するアドレスを特定し(S1005、取得情報特定手順に相当する)、その転送対象ファイルに対応する第1データサイズを特定する(S1006、第1データサイズ特定手順に相当する)。CGW13は、その特定したアドレスとデータサイズをSID(Service Identifier)35の規定にしたがってDCM12に送信し、そのアドレスとデータサイズをメモリ領域に指定し、分割ファイルの転送をDCM12に要求する(S1007)。
DCM12は、CGW13からアドレスとデータサイズを受信すると、DCM用の書換え諸元データを解析し、そのアドレスとデータサイズに対応するファイルを分割ファイルとしてCGW13に転送する。CGW13は、DCM12から分割ファイルが転送されることで分割ファイルを取得する(S1008)。この場合、CGW13は、その取得したファイルをRAMに記憶した後、フラッシュメモリに記憶してもよい。
CGW13は、取得すべき全ての分割ファイルの取得を完了したか否かを判定する(S1009)。CGW13は、例えばECU(ID1)に配信すべき書込みファイルのデータ量が1Mバイトの場合、1kバイト毎の分割ファイルを取得し、1kバイト毎の分割ファイルの取得を繰返して1Mバイトのデータ量を取得完了したか否かを判定する。CGW13は、取得すべき全ての分割ファイルの取得を完了していないと判定すると(S1009:NO)、ステップS1004に戻り、ステップS1004以降を繰返す。CGW13は、取得すべき全てのファイルの取得を完了したと判定すると(S1009:YES)、ファイルの転送制御処理を終了する。尚、CGW13は、書換え対象ECU19が複数の場合には、上記したファイルの転送制御処理を各書換え対象ECU19に対して繰返す。
即ち、CGW13は、例えば書換え対象ECU19がECU(ID1)、ECU(ID2)及びECU(ID3)の場合には、ECU(ID1)への書込みデータの配信が完了すると、ECU(ID2)に対してファイルの転送制御処理を行い、ECU(ID2)への書込みデータの配信が完了すると、ECU(ID3)に対してファイルの転送制御処理を行う。尚、CGW13は、複数の書換え対象ECU19に対する転送制御処理を順次行っても良いし、並列して行っても良い。
図126では、DCM12のメモリ内に、例えばECU(ID1)の書込みデータファイルがアドレス「1000」~「3999」に記憶されており、ECU(ID2)の書込みデータファイルがアドレス「4000」~「6999」に記憶されており、ECU(ID3)の書込みデータファイルがアドレス「7000」~に記憶されている場合を示している。
この場合、CGW13は、図127に示すように、DCM12からアンパッケージング完了通知信号を受信すると、アドレス「0000」をDCM12に送信し、DCM12から書換え諸元データを取得する。即ち、DCM12は、アドレス「0000」の受信をCGW用の書換えデータの取得要求であると判定し、CGW用の書換え諸元データをCGW13に送信する。CGW13は、書込みデータの転送対象としてECU(ID1)を指定し、アドレス「1000」とデータサイズ「1kバイト」を指定し、アドレス「1000」~「1999」に記憶されているECU(ID1)の書込みデータを含む分割ファイルをDCM12から取得する。CGW13は、DCM12から分割ファイルを取得すると、その分割ファイルに含まれる書込みデータをECU(ID1)に配信する。
CGW13は、続いて書込みデータの転送対象として同じくECU(ID1)を指定し、アドレス「2000」とデータサイズ「1kバイト」を指定し、アドレス「2000」~「2999」に記憶されているECU(ID1)の書込みデータを含む分割ファイルをDCM12から取得する。CGW13は、DCM12から分割ファイルを取得すると、その分割ファイルに含まれる書込みデータをECU(ID1)に配信する。CGW13は、書込みデータのECU(ID1)への書込みが全て完了するまで、DCM12からの1kバイト毎に分割ファイルの取得を繰返し、その分割ファイルに含まれる書込みデータのECU(ID1)への配信を繰返す。即ち、CGW13は、DCM12から1kバイトの書込みデータを取得すると、その1kバイトの書込みデータを書換え対象ECU19に送信し、書換え対象ECU19への送信が完了すると、次の1kバイトの書込みデータをDCM12から取得する。これらの処理を書込みが全て完了するまでCGW13が繰返す。
CGW13は、ECU(ID1)において書込みデータの書込みが正常に完了すると、書込みデータの転送対象としてECU(ID2)を指定し、アドレス「4000」とデータサイズ「1kバイト」を指定し、アドレス「4000」~「4999」に記憶されているECU(ID2)の書込みデータを含む分割ファイルをDCM12から取得する。CGW13は、DCM12から分割ファイルを取得すると、その分割ファイルに含まれる書込みデータをECU(ID2)に配信する。
CGW13は、ECU(ID2)において書込みデータの書込みが正常に完了すると、書込みデータの転送対象としてECU(ID3)を指定し、アドレス「7000」とデータサイズ「1kバイト」を指定し、アドレス「7000」~「7999」に記憶されているECU(ID2)の書込みデータを含む分割ファイルをDCM12から取得する。CGW13は、DCM12から分割ファイルを取得すると、その分割ファイルに含まれる書込みデータをECU(ID2)に配信する。
以上に説明したように、CGW13は、ファイルの転送制御処理を行うことで、書換え諸元データの解析結果から転送対象ファイルを特定し、その転送対象ファイルに対応するアドレスとデータサイズを特定する。CGW13は、そのアドレスとデータサイズをDCM12に指定し、転送対象ファイルを分割した分割ファイルの転送をDCM12に対して要求し、DCM12から分割ファイルを取得する。これにより、容量の大きい書込みデータをDCM12のメモリで保持したまま、ECU19への書込みデータの配信を行うことができる。即ち、CGW13では容量の大きいファイルを記憶するためのメモリを用意する必要がなくなり、CGW13のメモリ容量を削減することができる。
ここで、DCM12からCGW13に転送される分割ファイルのデータ量と、CGW13から書換え対象ECU19に配信される書込みファイルのデータ量との関係について説明する。上記した例示では、図128に示すように、DCM12からCGW13に転送される分割ファイルのデータ量が1kバイトである場合を説明したが、DCM12からCGW13に転送される分割ファイルのデータ量と、CGW13から書換え対象ECU19に配信される書込みファイルのデータ量との関係は、どのようであっても良い。
即ち、CGW13は、例えばCAN通信上の理由により書換え対象ECU19が書込みデータを4kバイトで受信する仕様であれば、書込みファイルのデータ量を4kバイト単位で書換え対象ECU19に配信する。この場合、DCM12からCGW13に転送される分割ファイルのデータ量が1kバイトであれば、CGW13は、分割ファイル4つ分をDCM12から取得した後、書換え対象ECU19への4kバイトの配信を行う。即ち、DCM12からCGW13に転送される分割ファイルのデータ量は、CGW13から書換え対象ECU19に配信される書込みファイルのデータ量よりも小さくなる。このような関係では、CGW13において、メモリ容量の増大を抑えつつ、DCM12からの分割ファイルの取得と、書込みデータの書換え対象ECU19への配信とを並列して行うことができる。
即ち、DCM12からCGW13に転送される分割ファイルのデータ量が4kバイトとすると、DCM12からの分割ファイルの取得と、書込みデータの書換え対象ECU19への配信とを並列して行うには、CGW13のメモリ容量を8kバイトにする必要がある。DCM12からCGW13に転送される分割ファイルのデータ量が1kバイトとすることで、CGW13のメモリ容量を8kバイトにすることなく、DCM12からの分割ファイルの取得と、書込みデータの書換え対象ECU19への配信とを並列して行うことができる。例えばCGW13のメモリ容量を5kバイト確保しておき、CGW13は、DCM12から取得し終わった4kバイトを書換え対象ECU19に配信すると共に、DCM12から次の1kバイトの取得を行う。そして、CGW13は、書換え対象ECU19への4kバイトの配信が完了した後、DCM12から更に次の1kバイトの取得を行う。
一方、CGW13は、例えばCAN通信上の理由により書換え対象ECU19が書込みデータを128バイトで受信する仕様であれば、書込みデータを128バイトで書換え対象ECU19に配信する。この場合、DCM12からCGW13に転送される分割ファイルのデータ量が1kバイトであれば、CGW13は、分割ファイル1つ分をDCM12から取得した後、書換え対象ECU19への128バイトずつの配信を行う。即ち、DCM12からCGW13に転送される分割ファイルのデータ量は、CGW13から書換え対象ECU19に配信される書込みファイルのデータ量よりも大きくなる。例えばCGW13のメモリ容量を2kバイト確保しておき、CGW13は、DCM12から取得し終わった1kバイトを、128バイト単位で書換え対象ECU19に配信すると共に、DCM12から次の1kバイトの取得を行う。そして、CGW13は、書換え対象ECU19への128バイト×8回の配信が完了した後、DCM12から更に次の1kバイトの取得を行う。
このようにDCM12からCGW13に転送される分割ファイルのデータ量を固定値(例えば1kバイト)とし、CGW13から書換え対象ECU19に配信される書込みファイルのデータ量を書換え対象ECU19の仕様に応じて可変値とすれば良い。CGW13は、例えば書換え諸元データに指定される各ECUのデータ転送サイズを用いて、書換え対象ECU19に配信するデータ量を決定しても良い。
CGW13は、転送要求をDCM12に送信し、分割ファイルの転送をDCM12に要求するが、分割ファイルの転送をDCM12に要求する態様として第1要求態様と第2要求態様がある。書換え対象ECU19は、書込みデータの受信を完了すると、書込みデータの受信を完了したことを示す受信完了通知をCGW13に送信し、書込みデータの書込みを完了すると、書込みデータの書込みを完了したことを示す書込み完了通知をCGW13に送信する。
第1配信態様について図129を用いて説明する。CGW13は、DCM12から分割ファイルを取得すると、その取得した分割ファイルを書込みデータとして書換え対象ECU19に配信する。書換え対象ECU19は、書込みデータの受信を完了すると、受信完了通知をCGW13に送信し、書込みデータの書込み処理を開始する。CGW13は、書換え対象ECU19から書込みデータの受信完了通知を受信すると、転送要求をDCM12に送信し、次の分割ファイルの転送をDCM12に要求する。CGW13は、DCM12から次の分割ファイルを取得すると、その取得した次の分割ファイルを書込みデータとして書換え対象ECU19に配信する。
このようにCGW13は、第1配信態様では、書換え対象ECU19における書込みデータの書込み完了を待つことなく、次の書込みデータをDCM12から取得し、書換え対象ECU19に配信する。そのため、第1配信態様では、CGW13において、書換え対象ECU19が書込みデータの書込みを完了していないと、次の分割ファイルをDCM12から取得して次の書込みデータを書換え対象ECU19に配信しても、次の書込みデータを書換え対象ECU19が受信不能となる虞がある。しかしながら、書換え対象ECU19が書込みデータの書込みを完了していれば、次の分割ファイルをDCM12から速やかに取得して次の書込みデータを書換え対象ECU19に速やかに配信することができる。
第2配信態様について図130を用いて説明する。CGW13は、DCM12から分割ファイルを取得すると、その取得した分割ファイルを書込みデータとして書換え対象ECU19に配信する。書換え対象ECU19は、書込みデータの受信を完了すると、受信完了通知をCGW13に送信し、書込みデータの書込み処理を開始する。書換え対象ECU19は、書込みを完了すると、書込み完了通知をCGW13に送信する。CGW13は、書換え対象ECU19から書込み完了通知を受信すると、転送要求をDCM12に送信し、次の分割ファイルの転送をDCM12に要求する。CGW13は、DCM12から次の分割ファイルを取得すると、その取得した次の分割ファイルを書込みデータとして書換え対象ECU19に配信する。
このようにCGW13は、第2配信態様では、書換え対象ECU19における書込みデータの書込み完了を待ってから、次の書込みデータをDCM12から取得し、書換え対象ECU19に配信する。そのため、第2配信態様では、CGW13において、次の分割ファイルをDCM12から取得するまでに時間を要するが、書換え対象ECU19が書込みデータの書込みを完了した状態で分割ファイルの転送をDCM12に要求することができる。よって、次の分割ファイルをDCM12から取得して次の書込みデータを書換え対象ECU19に配信すると、次の書込みデータを書換え対象ECU19に確実に配信することできる。
又、CGW13は、書込みデータをSID34、36、37により書換え対象ECU19に配信するが、書込みデータを書換え対象ECU19に配信する態様として第1配信態様と第2配信態様がある。第1配信態様では、CGW13は、図131に示すように、配信すべき書込みデータを所定のデータ量(例えば1kバイト)で分割して配信する。第2配信態様では、CGW13は、図132に示すように、配信すべき書込みデータを分割せずに纏めて配信する。CGW13は、書換え対象ECU19に最初に配信するSID34により、第1配信態様又は第2配信態様の何れかを選択する。CGW13は、図133に示すように、書換え対象ECU19に最後に配信するSID37に対するACK(SID74)を受信することにより、書換え対象ECU19における書込みデータの受信を特定する。このSID37に対するACKが、図129及び図130にて前述した書込みデータの受信完了通知に相当する。即ち、第1配信態様では、CGW13は、書換え対象ECU19に最後に配信するSID37に対するACKを受信すると、次の書込みデータのアドレスをインクリメントすることで、次の書込みデータを書換え対象ECU19に配信すると同時に、更に次の書込みデータをDCM12から取得する。
又、DCM用の書換え諸元データではアドレスとファイルとが対応付けられているが、アドレスとファイルとが対応付けられる方法として、例えばフォルダ構成を工夫し、フォルダ1に諸元データを格納し、フォルダ2にファイル1を格納し、フォルダ3にファイル2を格納して管理しても良いし、ファイル名の順序で管理しても良い。例えば図46に示すアンパッケージングにおいて、フォルダ1にDCM用の書換え諸元データ及びCGW用の書換え諸元データを格納し、フォルダ2にECU(ID1)の認証子及び差分データを格納し、フォルダ3にECU(ID2)の認証子及び差分データを格納して管理する。
又、CGW13は、例えば通信途絶等の何らかの理由により書込みデータの書換え対象ECU19への配信を中断した場合には、書込みデータの書込みを完了したアドレスを特定可能な情報を書換え対象ECU19から取得し、その書込みを完了していない時点からの書込みデータを含む分割ファイルの転送をDCM12に要求する。又は、CGW13は、先頭からの書込みデータを含む分割ファイルの転送をDCM12に要求しても良い。
以上に説明したように、CGW13は、ファイルの転送制御処理を行うことで、書換え対象ECU19に書込まれる書込みデータを含むファイルを転送対象ファイルとして特定し、転送対象ファイルを取得するためのアドレス及び第1データサイズを特定し、分割ファイルの転送をDCM12に要求し、DCM12から分割ファイルが転送されると、書込みデータを書換え対ECUに配信する。DCM12からCGW13への書込みデータの転送と、CGW13から書換え対象ECU19への書込みデータの配信を効率的に行うことができる。
(11)書込みデータの配信制御処理
書込みデータの配信制御処理について図134から図144を参照して説明する。車両用プログラム書換えシステム1は、CGW13において書込みデータの配信制御処理を行う。CGW13は、書込みデータを車両内のバスを介してECU19に送信するので、書込みデータを配信中のバス負荷が必要以上に高くならないように書込みデータの配信制御処理を行う。
図134に示すように、+B電源系ECU、ACC系ECU、IG系ECUが同一バスに接続されている場合を想定する。この場合、+B電源状態では、+B電源系ECUのみが起動しており、ACC系ECUとIG系ECUが停止しているので、そのバスには+B電源系ECUのみの車両制御データが伝送される。ACC電源状態であるときには、+B電源系ECUとACC系ECUが起動しており、IG系ECUが停止しているので、そのバスには+B電源系ECUとACC系ECUの車両制御データが伝送される。IG電源状態であるときには、+B電源系ECUとACC系ECUとIG系ECUが起動しているので、そのバスには+B電源系ECUとACC系ECUとIG系ECUの車両制御データが伝送される。即ち、車両制御データの伝送量は、多い順にIG電源状態、ACC電源状態、+B電源状態となる。
図135に示すように、CGW13は、書込みデータの配信制御部83において、第1対応関係特定部83aと、第2対応関係特定部83bと、伝送許容量特定部83cと、配信頻度特定部83dと、バス負荷計測部83eと、配信制御部83fとを有する。
第1対応関係特定部83aは、書換え諸元データの解析結果から電源状態とバスの伝送許容量との関係を示す第1対応関係を特定し、図136に示すバス負荷テーブルを特定する。伝送許容量とは、データの衝突や遅延が発生しない状況下でデータを送受信可能な伝送負荷の値である。バス負荷テーブルは、電源状態とバスの伝送許容量との対応関係を示すテーブルであり、バス毎に規定される。伝送許容量は、最大伝送許容量に対して伝送可能な車両制御データと書込みデータとの伝送量の合計である。
図136の例示では、第1バスについて、伝送許容量が最大伝送許容量に対して「80%」であるので、CGW13は、IG電源状態では、車両制御データの伝送許容量として最大伝送許容量に対して「50%」を許容し、書込みデータの伝送許容量として最大伝送許容量に対して「30%」を許容する。又、第1バスについて、CGW13は、ACC電源状態では、車両制御データの伝送許容量として最大伝送許容量に対して「30%」を許容し、書込みデータの伝送許容量として最大伝送許容量に対して「50%」を許容する。又、第1バスについて、CGW13は、+B電源状態では、車両制御データの伝送許容量として最大伝送許容量に対して「20%」を許容し、書込みデータの伝送許容量として最大伝送許容量に対して「60%」を許容する。図136に示すように、第2バス及び第3バスについても同様に規定される。
第2対応関係特定部83bは、書換え諸元データの解析結果から書換え対象ECU19が所属するバスと電源系との関係を示す第2対応関係を特定し、図137に示す書換え対象ECU所属テーブルを特定する。書換え対象ECU所属テーブルは、書換え対象ECU19が所属するバスと電源系とを示すテーブルである。
図137の例示では、CGW13は、第1書換え対象ECU19については、第1バスに接続されており、+B電源状態、ACC電源状態、IG電源状態の何れでも起動するので、+B電源系ECUであると特定する。又、CGW13は、第2書換え対象ECU19については、第2バスに接続されており、+B電源状態では停止するが、ACC電源状態、IG電源状態で起動するので、ACC系ECUであると特定する。又、CGW13は、第3書換え対象ECU19については、第3バスに接続されており、+B電源状態、ACC電源状態では停止するが、IG電源状態で起動するので、第3書換え対象ECU19をIG系ECUであると特定する。
CGW13は、図44に示す書換え諸元データのうち、「接続バス」及び「接続電源」のデータを用いて、書換え対象ECU19が何れのバスに接続されており、何れの電源系であるかを特定する。尚、これらの情報が特定可能であれば、必ずしもテーブルの形で保有する必要はない。
伝送許容量特定部83cは、第1対応関係の特定結果及び第2対応関係の特定結果にしたがって書換え対象ECU19が属するバスの伝送許容量であって、プログラムの更新を行う際の車両の電源状態に対応する伝送許容量を特定する。具体的に説明すると、伝送許容量特定部83cは、第2対応関係である書換え対象ECU所属テーブルを用いて、書換え対象ECU19が属するバスを特定し、第1対応関係であるバス負荷テーブルを用いて、その特定したバスについて電源状態毎の伝送許容量を特定する。
配信頻度特定部83dは、予め定められている電源状態と書込みデータの配信頻度との対応関係を用い、インストールする際の電源状態に対応する書込みデータの配信頻度を特定する。具体的に説明すると、配信頻度特定部83dは、バス負荷テーブルを用いて、伝送許容量特定部83cにより特定された伝送許容量のうち書込みデータを配信するために割当てられている伝送許容量を特定し、書込みデータの配信頻度を特定する。配信頻度特定部83dは、例えば書換え対象ECU19が属するバスが第1バスであると特定し、インストールする際の電源状態がIG電源状態であると特定すると、伝送許容量を「80%」と特定し、そのうち書込みデータを配信するために割当てられている伝送許容量を「30%」と特定することで、書込みデータの配信頻度を特定する。書込みデータを配信するために割当てられている伝送許容量が、伝送制約情報に相当する。
バス負荷計測部83eは、書換え対象ECU19が属するバスのバス負荷を計測する。バス負荷計測部83eは、例えば単位時間で受信したフレーム数又はビット数をカウントすることでバス負荷を計測する。配信制御部83fは、配信頻度特定部83dにより特定された配信頻度にしたがって書込みデータの配信を制御する。
次に、CGW13における書込みデータの配信制御部83の作用について図138から図144を参照して説明する。CGW13は、書込みデータの配信制御プログラムを実行し、書込みデータの配信制御処理を行う。
CGW13は、DCM12からアンパッケージング完了通知信号を受信すると、書込みデータの配信制御処理を開始する。CGW13は、DCM12からCGW用の書換え諸元データを取得し(S1101)、そのCGW用の書換え諸元データからバス負荷テーブル及び書換え対象ECU所属テーブルを特定する(S1102)。CGW13は、書換え対象ECU19が所属するバスを書換え対象ECU所属テーブルから特定する(S1103)。CGW13は、その書換え対象ECU19が所属するバスであって、更新を行う際の車両の電源状態に対応する伝送許容量をバス負荷テーブルから特定する。そして、CGW13は、特定した伝送許容量を考慮し、書込みデータの配信頻度を特定する(S1104、配信頻度特定手順に相当する)。CGW13は、例えば第1書換え対象ECU19であるECU(ID1)に対し、車両走行中に書込みデータを配信する場合、IG電源状態における第1バスの伝送許容量を参照する。図136の例示では、IG電源状態における第1バスの伝送許容量は「80%」であり、そのうち車両制御データで「50%」の伝送が許容され、書込みデータで「30%」の伝送が許容される。尚、伝送許容量は、あくまでも事例を示すための値であり、数値については、適用する通信の仕様にしたがった許容範囲内に設定される。
CANの500[kbps]上での仕様では1フレーム250[μs]程度であるので、1秒間に割込みが4回発生すると、4個のフレームが発生し、バス負荷が100%になる。CGW13は、バスで発生する割込みを判定することで、書込みデータの配信頻度を特定する。CGW13は、単位時間で受信したフレーム数の計測を開始し、バス負荷の計測を開始し(S1105)、その計測したバス負荷が伝送許容量を超えているか否かを判定し(S1106)、配信間隔を設定する。配信間隔とは、CGW13において、書込みデータを書換え対象ECU19に配信し、書換え対象ECU19から書込み完了通知(ACK)を受信し、次の書込みデータを書換え対象ECU19に送信するまでの時間間隔である。
CGW13は、その計測したバス負荷が伝送許容量を超えていないと判定すると(S1106:NO)、書込みデータの配信間隔を予め設定されている最短間隔に設定し、図139に示すように、書込みデータの書換え対象ECU19への配信を開始する(S1107、配信制御手順に相当する)。即ち、CGW13は、CAN上の1フレームの配信間隔を予め設定されている最短間隔に設定し、書込みデータの書換え対象ECU19への配信を開始する。尚、CAN上の1フレームは、データ量が8バイトの書込みデータを含む。尚、CAN FD(CAN with Flexible Data-Rate)上の1フレームは、データ量が64バイトの書込みデータを含む。
一方、CGW13は、その計測したバス負荷が伝送許容量を超えていると判定すると(S1106:YES)、バス負荷が伝送許容量を超えない間隔を計算し(S1108)、書込みデータの配信間隔を当該計算した間隔に設定し、図140に示すように、書込みデータの書換え対象ECU19への配信を開始する(S1109、配信制御手順に相当する)。
CGW13は、例えばIG電源状態では第1バスに対してバス負荷が伝送許容量である「80%」を超えているか否かを判定し、バス負荷が伝送許容量を超えていないと判定すると、書込みデータの伝送許容量が「30%」となる配信間隔T1に設定する。即ち、図136のバス負荷テーブルに示すように、CGW13は、IG電源状態で第1バスにおける書込みデータの伝送許容量である「30%」を用いて、配信間隔T1を設定する。CGW13は、許容される最大伝送量となるように配信間隔T1を設定する。又、CGW13は、計測対象を書込みデータのフレームに絞ってバス負荷を計測し、書込みデータに依るバス負荷が書込みデータの伝送許容量「30%」を超えているか否かを判定しても良い。CGW13は、バス負荷が伝送許容量を超えていると判定すると、そのバス負荷が伝送許容量を超えている量に応じて、バス負荷が伝送許容量を超えない配信間隔T2(>T1)に変更する。このように、CGW13は、DCM12から書込みデータを取得した後に、設定した配信間隔に達するまで待機して書込みデータを書換え対象ECU19に配信する。
CGW13は、書込みデータの書換え対象ECU19への配信を開始すると、書込みデータの書換え対象ECU19への配信を完了したか否かを判定すると共に、その計測したバス負荷が伝送許容量を超えているか否かを継続して判定する(S1110,S1011)。CGW13は、その計測したバス負荷が伝送許容量を超えていないと判定すると(S1111:NO)、書込みデータの配信間隔を予め設定されている最短間隔に設定し、書込みデータの書換え対象ECU19への配信間隔を変更する(S1112)。一方、CGW13は、その計測したバス負荷が伝送許容量を超えていると判定すると(S1111:YES)、バス負荷が伝送許容量を超えない間隔を計算し(S1113)、書込みデータの配信間隔を当該計算した間隔に設定し、書込みデータの書換え対象ECU19への配信間隔を変更する(S1114)。
CGW13は、書込みデータの書換え対象ECU19への配信を完了したと判定すると(S1110:YES)、単位時間で受信したフレーム数の計測を停止し、バス負荷の計測を停止し(S1115)、書込みデータの配信制御処理を終了する。ここで、CGW13は、書換え対象ECU19が複数ある場合、全ての書換え対象ECU19へのインストールに対して、書込みデータの配信制御処理を行う。
以上に説明したように、CGW13は、書込みデータの配信制御処理を行うことで、予め定められている電源状態と書込みデータの配信頻度との対応関係を用い、書換え対象ECU19への書込みデータの配信頻度を特定し、その配信頻度にしたがって書込みデータの配信を制御する。インストールを行う際の、データの衝突や遅延等を抑制することができる。又、同一バスにおける車両制御データの配信を妨げることなく、書込みデータの配信を共存させることができる。
尚、以上は、CGW13において、書換え諸元データの解析結果からバス負荷テーブルを特定する構成を例示したが、バス負荷テーブルを予め保持する構成でも良い。又、CGW13において、書換え諸元データの解析結果から書換え対象ECU所属テーブルを特定する構成を例示したが、書換え対象ECU所属テーブルを予め保持する構成でも良い。
車両が走行中の電源状態では書込みデータの配信量を相対的に少なくし、駐車中の電源状態では書込みデータの配信量を相対的に多くしても良い。即ち、CGW13は、図141に示すように、車両が走行中のIG電源がオンでは、IG系ECU、ACC系ECU、+B電源系ECUがCANフレームを送信することにより、車両制御や診断等のアプリデータの伝送量が相対的に多くなるので、書込みデータの配信量を相対的に少なくする。又、CGW13は、図142に示すように、駐車中のIG電源がオフでは、+B電源系ECUのみがCANフレームを送信することにより、車両制御や診断等のアプリデータの伝送量が相対的に少なくなるので、書込みデータの配信量を相対的に多くする。即ち、CGW13は、車両制御や診断等のアプリデータの伝送を妨げない空き容量内で書込みデータの配信量を調整する。
又、図143に示すように、CGW13において、書換え対象ECU19からイベントフレームが送信されている場合は、イベントフレームを受信することで割込みの頻度が高くなり、バス負荷が高くなるので、書込みデータの配信量を相対的に少なくし、書換え対象ECU19からイベントフレームが送信されなくなった場合に、書込みデータの配信量を相対的に多くしても良い。
又、図144に示すように、車両システムにおいて、CGW13が書込みデータの配信中であることを特定した場合に、車両制御や診断等のアプリデータの送信間隔を、許容される最大間隔まで長くすることでバス負荷を低下させても良い。CGW13において、車両システムがアプリデータの送信間隔を長くしたことでバス負荷が低下されたことで、書込みデータの配信量を相対的に多くしても良い。
書換え諸元データに組込まれるバス負荷テーブルは、例えば車両メーカが車種やグレード等に拘らず一律的に共通に設定される。例えば車種やグレード等によりECUの装備が大きく異なると、バス負荷が大きく異なり、車種やグレード等により個別に最適なバス負荷テーブルを設定してしまうと、その検証に工数を要する等の煩雑な手間を要してしまうので、そのような煩雑な手間を回避するためである。
上述したように車両が走行中にインストールを行う場合と同様に、車両が駐車中にインストールを行う場合についても、書込みデータの配信制御処理を行う。その場合、書換え対象ECU19が+B電源系ECUであれば、+B電源状態で更新を行うことも可能であるので、バス負荷テーブルにおける+B電源状態の伝送許容量を参照する。一方、書換え対象ECU19がIG系ECUの場合には、IG電源状態でインストールを行うので、バス負荷テーブルにおけるIG電源状態の伝送許容量を参照する。ここで、例えば書換え対象ECU19がACC系ECUの場合に、IG電源状態でインストールを行うことも可能である。この場合、バス負荷テーブルにおけるIG電源状態の伝送許容量を参照する。尚、バス負荷テーブルと書換え対象ECU所属テーブルを保持する構成を説明したが、電源状態毎の書込みデータの配信頻度を特定可能であれば、どのようなテーブルを保持する態様でも良い。
(12)アクティベート要求の指示処理
アクティベート要求の指示処理について図145から図146を参照して説明する。車両用プログラム書換えシステム1は、CGW13においてアクティベート要求の指示処理を行う。CGW13は、アプリプログラムの書換えを完了した複数の書換え対象ECU19に対し、その書換えたプログラムを有効にするためにアクティベート要求を行う。本実施形態において、CGW13は、CGW用の書換え諸元データを解析することにより、書換え対象ECU19のグループを把握している状態とする。尚、CGW13は、駐車中においてのみアクティベート要求を行い、車両走行中ではアクティベート要求を行わない。
図145に示すように、CGW13は、アクティベート要求の指示部84において、書換え対象特定部84aと、書換え完了判定部84bと、アクティベート実行可能判定部84cと、アクティベート要求指示部84dとを有する。書換え対象特定部84aは、連携制御する複数の書換え対象ECU19を対象とし、複数の書換え対象ECU19を特定する。書換え完了判定部84bは、複数の書換え対象ECU19が書換え対象特定部84aにより特定されると、その特定された複数の書換え対象ECU19の全てにおいてプログラムの書換えが完了したか否かを判定する。
アクティベート実行可能判定部84cは、複数の書換え対象ECU19の全てにおいてプログラムの書換えが完了したと書換え完了判定部84bにより判定されると、アクティベートを実行可能であるか否かを判定する。アクティベート実行可能判定部84cは、ユーザによるアクティベート承諾が行われている場合であり、且つ車両が駐車状態の場合に、アクティベートを実行可能であると判定する。
アクティベート要求指示部84dは、アクティベートを実行可能であるとアクティベート実行可能判定部84cにより判定されると、アクティベート要求を指示する。具体的には、アクティベート要求指示部84dは、新面への切替え要求を指示した後に、リセット要求を指示する、セッション移行タイムアウトを監視する、又は書換え対象ECU19の内部リセットを監視することで、アクティベート要求を指示する。2面メモリECU又は1面サスペンドメモリECUでは、アプリプログラムを書込んだ新面(非運用面)で起動することにより、アプリプログラムをアクティベートする。一方、1面単独メモリECUでは、再起動によりアプリプログラムをアクティベートする。尚、書換え対象ECU19は、新面への切替え要求が指示された後、アクティベート要求に依らず、自身にてリセットする構成としても良い。
次に、CGW13におけるアクティベート要求の指示部の作用について図146及び図147を参照して説明する。CGW13は、アクティベート要求の指示プログラムを実行し、アクティベート要求の指示処理を行う。
CGW13は、アクティベート要求の指示処理を開始すると、複数の書換え対象ECU19を特定する(S1201、書換え対象特定手順に相当する)。具体的には、CGW13は、書換え諸元データに記載されるECU(ID)を参照することで、書換え対象ECU19を特定する。CGW13は、その特定した複数の書換え対象ECU19の全てにおいてアプリプログラムの書換えが完了したか否かを判定する(S1202、書換え完了判定手順に相当する)。CGW13は、例えば書換え諸元データに記載されるECU(ID)の順序にしたがって書換え対象ECU19に対するインストールを順番に行い、最後に記載されるECU(ID)に対するインストールが完了したら全ての書換え対象ECU19において書込みが完了したと判定する。
CGW13は、その特定した複数の書換え対象ECU19の全てにおいてアプリプログラムの書換えが完了したと判定すると(S1202:YES)、アクティベートを実行可能であるか否かを判定する(S1203、アクティベート実行可能判定手順に相当する)。具体的には、CGW13は、これまでに更新に対するユーザ承諾を得ているか、車両が駐車状態であるか等を判定し、これらの条件を満たすと、アクティベートを実行可能であると判定する。ユーザ承諾は、更新処理全体に対する承諾でも良いし、アクティベートに対する承諾でも良い。CGW13は、アクティベートを実行可能であると判定すると(S1203:YES)、これ以降、アクティベート要求を複数の書換え対象ECU19に同時に指示する(アクティベート要求指示手順に相当する)。ここでは、ECU(ID1)、ECU(ID2)及びECU(ID3)が同一グループの書換え対象ECU19であるとして説明する。
CGW13は、ECU(ID1)、ECU(ID2)及びECU(ID3)に対し、アクティベートを実行可能であると判定すると、アクティベート要求の指示処理を開始する。CGW13は、アクティベート要求の指示処理を開始すると、新面への切替え要求を書換え対象ECU19に指示する(S1204)。CGW13は、電源管理ECU20に対し、IG電源をオフからオンに切替えるように要求する(S1205)。CGW13は、車両が駐車状態であり、IGスイッチ42はオフの状態であるが、アクティベートを行うためにIG電源をオフからオンに切替える。尚、CGW13は、インストールに引続いてアクティベートを行う場合には、IG電源がオン状態であるので、S1205は行わず、スリープ状態の書換え対象ECU19に対し、起動要求(ウェイクアップ要求)を行う。
CGW13は、ソフトウェアのリセット要求を書換え対象ECU19に送信し、ソフトウェアのリセット要求を書換え対象ECU19に指示する(S1206)。書換え対象ECU19は、ソフトウェアのリセット要求に対応する仕様であれば、CGW13からソフトウェアのリセット要求を受信すると、ソフトウェアをリセットして再起動し、アプリプログラムをアクティベートする。書換え対象ECU19が1面単独メモリECUの場合には、書換え対象ECU19は、新アプリプログラムで再起動することで、旧アプリプログラムから新アプリプログラムに切替える。書換え対象ECU19が1面サスペンドメモリECU又は2面メモリECUの場合には、書換え対象ECU19は、フラッシュメモリに記憶している運用面情報(A面又はB面)を更新し、新アプリプロプログラムが書込まれた面を運用面に切替えることで、旧アプリプログラムから新アプリプログラムに切替える。
CGW13は、電源管理ECU20に対してIG電源をオンからオフに切替え、IG電源をオフからオンに切替える旨を要求し、電源のリセット要求を書換え対象ECU19に指示し、再起動を書換え対象ECU19に指示する(S1207)。書換え対象ECU19は、ソフトウェアのリセット要求に対応していない仕様でも、IG電源がオンからオフに切替わり、IG電源がオフからオンに切替わると、自己をリセットして再起動し、アプリプログラムをアクティベートする。この場合も、書換え対象ECU19が1面単独メモリECUの場合には、書換え対象ECU19は、新アプリプログラムで再起動することで、旧アプリプログラムから新アプリプログラムに切替える。書換え対象ECU19が1面サスペンドメモリECU又は2面メモリECUの場合には、書換え対象ECU19は、フラッシュメモリに記憶している運用面情報(A面又はB面)を更新し、新アプリプロプログラムが書込まれた面を運用面に切替えることで、旧アプリプログラムから新アプリプログラムに切替える。又、CGW13は、セッション移行タイムアウトを監視し(S1208)、書換え対象ECU19の内部リセットの監視する(S1209)。
即ち、CGW13は、書換え対象ECU19がソフトウェアのリセット要求に対応しない仕様であれば、ソフトウェアのリセット要求を書換え対象ECU19に送信してもアクティベートを指示することができないので、電源のリセット要求を書換え対象ECU19に指示することで、ソフトウェアのリセット要求に対応しない仕様の書換え対象ECU19のアクティベートを行う。例えばエンジンECU等のIG系ECUでは、電源オンオフで必ずリセットさせられる構成であるので、ソフトウェアのリセット要求に対応しない構成である場合が多い。書換え対象ECU19の観点では、CGW13からソフトウェアのリセット要求が指示されたこと、CGW13から電源のリセット要求が指示されたこと、セッション移行タイムアウト、内部リセットの何れかによりアクティベート(新プログラムでの起動)を行う。
ソフトウェアのリセット要求に対応する書換え対象ECU19は、CGW13からソフトウェアのリセット要求が指示されると、自己で強制的にリセットを行い、アクティベートを行う。ACC系やIG系ECUの書換え対象ECU19は、CGW13から電源のリセット要求が指示されると、電源が強制的に供給されなくなるので、次回の電源の供給時にリセットを行い、アクティベートを行う。+B電源系ECUの書換え対象ECU19は、ACC系やIG系ECUの書換え対象ECU19とは異なり、電源が常時供給されているので、セッション移行タイムアウトや内部リセットにより、アクティベートを行う。尚、各書換え対象ECU19に対するアクティベートの方法は、書換え諸元データにより指定される。
CGW13は、全ての書換え対象ECU19から新アプリプログラムで正常起動した旨が通知されると、切替え完了通知をDCM12に送信する(S1210)。DCM12は、更新プログラムのアクティベートが完了した旨をセンター装置3に通知する。CGW13は、電源管理ECU20に対してIG電源をオンからオフに切替えるように要求し、アプリグラムのアクティベート同期指示処理を終了する。CGW13は、ユーザ操作によりIG電源がオフからオンに切替えられると、各ECUのプログラムバージョン、起動面等をDCM12に送信する。DCM12は、CGW13から受信した各ECU19の情報をセンター装置3に通知する。ここで、DCM12がアクティベート完了をセンター装置3に通知する際、各ECUのプログラムバージョン及び面情報を含むECU構成情報をセンター装置3に送信しても良い。図147は、書換え対象ECU19が2面メモリECU又は1面サスペンドメモリECUの場合を示している。
以上に説明したように、CGW13は、アクティベート要求の指示処理を行うことで、アプリプログラムの書換えを完了した複数の書換え対象ECU19が旧プログラムから新プログラムへの切替えを独自のタイミングで行ってしまう事態を未然に回避し、その複数の書換え対象ECU19において旧プログラムから新プログラムへの切替えタイミングを適切に揃える。即ち、互いに連携し合う複数の書換え対象ECU19のプログラムバージョンが不整合な状態となり、連携した処理に不都合が生じることを回避する。
(13)アクティベートの実行制御処理
アクティベートの実行制御処理について図148から図150を参照して説明する。アクティベートの実行制御処理は、CGW13が前述した(12)アクティベート要求の指示処理を行うことに伴い、CGW13からアクティベート要求が指示された書換え対象ECU19が行う処理である。車両用プログラム書換えシステム1は、書換え対象ECU19においてアクティベートの実行制御処理を行う。ここで、書換え対象ECU19は、1面サスペンド方式メモリや2面メモリのように複数のデータ格納面を有する。書換え対象ECU19は、第1データ格納面と第2データ格納面とを有し、非運用面(新面)において書換えデータのインストールが完了している状態とする。
図148に示すように、ECU19は、アクティベートの実行制御部107において、運用面情報更新部107aと、実行条件判定部107bと、実行制御部107cと、通知部107dとを有する。運用面情報更新部107aは、CGW13からアクティベート要求が指示されると、次回の再起動に向けてフラッシュメモリの起動面判定情報(運用面情報)を更新する。運用面情報更新部107aは、例えば現在A面で起動しており、B面に新プログラムを書込んだ場合、運用面情報をA面からB面に更新する。
実行条件判定部107bは、アクティベートの実行条件として、CGW13からソフトウェアのリセット要求が指示されたか否か、CGW13から電源管理ECU20へ電源のリセット要求が指示されたか否か、CGW13との通信途絶が所定時間継続したか否かを判定する。実行条件判定部107bは、何れか1つの条件を満たす場合に、アクティベートの実行条件が成立したと判定する。電源のリセット要求が指示されたか否かは、CGW13からの指示でなく、電源検出回路36にて検出しても良い。実行制御部107cは、アクティベートの実行条件が成立したと実行条件判定部107bにより判定されると、運用面情報にしたがって起動面を旧面(現在運用している面)から新面(現在運用していない面)に切替える新面切替え(アクティベート)を行う。通知部107dは、運用面情報やバージョン情報等の通知情報をCGW13に通知する。
次に、書換え対象ECU19におけるアクティベートの実行制御部107の作用について図149及び図150を参照して説明する。書換え対象ECU19は、アクティベートの実行制御プログラムを実行し、アクティベートの実行制御処理を行う。
(13-1)書換え処理
書換え対象ECU19は、書換え処理を開始すると、書換え前処理として品番読出しや認証等のメモリ消去の直前までの処理を行う(S1301)。書換え対象ECU19は、センター装置3から書換え面情報を受信したか否かを判定する(S1302)。書換え対象ECU19は、例えば配信パッケージに含まれる書換え諸元データに記載される書換え面情報をCGW13から取得したか否かにより、書換え面情報を受信したか否かを判定する。書換え対象ECU19は、センター装置3から書換え面情報を受信したと判定すると(S1302:YES)、その書換え面情報と自己が管理している書換え面情報(運用面情報)とを照合し、両者が一致しているか否かを判定する(S1303)。ここで、書換え面情報は、例えばセンター装置3から送信される書換え諸元データに記載されている。例えば自身が管理している書換え面情報が、運用面がA面であり且つ非運用面がB面である場合において、書換え諸元データに記載されている書換え面情報が、非運用面(B面)を示す場合には両者が一致すると判定し、諸元データに記載される書換え面情報が、運用面(A面)を示す場合、両者は不一致と判定する。
書換え対象ECU19は、両者が一致していると判定すると(S1303:YES)、書換え処理としてメモリ消去、書込みデータの書込み、ベリファイを行い(S1304)、書換え処理を終了する。ベリファイとは、例えばフラッシュメモリに書込んだデータの完全性検証である。書換え対象ECU19は、両者が一致していないと判定すると(S1303:NO)、否定応答をCGW13に送信し(S1305)、書換え処理を終了する。
(13-2)アクティベートの実行制御処理
書換え対象ECU19は、アクティベートの実行制御処理を開始すると、非運用面を書換え面とし、アプリプログラムの書換え面への書換えを完了したか否かを判定する(S1311)。書換え対象ECU19は、アプリプログラムの書換え面への書換えを完了したと判定すると(S1311:YES)、フラッシュメモリに書込まれたアプリプログラムの完全性を検証し、書換え後のデータ検証の正否を判定する(S1312)。書換え対象ECU19は、書換え後のデータ検証が正であると判定すると(S1312:YES)、新面の書換え完了フラグを「OK」に設定し記憶する(S1313)。
その後、書換え対象ECU19は、CGW13からアクティベート要求が指示されたか否かを判定する(S1314)。書換え対象ECU19は、アクティベート要求が指示されたと判定すると(S1314:YES)、新面の書換え完了フラグが「OK」であるか否かを判定し(S1315)、新面の書換え完了フラグが「OK」であると判定すると(S1315:YES)、運用面情報を更新する(S1316、運用面情報更新手順に相当する)。即ち、書換え対象ECU19は、例えば運用面がA面であり且つ非運用面がB面である場合にB面を書換え面としてアプリプログラムの書換え面への書換えを完了した場合には、運用面がA面であり且つ非運用面がB面であることを示す運用面情報を、運用面がB面であり且つ非運用面がA面であることを示す運用面情報に更新する。
書換え対象ECU19は、運用面情報に更新すると、CGW13からソフトウェアのリセット要求が受付けたか否か、CGW13から電源管理ECU20へ電源のリセット要求が指示されたか否か、ソフトウェアのリセット要求が指示されてからCGW13との通信途絶が所定時間継続したか否かを判定し、アクティベートの実行条件が成立したか否かを判定する(S1317、実行条件判定手順に相当する)。ここで、書換え対象ECU19は、これらアクティベートの実行条件の何れが成立すると再起動するか、ECUそれぞれで再起動条件が定められている。
書換え対象ECU19は、CGW13からソフトウェアのリセット要求が指示された、CGW13から電源管理ECU20へ電源のリセット要求が指示された、ソフトウェアのリセット要求が指示されてから所定時間が経過したことのうち何れかを判定し、アクティベートの実行条件が成立したと判定すると(S1317:YES)、再起動(リセット)を実行する。書換え対象ECU19は、再起動を実行したことで、更新された運用面情報にしたがって新面(B面)を起動面として起動し(S1318、起動制御手順に相当する)、アクティベートの実行制御処理を終了する。即ち、書換え対象ECU19は、再起動後は、アプリプログラムがインストールされたB面で起動する。
書換え対象ECU19は、アプリプログラムの新面への書換えを完了していないと判定すると(S1311:NO)、又は書換え後のデータ検証が否であると判定すると(S1312:NO)、アクティベート要求が指示されたか否かを判定し(S1319)、アクティベート要求が指示されたと判定すると(S1319:YES)、否定応答をCGW13に送信し(S1320)、ステップS1311に戻る。尚、書換え対象ECU19は、書換え後のデータ検証が否であると判定した場合には、アクティベートの実行制御処理を終了し、ロールバック等の処理を行っても良い。又、書換え対象ECU19は、新面の書換え完了フラグが「OK」でないと判定すると(S1315:NO)、否定応答をCGW13に送信し(S1321)、ステップS1311に戻る。
以上に説明したように、書換え対象ECU19は、アクティベートの実行制御処理を行うことで、CGW13からアクティベート要求が指示されると、次回の再起動に向けて運用面情報を更新し、アクティベートの実行条件が成立すると、再起動後に運用面情報にしたがって起動面を旧面から新面に切替える新面切替えを行う。即ち、書換え対象ECU19は、更新プログラムのインストールが完了しても、CGW13からアクティベートを指示されない限り、更新プログラムで起動しない。例えばユーザがIGスイッチオフ42をオフからオンに操作したことに伴い、書換え対象ECU19が再起動したとしても、CGW13からアクティベートを指示されていなければ、同じ運用面にて起動する。CGW13が複数の書換え対象ECU19へ同時にアクティベートを指示し、その後、ソフトウェアリセット、電源リセット又はセッションタイムアウトにより再起動が実行されることにより、複数の書換え対象ECU19の更新プログラムを同時に有効化することができる。尚、上述した説明ではデータ格納面が2面である場合について説明したが、データ格納面が3面以上ある場合についても同様である。
尚、前述した(12)CGW13におけるアクティベート要求の指示処理において、アプリプログラムの書換えを完了した複数の書換え対象ECU19に対してCGW13がアクティベート要求の指示処理を行うことで、アプリプログラムの書換えを完了した複数の書換え対象ECU19が旧プログラムから新プログラムへの切替えを独自のタイミングで行ってしまう事態を未然に回避し、その複数の書換え対象ECU19において旧プログラムから新プログラムへの切替えタイミングを適切に揃えることができる。
(14)書換え対象のグループ管理処理
書換え対象のグループ管理処理について図151から図154を参照して説明する。車両用プログラム書換えシステム1は、CGW13において書換え対象のグループ管理処理を行う。CGW13は、同一グループに属する1以上の書換え対象ECU19に対し、アプリプログラムのアクティベートを同時に指示する。又、CGW13は、インストールからアクティベートまでの制御をグループ単位で行う。ここでは、ECU(ID1)及びECU(ID2)が第1グループの書換え対象ECU19であり、ECU(ID11)、ECU(ID12)及びECU(ID13)が第2グループの書換え対象ECU19であるとして説明する。
図151に示すように、CGW13は、書換え対象のグループ管理部85において、グループ生成部85aと、指示実行部85bとを有する。グループ生成部85aは、CGW用の書換え諸元データの解析結果にしたがって同時にバージョンアップすべき書換え対象ECU19をグループ化してグループを生成する。指示実行部85bは、グループがグループ生成部85aにより生成されると、そのグループを単位として所定の順番でインストールの指示を行い、インストールが完了すると、そのグループを単位としてアクティベートの指示を行う。
次に、CGW13における書換え対象のグループ管理部85の作用について図152から図154を参照して説明する。CGW13は、書換え対象のグループ化プログラムを実行し、書換え対象のグループ管理処理を行う。CGW13は、書換え対象のグループ管理処理を開始すると、DCM12からCGW用の書換え諸元データを取得し(S1401、書換え諸元データ取得手順に相当する)、その取得した書換え諸元データを解析し(S1402、書換え諸元データ解析手順に相当する)、今回の書換え対象ECU19の所属グループを判定する。CGW13は、例えば書換え諸元データのECUに関する情報を参照し、何れのグループに所属するかを特定しても良いし、書換え諸元データのグループに関する情報を参照し、当該グループに何れのECUが所属するかを特定しても良い。CGW13は、1つのグループに対し、最初の書換え対象ECU19の書換えであるか否かを判定し(S1403)、前回の書換え対象ECU19と同じグループに属する書換え対象ECU19の書換えであるか否かを判定し(S1404)、前回の書換え対象ECU19と異なるグループに属する書換え対象ECU19の書換えであるか否かを判定する(S1405、グループ生成手順に相当する)。
CGW13は、最初の書換え対象ECU19の書換えであると判定すると(S1403:YES)、又は前回の書換え対象ECU19と同じグループに属する書換え対象ECU19の書換えであると判定すると(S1404:YES)、アプリプログラムの書換えを書換え対象ECU19に指示し、書換え対象ECU19のアプリプログラムの書換えを行う(S1406)。そして、CGW13は、次次の書換え対象ECU19が存在するか否かを判定する(S1407)。CGW13は、同一グループ内の次の書換え対象ECU19が存在すると判定すると(S1407:YES)、上記したステップS1403~S1405に戻り、S1403~S1405を繰返す。
CGW13は、前回の書換え対象ECU19と異なるグループに属する書換え対象ECU19の書換えであると判定すると(S1405:YES)、アクティベート要求の指示処理に移行する(S1408、指示実行手順に相当する)。
CGW13は、アクティベート要求の指示処理を開始すると、次の書換え対象ECU19が存在するか否かを判定する(S1411)。即ち、CGW13は、インストールが完了していないグループが存在するか否かを判定する。CGW13は、次の書換え対象ECU19が存在すると判定すると(S1411:YES)、書換えを完了したグループに属する書換え対象ECU19にアクティベート要求を指示する(S1412)。即ち、CGW13は、未だ第2グループに属する書換え対象ECU19に対するインストールを行っていない場合、既に書換えを完了した第1グループの書換え対象ECU(ID1)及びECU(ID2)に対してアクティベートを指示する。
CGW13は、ソフトウェアのリセット要求を書換え対象ECU19に指示し、電源管理ECU20を介して電源をオンからオフに切替え、オフからオンに切替えることによる再起動を書換え対象ECU19に指示することで、書換え対象ECU(ID1)及びECU(ID2)のアプリプログラムを同時に起動させる。
CGW13は、次の書換え対象ECU19の書換えタイミングを判定する(S1413,S1314)。即ち、CGW13は、第2グループに属する書換え対象ECU19の書換えタイミングを判定する。CGW13は、次の書換え対象ECU19の書換えタイミングが次回のユーザ乗車から降車への切替え時であると判定すると(S1413:YES)、IG電源をオンからオフに切替え(S1415)、アクティベート要求の指示処理を終了し、書換え対象のグループ管理処理に戻る。CGW13は、例えばアプリプログラムの更新の実行を許容する時間帯をユーザが予め設定しており、その時間帯に第2グループに属する書換え対象ECU19へのインストールが完了しないと予測されるときは、次回の駐車状態にインストールを行うこととする。この場合、元の駐車状態に戻すべく、CGW13は、IG電源をオフするように電源管理ECU20に指示する。
CGW13は、次の書換え対象ECU19の書換えタイミングが今回の降車中(駐車状態)であると判定すると(S1414:YES)、車両バッテリ40のバッテリ残量が閾値以上であるか否かを判定する(S1417)。ここで、閾値は、予め設定した値でも良いし、CGW用の書換え諸元データから取得した値でも良い。CGW13は、車両バッテリ40のバッテリ残量が閾値以上でないと判定すると(S1416:NO)、IG電源をオンからオフに切替えるように電源管理ECU20に指示し(S1415)、アクティベート要求の指示処理を終了し、書換え対象のグループ管理処理に戻る。CGW13は、車両バッテリ40のバッテリ残量が閾値以上であると判定すると(S1416:YES)、IG電源のオンを継続し(S1417)、アクティベート要求の指示処理を終了し、書換え対象のグループ管理処理に戻る。CGW13は、図152に示した通り、第2グループに属する書換え対象ECU19のアプリプログラム書換えを行う。
CGW13は、次の書換え対象ECU19が存在しないと判定すると(S1411:NO)、書換えを完了したグループに属する書換え対象ECU19にアクティベート要求を指示し(S1418)、IG電源をオンからオフに切替え(S1419)、アクティベート要求の指示処理を終了し、書換え対象のグループ管理処理に戻る。例えば第2グループに属する書換え対象ECU(ID11)、ECU(ID12)及びECU(ID13)の書換えを完了すると、次の書換え対象ECU19、即ち、次のグループは存在しない。この場合、CGW13は、ECU(ID11)、ECU(ID12)及びECU(ID12)に対し、更新プログラムのアクティベートを指示し、アクティベート完了後、電源管理ECU20へIG電源オフを指示する。
図154に示すように、ECU(ID1)からECU(ID2)及びECU(ID11)からECU(ID13)のアプリプログラムを書換える場合に、ECU(ID1)、ECU(ID2)が連携制御する関係にあり、ECU(ID11)、ECU(ID12)、ECU(ID13)が連携制御する関係にあれば、配信パッケージにおいて、第1グループとしてECU(ID1)及びECU(ID2)が書換え対象ECU19として属し、第2グループとしてECU(ID11)、ECU(ID12)及びECU(ID13)が、書換え対象ECU19として属することとなる。CGW13は、第1グループに属するECU(ID1)、ECU(ID2)においてアプリプログラムの書換えを完了すると、ECU(ID1)、ECU(ID2)に対し、同時にアクティベート要求を指示する。その後、CGW13は、第2グループに属するECU(ID11)、ECU(ID12)及びECU(ID13)においてアプリプログラムの書換えを実行し、全て完了すると、ECU(ID11)、ECU(ID12)、ECU(ID13)に対し、アクティベート要求を指示する。尚、1面単独メモリである書換え対象ECU19に対しては、再起動を指示することで、アクティベート指示とする。
以上に説明したように、CGW13は、アクティベート要求の書換え対象ECU19のグループ管理処理を行うことで、そのグループを単位としてアクティベート要求を指示する。連携制御する関係にある複数のECUのバージョンアップを同時に行うことができる。即ち、連携制御する関係にある複数の書換え対象ECU19のアプリプログラムのバージョンが不整合な状態になって連携制御する処理に不都合が生じることを回避することができる。又、CGW13は、そのグループを単位として、所定の順番でインストールを行う。即ち、CGW13は、インストールからアクティベートまでをグループ単位で行うように制御する。
尚、本実施形態では、第1グループに属する書換え対象ECU19のインストールを完了した後、第1グループに属する書換え対象ECU19のアクティベートを行い、続いて、第2グループに属する書換え対象ECU19のインストールを完了した後、第2グループに属する書換え対象ECU19のアクティベートを行う構成である。しかしながら、第1グループに属する書換え対象ECU19に対するアクティベートと、第2グループに属する書換え対象ECU19に対するアクティベートとを続けて行っても良い。即ち、第1グループに属する書換え対象ECU19のインストールを完了し、第2グループに属する書換え対象ECU19のインストールを完了し、その後、第1グループに属する書換え対象ECU19のアクティベートを行い、第2グループに属する書換え対象ECU19のアクティベートを行っても良い。この場合、第1グループ及び第2グループに属する書換え対象ECU19に対するアクティベートを同時に行っても良い。
又、書換え対象ECU19に1面単独メモリECUが含まれている場合に、その1面単独メモリECUへのインストールの指示をグループ内の最後としても良い。インストールを連携動作する関係にある書換え対象ECU19に指示する場合に、先にデータの送信側として動作する書換え対象ECU19に対してインストールを指示し、後からデータの受信側として動作する書換え対象ECUに対してインストールを指示しても良い。
CGW13は、書換え諸元データのメモリ種別を参照し、書換え対象ECU19のメモリ種別に応じてインストール順序を決定する。例えば2面メモリ、1面サスペンドメモリ、1面単独メモリの順とする。又、CGW13は、連携動作する関係にあるECU19の情報としてデータ送信側及びデータ受信側の何れであるかを予め保有しており、その情報に基づいて書換え対象ECU19のインストール順序を決定する。
又、複数のグループがある場合に、インストールする順序は、例えば緊急度、安全度、機能、時間等に基づいて決定しても良い。緊急度とは、直ちにインストールする必要があるか否かの指標であり、インストールせずに放置しておくと人災や事故等に繋がる可能性が比較的高い場合には緊急度が高く、インストールせずに放置しておいても人災や事故等に繋がる可能性が比較的低い場合には緊急度が低く、緊急度が高いグループを優先してインストールする。安全度とは、インストール時のマイコンの種類による制約の指標であり、制約が少ない順、即ち、2面メモリ、1面サスペンドメモリ、1面単独メモリの順序でインストールする。機能とは、ユーザにとっての利便性の指標であり、ユーザにとっての利便性が高いグループを優先してインストールする。時間とは、インストールに要する時間の指標であり、インストールに要する時間が短いグループを優先してインストールする
又、CGW13は、インストールを同一グループに属する第1書換え対象ECU19及び第2書換え対象ECU19に指示する場合に、第1書換え対象ECU19においてインストールを成功し、第2書換え対象ECU19においてインストールを失敗した場合に、ロールバックを第2書換え対象ECU19に指示し、ロールバックを第1書換え対象ECU19に指示する。
又、CGW13は、インストールを第1グループに属する書換え対象ECU19及び第2グループに属する書換え対象ECU19に指示する場合に、第1グループに属する書換え対象ECU19においてインストールを失敗した場合に、インストールを第2グループに属する書換え対象ECU19に指示する。CGW13は、例えば図152において、第1グループに属する書換え対象ECU19においてインストールを失敗した状態で、第2グループの書換えとなった場合(S1405;YES)、第1グループに対するアクティベート要求の指示処理(S1408)をスキップし、ステップS1407に進む。そして、CGW13は、ステップS1403に戻り、第2グループのインストールを開始し、インストールが完了した場合、第2グループに対してアクティベート要求の指示処理を行う(S1408)。即ち、CGW13は、第1グループに対する更新が失敗したとしても、第2グループに対する更新を実行する。
尚、1つのキャンペーン(1つの配信パッケージ内)に2グループがある場合には、キャンペーンに対するユーザの承諾操作及びダウンロードに対するユーザの承諾操作を1回とし、インストールに対するユーザの承諾操作及びアクティベートに対するユーザの承諾操作をグループ毎に2回行わせる。即ち、更新により変更される機能がグループ毎に異なる場合には、その機能毎にインストールに対するユーザの承諾操作及びアクティベートに対するユーザの承諾操作を行うことが望ましい。尚、インストールに対するユーザの承諾操作及びアクティベートに対するユーザの承諾操作をグループ毎に行うことを煩雑に感じるユーザも想定されるので、インストールに対するユーザの承諾操作及びアクティベートに対するユーザの承諾操作をグループ全体で1回としても良い。
書換え諸元データを利用して書換え対象ECU19の所属グループを判定する構成を例示したが、CGW13において、書換え対象ECU19の所属グループを記憶しておく構成でも良い。
(15)ロールバックの実行制御処理
ロールバックの実行制御処理について図155から図166を参照して説明する。車両用プログラム書換えシステム1は、CGW13においてロールバックの実行制御処理を行う。ロールバックとは、アプリプログラムの書換えを中断する場合に、アプリプログラムを元のバージョンに戻す等、書換え対象ECU19のメモリを所定状態に復帰させるための書込み又は書戻しであり、ユーザから見て書換え対象ECU19の状態を書込みデータの書込みが開始される前の状態に戻すことである。
図155に示すように、CGW13は、ロールバックの実行制御部86において、キャンセル要求判定部86aと、ロールバック方法特定部86bと、ロールバック実行部86cとを有する。キャンセル要求判定部86aは、アプリプログラムの書換え中に書換えのキャンセル要求が発生したか否かを判定する。例えばユーザが携帯端末6を操作し、プログラム書換えのキャンセルを選択すると、そのキャンセルの情報を取得したセンター装置3からDCM12を介してCGW13にプログラムの書換えのキャンセル要求が通知される。
又、システムに異常が発生した場合に、システムの異常がセンター装置3に通知されると、センター装置3からDCM12を介してCGW13にプログラムの書換えのキャンセル要求が通知される。システムの異常とは、例えば一の書換え対象ECU19への書込みが成功したが、その一の書換え対象ECU19と連携制御する他の書換え対象ECU19への書込みに失敗した場合等である。このように連携制御する複数の書換え対象ECU19のうち1つでも書込みに失敗すると、システムの異常と判定し、書込みが成功した書換え対象ECU19に対し、センター装置3からDCM12を介してCGW13にプログラムの書換えのキャンセル要求が通知される。即ち、キャンセル要求が発生する要因には、ユーザによる操作と、システムの異常発生とが含まれる。
ロールバック方法特定部86bは、書換え対象ECU19に搭載されているフラッシュメモリのメモリ種別と、新プログラム又は旧プログラムの書込みデータのデータ種別に応じて、書換え対象ECU19の状態を書込みデータの書込みが開始される前の状態に戻すためのロールバック方法を特定する。即ち、ロールバック方法特定部86bは、書換え対象ECU19のメモリ種別として、フラッシュメモリが1面単独メモリ、1面サスペンドメモリ又は2面メモリのうち何れであるかを特定し、書込みデータのデータ種別として、書込みデータが全データ又は差分データのうち何れであるかを特定する。
そして、ロールバック方法特定部86bは、これらメモリ種別及びデータ種別に応じて、第1ロールバック処理、第2ロールバック処理又は第3ロールバック処理を特定する。ロールバック実行部86cは、ロールバック方法がロールバック方法特定部86bにより特定されると、そのロールバック方法に応じたロールバックを書換え対象ECU19に指示し、書換え対象ECU19を旧プログラムで動作させる。即ち、ロールバック実行部86cは、書換え対象ECU19の動作状態を、そのアプリプログラムの書換えを開始する前の状態に復帰させるロールバックを行う。
次に、CGW13におけるロールバック実行制御部86の作用について図156から図166を参照して説明する。CGW13は、ロールバック実行制御プログラムを実行し、ロールバック実行制御処理を行う。CGW13は、ロールバックの実行制御処理として、ロールバック方法の特定処理、キャンセル要求の判定処理を行う。以下、それぞれの処理について説明する。
(15-1)ロールバック方法の特定処理
CGW13は、ロールバック方法の特定処理を開始すると、DCM12から取得したCGW用の書換え諸元データを解析し(S1501)、その解析結果からロールバック方法を特定し(S1502)、ロールバック方法の特定処理を終了する。CGW13は、図44に示す書換え諸元データからメモリ種別及びロールバックプログラムのデータ種別を取得し、ロールバック方法を特定する。データ種別が新プログラムも旧プログラム(ロールバックプログラム)も同じとする運用であるならば、新プログラムのデータ種別を用いて、ロールバック方法を特定しても良い。
即ち、CGW13は、書換え対象ECU19のフラッシュメモリが1面単独メモリであり、且つ書込みデータが全データであれば、キャンセル要求が発生したときのロールバック方法として、全データの配信を即時中断し、書換え対象ECU19において旧アプリプログラムのデータを書換え領域に書込んで旧アプリプログラムに書換える方法(第1ロールバック処理)を特定する。1面単独メモリのための旧アプリプログラム(ロールバック用書換えデータ)は、更新プログラムと共に配信パッケージに含まれており、CGW13は、新アプリプログラムと同様の方法で旧アプリプログラムを書換え対象ECU19に配信する。
CGW13は、書換え対象ECU19のフラッシュメモリが1面単独メモリであり、且つ書込みデータが差分データであれば、キャンセル要求が発生したときのロールバック方法として、その差分データの配信を継続し、書換え対象ECU19において差分データを書換え領域に書込んで新アプリプログラムに書換えた後に、旧アプリプログラムの差分データを配信し、書換え対象ECU19において旧データを書換え領域に書込んで旧アプリプログラムに書換える方法(第2ロールバック処理)を特定する。
書込みデータが差分データである場合、書換え対象ECU19は、フラッシュメモリに書込まれている現アプリプログラムとCGW13から取得した差分データとを用いて新アプリプログラムを復元し、新アプリプログラムの書込みを行う。フラッシュメモリに異なるアプリプログラムが書込まれている状態では、書込み対象ECU19は、差分データから新アプリプログラムを復元することができない。そのため、1面単独メモリでは、一旦新アプリプログラムに書換える処理が必要となる。ここで、例えば、現アプリプログラムがバージョン1.0であり、新アプリプログラムがバージョン2.0であると、書換えプログラム(書換えデータ)はバージョン1.0をバージョン2.0に更新するための差分データであり、ロールバック用書換えデータは、バージョン2.0をバージョン1.0に更新するための差分データである。
CGW13は、書換え対象ECU19のフラッシュメモリが1面サスペンドメモリ又は2面メモリであれば、書込みデータの配信を継続し、書換え対象ECU19において運用面がA面であり、非運用面がB面であれば、書込みデータを非運用面であるB面に書込んで新アプリプログラムをインストールするが、A面からB面への運用面の切替えを抑制する方法(第3ロールバック処理)を特定する。
(15-2)キャンセル要求の判定処理
CGW13は、書換え対象ECU19においてアプリプログラムの書換えが開始されたと特定すると、キャンセル要求の判定処理を開始し、アプリプログラムの書換えが完了されたか否かを判定し(S1511)、キャンセル要求が発生したか否かを判定する(S1512)。即ち、CGW13は、上記したように、ユーザによる操作、システムの異常発生等によりキャンセル要求が発生したか否かを判定する。
CGW13は、アプリプログラムの書換えが完了される前にキャンセル要求が発生した、即ち、インストール中にキャンセル要求が発生したと判定すると(S1512:YES)、ロールバック対象の書換え対象ECU19を特定する(S1513)。同一グループに属する書換え対象ECU19がECU(ID1)、ECU(ID2)及びECU(ID3)であり、ECU(ID1)が1面単独メモリ、ECU(ID2)及びECU(ID3)が2面メモリであり、ECU(ID1)へのインストールが完了し、ECU(ID2)へのインストール途中でキャンセル要求が発生したとする。この場合、CGW13は、S1413において、第1グループに属する書換え対象ECU19全てについてロールバックの要否を判定する。
CGW13は、アプリプログラムの書換えが全部行われたECU(ID1)及び一部行われたECU(ID2)がロールバック対象であると特定する。CGW13は、その特定したロールバック対象の書換え対象ECU19のフラッシュメモリのメモリ種別を判定し、フラッシュメモリが1面単独メモリ、1面サスペンドメモリ及び2面メモリのうち何れであるかを判定する(S1514,S1515)。CGW13は、フラッシュメモリが1面単独メモリであると判定すると(S1514:YES)、ロールバックプログラムのデータ種別を判定し、ロールバック用書込みデータが全データ及び差分データのうち何れであるかを判定する(S1516,S1517)。
CGW13は、ロールバック用書込みデータが全データであると判定すると(S1516:YES)、第1ロールバック処理に移行する(S1518、ロールバック実行手順に相当する)。CGW13は、第1ロールバック処理を開始すると、新プログラムである書込みデータの配信を即時中断する(S1531)。そして、CGW13は、DCM12から全データであるロールバック用書込みデータ(旧プログラム)を取得し、書換え対象ECU19に配信する。書換え対象ECU19は、CGW13から取得した旧アプリプログラムのデータをフラッシュメモリに書込んで旧アプリプログラムに書換え(S1532)、第1ロールバック処理を終了し、キャンセル要求の判定処理に戻る。
CGW13は、ロールバック用書込みデータが差分データであると判定すると(S1517:YES)、第2ロールバック処理に移行する(S1519、ロールバック実行手順に相当する)。CGW13は、第2ロールバック処理を開始すると、新プログラムである書込みデータの配信を継続し(S1541)、書換え対象ECU19において差分データを復元してフラッシュメモリに書込んで、新アプリプログラムに書換える(S1542)。CGW13は、新アプリプログラムへの書換え完了後に、DCM12から取得した旧アプリプログラムの書込みデータを書換え対象ECU19に配信する(S1543)。書換え対象ECU19において旧アプリプログラムの書込みデータである差分データを復元し、フラッシュメモリに書込んで旧アプリプログラムに書換え(S1544)、第2ロールバック処理を終了し、キャンセル要求の判定処理に戻る。
CGW13は、書換え対象ECU19が1面サスペンドメモリECU又は2面メモリECUであると判定すると(S1515:YES)、第3ロールバック処理に移行する(S1520、ロールバック実行手順に相当する)。この場合、CGW13は、書換えデータ種別に依らず、第3ロールバック処理に移行する。CGW13は、第3ロールバック処理を開始すると、その書込みデータの配信を継続し(S1551)、書換え対象ECU19において書込みデータを非運用面(B面)に書込んで新アプリプログラムに書換える(S1552)。CGW13は、旧面(運用面:A面)から新面(非運用面:B面)への運用面の切替えを抑制し(S1553)、第3ロールバック処理を終了し、キャンセル要求の判定処理に戻る。尚、CGW13は、運用面の切替え抑制に加え、図126に示すように、バージョン2.0が書込まれている非運用面を新アプリプログラムに書換える前の状態(例えばバージョン1.0)に書き戻しても良い。
CGW13は、キャンセル要求の判定処理に戻ると、全てのロールバック対象の書換え対象ECU19についてロールバック処理を行ったか否かを判定する(S1521)。CGW13は、例えば前述した書換え対象ECU19がECU(ID1)、ECU(ID2)及びECU(ID3)の場合の例示では、まず、インストール途中であった1面単独メモリのECU(ID1)に対し、ロールバック用データ種別に応じて、第1ロールバック処理又は第2ロールバック処理を行う。その後、CGW13は、インストールが完了していた2面メモリのECU(ID2)に対し、第3ロールバック処理を行う。
加えて、CGW13は、1面単独メモリであるECU(ID1)に対し、書換えデータ種別に応じて、第1ロールバック処理又は第2ロールバック処理を行う。CGW13は、全てのロールバック対象の書換え対象ECU19についてロールバック処理を行っていない判定すると(S1521:NO)、ステップS1513に戻り、ステップS1513以降を繰返す。CGW13は、全てのロールバック対象の書換え対象ECU19についてロールバック処理を行ったと判定すると(S1521:YES)、キャンセル要求の判定処理を終了する。CGW13は、ロールバック処理を行った第1グループに属するECU(ID1)、ECU(ID2)及びECU(ID3)に対し、旧アプリプログラムのアクティベートを同時に指示する。1面単独メモリであるECU(ID1)は、再起動することにより、旧アプリプログラムへ切替える。2面メモリであるECU(ID2)及びECU(ID3)は、更新プログラムが書込まれた非運用面(B面)でなく、これまでと同じ運用面(A面)にて起動する。尚、ユーザの意向が変化し、やはりプログラム更新を実行するとなった際は、ECU(ID1)及びECU(ID3)には新アプリプログラムを書込むが、ECU(ID2)には、既に非運用面に新アプリプログラムがインストール済みであるため、書込みは省略される。
CGW13は、キャンセル要求が発生せずにアプリプログラムの書換えが完了されたと判定すると(S1511:YES)、アクティベートが完了されたか否かを判定し(S1522)、キャンセル要求が発生したか否かを判定する(S1523)。
CGW13は、アクティベートが完了される前にキャンセル要求が発生した、即ち、アクティベート中にキャンセル要求が発生したと判定すると(S1523:YES)、アクティベートの指示が書換え対象ECU19に到達されたか否かを判定し、運用面の切替えが完了したか否かを判定する(S1524)。
CGW13は、アクティベートの指示が書換え対象ECU19に到達されていないと判定し、運用面の切替えが完了していないと判定すると(S1524:NO)、第4ロールバック処理を行う(S1525)。CGW13は、第4ロールバック処理として、運用面を切替えないとする。又は、CGW13は、運用面を切替えずに非運用面を新アプリプログラムに書換える前の状態に戻しても良い。CGW13は、運用面を切替えない場合には、図163に示すように、バージョン1.0が書込まれている面を運用面のままとし、バージョン2.0が書込まれている面を非運用面のままとする。CGW13は、運用面を切替えずに非運用面を新アプリプログラムに書換える前の状態に戻す場合は、図164に示すように、バージョン1.0が書込まれている面を運用面のままとし、バージョン2.0が書込まれている面である非運用面を新アプリプログラムに書換える前の状態に(バージョン1.0)に書き戻す。
CGW13は、アクティベートの指示が書換え対象ECU19に到達されたと判定し、運用面の切替えが完了したと判定すると(S1524:YES)、第5ロールバック処理を行う。運用面の切替えが完了とは、図165に示すように、バージョン2.0が書込まれた面が非運用面から運用面に切り替わり、バージョン1.0の面が運用面から非運用面に切り替わった状態を示す。CGW13は、第5ロールバック処理として、運用面を切替えるか、又は非運用面を新アプリプログラムに書換える前の状態に戻してから運用面を切替える。CGW13は、運用面を切替える場合には、図165に示すように、バージョン2.0が書込まれている面を運用面から非運用面に切替え、バージョン1.0が書込まれている面を非運用面から運用面に切替える。CGW13は、非運用面を新アプリプログラムに書換える前の状態に戻してから運用面を切替える場合には、図166に示すように、バージョン2.0が書込まれている面である運用面を新アプリプログラムに書換える前の状態(例えばバージョン1.0)に書き戻し、その新アプリプログラムに書換える前の状態に戻した面を運用面から非運用面に切替え、バージョン1.0が書込まれている面を非運用面から運用面に切替える。
以上に説明したように、CGW13は、ロールバックの実行制御処理を行うことで、アプリプログラムの書換え中に書換えのキャンセル要求が発生すると、書換え対象ECU19の動作状態を、ユーザから見てそのアプリプログラムの書換えを開始する前の状態となるように復帰させる。これにより、同一グループに属する書換え対象ECU19全てを同時に、元のプログラムバージョンに戻すことができる。又、次のプログラム更新にて差分データを用いる場合であっても、正しく書込みデータを復元することができる。
(16)書換え進捗状況の表示制御処理
書換え進捗状況の表示制御処理について図167から図179を参照して説明する。車両用プログラム書換えシステム1は、CGW13において書換え進捗状況の表示制御処理を行う。ユーザにアプリプログラムの書換えの進捗状況を伝えるため、表示端末5である携帯端末6や車載ディスプレイ7は、進捗状況を表示する。表示する進捗状況としては、プログラムを更新する場合だけでなく、例えばユーザのキャンセル操作や更新失敗等によりロールバックする場合も含む。
図167に示すように、CGW13は、書換え進捗状況の表示制御部87において、キャンセル検出部87aと、書込み指示部87bと、報知指示部87cとを有する。キャンセル検出部87aは、書換え対象ECU19に記憶されている第1書込みデータを、センター装置3から取得された第2書込みデータに書換えるプログラムの書換えに関し、キャンセルを検出する。キャンセル検出部87aは、例えばユーザによるキャンセル操作や、書換え対象ECU19への書込み失敗等の異常を検出する。キャンセル検出部87aは、書換え対象ECU19に不適合な書込みデータであった場合や、書込みデータに改ざんを検知した場合、書換え対象ECU19への書込みエラーが発生した場合など、所定の異常を検出した場合もロールバック処理が行われるため、これら異常の検出もキャンセルの検出とみなす。
書込み指示部87bは、第2書込みデータを書換え対象ECU19に配信し、第2書込みデータの書込みを指示する。報知指示部87cは、アプリプログラムの書換えに関する進捗状況の報知を指示する。報知指示部87cは、書込み指示部87bにより第2書込みデータを配信中に、アプリプログラムの書換えに関する進捗状況を第1態様により報知するように指示し、キャンセル検出部87aによりキャンセルを検出すると、アプリプログラムの書換えに関する進捗状況を第2態様により報知するように指示する。書込み指示部87bは、第2書込みデータを配信中に、キャンセル検出部87aによりキャンセルを検出すると、第2書込みデータの配信を継続する。
CGW13は、書換え対象ECU19の内部状態を特定すること、センター装置3からの指示を特定すること、ユーザ操作を特定することのうち何れかにより、書換え対象ECU19におけるアプリプログラムの書換えを特定する。CGW13は、アプリプログラムの書換えが特定されると、通常時の書換え(インストール)であるかロールバック時の書換え(アンインストール)であるかを判定する。CGW13は、書換え対象ECU19の内部状態を特定すること、センター装置3からの指示を特定すること、ユーザ操作を特定することのうち何れかにより、通常時の書換えであるかロールバック時の書換えであるかを判定すると、その判定結果により通常時又はロールバック時の書換えの進捗状況を演算し、その演算した進捗状況の表示を表示端末5に指示する。
CGW13は、通常時の書換えかロールバック時の書換えかを示す書換え判定結果に応じて通常時の進捗状況又はロールバック時の進捗状況の表示を表示端末5に指示する。CGW13は、通常時の書換えの進捗状況を示す進捗表示と、ロールバック時の書換えの進捗状況を示す進捗表示とを区別するように表示を指示する。即ち、CGW13は、通常時の書換えの場合は第1の態様で進捗状況を表示し、ロールバック時の書換えの場合は、第1の態様と異なる第2の態様で進捗状況を表示する。CGW13は、進捗状況を表示させる際の表示に関する態様として、表示画面における文字、項目、色、数値、点滅等を通常時とロールバック時とで区別することで、通常時の進捗表示とロールバック時の進捗表示とを区別する。又、CGW13は、進捗表示を表示させる際の表示以外に関する態様として、音、振動等を通常時とロールバック時とで区別することで、通常時の進捗表示とロールバック時の進捗表示とを区別する。
次に、CGW13の作用について図168から図179を参照して説明する。CGW13は、書換え進捗状況の表示制御プログラムを実行し、書換え進捗状況の表示制御処理を行う。
CGW13は、書換え対象ECU19においてプログラムの書換えが開始された旨を示す書換え開始信号を受信すると(書換え対象ECU19へのインストールが開始されると)、書換え進捗状況の表示制御処理を開始する。CGW13は、書換え進捗状況の表示制御処理を開始すると、CGW用の書換え諸元データを解析し、書換え対象ECU19のフラッシュメモリのメモリ種別及び書込みデータ種別を特定し、通常時の書換え対象ECU19を特定する(S1601)。CGW13は、書換え対象ECU19のフラッシュメモリのメモリ種別、書込みデータ種別及び更新プログラムのサイズを特定すると(S1602)、その特定結果にしたがって通常時の書換え進捗状況を演算し、その演算した通常時の書換え進捗状況の表示を指示する(S1603)。表示端末5は、CGW13からの指示にしたがって通常時の書換え表示態様で表示する。
CGW13は、アプリプログラムの書換えが完了されたか否かを判定し(S1604)、キャンセル要求が発生したか否かを判定する(S1605、キャンセル検出手順に相当する)。CGW13は、例えば書換え対象ECU(ID1)へのインストール中において、S1604及びS1605を繰返し、進捗状況を随時更新して表示する。
CGW13は、書換え対象ECU19においてアプリプログラムの書換えが完了された旨を示す書換え完了信号を受信し、キャンセル要求が発生せずにアプリプログラムの書換えが完了されたと判定すると(S1604:YES)、通常時の書換え進捗状況の表示を終了し(S1606)、全ての書換え対象ECU19について書換えを完了したか否かを判定する(S1607)。CGW13は、例えば書換え対象ECU(ID1)のインストールが完了した場合、ECU(ID1)の進捗状況を100%として表示しておく。CGW13は、全ての書換え対象ECU19について未だ書換えを完了していないと判定すると(S1607:NO)、ステップS1601に戻り、ステップS1601以降を繰返す。CGW13は、例えばS1601以降において、次にインストールする書換え対象ECU(ID2)についての進捗表示を行う。
CGW13は、アプリプログラムの書換えが完了される前にキャンセル要求が発生したと判定すると(S1605:YES)、通常時の書換え進捗状況の表示を終了し(S1608)、ロールバック時の表示制御処理に移行する(S1609、報知指示手順に相当する)。ここで、キャンセル要求とは、ユーザによるキャンセル要求と、書換え対象ECU19への書込み失敗等に基づくシステムによるキャンセル要求とを含む。
CGW13は、ロールバック時の表示制御処理を開始すると、ロールバック時の書換え対象ECU19を特定し(S1611)、そのロールバック時の書換え対象ECU19のフラッシュメモリのメモリ種別、ロールバックプログラムのデータ種別及びサイズを特定する(S1612)。CGW13は、例えば同一グループに属する書換え対象ECU19がECU(ID1)、ECU(ID2)及びECU(ID3)であり、ECU(ID1)及びECU(ID2)のインストールが完了し、ECU(ID3)のインストール途中でキャンセル要求が発生したとする。この場合、CGW13は、各書換え対象ECU19のメモリ種別及び書込みデータ種別に応じて、ロールバックの要否及びロールバック方法を特定する。
CGW13は、ロールバック対象となる書換え対象ECU19のフラッシュメモリのメモリ種別及び書込みデータ種別を特定し、ロールバックの要否及びロールバック方法を特定する(前述したS1518の第1ロールバック処理、S1519の第2ロールバック処理、S1520の第3ロールバック処理)。CGW13は、その特定結果にしたがって進捗状況を演算し、進捗状況を表示すると共に、ロールバック時の書換え進捗状況の表示を指示する(S1613)。CGW13は、第1~第3ロールバック処理のそれぞれによりって、書込むデータ量が異なってくる。そのため、CGW13は、第1~第3ロールバック処理に応じて書込みデータ総量を決定し、書込んだデータ量との割合から進捗(何%書込んだか)を演算する。CGW13は、ロールバック処理としてのアプリプログラムの書換えが完了されたか否かを判定する(S1614)。
CGW13は、ロールバック処理としての書換えが完了するまで書換え対象ECU19へ書込みデータを配信すると共に、前述した進捗の演算と表示指示とを繰返す。CGW13は、S1613において、ロールバック時の表示態様にて、演算した進捗状況を表示する。CGW13は、S1614において、例えば書換え途中であったECU(ID3)のロールバックが正常に完了したか否かを判定する。
CGW13は、ロールバック対象の書換え対象ECU19に対するロールバックが完了したと判定すると(S1614:YES)、ロールバック時の書換え進捗状況の表示を終了する(S1615)。CGW13は、例えばECU(ID3)についてはロールバックが100%完了した旨の表示を継続する。
CGW13は、全てのロールバック対象ECU19について、ロールバック時の書換えが完了したか否かを判定する(S1616)。CGW13は、全てのロールバック対象ECU19について、ロールバック時の書換えが完了していないと判定すると(S1616:NO)、ステップS1611に戻り、ステップS1611以降を繰返す。
CGW13は、例えばインストールが完了したECU(ID1)が1面単独メモリの場合、ロールバック時の書換え進捗状況の表示を行う(S1613)。一方、例えばインストールが完了したECU(ID2)が2面メモリでロールバックが不要な場合、ロールバック時の書換え対象からECU(ID2)を除外する。CGW13は、ECU(ID3)及びECU(ID1)のロールバックが完了すると、全てのロールバック対象の書換え対象ECU19について書換え完了となり(S1616:YES)、ロールバック時の表示制御処理を終了する。
尚、上述した説明では、CGW13がロールバック時の表示制御処理を行うこととしたが、CGW13から必要な情報を取得しつつ、車載ディスプレイECU7やセンター装置3がロールバック時の表示制御処理を行うように構成しても良い。又、ロールバック時の書換えや進捗演算等をCGW13で行い、ロールバック時の表示制御を車載ディスプレイECU7やセンター装置3で行うよう構成しても良い。即ち、表示制御装置の機能をCGW13だけが有する構成に限らず、表示制御装置の機能をCGW13と車載ディスプレイECU7とで分散して有する構成でも良いし、表示制御装置の機能をCGW13とセンター装置3とで分散して有する構成でも良い。
以下、書換え進捗状況の表示について図170から図178を参照して説明する。表示端末5は、通常時の書換え進捗状況の表示では、図170に示すように、全体進捗状況を「通常書換え」として表示し、通常時の書換え進捗状況の表示であることをユーザに把握させる。「通常書換え」を「インストール」と表示しても良い。表示端末5は、第1態様として、通常時の書換え進捗状況の表示を行う。
表示端末5は、アプリプログラムの書換えを完了し、更新プログラムをアクティベートする同期指示待ちの状態にある書換え対象ECU19については進捗状態を「同期指示待ち」として表示し、書換え中の状態にある書換え対象ECU19については進捗状態を「通常書換え中」として表示する。「同期待ち指示」を「アクティベート待ち」と表示しても良い。「通常書換え中」を「インストール中」と表示しても良い。図170は、ECU(ID0001)及びECU(ID0002)がアプリプログラムの書換えを完了して同期指示待ちの状態であり、ECU(ID0003)が通常書換え中の状態である場合を例示している。
表示端末5は、この状態からキャンセル要求が発生すると、図171に示すように、例えば「キャンセルを受付けました。書換え前の状態に復元します。しばらくお待ちください。」というメッセージをポップアップ表示し、キャンセルを受付けたことをユーザに把握させる。表示端末5は、第2態様として、キャンセルを受付けた旨の表示を行う。
表示端末5は、CGW13によりロールバック時の書換えの準備を完了すると、図172に示すように、全体進捗状況を「ロールバック書換え」として表示し、ロールバック時の書換え進捗状況の表示であることをユーザに把握させる。「ロールバック書換え」を「アンインストール」として表示しても良い。表示端末5は、全ての書換え対象ECU19について進捗状態を「ロールバック待ち」として表示し、書換え状況の進捗を示す進捗グラフの数値を「0%」として表示する。「ロールバック待ち」を「アンインストール待ち」と表示しても良い。ここでは、ECU(ID0001)及びECU(ID0002)が1面単独メモリECU、ECU(ID0003)が2面メモリECUの例であり、書換え途中だったECU(ID0003)に加え、インストールが完了したECU(ID0001)及びECU(ID0002)についてもロールバックが必要となる。図172では、全体進捗状況を1つ示すと共に、各書換え対象ECU19の進捗状況をそれぞれ表示する態様である。
CGW13は、ロールバック時の書換えを開始すると、図173に示すように、書換え中の状態にある書換え対象ECU19について進捗状態を「ロールバック書換え中(もしくはアンインストール中)」として表示する。表示端末5は、第3態様として、ロールバック時の書換え進捗状況の表示を行う。図173は、ECU(ID0003)がロールバック書換え中の状態にある場合を例示している。表示端末5は、書換え対象ECU19でのロールバックが完了すると、図174に示すように、書換えを完了した書換え対象ECU19について進捗状態を「ロールバック完了」として進捗状況を100%で表示する。
表示端末5は、ロールバック対象ECU19が1面単独メモリECUであり、全データの書換えである場合、図175に示すように、進捗グラフの表示を遷移させる。即ち、ロールバック対象ECU19が1面単独メモリECUであり、全データの書換えである場合には、全データの配信を即時中断し、書換え対象ECU19において旧アプリプログラムのデータをフラッシュメモリに書込んで旧アプリプログラムに書換える(第1ロールバック処理)。
表示端末5は、例えば通常書換えが「50%」まで完了した段階でキャンセル要求が発生すると(図176(a))、進捗グラフの数値を「0%」として表示し(図176(b))、旧アプリプログラムのデータを書込む進捗に応じて進捗グラフの数値を増加させ、旧アプリプログラムに書換える(図176(c)、(d)、(e))。表示端末5は、旧アプリプログラムへの書換えが100%完了すると、その書換え対象ECU19が「ロールバック完了」した旨を表示する。尚、図175及び以降に説明する図176~178は、個々のECUの進捗表示を示すものである。
表示端末5は、ロールバック対象ECU19が1面単独メモECUであり、差分データの書換えである場合、図176又は図177に示すように、進捗グラフの表示を遷移させる。即ち、ロールバック対象ECU19が1面単独メモリであり、差分データの書換えである場合には、CGW13は差分データの配信を継続し、書換え対象ECU19において差分データをフラッシュメモリに書込んで新アプリプログラムに書換える。CGW13は、旧アプリプログラムのデータを書換え対象ECU19に配信し、書換え対象ECU19において旧データをフラッシュメモリに書込んで旧アプリプログラムに書換える(第2ロールバック処理)。
表示端末5は、例えば通常書換え(インストール)が「50%」まで完了した段階でキャンセル要求が発生すると(図176(a)、図177(a))、進捗グラフの数値を「0%」として表示する(図176(b)、図177(b))。書換え対象ECU19は、それまでに書込んでいた差分データを有効とし、CGW13から配信される差分データの書込みを引続き行う。即ち、「0%」の表示から、有効とされた「50%」に相当する割合はインストールが完了しているという進捗表示に切替える(図176(c)、図177(c))。表示端末5は、CGW13から配信される新プログラムの差分データを書換え対象ECU19が書込む進捗に応じて進捗グラフの数値を増加させる(図176(d)、(e)、図177(d)、(e))。表示端末5は、書換え対象ECU19が新アプリプログラムの書換えを完了した後に引続いて、CGW13から配信される旧アプリプログラムの差分データを書換え対象ECU19が書込む進捗に応じて、進捗グラフの数値を増加させる(図176(f)、(g)、図177(f)、(g))。即ち、表示端末5は、ロールバック処理として、新プログラムの継続インストール及び旧プログラムのインストールが発生することに合わせ、新プログラム書込みの進捗状況と旧プログラム書込みの進捗状況とが分かるように表示する。
この場合、表示端末5は、図176に示すように、新アプリプログラムの書換え分として左側の進捗グラフを「100%」と表示し、旧アプリプログラムの書換え分として右側の進捗グラフを「100%」と表示することで、進捗グラフの幅全体を「200%」としても良い。この場合、表示端末5は、新アプリプログラムのファイルサイズと書込んだ新アプリプログラムの累積データサイズとから、新アプリプログラムの進捗パーセントを演算し、旧アプリプログラムのファイルサイズと書込んだ旧アプリプログラムの累積データサイズとから旧アプリプログラムの進捗パーセントを演算し、進捗状況を表示する。
又、表示端末5は、図177に示すように、新アプリプログラムの書換え分を「50%」とし、旧アプリプログラムの書換え分を「50%」とすることで、進捗グラフの幅全体を「100%」としても良い。この場合、表示端末5は、新アプリプログラムのファイルサイズと旧アプリプログラムのファイルサイズとの合算値と、書込んだ新アプリプログラムの累積データサイズと旧アプリプログラムの累積データサイズとの合算値とから、進捗パーセントを演算して表示する。
表示端末5は、ロールバック対象ECU19が1面サスペンドメモリECU又は2面メモリECUの書換えである場合、図178に示すように、進捗グラフの表示を遷移させる。即ち、ロールバック対象ECU19が1面サスペンドメモリECU又は2面メモリECUの書換えである場合、CGW13は、書換え対象ECU19に書込みデータの配信を継続し、書換え対象ECU19において書込みデータを非運用面に書込んで新アプリプログラムに書換える(第3ロールバック処理)。
表示端末5は、例えば通常書換え(インストール)が「50%」まで完了した段階でキャンセル要求が発生すると(図178(a))、進捗グラフの数値を「0%」として表示する(図178(b))。書換え対象ECU19は、それまでに書込んでいた差分データを有効とし、CGW13から配信される差分データの書込みを引続き行う。即ち、「0%」の表示から、有効とされた「50%」に相当する割合はインストールが完了しているという進捗表示に切り替える(図178(c))。表示端末5は、CGW13から配信される書込みデータを書換え対象ECU19が書込む進捗に応じて進捗グラフの数値を増加させる(図178(d)、(e))。尚、本実施形態では、CGW13が書換え進捗状況の表示制御処理を行う旨を説明したが、表示端末5が書換え進捗状況の表示制御処理を行う構成でも良い。
以上に説明したように、表示端末5は、書換え進捗状況の表示制御処理を行うことで、ロールバック処理をふまえた上で、アプリプログラムの書換えが通常時の書換え(インストール)であるかロールバック時の書換え(アンインストール)であるかを区別した表示態様にて進捗状況を表示する。ユーザは、更新プログラムのキャンセルが受け付けられ、ロールバックが進行していることを把握することができる。尚、以上は、書換え対象ECU19毎に進捗状態を表示する構成を説明したが、図179に示すように、書換え対象ECU19を纏めて進捗状態を表示する構成でも良い。この場合、表示端末5は、3個の書換え対象ECU19に対する進捗表示を個別でなく1つの進捗状態として表示する。CGW13は、ロールバック処理として3個の書換え対象ECU19で発生する書込みデータ総量に対する書込み済みデータ量の割合から進捗を演算する。
(17)差分データの整合性判定処理
差分データの整合性判定処理について図180から図183を参照して説明する。車両用プログラム書換えシステム1は、書換え対象ECU19においてインストールを開始する前に差分データの整合性判定処理を行う。
図180に示すように、ECU19は、差分データの整合性判定部103において、差分データ取得部103aと、整合性判定部103bと、書込みデータ復元部103cと、データ書込み部103dと、データ検証値算出部103eと、書換え諸元データ取得部103fと、データ識別情報取得部103gと、書換え面情報取得部103hとを有する。
差分データ取得部103aは、書換え対象ECU19の電子制御装置のデータ格納領域を書換えるためのデータであって旧データと新データとの差分を示す差分データを取得する。整合性判定部103bは、フラッシュメモリのデータ格納領域に記憶されている格納データに関する第1判定情報と、差分データに紐づく形で取得された第2判定情報とに基づいて、差分データがデータ格納領域又は格納データに整合するか否かを判定する。例えば第1判定情報は格納データに対するデータ検証値であり、第2判定情報は旧データに対するデータ検証値又は新データに対するデータ検証値である。書込みデータ復元部103cは、差分データの整合性が正であると整合性判定部103bにより判定されると、差分データと格納データとを用いて書込みデータを復元し、差分データの整合性が否であると整合性判定部103bにより判定されると、書込みデータを復元しない。データ書込み部103dは、書込みデータが書込みデータ復元部103cにより復元されると、その復元された書込みデータをデータ格納領域に格納する。データ検証値算出部103eは、格納データを1以上に分割した各ブロックに対するデータ検証値を算出する。又、データ検証値算出部103eは、差分データと共に受信された各ブロックに対するデータ検証値を取得する。
書換え諸元データ取得部103fは、CGW13からCGW用の書換え諸元データのうち自己に該当する書換え諸元データを取得する。データ識別情報取得部103gは、差分データに格納されているデータ識別情報と、旧データである旧アプリプログラムのデータ識別情報とを取得する。データ識別情報とは、差分データが自己のためのデータであるか否かを識別可能な情報であり、例えば旧データに所定のアルゴリズムを適用して算出したデータである。
書換え面情報取得部103hは、CGW13から取得した書換え諸元データに格納されている書換え面情報と、旧データである旧アプリプログラムの書換え面情報とを取得する。書換え面情報とは、書込みデータである差分データがフラッシュメモリの何れの面に書込むためのデータであるかを示す情報であり、書換え対象ECU19が2面メモリ又は1面サスペンドメモリの場合に、A面又はB面が指定される。書換え対象ECU19が1面単独メモリの場合には書換え面情報は使用しない。整合性判定部103bは、CGW13より配信される差分データが書込みデータ受信部101により受信されると、その差分データの整合性を、データ識別情報、データ検証値、書換え面情報の少なくとも何れか一つを用いて判定する。
次に、書換え対象ECU19における差分データの整合性判定部103の作用について図181から図183を参照して説明する。書換え対象ECU19は、差分データの整合性判定プログラムを実行し、差分データの整合性判定処理を行う。書換え対象ECU19は、差分データの整合性判定処理を開始すると、差分データの整合性を判定するための第1判定情報として、差分データに関するデータ識別情報、データ検証値及び書換え面情報を取得する(S1701)。書換え対象ECU19は、第2判定情報として、データ識別情報、旧データのデータ検証値、新データのデータ検証値及び書換え面情報を取得する(S1702)。
書換え対象ECU19は、第1判定情報のデータ識別情報と第2判定情報のデータ識別情報とが一致し、且つ第1判定情報の書換え面情報と第2判定情報の書換え面情報とが一致するか否かを判定する(S1703)。書換え対象ECU19は、第1判定情報のデータ識別情報と第2判定情報のデータ識別情報とが一致しない、又は第1判定情報の書換え面情報と第2判定情報の書換え面情報とが一致しないと判定すると(S1703:NO)、不適切な書込みデータであると判定し、エラー情報をCGW13に通知し、差分データの整合性判定処理を終了する。
書換え対象ECU19は、第1判定情報のデータ識別情報と第2判定情報のデータ識別情報とが一致し、且つ第1判定情報の書換え面情報と第2判定情報の書換え面情報とが一致すると判定すると(S1703:YES)、第1判定情報のデータ検証値と、第2判定情報の新データのデータ検証値とを照合し、両者が一致するか否かを判定する(S1704、整合性判定手順に相当する)。書換え対象ECU19は、両者が一致しないと判定すると(S1704:NO)、第1判定情報のデータ検証値と、第2判定情報の旧データのデータ検証値とを照合し、両者が一致するか否かを判定する(S1705、整合性判定手順に相当する)。
書換え対象ECU19は、両者が一致すると判定すると(S1705:YES)、書込みデータを復元し(S1706、書込みデータを復元手順に相当する)、その復元した書込みデータをフラッシュメモリに書込み(S1707、データ書込み手順に相当する)、全ての書込みを完了したか否かを判定する(S1708)。書換え対象ECU19は、全ての書込みを完了していないと判定すると(S1708:NO)、ステップS1703に戻り、ステップS1703以降を繰返す。書換え対象ECU19は、全ての書込みを完了したと判定すると(S1708:YES)、差分データの整合性判定処理を終了する。
書換え対象ECU19は、第1判定情報のデータ検証値と第2判定情報の新データのデータ検証値とが一致しないと判定し(S1704:NO)、且つ第1判定情報のデータ検証値と第2判定情報の旧データのデータ検証値とが一致しないと判定すると(S1705:NO)、1ブロック目に対する書込みであるか否かを判定する(S1709)。
書換え対象ECU19は、1ブロック目に対する書込みであると判定すると(S1709:YES)、1ブロック目に対する書込みを完了していない状態であるので、全ての書込みを完了したか否かを判定する(S1708)。書換え対象ECU19は、1ブロック目に対する書込みでない、即ち、2ブロック目以降に対する書込みであると判定すると(S1709:NO)、書込みをリトライし(S1710)、全ての書込みを完了したか否かを判定する(S1708)。
書換え対象ECU19が1面単独メモリECUの場合について図182を参照して説明する。CGW13から配信される差分データには、データ識別情報(旧)と、旧データのブロック毎に計算されたCRC値(データ検証値)とが添付されている。データ識別情報(旧)とは、旧データ(旧アプリプログラム)に所定のアルゴリズムを適用して算出したデータである。書換え対象ECU19は、データ識別情報を判定情報とする場合には、差分データに添付されているデータ識別情報(旧)と、フラッシュメモリに記憶されているプログラム(旧データ)のデータ識別情報(旧)とを照合し、差分データの整合性を判定する。フラッシュメモリに記憶されているデータ識別情報(旧)は、書換え対象ECU19のフラッシュメモリにプログラムを書込む際に、合わせて記憶される情報である。又は、フラッシュメモリに書込まれたプログラムの先頭アドレスから所定ビット数をデータ識別情報(旧)とみなしても良い。
書換え対象ECU19は、データ検証値を判定情報とする場合、フラッシュメモリに記憶されているプログラムのブロック毎のCRC値を計算し、受信した差分データに添付されている旧データに対するCRC値(CRC(B1~Bn))及び新データに対するCRC値(CRC(B1’~Bn’)と、その計算したCRC値とを照合し、差分データの整合性を判定する。フラッシュメモリに新プログラムが書込まれていない状態においては、全てのブロックにおいて受信したCRC値と計算したCRC値とが一致することとなる。書換え対象ECU19は、フラッシュメモリのm(<n)ブロックまで新プログラムが書込まれた状態において書込みが中断し、再開する場合においては、ブロック1~mまでは新データに対するCRC値(CRC(B1’~Bn’)と一致するので、書込み処理(S1706,S1707)をスキップする。そして、書換え対象ECU19は、ブロックm+1から、旧データに対するCRC値(CRC(B1~Bn))との一致を見て書込み処理(S1706,S1707)を行う。
尚、差分データには、新プログラム(新データ)のデータ識別情報(新)及びブロック毎のCRC値(CRC(B1‘~Bn’))を添付しておいても良い。書換え対象ECU19は、差分データをフラッシュメモリに書込み、新プログラムのインストールが完了した際、合わせてデータ識別情報(新)も記憶しておき、次回のプログラム更新における整合性判定に用いる。又、書換え対象ECU19は、新プログラムのインストールが完了した際、フラッシュメモリに書込んだ新プログラムをブロック毎に読出してCRC値を計算し、差分データに添付されたCRC値と比較し、正しく書込まれたか否かを検証する。
書換え対象ECU19が2面メモリECUの場合について図183を参照して説明する。この場合も、書換え対象ECU19は、データ検証値を判定情報とする場合、フラッシュメモリに記憶されているプログラムのブロック毎のCRC値を計算し、受信した差分データに添付されている旧データに対するCRC値(CRC(B1~Bn))及び新データに対するCRC値(CRC(B1’~Bn’)と、その計算したCRC値とを照合し、差分データの整合性を判定する。フラッシュメモリに新プログラムが書込まれていない状態においては、全てのブロックにおいて受信したCRC値と計算したCRC値とが一致することとなる。書換え対象ECU19は、フラッシュメモリのm(<n)ブロックまで新プログラムが書込まれた状態において書込みが中断し、再開する場合においては、ブロック1~mまでは新データに対するCRC値(CRC(B1’~Bn’)と一致するので、書込み処理(S1706,S1707)をスキップする。そして、書換え対象ECU19は、ブロックm+1から、旧データに対するCRC値(CRC(B1~Bn))との一致を見て書込み処理(S1706,S1707)を行う。
フラッシュメモリのA面が運用面且つバージョン2.0であり、B面が非運用面かつバージョン1.0であり、差分データはB面をバージョン3.0へ更新するための差分データ(バージョン1.0とバージョン3.0との差分データ)であるとする。CGW13から配信される差分データには、データ識別情報(旧(バージョン1.0)を示す情報)と、旧データ(旧プログラム(バージョン1.0))のブロック毎に計算されたCRC値及び新データ(新プログラム(バージョン3.0))のブロック毎に計算されたCRC値とが添付されている。
又、書換え諸元データには、書換え対象ECU19に対する差分データがフラッシュメモリの何れの面に書込むデータかを示す書換え面情報が含まれている。書換え対象ECU19は、書換え面情報を判定情報とする場合、書換え諸元データから取得した書換え面情報と、書換え対象ECU19の非運用面情報(B面)とを照合し、差分データの整合性を判定する。書換え対象ECU19は、データ識別情報を判定情報とする場合、差分データに添付されているデータ識別情報(旧(バージョン1.0))と、フラッシュメモリの非運用面(B面)に記憶されている旧プログラム(バージョン1.0)のデータ識別情報(旧)とを照合し、差分データの整合性を判定する。書換え対象ECU19は、データ検証値を判定情報とする場合、フラッシュメモリの非運用面(B面)に記憶されている旧プログラム(バージョン1.0)のブロック毎のCRC値を計算し、差分データに添付されているCRC値(CRC(B1~Bn))と、その計算したCRC値とを照合し、差分データの整合性を判定する。
上述した図179及び図180の例では、データ識別情報及びデータ検証値が差分データに添付されており、差分データと共にCGW13から配信されると説明した。しかしながら、これらデータ識別情報及びデータ検証値が差分データのヘッダ情報として添付され、CGW13が差分データを書換え対象ECU19に配信する前に、ヘッダ情報を書換え対象ECU19に配信しても良い。書換え対象ECU19は、ヘッダ情報をCGW13から受信した際、データ識別情報及びデータ検証値を用いて差分データの整合性を判定する。
尚、図179及び図180では、書換えデータが差分データである場合を例に説明したが、全データである場合も同様である。又、書換え対象ECU19が1面単独メモリの場合において、ロールバック用の差分データを用いて元のバージョンに戻す際も同様の整合性判定を行う。
以上に説明したように、書換え対象ECU19は、差分データの整合性判定処理を行うことで、差分データの整合性が正である場合に限って差分データに基づいて生成された書込みデータの書込みを実行し、差分データの整合性が否である場合に差分データに基づいて生成された書込みデータを書込んでしまう事態を未然に回避する。例えばフラッシュメモリのB面が非運用面である書換え対象ECU19に対し、A面に書込むための差分データが配信パッケージに含まれた場合に、差分データをフラッシュメモリに書込む前に不整合を検知することができる。又、他ECU向けの差分データやバージョンが整合しない差分データが自己向けの差分データとして配信パッケージに含まれた場合に、差分データをフラッシュメモリに書込む前に不整合を検知することができる。
尚、書換え対象ECU19は、書込みデータの書込みを中断した後に再開する場合には、フラッシュメモリの格納データに対するデータ検証値と、受信した差分データに付随する旧データのデータ検証値及び新データのデータ検証値に基づいて差分データの整合性を判定する。書換え対象ECU19は、格納データに対するデータ検証値と、受信した新データの検証値とに基づいて差分データの整合性を判定し、その判定結果が否であると判定された最終ブロックからは格納データに対するデータ検証値と受信した旧データのデータ検証値とに基づいて差分データの整合性を判定しても良い。
又、書換え対象ECU19は、差分データの整合性が否であると判定された最終ブロックの少なくとも前段ブロックまでは書込みデータの書込みをスキップし、最終ブロック又は当該終ブロックの後段ブロックから書込みデータの書込みを再開する。ブロックサイズと、書込みデータの書込み領域のデータサイズとが等しい場合には、最終ブロックまでは書込みデータの書込みを完了しているので、最終ブロックまでの書込みをスキップし、最終ブロックの後段ブロックから書込みを再開すれば良い。一方、ブロックサイズと、書込みデータの書込み領域のデータサイズとが等しくない場合には、最終ブロックでは書込みデータの書込みが中断している可能性があるので、最終ブロックから書込みを再開する必要がある。
(18)書換えの実行制御処理
書換えの実行制御処理について図184から図191を参照して説明する。車両用プログラム書換えシステム1は、ECU19において書換えの実行制御処理を行う。
図184に示すように、ECU19は、書換えの実行制御部104において、プログラム実行部104aと、切替え要求受信部104bと、データ取得部104cと、面情報通知部104dと、ファームウェア取得部104eと、インストール実行部104fと、アクティベート実行部104gとを有する。プログラム実行部104aは、運用面のアプリプログラムやパラメータデータを実行中に、運用面の書換えプログラムを実行して非運用面を書換える。切替え要求受信部104bは、CGW13からアクティベート要求を受信する。データ取得部104cは、非運用面のうち書換えを必要とする領域の書込みデータを外部から取得する。面情報通知部104dは、2面書換え情報(以下、面情報と称する)を外部に通知する。ファームウェア取得部104eは、外部から書換えプログラムのファームウェアを取得する。インストール実行部104fは、CGW13からインストールが指示されると、書込みデータをフラッシュメモリに書込み、インストールを実行する。アクティベート実行部104gは、CGW13からアクティベートが指示されると、再起動時に備えて運用面を切替えるアクティベートを実行する。
次に、ECU19における書換えの実行制御部104の作用について図185から図191を参照して説明する。書換え対象ECU19は、書換えの実行制御プログラムを実行し、書換えの実行制御処理を行う。書換え対象ECU19は、書換えの実行制御処理として、通常動作処理、書換え動作処理、情報通知処理、アプリプログラムの検証処理を行う。以下、それぞれの処理について説明する。本実施形態では、書換え対象ECU19が2面メモリECU又は1面サスペンドメモリECUの場合について説明する。
(18-1)通常動作処理
書換え対象ECU19は、IG電源オン等に伴い、停止状態又はスリープ状態から起動状態に移行すると、通常動作処理を開始する。書換え対象ECU19は、通常動作処理を開始すると、A面及びB面の起動面判定情報に基づいて起動面を特定し(S1801)、その起動面で起動する(S1802)。書換え対象ECU19は、起動面(運用面)に記憶されているプログラムの完全性を検証し、起動面が正であるか否かを判定する(S1803)。
書換え対象ECU19は、起動面の完全性の検証結果が否であると判定し、起動面が否であると判定すると(S1803:NO)、起動面の完全性の検証結果が否である旨を示すエラー情報をCGW13に送信し(S1804)、通常動作処理を終了する。CGW13は、書換え対象ECU19からエラー情報を受信すると、そのエラー情報をDCM12に送信する。DCM12は、CGW13からエラー情報を受信すると、その受信したエラー情報をセンター装置3にアップロードする。即ち、書換え対象ECU19において起動面の完全性の検証結果が否であると判定すると、その旨がCGW13、DCM12、センター装置3に通知される。
書換え対象ECU19は、起動面の完全性の検証結果が正であると判定し、起動面が正であると判定すると(S1803:YES)、書換え面(非運用面)に記憶されているプログラムの完全性を検証し、書換え面が正であるか否かを判定する(S1805)。
書換え対象ECU19は、書換え面の完全性の検証結果が否であると判定し、書換え面が否であると判定すると(S1805:NO)、書換え面の完全性の検証結果が否である旨を示すエラー情報をCGW13に送信する(S1806)。CGW13は、書換え対象ECU19からエラー情報を受信すると、そのエラー情報をDCM12に送信する。DCM12は、CGW13からエラー情報を受信すると、その受信したエラー情報をセンター装置3にアップロードする。即ち、書換え対象ECU19において書換え面の完全性の検証結果が否であると判定すると、その旨がCGW13、DCM12、センター装置3に通知される。
上述した完全性検証の処理は、アプリプログラムを実行する前にブートプログラムが実行する。書換え対象ECU19は、完全性検証を終了すると、ブートベクタテーブルの配置アドレスを特定し(S1807)、通常時ベクタテーブルの配置アドレスを特定し(S1808)、アプリプログラムの先頭アドレスを特定し(S1809)、アプリプログラムを実行し、通常動作処理を終了する。
(18-2)書換え動作処理
書換え対象ECU19は、CGW13から書換え要求を受信すると、書換え動作処理を開始する。書換え対象ECU19は、書換え動作処理を開始すると、CGW13との間でセキュリティアクセス鍵を用いて認証を行う(S1811)。書換え対象ECU19は、認証結果が正であると判定すると(S1812:YES)、書込みデータの受信を待機する(S1813)。書換え対象ECU19は、CGW13から書込みデータを受信したと判定すると(S1813:YES)、起動面(運用面)に配置されているアプリプログラムを実行したまま、書換え面(非運用面)に配置されているアプリプログラムを書換える(S1814)。
書換え対象ECU19は、アプリプログラムの書換えを完了したか否かを判定し(S1815)、アプリプログラムの書換えを完了したと判定すると(S1815:YES)、ベリファイが正であるか否かを判定する(S1816)。書換え対象ECU19は、ベリファイが正であると判定すると(S1816:YES)、書換え完了フラグを「OK」に設定する(S1817)。ベリファイとは、非運用面に書込んだアプリプログラムの完全性検証である。
書換え対象ECU19は、CGW13からアクティベート要求を受信したか否かを判定する(S1818)。書換え対象ECU19は、CGW13からアクティベート要求を受信したと判定すると(S1818:YES)、例えば書換え面の起動面情報の数値をインクリメントし、書換え面の起動面情報を更新する(S1819)。即ち、これ以降はこの書換え面で起動することを示す情報に更新する。書換え対象ECU19は、CGW13からバージョン読出信号を受信したか否かを判定し(S1820)、バージョン読出信号を受信したと判定すると(S1820:YES)、運用面のバージョン情報、非運用面のバージョン情報、何れの面が運用面であるかを特定可能な識別情報をCGW13に送信し(S1821)、書換え動作処理を終了する。ここで、書換え対象ECU19は、S1811からS1821までの全ての処理を切替え前の運用面(旧面)のアプリプログラムが実行しても良い。又、書換え対象ECU19は、S1811からS1819までの処理を切替え前の運用面(旧面)のアプリプログラムが実行し、S1819を行った後に再起動することで、S1820からS1821までの処理を切替え後の運用面(新面)のアプリプログラムが実行しても良い。
(18-3)情報通知処理
書換え対象ECU19は、停止状態又はスリープ状態から起動状態に移行する、又は例えばIG電源がオンになったりCGW13から通知要求を受信したりすると、情報通知処理を開始する。書換え対象ECU19は、情報通知処理を開始すると、運用面や非運用面に関するアプリプログラムやパラメータデータを一意に特定可能な識別情報と、運用面や非運用面のメモリ上の配置場所を一意に特定可能な識別情報とをCGW13に通知する。即ち、書換え対象ECU19は、起動面に関する起動面情報を取得し(S1831)、その起動面情報をCGW13に送信する(S1832)。書換え対象ECU19は、起動面情報として、A面及びB面のうち何れの面が起動面であるかの情報及び起動面のバージョン情報等をCGW13に送信する。
書換え対象ECU19は、起動面情報のCGW13への送信を完了すると、書換え面に関する書換え面情報(以下、面情報とも称する)を取得し(S1833)、その取得した書換え面情報をCGW13に送信する(S1834)。書換え対象ECU19は、書換え面情報として、A面及びB面のうち何れの面が書換え面であるかの情報及び書換え面のバージョン情報等をCGW13に送信する。書換え対象ECU19は、書換え面情報のCGW13への送信を完了すると、メモリ上の起動面及び書換え面の配置アドレスを特定可能な識別情報をCGW13に送信し(S1835)、情報通知処理を終了する。書換え対象ECU19は、アドレスを特定可能な識別情報として例えばフラッシュメモリにおけるA面の開始アドレスと終了アドレス及びB面の開始アドレスと終了アドレスをCGW13に送信する。
(18-4)書換えプログラムの検証処理
書換え対象ECU19は、書換えプログラムの検証処理を開始すると、書換えプログラムを実行するためのアドレスを特定可能な識別情報を取得したか否かを判定する(S1841)。書換え対象ECU19は、書換えプログラムを実行するためのアドレスを特定可能な識別情報を取得したと判定すると(S1841:YES)、その識別情報と書換え対象ECU19の起動面情報とが一致しているか否かを判定する(S1842)。具体的には、書換え対象ECU19は、起動面情報のうちの起動面を示す面情報と、その識別情報とが一致しているか否かを判定する。
書換え対象ECU19は、識別情報と書換え対象ECU19の起動面情報とが一致していると判定すると(S1842:YES)、書換えプログラムを取得し(S1843)、アプリプログラムの書換えを行うためのアドレスを特定可能な識別情報を取得したか否かを判定する(S1844)。ここで、書換え対象ECU19は、書換えプログラムが予めフラッシュメモリに組込まれている組込み型の構成であれば、S1843において、起動面の書込みプログラムをフラッシュメモリから取得してRAM上にて実行する。書換え対象ECU19は、書換えプログラムが予めフラッシュメモリに組込まれておらず、書換えプログラムを外部からダウンロードするダウンロード型の構成であれば、S1843において、書換えプログラムをRAMにダウンロードして実行する。
書換え対象ECU19は、アプリプログラムの書換えを行うためのアドレスを特定可能な識別情報を取得したと判定すると(S1844:YES)、その識別情報と書換え対象ECU19の起動面情報とが一致しているか否かを判定する(S1845)。具体的には、書換え対象ECU19は、起動面情報のうちの非起動面を示す面情報と、その識別情報とが一致しているか否かを判定する。書換え対象ECU19は、識別情報とECU19の起動面情報とが一致していると判定すると(S1845:YES)、アプリプログラムの書換えを行い(S1846)、書換えプログラムの検証処理を終了する。
書換え対象ECU19は、識別情報とECU19の起動面情報が一致していないと判定すると(S1842:NO)、又は識別情報と書換え対象ECU19の起動面情報とが一致していないと判定すると(S1845:NO)、運用面や非運用面で実行可能なアプリプログラムやパラメータデータでないと判定し、否定応答をCGW13に送信し(S1847)、書換えプログラムの検証処理を終了する。例えばフラッシュメモリのA面が運用面であり且つB面が非運用面である2面メモリECUの場合、書換えプログラムを実行するためのアドレスは運用面であるA面のアドレスであり、アプリプログラムの書換えを行うためのアドレスは非運用面であるB面のアドレスである。
尚、書換え対象ECU19は、図186に示すように、CGW13から書込みデータを取得する前に、CGW13からアドレスを特定可能な識別情報を取得しても良い。又、書換え対象ECU19は、図187に示すように、CGW13から書込みデータを取得する際にアドレスを特定可能な識別情報を取得しても良い。書換え対象ECU19は、例えば書込みデータを取得する前にCGW13から書換え諸元データを受信し、書換え面情報を取得する。書換え面情報には、何れの面が起動面であり、何れの面が書換え面であるかを識別可能なデータが含まれているので、その識別可能なデータを、アドレスを特定可能な識別情報として用いる。
又、書換え対象ECU19は、CGW13がインストール指示処理を行うことに応じて前述した(18-2)書換え動作処理を行う。ここで、CGW13が行うインストール指示処理について説明する。
CGW13は、インストール指示処理を開始すると、書換え諸元データを識別し(S1851)、書換え対象ECU19の全てについて駐車中のインストールが指定されているか、書換え対象ECU19の全てについて車両走行中のインストールが指定されているか、書換え対象ECU19のメモリ種別毎にインストールが指定されているか否かを判定する(S1852~S1854)。
CGW13は、書換え対象ECU19の全てについて駐車中のインストールが指定されていると判定すると(S1852:YES)、インストールの承諾が得られており、且つ駐車中であることを条件とし、インストールを書換え対象ECU19に指示する(S1855)。CGW13は、書換え対象ECU19の全てについて車両走行中のインストールが指定されていると判定すると(S1853:YES)、インストールの承諾が得られており、且つ車両走行中であることを条件とし、インストールを書換え対象ECU19に指示する(S1856)。
CGW13は、書換え対象ECU19のメモリ種別毎にインストールが指定されていると判定すると(S1854:YES)、書換え諸元データによりメモリ種別が2面メモリであるか、1面サスペンドメモリ又は1面単独メモリであるかを判定する(S1857,S1858)。
CGW13は、書換え対象ECU19のメモリ種別が2面メモリであり、第1所定条件を満たすと判定すると(S1857:YES)、インストールの承諾が得られており、且つ車両走行中であることを条件とし、インストールを書換え対象ECU19に指示する(S1859)。CGW13は、書換え対象ECU19のメモリ種別が1面サスペンドメモリ又は1面単独メモリであり、第2所定条件を満たすと判定すると(S1858:YES)、インストールの承諾が得られており、且つ駐車中であることを条件とし、インストールを書換え対象ECU19に指示する(S1860)。
CGW13は、全ての書換え対象ECU19においてインストールが完了したか否かを判定し(S1861)、全ての書換え対象ECU19においてインストールが完了していないと判定すると(S1861:NO)、ステップS1851に戻り、ステップS1851以降を繰返す。
即ち、CGW13は、書換え対象ECU19が2面メモリECUであれば、車両が走行可能中にインストールを指示する。2面メモリECUは、車両が走行可能中にCGW13からインストールが指示されることで、車両が走行可能中にインストールを行う(インストール実行手順に相当する)。CGW13は、書換え対象ECU19が1面サスペンドメモリECUや1面単独メモリECUであれば、駐車中にインストールを指示する。1面サスペンドメモリECUや1面単独メモリECUは、駐車中にCGW13からインストールが指示されることで、駐車中にインストールを行う(インストール実行手順に相当する)。
CGW13は、全ての書換え対象ECU19においてインストールが完了したと判定すると(S1861:YES)、駐車中であるか否かを判定し(S1862)、駐車中であると判定すると(S1862:YES)、駐車中にアクティベートを書換え対象ECU19に指示し(S1863)、インストール指示処理を終了する。書換え対象ECU19は、駐車中にCGW13からアクティベートが指示されることで、アクティベートを行う(アクティベート実行手順に相当する)。
以上に説明したように、書換え対象ECU19は、書換えの実行制御処理を行うことで、データ格納面を複数面で持つ構成において、運用面のアプリプログラムを実行中に、運用面の書換えプログラムを実行して非運用面を書換える。アプリプログラムを書換え可能な期間が駐車状態に限定されず、車両走行中でもアプリプログラムを書換えることができる。書換え対象ECU19は、2面メモリECUであれば、車両が走行可能中にCGW13からインストールが指示されることで、車両が走行可能中にインストールを行うことができる。書換え対象ECU19は、1面サスペンドメモリECUや1面単独メモリECUであれば、駐車中にCGW13からインストールが指示されることで、駐車中にインストールを行うことができる。
(19)セッションの確立処理
セッションの確立処理について図192から図205を参照して説明する。車両用プログラム書換えシステム1は、書換え対象ECU19においてセッションの確立処理を行う。
図192に示すように、ECU19は、セッションの確立部105において、アプリ実行部105aと、無線書換え要求特定部105bと、有線書換え要求特定部105cとを有する。アプリ実行部105aは、各プログラムの実行を調停する機能を有する。無線書換え要求特定部105bは、無線を介したプログラム書換え要求を特定する機能を有する。有線書換え要求特定部105cは、有線を介したプログラム書換え要求を特定する機能を有する。
図193は、フラッシュメモリに記憶される各プログラムの構成を示す。車両制御プログラムは、ECU19自身に搭載されている車両制御機能(例えばステアリング制御機能)を実現するためのプログラムである。有線診断プログラムは、車両外部から有線を介してECU19自身の診断を行うためのプログラムである。無線診断プログラムは、車両外部から無線を介してECU19自身の診断を行うためのプログラムである。無線書換えプログラムは、車両外部から無線を介して取得されたプログラムの書換えを行うためのプログラムである。有線書換えプログラムは、車両外部から有線を介して取得されたプログラムの書換えを行うためのプログラムである。車両制御プログラムは、アプリ領域に第1プログラムとして配置される。有線診断プログラム及び有線書換えプログラムは、アプリ領域に第2プログラムとして配置される。無線診断プログラム及び無線書換えプログラムは、アプリ領域に第3プログラムとして配置される。換言すれば、第2プログラムは、車両制御以外の有線を介した特殊処理を行うプログラムであり、第3プログラムは、車両制御以外の無線を介した特殊処理を行うプログラムである。尚、有線書換えプログラムは、アプリ領域に配置せず、ブート領域に第4プログラムとして配置しても良い。
アプリ実行部105aは、第1プログラムと、第2プログラムと、第3プログラムとを同時に実行可能となるように制御する(非排他制御する)。アプリ実行部105aは、例えば車両制御プログラムと、有線診断プログラムと、無線診断プログラムとを同時に実行可能とする。即ち、アプリ実行部105aは、車両制御と、有線でのECU19の診断と、無線でのECU19の診断とを同時に実行可能とする。同様に、アプリ実行部105aは、車両制御プログラムと、有線診断プログラムと、無線書換えプログラムとを同時に実行可能とし、車両制御プログラムと、有線書換えプログラムと、無線診断プログラムとを同時に実行可能とし、車両制御プログラムと、有線書換えプログラムと、無線書換えプログラムとを同時に実行可能とするように制御する。
一方、アプリ実行部105aは、第2プログラム内の各プログラムを同時に実行不能となるよう排他制御する。同様に、第3プログラム内の各プログラムを同時に実行不能となるよう排他制御する。アプリ実行部105aは、例えば有線診断プログラムと、有線書換えプログラムとを排他制御し、無線診断プログラムと、無線書換えプログラムとを排他制御する。即ち、アプリ実行部105aは、有線を介した特殊処理のうち一のプログラムのみを実行する。同様に、アプリ実行部105aは、無線を介した特殊処理のうち一のプログラムのみを実行する。
無線書換えプログラムは、換言すれば、無線診断プログラムの内部に配置されており、無線診断プログラムの一部として組込まれているとも言える。即ち、アプリ実行部105aは、無線書換えプログラムが無線診断プログラムの内部に配置されている構成により、車両制御プログラム及び有線診断プログラムを実行中に後述するようにデフォルトセッション又は無線診断セッションから無線書換えセッションへ状態遷移されると、車両制御プログラム及び有線診断プログラムの実行を継続したまま、無線書換えプログラムを実行するように制御する。アプリ実行部105aは、車両制御プログラム及び有線診断プログラムの実行を継続したまま、無線書換えプログラムの実行を開始することで、車両制御プログラムと、有線診断プログラムと、無線書換えプログラムとを同時に実行可能とする。即ち、アプリ実行部105aは、車両制御と、有線でのECU19の診断と、無線でのアプリプログラムの書換えとを同時に実行可能となるように制御する。
ここで、診断処理や書換え処理の具体的な内容によっては、有線での診断と無線での診断及び有線での書換えと無線での書換えが同時に実行できない状況が生じる。例えば有線での書換えと無線での書換えとが同じ領域を書換える場合、両者の処理が衝突する。そのため、アプリ実行部105aは、処理や要求の具体内容に応じて有線診断プログラムと無線診断プログラムとを排他制御し、又、有線書換えプログラムと無線書換えプログラムとを排他制御する。又、診断処理の内容によっては、通常の車両制御が継続できない場合も生じ得る。例えばECUを動作させてその結果を読み出す診断処理の場合、通常の車両制御と同時に実行不能となる。その場合、アプリ実行部105aは、車両制御プログラムを待機させ、有線又は無線診断プログラムを実行する、という調停制御を行う。
一方、有線書換えプログラムをアプリ領域に配置せず、ブート領域に第4プログラムとして配置した場合、アプリ実行部105aは、上述とは一部異なる調停制御を行う。有線書換えプログラムは、図193に破線で示すように、有線診断プログラムの外部に第4プログラムとして配置されており、有線診断プログラムの一部として組込まれていない。この場合、アプリ実行部105aは、第4プログラムを実行する際は、第1~第3プログラムを終了するよう排他制御を行う。即ち、アプリ実行部105aは、第1~第3プログラムを実行するモードから第4プログラムを実行する専用モードに切り替える。換言すれば、有線書換えプログラムは、有線書換えプログラムが有線診断プログラムの外部に配置されている構成により、車両制御プログラム及び無線診断プログラムを実行中に後述するように有線診断セッションから有線書換えセッションへ状態遷移されると、車両制御プログラム及び無線診断プログラムの実行を停止し、有線書換えプログラムの実行を開始するように制御する。アプリ実行部105aは、車両制御プログラム及び無線診断プログラムの実行を停止し、有線書換えプログラムの実行を開始することで、車両制御プログラムと、無線診断プログラムと、有線書換えプログラムとを同時に実行可能とせず、有線書換えプログラムのみを実行可能とする。即ち、アプリ実行部105aは、車両制御と、無線でのECU19の診断と、有線でのアプリプログラムの書換えとを同時に実行可能とせず、有線でのアプリプログラムの書換えのみを実行可能となるように制御する。
図194に示すように、アプリ実行部105aは、有線での特殊処理に関する第1状態として、デフォルトの状態(デフォルトセッション)、有線診断の状態(有線診断セッション)、有線書換えの状態(有線書換えセッション)を管理する。又、無線での特殊処理に関する第2状態として、デフォルトの状態(デフォルトセッション)、無線書換えの状態(無線書換えセッション)を管理し、動作の内部状態を管理している。
アプリ実行部105aは、第1状態の状態遷移として、診断通信規格に準拠して車両制御を可能なデフォルトセッションと、車両外部から有線を介してECU19の診断を可能な有線診断セッションと、車両外部から有線を介して取得したアプリプログラムの書換えを可能な有線書換えセッションとを排他的に状態遷移させる。セッションを排他的に状態遷移させることは、セッションを同時に確立不能とすることであり、セッションを非排他的に状態遷移させることは、セッションを同時に確立可能とすることである。
第1状態におけるデフォルトセッションとは、有線での特殊処理が行われていない状態を示すモードであり、車両制御を実行可能な状態である。デフォルトセッションは、車両制御に全く影響を与えない処理、例えば、車両制御に関わらない診断プログラムを実行しても良いモードであるとも言える。車両制御に関わらない診断プログラムとは、故障コード等の情報の読出し等を行うためのプログラムである。有線診断セッションは、ECU19の診断に関わる診断プログラムを実行するモードである。少なくとも、診断プログラムを実行することにより車両制御に影響を与え得る状態となる場合は、デフォルトセッションから有線診断セッションに移行させる。ECU19の診断に関わる診断プログラムとは、通信停止、ダイアグマスク、アクチュエータ駆動等を行うためのプログラムである。有線書換えセッションは、車両外部から有線を介して取得されたアプリプログラムの書換えを実行するモードである。
アプリ実行部105aは、第1状態においてセッションの状態遷移を以下のように行う。アプリ実行部105aは、第1デフォルトセッションの状態で有線での診断要求が発生すると、診断セッション移行要求により第1デフォルトセッションから有線診断セッションに移行させ、有線での診断処理を実行する。アプリ実行部105aは、有線診断セッションの状態でセッション復帰要求が発生する、タイムアウトが発生する、電源がオフになる又は法規サービスを受信すると、有線診断セッションから第1デフォルトセッションに移行させる。アプリ実行部105aは、第1デフォルトセッションの状態で有線書換え要求が発生すると、診断セッション移行要求により第1デフォルトセッションから有線診断セッションに移行させた後に、書換えセッション移行要求により有線診断セッションから有線書換えセッションに移行させ、有線書換え処理を実行する。アプリ実行部105aは、有線書換えセッションの状態でセッション復帰要求が発生する、タイムアウトが発生する、電源がオフになる又は法規サービスを受信すると、有線書換えセッションから第1デフォルトセッションに移行させる。又、アプリ実行部105aは、セッション維持要求により現在のセッションを移行させずに維持させる。
アプリ実行部105aは、第2状態の状態遷移として、診断通信規格に準拠して車両制御を可能なデフォルトセッションと、車両外部から無線を介して取得したアプリプログラムの書換えに関わる無線書換えセッションとを排他的に状態遷移させる。無線書換えセッションは、車両外部から無線を介して取得されたアプリプログラムの書換えを実行するモードである。
アプリ実行部105aは、第2状態においてセッションの状態遷移を以下のように行う。アプリ実行部105aは、第2デフォルトセッションの状態で無線書換え要求が発生すると、書換えセッション移行要求により第2デフォルトセッションから無線書換えセッションに移行させ、無線書換え処理を実行する。アプリ実行部105aは、無線書換えセッションの状態でセッション復帰要求が発生する、タイムアウトが発生する又は電源がオフになると、無線書換えセッションから第2デフォルトセッションに移行させる。又、アプリ実行部105aは、セッション維持要求により現在のセッションを移行させずに維持させる。
アプリ実行部105aは、第1プログラムとして車両制御プログラムを実行しつつ、有線での特殊処理に関する第1状態及び無線での特殊処理に関する第2状態を管理する。アプリ実行部105aは、例えば第1状態及び第2状態ともにデフォルトセッションにおいて、有線診断要求が発生すると、車両制御プログラムを継続させたまま、第1状態を有線診断セッションに移行させ、有線診断プログラムの実行を開始する。この状態において、アプリ実行部105aは、無線書換え要求が発生すると、車両制御プログラム及び有線診断プログラムの実行を継続させたまま、第2状態を無線書換えセッションに移行させ、無線書換えプログラムの実行を開始する。この状態において、アプリ実行部105aは、有線書換え要求が発生すると、例えば無線書換えプログラムの実行を終了し、第2状態をデフォルトセッションに移行させる共に、有線診断プログラムの実行を終了し、第1状態を有線書換えセッションに移行させ、有線書換えプログラムの実行を開始する。アプリ実行部105aは、同じメモリ領域への書込み処理が衝突するのを防ぐべく、第1状態の有線書換えセッションと、第2状態の無線書換えセッションとが、同時に確立しないよう排他的に状態遷移させる(排他的に制御する)。
無線書換え要求特定部105bは、外部から受信した書換え要求の識別情報を判定し、無線書換え要求を特定する。即ち、センター装置3からDCM12にリプログデータがダウンロードされ、CGW13がDCM12から転送されたリプログデータを書換え対象ECU19に配信すると、無線書換え要求特定部105bは、CGW13からリプログデータと共に無線書換え要求を示す識別情報を受信することで、無線書換え要求を特定する。
有線書換え要求特定部105cは、外部から受信した書換え要求の識別情報を判定し、有線書換え要求を特定する。即ち、ツール23がDLCコネクタ22に接続され、CGW13がツール23から転送されたリプログデータを書換え対象ECU19に配信すると、有線書換え要求特定部105cは、CGW13からリプログデータと共に有線書換え要求を示す識別情報を受信することで、有線書換え要求を特定する。
識別情報は、例えば有線書換え要求と無線書換え要求とで異なる識別IDに該当する情報であっても良いし、有線書換え要求と無線書換え要求とで同じ識別IDであるが異なるデータに該当する情報であっても良い。即ち、有線書換え要求と無線書換え要求とを識別可能であれば、どのような情報であっても良い。
アプリ実行部105aにおいて、図194では、無線での特殊処理に関する第2状態として、デフォルトセッション、及び無線書換えセッションの2つの状態を管理する構成を説明したが、図195及び図196に示すように、第2状態として、デフォルトセッション、無線診断セッション及び無線書換えセッションの3つの状態を管理する構成でも良い。無線診断セッションは、車両外部から無線を介してECU19の診断を行うための無線診断プログラムを実行するモードである。少なくとも、車両制御に影響を与え得る無線診断プログラムを実行する場合は、無線診断セッションに移行させる。
図195に示す構成の場合には、アプリ実行部105aは、第2状態の状態遷移を以下のように行う。アプリ実行部105aは、第2デフォルトセッションの状態で無線での診断要求が発生すると、診断セッション移行要求により第2デフォルトセッションから無線診断セッションに移行させ、無線診断処理を実行する。アプリ実行部105aは、無線診断セッションの状態でセッション復帰要求が発生する、タイムアウトが発生する、電源がオフになると、無線診断セッションから第2デフォルトセッションに移行させる。アプリ実行部105aは、第2デフォルトセッションの状態で無線書換え要求が発生すると、診断セッション移行要求により第2デフォルトセッションから無線診断セッションに移行させた後に、書換えセッション移行要求により無線診断セッションから無線書換えセッションに移行させ、無線書換え処理を実行する。アプリ実行部105aは、無線書換えセッションの状態でセッション復帰要求が発生する、タイムアウトが発生する、電源がオフになると、無線書換えセッションから第2デフォルトセッションに移行させる。
図196に示す構成の場合には、アプリ実行部105aは、第2状態の状態遷移を以下のように行う。アプリ実行部105aは、第2デフォルトセッションの状態で無線での診断要求が発生すると、診断セッション移行要求により第2デフォルトセッションから無線診断セッションに移行させ、無線診断処理を実行する。アプリ実行部105aは、無線診断セッションの状態でセッション復帰要求が発生する、タイムアウトが発生する、電源がオフになると、無線診断セッションから第2デフォルトセッションに移行させる。アプリ実行部105aは、第2デフォルトセッションの状態で無線書換え要求が発生すると、診断セッション移行要求により第2デフォルトセッションから無線診断セッションに移行させた後に、書換えセッション移行要求により無線診断セッションから無線書換えセッションに移行させるか、又は書換えセッション移行要求により第2デフォルトセッションから無線書換えセッションに移行させ、無線書換え処理を実行する。アプリ実行部105aは、無線書換えセッションの状態でセッション復帰要求が発生する、タイムアウトが発生する、電源がオフになると、無線書換えセッションから第2デフォルトセッションに移行させる。
尚、第1状態の有線診断セッションと第2状態の無線診断セッションとは、同じ診断プログラムを実行するものであっても良いし、異なる診断プログラムを実行するものであっても良い。第1状態の有線書換えセッションと第2状態の無線書換えセッションとは、同じ書換えプログラムを実行するものであっても良いし、異なる書換えプログラムを実行するものであっても良い。例えばメモリの消去や書込み等、共通する書換えプログラムを実行するものであっても良い。
図195及び図196に示した構成において、第1状態の各セッションと第2状態の各セッションの調停について説明する。図193で説明したように、有線診断プログラムが第2プログラムとしてアプリ領域に配置され、無線診断プログラムと無線書換えプログラムとが第3プログラムとしてアプリ領域に配置され、有線診断プログラムが第4プログラムとしてブート領域に配置される場合について説明する。換言すれば、無線書換えプログラムが無線診断プログラムの一部として組込まれている一方で有線書換えプログラムが有線診断プログラムの一部として組込まれていない構成についての説明である。この場合、第1状態及び第2状態の各セッションにおけるプログラム実行の調停は、図197に示す通りになる。
第2状態が無線書換えセッションであり、且つ第1状態がデフォルトセッションの場合、アプリ実行部105aは、車両制御プログラムを実行させつつ、無線書換えプログラムを実行させる。第2状態が無線書換えセッションであり、且つ第1状態が有線診断セッションの場合、アプリ実行部105aは、車両制御プログラムを実行させつつ、無線書換えプログラム、及び有線診断プログラムを同時に実行させる。
一方、第1状態が有線書換えセッションであり、且つ第2状態がデフォルトセッションの場合、アプリ実行部105aは、車両制御プログラムを終了させ、有線書換えプログラムのみを実行させる。第1状態が有線書換えセッションであり、且つ第2状態が無線診断セッションの場合、アプリ実行部105aは、無線診断プログラム及び車両制御プログラムを終了させ、有線書換えプログラムのみを実行させる。即ち、アプリ実行部105aは、第4プログラムである有線書換えプログラムのみを実行する専用モードとして、第1~第3プログラムを排他制御する。
尚、有線診断プログラム及び有線書換えプログラムが第2プログラムとしてアプリ領域に配置される構成では、各プログラムの調停が図197とは一部相異する。即ち、無線書換えプログラムが無線診断プログラムの一部として組込まれている共に有線書換えプログラムが有線診断プログラムの一部として組込まれている構成では、第1状態及び第2状態の各セッションにおけるプログラム実行の調停は、図198に示す通りになる。この場合において、第1状態が有線書換えセッションであり、且つ第2状態がデフォルトセッションの場合、アプリ実行部105aは、車両制御プログラムを実行させつつ、有線書換えプログラムを実行させる。第1状態が有線書換えセッションであり、且つ第2状態が無線診断セッションの場合、アプリ実行部105aは、車両制御プログラムを実行させつつ、有線書換えプログラム及び無線診断プログラムを同時に実行させる。
次に、上記した構成の作用について図199から図203を参照して説明する。ECU19において、マイコン33は、セッションの確立プログラムを実行し、セッションの確立処理を行う。
マイコン33は、電源投入を検知して起動すると、セッション確立プログラムを実行して状態遷移管理処理を行い、第1状態の状態遷移を管理する状態遷移管理処理と、第2状態の状態遷移を管理する状態遷移管理処理とを行う。以下、それぞれの状態遷移管理処理について説明する。尚、ここでは、アプリ実行部105aが第2状態を図194に示す構成、即ち、無線診断セッションを有しない構成により管理する場合を説明する。
(19-1)第1状態の状態遷移管理処理
マイコン33は、電源投入を検知して起動し、第1状態の状態遷移管理処理を開始すると、書換え完了フラグを判定し、前回のアプリプログラムの書換えを正常に完了したか否かを判定する(S1901)。マイコン33は、書換え完了フラグが正であると判定し、前回のアプリプログラムの書換えを正常に完了したと判定すると(S1901:YES)、第1状態をデフォルトセッションに移行させる(S1902)。即ち、マイコン33は、第1状態をデフォルトセッションに移行させることで、車両制御処理を開始する。
マイコン33は、車両制御プログラムを実行させて車両制御処理を開始すると、車両制御処理を実行中に、有線診断要求が発生したか否かを判定し(S1903)、有線書換え要求が発生したか否かを判定し(S1904)、状態遷移管理の完了条件の成立を判定する(S1905)。マイコン33は、車両制御処理を実行中に、有線診断要求が発生したと判定すると(S1903:YES)、第1状態をデフォルトセッションから有線診断セッションに移行させ(S1906)、有線診断プログラムを実行させて有線診断処理を開始する(S1907)。マイコン33は、有線診断処理の完了条件の成立を判定し(S1908)、有線診断処理の完了条件が成立したと判定すると(S1908:YES)、有線診断プログラムを終了させて有線診断処理を終了し(S1909)、第1状態を有線診断セッションからデフォルトセッションに移行させる(S1910)。
マイコン33は、車両制御処理を実行中に、有線書換え要求が発生したと判定すると(S1904:YES)、有線書換え要求発生時の書換え排他処理を開始する(S1911)。即ち、有線書換え処理と無線書換え処理とが衝突しないよう、排他制御を行うための処理である。マイコン33は、有線書換え要求発生時の書換え排他処理を開始すると、第2状態において無線書換えセッションに移行中であるか否か、即ち、第2状態が無線書換えセッションであるか否かを判定する(S1921)。マイコン33は、第2状態において無線書換えセッションに移行中でないと判定すると(S1921:NO)、第1状態を有線書換えセッションに移行可能であると特定する(S1922)。マイコン33は、有線書換え要求発生時の書換え排他処理を終了し、第1状態の状態遷移管理処理に復帰する。
マイコン33は、第2状態において無線書換えセッションに移行中であると判定すると(S1921:YES)、有線書換えセッション及び無線書換えセッションの何れを優先して排他制御を行うかを判定する。具体的には、マイコン33は、有線書換えセッション優先条件、無線書換えセッション優先条件、移行中書換えセッション優先条件の何れが成立しているか否かを判定する(S1923~S1925)。有線書換えセッション優先条件は、有線書換えセッションを無線書換えセッションよりも優先する条件である。無線書換えセッション優先条件は、無線書換えセッションを有線書換えセッションよりも優先する条件である。移行中書換えセッション優先条件は、移行中の書換えセッションを優先する、即ち、先に移行していたセッションを優先する条件である。これらの優先条件のうち何れを採用するかは予め設定されており、例えば車両に対して優先条件フラグを設定しても良いし、書換えECU毎に優先条件フラグを設定しても良い。
マイコン33は、有線書換えセッション優先条件が成立していると判定すると(S1923:YES)、第2状態において無線書換えセッションをセッション復帰要求によりデフォルトセッションに移行させて無線書換えを中断させ(S1926)、第1状態を有線書換えセッションに移行可能であると特定する(S1922)。マイコン33は、デフォルトセッション移行に伴い、無線書換えプログラムを終了させる。マイコン33は、有線書換え要求発生時の書換え排他処理を終了し、第1状態の状態遷移管理処理に復帰する。
マイコン33は、無線書換えセッション優先条件が成立していると判定すると(S1924:YES)、有線書換え要求を廃棄して無線書換えを継続させる(S1927)。即ち、マイコン33は、第2状態を無線書換えセッションで維持し、無線書換えプログラムの実行を継続し、第1状態を有線書換えセッションに移行不能であると特定する(S1928)。マイコン33は、有線書換え要求発生時の書換え排他処理を終了し、第1状態の状態遷移管理処理に復帰する。
マイコン33は、移行中書換えセッション優先条件が成立していると判定すると(S1925:YES)、この場合も、有線書換え要求を廃棄して無線書換えを継続させる(S1927)。即ち、マイコン33は、第2状態を無線書換えセッションで維持し、無線書換えプログラムの実行を継続し、第1状態を有線書換えセッションに移行不能であると特定する(S1928)。マイコン33は、有線書換え要求発生時の書換え排他処理を終了し、第1状態の状態遷移管理処理に復帰する。マイコン33は、このように有線書換え要求発生時の書換え排他処理を実行することで、有線書換えセッションと、無線書換えセッションとを排他的に制御し、同時にセッション確立しないようにする。
マイコン33は、第1状態の状態遷移管理処理に復帰すると、有線書換え要求発生時の書換え排他処理の結果として有線書換えセッションに移行可能であるか否かを判定する(S1912)。マイコン33は、有線書換え要求発生時の書換え排他処理により有線書換えセッションに移行可能であると特定したことで、移行可能であると判定すると(S1912:YES)、第1状態をデフォルトセッションから有線診断セッションを介して有線書換えセッションに移行させ(S1913)、車両制御処理を中断して有線書換え処理を開始する(S1914)。マイコン33は、有線書換えセッション移行に伴い、車両制御プログラムを終了させる。
マイコン33は、有線書換え処理の完了条件の成立を判定し(S1915)、有線書換え処理の完了条件が成立したと判定すると(S1915:YES)、有線書換え処理を完了し(S1916)、第1状態を有線書換えセッションからデフォルトセッションに移行させる(S1917)。ここで、有線書換え処理の完了条件とは、例えばアプリプログラムの書込みが全て完了し、完全性検証が実行された場合等である。
マイコン33は、有線書換え要求発生時の書換え排他処理により有線書換えセッションに移行不能であると特定したことで、移行可能でないと判定すると(S1912:NO)、第1状態をデフォルトセッションから有線診断セッションを介して有線書換えセッションに移行させない。即ち、マイコン33は、第1状態をデフォルトセッションで維持する。マイコン33は、状態遷移管理の完了条件が成立したと判定すると(S1905:YES)、第1状態の状態遷移管理処理を完了する。
尚、以上は、マイコン33は、有線書換え要求発生時の書換え排他処理において、第2状態において無線書換えセッションに移行中であると判定し、有線書換えセッション優先条件が成立していると判定すると、第2状態において無線書換えを中断させる場合を説明したが、無線書換えの未書換え残量に応じて無線書換えセッションを中断させるか否かを判定しても良い。
マイコン33は、第2状態において無線書換えセッションに移行中であると判定し(S1921:YES)、有線書換えセッション優先条件が成立していると判定すると(S1923:YES)、その移行中の無線書換えセッションにおいて無線書換えの未書換え残量が所定量以上(例えば20%以上)であるか否かを判定する(S1931)。マイコン33は、無線書換えの未書換え残量が所定量以上であると判定すると(S1931:YES)、第2状態を無線書換えセッションからデフォルトセッションに移行させて無線書換えを中断させる(S1926)。マイコン33は、デフォルトセッションへの移行に伴い、無線書換えプログラムを終了させる。マイコン33は、無線書換えの未書換え残量が所定量以上でないと判定すると(S1931:NO)、その有線書換え要求を廃棄して無線書換えを継続させる(S1927)。即ち、マイコン33は、無線書換えを完了するまでの残り時間が比較的長ければ、無線書換えセッションを中断させるが、無線書換えを完了するまでの残り時間が比較的短ければ、無線書換えセッションを中断させずに継続させる。
(19-2)第2状態の状態遷移管理処理
マイコン33は、電源投入を検知して起動し、第2状態の状態遷移管理処理を開始すると、書換え完了フラグを判定し、前回のアプリプログラムの書換えを正常に完了したか否かを判定する(S1941)。マイコン33は、書換え完了フラグが正であると判定し、前回のアプリプログラムの書換えを正常に完了したと判定すると(S1941:YES)、第2状態をデフォルトセッションに移行させる(S1942)。即ち、マイコン33は、第2状態をデフォルトセッションに移行させることで、車両制御プログラムを実行し、車両制御処理を開始する。
マイコン33は、車両制御処理を開始すると、無線書換え要求が発生したか否かを判定し(S1943)、状態遷移管理の完了条件の成立を判定する(S1944)。マイコン33は、車両制御処理を実行中に、無線書換え要求が発生したと判定すると(S1943:YES)、無線書換え要求発生時の書換え排他処理を開始する(S1944)。マイコン33は、無線書換え要求発生時の書換え排他処理を開始すると、第1状態において有線書換えセッションに移行中であるか否か、即ち、第1状態が有線書換えセッションであるか否かを判定する(S1961)。マイコン33は、第1状態において有線書換えセッションに移行中でないと判定すると(S1961:NO)、無線書換えセッションに移行可能であると特定する(S1962)。マイコン33は、無線書換え要求発生時の書換え排他処理を終了し、第2状態の状態遷移管理処理に復帰する。
マイコン33は、第1状態において有線書換えセッションに移行中であると判定すると(S1961:YES)、有線書換えセッション及び無線書換えセッションの何れを優先して排他制御を行うかを判定する。具体的には、マイコン33は、無線書換えセッション優先条件、有線書換えセッション優先条件、移行中書換えセッション優先条件の何れが成立しているか否かを判定する(S1963~S1965)。
マイコン33は、無線書換えセッション優先条件が成立していると判定すると(S1963:YES)、第1状態において有線書換えセッションをセッション復帰要求によりデフォルトセッションに移行させて有線書換えを中断させ(S1966)、第2状態を無線書換えセッションに移行可能であると特定する(S1962)。マイコン33は、デフォルトセッションへの移行に伴い、有線書換えプログラムを終了させる。マイコン33は、無線書換え要求発生時の書換え排他処理を終了し、第2状態の状態遷移管理処理に復帰する。
マイコン33は、有線書換えセッション優先条件が成立していると判定すると(S1964:YES)、無線換え要求を廃棄して有線書換えを継続させる(S1967)。即ち、マイコン33は、第1状態を有線書換えセッションで維持し、有線書換えプログラムの実行を継続させ、第2状態を無線書換えセッションに移行不能であると特定する(S1968)。マイコン33は、無線書換え要求発生時の書換え排他処理を終了し、第2状態の状態遷移管理処理に復帰する。
マイコン33は、移行中書換えセッション優先条件が成立していると判定すると(S1965:YES)、この場合も、無線換え要求を廃棄して有線書換えを継続させる(S1967)。即ち、マイコン33は、第1状態を有線書換えセッションで維持し、有線書換えプログラムの実行を継続させ、第2状態を無線書換えセッションに移行不能であると特定する(S1968)。マイコン33は、無線書換え要求発生時の書換え排他処理を終了し、第2状態の状態遷移管理処理に復帰する。マイコン33は、このように無線書換え要求発生時の書換え排他処理を実行することで、有線書換えセッションと、無線書換えセッションとを排他的に制御し、同時にセッション確立させない。
マイコン33は、第2状態の状態遷移管理処理に復帰すると、無線書換え要求発生時の書換え排他処理の結果として無線書換えセッションに移行可能であるか否かを判定する(S1945)。マイコン33は、無線書換え要求発生時の書換え排他処理により無線書換えセッションに移行可能であると特定したことで、移行可能であると判定すると(S1945:YES)、第2状態をデフォルトセッションから無線書換えセッションに移行させ(S1946)、無線書換えプログラムを実行させて無線書換え処理を開始する(S1847)。マイコン33は、無線書換え処理の完了条件の成立を判定し(S1948)、無線書換え処理の完了条件が成立したと判定すると(S1948:YES)、無線書換え処理を終了し(S1949)、第2状態を無線書換えセッションからデフォルトセッションに移行させる(S1950)。マイコン33は、デフォルトセッションへの移行に伴い、無線書換えプログラムを終了させる。ここで、無線書換え処理の完了条件とは、例えばアプリプログラムの書込みが全て完了し、完全性検証が実行された場合等である。
マイコン33は、無線書換え要求発生時の書換え排他処理により無線書換えセッションに移行不能であると特定したことで、移行可能でないと判定すると(S1945:NO)、第2状態をデフォルトセッションから無線書換えセッションに移行させない。即ち、マイコン33は、第2状態をデフォルトセッションで維持する。マイコン33は、状態遷移管理の完了条件が成立したと判定すると(S1951:YES)、第2状態の状態遷移管理処理を終了する。
以上は、アプリ実行部105aにおいて、有線での特殊処理に関するプログラムと無線での特殊処理に関するプログラムとを独立して(同時に)実行可能である場合を説明したが、図201に示すように、有線診断プログラムと無線診断プログラムとを共通化する構成でも良い。車両制御プログラムを第1プログラムとしてアプリ領域に配置し、診断プログラム(有線診断プログラム及び無線診断プログラム)と、無線書換えプログラムとを第2プログラムとしてアプリ領域に配置する構成である。有線書換えプログラムは、第2プログラムとしてアプリ領域に配置しても良いし、第3プログラムとしてブート領域に配置しても良い。アプリ実行部105aは、第1プログラムと、第2プログラムとを同時に実行させる。即ち、アプリ実行部105aは、車両制御プログラムと、共通化した診断プログラムとを同時に実行可能となるように制御する。一方、アプリ実行部105aは、第2プログラムを構成する各プログラムの実行を排他制御する。即ち、有線診断プログラム、無線診断プログラム、無線書換えプログラム及び有線書換えプログラムのうち何れか1つのみが動作するように制御する。
アプリ実行部105aは、図202に示すように、状態として、デフォルトの状態(デフォルトセッション)、診断の状態(診断セッション)、有線書換えの状態(有線書換えセッション)、無線書換えの状態(無線書換えセッション)を管理し、動作の内部状態を管理することになる。ここで管理される状態は、有線と無線とで状態を独立して管理するものではなく、混在して1つの状態として管理するものである。
この構成においても、アプリ実行部105aは、車両制御プログラムを実行しつつ、診断プログラムの実行を開始する。又、アプリ実行部105aは、車両制御プログラムを実行しつつ、無線書換えプログラムや有線書換えプログラムの実行を開始する。一方、アプリ実行部105aは、無線診断プログラム及び有線診断プログラムの実行を排他的に制御する。又、アプリ実行部105aは、有線診断プログラム及び無線診断プログラムと、有線書換えプログラム及び無線書換えプログラムの実行も排他的に制御する。即ち、アプリ実行部105aは、第2プログラムを構成する各プログラムの実行を排他的に制御する。
ここで、有線書換えプログラムが第3プログラムとしてブート領域に配置される場合、アプリ実行部105aは、第3プログラムと、第1及び第2プログラムとを排他的に実行制御する。即ち、有線書換えプログラムを実行する場合、第1プログラム及び第2プログラムを終了させ、専用モードとして動作させる。
図202に示すように、アプリ実行部105aは、診断要求が発生すると、車両制御プログラムの実行を継続しつつ、診断セッションに移行させ、診断プログラムの実行を開始する。この状態において、アプリ実行部105aは、無線書換え要求が発生すると、診断プログラムを終了させ、無線書換えセッションに移行すると共に、無線書換えプログラムの実行を開始する。車両制御プログラムの実行は継続したままである。一方、有線書換え要求が発生した場合は、アプリ実行部105aは、診断プログラム及び車両制御プログラムを終了させ、有線書換えセッションに移行すると共に、有線書換えプログラムの実行を開始する。
アプリ実行部105aは、無線書換えプログラムが診断プログラムの内部に配置されていても、車両制御プログラム及び診断プログラムを実行中に診断セッションから無線書換えセッションへ状態遷移されると、車両制御プログラム及び診断プログラムの実行を中断してから無線書換えプログラムの実行を開始する。尚、セッションを伴わない場合は処理を継続することが可能である。
アプリ実行部105aは、有線書換えプログラムが診断プログラムの外部に配置されていれば、車両制御プログラム及び診断プログラムを実行中に診断セッションから有線書換えセッションに状態遷移されると、車両制御プログラム及び無線診断プログラムの実行を停止し、有線書換えプログラムが実行を開始する。即ち、アプリ実行部105aは、車両制御と、有線又は無線でのECU19の診断と、有線でのアプリプログラムの書換えとを同時に実行可能とならず、有線でのアプリプログラムの書換えのみを実行可能となる。
以上に説明したように、ECU19は、セッションの確立処理を行うことで、第1状態の状態遷移管理処理と第2状態の状態遷移管理処理を実行し、第1状態と第2状態とおける各セッションの状態遷移を管理し、第1状態のデフォルトセッション又は有線診断セッションと、第2状態の無線書換えセッションとを非排他的に確立するようにした。車両制御又はECU19の診断と、無線でのプログラムの書換えとの要求に対し、車両制御プログラム又はECU19の診断プログラムと、無線書換えプログラムとを非排他的に実行するように制御し、外部からの各種要求に対して適切に調停することができる。
又、ECU19において、有線書換えセッションと、無線書換えセッションとを排他的に確立するようにした。有線書換えプログラムと、無線書換えプログラムとを排他的に実行するように制御し、有線でのプログラムの書換えと、無線でのプログラムの書換えとを適切に調停することができる。
又、ECU19において、有線書換えセッション優先条件が成立していると、有線書換えセッションを無線書換えセッションよりも優先するようにした。有線書換えセッション優先条件を設定しておくことで、有線でのプログラムの書換えを無線でのプログラムの書換えよりも優先して実行することができる。例えばディーラー等で整備者が指示する有線でのプログラムの書換えを、車両のユーザが指示する無線でのプログラムの書換えをよりも優先して実行することができる。
又、ECU19において、無線書換えセッション優先条件が成立していると、無線書換えセッションを有線書換えセッションよりも優先するようにした。無線書換えセッション優先条件を設定しておくことで、無線でのプログラムの書換えを有線でのプログラムの書換えよりも優先して実行することができる。例えば車両のユーザが指示する無線でのプログラムの書換えを、ディーラー等で整備者が指示する有線でのプログラムの書換えよりも優先して実行することができる。
又、ECU19において、移行中書換えセッション優先条件が成立していると、移行中の書換えセッションを優先するようにした。移行中書換えセッション優先条件を設定しておくことで、移行中の書換えを優先して実行することができる。即ち、有線書換え及び無線書換えのうち先に開始した方を中断せず継続させることができる。
アプリ領域を2面で持つ構成において、各アプリ領域に車両制御プログラムと、診断プログラムと、無線書換えプログラムとが配置されている構成とし、車両制御プログラム又は診断プログラムと、無線書換えプログラムとを並列に(同時に)に実行するようにした。フラッシュメモリ30dのメモリ構成を工夫することで、車両制御プログラム又は診断プログラムと、無線書換えプログラムとを並列に実行することができる。
車両制御プログラム又は有線診断プログラムを実行中に無線書換え要求を特定すると、車両制御プログラム又は有線診断プログラムの実行を継続し、無線書換えプログラムを実行するようにした。車両制御プログラム又は有線診断プログラムを実行中に無線書換え要求が発生したときに、車両制御プログラム又は有線診断プログラムと、無線書換えプログラムとを並列に(同時に)実行することができる。
無線書換えプログラムを実行中に車両制御要求又は有線診断要求を特定すると、無線書換えプログラムの実行を継続し、車両制御プログラム又は有線診断プログラムを実行するようにした。無線書換えプログラムを実行中に車両制御要求又は有線診断要求が発生したときに、無線書換えプログラムと、車両制御プログラム又は有線診断プログラムとを並列に(同時に)実行することができる。
車両制御プログラム又は無線診断プログラムを実行中に有線書換え要求を特定すると、車両制御プログラム又は無線診断プログラムの実行を停止し、有線書換えプログラムを実行するようにした。車両制御プログラム又は無線診断プログラムを実行中に有線書換え要求が発生したときに、有線書換えプログラムのみを排他的に実行することができる。
リプログファームウェアが組込まれているリプログファームウェア組込み型の場合に、アプリ領域に配置されているファームウェアを用い、書換えプログラムを実行するようにした。リプログファームウェアを外部からダウンロードすることなく、非運用面のアプリプログラムの書換え処理を実行することができる。
リプログファームウェアを外部からダウンロードするリプログファームウェアダウンロード型の場合に、外部からダウンロードされたファームウェアを用い、書換えプログラムを実行するようにした。アプリ領域における書換えプログラムの容量を低減した上で、非運用面のアプリプログラムの書換え処理を実行することができる。
アプリ領域を実質的な2面で持つ2面メモリについて説明したが、アプリ領域を疑似的な2面で持つ1面サスペンド方式メモリや外付けメモリについても適用することができる。
旧データと差分リプログデータから新データを生成する差分書換えする場合について説明したが、旧データを削除して新データを書込む全書換えする場合についても適用することができる。
ECU19のアプリプログラムを書換える場合について説明したが、CGW13のアプリプログラムを書換える場合についても適用することができる。即ち、CGW13のフラッシュメモリ26dを2面構成としてECU19のフラッシュメモリ30dと同等の構成とし、マイコン26にECU19のマイコン33と同等の機能を持たせても良い。
(20)リトライポイントの特定処理
リトライポイントの特定処理について図206から図210を参照して説明する。車両用プログラム書換えシステム1は、書換え対象ECU19においてリトライポイントの特定処理を行う。リトライポイントとは、書込みデータを複数回に分けて書込む場合において、書込みデータの書込みを中断した場合に、その中断した書込みデータの書込みを途中から再開するために、どこまで処理を完了したかを示す情報である。書込みデータの書込みを中断する場合としては、例えばユーザ操作によるキャンセルが発生した場合、通信途絶等の異常が発生した場合、駐車状態においてイグニッションがオフからオンに切替わった場合等がある。
ECU19において、プログラム書換え部102は、アプリプログラムの書換えに関与する一連の処理を複数の書換えプログラムで分担する。プログラム書換え部102は、第1処理を行う第1書換えプログラムと、第2処理を行う第2書換えプログラムとを有し、それぞれの書換えプログラムを順次実行する。第1書換えプログラムが行う第1処理は、例えばフラッシュメモリのデータを消去するメモリ消去処理、書込みデータを書込むデータ書込み処理等である。第2書換えプログラムが行う第2処理は、例えばベリファイ処理、改ざんチェック処理等である。
図206に示すように、ECU19は、リトライポイントの特定部106において、第1処理フラグ設定部106aと、第2処理フラグ設定部106bと、リトライポイント特定部106cとを有する。第1処理フラグ設定部106aは、プログラム書換え部102が第1書換えプログラムを実行すると、そのプログラム書換え部102が第1書換えプログラムにより第1処理を完了したか否かを判定し、その判定結果を示す第1処理フラグを設定する。第1処理フラグ設定部106aは、プログラム書換え部102が第1処理を完了したと判定すると、第1処理フラグを「OK」に設定する。
第2処理フラグ設定部106bは、プログラム書換え部102が第2書換えプログラムを実行すると、そのプログラム書換え部102が第2書換えプログラムにより第2処理を完了したか否かを判定し、その判定結果を示す第2処理フラグを設定する。第2処理フラグ設定部106bは、プログラム書換え部102が第2処理を完了したと判定すると、第2処理フラグを「OK」に設定する。
リトライポイント特定部106cは、プログラムの書換えに関与する処理の一部が中断された場合において、プログラム書換え部102がアプリプログラムの書換えをリトライする際のリトライポイントを、第1処理フラグ及び第2処理フラグにしたがって特定する。又、リトライポイント特定部106cは、中断時までの更新データの書込み量を記憶しておき、プログラムの書換えに関与する処理を再開する場合において、その記憶している更新データの書込み量に基づく更新データの送信をCGW13に要求する。図207に示すように、第1処理フラグと第2処理フラグは、書換え対象ECU19のフラッシュメモリの同一のブロック内に記憶されている。
次に、書換え対象ECU19におけるリトライポイントの特定部106の作用について図208から図210を参照して説明する。書換え対象ECU19は、リトライポイントの特定プログラムを実行し、リトライポイントの特定処理を行う。書換え対象ECU19は、リトライポイントの特定処理として、処理フラグの設定処理、処理フラグの判定処理行う。以下、それぞれの処理について説明する。
(20-1)処理フラグの設定処理
書換え対象ECU19は、処理フラグの設定処理を開始すると、アプリプログラムの書換え前の事前処理を完了しているか否かを判定する(S2001)。書換え対象ECU19は、アプリプログラムの書換え前の事前処理を完了していると判定すると(S2001:YES)、第1処理フラグを「NG」に設定し、第2処理フラグを「NG」に設定し、記憶する(S2002、第1処理フラグ設定手順、第2処理フラグ設定手順に相当する)。
書換え対象ECU19は、CGW13から書込みデータを受信すると、第1処理を開始し(S2003)、第1処理を完了したか否かを判定する(S2004)。書換え対象ECU19は、第1処理を完了したと判定すると(S2004:YES)、第2処理フラグを「NG」に維持したまま、第1処理フラグを「OK」に設定し、記憶する(S2005、第1処理フラグ設定手順、第2処理フラグ設定手順に相当する)。合わせて、書換え対象ECU19は、フラッシュメモリのどこまで書込みが完了したかを示す書込み完了アドレスを記憶する。
書換え対象ECU19は、CGW13への書込み完了通知等の第2処理を開始し(S2006)、第2処理を完了したか否かを判定する(S2007)。書換え対象ECU19は、第2処理を完了したと判定すると(S2007:YES)、第1処理フラグを「OK」に維持したまま、第2処理フラグを「OK」に設定して記憶し(S2008、第1処理フラグ設定手順、第2処理フラグ設定手順に相当する)、処理フラグの設定処理を終了する。
(20-2)処理フラグの判定処理
書換え対象ECU19は、スリープ又は停止状態から起動した際、処理フラグの判定処理を開始すると、ブートプログラムより起動し(S2011)、第1処理フラグ及び第2処理フラグをフラッシュメモリから読出して判定する(S2012~S2015)。
書換え対象ECU19は、第1処理フラグが「NG」であり、且つ第2処理フラグが「NG」であると判定すると(S2012:YES)、リトライポイントを第1処理の先頭に特定し、第1処理の先頭からのリトライ要求をCGW13に通知し(S2016、リトライポイント特定手順に相当する)、リトライポイントの特定処理を終了する。即ち、書換え対象ECU19は、書込みデータの配信をCGW13に要求する。このとき、書換え対象ECU19がフラッシュメモリから読出した書込み完了アドレスもCGW13に通知することで、CGW13は、分割して配信する書込みデータのうち何れを配信すれば良いか特定する。書換え対象ECU19は、第1処理フラグが「NG」であり、且つ第2処理フラグが「OK」であると判定すると(S2013:YES)、この場合も、リトライポイントを第1処理の先頭に特定し(S2016、リトライポイント特定手順に相当する)、第1処理の先頭からのリトライ要求をCGW13に通知し(S2017)、処理フラグの判定処理を終了する。
書換え対象ECU19は、第1処理フラグが「OK」であり、且つ第2処理フラグが「NG」であると判定すると(S2014:YES)、リトライポイントを第2処理の先頭に特定し(S2018、リトライポイント特定手順に相当する)、第2処理の先頭からのリトライ要求をCGW13に通知し(S2019)、処理フラグの判定処理を終了する。ECU19は、第2処理として例えば何れのアドレスまで書込みが完了したかをCGW13に通知する。
書換え対象ECU19は、第1処理フラグが「OK」であり、且つ第2処理フラグが「OK」であると判定すると(S2015:YES)、アプリプログラムの書換えに関与する処理の完了をCGW13に通知し(S2020)、処理フラグの判定処理を終了する。尚、書換え対象ECU19は、CGW13が書込みデータを分割して配信する場合は、上述したリトライポイントの設定を分割された書込みデータ単位で行う。
以上に説明したように、書換え対象ECU19は、リトライポイントの特定処理を行うことで、第1処理が完了したか否かを示す第1処理フラグを設定し、第2処理が完了したか否かを示す第2処理フラグを設定し、リトライポイントを第1処理フラグ及び第2処理フラグにしたがって特定する。例えば第1処理が完了し、且つ第2処理が完了していない状態で書換え対象ECU19が再起動された場合において、同じ書込みデータを再度書込むことを抑制することができる。
尚、書換え対象ECU19は、書込みを完了した書込みデータのデータ量、即ち、書込みデータの書込みを何バイトまで完了したかを記憶しておき、書込みデータの書込みを再開する場合には、何バイト目の書込みデータから送信するようにCGW13に対して要求する。書換え対象ECU19が書込みデータの書込みを何バイトまで完了したかを記憶しておき、再開する場合には、何バイト目の書込みデータから送信するようにCGW13に対して要求することで、再開時において、CGW13は、送信済みの書込みデータを再送する無駄を回避することができ、書換え対象ECU19は、書込みデータの書込みを完了した次の書込み領域から書込みデータを書込むことができる。尚、このような書込みデータの書込みを何バイトまで完了したかを記憶する機能を有しない書換え対象ECU19は
、書込みデータの書込みを再開する場合には、先頭の書込みデータから送信するようにCGW13に対して要求する。
(21)進捗状態の同期制御処理
進捗状態の同期制御処理について図211から図216を参照して説明する。車両用プログラム書換えシステム1は、CGW13及びセンター装置3において進捗状態の同期制御処理を行う。車両用プログラム書換えシステム1は、ユーザの入力操作が可能な表示端末5として、携帯端末6及び車載ディスプレイ7を有する。車載ディスプレイ7は、CGW13との連携により書換えの進捗を示す進捗画面を表示する。携帯端末6は、センター装置3に接続することで、センター装置3が提供する書換えの進捗を示す進捗画面を表示する。CGW13及びセンター装置3は、これら携帯端末6及び車載ディスプレイ7で表示される情報を同期させるべく進捗状態の同期制御処理を行う。
前述した図66に示したように、例えば書換え対象ECU19が2面メモリを搭載したECU19であれば、アプリプログラムの書換えを告知してユーザの承諾を得るキャンペーン通知フェーズ、センター装置3からDCM12への書込みデータのダウンロードを実行させるダウンロードフェーズ、CGW13から書換え対象ECU19への書込みデータの配信を実行させるインストールフェーズ、次回起動時の起動面を旧面から新面に切替えるアクティベートフェーズにしたがい、アプリプログラムの書換えに関与する手順を行う。即ち、ユーザは、携帯端末6や車載ディスプレイ7を操作し、各フェーズの実行を承諾する等アプリプログラムの書換えに関与する一連の手順を進める。
図211に示すように、CGW13は、進捗状態の同期制御部88において、第1進捗状態判定部88aと、第1進捗状態送信部88bと、第2進捗状態取得部88cと、第1表示指示部88dとを有する。第1進捗状態判定部88aは、プログラムの書換えに係る第1進捗状態を判定し、例えばキャンペーン通知フェーズ、ダウンロードフェーズ、インストールフェーズ、アクティベートフェーズという進捗状態を判定する。キャンペーン通知フェーズは、キャンペーンを受信し、図68~図69に示す画面を表示し、ユーザ承諾を得るまでのフェーズである。ダウンロードフェーズは、図70~図73に示す画面を表示し、ユーザ承諾を得てダウンロードを実行するフェーズである。インストールフェーズは、ダウンロードが完了し、図73~図78に示す画面を表示し、ユーザ承諾を得てインストールを実行するフェーズである。アクティベートフェーズとは、図79に示す画面を表示し、ユーザの承諾を得てアクティベートを実行するフェーズである。
第1進捗状態判定部88aは、ユーザが乗車中であり、ユーザが車載ディスプレイ7において「プログラム更新の実行を承諾する」を選択し、フェーズを次に進める操作を行うと、ユーザ操作信号が車載ディスプレイ7からCGW13に送信されることで、ユーザが車載ディスプレイ7において行った操作を特定し、第1進捗状態を判定する。この場合、「プログラム更新の実行を承諾する」を選択することは、図70に示す「ダウンロード開始」ボタン503a、図75に示す「すぐ更新」ボタン506aや「予約して更新」ボタン506b、図79に示す「OK」ボタン508bの何れかを操作することに該当する。第1進捗状態判定部88aは、第1進捗状態を判定すると、その判定した第1進捗状態を現在進捗状態として管理する。
第1進捗状態送信部88bは、第1進捗状態が第1進捗状態判定部88aにより判定されると、その判定された第1進捗状態をセンター装置3に送信すると共に、車載ディスプレイ7等の各車載表示機器に送信する。第2進捗状態取得部88cは、プログラムの書換えに係る第2進捗状態をセンター装置3から取得する。第1表示指示部88dは、第1進捗状態が第1進捗状態判定部88aにより判定され、第2進捗状態が第2進捗状態取得部により取得されると、その判定された第1進捗状態及び当該取得された第2進捗状態に基づいて車載ディスプレイ7において表示可能なコンテンツの作成を指示する。
ここで、第2進捗状態取得部88cがセンター装置3から第2進捗状態を取得した場合、第1進捗状態判定部88aは、第2進捗状態が現在進捗状態よりも先のフェーズであるならば、第2進捗状態を現在進捗状態として管理する。即ち、第1進捗状態を第2進捗状態の値で更新する。そして、第1進捗状態送信部88bは、現在進捗状態である第1進捗状態をセンター装置3に送信する。例えば第1進捗状態が「ダウンロード待ちフェーズ」において、携帯端末6におけるユーザ承諾操作がなされた場合、第2進捗状態取得部88cがセンター装置3から第2進捗状態として「ダウンロード実行中フェーズ」を取得する。第1進捗状態判定部88aは、センター装置3から取得した「ダウンロード実行中フェーズ」が現在進捗状態より先のフェーズであるため、現在進捗状態である第1進捗状態を第2進捗状態の値で更新すると共に、その更新した第1進捗状態をセンター装置3に送信すると共に、車載ディスプレイ7等の各種車載表示機器に送信する。第1進捗状態として「ダウンロード実行中フェーズ」に加え、ダウンロードの進捗の程度を示す「ダウンロード完了X%」を送信しても良い。
第1表示指示部88dは、車載ディスプレイ7においてユーザ操作信号が発生した場合、第1進捗状態判定部88aが判定した第1進捗状態に基づいて、コンテンツの作成を指示する。又、第1表示指示部88dは、携帯端末6においてユーザ操作信号が発生した場合、第2進捗状態取得部88cにより取得した第2進捗状態に基づいて、コンテンツの作成を指示する。尚、第1進捗状態判定部88aが判定する第1進捗状態が常に現在進捗状態となるように管理する構成、即ち、マスタ装置11が現在進捗状態を管理する構成であれば、第1表示指示部88dは、第1進捗状態に基づいてコンテンツの作成を指示すれば良い。
図212に示すように、センター装置3は、進捗状態の同期制御部53において、第2進捗状態判定部53aと、第2進捗状態送信部53bと、第1進捗状態取得部53cと、第2表示指示部53dとを有する。第2進捗状態判定部53aは、プログラムの書換えに係る第2進捗状態を判定し、例えばキャンペーン通知フェーズ、ダウンロードフェーズ、インストールフェーズ、アクティベートフェーズという進捗状態を判定する。第2進捗状態判定部53aは、ユーザが降車中(駐車中)であり、ユーザが携帯端末6において「プログラム更新の実行を承諾する」を選択し、フェーズを次に進める操作を行うと、携帯端末6とセンター装置3がデータ通信可能な環境であれば、携帯端末6から送信されるユーザ操作信号を受信する。
第2進捗状態判定部53aは、これ以前に第1進捗状態取得部53cによりマスタ装置11から受信していた第1進捗状態である現在進捗状態と、ユーザ操作信号とに基づいて、第2進捗状態を判定する。第2進捗状態判定部53aは、例えば現在進捗状態が「インストール待ちフェーズ」であるときに、「承諾」を示すユーザ操作信号を受信すると、第2進捗状態として「インストール実行中フェーズ」と判定する。又、。第2進捗状態判定部53aは、「インストール待ちフェーズにおいてユーザ承諾あり」という判定でも良い。携帯端末6におけるユーザ操作信号は、センター装置3とDCM12がデータ通信可能な環境であれば、センター装置3からDCM12に送信される。そして、DCM12からCGW13にユーザ操作信号が転送されることで、CGW13は、ユーザが携帯端末6において行った操作を判定し、進捗状態を判定することができる。
第2進捗状態送信部53bは、第2進捗状態が第2進捗状態判定部53aにより判定されると、その判定された第2進捗状態をマスタ装置11に送信する。第1進捗状態取得部53cは、プログラムの書換えに係る第1進捗状態をマスタ装置11から取得し、現在進捗状態として管理する。現在進捗状態として第2進捗状態を第1進捗状態の値で更新しても良い。第2表示指示部53dは、第2進捗状態が第2進捗状態判定部53aにより判定され、第1進捗状態が第1進捗状態取得部53dにより取得されると、その判定された第2進捗状態及び当該取得された第1進捗状態に基づいて携帯端末6において表示可能なコンテンツの作成を指示する。
例えば携帯端末6におけるユーザ操作信号だけであれば、第2進捗状態判定部53aにより判定される第2進捗状態と、第1進捗状態取得部53dにより取得される第1進捗状態とは同じ進捗状態を示すこととなる。そのため、第2表示指示部53dは、第2進捗状態に基づいてコンテンツの作成を指示しても良い。その後、車載ディスプレイ7におけるユーザ操作信号が発生した場合は、第2表示指示部53dは、取得した第1進捗状態に基づいてコンテンツの作成を指示する。
携帯端末6は、例えばセンター装置3から進捗状態信号としてSMSを受信すると、SMSに記載されるURLをユーザが選択することによりセンター装置3に接続し、センター装置3が提供する所定フェーズの画面を表示する。
次に、CGW13における進捗状態の同期制御部88及びセンター装置3における進捗状態の同期制御部53が行う作用について図213から図216を参照して説明する。
図213に示すように、マスタ装置11とセンター装置3とは、第1進捗状態信号及び第2進捗状態信号を送受信することで、携帯端末6と車載ディスプレイ7におけるフェーズの進捗状態の表示を同期させる。即ち、マスタ装置11は、現在進捗状態である第1進捗状態を更新すると、第1進捗状態信号をセンター装置3に送信すると共に、第1進捗状態信号を車載ディスプレイ7等の各種車載表示機器に送信する。センター装置3は、第1進捗状態信号を現在進捗状態として携帯端末6に送信する。これにより、携帯端末6がセンター装置3にアクセス可能であれば、携帯端末6と車載ディスプレイ7におけるフェーズの進捗状態の表示を同期させる。センター装置3は、携帯端末6におけるユーザ承諾操作に基づいて、第2進捗状態信号をマスタ装置11に送信させることで、携帯端末6がセンター装置3にアクセス可能であれば、携帯端末6と車載ディスプレイ7におけるフェーズの進捗状態の表示を同期させる。
第2進捗状態信号を取得したマスタ装置11は、現在進捗状態である第1進捗状態を更新した後、第1進捗状態をセンター装置3及び車載ディスプレイ7等の各車載表示機器に送信しても良い。即ち、マスタ装置11が現在進捗状態をセンター装置3及び車載ディスプレイ7等の各車載表示機器に送信することで、フェーズの管理装置としての機能を果たす。ここで、携帯端末6、車載ディスプレイ7及びセンター装置3から送信される第2進捗状態信号は、何れかのフェーズを示す通知であっても良いが、ユーザ承諾操作があった旨を示す通知や操作されたボタンの意味を示す通知であっても良い。
CGW13は、進捗状態の同期制御処理を開始すると、配信諸元データを車載ディスプレイ7に送信する(S2101)。配信諸元データには、車載ディスプレイ7がユーザに向けて表示するテキストやコンテンツが含まれている。CGW13は、ユーザが車載ディスプレイ7又は携帯端末6において操作を行ったか否かを、車載ディスプレイ7又はセンター装置3からの通知に基づいて判定する(S2102)。CGW13は、ユーザが車載ディスプレイ7又は携帯端末6において操作を行ったと判定すると(S2102:YES)、第1進捗状態に基づき、その操作が何れのフェーズの操作であるかを判定する(S2103~S2106、第1進捗状態判定手順に相当する)。
CGW13は、キャンペーン通知フェーズであると判定すると(S2103:YES)、キャンペーン通知フェーズの処理を実施し(S2107)、そのキャンペーン通知フェーズの処理の進捗状態を示す第1進捗状態信号を車載ディスプレイ7及びセンター装置3に送信する(S2111)。キャンペーン通知フェーズの処理とは、車載ディスプレイ7又は携帯端末6に対するユーザの入力操作を取得すること等である。
CGW13は、例えば車載ディスプレイ7、又は携帯端末6からセンター装置3を介して、プログラムの更新に承諾又は不承諾の他、実行を許可する日時、場所等の条件等を取得する。CGW13は、携帯端末6にて承諾する旨のユーザの入力操作があったことをセンター装置3からDCM12を介して取得すると、承諾が完了した旨の進捗を車載ディスプレイ7に通知する。一方、CGW13は、車載ディスプレイ7にて承諾する旨のユーザの入力操作があったことを車載ディスプレイ7から取得すると、承諾が完了した旨の進捗をセンター装置3に通知する。
CGW13は、ダウンロードフェーズであると判定すると(S2104:YES)、ダウンロードフェーズの処理を実施し(S2108)、そのダウンロードフェーズの処理の進捗状態を示す第1進捗状態信号を車載ディスプレイ7及びセンター装置に送信する(S2111)。ダウンロードフェーズの処理とは、例えば配信パッケージのダウンロードが何%完了したか算出することである。
CGW13は、センター装置3からの通知に基づいてダウンロードが何%完了したか決定する。CGW13は、ダウンロードが何%完了したかを示す進捗を車載ディスプレイ7及びセンター装置3に通知する。CGW13は、これらの処理を配信パッケージのダウンロードが完了するまで繰返す。CGW13は、ダウンロードが完了すると、ダウンロードフェーズが完了した旨の進捗を車載ディスプレイ7及びセンター装置3に通知する。
CGW13は、インストールフェーズであると判定すると(S2104:YES)、インストールフェーズの処理を実施し(S2108)、そのインストールフェーズの処理の進捗状態を示す進捗状態信号を車載ディスプレイ7及びDCM12に送信する(S2111)。インストールフェーズの処理とは、例えば書換え対象ECU19へのインストールが何%完了したかを算出することである。
CGW13は、書換え対象ECU19からの通知に基づいてインストールが何%完了したか決定する。CGW13は、インストールが何%完了したかを示す進捗を車載ディスプレイ7及びセンター装置3に通知する。CGW13は、これらの処理を全ての書換え対象ECU19に対するインストールが完了するまで繰返す。CGW13は、インストールが全て完了すると、インストールフェーズが完了した旨の進捗を車載ディスプレイ7及びセンター装置3に通知する。
CGW13は、アクティベートフェーズであると判定すると(S2104:YES)、アクティベートフェーズの処理を実施し(S2108)、そのアクティベートフェーズフェーズの処理の進捗状態を示す進捗状態信号を車載ディスプレイ7及びDCM12に送信する(S2111、第1進捗状態送信手順に相当する)。アクティベートフェーズの処理とは、例えば同一グループに属する1以上の書換え対象ECU19のアクティベートが何%完了したかを算出することである。CGW13は、書換え対象ECU19からの通知に基づいてアクティベートが何%完了したか決定する。CGW13は、アクティベートが何%完了したかを示す進捗を車載ディスプレイ7及びセンター装置に通知する。
CGW13は、アクティベートフェーズを完了したか否かを判定し(S2112)、アクティベートフェーズを完了したと判定すると(S2112:YES)、進捗状態の同期制御処理を終了する。CGW13は、アクティベートフェーズを完了していないと判定すると(S2112:NO)、S2102に戻る。そして、CGW13は、各フェーズの処理を進めると共に、処理が何%完了したかを算出する(S2107~S2110)。CGW13は、第1進捗状態としてフェーズ及びX%完了した旨を定期的にセンター装置3に送信する(S2111)。
センター装置3は、配信諸元データを送信し、進捗状態の同期制御処理を開始すると、DCM12から送信される第1進捗状態信号の受信を監視する(S2121)。センター装置3は、DCM12から第1進捗状態信号を受信したと判定すると(S2121:YES)、携帯端末6からのアクセスを許可し(S2122)、第1進捗状態信号により特定されるフェーズが何れであるかを判定する(S2123~S2126)。
センター装置3は、キャンペーン通知フェーズであると判定すると(S2123:YES)、キャンペーン通知フェーズの処理を実施する(S2127)。即ち、センター装置3は、キャンペーン通知フェーズの画面を作成すると共に、このキャンペーン通知フェーズの画面の表示を指示する表示指示信号を携帯端末6に送信し、携帯端末6においてセンター装置3への接続によりキャンペーン通知フェーズの画面を表示させる。
センター装置3は、ダウンロードフェーズであると判定すると(S2124:YES)、ダウンロードフェーズの処理を実施する(S2128)。即ち、センター装置3は、ダウンロードフェーズの画面を作成すると共に、ダウンロードフェーズの画面の表示を指示する表示指示信号を携帯端末6に送信し、携帯端末6においてセンター装置3への接続によりダウンロードフェーズの画面を表示させる。センター装置3は、DCM12からダウンロードが何%完了したかを示す進捗を通知されると、ダウンロードフェーズの画面を更新する。
センター装置3は、インストールフェーズであると判定すると(S2125:YES)、インストールフェーズの処理を実施する(S2129)。即ち、センター装置3は、インストールフェーズの画面を作成すると共に、インストールフェーズの画面の表示を指示する表示指示信号を携帯端末6に送信し、携帯端末6においてセンター装置3への接続によりインストールフェーズの画面を表示させる。センター装置3は、DCM12からインストールが何%完了したかを示す進捗を通知されると、インストールフェーズの画面を更新する。
センター装置3は、アクティベートフェーズであると判定すると(S2126:YES)、アクティベートフェーズの処理を実施する(S2130)。即ち、センター装置3は、アクティベートフェーズの画面を作成すると共に、アクティベートフェーズの画面の表示を指示する表示指示信号を携帯端末6に送信し、携帯端末6においてセンター装置3への接続によりアクティベートフェーズの画面を表示させる。センター装置3は、DCM12からアクティベートが何%完了したかを示す進捗を通知されると、アクティベートフェーズの画面を更新する。センター装置3は、S2127~S2130において表示した画面に対し、ユーザ承諾等の操作が行われた場合、第2進捗状態信号をマスタ装置11に送信し(S2131)、進捗状態の同期制御処理を終了する。
車載ディスプレイ7は、CGW13から配信諸元データを受信すると、進捗表示処理を開始し、CGW13から送信される進捗状態信号の受信を監視する(S2141)。車載ディスプレイ7は、CGW13から進捗状態信号を受信したと判定すると(S2141:YES)、車載ディスプレイ7におけるユーザ操作を許可し(S2142)、進捗状態信号により特定されるフェーズが何れであるかを判定する(S2143~S2146)。
車載ディスプレイ7は、キャンペーン通知フェーズであると判定すると(S2143:YES)、配信諸元データに含まれるテキスト、コンテンツ等を用いてキャンペーン通知フェーズの画面を表示する(S2147)。車載ディスプレイ7は、ダウンロードフェーズであると判定すると(S2144:YES)、ダウンロードフェーズの画面を表示する(S2148)。車載ディスプレイ7は、CGW13からダウンロードが何%完了したかを示す進捗を通知されると、ダウンロードフェーズの画面を更新する。
車載ディスプレイ7は、インストールフェーズであると判定すると(S2145:YES)、インストールフェーズの画面を表示する(S2149)。車載ディスプレイ7は、CGW13からインストールが何%完了したかを示す進捗を通知されると、インストールフェーズの画面を更新する。車載ディスプレイ7は、アクティベートフェーズであると判定すると(S2146:YES)、アクティベートフェーズの画面を表示する(S2150)。車載ディスプレイ7は、CGW13からアクティベートが何%完了したかを示す進捗を通知されると、アクティベートフェーズの画面を更新する。
以上に説明したように、マスタ装置11とセンター装置3との間で第1進捗状態及び第2進捗状態を送受信するようにした。例えば携帯端末6がセンター装置3にアクセス可能であり、車載ディスプレイ7がセンター装置3にアクセス不能である構成であっても、マスタ装置11とセンター装置3との間で第1進捗状態及び第2進捗状態を送受信することで、アプリプログラムの書換えの進捗状態等を複数の表示端末で適切に同期させることができる。
(22)表示制御情報の送信制御処理、(23)表示制御情報の受信制御処理
センター装置3における表示制御情報の送信制御処理について図181及び図182を参照して説明し、マスタ装置11における表示制御情報の受信制御処理について図183から図185を参照して説明する。
図217に示すように、センター装置3は、表示制御情報の送信制御部54において、書込みデータ記憶部54a(更新データ記憶部に相当する)と、表示制御情報記憶部54bと、情報送信部54cとを有する。書込みデータ記憶部54aは、複数の書換え対象ECU19に対するアプリプログラムの書換えを一つのキャンペーンとし、複数の書換え対象ECU19に対する書込みデータを記憶する。表示制御情報記憶部54bは、表示制御情報を含む配信緒元データを記憶する。表示制御情報は、書換え対象ECU19におけるアプリプログラムの書換えに関与する表示情報が車載ディスプレイ7において表示されるのに必要な情報であり、表示制御プログラムやプロパティ情報である。
表示情報とは、アプリプログラムの書換えに関与する各種画面(キャンペーン通知画面、インストール画面等)を構成するデータである。表示制御プログラムは、ウェブブラウザと同等の機能を実現するプログラムである。プロパティ情報は、表示文字、表示位置、色等を規定する情報である。情報送信部54cは、書込みデータ記憶部54aに記憶されている書込みデータと、表示制御情報記憶部54bに記憶されている表示制御情報とをマスタ装置11に送信する。情報送信部54cは、複数の書換え対象ECU19に対する書込みデータを1つのパッケージとしてマスタ装置11に送信する。ここで、表示制御情報として、何れのフェーズで表示する情報であるかを示すフェーズ識別情報を含めても良い。例えばキャンペーン通知フェーズ、ダウンロードフェーズ、インストールフェーズ、及びアクティベートフェーズのうち何れのフェーズで表示する情報であるかを示すフェーズ識別情報である。
次に、センター装置3における表示制御情報の送信制御部54が行う作用について図218を参照して説明する。センター装置3は、表示制御情報の送信制御プログラムを実行し、表示制御情報の送信制御処理を行う。
センター装置3は、表示制御情報の送信制御処理を開始すると、配信緒元データをDCM12を介してCGW13に送信し(S2201、制御情報送信手順に相当する)、書込みデータをDCM12を介してCGW13に送信する(S2202)。センター装置3は、表示情報をDCM12を介してCGW13に送信し(S2203、表示情報送信手順に相当する)、表示制御情報の送信制御処理を終了する。尚、センター装置3は、キャンペーン通知フェーズ、ダウンロードフェーズ、インストールフェーズ、アクティベートフェーズの各フェーズに対応する表示制御情報を送信する場合には、各フェーズに対応する表示制御情報を1つのファイルに纏めて車載ディスプレイ7に送信しても良いし、フェーズを終了する毎に次のフェーズに対応する表示制御情報を車載ディスプレイ7に送信しても良い。ここで、センター装置3が配信緒元データを送信するタイミングは、マスタ装置11からの求めに応じて送信する構成とすると良い。
図219に示すように、CGW13は、表示制御情報の受信制御部89において、情報受信部89aと、書換え指示部89bと、表示指示部89cとを有する。情報受信部89aは、センター装置3から書込みデータと表示制御情報とを受信する。書換え指示部89bは、センター装置3から書込みデータが情報受信部89aにより受信されると、その受信された書込みデータの書込みを書換え対象ECU19に指示する。表示指示部89cは、書換え指示部89bが書込みデータの書込みを書換え対象ECU19に指示する前に、表示制御情報を用いて、キャンペーンに関する情報を表示するように車載ディスプレイ7に指示する。尚、表示指示部89cは、書込みデータの書込みが全て完了した後に、履歴情報としてキャンペーンに関する情報を表示するように指示しても良い。
次に、CGW13における表示制御情報の受信制御部89が行う作用について図220を参照して説明する。CGW13は、表示制御情報の受信制御プログラムを実行し、表示制御情報の受信制御処理を行う。これにより、表示端末として携帯端末6と車載ディスプレイ7とを有する場合に、これらの表示形態を近づけることができ、ユーザの利便性を向上させることができる。
CGW13は、表示制御情報の受信制御処理を開始すると、センター装置3からDCM12を介して配信緒元データを受信し(S2301、制御情報受信手順に相当する)。センター装置3からDCM12を介して書込みデータを受信する(S2302)。CGW13は、センター装置3からDCM12を介して表示情報を受信する(S2303、表示情報受信手順に相当する)。CGW13は、センター装置3から配信諸元データに含まれている表示制御情報を用いるか否かを判定する(S2304)。CGW13は、表示制御情報を用いると判定すると(S2304:YES)、表示制御情報を用いて表示情報を表示するように車載ディスプレイ7に指示する(S2305)。即ち、CGW13は、表示制御情報を用いてアプリプログラムの書換えに関与する画面を表示するように車載ディスプレイ7に指示する。車載ディスプレイ7は、CGW13からの指示にしたがい、表示制御情報を用いて表示情報を表示する。
CGW13は、表示制御情報を用いないと判定すると(S2304:NO)、予め保有するコンテンツを用いて表示情報を表示するように車載ディスプレイ7に指示する(S2306)。即ち、CGW13は、予め保有するコンテンツを用いてアプリプログラムの書換えに関与する画面を表示するように車載ディスプレイ7に指示する。車載ディスプレイ7は、CGW13からの指示にしたがい、予め保有するコンテンツを用いて表示情報を表示する。尚、車載ディスプレイ7は、キャンペーン通知フェーズ、ダウンロードフェーズ、インストールフェーズ、アクティベートフェーズの各フェーズに対応する表示情報を表示する場合には、各フェーズに対応する表示制御情報を纏めてセンター装置3から受信しても良いし、フェーズを終了する毎に次のフェーズに対応する表示制御情報をセンター装置3から受信しても良い。
図221に示すように、車載ディスプレイ7がウェブブラウザの機能を有しておらず、センター装置3からDCM12及びCGW13を介して車載ディスプレイ7に送信される配信諸元データにプロパティ情報は含まれているが表示制御プログラムが含まれていなければ、車載ディスプレイ7は、予め保持するコンテンツやフレームを用いて表示情報を簡易的な画面でプロパティ情報を表示する。プロパティ情報とは、テキスト等のデータ及びその表示位置、サイズ等であり、センター装置3が作成する画面で用いるプロパティ情報と同一である。即ち、車載ディスプレイ7が表示する画面イメージは、センター装置3が作成する画面イメージと背景やビットマップ等の相違はあるものの、表示内容はセンター装置3と同等となる。
車載ディスプレイ7がウェブブラウザの機能を有しておらず、センター装置3からDCM12及びCGW13を介して車載ディスプレイ7に送信される配信諸元データに表示制御プログラムとプロパティ情報が含まれていれば、車載ディスプレイ7は、表示情報をセンター装置3と同等な画面で表示する。ここで、配信諸元データに含まれる表示制御プログラムとプロパティ情報は、センター装置3が作成する画面で用いるものと同一である。
車載ディスプレイ7がウェブブラウザの機能を有していないが表示制御プログラムを保持しており、センター装置3から車載ディスプレイ7に送信される配信諸元データにプロパティ情報が含まれていれば、車載ディスプレイ7は、表示情報をセンター装置3と同等な画面で表示する。ここで、車載ディスプレイ7が保持している表示制御プログラムは、例えば、センター装置3が作成する画面で用いる表示制御プログラムとバージョン違いである。
車載ディスプレイ7がウェブブラウザの機能を有していれば、車載ディスプレイ7は、センター装置へ接続することにより表示情報をセンター装置3と同一の画面で表示する。
以上に説明したように、センター装置3は、表示制御情報の送信制御処理を行うことで、表示制御情報を車載ディスプレイ7に送信し、車載ディスプレイ7において表示情報を表示制御情報にしたがって表示させる。これにより、表示端末として携帯端末6と車載ディスプレイ7とを有する場合に、これらの表示形態を近づけることができ、ユーザの利便性を高めることができる。CGW13は、表示制御情報の受信制御処理を行うことで、表示制御情報をセンター装置3から受信し、表示情報をセンター装置3から受信し、表示情報を表示制御情報にしたがって表示する。
(24)進捗表示の画面表示制御処理
進捗表示の画面表示制御処理について図222から図246を参照して説明する。車両用プログラム書換えシステム1は、CGW13において進捗表示の画面表示制御処理を行う。
図222に示すように、CGW13は、進捗表示の画面表示制御部90において、モード判定部90aと、画面表示指示部90bとを有する。
モード判定部90aは、ユーザのカスタマイズ操作によりカスタマイズモードが設定されているか否かを判定する。又、モード判定部90aは、外部からの外部モードが設定されているか否かを書換え諸元データに含まれるシーン情報により判定する。即ち、モード判定部90aは、図44に示す書換え諸元データに含まれるシーン情報を参照する。図44及び図223に示すように、書換え諸元データには、シーン情報、有効期限情報、位置情報が格納されている。シーン情報は、本更新のシーン(種類、場面等)を示すと同時に、本更新の画面表示を指定するものである。具体的には、リコールフラグ、ディーラーフラグ、工場用フラグ、機能更新通知フラグ、強制実行フラグがある。
リコールフラグは、リコールに応じてアプリプログラムの書換えを行う場合の画面表示を指定するフラグである。リコールとは、設計や製造上の過誤等により製品に欠陥があることが判明した場合に、法令の規定又は製造者や販売者の判断で無償修理や交換や回収等の措置を行うことである。
ディーラーフラグは、ディーラーにおいてアプリプログラムの書換えを行う場合の画面表示を指定するフラグである。工場用フラグは、工場においてアプリプログラムの書換えを行う場合の画面表示を指定するフラグである。機能更新通知フラグは、機能更新通知に応じてアプリプログラムの書換えを行う場合の画面表示を指定するフラグである。機能更新通知とは、特定の機能を更新することである。例えば機能更新通知フラグは、新たな機能を有償(又は無償)で追加するためのプログラム更新における画面表示を指定するフラグである。
強制実行フラグは、強制実行に応じてアプリプログラムの書換えを行う場合の画面表示を指定するフラグである。強制実行とは、キャンペーン通知を所定回数繰返しているが、そのアプリプログラムの書換えが行われないことにより、アプリプログラムの書換えを強制的に行うことである。例えば強制実行フラグは、プログラム更新を強制的に行う場合の画面表示を指定するフラグである。
これらシーン情報を示すフラグは、該当がない場合は全てが0(フラグ不成立)であり、該当がある場合は何れかが1(フラグ成立)となるよう設定される。モード判定部90aは、例えばリコールフラグが成立しているときには、リコールモードが設定されていると判定し、ディーラーフラグが成立しているときには、ディーラーモードが設定されていると判定し、工場フラグが成立しているときには、工場モードが設定されていると判定し、機能更新通知フラグが成立しているときには、機能更新モードが設定されていると判定し、強制実行フラグが成立しているときには、強制実行モードが設定されていると判定する。
有効期限情報は、有効期限を示す情報であり、アプリプログラムの書換えを実行するか否かの判定基準となる情報である。CGW13は、現在時刻が有効期限情報により示される有効期限内であれば、アプリプログラムの書換えを実行し、現在時刻が有効期限情報により示される有効期限外であれば、アプリプログラムの書換えを実行しない。即ち、CGW13は、配信パッケージをダウンロードした後、プログラムのインストールを行う際に有効期限情報を参照し、仮に現在時刻が有効期限外であれば、プログラムのインストールを実行せず、配信パッケージを破棄する。
位置情報は、位置を示す情報であり、アプリプログラムの書換えを実行するか否かの判定基準となる情報であり、許可エリアと禁止エリアがある。CGW13は、位置情報として許可エリアが指定されている場合には、車両の現在位置が位置情報により示される許可エリア内であれば、アプリプログラムの書換えを実行し、車両の現在位置が位置情報により示される許可エリア外であれば、アプリプログラムの書換えを実行しない。CGW13は、位置情報として禁止エリアが指定されている場合には、車両の現在位置が位置情報により示される禁止エリア外であれば、アプリプログラムの書換えを実行し、車両の現在位置が位置情報により示される禁止エリア内であれば、アプリプログラムの書換えを実行しない。即ち、CGW13は、配信パッケージをダウンロードした後、プログラムのインストールを行う際に位置情報を参照し、仮に現在位置が許可エリア外であれば、プログラムのインストールを実行せず、許可エリア内となるまでインストールを待機する。
画面表示指示部90bは、アプリプログラムの書換えに応じた画面表示を表示端末5に指示する。画面表示指示部90bは、アプリプログラムの書換えのフェーズに対応する画面の表示有無を指示すること、画面の項目の表示有無を指示すること、画面の項目の表示内容の変更を指示することにより、画面表示を表示端末5に指示する。
ユーザのカスタマイズ操作について説明する。尚、ここでは、車載ディスプレイ7が表示する画面について説明するが、携帯端末6が表示する画面についても同様である。尚、後述する画面において、ボタンの個数や配置等のレイアウトは例示した以外であっても良い。ユーザが車載ディスプレイ7においてメニュー画面の表示操作を行うと、CGW13は、図224に示すように、メニュー選択画面511を車載ディスプレイ7に表示させる。CGW13は、メニュー選択画面511では、「ソフトウェアップデート」ボタン511a、「アップデート結果確認」ボタン511b、「ソフトウェアバージョン一覧」ボタン511c、「更新履歴」ボタン511d、「ユーザ情報登録」ボタン511eを表示させ、ユーザの操作を待機する。
この状態からユーザが「ユーザ情報登録」ボタン511eを操作すると、CGW13は、図225に示すように、ユーザ選択画面512を車載ディスプレイ7に表示させる。CGW13は、ユーザ選択画面512では、「ユーザ」ボタン512a~512cを表示させ、ユーザの操作を待機する。
この状態からユーザが「ユーザ」ボタン512aを操作すると、CGW13は、図226に示すように、ユーザ登録画面513を車載ディスプレイ7に表示させる。CGW13は、ユーザ登録画面513では、個人情報登録としてメールアドレス及びVIN情報(個車識別情報)の入力欄を表示させ、課金情報登録としてクレジットカード番号及び有効期限の入力欄を表示させ、アプリプログラムの書換え設定として、キャンペーン通知、ダウンロード、インストール、アクティベートの「オンオフ」ボタン513a~513dを表示させ、「詳細情報」ボタン513eを表示させ、ユーザの操作を待機する。
キャンペーン通知、ダウンロード、インストール、アクティベートの「オンオフ」ボタン513a~513dは、キャンペーン通知、ダウンロード、インストール、アクティベートについて画面表示を行うか否かを選択するボタンである。具体的には、キャンペーン通知を受信した際、ダウンロードを開始する際、インストールを開始する際、アクティベートを開始する際に、ユーザ承諾を求めるコンテンツ表示を行うか否かを、ユーザに予め選択させるボタンである。「詳細情報」ボタン513eは、上記した有効期限情報及び位置情報を登録するボタンである。これらユーザが設定した情報は、DCM12を介してセンター装置3に送信される。尚、これらの情報をユーザが携帯端末6で設定した場合、CGW13は、これらの情報をDCM12を介してセンター装置3から取得する。
ユーザは、キャンペーン通知、ダウンロード、インストール、アクティベートについて、画面を煩わしいと感じる場合であれば、該当する「オンオフ」ボタン513a~513dをオフに設定すれば良い。オフに設定することにより、ユーザ承諾を求めるコンテンツの表示は省略されることとなる。ユーザは、例えばキャンペーン通知やアクティベートの画面表示を煩わしくないが、ダウンロードやインストールの画面表示を煩わしいと感じる場合であれば、キャンペーン通知を「オンオフ」ボタン513aによりオンに設定し、ダウンロードを「オンオフ」ボタン513bによりオフに設定し、インストールを「オンオフ」ボタン513cによりオフに設定し、アクティベートを「オンオフ」ボタン513dによりオンに設定すれば良い。
この場合、表示端末5は、例えばキャンペーン通知がオン、ダウンロードがオフ、インストールがオフ、アクティベートがオンに設定されていれば、アプリプログラムの書換えフェーズに応じて、キャンペーン通知画面を表示し、ダウンロード承諾画面及びダウンロード実行中画面を表示せず、インストール承諾画面及びインストール実行中画面を表示せず、アクティベート画面を表示する。即ち、ユーザは、キャンペーン通知、ダウンロード、インストール、アクティベートのフェーズにおいて、オンに設定すれば、そのオンに設定したフェーズの画面表示が行われ、オフに設定すれば、そのオフに設定したフェーズの画面表示が行われず、画面表示をカスタマイズすることができる。このような画面表示のオンオフの設定は、フェーズ毎に個別に設定可能でも良いし、全てのフェーズを一括して一度に設定可能でも良い。
又、ユーザは、有効期限、許可エリア、禁止エリアを登録したい場合であれば、「詳細情報」ボタン513eを操作し、有効期限、許可エリア、禁止エリアを設定すれば良い。ユーザは、有効期限情報としてアプリプログラムの書換えを許可する有効期限をカスタマイズすることができ、位置情報としてアプリプログラムの書換えを許可する許可エリアや禁止する禁止エリアをカスタマイズすることができる。
次に、上記した構成の作用について図227から図250を参照して説明する。CGW13は、進捗表示の画面表示制御プログラムを実行し、進捗表示の画面表示制御処理を行う。
CGW13は、進捗表示の画面表示制御処理を開始すると、書換え諸元データに有効期限情報が格納されている否か、及びカスタマイズ情報に有効期限情報が設定されているか否かを判定する(S2401)。CGW13は、書換え諸元データに有効期限情報が格納されていると判定すると(S2401:YES)、現在時刻が有効期限情報を満たしているか否かを判定する(S2402)。CGW13は、書換え諸元データに格納された有効期限情報と、カスタマイズ情報として設定された有効期限情報とが存在する場合に、両方を満たしているか否かを判定する。CGW13は、現在時刻が有効期限情報により示される有効期限外であり、現在時刻が有効期限情報を満たしていないと判定すると(S2402:NO)、進捗表示の画面表示制御処理を終了する。
CGW13は、現在時刻が有効期限情報により示される有効期限内であり、現在時刻が有効期限情報を満たしていると判定すると(S2402:YES)、書換え諸元データにシーン情報が格納されている否かを判定する(S2403)。CGW13は、書換え諸元データにシーン情報が格納されていると判定すると(S2403:YES)、外部モードが設定されていると判定し、そのシーン情報の設定内容にしたがう表示指示処理に移行し(S2404)、アプリプログラムの書換えに応じた画面表示を、その成立しているフラグのモードにしたがって行うように車載ディスプレイ7に指示する。CGW13は、例えばリコールフラグが成立していれば、アプリプログラムの書換え中に応じた画面表示を、リコールモードにしたがって行うように車載ディスプレイ7に指示する。CGW13は、例えばディーラーフラグが成立していれば、アプリプログラムの書換え中に応じた画面表示を、ディーラーモードにしたがって行うように車載ディスプレイ7に指示する。
CGW13は、書換え諸元データにシーン情報が格納されていないと判定すると(S2403:NO)、ユーザのカスタマイズ操作によりカスタマイズモードが設定されているか否かを判定する(S2405、カスタマイズモード判定手順に相当する)。CGW13は、カスタマイズモードが設定されていると判定すると(S2405:YES)、カスタマイズ操作の設定内容にしたがう表示指示処理に移行し(S2406、画面表示指示手順に相当する)、アプリプログラムの書換えに応じた画面表示を、カスタマイズモードにしたがって行うように車載ディスプレイ7に指示する。
CGW13は、カスタマイズモードが設定されていないと判定すると(S2405:NO)、初期設定の設定内容にしたがう表示指示処理に移行し(S2407、画面表示指示手順に相当する)、アプリプログラムの書換えに応じた画面表示を、カスタマイズモードにしたがって行うように車載ディスプレイ7に指示する。即ち、CGW13は、書換え諸元データに格納されたシーン情報を優先して適用し、シーン情報が格納されていないときに、カスタマイズモードを適用する。シーン情報及びカスタマイズモードのいずれも存在しない場合には、初期設定を適用する。ここで、初期設定とは、予め設定された値であり、例えばキャンペーン通知、ダウンロード、インストール及びアクティベートのいずれの設定もオンとする設定を初期設定とする。
続いて、図228を用いて、S2404、S2406及びS2407の画面表示指示処理について説明する。ここでは、インストールフェーズにおける画面表示指示処理について例示するが、他のフェーズについても同様である。CGW13は、表示指示処理に移行すると、画面の表示有無を設定し(S2411)、画面の項目の表示有無を設定し(S2412)、画面の項目の表示内容の変更を指示する(S2413)。CGW13は、画面表示要求通知をDCM12に送信し、画面表示要求をDCM12から車載ディスプレイ7に送信させ(S2414)、DCM12からの操作結果情報の受信を待機する(S2415)。操作結果情報とは、ユーザがいずれのボタンを操作したかを示す情報である。尚、CGW13が画面表示要求通知を車載ディスプレイ7に直接送信し、操作結果情報を受信するようにしても良い。
CGW13は、車載ディスプレイ7からDCM12に操作結果が送信されたことで、DCM12からの操作結果情報の受信を判定すると(S2415:YES)、その操作結果情報に基づいて承諾確認を行い、ユーザがアプリプログラムの書換えを承諾したか否かを判定する(S2416)。
CGW13は、ユーザがアプリプログラムの書換えを承諾したと判定すると(S2416:YES)、書換え諸元データに位置情報が格納されている否かを判定する(S2417)。CGW13は、書換え諸元データに位置情報が格納されていると判定すると(S2417:YES)、車両の現在位置が位置情報を満たしているか否かを判定する(S2418)。尚、インストールフェーズ以外では、S2417及びS2418を省略しても良い。CGW13は、位置情報が許可エリアである場合、車両の現在位置が許可エリア内であれば、車両の現在位置が位置情報を満たしていると判定し(S2418:YES)、アプリプログラムの書換えを継続する(S2419)。
一方、CGW13は、車両の現在位置が許可エリア外であれば、車両の現在位置が位置情報を満たしていないと判定し、アプリプログラムの書換えを継続せずに中止し、画面表示指示処理を終了する。CGW13は、位置情報が禁止エリアである場合、車両の現在位置が禁止エリア外であれば、車両の現在位置が位置情報を満たしていると判定し(S2418:YES)、アプリプログラムの書換えを継続し(S2419)、画面表示指示処理を終了する。CGW13は、車両の現在位置が禁止エリア内であれば、車両の現在位置が位置情報を満たしていないと判定し、アプリプログラムの書換えを継続せずに中止し、表示指示処理を終了する。
CGW13からDCM12に送信される画面表示要求通知、DCM12からCGW13に送信される操作結果情報について説明する。図229に示すように、CGW13からDCM12に送信される画面表示要求通知には、フェーズID、シーンID、画面構成情報が含まれる。フェーズIDとは、キャンペーン通知、ダウンロード、インストール、アクティベートという各フェーズを識別するIDである。シーンIDとは、図223に示すシーン情報を識別するIDである。DCM12からCGW13に送信される操作結果情報には、送信元情報、フェーズID、シーンID、操作結果、追加情報が含まれる。CGW13は、画面表示要求通知に格納されているフェーズID及びシーンIDと、操作結果情報に格納されているフェーズID及びシーンIDとを照合し、乖離や調停の確認を行う。
即ち、CGW13は、DCM12に送信した画面表示要求通知に格納されているフェーズID及びシーンIDと、DCM12から受信した操作結果情報に格納されているフェーズID及びシーンIDとが一致していれば、画面表示要求通知と操作結果情報とが整合しており、画面表示要求通知と操作結果情報とが乖離しておらず、調停を行う必要がないと判定する。一方、CGW13は、DCM12に送信した画面表示要求通知に格納されているフェーズID及びシーンIDと、DCM12から受信した操作結果情報に格納されているフェーズID及びシーンIDとが一致していなければ、画面表示要求通知と操作結果情報とが整合しておらず、画面表示要求通知と操作結果情報とが乖離しており、調停を行う必要があると判定する。CGW13は、DCM12から受信した操作結果情報にしたがって処理を行うか否かの調停を行う。
画面構成情報は、画面の構成要素を示す情報であり、図230に示すように、例えばアクティベート承諾画面514では、「キャンペーンID…」ボタン514a、「更新名称A…」ボタン514b、「更新名称B…」ボタン514c、「詳細確認」ボタン514d、「戻る」ボタン514e、「OK」ボタン514fの6項目がある。この場合、図231に示すように、画面構成情報の6項目の全てが「表示」に設定されていれば、図230に示したように、アクティベート承諾画面514に6項目の全てが表示される。即ち、ユーザは、「キャンペーンID…」ボタン514a、「更新名称A…」ボタン514b、「更新名称B…」ボタン514c、「詳細確認」ボタン514d、「戻る」ボタン514e、「OK」ボタン514fの何れかを操作可能である。
一方、図232に示すように、画面構成情報の6項目のうち「キャンペーンID…」ボタン514a、「更新名称A…」ボタン514b、「更新名称B…」ボタン514c、「詳細情報」ボタン514d、「OK」ボタン514fが「表示」に設定され、「戻る」ボタン514eが非表示に設定されていれば、図233に示すように、アクティベート承諾画面514に「キャンペーンID…」ボタン514a、「更新名称A…」ボタン514b、「更新名称B…」ボタン514c、「詳細情報」ボタン514d、「OK」ボタン514fが表示される一方で、「戻る」ボタン514eが表示されない。即ち、ユーザは、「キャンペーンID…」ボタン514a、「更新名称A…」ボタン514b、「更新名称B…」ボタン514c、「詳細確認」ボタン514d、「OK」ボタン514fの何れかを操作可能であるが、「戻る」ボタン514eが表示されていないので、「戻る」ボタン514eを操作不能である。例えばリコール等による重要度や緊急度が比較的高いアプリプログラムの書換えについては、そのアクティベートを拒否することが望ましくないので、上記したように「戻る」ボタン514eを操作不能とすることで、そのアクティベートを拒否することがないように設定可能となる。この場合、ユーザが「OK」ボタン514fを操作することで、アクティベートを承諾したこととなる。
CGW13、DCM12、車載ディスプレイ7、センター装置3、メータ装置45との間で送受信される画面表示、ユーザ操作に関するメッセージフレームワークについて説明する。図234に示すように、CGW13とDCM12はCANやイーサーネットで接続されており、DCM12と車載ディスプレイ7はUSBで接続されている。
CGW13は、DCM12を介してセンター装置3との間でデータ通信を行う。CGW13からダイアグ通信により送信されたデータは、DCM12でプロトコル変換され、DCM12からHTTP通信によりセンター装置3に受信される。例えばCGW13は、現在のフェーズや進捗割合等の現在進捗状態を示すデータを、DCM12を介してセンター装置3に送信する。センター装置3からHTTP通信により送信されたデータは、DCM12でプロトコル変換され、DCM12からダイアグ通信によりCGW13に受信される。
CGW13は、DCM12を介して車載ディスプレイ7との間でデータ通信を行う。CGW13からダイアグ通信により送信されたデータは、DCM12でプロトコル変換され、DCM12からUSB通信により車載ディスプレイ7に受信される。車載ディスプレイ7からUSB通信により送信されたデータは、DCM12でプロトコル変換され、DCM12からダイアグ通信によりCGW13に受信される。例えばCGW13は、車載ディスプレイ7におけるユーザ操作に関する情報を、DCM12を介して取得する。このように車両用プログラム書換えシステム1では、DCM12にプロトコル変換機能を持たせ、携帯端末6と車載ディスプレイ7とをCGW13が同様に扱えるよう構成する。又、ユーザ操作に関する情報をCGW13へ集約することにより、CGW13が複数の操作端末におけるユーザ操作結果を調停し、現在進捗状態を管理できるようにしている。
CGW13、DCM12、車載ディスプレイ7との間で送受信されるメッセージフレームのシーケンスについて説明する。図235から図242に示すように、CGW13からDCM12に送信される画面表示要求通知、DCM12からCGW13に送信される操作結果情報において、キャンペーン通知ではフェーズIDを「03」とし、ダウンロードではフェーズIDを「04」とし、インストールではフェーズIDを「05」とし、アクティベートではフェーズIDを「06」としている。キャンペーン通知、ダウンロード、インストール及びアクティベートの各フェーズにおいて、メッセージフレームの送受信の順序は同じとし、フェーズIDを異ならせることで、フェーズを区分している。
図235では、キャンペーン通知フェーズを例示している。CGW13は、現在進捗状態を管理しており、フェーズID、シーンID及び画面構成情報を指定し、画面表示要求通知をDCM12に送信する。DCM12は、CGW13から画面表示要求通知を受信すると、画面表示要求を車載ディスプレイ7に送信する。車載ディスプレイ7は、DCM12から画面表示要求を受信すると、キャンペーン通知時の画面を表示し、ユーザがキャンペーン通知の確認操作を行うと、その操作結果をDCM12に送信する。DCM12は、車載ディスプレイ7から操作結果を受信すると、操作結果情報をCGW13に送信する。CGW13に受信される操作結果情報には、送信元情報、フェーズID、シーンID、操作結果及び追加情報が指定されている。CGW13は、DCM12から受信した操作結果情報に基づいて現在進捗状態を更新する。ここでは、CGW13は、キャンペーン通知フェーズにて承諾操作があった場合、現在進捗状態をダウンロードフェーズに更新する。
する。
図236では、ダウンロードフェーズを例示している。CGW13は、現在進捗状態を管理しており、フェーズID、シーンID及び画面構成情報を指定し、画面表示要求通知をDCM12に送信する。DCM12は、CGW13から画面表示要求通知を受信すると、画面表示要求を車載ディスプレイ7に送信する。車載ディスプレイ7は、DCM12から画面表示要求を受信すると、ダウンロード承諾時の画面を表示し、ユーザがダウンロードの承諾操作を行うと、その操作結果をDCM12に送信する。DCM12は、車載ディスプレイ7から操作結果を受信すると、操作結果情報をCGW13に送信する。CGW13に受信される操作結果情報には、送信元情報、フェーズID、シーンID、操作結果及び追加情報が指定されている。CGW13は、DCM12から受信した操作結果情報に基づいて現在進捗状態を更新する。ここでは、CGW13は、ダウンロードフェーズにて承諾操作があった場合、現在進捗状態をインストールフェーズに更新する。
図237では、インストールフェーズを例示している。CGW13は、現在進捗状態を管理しており、フェーズID、シーンID及び画面構成情報を指定し、画面表示要求通知をDCM12に送信する。DCM12は、CGW13から画面表示要求通知を受信すると、画面表示要求を車載ディスプレイ7に送信する。車載ディスプレイ7は、DCM12から画面表示要求を受信すると、インストール承諾時の画面を表示し、ユーザがインストールの承諾操作を行うと、その操作結果をDCM12に送信する。DCM12は、車載ディスプレイ7から操作結果を受信すると、操作結果情報をCGW13に送信する。CGW13に受信される操作結果情報には、送信元情報、フェーズID、シーンID、操作結果及び追加情報が指定されている。CGW13は、DCM12から受信した操作結果情報に基づいて現在進捗状態を更新する。ここでは、CGW13は、インストールフェーズにて承諾操作があった場合、現在進捗状態をアクティベートフェーズに更新する。
図238では、アクティベートフェーズを例示している。CGW13は、現在進捗状態を管理しており、フェーズID、シーンID及び画面構成情報を指定し、画面表示要求通知をDCM12に送信する。DCM12は、CGW13から画面表示要求通知を受信すると、画面表示要求を車載ディスプレイ7に送信する。車載ディスプレイ7は、DCM12から画面表示要求を受信すると、アクティベート承諾時の画面を表示し、ユーザがアクティベートの承諾操作を行うと、その操作結果をDCM12に送信する。DCM12は、車載ディスプレイ7から操作結果を受信すると、操作結果情報をCGW13に送信する。CGW13に受信される操作結果情報には、送信元情報、フェーズID、シーンID、操作結果及び追加情報が指定されている。CGW13は、DCM12から受信した操作結果情報に基づいて現在進捗状態を更新する。
画面表示について図239から図246を参照して説明する。CGW13は、カスタマイズモードが設定されておらず、書換え諸元データのシーン情報に何れのフラグも設定されていない場合には、アプリプログラムの書換えに応じた画面表示を、初期設定の内容にしたがって表示端末5に指示する(S2407)。CGW13は、初期設定が、キャンペーン通知、ダウンロード、インストール、アクティベートの全てをオンする設定であれば、CGW13は、前述した図67から図82に示したように、ナビゲーション画面501、キャンペーン通知画面502、ダウンロード承諾画面503、ダウンロード実行中画面504、ダウンロード完了通知画面505、インストール承諾画面506、インストール実行中画面507、アクティベート承諾画面508、アクティベート完了通知画面509、確認操作画面510を順次表示するように、画面表示を表示端末5に指示する。このとき、キャンペーン通知画面502、ダウンロード承諾画面503、インストール承諾画面506、アクティベート承諾画面508、確認操作画面510では、ユーザの承諾(OK)を得るためのコンテンツを表示する。
CGW13は、ユーザのカスタマイズモードが設定されている場合には、アプリプログラムの書換えに応じた画面表示を、カスタマイズモードの内容にしたがって表示端末5に指示する(S2406)。ただし、シーン情報が指定されていない場合に限る。CGW13は、例えばカスタマイズモードにおいてキャンペーン通知がオン、ダウンロードがオフ、インストールがオフ、アクティベートがオンに設定されていれば、キャンペーン通知画面502を表示した後に、ダウンロード承諾画面503、ダウンロード実行中画面504、ダウンロード完了通知画面505、インストール承諾画面506及びインストール実行中画面507を表示せず、アクティベート承諾画面508を表示するように、画面表示を表示端末5に指示する。
CGW13は、書換え諸元データのシーン情報にリコールフラグが設定されている場合には、アプリプログラムの書換えに応じた画面表示を、リコールモードの内容にしたがって表示端末5に指示する(S2404)。この場合、CGW13は、図240に示すように、キャンペーン通知画面502では、「後で」ボタン502aを非表示とする。又、CGW13は、図241及び図242に示すように、ダウンロード承諾画面503では、「戻る」ボタン503cを非表示とする。又、CGW13は、図243に示すように、ダウンロード実行中画面504では、「戻る」ボタン504bを非表示とする。又、CGW13は、図244及び図245に示すように、インストール承諾画面505では、「戻る」ボタン505bを非表示とする。又、CGW13は、図246に示すように、アクティベート承諾画面518では、「戻る」ボタンを非表示とする。
即ち、書換え諸元データのシーン情報にリコールフラグが設定されている場合には、上記したように「後で」ボタンや「戻る」ボタンが非表示に設定されることで、「後で」ボタンや「戻る」ボタンを表示しないようにすれば良い。又は、キャンペーン通知画面502を表示し、ダウンロード承諾画面503においてユーザの承諾を得た後は、インストール承諾画面505、アクティベート承諾画面518の表示を省略しても良い。以上は、書換え諸元データのシーン情報にリコールフラグが設定されている場合について説明したが、書換え諸元データのシーン情報にディーラーフラグ、工場用フラグ、機能更新通知フラグ、強制実行フラグが設定されている場合も同様であり、アプリプログラムの書換えを行う状況に応じてフェーズに対応する画面の表示有無、画面の項目の表示有無、画面の項目の表示内容の変更を指示すれば良い。
具体的に説明すると、書換え諸元データのシーン情報にディーラーフラグが設定されている場合には、ディーラー環境において修理工程での専用の画面表示が必要となるので、ユーザ用の画面ではなく、ディーラー用の専用の画面を表示すれば良い。即ち、ユーザがアプリプログラムの書換えに関する操作を行うのではなく、ディーラーの作業者がアプリプログラムの書換えに関する操作を行うので、ディーラーの作業用に「後で」ボタンや「戻る」ボタンが表示に設定されることで、「後で」ボタンや「戻る」ボタンを表示するようにすれば良い。尚、例えば「ディーラーでの書換えを実施してください」等のガイダンスを表示し、ディーラーへの車両の入庫を促しても良い。
書換え諸元データのシーン情報に工場用フラグが設定されている場合には、工場環境での製造工程では画面表示を必要としないので、画面を表示しないようにすれば良い。
書換え諸元データのシーン情報に機能更新通知フラグが設定されている場合には、ユーザがカスタマイズで表示不要の設定をしていても、ユーザへ確実に変更内容を通知するための画面表示が必要となるので、カスタマイズの設定に拘らずユーザ向けの画面を表示すれば良い。即ち、ユーザが承諾を不要と判断している場合でも、承諾を強制的に実施させ、承諾画面を強制的に表示するようにすれば良いので、上記したように「後で」ボタンや「戻る」ボタンが表示に設定されることで、「後で」ボタンや「戻る」ボタンを表示するようにすれば良い。
書換え諸元データのシーン情報に強制実行フラグが設定されている場合には、ユーザがカスタマイズで表示必要の設定をしており、ユーザが承諾を行わない場合でも、車両のソフトウェア更新を確実に実施するための強制実行が必要となるので、カスタマイズの設定に拘らずユーザ向けの画面を表示すれば良い。即ち、ユーザが承諾必要と判断していながら承諾不要でもアプリプログラムの書換えを実施するので、上記したように「後で」ボタンや「戻る」ボタンが非表示に設定されることで、「後で」ボタンや「戻る」ボタンを表示しないようにすれば良い。又、承諾をすることを前提とした機能となるので、画面自体を表示せず承諾を得たものとして書換えを実行しても良い。
以上に説明したように、CGW13は、進捗表示の画面表示制御処理を行うことで、カスタマイズモードが設定されている場合に、カスタマイズモードの設定内容に応じた画面表示を表示端末5に指示するようにした。書換えの進捗に応じた画面表示をユーザがカスタマイズすることができる。
(25)プログラム更新の報知制御処理
プログラム更新の報知制御処理について図247から図253を参照して説明する。車両用プログラム書換えシステム1は、CGW13においてプログラム更新の報知制御処理を行う。
図247に示すように、CGW13は、プログラム更新の報知制御部91において、フェーズ特定部91aと、表示指示部91bと、インジケータ表示制御部91cと、アイコン表示制御部91dと、詳細情報表示制御部91eと、無効化指示部91fと、を備える。フェーズ特定部91aは、プログラム更新の進捗状況としてのフェーズを特定する。フェーズ特定部91aは、プログラム更新のフェーズとして、キャンペーン通知、ダウンロード承諾、ダウンロード実行中、インストール承諾、インストール実行中、アクティベート承諾、アクティベート実行中及び更新完了を特定する。
表示指示部91bは、プログラム更新のフェーズがフェーズ特定部91aにより特定されると、その特定されたプログラム更新のフェーズに応じた態様でインジケータを表示するように指示する。インジケータ表示制御部91cは、表示指示部91からインジケータを表示するように指示されると、その指示にしたがってインジケータを表示制御する。具体的には、インジケータ表示制御部91cは、メータ装置45においてインジケータ46を点灯制御する。
アイコン表示制御部91dは、インジケータ表示制御部91cがインジケータを表示制御することに追従し、車載ディスプレイ7においてアイコンを表示制御する。詳細情報表示制御部91eは、インジケータ表示制御部91cがインジケータを表示制御することに追従し、車載ディスプレイ7又は携帯端末6においてプログラム更新に係るアイコン及び詳細情報を表示制御する。アイコンとは、図68に示すキャンペーン通知アイコン501aであり、詳細情報とは、例えば図33に示すポップアップ表示されるキャンペーン通知画面502や、図70及び図71に示すダウンロード承諾画面等である。詳細情報表示制御部91eは、フェーズ特定部91aにより特定されたプログラム更新のフェーズに応じた態様でアイコンを表示するように指示したり、フェーズ及びユーザ操作に応じた詳細情報画面を表示するように指示したりする。
無効化指示部91fは、駐車中にプログラム更新が行われることで電源管理ECU20が電源制御を行う場合であってもユーザ操作の受付の無効化を電源管理ECU20やユーザ操作に関わる各ECU19に指示する。例えばエンジンECU47(図243参照)にユーザ操作の受付の無効化を指示しておくことで、書換え対象ECU19のメモリ構造が1面メモリであり、駐車中にインストールを行う場合、ユーザがエンジンを始動させる操作を行ったとしても、受付を無効化し、エンジンが始動しないように抑制する。又、電源管理ECU20にユーザ操作の無効化を指示しておくことで、書換え対象ECU19のメモリ構造が1面メモリであり、駐車中にIG電源オンしてインストールを行う場合、ユーザがIG電源をオフする操作を行ったとしても、受付を無効化し、IG電源がオフされないように抑制する。このとき、無効化指示部91fは、車載ディスプレイ7にユーザ操作の受付が無効化されている旨の報知を行うように指示すると良い。
次に、上記した構成の作用について図248から図253を参照して説明する。CGW13は、プログラム更新の報知制御プログラムを実行し、プログラム更新の報知制御処理を実行する。
CGW13は、プログラム更新の報知制御処理を開始すると、プログラム更新のキャンぺーンが発生しているか否かを判定する(S2501)。CGW13は、プログラム更新のキャンぺーンが発生していると判定すると(S2501:YES)、プログラム更新のフェーズ及びメモリ構成を特定する(S2502、フェーズ特定手順に相当する)。CGW13は、その特定したプログラム更新のフェーズに応じた態様でインジケータ46を表示するようにメータ装置45に指示し(S2503、表示指示手順に相当する)。その特定したプログラム更新のフェーズに応じたアイコンを表示するように車載ディスプレイ7に指示する(S2504)。
CGW13は、詳細表示要求の有無を判定し(S2505)、詳細表示要求の有りを判定すると(S2505:YES)、車載ディスプレイ7とデータ通信可能であるか否かを判定する(S2506)。CGW13は、例えば図32に示すキャンペーン通知アイコン501a、図33に示す「確認する」ボタン502a、図34に示す「詳細確認」ボタン503b等をユーザが押下した場合に、詳細表示要求有りと判定する。CGW13は、車載ディスプレイ7とデータ通信可能であると判定すると(S2506:YES)、詳細情報を取得し(S2507)、詳細情報を表示するように車載ディスプレイ7に指示し(S2508)、詳細情報を表示するようにセンター装置3に指示する(S2509)。
CGW13は、キャンペーン通知と共に受信した報知内容や、配信諸元データの報知内容を取得し、車載ディスプレイ7に通知して詳細情報表示を指示する。又、CGW13は、車載ディスプレイ7と同様の内容が携帯端末6にも表示されるようにセンター装置3へ詳細情報の表示指示としてフェーズ及びユーザの操作内容を通知する。
CGW13は、プログラム更新のイベントが終了したか否かを判定する(S2510)。
CGW13は、例えばアクティベートが完了し、プログラム更新が完了したことをユーザが確認したら、イベント終了と判定する。CGW13は、プログラム更新のイベントが終了していないと判定すると(S2510:NO)、ステップS2502に戻り、ステップS2502以降を繰り返す。CGW13は、キャンペーン通知、ダウンロード承諾、ダウンロード実行中、インストール承諾、インストール実行中、アクティベート承諾、アクティベート実行中及び更新完了の各フェーズにおいて、ステップS2502以降を繰り返す。
CGW13は、プログラム更新のイベントが終了したと判定すると(S2510:YES)、プログラム更新の報知制御処理を終了する。
メータ装置45は、ユーザが確認可能な所定位置にインジケータ46が配置されており、CGW13から報知要求通知を受信すると、アプリプログラムの書換え中の報知としてインジケータ46を点灯又は点滅させる。ここで、点滅に代えて、インジケータ46の色を変えたり輝度を挙げたりする等の通常の点灯表示よりも強調される点灯表示としても良い。即ち、通常の表示よりも強調される表示であれば良い。尚、プログラム更新に関するインジケータ46は一つであり、一の意匠で構成される。
図249に示すように、メータ装置45は、アプリプログラムの書換え対象が2面メモリの場合、1面サスペンドメモリの場合、1面単独メモリの場合で、各フェーズにおけるインジケータの報知態様を異ならせる。具体的には、メータ装置45は、CGW13から指定されたフェーズ及びメモリ構成に応じて、インジケータ46の報知態様を特定し、その特定した報知態様にしたがって報知する。又、メータ装置45に代えて、インジケータ表示制御部91cがインジケータ46の報知態様を制御しても良く、インジケータ表示制御部91cがインジケータ46の報知態様を特定し、その報知態様でインジケータ46を点灯制御するようにメータ装置45へ指示しても良い。
インジケータ表示制御部91cは、図249に示すように、インストールやアクティベート等の車両の走行に制約が生じ得るフェーズにおいて、インジケータ46を例えば緑色で点滅表示する。インジケータ表示制御部91cは、書換え対象ECU19が2面メモリの場合、アクティベート実行中のフェーズのみで点滅表示する。インジケータ表示制御部91cは、書換え対象ECU19が1面サスペンドメモリの場合、IGオフ中のインストール実行中のフェーズ、アクティベート承諾のフェーズ及びアクティベート実行中のフェーズで点滅表示する。インジケータ表示制御部91cは、書換え対象ECU19が1面メモリの場合、インストール実行中のフェーズ、アクティベート承諾のフェーズ、及びアクティベート実行中のフェーズで点滅表示する。即ち、キャンペーン通知フェーズ、ダウンロードフェーズ及びアクティベート完了後のフェーズ(IGオフ時、IGオン時、確認操作時)におけるインジケータ46の表示は、メモリ構成に依らず共通であるが、インストールフェーズ及びアクティベートフェーズにおけるインジケータ46の表示は、メモリ構成に依って異なる表示態様となる。ここで、図249に示すIGオフ時とは、駐車中にアクティベートが実行され、アクティベート完了に伴いIG電源をオフした際の表示態様であり、IG電源オフに伴いインジケータ46を消灯させる。その後、ユーザ操作によりIG電源オンされた際は、インジケータ46を点灯させる。これは、プログラム更新が全て完了したことをユーザに報知するためである。そして、図91に示す確認操作画面510において、ユーザが「OK」ボタン510bを押下すると、確認操作が行われたと判断し、インジケータ46を消灯させる。
以下、メータ装置45がインジケータ46の報知態様を制御する場合を説明するが、上記したようにインジケータ表示制御部91cがインジケータ46の報知態様を制御しても良い。図250には、書換え対象ECU19のメモリ種別が2面メモリの場合におけるインジケータの報知態様を示す。CGW13からの指示に基づき、メータ装置45は、キャンペーン通知からアクティベート承諾までのフェーズではインジケータ46を点灯させ、アクティベート実行中のフェーズではインジケータ46を点滅させる。メータ装置45は、その後、IGオフではインジケータ46を消灯させ、IGオンではインジケータ46を点灯させ、ユーザが更新完了に対する確認操作を行うと、インジケータ46を消灯させる。即ち、2面メモリの場合、車両の走行に制約が生じる可能性があるのは、アクティベート実行中だけである。アクティベートの実行だけは、車両が駐車状態において行うため、車両を走行させることができない期間となる。そのため、メータ装置45は、アクティベート実行中のフェーズではインジケータ46を点滅させる。尚、ここでのインジケータは、所定の意匠であり、正常に進捗している場合は緑色で表示する。
図251には、書換え対象ECU19のメモリ種別が1面サスペンドメモリの場合におけるインジケータの報知態様を示す。CGW13からの指示に基づき、メータ装置45は、アプリプログラムの書換え対象が1面サスペンドメモリの場合には、キャンペーン通知からインストール承諾までのフェーズではインジケータ46を点灯させ、インストール実行中ではIGオンでインジケータ46を点灯させ、IGオフでインジケータ46を点滅させる。即ち、メータ装置45は、IGオン状態では1面サスペンドメモリECUのフラッシュメモリへの書込みが実行されないため、インジケータ46を点灯させるが、IGオフ状態ではフラッシュメモリへの書込みが実行されているため、インジケータ46を点滅させる。メータ装置45は、アクティベート承諾からアクティベート実行中までのフェーズではインジケータ46を点滅させる。その後、IGオフではインジケータ46を消灯させ、IGオンではインジケータ46を点灯させ、ユーザが更新完了に対する確認操作を行うと、インジケータ46を消灯させる。即ち、1面サスペンドメモリの場合、車両の走行に制約が生じる可能性があるのは、IGオフでのインストール実行中からアクティベート実行中までである。そのため、メータ装置45は、これらのフェーズではインジケータ46を点滅させる。ここで、1面サスペンドメモリの場合、非運用面へのインストール実行中であっても、そのインストールを中断することで、運用面を起動して車両を走行制御することが可能である。そのため、2面メモリの場合と同様、車両を走行させることができないアクティベート実行中のみを点滅表示としても良い。
図252には、書換え対象ECU19のメモリ種別が1面メモリの場合におけるインジケータの報知態様を示す。CGW13からの指示に基づき、メータ装置45は、アプリプログラムの書換え対象が1面単独メモリの場合には、キャンペーン通知からインストール承諾までのフェーズではインジケータ46を点灯させ、インストール実行中からアクティベート実行中までのフェーズではインジケータ46を点滅させる。その後、IGオフではインジケータ46を消灯させ、IGオンではインジケータ46を点灯させ、ユーザが更新完了に対する確認操作を行うと、インジケータ46を消灯させる。即ち、1面メモリの場合、車両の走行に制約が生じる可能性があるのは、インストール実行中からアクティベート実行中までである。そのため、メータ装置45は、これらのフェーズではインジケータ46を点滅させる。
又、メータ装置45は、1回のキャンペーン通知でプログラムの書換え対象ECU19として2面メモリ、1面サスペンドメモリ、1面単独メモリのECU19が含まれる場合には、2面メモリ、1面サスペンドメモリ、1面単独メモリの順序にしたがってECU19のアプリプログラムの書換えを行う。CGW13は、キャンペーン通知後に、2面メモリのECU19に対するダウンロード承諾からインストール実行中までを行い、メータ装置45は、この期間でインジケータ46を点灯させる。CGW13は、2面メモリのECU19に対するインストール実行中のフェーズを終えると、1面サスペンドメモリのECU19に対するダウンロード承諾からインストール実行中までを行い、メータ装置45は、この期間でインジケータ46を点灯させる。CGW13は、1面サスペンドメモリのECU19に対するインストール実行中のフェーズを終えると、1面単独メモリのECU19に対するダウンロード承諾からインストール承諾までを行い、メータ装置45は、この期間でインジケータ46を点灯させる。
メータ装置45は、1面単独メモリのインストール実行中から、これらのメモリ種別が異なる3種のECU19に対するアクティベート実行中まではインジケータ46を点滅させる。メータ装置45は、その後のIGオフではインジケータ46を消灯させ、IGオンではインジケータ46を点灯させ、ユーザが更新完了に対する確認操作を行うと、インジケータ46を消灯させる。
又、メータ装置45は、1回のキャンペーン通知でプログラムの書換え対象ECU19として2面メモリ、1面サスペンドメモリ、1面単独メモリのECU19が含まれる場合に、以下のように制御しても良い。メータ装置45は、2面メモリ、1面サスペンドメモリ、1面単独メモリの順序にしたがってECU19のアプリプログラムの書換えを行う。CGW13は、キャンペーン通知後に、これら書換え対象ECU19の更新データが含まれる配信パッケージのダウンロード承諾及びダウンロード実行中のインジケータ46として、緑色の所定意匠を点灯させるように指示する。その後、CGW13は、インストール承諾のインジケータ46として、緑色の所定意匠を点灯させるように指示する。尚、ここでのインストール承諾は、1面単独メモリのECU19が含まれている都合上、アクティベート承諾も兼ねる。インストールに対するユーザの承諾が得られると、CGW13は、1番目として2面メモリのECU19へのインストールを実行する。2面メモリのECU19へのインストールを実行する間、メータ装置45は、インジケータ46を点灯させる。CGW13は、2面メモリのECU19に対するインストール実行中のフェーズを終えると、1面サスペンドメモリのECU19へのインストールを実行する。1面サスペンドメモリのECU19へのインストールを実行する間、メータ装置45は、インジケータ46を点灯させる。CGW13は、1面サスペンドメモリのECU19に対するインストール実行中のフェーズを終えると、1面単独メモリのECU19に対するインストールを実行する。1面サスペンドメモリのECU19へのインストールを実行する間、メータ装置45は、インジケータ46を点滅させる。CGW13は、これら書換え対象ECU19のインストールが全て完了すると、インジケータ46の点滅を継続させたまま、アクティベートを実行する。CGW13は、その後のIGオフではインジケータ46を消灯させるようメータ装置45へ指示し、IGオンではインジケータ46を点灯させるようメータ装置45へ指示し、ユーザが更新完了に対する確認操作を行うと、インジケータ46を消灯させるようにメータ装置46へ指示する。
図250~図252に示した各フェーズにおいて、CGW13は、車載ディスプレイ7へアイコン表示の指示も行う。CGW13は、キャンペーン通知フェーズでは、図68に示すキャンペーン通知アイコン501aを表示するように指示する。CGW13は、ダウンロード承諾フェーズでも、このキャンペーン通知アイコン501aの表示を継続する。CGW13は、ダウンロード実行中フェーズでは、図72に示すダウンロード実行中アイコン501bを表示するように指示する。CGW13は、インストール承諾フェーズでは、このダウンロード実行中アイコン501bの表示を継続しても良いし、キャンペーン通知アイコン501aを再度表示するように指示しても良い。CGW13は、インストール実行中フェーズでは、図77に示すインストール実行中アイコン501cを表示するように指示する。CGW13は、アクティベート承諾フェーズでは、このインストール実行中アイコン501cの表示を継続しても良いし、キャンペーン通知アイコン501aを再度表示するように指示しても良い。CGW13は、アクティベート実行中フェーズ及びその後のIGオフ時では、アイコン表示を行わない。CGW13は、IGオン時には、キャンペーン通知アイコン501aを再度表示するように指示しても良いし、図80に示すようにアクティベート完了通知画面509をポップアップ表示させても良い。CGW13は、ユーザが更新完了に対する確認操作を行うと、アイコン表示を行わない。尚、プログラム更新に関するアイコン表示は一つであり、各フェーズに応じた意匠で構成される。
CGW13は、上記したようにアプリプログラムの書換え中の報知をインジケータ46に指示する際に、アプリプログラムの書換え中に異常が発生したときには、正常時とは異なる報知態様とする。CGW13は、アプリプログラムの書換えが正常に進んでいるときには、例えば緑色で点灯表示や点滅表示を指示し、異常が発生したときには、例えば黄色や赤色で点灯表示や点滅表示を指示する。CGW13は、異常の程度に応じて色を異ならせても良く、例えば異常の程度が比較的大きいときには赤色で点灯表示や点滅表示を指示し、異常の程度が比較的小さいときには黄色で点灯表示や点滅表示を指示しても良い。ここでいう、異常とは、配信パッケージをダウンロード不能な状態、書込みデータをインストール不能な状態、書換え対象ECU19において書込みデータを書込み不能な状態、書込みデータが不正な状態等を含む。
車載ディスプレイ7は、詳細表示として、前述したキャンペーン通知画面502、ダウンロード承諾画面503、ダウンロード実行中画面504、ダウンロード完了通知画面505、インストール承諾506、インストール実行中画面507、アクティベート承諾画面508、IGオン時画面509、更新完了に対する確認操作時画面510を、ユーザの操作に基づいて順次表示する。車載ディスプレイ7と同様の詳細表示は、センター装置3と通信可能に接続された携帯端末6でも表示可能である。例えば車載ディスプレイ7が搭載されていない車両では、ハンドルスイッチの操作等によりユーザが詳細表示を要求した場合、CGW13は、DCM12を介してセンター装置3に詳細表示を要求する。センター装置3は、詳細表示のコンテンツを作成し、そのコンテンツを携帯端末6が表示することで、ユーザは携帯端末6にて詳細情報を確認することができる。
図253に示すように、CGW13は、駐車中にIG系ECUやACC系ECUの1面サスペンドメモリや1面単独メモリのアプリプログラムを書換える場合には、電源管理ECU20を強制的に起動し、車両電源をオンの状態とする。この場合、電源管理ECU20が強制的に起動すると、電源管理ECU20の動作によりメータ装置45や車載ディスプレイ7が起動することになる。そのため、CGW13は、プログラム更新に関する報知の抑制をメータ装置45や車載ディスプレイ7に指示する。メータ装置45は、CGW13からプログラム更新の報知の抑制が指示されると、前述したインジケータ46の点灯や点滅を行わない。車載ディスプレイ7は、CGW13からプログラム更新の報知の抑制が指示されると、前述した詳細表示を行わない。即ち、駐車中に行うインストールやアクティベートにおいて、ユーザが乗車していない状況の場合は、プログラム更新に関する報知は不要であるため、報知が行われないように制御する。
又、電源管理ECU20が強制的に起動し、車両電源をオンの状態とすると、ユーザからのプッシュスイッチの操作を受付けてエンジン制御を可能となるが、CGW13は、ユーザ操作の受付の無効化を電源管理ECU20に指示し、ユーザ操作の受付の無効化の報知をメータ装置45や車載ディスプレイ7及びユーザ操作に関わるECU19に指示する。メータ装置45は、CGW13からユーザ操作の受付の無効化が指示されると、ユーザがメータ装置45にて操作を行っても、その操作の受付を無効化する。同様に、車載ディスプレイ7は、CGW13からユーザ操作の受付の無効化が指示されると、ユーザが車載ディスプレイ7にて操作を行っても、その操作の受付を無効化する。又、エンジンECU47は、CGW13からユーザ操作の受付の無効化が指示されると、ユーザがプッシュスイッチによりエンジンを始動させる操作を行っても、その操作の受付を無効化し、エンジンが始動しないように抑制する。
以上に説明したように、CGW13は、プログラム更新の報知制御処理を行うことで、アプリプログラムの書換え中の報知をメータ装置45に指示するようにした。アプリプログラムの書換え中を携帯端末6や車載ディスプレイ7によりユーザに知らせることができない状況でも、アプリプログラムの書換え中をメータ装置45によりユーザに知らせることで、アプリプログラムの書換え中をユーザに適切に知らせることができる。尚、CGW13は、アプリプログラムの書換えの進捗状況に応じて報知態様を変化させても良い。
(26)電源自己保持の実行制御処理
電源自己保持の実行制御処理について図254から図258を参照して説明する。車両用プログラム書換えシステム1は、CGW13、ECU19、車載ディスプレイ7、電源管理ECU20において電源自己保持の実行制御処理を行う。この場合、CGW13がECU19、車載ディスプレイ7、電源管理ECU20に対して電源自己保持を指示する。即ち、CGW13が車両用マスタ装置に対応し、ECU19、車載ディスプレイ7、電源管理ECU20が車両用スレーブ装置に対応する。CGW13は、第2電源自己保持回路を有しており、車両用スレーブ装置は、第1電源自己保持回路を有している。
図254に示すように、CGW13は、電源自己保持の実行制御部92において、車両電源判定部92aと、書換え中判定部92bと、第1電源自己保持判定部92cと、電源自己保持指示部92dと、第2電源自己保持判定部92eと、第2電源自己保持有効化部92fと、第2停止条件成立判定部92gと、第2電源自己保持停止部92hとを有する。
車両電源判定部92aは、車両電源のオンオフを判定する。書換え中判定部92bは、アプリプログラムの書換え中であるか否かを判定する。書換え中判定部95bは、どの書換え対象ECU19が書換え中であるかも判定する。第1電源自己保持有効化部92cは、車両電源がオフであると車両電源判定部92aにより判定され、プログラムの書換え中であると書換え中判定部92bにより判定されると、車両用スレーブ装置において電源を自己保持する必要性を判定する。即ち、第1電源自己保持有効化部92cは、図8に示す書換え諸元データを参照し、書換え対象ECU19のECU情報の書換え方法が電源自己保持に指定されていれば、電源を自己保持する必要性が有ると判定し、電源制御に指定されていれば、電源を自己保持する必要性が無いと判定する。
電源自己保持指示部92dは、車両用スレーブ装置において電源を自己保持する必要が有ると第1電源自己保持判定部92cにより判定されると、第1電源自己保持回路の有効化を車両用スレーブ装置に指示する。電源自己保持指示部92dは、第1電源自己保持回路の有効化を指示する態様として、電源自己保持の完了時刻を指定する態様、電源自己保持の延長時間を指示する態様、自己保持要求を車両用スレーブ装置に定期的に出力し続ける態様がある。電源自己保持指示部92dは、図44に示す書換え諸元データを参照し、書換え対象ECU19のECU情報の電源自己保持時間で指定されている時間にしたがい、第1電源自己保持回路の有効化を車両用スレーブ装置に指示する。
即ち、電源自己保持指示部92dは、電源自己保持の完了時刻を指定する態様であれば、現在時刻から書換え諸元データで指定されている時間を加算した時刻を完了時刻として指定する。電源自己保持指示部92dは、電源自己保持の延長時間を指定する態様であれば、書換え諸元データで指定されている時間を延長時間として指定する。電源自己保持指示部92dは、自己保持要求を車両用スレーブ装置に定期的に出力し続ける態様があれば、書換え諸元データで指定されている時間が経過するまで自己保持要求を車両用スレーブ装置に定期的に出力し続ける。
第2電源自己保持判定部92eは、車両電源がオフであると車両電源判定部92aにより判定され、プログラムの書換え中であると書換え中判定部92bにより判定されると、自己において電源を自己保持する必要性を判定する。即ち、CGW13がIG電源系又はACC電源系である構成を考慮し、電源を自己保持する必要性を判定する。第2電源自己保持有効化部92fは、自己において電源を自己保持する必要が有ると第2電源自己保持判定部92eにより判定されると、第2電源自己保持回路の有効化する。
この場合、第2電源自己保持有効化部92fは、第2電源自己保持回路が停止中の場合には、第2電源自己保持回路を起動することで、第2電源自己保持回路を有効化する。第2電源自己保持有効化部92fは、第2電源自己保持回路が起動中の場合には、第2電源自己保持回路の動作期間を延長することで、電源自己保持回路を有効化する。
第2停止条件成立判定部92gは、第2電源自己保持回路の電源自己保持の停止条件が成立したか否かを判定する。具体的には、第2停止条件成立判定部92gは、車両バッテリ40のバッテリ残量、タイムアウトの発生、書換え対象ECU19における書換え完了を監視し、車両バッテリ40のバッテリ残量が所定容量未満になったり、タイムアウトが発生したり、書換え対象ECU19が書換えを完了したと判定すると、第2電源自己保持回路の電源自己保持の停止条件が成立したと判定する。第2電源自己保持停止部92hは、第2電源自己保持回路の電源自己保持の停止条件が成立したと第2停止条件成立判定部92gにより判定されると、第2電源自己保持回路を停止させる。
図255に示すように、ECU19は、電源自己保持の実行制御部108において、指示判定部108aと、第1電源自己保持有効化部108bと、第1停止条件成立判定部108cと、第1電源自己保持停止部108dとを有する。指示判定部108aは、CGW13から第1電源自己保持回路の有効化が指示されたか否かを判定する。
第1電源自己保持有効化部108bは、第1電源自己保持回路の有効化が指示されたと指示判定部108aにより判定されると、第1電源自己保持回路を有効化する。第1電源自己保持有効化部108bは、電源自己保持の完了時刻が指定された場合には、その指定された完了時刻まで第1電源自己保持回路を有効化する。第1電源自己保持有効化部108bは、電源自己保持の延長時間が指定された場合には、現在時刻から当該指定された延長時間が経過するまで第1電源自己保持回路を有効化する。第1電源自己保持有効化部108bは、CGW13から自己保持要求を入力する場合には、自己保持要求を入力し続けている限り第1電源自己保持回路を有効化する。
この場合、第1電源自己保持有効化部108bは、第1電源自己保持回路が停止中の場合には、第1電源自己保持回路を起動することで、第1電源自己保持回路を有効化する。第1電源自己保持有効化部108bは、第1電源自己保持回路が起動中の場合には、第1電源自己保持回路の動作期間を延長することで、第1電源自己保持回路を有効化する。尚、第1電源自己保持有効化部108bは、デフォルトの電源自己保持時間を保持しており、第1電源自己保持回路の有効化が指示されなくても、そのデフォルトの電源自己保持時間だけ第1電源自己保持回路を有効化する。即ち、第1電源自己保持有効化部108bは、第1電源自己保持回路の有効化が指示されると、デフォルトの電源自己保持時間と、CGW13からの指示による電源自己保持時間とのうち長い方を優先して第1電源自己保持回路を有効化する。
第1停止条件成立判定部108cは、第1電源自己保持回路の電源自己保持の停止条件が成立したか否かを判定する。具体的には、第1停止条件成立判定部108cは、電源自己保持の対象が書換え対象ECU19であれば、タイムアウトの発生、CGW13からの停止指示を監視し、タイムアウトが発生したり、CGW13からの停止指示を受信したりしたと判定すると、第1電源自己保持回路の電源自己保持の停止条件が成立したと判定する。第1停止条件成立判定部108cは、電源自己保持の対象が車載ディスプレイ7であれば、タイムアウトの発生、ユーザの降車、CGW13からの停止指示を監視し、タイムアウトが発生したり、ユーザの降車を判定したり、CGW13からの停止指示を受信したりしたと判定すると、第1電源自己保持回路の電源自己保持の停止条件が成立したと判定する。第1停止条件成立判定部108cは、電源自己保持の対象が電源管理ECU20であれば、CGW13からの停止指示を監視し、CGW13からの停止指示を受信したと判定すると、第1電源自己保持回路の電源自己保持の停止条件が成立したと判定する。第1電源自己保持停止部108dは、第1電源自己保持回路の電源自己保持の停止条件が成立したと第2停止条件成立判定部108cにより判定されると、第1電源自己保持回路を停止させる。
次に、上記した構成の作用について図256から図258を参照して説明する。ここでは、車両用スレーブ装置が書換え対象ECU19の場合を説明する。CGW13及び書換え対象ECU19は、それぞれ電源自己保持の実行制御プログラムを実行し、電源自己保持の実行制御処理を行う。
CGW13は、電源自己保持の実行制御処理を開始すると、車両電源がオフであるか否かを判定する(S2601、車両電源判定手順に相当する)。CGW13は、車両電源がオフであると判定すると(S2601:YES)、アプリプログラムの書換え中であるか否かを判定する(S2602、書換え中判定手順に相当する)。CGW13は、アプリプログラムの書換え中であると判定すると(S2602:YES)、第2電源自己保持回路を起動し(S2603、第2電源自己保持有効化手順に相当する)、書換え対象ECU19において電源を自己保持する必要性を判定する(S2604、電源自己保持判定手順に相当する)。
CGW13は、書換え対象ECU19において電源自己を保持する必要が有ると判定すると(S2604:YES)、第1電源自己保持回路の有効化を書換え対象ECU19に指示する(S2605、電源自己保持指示手順に相当する)。CGW13は、電源自己保持の停止条件が成立したか否かを判定し(S2606)、電源自己保持の停止条件が成立したと判定すると(S2606:YES)、第2電源自己保持回路を停止させ(S2607)、電源自己保持の実行制御処理を終了する。
以上は、CGW13は、アプリプログラムの書換え中であると判定した場合に電源自己保持回路を起動する構成であるが、車両電源がオフであると判定すると、電源自己保持回路を起動し、アプリプログラムの書換え中であると判定すると、その起動中の電源自己保持回路の動作時間を延長する構成でも良い。
書換え対象ECU19は、電源自己保持の実行制御処理を開始すると、車両電源がオフであるか否かを判定する(S2611)。書換え対象ECU19は、車両電源がオフであると判定すると(S2611:YES)、自己保持回路を起動し(S2612)、電源自己保持の停止条件が成立したか否かを判定し(S2613)、CGW13から電源自己保持回路の有効化が指示されたか否かを判定する(S2614)。書換え対象ECU19は、CGW13から電源自己保持回路の有効化が指示されたと判定すると(S2614:YES)、その起動中の電源自己保持回路の動作期間を延長する(S2615)。書換え対象ECU19は、電源自己保持の停止条件が成立したと判定すると(S2613:YES)、電源自己保持回路を停止させ(S2616)、電源自己保持の実行制御処理を終了する。
以上は、書換え対象ECU19は、車両電源がオフであると判定した場合に電源自己保持回路を起動する構成であるが、車両電源がオフであると判定した場合に電源自己保持回路を起動せず、車両電源がオフであると判定し、且つCGW13から電源自己保持回路の有効化が指示されたと判定すると、停止中の電源自己保持回路を起動させる構成でも良い。
以上は、車両用スレーブ装置が書換え対象ECU19の場合を説明したが、車両用スレーブ装置が車載ディスプレイ7や電源管理ECU20の場合も同様である。図258に示すように、書換え対象ECU19では、インストール準備から書換え後処理までの期間で電源自己保持回路の動作が必要であり、車載ディスプレイ7では、更新承諾待ち、ダウンロード承諾待ち、インストール承諾待ち、アクティベート承諾待ちの期間で電源自己保持回路の動作が必要である。
以上に説明したように、CGW13は、電源自己保持の実行制御処理を行うことで、車両電源がオフであり、アプリプログラムの書換え中であると判定すると、書換え対象ECU19において電源を自己保持する必要性を判定し、電源を自己保持する必要が有ると判定すると、電源自己保持回路の有効化を書換え対象ECU19に指示するようにした。書換え対象ECU19において、CGW13から電源自己保持回路の有効化が指示されたと判定すると、電源自己保持回路を有効化するようにした。電源自己保持回路を有効化することで、アプリプログラムの書換えを行うための動作電源を確保することができ、アプリプログラムの書換えを適切に完了することができる。
上述した特徴的な処理(1)~(26)を含め、プログラム更新の全体シーケンスについて図259から図269を参照して説明する。ここでは、第1バスに接続されるECU(ID1)、ECU(ID2)及びECU(ID3)のアプリプログラムを書換え、第2バスに接続されるECU(ID4)、ECU(ID5)及びECU(ID6)のアプリプログラムを書換えない例について説明する。ECU(ID1)とECU(ID4)が1面単独メモリであり、ECU(ID5)が1面サスペンドメモリであり、ECU(ID2)、ECU(ID3)及びECU(ID6)が2面メモリである。又、ECU(ID1)、ECU(ID4)、ECU(ID5)及びECU(ID6)はIG電源系ECUであり、ECU(ID2)はACC電源系ECUであり、ECU(ID3)は+B電源系ECUである。
まず、事前準備として、ユーザは携帯端末6等を操作し、車両番号(車両の識別番号)や携帯電話番号等の個人情報を入力し、センター装置3に対してアカウントを登録する(S5001)。又、ユーザは携帯端末6等を操作し、実行条件を入力し、プログラム更新の実行を許可する条件として、車両位置や時間帯等を指定する。センター装置3は、携帯端末6を介して受信した個人情報等をデータベースに記憶する(S5002)。
又、車両側システム4は、車両に関する情報をCGW13が収集し(S5011)、DCM12を介してセンター装置3へアップロードする(S5012)。具体的には、プログラムバージョン、各ECU19のメモリ構成、運用面情報、車両に搭載される電装部品、車両位置、車両の電源状態等の情報である。センター装置3は、車両側システム4から受信した情報をデータベースに記憶する(S5013)。
プログラム更新の必要性が生じると、センター装置3は、アプリプログラムの提供事業者であるサプライヤから提供される書込みデータと、データベースに記憶した情報とから、図43及び図44に示す書換え諸元データを生成する。そして、センター装置3は、これら書込みデータ及びその認証子と、書換え諸元データとから、リプログデータを生成する。センター装置3は、生成したリプログデータと、別途生成される配信諸元データ(図45)と、パッケージ認証子とを1つのファイルにパッケージングし、配信パッケージを生成し、登録する(S5021)。
センター装置3は、配信パッケージの準備が整った後、ユーザに対してプログラム更新の告知を行う。センター装置3は、データベースに記憶した個人情報を参照し、携帯端末6に対し、ショートメッセージサービス(SMS)を送信する(S5031)。ユーザ操作により、携帯端末6は、SMSに記載されたURL(Uniform Resource Locator)に接続し、告知内容を表示する(S5032)。携帯端末6は、ユーザ操作によるプログラム更新に承諾する旨、又は不承諾の旨をセンター装置3に通知する(S5033)。センター装置3は、ユーザの意思情報(承諾又は不承諾)をデータベースに登録する(S5034)。ここで、携帯端末6に代えて、車載ディスプレイ7を用いて、ユーザへの告知を行うことも可能である。
CGW13は、センター装置3から送信された配信諸元データを、DCM12を介して受信し、車載ディスプレイ7に転送する(S5035)。車載ディスプレイ7は、配信諸元データを解析し、告知内容である表示文言等を表示する(S5036)。又、車載ディスプレイ7は、アイコン等の画像データを表示し、ユーザがプログラム更新に承諾するか否かの入力を受け付ける。CGW13は、ユーザの意思情報を車載ディスプレイ7から受信し、DCM12を介してセンター装置3に通知する(S5037)。
ユーザからプログラム更新の承諾を得た場合、車両側システム4は、センター装置3から配信パッケージをダウンロードする。まず、センター装置3は、予めユーザに指定された実行条件を充足しているかチェックする(S5041)。センター装置3は、実行条件のうち1つでも充足していない場合、配信パッケージをDCM12に送信しない。センター装置3は、全ての実行条件を充足している場合、配信パッケージをDCM12に送信する(S5042)。DCM12は、センター装置3から配信パッケージをダウンロードすると、そのダウンロードした配信パッケージをフラッシュメモリに保存する。そして、DCM12は、配信パッケージから配信パッケージ認証子を抽出し、リプログデータ及び配信諸元データの完全性を検証する(S5043)。
DCM12は、例えばCGW13が記憶する鍵情報を用いて、リプログデータ及び配信諸元データの認証子を演算する。DCM12は、演算した認証子と、配信パッケージから抽出した配信パッケージ認証子とを比較し、一致する場合は検証成功と判定し、一致しない場合は検証失敗と判定する。DCM12は、検証失敗と判定すると、配信パッケージを削除すると共に、CGW13及びセンター装置3に検証失敗の旨を通知する。
DCM12は、配信パッケージに対する検証成功と判定した場合、配信パッケージに含まれるリプログデータを、図46に示すようにアンパッケージングし、各書換え対象ECU19に対する書込みデータ及び書換え諸元データとに分割する(S5044)。書換え諸元データは、DCM用の書換え諸元データと、CGW用の書換え諸元データとに分割しておく。
DCM12は、CGW用の書換え諸元データをCGW13に送信する(S5045)。CGW13は、DCM12から受信したCGW用の書換え諸元データを解析し、必要な情報を抽出した後、DCM12との間で各ECU19に対する書込みデータの認証を行う(S5046)。CGW13は、例えば自己が記憶するECU(ID1)の鍵情報を用いて、ECU(ID1)の書込みデータ(差分データ)の認証子を演算する。CGW13は、演算した認証子と、リプログデータから抽出した認証子とを比較し、一致する場合は検証成功と判定し、一致しない場合は検証失敗と判定する。CGW13は、検証失敗と判定すると、配信パッケージを削除すると共に、DCM12及びセンター装置3に検証失敗の旨を通知する。ここで、CGW13は、何れか1つの書込みデータに対して検証失敗と判定された場合、全てのECU19に対してプログラム更新を行わないとする。
CGW13は、全ての書込みデータに対して検証成功と判定すると、DCM12から配信諸元データを受信し、その受信した配信緒元データを車載ディスプレイ7に転送する(S5047)。車載ディスプレイ7は、CGW13から転送された配信諸元データを記憶する。以上のダウンロード処理が完了すると、CGW13は、DCM12を介してセンター装置3にダウンロード完了の旨を通知する(S5048)。
センター装置3は、車両側システム4からダウンロード完了が通知されると、携帯端末6に対し、SMSを送信する(S5049)。携帯端末6は、ユーザ操作により、SMSに記載されたURLに接続し、インストール予約画面を表示する(S5050)。携帯端末6は、ユーザ操作により入力されたインストール日時をセンター装置3に通知する(S5051)。センター装置3は、個人情報と紐付けて、インストール日時をデータベースに記憶する(S5052)。ここで、携帯端末6に代えて、車載ディスプレイ7を用いて、ユーザにインストール日時を予約させることも可能である。車載ディスプレイ7は、CGW13からダウンロード完了を通知されると(S5053)、インストール予約画面を表示する(S5054)。CGW13は、車載ディスプレイ7から受信したインストール日時を、DCM12を介してセンター装置3に通知する(S5055)。
センター装置3は、現在日時がデータベースに登録したインストール日時になった場合、インストール開始を車両側システム4に指示する(S5071)。DCM12は、センター装置3からインストールが指示されると、インストール実行条件をチェックする(S5072)。DCM12は、例えば車両位置やセンター装置3との通信状況等をチェックする。DCM12は、全ての実行条件を充足している場合、パッケージ認証子を用いて配信パッケージを認証する(S5073)。DCM12は、認証に成功すると、配信パッケージをアンパッケージングし(S5074)、DCM用の書換え諸元データ及びCGW用の書換え諸元データを抽出し、ECU19毎の書込みデータに分割した上で、インストール開始をCGW13に通知する(S5075)。
CGW13は、DCM12からインストール開始が通知されると、DCM12から取得したCGW用の書換え諸元データを解析し、どのECU19をどの順序で書換えるか判定する(S5076)。ここでは、1番目にECU(ID1)を、2番目にECU(ID2)を、3番目にECU(ID3)を書換える順序とする。CGW13は、DCM12が保持する書換え対象ECU19毎の書込みデータを、各認証子を用いて全て検証する(S5077)。ここで、バージョンアップのための書込みデータだけでなく、ロールバックのための書込みデータについても、検証しておくと良い。
CGW13は、書込みデータの検証に成功すると、電源管理ECU20に対し、IG電源オンを要求する(S5078)。駐車中(IGスイッチ42がオフ且つACCスイッチ41がオフ)にインストールする際、書換え対象ECU19がIG系ECU又はACC系ECUである場合、電力を供給して書換え対象ECU19を起動させる必要がある。電源管理ECU20は、IG電源オンと同じ電力供給を行うように電源制御回路43に要求する(S5079)。電源制御回路43によりIG電源ライン39へ電力供給がなされると、IG系ECU及びACC系ECUが起動(ウェイクアップ)する。
その後、CGW13は、非書換え対象ECU19であるECU(ID5)、ECU(ID5)及びECU(ID6)と、2番目以降に書換えるECU(ID2)及びECU(ID3)に対し、スリープするように要求する(S5080)。尚、ここでは、1番目の書換え対象ECU19を書換えた後に2番目の書換え対象ECU19を書換えることとしたが、複数の書換え対象ECU19を同時並行して書換えても良い。この場合、非書換え対象ECU19に対してのみ、スリープするように要求する。
CGW13は、各書換え対象ECU19へのインストールと並行して、バッテリ残量の監視(S5081)及びバスの通信負荷の監視(S5082)を行う。CGW13は、CGW用の書換え諸元データから抽出したバッテリ負荷の値、バス負荷の値(バス負荷テーブル)を参照し、許容値を超えない範囲でインストールを制御する。CGW13は、例えば駐車状態において、バッテリ負荷が許容値に達したら、その時点でインストールを中断する。
又、CGW14は、例えば書換え対象ECU(ID1)が接続される第1バスのバス負荷が許容値に達したら書込みデータをECU(ID1)へ送信する頻度を遅くする。これらの監視は、全ての書換え対象ECU19へのインストールが完了したら終了する。尚、1面単独メモリの場合、インストールの途中で終了することはできないため、インストール開始前に十分なバッテリ残量があることを確認する必要がある。
CGW13は、1番目に書換えるECU(ID1)へインストール開始を通知する(S5101)。ECU(ID1)は、CGW13からインストール開始を通知されると、無線によるプログラム更新モードへ状態を遷移する(S5102)。ECU(ID1)は1面単独メモリメモリECUであるため、並行してアプリプログラムの実行やツールを用いた診断処理を行うことはできず、無線によるプログラム更新専用モードとなる。
CGW13は、1番目に書換えるECU(ID1)へのインストールを行うにあたり、セキュリティアクセス鍵を用いてアクセス認証を行う(S5103)。ECU(ID1)へのアクセス認証に成功すると、CGW13は、書込みデータである全データの情報をECU(ID1)へ送信する。ECU(ID1)は、受信した全データの情報を用いて、書込みデータが自ECUに整合するか否かを判定する(S5104)。ECU(ID1)は、整合すると判定した場合、書込み処理を行う。
CGW13は、DCM12からECU(ID1)への書込みデータのうち所定サイズ(例えば1kバイト)の分割ファイルを取得し、ECU(ID1)へ配信する(S5105)。ECU(ID1)は、CGW13から受信した分割ファイルをフラッシュメモリ33dに書込む(S5106)。ECU(ID1)は、書込みが完了すると、途中から書込みを再開できるよう、どこまで書込んだかのフラッシュメモリアドレスを示すリトライポイントを記憶する(S5107)。リトライポイントとして、フラッシュメモリの消去、書込み、及びそれ以降の処理のうちどこまで実行されたかを示すフラグを記憶しても良い。ECU(ID1)は、リトライポイントを記憶すると、CGW13に書込み完了を通知する(S5108)。
CGW13は、ECU(ID1)から書込み完了の通知を受けると、DCM12を介してセンター装置3へ書換え状況の進捗情報を通知する(S5109)。進捗情報とは、例えばインストールフェーズであること及びECU(ID1)の書込みデータが累積で何バイト書込みを完了したか等のデータである。センター装置3は、DCM12から送信された進捗情報に基づいて、携帯端末6から接続可能なウェブ画面を更新する(S5110)。携帯端末6は、センター装置3に接続し、更新された進捗状況として、例えば現在何%までインストールが進んだか等を表示する(S5111)。これにより、車両が駐車状態であり、ユーザが車外に居る場合であっても、携帯端末6によりインストールの進捗状況を把握することができる。ここで、携帯端末6に代えて、車載ディスプレイ7で進捗を表示することも可能である。CGW13は、ECU(ID1)から書換え完了の通知を受けると、車載ディスプレイ7へ書換え状況の進捗情報を通知する(S5112)。車載ディスプレイ7は、進捗状況の画面を更新して表示する(S5113)。ECU(ID2)、ECU(ID3)のように2面メモリ構成の場合は、車両が走行状態であってもインストールが可能である。そのため、例えば車両がIGスイッチオンである場合には、車載ディスプレイ7が進捗状況を表示すると良い。
CGW13は、ECU(ID1)から書込み完了の通知を受けると、次の書込みデータとして2番目の分割ファイルを取得し、ECU(ID1)に配信する。以降、最後の書込みデータとしてN番目の分割ファイルまで、S5105~S5113の処理を繰返す。ECU(ID1)は、N番目の分割ファイルまで書込みを完了すると、フラッシュメモリの更新プログラムに対して完全性検証を行い、正しく書込まれたか否かを確認する(S5114)。CGW13は、ECU(ID1)から全ての分割ファイルの書込みを完了し、完全性検証に成功した旨の通知を受けると、ECU(ID1)に対してスリープするように要求する(S5115)。ECU(ID1)は、インストールされた更新プログラムで起動することなく、一旦スリープする。
CGW13は、2番目に書換えるECU(ID2)に対し、ウェイクアップするように要求する(S5201)。CGW13は、無線によるプログラム更新であって、インストールを開始する旨をECU(ID2)に通知する(S5202)。ECU(ID2)は、内部状態として、無線によるプログラム更新モードへ状態を遷移する(S5203)。2面メモリであるECU(ID2)は、無線によるプログラム更新モードの間、アプリプログラムの実行やツールによる診断の実行が可能である。CGW13は、ECU(ID2)にアクセス認証を行う(S5204)。ECU(ID2)は、書込みデータである差分データが自ECUに整合するか否かを判定する(S5205)。ECU(ID2)は2面メモリであるため、フラッシュメモリの非運用面に整合する書込みデータか否かを含め、判定する。例えばECU(ID2)のA面が運用面であり、B面が非運用面であるとすると、書込みデータがB面に合致しないアドレスだった場合、以降の処理に進むことなく、CGW13は、書込みデータが誤っている旨をDCM12を介してセンター装置3に通知する。そして、CGW13は、後述するロールバックの処理を行う。書込みデータが自ECUに整合すると判定された場合、ECU(ID2)への書込み処理を行う。以降、ECU(ID2)に関するS5206~S5216までの処理は、S5105~S5115と同様である。S5207において、2面メモリであるECU(ID2)へ差分データを書込む際は、図54に示すように、旧データと差分データとから差分を復元して新データを生成し、フラッシュメモリ33dに書込む。
CGW13は、ECU(ID2)に対するインストールが全て完了し、ECU(ID2)をスリープさせると、3番目に書換えるECU(ID3)に対し、ウェイクアップするように要求する(S5301)。CGW13は、無線によるプログラム更新であって、インストールを開始する旨をECU(ID3)に通知する(S5302)。ECU(ID3)は、内部状態として、無線によるプログラム更新モードへ状態を遷移する(S5303)。CGW13は、ECU(ID3)にアクセス認証を行う(S5304)。ECU(ID3)は、書込みデータである差分データが自ECUに整合するか否かを判定する(S5305)。書込みデータが自ECUに整合すると判定された場合、ECU(ID3)への書込み処理を行う。以降、ECU(ID3)に関するS5306~S5315までの処理は、S5105~S5114と同様である。
CGW13は、ECU(ID3)に対するインストールが全て完了すると、バッテリ残量の監視及びバスの通信負荷の監視を終了する(S5316、S5317)。そして、CGW13は、ECU(ID1)及びECU(ID2)に対してウェイクアップするように要求する(S5401)。
CGW13は、ECU(ID1)、ECU(ID2)及びECU(ID3)を、更新したプログラムで同時に起動させるべく、それぞれのECUに対し、更新したプログラムをアクティベートするように要求する(S5402)。尚、アクティベートの要求に対応しないECUである場合は、アクティベート要求に代えて、電源オフ及び電源オンを通知し、再起動を行わせると良い。
ECU(ID1)は、CGW13からのアクティベート要求を受けると、自己を再起動させる(S5403)。ECU(ID1)は1面単独メモリであるため、再起動により、更新したプログラムで起動されることとなる。ECU(ID1)は、インストール後の再起動が完了すると、CGW13へアクティベート完了と共に更新後のプログラムバージョンを通知する(S5404)。
ECU(ID2)は、CGW13からのアクティベート要求を受けると、記憶している運用面情報をA面からB面に更新し(S5405)、自己を再起動させる(S5406)。そして、ECU(ID2)は、B面で正常に起動すると、CGW13へ更新後のプログラムバージョン及び運用面情報と共にアクティベート完了を通知する(S5407)。
ECU(ID3)は、CGW13からのアクティベート要求を受けると、記憶している運用面情報をA面からB面に更新し(S5408)、自己を再起動させる(S5409)。そして、ECU(ID3)は、B面で正常に起動すると、CGW13へ更新後のプログラムバージョン及び運用面情報と共にアクティベート完了を通知する(S5410)。
CGW13は、ECU(ID1)、ECU(ID2)及びECU(ID3)からのアクティベート完了通知を受けると、DCM12を介してセンター装置3へ書換え対象ECU(ID1)、ECU(ID2)及びECU(ID3)に関する更新後のプログラムバージョン及び運用面情報と共にプログラムの更新完了を通知する(S5411)。センター装置3は、DCM12から通知された情報をデータベースへ登録すると共に(S5412)、進捗状況として完了を示す表示にウェブ画面を更新する(S5413)。携帯端末6は、センター装置3へ接続し、プログラム更新が完了した旨のウェブ画面を表示する(S5414)。又、CGW13は、ECU(ID1)、ECU(ID2)及びECU(ID3)からのアクティベート完了通知を受けると、車載ディスプレイ7へ進捗状況としてプログラム更新が完了した旨を通知する(S5415)。車載ディスプレイ7は、プログラム更新が完了した旨を表示する(S5416)。尚、車両が駐車状態等、進捗表示が不要な場合、CGW13は、車載ディスプレイ7へ進捗を通知しない。
最後に、CGW13は、電源管理ECU20に対し、IG電源オフを要求する(S5418)。電源管理ECU20は、インストール開始前のIGスイッチオフの電源状態に戻すべく電力供給を遮断するように電源制御回路43に要求する。電源制御回路43により、IG電源ライン39及びACC電源ライン38への電力供給が遮断されると、ECU(ID1)、ECU(ID2)、ECU(ID4)、ECU(ID5)及びECU(ID6)は、停止状態となる。
上述の例では、1面単独メモリであるECU(ID1)のプログラム更新を含むため、車両が駐車状態のときに、インストールからアクティベートまでを連続して行うものとして説明した。しかしながら、例えば書換え対象ECU19が全て2面メモリである場合には、走行中にバックグラウンドでインストールを行うことも可能である。又、書換え対象ECU19のインストールが完了した時点で、携帯端末6によりユーザからアクティベートの承諾を得るように構成しても良い。
次に、アプリプログラムのインストール中において、ユーザによりプログラム更新のキャンセルが選択された場合のロールバックシーケンスについて図266から図269を参照して説明する。具体的には、ECU(ID1)に対してインストールが完了し、ECU(ID2)に対してインストール途中の時点でユーザによりキャンセルが選択された場合について説明する。
センター装置3は、携帯端末6よりプログラム更新のキャンセルを通知された場合、車両側システム4へプログラム更新をキャンセルするように指示する(S6001)。そして、センター装置3は、進捗状況としてロールバック中の表示態様にウェブ画面を変更する(S6002)。携帯端末6は、ロールバック中の進捗状況を示すウェブ画面を表示する(S6003)。
CGW13は、DCM12を介してセンター装置3からプログラム更新のキャンセルが指示されると、書換え対象ECU(ID1)、ECU(ID2)及びECU(ID3)のメモリ構成及びインストール状況に基づき、どのECUに対してどのようなロールバック処理が必要か判定する(S6004)。この例においては、ECU(ID2)へのインストールを完了させると共に、ECU(ID1)を元のバージョンに戻すというロールバック処理が必要となる旨を判定する。
そして、CGW13は、車載ディスプレイ7へロールバック用の進捗を通知する(S6005)。車載ディスプレイ7は、CGW13からロールバック用の進捗が通知されると、ロールバック用の表示態様に変更して進捗を表示する(S6006)。車載ディスプレイ7は、例えば「ロールバック中」と表示させると共に、ロールバックが必要なECU(ID1)の進捗を0%、ECU(ID2)の進捗を0%と表示する。
CGW13は、ECU(ID2)に対するロールバック処理として、書込みデータのインストールを継続する。ECU(ID2)は2面メモリであるため、非運用面であるB面へのインストールを途中までで中断し、引き続きA面を運用面として動作することも可能である。しかしながら、B面が途中までインストールされた不完全な状態である場合、次回の差分データを用いたインストール時に、差分を正しく復元できなくなる。よって、ECU(ID2)に対しては最後までインストールを継続する。
具体的には、CGW13は、DCM12からECU(ID2)に対する書込みデータの分割ファイル(例えば1kバイト分)を取得し、ECU(ID2)に配信する(S6007)。ECU(ID2)は、CGW13から受信した分割ファイルをフラッシュメモリ33dに書込む(S6008)。書込みが完了すると、ECU(ID2)は、途中から書込みを再開できるようにリトライポイントを記憶し(S6009)、CGW13に書込み完了を通知する(S6010)。
CGW13は、ECU(ID2)から書込み完了の通知を受けると、DCM12を介してセンター装置3へロールバック状況の進捗情報を通知する(S6011)。ロールバック状況の進捗情報とは、例えばECU(ID2)のロールバックとして何バイトの書込みが必要で、そのうち累積で何バイト書込みを完了したか等のデータである。センター装置3は、DCM12から送信された進捗情報に基づいて、携帯端末6から接続可能なウェブ画面を更新する(S6012)。携帯端末6は、更新された進捗状況として例えば現在何%までロールバックが進んだか等のウェブ画面を表示する(S6013)。ここで、携帯端末6に代えて、車載ディスプレイ7で進捗を表示することも可能である。CGW13は、ECU(ID2)から書換え完了の通知を受けると、車載ディスプレイ7へロールバック状況の進捗情報を通知する(S6014)。車載ディスプレイ7は、進捗状況の画面を更新し、表示する(S6015)。以降、最後の書込みデータとしてN番目の分割ファイルまで、S6007~S6015の処理を繰返す。
ECU(ID2)は、N番目の分割ファイルまで書込むと、フラッシュメモリ33dの更新プログラムの完全性を検証する(S6016)。CGW13は、ECU(ID2)からインストール完了の通知を受けると、ECU(ID2)に対してスリープするように要求する(S6017)。ECU(ID2)は、非運用面であるB面にインストールされた更新プログラムで起動することなく、スリープする。
続いて、CGW13は、ECU(ID1)に対するロールバック処理を行うべくECU(ID1)に対してウェイクアップを要求する(S6101)。CGW13は、ロールバックのためのインストールを開始する旨をECU(ID1)に通知する(S6102)。ECU(ID1)は、CGW13からインストール開始が通知されると、無線によるプログラム更新モードへ状態を遷移する(S6103)。CGW13は、ECU(ID1)とアクセス認証を行う(S6104)。ECU(ID1)は、アクセス認証に成功すると、ロールバック用の書込みデータが自ECUに整合するか否かを判定する(S6105)。ロールバック用の書込みデータが自ECUに整合すると判定された場合、ECU(ID1)への書込み処理を行う。
CGW13は、DCM12からECU(ID1)へのロールバック用の書込みデータのうち所定サイズ(例えば1kバイト)の分割ファイルを取得し、ECU(ID1)へ配信する(S6016)。ECU(ID1)は、CGW13から受信した分割ファイルをフラッシュメモリ33dに書込む(S6107)。ECU(ID1)は、書込みが完了すると、途中から書込みを再開できるよう、どこまで書込んだかのフラッシュメモリアドレスを示すリトライポイントを記憶する(S6108)。ECU(ID1)は、リトライポイントを記憶すると、CGW13に書込み完了を通知する(S6109)。
CGW13は、ECU(ID1)から書込み完了の通知を受けると、DCM12を介してセンター装置3へ書換え状況の進捗情報を通知する(S6110)。センター装置3は、DCM12から送信された進捗情報に基づいて、携帯端末6から接続可能なウェブ画面を更新する(S6111)。携帯端末6は、センター装置3に接続し、更新された進捗状況として、例えば現在何%までロールバックが進んだか等を表示する(S6112)。ここで、携帯端末6に代えて、車載ディスプレイ7で進捗を表示することも可能である。CGW13は、ECU(ID1)から書込み完了の通知を受けると、車載ディスプレイ7へ書換え状況の進捗情報を通知する(S6113)。車載ディスプレイ7は、ロールバックの進捗状況の画面を更新し、表示する(S6114)。CGW13は、ECU(ID1)から書込み完了の通知を受けると、次の書込みデータとして2番目の分割ファイルを取得し、ECU(ID1)に配信する。以降、最後の書込みデータとしてN番目の分割ファイルまで、S6106~S6114の処理を繰返す。
ECU(ID1)は、N番目の分割ファイルまで書込みを完了すると、フラッシュメモリのロールバック用プログラムに対して完全性検証を行い、正しく書込まれたか否かを確認する(S6115)。CGW13は、ECU(ID1)から全ての分割ファイルの書込みを完了し、完全性検証に成功した旨の通知を受けると、バッテリ残量の監視及びバスの通信負荷の監視を終了する(S6116、S6117)。
続いて、CGW13は、ECU(ID2)及びECU(ID3)に対してウェイクアップするように要求する(S6201)。CGW13は、インストールを行う前の旧バージョンで起動すべく、ECU(ID1)、ECU(ID2)及びECU(ID3)に対し、ロールバック用のアクティベートを要求する(S6202)。1面単独メモリであるECU(ID1)は、通常時の書換えと同様、再起動により旧バージョンのプログラムを起動する。2面メモリであるECU(ID2)及びECU(ID3)は、通常時の書換えと異なり、運用面を切り替えることなく、現運用面であるA面のプログラムを起動する。
ECU(ID1)は、CGW13からロールバック用のアクティベート要求を受けると、自己を再起動させる(S6203)。ECU(ID1)は、再起動が完了すると、CGW13へロールバック用のアクティベート完了と共にプログラムバージョンを通知する(S6204)。
ECU(ID2)は、CGW13からロールバック用のアクティベート要求を受けると、記憶している運用面情報を更新することなく、自己を再起動させる(S6205)。ECU(ID2)は、引き続き運用面であるA面で正常に起動すると、CGW13へロールバック用のアクティベート完了と共にプログラムバージョン及び運用面情報を通知する(S6206)。
ECU(ID3)は、CGW13からロールバック用のアクティベート要求を受けると、記憶している運用面情報を更新することなく、自己を再起動させる(S6207)。ECU(ID3)は、引き続き運用面であるA面で正常に起動すると、CGW13へロールバック用のアクティベート完了と共にプログラムバージョン及び運用面情報を通知する(S6208)。
CGW13は、ECU(ID1)、ECU(ID2)及びECU(ID3)からロールバック用のアクティベート完了通知を受けると、DCM12を介してセンター装置3へロールバック完了を通知する(S6209)。ここで、CGW13は、ECU(ID1)、ECU(ID2)及びECU(ID3)に関するプログラムバージョン及び運用面情報も合わせて通知する。センター装置3は、DCM12から通知された情報をデータベースへ登録すると共に(S6210)、進捗状況としてキャンセル完了を示す表示にウェブ画面を更新する(S6211)。携帯端末6は、センター装置3へ接続し、キャンセルが完了した旨のウェブ画面を表示する(S6212)。
又、CGW13は、ECU(ID1)、ECU(ID2)及びECU(ID3)からアロールバック用のアクティベート完了通知を受けると、車載ディスプレイ7へ進捗状況としてロールバックが完了した旨を通知する(S6213)。車載ディスプレイ7は、ロールバックが完了した旨を表示する(S6214)。
最後に、CGW13は、電源管理ECU20に対し、IG電源オフを要求する(S6215)。電源管理ECU20は、インストール開始前のIGスイッチオフの状態に戻すべく、電力供給を遮断するよう、電源制御回路43に要求する。電源制御回路43により、IG電源ライン39及びACC電源ライン38への電力供給が遮断されると、ECU(ID1)、ECU(ID2)、ECU(ID4)、ECU(ID5)及びECU(ID6)は、停止状態となる。
以上のように、CGW13をリプログマスタとして複数の書換え対象ECU19に対するプログラムの更新を行うことができる。本実施形態では、ECU(ID1)、ECU(ID2)及びECU(ID3)を1つのグループとしてアプリプログラムを書換える旨を説明したが、2つ目のグループとしてECU(ID4)、ECU(ID5)及びECU(ID6)についてアプリプログラムを書換える際も同様である。この場合、第1グループのECU19に対してインストール及びアクティベートした後、第2グループのECU19に対してインストール及びアクティベートを行う。
又、DCM12、CGW13、車載ディスプレイ装置7及び電源管理ECU20等のアプリプログラムについても、同様に書換え可能である。ただし、これらのECUは、プログラム更新中にアプリプログラムが動作できる必要があるため、2面メモリで構成されることが望ましい。
本開示は、実施例に準拠して記述されたが、本開示は当該実施例や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。