JP6784636B2 - 制御装置、プログラム更新システム、プログラム更新方法 - Google Patents

制御装置、プログラム更新システム、プログラム更新方法 Download PDF

Info

Publication number
JP6784636B2
JP6784636B2 JP2017079821A JP2017079821A JP6784636B2 JP 6784636 B2 JP6784636 B2 JP 6784636B2 JP 2017079821 A JP2017079821 A JP 2017079821A JP 2017079821 A JP2017079821 A JP 2017079821A JP 6784636 B2 JP6784636 B2 JP 6784636B2
Authority
JP
Japan
Prior art keywords
data
update
program
unit
storage area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017079821A
Other languages
English (en)
Other versions
JP2018180948A (ja
Inventor
浩二 浦脇
浩二 浦脇
秀敏 寺岡
秀敏 寺岡
中原 章晴
章晴 中原
黒澤 憲一
憲一 黒澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2017079821A priority Critical patent/JP6784636B2/ja
Priority to DE112018001315.4T priority patent/DE112018001315T5/de
Priority to US16/603,618 priority patent/US11513783B2/en
Priority to CN201880024460.4A priority patent/CN110494845B/zh
Priority to PCT/JP2018/010857 priority patent/WO2018190080A1/ja
Publication of JP2018180948A publication Critical patent/JP2018180948A/ja
Application granted granted Critical
Publication of JP6784636B2 publication Critical patent/JP6784636B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3097Grammar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40267Bus for use in transportation systems
    • H04L2012/40273Bus for use in transportation systems the transportation system being a vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、制御装置、プログラム更新システムおよびプログラム更新方法に関する。
近年の自動車には、様々な電子制御装置(ECU:Electronic Control Unit)が搭載されている。各ECUは、様々なプログラムを実行すると共に、CAN(Controller Area Network)等の車載ネットワークを介して通信を行うことで、自動車の動作に関する様々な機能を実現している。
従来、これらのECUのプログラムを更新するリプログラミング手法として、CANを介して新たなプログラムを各ECUに送信し、各ECU内の不揮発性メモリに保存することが提案されている。しかしながら、自動車に搭載される様々なECUの中には、自動車の多機能化や自動車に搭載される各種センサの増加などに伴って、プログラムの増大化が進んでいるものがある。そのようなECUに対しては、リプログラミングに要する時間(以降「リプロ時間」と称する)が長くなるという問題がある。
ECUのリプロ時間の短縮に関して、特許文献1では、各ECUが対応可能なプログラムの更新方式の違いや、各ECUの状況に応じて、各ECUのリプログラミングにおいて適用する更新方式を切り替える手法を考案している。更新方式としては、新プログラムのデータを一定の大きさごとに分割し、分割した各データを圧縮してECUに送信する「圧縮更新方式」や、既にECUに保存されている旧プログラムと新プログラムとの差分データを圧縮してECUに送信する「差分更新方式」などがある。特許文献1の手法では、これらの更新方式を適用してECUに送信するデータの総量を削減することで、ECUのリプロ時間を短縮する効果が得られる。
また、ECUのリプロ時間の短縮に関して、特許文献2では、送信データの圧縮率を高めるアプローチも提案されている。LZ77などのいわゆる辞書式圧縮法によるデータ圧縮では、一般的に、データストリーム中の既出パターンを見つけるために参照される参照辞書のサイズを広げることで、データの圧縮率を高められる。特許文献2の手法では、データストリームを一連のブロック群に分割し、圧縮の対象ブロックと当該対象ブロックより前方のブロック群の圧縮結果とを参照辞書として当該対象ブロックを圧縮することで、圧縮率を高める効果が得られる。
特開2016−170740号公報 特許第4888566号
圧縮データを受信した装置において、その圧縮データを解凍するためには、解凍したデータを一時的に保存するための解凍バッファを揮発性メモリ上に設ける必要がある。特許文献2に記載された従来の方法では、この解凍バッファの容量に合わせて、圧縮時に用いられる参照辞書のサイズが設定される。しかしながら、ECUのように自動車に搭載される装置では、一般的にハードウェア資源に余裕があまりなく、解凍バッファとして使用可能な揮発性メモリの容量が少ない。そのため、参照辞書のサイズをあまり大きくすることができず、圧縮率を高めることが困難である。このように従来の手法では、特許文献1のように複数の更新方式を切り替えてプログラム更新を行う場合に、プログラム更新の高速化が不十分であった。
本発明による制御装置は、複数の更新方式のうちいずれかを指定する情報を有するヘッダと、圧縮された更新データと、を含む配信データを受信する受信部と、前記受信部により受信された前記配信データから前記更新データを解凍する解凍部と、前記解凍部により解凍された前記更新データを用いて、前記ヘッダで指定された更新方式に従って更新後の新プログラムを復元する復元部と、第1の記憶領域と第2の記憶領域と、を備え、前記解凍部は、前記ヘッダで指定された更新方式に基づいて、第1の解凍方式と第2の解凍方式のいずれを用いるかを切り替え、前記第1の解凍方式は、前記第2の記憶領域を使用せずに前記第1の記憶領域を使用して前記更新データを解凍する手法であり、前記第2の解凍方式は、前記第1の記憶領域および前記第2の記憶領域を使用して前記更新データを解凍する手法である
本発明によるプログラム更新システムは、ネットワークを介して互いに接続されたサーバと制御装置とを備え、前記サーバは、複数の更新方式のうちいずれかに従って、圧縮された更新データを生成するデータ圧縮部と、前記更新データの生成に用いた更新方式を指定する情報を有するヘッダと、前記更新データと、を含む配信データを、前記ネットワークを介して前記制御装置に送信する送信部と、を備え、前記制御装置は、前記配信データを受信する受信部と、前記受信部により受信された前記配信データから前記更新データを解凍する解凍部と、前記解凍部により解凍された前記更新データを用いて、前記ヘッダで指定された更新方式に従って更新後の新プログラムを復元する復元部と、第1の記憶領域と第2の記憶領域と、を備え、前記解凍部は、前記ヘッダで指定された更新方式に基づいて、第1の解凍方式と第2の解凍方式のいずれを用いるかを切り替え、前記第1の解凍方式は、前記第2の記憶領域を使用せずに前記第1の記憶領域を使用して前記更新データを解凍する手法であり、前記第2の解凍方式は、前記第1の記憶領域および前記第2の記憶領域を使用して前記更新データを解凍する手法である
本発明によるプログラム更新方法は、第1の記憶領域と第2の記憶領域とを備えた制御装置のプログラムを更新する方法であって、前記制御装置により、複数の更新方式のうちいずれかを指定する情報を有するヘッダと、圧縮された更新データと、を含む配信データを受信し、前記制御装置により、前記ヘッダで指定された更新方式に基づいて、前記第2の記憶領域を使用せずに前記第1の記憶領域を使用して前記更新データを解凍する第1の解凍方式と、前記第1の記憶領域および前記第2の記憶領域を使用して前記更新データを解凍する第2の解凍方式とを切り替えて、受信した前記配信データから前記更新データを解凍し、前記制御装置により、解凍した前記更新データを用いて、前記ヘッダで指定された更新方式に従って更新後の新プログラムを復元する。
本発明によれば、揮発性メモリの容量が少ない制御装置であっても、プログラム更新の高速化が可能となる。
本発明の第1の実施形態に係るプログラム更新システムの構成例を示すブロック図である。 サーバのハードウェア構成例を示すブロック図である。 サーバのCPU上で動作するプログラム配信ソフトウェアの機能構成例を示すブロック図である。 サーバで動作するデータ圧縮部のソフトウェア内部構成例を示すブロック図である。 プログラム更新装置のハードウェア構成例を示すブロック図である。 プログラム更新装置のマイコン上で動作するプログラム更新管理ソフトウェアの機能構成例を示すブロック図である。 ECUのハードウェア構成例を示すブロック図である。 ECUのマイコン上で動作する本発明の第1の実施形態に係るプログラム復元ソフトウェアの機能構成例を示すブロック図である。 本発明の第1の実施形態に係るプログラム更新システムにおけるプログラム更新処理全体の流れを示すシーケンス図である。 サーバが実行する更新データ生成処理の流れを示すフロー図である。 データ圧縮部におけるデータ圧縮を説明する図である。 サーバから配信される配信データの構造例を示す図である。 プログラム更新装置およびECUが実行する配信データ転送準備処理、配信データ転送処理および配信データ転送完了処理の流れを示すシーケンス図である。 プログラム更新装置とECUの間で送受信されるコマンドのデータ構造例を示す図である。 配信データを分割送信する場合の構成例を示す図である。 ECUが実行する解凍復元処理の流れを示すフロー図である。 差動更新方式による解凍復元処理を説明する図である。 圧縮更新方式による解凍復元処理を説明する図である。 本発明の第2の実施形態に係るプログラム更新システムの構成例を示すブロック図である。 本発明の第2の実施形態に係るプログラム復元ソフトウェアの機能構成例を示すブロック図である。 本発明の第2の実施形態に係るプログラム更新システムにおけるプログラム更新処理全体の流れを示すシーケンス図である。
以下、本発明を実施するための形態について図面を用いて説明する。なお、図面において、同一符号は、同一または相当部分を示す。また、本発明は、図示例に限定されるものではない。
(第1の実施形態)
本発明における車両搭載ECUのプログラム更新方法について、第1の実施形態を説明する。なお、以降では、ECUのプログラムを更新する場合について説明するが、本技術は各種パラメータやデータなど、プログラムを含むECUの制御に必要な情報の全般について適用可能である。
図1は、本発明の第1の実施形態に係るプログラム更新システムの構成例を示すブロック図である。図1に示すプログラム更新システムは、サーバ10と、車両1にそれぞれ搭載されたプログラム更新装置11および複数のECU12、13、14等から構成されている。サーバ10とプログラム更新装置11は、車外ネットワーク20(たとえばインターネットなど)を介して互いに接続されており、プログラム更新装置11と各ECUは、車内ネットワーク21(たとえばCANなど)を介して互いに接続されている。すなわち、サーバ10と各ECUは、車外ネットワーク20、プログラム更新装置11および車内ネットワーク21により構成されるネットワーク(以下、配信ネットワークと称する)を介して互いに接続されている。
サーバ10は、車両1内の各ECUに対して、それぞれのECUの制御プログラムを更新するのに必要なデータである配信データDT10を配信する。プログラム更新装置11は、サーバ10と各ECU間のネットワーク中継装置であり、配信ネットワークの一部として機能する。プログラム更新装置11は、サーバ10から車外ネットワーク20を介して配信された配信データDT10を受信し、一時的に保存する。そして、配信データDT10の配信対象である各ECUに対して、車内ネットワーク21を介して、保存した配信データDT10を転送する。各ECUは、プログラム更新装置11から転送された配信データDT10を受信し、自らの記憶装置に保存することで制御プログラムを更新した後、再起動時などの所定のタイミングで、更新済みのプログラムを適用する。
図2は、サーバ10のハードウェア構成例を示すブロック図である。図2に示すように、サーバ10は、CPU31、記憶部32、表示部33、操作入力部34、およびWAN通信装置35を備える。
CPU31は、プログラム配信ソフトウェア40を動作させるための演算処理装置である。記憶部32は、揮発性メモリや不揮発性メモリにより構成され、プログラム配信ソフトウェア40の処理に必要な各データを記憶する。表示部33と操作入力部34は、ユーザがサーバ10を操作する際に使用するディスプレイと入力インタフェースである。WAN通信装置35は、車外ネットワーク20を介して車両1と通信を行う。
なお、サーバ10は必ずしもユーザ操作が必要ではなく、プログラム配信ソフトウェア40を自動的に稼動させて、車両1の各ECUに対してプログラム更新用の配信データDT10を作成して配信しても良い。また、サーバ10は、1台で構成される場合もあるし、複数台で連携して同一の機能を実現する場合もある。
図3は、サーバ10のCPU31上で動作するプログラム配信ソフトウェア40の機能構成例を示すブロック図である。なお、本ブロック図は、プログラム配信ソフトウェア40が有する機能をその種類ごとに分割された機能ブロックとして記載しているが、各機能ブロックをさらに分割したり、複数の機能ブロックを統合したりしてもよい。また、プログラム配信ソフトウェア40は、1つのプログラムで実現される必要はなく、2以上のプログラムの組み合せによって実現されてもよい。
プログラム配信ソフトウェア40は、配信制御部41、差分データ生成部42、データ圧縮部43、データ配信部44、データ送受信部45の各機能ブロックを有する。サーバ10において、CPU31によりプログラム配信ソフトウェア40が実行されると、これらの機能ブロックがCPU31により実現される。すなわち、サーバ10は、CPU31においてプログラム配信ソフトウェア40を実行することで、配信制御部41、差分データ生成部42、データ圧縮部43、データ配信部44、およびデータ送受信部45を備えたものとして動作することができる。
記憶部32には、プログラム配信ソフトウェア40が取り扱うデータとして、更新管理データDT400、ECU機能データDT401、プログラムデータDT402、差分データDT403、および更新データDT100が記憶されている。また、データ圧縮時に用いられる作業領域として、圧縮入力バッファBF101および圧縮出力バッファBF102が設けられている。プログラムデータDT402は、新プログラムデータDT4021および旧プログラムデータDT4022により構成される。プログラム配信ソフトウェア40の各機能ブロックは、記憶部32に対してこれらのデータの読み書きを行う。
更新管理データDT400は、各ECUのプログラム更新状況を管理するための情報である。更新管理データDT400は、たとえば、各ECUの更新データの生成状況、配信予定、配信完了状況などの情報を含む。プログラム配信ソフトウェア40は、更新管理データDT400に基づいて、差分データDT403の生成、更新データDT100の生成、配信データDT10の配信などの実行判断を行う。
ECU機能データDT401は、各ECUが対応している更新方式や、各ECUが更新データを解凍する際に使用可能なRAM容量やROM容量など、各ECUのリソースに関する情報を含む。これらのリソースを把握することで、サーバ10から配信データDT10を効率よく配信できるようにする。
なお、本実施形態のプログラム更新システムにおいて、各ECUは、「全更新方式」、「差分更新方式」、「圧縮更新方式」の3つの更新方式のうち、少なくともいずれか一つの更新方式に対応しているものとする。全更新方式とは、新プログラムデータDT4021を圧縮せずにそのまま更新データDT100として用いて、これに基づく配信データDT10をサーバ10から各ECUに配信する更新方式である。差分更新方式とは、旧プログラムデータDT4022と新プログラムデータDT4021との差分に基づく差分データDT403を圧縮することで、更新データDT100を生成し、これに基づく配信データDT10をサーバ10から各ECUに配信する更新方式である。圧縮更新方式とは、新プログラムデータDT4021を圧縮することで、更新データDT100を生成し、これに基づく配信データDT10をサーバ10から各ECUに配信する更新方式である。差分更新方式および圧縮更新方式については、後で詳しく説明する。
プログラムデータDT402は、各ECUに配信予定の新たなプログラムデータである新プログラムデータDT4021と、各ECUで既に稼働している更新前のプログラムデータである旧プログラムデータDT4022とを含む。これらのプログラムデータは、ECUごとに個別のデータであってもよいし、複数のECUで共通のデータであってもよい。また、プログラム以外のデータ、たとえば各種のパラメータデータや設定データ等を含んでいてもよい。
差分データDT403は、差分更新方式によるプログラム更新を行う際に、旧プログラムデータDT4022と新プログラムデータDT4021との間のデータ差異を抽出したものである。これらのプログラムデータを比較し、特定のデータ列のみ差異があれば、その差異が差分データDT403として抜き出され、差異が生じたデータ列の位置情報(たとえば開始位置とデータ長)と合わせて記録される。旧プログラムデータDT4022と新プログラムデータDT4021の差異が少ない場合は、圧縮更新方式により新プログラムデータDT4021を全て更新対象のECUに送信するよりも、差分更新方式により差分データDT403のみを更新対象のECUに送信し、既に当該ECUに保存されている旧プログラムデータDT4022にその差異を適用することで、新プログラムデータDT4021を効率よく復元することができる。
更新データDT100は、サーバ10から各ECUに配信される配信データDT10の元となるデータである。前述のように、全更新方式の場合は、新プログラムデータDT4021が圧縮せずにそのまま更新データDT100とされる。一方、圧縮更新方式の場合は、新プログラムデータDT4021が圧縮されたものが更新データDT100として生成される。また、差分更新方式の場合は、差分データDT403が圧縮されたものが更新データDT100として生成される。
続けて、プログラム配信ソフトウェア40により実現されるサーバ10の各機能ブロックについて説明する。
配信制御部41は、プログラム配信ソフトウェア40における各機能ブロックの動作をコントロールする。この配信制御部41の制御に応じて他の各機能ブロックが動作することで、差分データDT403や更新データDT100が生成され、サーバ10から配信ネットワークを介して各ECUに配信データDT10が配信される。
差分データ生成部42は、記憶部32に格納された新プログラムデータDT4021と旧プログラムデータDT4022から、差分データDT403を生成する。
データ圧縮部43は、記憶部32から読み出した新プログラムデータDT4021または差分データDT403を圧縮し、更新データDT100を生成する。このときデータ圧縮部43は、圧縮入力バッファBF101および圧縮出力バッファBF102を作業領域として用いて、新プログラムデータDT4021または差分データDT403の圧縮を行う。なお、データ圧縮部43によるデータ圧縮処理の詳細については、後で図12を参照して説明する。
データ配信部44は、記憶部32に格納された更新データDT100を読み出し、これに基づいて配信データDT10を生成して、データ送受信部45に出力する。
データ送受信部45は、データ配信部44から配信データDT10が出力されると、その配信データDT10をWAN通信装置35に出力して送信させる。これにより、データ送受信部45は、WAN通信装置35を用いて、車外ネットワーク20を介して配信データDT10を車両1に送信する。
図4は、サーバ10で動作するデータ圧縮部43のソフトウェア内部構成例を示すブロック図である。データ圧縮部43は、圧縮方法切替部71、差分更新符号化部72、圧縮更新符号化部73、および更新データ保存部74で構成されている。
圧縮方法切替部71は、更新方式に基づき圧縮方法を切り替える判断部である。配信制御部41からデータ圧縮の指示を受けると、圧縮方法切替部71は、記憶部32からECU機能データDT401を読み出して、更新対象のECUが対応している更新方式が差分更新方式と圧縮更新方式のいずれであるかを確認する。そして、確認した更新方式に基づき、差分更新符号化部72または圧縮更新符号化部73のいずれを使用するかを選択することで、圧縮方法の切替を行う。なお、更新対象のECUが対応している更新方式が全更新方式である場合は、更新データDT100の生成において圧縮が不要であるため、配信制御部41からデータ圧縮の指示が出力されない。したがって、差分更新符号化部72および圧縮更新符号化部73のいずれも選択されない。
差分更新符号化部72は、更新方式が差分更新方式であるときに、圧縮方法切替部71により選択されて圧縮符号化の指示を受ける。圧縮符号化の指示を受けると、差分更新符号化部72は、記憶部32から差分データDT403を読み出し、データの圧縮および符号化を行う。
圧縮更新符号化部73は、更新方式が圧縮更新方式であるときに、圧縮方法切替部71により選択されて圧縮符号化の指示を受ける。圧縮符号化の指示を受けると、圧縮更新符号化部73は、記憶部32から新プログラムデータDT4021を読み出し、データの圧縮および符号化を行う。
更新データ保存部74は、差分更新符号化部72によって圧縮符号化された差分データDT403、または圧縮更新符号化部73によって圧縮符号化された新プログラムデータDT4021を、更新データDT100として記憶部32に保存する。
データ圧縮部43では、以上説明したような各機能ブロックの動作により、更新方式に応じて圧縮された更新データDT100が生成される。
図5は、プログラム更新装置11のハードウェア構成例を示すブロック図である。図5に示すように、プログラム更新装置11は、マイコン91、車外通信装置92、および車内通信装置93を備える。
マイコン91は、プログラム更新管理ソフトウェア1000を動作させるための演算処理装置である。マイコン91は、揮発性メモリであるSRAM9101と、不揮発性メモリであるFROM9102を内蔵する。車外通信装置92は、サーバ10と車外ネットワーク20を介して接続され、サーバ10から配信された配信データDT10を受信してマイコン91に出力する。車内通信装置93は、各ECUと車内ネットワーク21を介して接続され、サーバ10から配信されてマイコン91から出力された配信データDT10を各ECUに転送する。これにより、プログラム更新装置11は、サーバ10と各ECU間のネットワーク中継装置として機能する。
図6は、プログラム更新装置11のマイコン91上で動作するプログラム更新管理ソフトウェア1000の機能構成例を示すブロック図である。なお、本ブロック図は、プログラム更新装置11が有する機能をその種類ごとに分割された機能ブロックとして記載しているが、各機能ブロックをさらに分割したり、複数の機能ブロックを統合したりしてもよい。また、プログラム更新管理ソフトウェア1000は、1つのプログラムで実現される必要はなく、2以上のプログラムの組み合せによって実現されてもよい。
プログラム更新管理ソフトウェア1000は、更新制御部1001、車外データ送受信部1002、配信データ受信管理部1003、配信データ転送部1004、車内データ送受信部1005の各機能ブロックを有する。プログラム更新装置11において、マイコン91によりプログラム更新管理ソフトウェア1000が実行されると、これらの機能ブロックがマイコン91により実現される。すなわち、プログラム更新装置11は、マイコン91においてプログラム更新管理ソフトウェア1000を実行することで、更新制御部1001、車外データ送受信部1002、配信データ受信管理部1003、配信データ転送部1004、および車内データ送受信部1005を備えたものとして動作することができる。
プログラム更新管理ソフトウェア1000により実現されるプログラム更新装置11の各機能ブロックについて説明する。
更新制御部1001は、プログラム更新管理ソフトウェア1000における各機能ブロックの動作をコントロールする。この更新制御部1001の制御に応じて他の各機能ブロックが動作することで、サーバ10から配信された配信データDT10が中継され、各ECUに転送される。
車外データ送受信部1002は、車外通信装置92を介して接続されたサーバ10から各ECU(ECU12等)に向けて送信された配信データDT10を受信する。
配信データ受信管理部1003は、車外データ送受信部1002が受信した各ECUの配信データDT10をFROM9102に記録する。
配信データ転送部1004は、FROM9102に格納された配信データDT10を読み出し、車内データ送受信部1005に出力してデータ転送指示を出す。
車内データ送受信部1005は、配信データ転送部1004から配信データDT10が出力されると、その配信データDT10を車内通信装置93に出力して送信させる。これにより、車内データ送受信部1005は、車内通信装置93を用いて、車内ネットワーク21を介して配信データDT10を更新対象であるECU宛に転送する。
図7は、ECU12のハードウェア構成例を示すブロック図である。図7に示すように、ECU12は、マイコン111、専用IC112、およびCAN通信装置113を備えており、センサ114およびアクチュエータ115と接続されている。なお、他のECU13および14もECU12と同様の構成であるため、以下ではECU12を代表例として各ECUの構成を説明する。
マイコン111は、プログラム復元ソフトウェア1200を動作させるための演算処理装置である。マイコン111は、揮発性メモリであるSRAM1111と、不揮発性メモリであるFROM1112を内蔵する。専用IC112は、マイコン111と協調してECU12の機能を実現するための各種の処理や動作を行う回路であり、たとえばASIC(Application Specific Integrated Circuit)などを用いて構成される。センサ114は、ECU12の機能を実現するためのセンサ情報を取得してマイコン111に出力する。アクチュエータ115は、たとえばモータなどを用いて構成され、マイコン111の制御に応じて動作する。なお、ECU12は専用IC112を搭載しなくてもよいし、センサ114やアクチュエータ115が接続されていなくてもよい。CAN通信装置113は、プログラム更新装置11や他のECUと車内ネットワーク21を介して接続され、プログラム更新装置11から転送された配信データDT10を受信したり、他のECUとの間で車両1の動作に関する様々な情報を送受信したりする。
図8は、ECU12のマイコン111上で動作する本発明の第1の実施形態に係るプログラム復元ソフトウェア1200の機能構成例を示すブロック図である。なお、本ブロック図は、ECU12が有する機能をその種類ごとに分割された機能ブロックとして記載しているが、各機能ブロックをさらに分割したり、複数の機能ブロックを統合したりしてもよい。また、プログラム復元ソフトウェア1200は、1つのプログラムで実現される必要はなく、2以上のプログラムの組み合せによって実現されてもよい。
プログラム復元ソフトウェア1200は、復元制御部1201、データ送受信部1202、配信データ受信管理部1203、更新データ解凍部1204、新プログラム復元部1205の各機能ブロックを有する。ECU12において、マイコン111によりプログラム復元ソフトウェア1200が実行されると、これらの機能ブロックがマイコン111により実現される。すなわち、ECU12は、マイコン111においてプログラム復元ソフトウェア1200を実行することで、復元制御部1201、データ送受信部1202、配信データ受信管理部1203、更新データ解凍部1204、および新プログラム復元部1205を備えたものとして動作することができる。
プログラム復元ソフトウェア1200により実現されるECU12の各機能ブロックについて説明する。
復元制御部1201は、プログラム復元ソフトウェア1200における各機能ブロックの動作をコントロールする。この復元制御部1201の制御に応じて他の各機能ブロックが動作することで、サーバ10から配信されてプログラム更新装置11により中継された配信データDT10を用いて、ECU12のプログラムが更新される。
データ送受信部1202は、復元制御部1201からの指示に従ってCAN通信装置113を操作し、車内ネットワーク21を介して接続された他の機器、すなわちプログラム更新装置11やECU13、14との間でデータ送受信を行う。プログラム更新装置11からECU12に配信データDT10が送信されると、その配信データDT10は、CAN通信装置113を用いてデータ送受信部1202により受信される。
配信データ受信管理部1203は、データ送受信部1202が受信した配信データDT10を、SRAM1111上に設けられた受信バッファBF120に保存する。
更新データ解凍部1204は、受信バッファBF120に格納されている配信データDT10から更新データDT100を解凍し、SRAM1111上に設けられた解凍バッファBF121に格納する。
新プログラム復元部1205は、更新データ解凍部1204で解凍した更新データDT100を用いて、更新後の新プログラムデータDT123の復元を行う。このとき、必要に応じて、既にFROM1112に格納されている更新前の旧プログラムデータDT122を用いる。そして、復元した新プログラムデータDT123をFROM1112に保存することで、ECU12のプログラムを更新する。
図9は、本発明の第1の実施形態に係るプログラム更新システムにおけるプログラム更新処理全体の流れを示すシーケンス図である。なお、以下ではECU12のプログラムを更新する場合を代表例として説明するが、他のECU13やECU14のプログラムを更新する場合も同様である。
最初に、サーバ10は、ステップST21において、ECU12に配信する配信データDT10の元となる更新データDT100を生成するための更新データ生成処理を行う。なお、この更新データ生成処理の詳細については、後で図10を参照して説明する。
次に、サーバ10は、ステップST22において、データ配信部44により、ステップST21で生成されて記憶部32に格納された更新データDT100に基づいて、配信データDT10を生成する。そして、データ送受信部45により、配信データDT10を車両1に送信する。プログラム更新装置11は、サーバ10から配信データDT10をダウンロードして、プログラム更新装置11のFROM9102に保持する。
その後、プログラム更新装置11は、ステップST23において、ステップST22でダウンロードした配信データDT10をECU12に転送する前処理として、配信データ転送準備処理を行う。ステップST23の配信データ転送準備処理が完了すると、プログラム更新装置11は、続くステップST24において、ECU12に対して配信データDT10を転送するための配信データ転送処理を行う。ステップST24で全ての配信データDT10の転送が完了すると、プログラム更新装置11は、ステップST25において、後処理としての配信データ転送完了処理を実施する。ステップST25の処理が終わると、ECU12のプログラム更新処理が完了する。なお、ステップST23〜ST25の各処理の詳細については、後で図13を参照して説明する。
ここで、図9のステップST21で行われる更新データ生成処理の詳細を説明する。図10は、ステップST21でサーバ10が実行する更新データ生成処理の流れを示すフロー図である。
ステップST501において、配信制御部41は、圧縮対象とするデータの確認を行う。具体的には、配信制御部41は、予め記憶部32に格納された更新管理データDT400を読み出し、更新対象のECUがECU12であることと、ECU12が対応している更新方式とを確認する。
ステップST502において、配信制御部41は、ステップST501で確認した更新方式が前述の差分更新方式と圧縮更新方式のいずれであったかを判定する。その結果、更新方式が差分更新方式であった場合は、差分データ生成部42に対して差分データDT403の生成を指示し、処理をステップST503に進める。一方、圧縮更新方式であった場合は、データ圧縮部43に対して新プログラムデータDT4021の圧縮を指示し、処理をステップST505に進める。なお、更新方式が差分更新方式と圧縮更新方式のいずれでもない場合、たとえば全更新方式である場合は、データ圧縮が不要であるため、新プログラムデータDT4021をそのまま更新データDT100として保存し、図10の更新データ生成処理を終了すればよい。また、ECU12が差分更新方式と圧縮更新方式のいずれにも対応している場合は、予めどちらの更新方式を用いるかを決めておき、その更新方式に合わせてステップST502の判定を行えばよい。
ステップST503において、差分データ生成部42は、配信制御部41の指示を受けて、記憶部32に格納されているECU12の新プログラムデータDT4021と旧プログラムデータDT4022の差分に基づき、差分データDT403を生成する。続けて、配信制御部41は、データ圧縮部43に対し、差分データ生成部42が生成した差分データDT403のデータ圧縮を指示する。ステップST504において、データ圧縮部43は、配信制御部41からの指示を受けて、記憶部32に格納されている差分データDT403のデータ圧縮を行う。このときデータ圧縮部43は、図4の差分更新符号化部72を用いて、差分データDT403を圧縮する。差分データDT403の圧縮が完了したら、処理をステップST506に進める。
ステップST505において、データ圧縮部43は、配信制御部41からの指示を受けて、記憶部32に格納されている新プログラムデータDT4021のデータ圧縮を行う。このときデータ圧縮部43は、図4の圧縮更新符号化部73を用いて、新プログラムデータDT4021を圧縮する。新プログラムデータDT4021の圧縮が完了したら、処理をステップST506に進める。
ステップST506において、データ圧縮部43は、図4の更新データ保存部74を用いて、ステップST504またはST505で圧縮したデータを、更新データDT100として記憶部32に保存する。ステップST506で更新データDT100の保存が完了したら、図10の更新データ生成処理を終了する。
図11は、データ圧縮部43におけるデータ圧縮を説明する図である。図11(a)は、更新方式が差分更新方式である場合に、図10のステップST504で行われる差分データDT403の圧縮符号化を説明する図である。この場合、データ圧縮部43において、まず差分更新符号化部72は、記憶部32から圧縮元となる差分データDT403の一部データ列(参照部AR801と符号化対象部AR802)を読み出し、圧縮入力バッファBF101に格納する。なお、ここで圧縮入力バッファBF101に格納されるデータ列の範囲を、以下では「スライド窓」と称する。図11(a)のスライド窓WD10は、このデータ列の範囲を表している。すなわち、スライド窓WD10内の領域は、参照部AR801と符号化対象部AR802とに分けられる。
差分更新方式によるデータ圧縮では、スライド窓WD10のサイズは、ECU12においてSRAM1111上に設けられる解凍バッファBF121の容量に合わせて設定される。すなわち、差分更新符号化部72は、ECU12が解凍バッファBF121として使用可能なSRAM1111の領域のサイズ以内となるように、スライド窓WD10のサイズを決定する。なお、解凍バッファBF121の容量は、予め記憶部32に格納されたECU機能データDT401を参照することで確認できる。
差分更新符号化部72は、たとえばLZ77等の符号化アルゴリズムを用いて、符号化対象部AR802のデータ列を圧縮符号化する。このとき、参照部AR801のデータ列は、符号化対象部AR802のデータ列を圧縮符号化するための辞書として利用される。具体的には、差分更新符号化部72は、参照部AR801の中から、符号化対象部AR802のデータ列ともっとも長く一致するデータ列(最長一致列と呼ぶ)を探索する。最長一致列を見つけると、差分更新符号化部72は、符号化対象部AR802のうちで最長一致列に対応するデータ列を、最長一致列に対するポインタに置き換えて圧縮符号化する。このポインタは、参照部AR801における最長一致列の位置情報やデータ長などの情報を含む。最長一致列が長いほど、圧縮符号化によりデータ量が削減されて圧縮率が高くなる。こうして符号化対象部AR802を圧縮符号化することで生成されたデータ列は、符号化データ列AR804として圧縮出力バッファBF102に格納される。なお、圧縮出力バッファBF102には、符号化データ列AR804よりも前に圧縮符号化された符号化データ列AR803が既に格納済である。
更新データ保存部74は、たとえば圧縮出力バッファBF102の容量が一杯になったときなどの所定のタイミングにおいて、それまでに圧縮出力バッファBF102に蓄積されたデータ列(符号化データ列AR803およびAR804)を、更新データDT100の一部である部分更新データAR806として記憶部32に保存する。なお、記憶部32には、部分更新データAR806よりも前に生成された部分更新データAR805が既に格納済みである。
差分更新符号化部72は、最初にスライド窓WD10を差分データDT403の先頭に設置して、上記のような圧縮符号化処理および保存処理を行う。その後はスライド窓WD10を移動させながら、同様に圧縮符号化処理および保存処理を行う。このようにして、差分データDT403の先頭から終端まで、スライド窓WD10の移動と圧縮符号化処理および保存処理とを繰り返す。これにより、全ての差分データDT403を圧縮符号化して更新データDT100を生成することができる。
図11(b)は、更新方式が圧縮更新方式である場合に、図10のステップST505で行われる新プログラムデータDT4021の圧縮符号化を説明する図である。この場合、データ圧縮部43において、まず圧縮更新符号化部73は、記憶部32から圧縮元となる新プログラムデータDT4021の一部データ列(参照部AR811、参照部AR812および符号化対象部AR813)を読み出し、圧縮入力バッファBF101に格納する。図11(b)のスライド窓WD20は、このとき圧縮入力バッファBF101に格納されるデータ列の範囲を表している。すなわち、スライド窓WD20内の領域は、参照部AR811、参照部AR812および符号化対象部AR813に分けられる。
圧縮更新方式によるデータ圧縮では、スライド窓WD20のサイズは、ECU12においてSRAM1111上に設けられる解凍バッファBF121の容量よりも大きくなるように設定される。すなわち、圧縮更新符号化部73は、ECU12が解凍バッファBF121として使用可能なSRAM1111の領域のサイズに関わらず、差分更新符号化部72により設定されるスライド窓WD10よりも大きなサイズで、スライド窓WD20のサイズを決定する。
参照部AR811は、既に圧縮符号化と記憶部32への保存がなされている部分更新データAR816に対応するデータ列である。参照部AR812は、圧縮符号化済みで記憶部32には未保存の符号化データ列AR814に対応するデータ列である。これらのデータ列はいずれも、符号化対象部AR813のデータ列を圧縮符号化するための辞書として利用される。すなわち、圧縮更新符号化部73が圧縮更新方式に従って更新データDT100を生成する場合には、差分更新符号化部72が差分更新方式に従って更新データDT100を生成する場合よりも、圧縮符号化に用いる辞書データの範囲が拡大される。
圧縮更新符号化部73は、差分更新符号化部72による圧縮符号化処理と同様に、たとえばLZ77等の符号化アルゴリズムを用いて、符号化対象部AR813のデータ列を圧縮符号化する。具体的には、圧縮更新符号化部73は、スライド窓WD20内の参照部AR811および参照部AR812の中から、符号化対象部813のデータ列に対する最長一致列を探索する。そして、符号化対象部813のうちで最長一致列に対応するデータ列を、最長一致列に対するポインタに置き換えて圧縮符号化する。こうして符号化対象部AR813を圧縮符号化することで生成されたデータ列は、符号化データ列AR815として圧縮出力バッファBF102に格納される。なお、圧縮出力バッファBF102には、符号化データ列AR815よりも前に圧縮符号化された符号化データ列AR814が既に格納済である。
圧縮更新符号化部73は、更新データ保存部74と同様に、所定のタイミングにおいて、それまでに圧縮出力バッファBF102に蓄積されたデータ列(符号化データ列AR814およびAR815)を、更新データDT100の一部である部分更新データAR817として記憶部32に保存する。なお、記憶部32には、部分更新データAR817よりも前に生成された部分更新データAR816が既に格納済みである。
圧縮更新符号化部73は、最初にスライド窓WD20を新プログラムデータDT4021の先頭に設置して、上記のような圧縮符号化処理および保存処理を行う。その後はスライド窓WD20を移動させながら、同様に圧縮符号化処理および保存処理を行う。このようにして、新プログラムデータDT4021の先頭から終端まで、スライド窓WD20の移動と圧縮符号化処理および保存処理とを繰り返す。これにより、全ての新プログラムデータDT4021を圧縮符号化して更新データDT100を生成することができる。
ここで、新プログラムデータDT4021のデータサイズがECU12の解凍バッファBF121の容量よりも大きい場合、圧縮更新符号化部73が圧縮更新方式に従って行う圧縮符号化では、スライド窓WD20のサイズが解凍バッファBF121の容量よりも大きくなる。その結果、圧縮符号化において最長一致列の検出率が高まると共に、より長い最長一致列の検出が可能であるため、差分更新方式による圧縮符号化と比較して、相対的に圧縮率を高めることができる。
図12は、図9のステップST22でサーバ10から配信される配信データDT10の構造例を示す図である。
図12において、圧縮元データDT60は、サーバ10のデータ圧縮部43が圧縮符号化処理を行う前の元データを表している。この圧縮元データDT60の内容は、更新方式によって異なる。具体的には、差分更新方式に従ってデータ圧縮部43が圧縮符号化を行う場合は、差分データDT403が圧縮元データDT60に該当する。一方、圧縮更新方式に従ってデータ圧縮部43が圧縮符号化を行う場合は、新プログラムデータDT4021が圧縮元データDT60に該当する。
更新データDT100は、たとえばLZ77等の符号化圧縮アルゴリズムによって圧縮元データDT60を圧縮符号化したものである。更新データDT100にヘッダDT101が付加されることで、配信データDT10が構成される。ヘッダDT101は、たとえば更新方式DT621、復元後サイズDT622等のデータを含む。更新方式DT621は、更新データDT100を生成する際に用いられた更新方式を示す識別情報であり、具体的には、差分更新方式または圧縮更新方式のいずれかを指定する情報である。なお、さらに全更新方式を指定可能としてもよい。復元後サイズDT622は、更新データDT100から復元される新プログラムデータDT4021のデータサイズを示す情報である。なお、更新方式DT621や復元後サイズDT622以外の情報をヘッダDT101に含めてもよい。
次に、図9のステップST23〜ST25でそれぞれ行われる配信データ転送準備処理、配信データ転送処理および配信データ転送完了処理の詳細を説明する。図13は、ステップST23〜ST25でプログラム更新装置11およびECU12が実行する配信データ転送準備処理、配信データ転送処理および配信データ転送完了処理の流れを示すシーケンス図である。
<ST23:配信データ転送準備処理>
最初に、プログラム更新装置11の配信データ転送部1004は、ステップST1301において、車内データ送受信部1005を介して、ECU12に対してデータ転送開始要求を送信する。このデータ転送開始要求には、データフォーマット、送信予定のデータサイズ、送信したデータの書込み先を示す書込み先アドレスなどの情報が含まれる。
ECU12のデータ送受信部1202は、プログラム更新装置11からデータ転送開始要求を受信すると、その旨を配信データ受信管理部1203に通知する。この通知を受けると、配信データ受信管理部1203は、ステップST1302において、データ送受信部1202を介して、受諾応答をプログラム更新装置11に送信する。この受諾応答には、プログラム更新装置11が一度に転送可能な配信データDT10のデータサイズ(ブロックサイズ)などの情報が含まれる。これにより、配信データ転送準備処理が完了する。
<ST24:配信データ転送処理>
プログラム更新装置11の配信データ転送部1004は、ECU12から受諾応答を受信すると、その受諾応答で指定されたブロックサイズに配信データDT10を分割する。そして、ステップST1303において、車内データ送受信部1005を介して、分割された配信データDT10をECU12に対して送信する。
ECU12のデータ送受信部1202は、プログラム更新装置11から分割された配信データDT10を受信すると、ステップST1304において、その配信データDT10に含まれる更新データDT100を解凍して新プログラムデータDT4021を復元するための解凍復元処理を実行する。なお、ステップST1304で実行される解凍復元処理の詳細については、後で図16を参照して説明する。解凍復元処理により復元された新プログラムデータDT4021は、FROM1112に記録される。
新プログラムデータDT4021のFROM1112への書込みが完了すると、ECU12の配信データ受信管理部1203は、ステップST1305において、データ送受信部1202を介してプログラム更新装置11に受信応答を送信する。
プログラム更新装置11とECU12は、配信データDT10を全て転送し終えるまで、前述のステップST1303からステップST1305までの一連の処理を、繰り返して実行する(ステップST1306)。これにより、配信データ転送処理が完了する。
<ST25:配信データ転送完了処理>
配信データDT10を全て転送し終えると、プログラム更新装置11の配信データ転送部1004は、ステップST1307において、車内データ送受信部1005を介して、ECU12に転送完了通知を送信する。
ECU12の配信データ受信管理部1203は、プログラム更新装置11から転送完了通知を受信すると、ステップST1308において、データ送受信部1202を介して、プログラム更新装置11に受諾応答を送信する。これにより、配信データ転送完了処理が完了する。
図14は、図13で説明した各処理において、プログラム更新装置11とECU12の間で送受信されるコマンドのデータ構造例を示す図である。
<配信データ転送準備処理のコマンド>
CMD141は、図13のステップST1301において、プログラム更新装置11からECU12に送信されるデータ転送開始要求コマンドである。データ転送開始要求コマンドCMD141は、CMD1411〜CMD1414の各コマンドデータを有する。コマンドデータCMD1411は、当該コマンドを識別するためのコマンドIDであり、ここにはデータ転送開始要求コマンドであることを示す識別子が設定される。コマンドデータCMD1412は、更新データDT100が圧縮されたときの更新方式を示す情報であり、更新データDT100が差分更新方式で圧縮されているか、圧縮更新方式で圧縮されているかなどを示す。コマンドデータCMD1413は、後に続くコマンドデータCMD1414およびコマンドデータCMD1415のデータ長を示す情報である。コマンドデータCMD1414は、送信したデータを書き込む更新対象ブロックの先頭アドレスを示す情報である。コマンドデータCMD1415は、プログラム更新装置11からECU12に送信する配信データDT10のサイズを示す情報である。
CMD142は、図13のステップST1302において、ECU12からプログラム更新装置11に送信されるデータ転送開始に対する受諾応答コマンドである。受諾応答コマンドCMD142は、CMD1421〜CMD1423の各コマンドデータを有する。コマンドデータCMD1421は、当該コマンドを識別するためのコマンドIDであり、ここにはデータ転送開始要求に対する受諾応答コマンドであることを示す識別子が設定される。コマンドデータCMD1422は、コマンドデータCMD1423のデータ長を示す情報である。コマンドデータCMD1423は、プログラム更新装置11からECU12に一度に連続して送信可能なデータのサイズ(ブロックサイズ)を示す情報である。
<配信データ転送処理のコマンド>
CMD143は、図13のステップST1303において、プログラム更新装置11からECU12に送信される配信データ転送コマンドである。配信データ転送コマンドCMD143は、CMD1431〜CMD1433の各コマンドデータを有する。コマンドデータCMD1431は、当該コマンドを識別するためのコマンドIDであり、ここには配信データ転送コマンドであることを示す識別子が設定される。コマンドデータCMD1432は、配信データ転送コマンドCMD143の送信回数を示すコマンドカウンタであり、コマンドを送信するたびにインクリメントした値が設定される。コマンドデータCMD1433は、転送するデータの本体部分であり、ここには受諾応答コマンドCMD142のコマンドデータCMD1423にて指定されたブロックサイズの値を上限サイズとして、配信データDT10が分割されたものが設定される。
CMD144は、図13のステップST1305において、ECU12からプログラム更新装置11に送信される受信応答コマンドである。受信応答コマンドCMD144は、CMD1441〜CMD1442の各コマンドデータを有する。コマンドデータCMD1441は、当該コマンドを識別するためのコマンドIDであり、ここにはデータ転送に対する受信応答コマンドであることを示す識別子が設定される。コマンドデータCMD1442は、配信データ転送コマンドCMD143の受信回数を示すコマンドカウンタであり、ここには受信した配信データ転送コマンドCMD143において、コマンドデータCMD1432に設定されていたのと同じ値が設定される。
なお、図13で説明したように、ステップST1306では、分割された配信データDT10の全てがプログラム更新装置11からECU12に転送されるまで、プログラム更新装置11とECU12の間で、配信データ転送コマンドCMD143と受信応答コマンドCMD144が複数回繰り返し送受信される。
<配信データ転送完了処理のコマンド>
CMD145は、図13のステップST1307において、プログラム更新装置11からECU12に送信される転送完了通知コマンドである。転送完了通知コマンドCMD145は、コマンドデータCMD1451を有する。コマンドデータCMD1451は、当該コマンドを識別するためのコマンドIDであり、ここには転送完了通知コマンドであることを示す識別子が設定される。
なお、図13のステップST1308においてECU12からプログラム更新装置11に送信される受諾応答コマンドは、ステップST1307でプログラム更新装置11からECU12に送信される転送完了通知コマンドCMD145と同じコマンド構造を有している。この場合、コマンドデータCMD1451には、転送完了受諾応答コマンドであることを示す識別子が設定される。
図15は、配信データDT10を分割送信する場合の構成例を示す図である。配信データDT10のデータサイズはたとえば2MBであり、図15に示すように、たとえば256バイトごとに分割されて、転送データDT1501や転送データDT1502として、プログラム更新装置11からECU12に送信される。この場合、たとえば転送データD1501は、配信データDT10のうちヘッダDT101と更新データDT100の途中までとを含む分割データである。なお、配信データDT10を分割せずにプログラム更新装置11からECU12に送信できる場合は、必ずしも分割しなくてもよい。
次に、図13のステップST1304で行われる解凍復元処理の詳細を説明する。図16は、ステップST1304でECU12が実行する解凍復元処理の流れを示すフロー図である。
ステップST1601において、データ送受信部1202は、CAN通信装置113を介して、図15の転送データD1501や転送データD1502等によりプログラム更新装置11から分割送信された配信データDT10を受信する。データ送受信部1202により配信データDT10が受信されたら、配信データ受信管理部1203は、受信バッファBF120に配信データDT10を格納し、復元制御部1201に配信データDT10の受信を通知する。この通知を受けると、復元制御部1201は、更新データ解凍部1204に対して更新データDT100の解凍を指示する。
復元制御部1201から更新データDT100の解凍指示を受けると、ステップST1602において、更新データ解凍部1204は、受信バッファBF120に格納された配信データDT10を読み込み、ヘッダDT101で指定された更新方式が差分更新方式または圧縮更新方式のいずれであるかを確認する。その結果、更新方式が差分更新方式である場合は処理をステップST1603に進め、圧縮更新方式である場合は処理をステップST1606に進める。
ステップST1603において、更新データ解凍部1204は、SRAM1111上に解凍バッファBF121を設定し、この解凍バッファBF121に更新データDT100を格納する。なお、SRAM1111において設定される解凍バッファBF121の容量は、図10のステップST504において差分データDT403を圧縮符号化する際に、サーバ10の差分更新符号化部72が設定するスライド窓WD10のサイズと同等か、それ以上である。そして、解凍バッファBF121に格納された更新データDT100のうちで解凍に用いる参照部を設定し、参照部のデータ列を元に更新データDT100の解凍を行う。更新データDT100の解凍が終わると、復元制御部1201は、解凍された更新データDT100すなわち差分データDT403を用いた新プログラムデータDT123の復元を、新プログラム復元部1205に対して指示する。
復元制御部1201から新プログラムデータDT123の復元指示を受けると、ステップST1604において、新プログラム復元部1205は、差分更新方式による新プログラムデータDT123の復元処理を行う。具体的には、新プログラム復元部1205は、FROM1112から旧プログラムデータDT122を読み出し、これに対して差分データDT403を適用することで、旧プログラムデータDT122を新プログラムデータDT123に変換し、新プログラムデータDT123を復元する。続くステップST1605において、新プログラム復元部1205は、ステップST1604で復元した新プログラムデータDT123をFROM1112に保存する。
ステップST1606において、更新データ解凍部1204は、ステップST1603と同様に、SRAM1111上に解凍バッファBF121を設定し、この解凍バッファBF121に更新データDT100を格納する。そして、解凍バッファBF121に格納された更新データDT100と、既に復元済みでFROM1112に保存されている新プログラムデータDT123とのそれぞれにおいて、解凍に用いる参照部を設定し、各参照部のデータ列を元に更新データDT100の解凍を行う。更新データDT100の解凍が終わると、新プログラム復元部1205は、解凍された更新データDT100すなわち新プログラムデータDT4021を、復元された新プログラムデータDT123として、FROM1112に保存する。
ステップST1605またはST1607で新プログラムデータDT123がFROM1112に保存されると、ステップST1608において、復元制御部1201は、全ての新プログラムデータDT123を復元済みであるか確認する。その結果、復元が未完了の新プログラムデータDT123がある場合は、ステップST1601に戻って次の配信データDT10を受信し、更新データDT100の解凍処理および新プログラムデータDT123の復元処理を繰り返す。一方、全ての新プログラムデータDT123を復元済みの場合は、図16の解凍復元処理を終了する。
図17は、図16のステップST1603およびST1604において行われる差動更新方式による解凍復元処理を説明する図である。このときECU12では、プログラム更新装置11に保存されている更新データDT100の一部が転送データAR1701として受信され、受信バッファBF120に格納される。なお、受信バッファBF120には、転送データAR1701よりも前に受信された転送データAR1702が既に格納済みである。
差動更新方式による解凍復元処理では、更新データ解凍部1204は、受信バッファBF120に格納されている転送データAR1701および転送データAR1702を復号して差分データAR1703を生成し、SRAM1111上に設定された解凍バッファBF121に格納する。このとき更新データ解凍部1204は、解凍バッファBF121に格納済みの差分データAR1704を参照部に設定する。そして、転送データAR1701および転送データAR1702のポインタに含まれる位置情報とデータ列の長さの情報から、差分データAR1704において対応するデータ列(最長一致列AR1705)を複製し、ポインタと置き換えることで復号を行う。なお、解凍バッファBF121には、差分データAR1703よりも前に生成された差分データAR1704が既に格納済みである。
差動更新方式による解凍復元処理を行う場合、更新データ解凍部1204は、このようにして、SRAM1111上の解凍バッファBF121に格納済みの差分データAR1704を参照部に設定し、転送データAR1701および転送データAR1702の解凍を行う。これにより、FROM1112を使用せずにSRAM1111を使用して、更新データDT100を解凍することができる。
更新データ解凍部1204により差分データAR1703を生成できたら、新プログラム復元部1205は、解凍バッファBF121に格納されている差分データAR1703および差分データAR1704と、FROM1112に格納されている旧プログラムデータDT122とを用いて、新プログラムデータDT123を復元する。このとき新プログラム復元部1205は、旧プログラムデータDT122から、差分データAR1703および差分データAR1704の範囲に相当するデータ列を読み取り、これらの差分データと結合することで、新プログラムデータDT123を復元する。新プログラムデータDT123の復元が完了すると、そのデータをFROM1112に保存する。
図18は、図16のステップST1606において行われる圧縮更新方式による解凍復元処理を説明する図である。このときECU12では、プログラム更新装置11に保存されている更新データDT100の一部が転送データAR1711として受信され、受信バッファBF120に格納される。なお、受信バッファBF120には、転送データAR1711よりも前に受信された転送データAR1712が既に格納済みである。
圧縮更新方式による解凍復元処理では、更新データ解凍部1204は、受信バッファBF120に格納されている転送データAR1711および転送データAR1712を復号して、新プログラムデータDT123の一部である復号データAR1713を生成し、SRAM1111上に設定された解凍バッファBF121に格納する。このとき更新データ解凍部1204は、解凍バッファBF121に格納済みの復号データAR1714と、FROM1112に保存済みの復号データAR1715とを参照部に設定する。なお、復号データAR1714および復号データAR1715も復号データAR1713と同様に、新プログラムデータDT123の一部である。そして、転送データAR1711および転送データAR1712のポインタに含まれる位置情報とデータ列の長さの情報から、復号データAR1714および復号データAR1715において対応するデータ列(第1のポインタが示す解凍バッファBF121上の最長一致列AR1716と、第2のポインタが示すFROM1112上の最長一致列AR1717と、第3のポインタが示すFROM1112上のAR1718)を複製し、各ポインタと置き換えることで復号を行う。なお、解凍バッファBF121には、復号データAR1713よりも前に生成された復号データAR1714が既に格納済みである。
圧縮更新方式による解凍復元処理を行う場合、更新データ解凍部1204は、このようにして、SRAM1111上の解凍バッファBF121に格納済みの復号データAR1714と、FROM1112に保存済みの復号データAR1715とを参照部に設定し、転送データAR1711および転送データAR1712の解凍を行う。これにより、SRAM1111およびFROM1112を使用して、更新データDT100を解凍することができる。すなわち、既に復元保存してあるFROM1112のデータも解凍時の参照部にすることで、差分更新方式による解凍復元処理と比較して高い圧縮率で圧縮符号化された更新データDT100を、解凍バッファBF121のサイズを増やすことなく解凍することができる。
更新データ解凍部1204により復号データAR1713を生成できたら、新プログラム復元部1205は、解凍バッファBF121に格納されている復号データAR1713および復号データAR1714を、新プログラムデータDT123の一部としてFROM1112に保存する。
更新データ解凍部1204と新プログラム復元部1205は、図17、18でそれぞれ説明したようにして、更新データDT100の解凍と新プログラムデータDT123の復元を繰り返し実行する。これにより、差分更新方式による解凍復元処理と圧縮更新方式による解凍復元処理のそれぞれにおいて、全ての新プログラムデータDT123を復元することができる。
以上説明した本発明の第1の実施形態によれば、以下の作用効果を奏する。
(1)本実施形態のプログラム更新システムは、車外ネットワーク20、車内ネットワーク21を介して互いに接続されたサーバ10とECU12とを備える。サーバ10は、複数の更新方式のうちいずれかに従って、圧縮された更新データDT100を生成するデータ圧縮部43と、配信データDT10を配信ネットワークを介してECU12に送信するデータ送受信部45とを備える。配信データDT10は、更新データDT100の生成に用いた更新方式を指定する情報を有するヘッダDT101と、更新データDT100とを含む。ECU12は、配信データDT10を受信するデータ送受信部1202と、データ送受信部1202により受信された配信データDT10から更新データDT100を解凍する更新データ解凍部1204と、更新データ解凍部1204により解凍された更新データDT100を用いて、ヘッダDT101で指定された更新方式に従って更新後の新プログラムデータDT123を復元する新プログラム復元部1205とを備える。このプログラム更新システムにおいて、ECU12の更新データ解凍部1204は、ヘッダDT101で指定された更新方式に基づいて、更新データDT100を解凍する際の解凍方法を切り替える。このようにしたので、複数の更新方式に対応したECU12のプログラム更新において、揮発性メモリであるSRAM1111で解凍処理に使用する解凍バッファBF121の容量が少なくても、更新データDT100の圧縮率を高めて、サーバ10からECU12に送信する更新データDT100のデータ量を削減することができる。その結果、揮発性メモリの容量が少ないECU12であっても、プログラム更新の高速化が可能となる。
(2)サーバ10において更新データDT100の生成に用いられる更新方式は、更新前の旧プログラムデータDT4022と新プログラムデータDT4021との差分に基づく差分データDT403を圧縮して更新データDT100を生成する差分更新方式と、新プログラムデータDT4021を圧縮して更新データDT100を生成する圧縮更新方式とを含む。ECU12の更新データ解凍部1204は、ヘッダDT101で指定された更新方式が差分更新方式である場合は、第1の解凍方式を用いて更新データDT100を解凍する(図16のステップST1602、ST1603)。一方、ヘッダDT101で指定された更新方式が圧縮更新方式である場合は、第1の解凍方式とは異なる第2の解凍方式を用いて更新データDT100を解凍する(図16のステップST1602、ST1606)。このようにしたので、差分更新方式と圧縮更新方式のそれぞれについて、適切な解凍方式を用いて更新データDT100の解凍を行うことができる。
(3)ECU12は、揮発性メモリであるSRAM1111および不揮発性メモリであるFROM1112を備えている。第1の解凍方式では、図17で説明したように、FROM1112を使用せずにSRAM1111を使用して更新データDT100を解凍する。一方、第2の解凍方式では、図18で説明したように、SRAM1111およびFROM1112を使用して更新データDT100を解凍する。一方、サーバ10のデータ圧縮部43は、図11で説明したように、圧縮更新方式に従って更新データDT100を生成する場合には、差分更新方式に従って更新データDT100を生成する場合よりも、圧縮に用いる辞書データの範囲を拡大する。このようにしたので、SRAM1111で解凍処理に使用する容量が少なくても、圧縮更新方式により高い圧縮率で圧縮された更新データDT100をECU12において解凍することが可能となる。
(4)配信データDT10を送信する配信ネットワークは、車両1に設けられた車内ネットワーク21と、車両1の外部に設けられた車外ネットワーク20とを含む。ECU12は、車両1に搭載されて車内ネットワーク21と接続されている。サーバ10は、車外ネットワーク20を介して車内ネットワーク21と通信可能であり、サーバ10のデータ送受信部45は、車外ネットワーク20および車内ネットワーク21を介して配信データDT10をECU12に送信する。ECU12は、車内ネットワーク21を介して配信データDT10を受信する。このようにしたので、車両1に搭載されたECU12に対して、配信データDT10を任意のタイミングで容易に送信することが可能となる。
(第2の実施形態)
本発明における車両搭載ECUのプログラム更新方法について、第2の実施形態を説明する。なお、本実施形態では、第1の実施形態と共通の部分については、特に必要のない限り説明を省略する。
図19は、本発明の第2の実施形態に係るプログラム更新システムの構成例を示すブロック図である。本実施形態のプログラム更新システムは、第1の実施形態で説明したECU12、13および14に替えて、ECU15、16および17を有している。これらのECUは、第1の実施形態におけるECU12、13および14と比べて、配信データDT10が転送される前に、プログラム更新装置11を介して、各ECUの状態を表すECUステータスデータDT180をサーバ10にアップロードする処理をさらに実行するものである。
ECUステータスデータDT180は、各ECUの状態として、各ECUにおけるSRAM1111の状態、たとえばSRAM1111においてプログラムの更新時に解凍バッファBF121として使用可能な容量などの情報を含むデータである。第1の実施形態では、各ECUがプログラム更新処理時に解凍バッファBF121として使用可能なSRAM1111の容量は固定値として予め定められており、この解凍バッファBF121の容量に合わせて、差分更新方式による圧縮符号化で使用されるスライド窓WD10のサイズが決められていた。しかしながら、本実施形態では、ECU毎のSRAM1111の容量の違いと、ECUの状況に応じてSRAM1111の使用可能容量が異なることとを踏まえて、配信データDT10が転送される前に、各ECUのSRAM1111の使用可能容量をECUステータスデータDT180に含めて、サーバ10に通知する。サーバ10では、各ECUからECUステータスデータDT180により通知されたSRAM1111の使用可能容量に応じて、スライド窓WD10のサイズを決定し、これに合わせて圧縮入力バッファBF101のサイズを設定する。
ECU15、16および17はそれぞれ、第1の実施形態において図7に示したECU12と同様の構成を有しており、マイコン111は、第1の実施形態で説明したプログラム復元ソフトウェア1200とは異なるソフトウェアを実行する。以下では、本実施形態においてマイコン111が実行するソフトウェアを、プログラム復元ソフトウェア2000として説明する。
図20は、本発明の第2の実施形態に係るプログラム復元ソフトウェア1200の機能構成例を示すブロック図である。プログラム復元ソフトウェア2000は、図8で説明した第1の実施形態のプログラム復元ソフトウェア1200と比べて、さらにECUステータス送信部2001を有している。また、更新データ解凍部1204に替えて、更新データ解凍部2002を有している。これ以外の点は、第1の実施形態で説明したプログラム復元ソフトウェア1200と同じ機能構成である。
ECUステータス送信部2001は、復元制御部1201からの指示に従ってCAN通信装置113を操作し、プログラム更新装置11にECUステータスデータDT180を送信する。なお、プログラム更新装置11に送信されたECUステータスデータDT180は、プログラム更新装置11によってサーバ10に転送される。
更新データ解凍部2002は、第1の実施形態で説明した更新データ解凍部1204と同様に、受信バッファBF120に格納されている配信データDT10から更新データDT100を解凍し、SRAM1111上に設けられた解凍バッファBF121に格納する。このとき、配信データDT10のヘッダDT101で指定された更新方式に基づいて、解凍方法を切り替える。さらに更新データ解凍部2002は、サーバ10が更新データDT100の圧縮符号化を行った際に用いたアルゴリズムやパラメータに応じて、解凍処理に用いるアルゴリズムやパラメータを設定する機能を有する。なお、サーバ10から各ECUに対する圧縮符号化のアルゴリズムやパラメータの通知は、これらの情報をヘッダDT101に含めることで行うことができる。
図21は、本発明の第2の実施形態に係るプログラム更新システムにおけるプログラム更新処理全体の流れを示すシーケンス図である。なお、以下ではECU15のプログラムを更新する場合を代表例として説明するが、他のECU16やECU17のプログラムを更新する場合も同様である。
最初に、ECU15は、ステップST190において、サーバ10に対してECUステータスデータDT180をアップロードする。ECU15からアップロードされたECUステータスデータDT180は、サーバ10において記憶部32に格納される。
次に、サーバ10は、ステップST201において、記憶部32に格納されたECUステータスデータDT180に基づいて、ECU15に配信する配信データDT10の元となる更新データDT100を生成するための更新データ生成処理を行う。この更新データ生成処理において、サーバ10の配信制御部41は、ECUステータスデータDT180を読み出して、ECU15におけるSRAM1111の使用可能容量を確認し、圧縮符号化における圧縮入力バッファBF101のサイズを設定する。こうして設定された圧縮入力バッファBF101のサイズに応じて、データ圧縮部43は、スライド窓WD10のサイズを設定し、圧縮元データとしての差分データDT403を圧縮符号化することで、差分更新方式によるデータ圧縮を行って更新データDT100を生成する。このとき、第1の実施形態で例示したLZ77等の符号化アルゴリズムに加えて、たとえばLZ78など、より圧縮率の高い他の符号化アルゴリズムを使用してもよい。なお、圧縮更新方式によるデータ圧縮の場合は、第1の実施形態で説明したのと同様の方法で更新データDT100を生成すればよい。
ステップST201において更新データDT100が生成されたら、その更新データDT100に基づき、第1の実施形態と同様にして、サーバ10からプログラム更新装置11に配信データDT10をダウンロードする。このとき、配信データDT10のヘッダDT101には、更新方式DT621として、サーバ10側で更新データDT100の生成に使用した圧縮符号化のアルゴリズムやパラメータ等の情報を含めるようにする。これにより、ECU15において、配信データDT10から更新データDT100を解凍できるようにする。
ステップST23以降では、プログラム更新装置11およびECU15は、第1の実施形態で説明したのと同様の処理をそれぞれ行う。これにより、配信データDT10を用いてECU15のプログラム更新が行われる。
以上説明した本発明の第2の実施形態によれば、ECU15は、配信データDT10の送信元であるサーバ10に対して、ECUステータスデータDT180を送信することで揮発性メモリであるSRAM1111の状態を通知するECUステータス送信部2001をさらに備える。サーバ10のデータ圧縮部43は、ECUステータス送信部2001により通知されたSRAM1111の状態に基づいて、圧縮符号化時の辞書データとしてのスライド窓WD10の範囲を設定する。このようにしたので、第1の実施形態で説明したのと同様の作用効果に加えて、さらに、ECU15におけるSRAM1111の使用状況に応じて、更新データ100の圧縮率を柔軟に変化させることができる。
なお、上記の各実施形態において、プログラム更新装置11を設けずに、サーバ10から各ECUに対して配信データDT10を直接送信してもよい。このようにしても、各実施形態で説明したのと同様の作用効果を奏することができる。
また、上記の各実施形態では、車両に搭載されたECUのプログラム更新を行うプログラム更新システムの例を説明したが、本発明はこれに限定されない。ネットワーク接続された様々な制御装置のプログラム更新において、本発明を適用可能である。
本発明の技術的範囲は上記の各実施形態に限定されるものではなく、本発明の技術的思想の範囲内で、種々の変形例が可能であることはいうまでもない。
1:車両、10:サーバ、11:プログラム更新装置、12,13,14,15,16,17:ECU、20:車外ネットワーク、21:車内ネットワーク、31:CPU、32:記憶部、33:表示部、34:操作入力部、35:WAN通信装置、40:プログラム配信ソフトウェア、41:配信制御部、42:差分データ生成部、43:データ圧縮部、44:データ配信部、45:データ送受信部、91:マイコン、9101:SRAM、9102:FROM、92:車外通信装置、93:車内通信装置、1000:プログラム更新管理ソフトウェア、1001:更新制御部、1002:車外データ送受信部、1003:配信データ受信管理部、1004:配信データ転送部、1005:車内データ送受信部、111:マイコン、1111:SRAM、1112:FROM、112:専用IC、113:CAN通信装置、114:センサ、115:アクチュエータ、1200:プログラム復元ソフトウェア、1201…復元制御部、1202:データ送受信部、1203:配信データ受信管理部、1204,2002:更新データ解凍部、1205:新プログラム復元部、2001:ECUステータス送信部

Claims (18)

  1. 複数の更新方式のうちいずれかを指定する情報を有するヘッダと、圧縮された更新データと、を含む配信データを受信する受信部と、
    前記受信部により受信された前記配信データから前記更新データを解凍する解凍部と、
    前記解凍部により解凍された前記更新データを用いて、前記ヘッダで指定された更新方式に従って更新後の新プログラムを復元する復元部と、
    第1の記憶領域と第2の記憶領域と、を備え、
    前記解凍部は、前記ヘッダで指定された更新方式に基づいて、第1の解凍方式と第2の解凍方式のいずれを用いるかを切り替え
    前記第1の解凍方式は、前記第2の記憶領域を使用せずに前記第1の記憶領域を使用して前記更新データを解凍する手法であり、
    前記第2の解凍方式は、前記第1の記憶領域および前記第2の記憶領域を使用して前記更新データを解凍する手法である制御装置。
  2. 請求項1に記載の制御装置において、
    前記更新方式は、更新前の旧プログラムと前記新プログラムとの差分を圧縮して前記更新データを生成する差分更新方式と、前記新プログラムを圧縮して前記更新データを生成する圧縮更新方式と、を含み、
    前記解凍部は、
    前記ヘッダで指定された更新方式が前記差分更新方式である場合は、前記第1の解凍方式を用いて前記更新データを解凍し、
    前記ヘッダで指定された更新方式が前記圧縮更新方式である場合は、前記第2の解凍方式を用いて前記更新データを解凍する制御装置。
  3. 請求項1に記載の制御装置において、
    前記第1の記憶領域は、受信した前記配信データを保存し、前記配信データから解凍された前記更新データを一時的に保存し、
    前記第2の記憶領域は、更新前の旧プログラムおよび復元された前記新プログラムを保存する制御装置。
  4. 請求項1に記載の制御装置において、
    前記第1の記憶領域および前記第2の記憶領域は、それぞれECUに内蔵される揮発性メモリ、不揮発性メモリである制御装置。
  5. 請求項に記載の制御装置において、
    前記配信データの送信元に対して前記第1の記憶領域の状態を通知する通知部をさらに備える制御装置。
  6. 請求項1から請求項のいずれか一項に記載の制御装置において、
    前記制御装置は、車両に搭載されて前記車両に設けられた車内ネットワークと接続されており、
    前記受信部は、前記車内ネットワークを介して前記配信データを受信する制御装置。
  7. ネットワークを介して互いに接続されたサーバと制御装置とを備え、
    前記サーバは、
    複数の更新方式のうちいずれかに従って、圧縮された更新データを生成するデータ圧縮部と、
    前記更新データの生成に用いた更新方式を指定する情報を有するヘッダと、前記更新データと、を含む配信データを、前記ネットワークを介して前記制御装置に送信する送信部と、を備え、
    前記制御装置は、
    前記配信データを受信する受信部と、
    前記受信部により受信された前記配信データから前記更新データを解凍する解凍部と、
    前記解凍部により解凍された前記更新データを用いて、前記ヘッダで指定された更新方式に従って更新後の新プログラムを復元する復元部と、
    第1の記憶領域と第2の記憶領域と、を備え、
    前記解凍部は、前記ヘッダで指定された更新方式に基づいて、第1の解凍方式と第2の解凍方式のいずれを用いるかを切り替え
    前記第1の解凍方式は、前記第2の記憶領域を使用せずに前記第1の記憶領域を使用して前記更新データを解凍する手法であり、
    前記第2の解凍方式は、前記第1の記憶領域および前記第2の記憶領域を使用して前記更新データを解凍する手法であるプログラム更新システム。
  8. 請求項に記載のプログラム更新システムにおいて、
    前記更新方式は、更新前の旧プログラムと前記新プログラムとの差分を圧縮して前記更新データを生成する差分更新方式と、前記新プログラムを圧縮して前記更新データを生成する圧縮更新方式と、を含み、
    前記解凍部は、
    前記ヘッダで指定された更新方式が前記差分更新方式である場合は、前記第1の解凍方式を用いて前記更新データを解凍し、
    前記ヘッダで指定された更新方式が前記圧縮更新方式である場合は、前記第2の解凍方式を用いて前記更新データを解凍するプログラム更新システム。
  9. 請求項に記載のプログラム更新システムにおいて、
    記データ圧縮部は、前記圧縮更新方式に従って前記更新データを生成する場合には、前記差分更新方式に従って前記更新データを生成する場合よりも、前記圧縮に用いる辞書データの範囲を拡大するプログラム更新システム。
  10. 請求項7に記載のプログラム更新システムにおいて、
    前記第1の記憶領域は、受信した前記配信データを保存し、前記配信データから解凍された前記更新データを一時的に保存し、
    前記第2の記憶領域は、更新前の旧プログラムおよび復元された前記新プログラムを保存するプログラム更新システム。
  11. 請求項7に記載のプログラム更新システムにおいて、
    前記第1の記憶領域および前記第2の記憶領域は、それぞれECUに内蔵される揮発性メモリ、不揮発性メモリであるプログラム更新システム。
  12. 請求項に記載のプログラム更新システムにおいて、
    前記制御装置は、前記サーバに対して前記第1の記憶領域の状態を通知する通知部をさらに備え、
    前記データ圧縮部は、前記通知部により通知された前記第1の記憶領域の状態に基づいて、前記圧縮に用いる辞書データの範囲を設定するプログラム更新システム。
  13. 請求項から請求項12のいずれか一項に記載のプログラム更新システムにおいて、
    前記ネットワークは、車両に設けられた車内ネットワークと、前記車両の外部に設けられた車外ネットワークとを含み、
    前記制御装置は、前記車両に搭載されて前記車内ネットワークと接続されており、
    前記サーバは、前記車外ネットワークを介して前記車内ネットワークと通信可能であり、
    前記送信部は、前記車外ネットワークおよび前記車内ネットワークを介して前記配信データを前記制御装置に送信するプログラム更新システム。
  14. 第1の記憶領域と第2の記憶領域とを備えた制御装置のプログラムを更新するプログラム更新方法であって、
    前記制御装置により、複数の更新方式のうちいずれかを指定する情報を有するヘッダと、圧縮された更新データと、を含む配信データを受信し、
    前記制御装置により、前記ヘッダで指定された更新方式に基づいて、前記第2の記憶領域を使用せずに前記第1の記憶領域を使用して前記更新データを解凍する第1の解凍方式と、前記第1の記憶領域および前記第2の記憶領域を使用して前記更新データを解凍する第2の解凍方式とを切り替えて、受信した前記配信データから前記更新データを解凍し、
    前記制御装置により、解凍した前記更新データを用いて、前記ヘッダで指定された更新方式に従って更新後の新プログラムを復元するプログラム更新方法。
  15. 請求項14に記載のプログラム更新方法において、
    前記更新方式は、更新前の旧プログラムと前記新プログラムとの差分を圧縮して前記更新データを生成する差分更新方式と、前記新プログラムを圧縮して前記更新データを生成する圧縮更新方式と、を含み、
    前記ヘッダで指定された更新方式が前記差分更新方式である場合は、前記制御装置により、前記第1の解凍方式を用いて前記更新データを解凍し、
    前記ヘッダで指定された更新方式が前記圧縮更新方式である場合は、前記制御装置により、前記第2の解凍方式を用いて前記更新データを解凍するプログラム更新方法。
  16. 請求項14に記載のプログラム更新方法において、
    前記第1の記憶領域は、受信した前記配信データを保存し、前記配信データから解凍された前記更新データを一時的に保存し、
    前記第2の記憶領域は、更新前の旧プログラムおよび復元された前記新プログラムを保存するプログラム更新方法。
  17. 請求項14に記載のプログラム更新方法において、
    前記第1の記憶領域および前記第2の記憶領域は、それぞれECUに内蔵される揮発性メモリ、不揮発性メモリであるプログラム更新方法。
  18. 請求項14に記載のプログラム更新方法において、
    前記配信データを受信する前に、前記制御装置により、前記配信データの送信元に対して前記第1の記憶領域の状態を通知するプログラム更新方法。
JP2017079821A 2017-04-13 2017-04-13 制御装置、プログラム更新システム、プログラム更新方法 Active JP6784636B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2017079821A JP6784636B2 (ja) 2017-04-13 2017-04-13 制御装置、プログラム更新システム、プログラム更新方法
DE112018001315.4T DE112018001315T5 (de) 2017-04-13 2018-03-19 Steuervorrichtung, programmaktualisierungssystem und programmaktualisierungsverfahren
US16/603,618 US11513783B2 (en) 2017-04-13 2018-03-19 Control apparatus, program update system, and program update method
CN201880024460.4A CN110494845B (zh) 2017-04-13 2018-03-19 控制装置、程序更新系统、程序更新方法
PCT/JP2018/010857 WO2018190080A1 (ja) 2017-04-13 2018-03-19 制御装置、プログラム更新システム、プログラム更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017079821A JP6784636B2 (ja) 2017-04-13 2017-04-13 制御装置、プログラム更新システム、プログラム更新方法

Publications (2)

Publication Number Publication Date
JP2018180948A JP2018180948A (ja) 2018-11-15
JP6784636B2 true JP6784636B2 (ja) 2020-11-11

Family

ID=63793251

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017079821A Active JP6784636B2 (ja) 2017-04-13 2017-04-13 制御装置、プログラム更新システム、プログラム更新方法

Country Status (5)

Country Link
US (1) US11513783B2 (ja)
JP (1) JP6784636B2 (ja)
CN (1) CN110494845B (ja)
DE (1) DE112018001315T5 (ja)
WO (1) WO2018190080A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5547701B2 (ja) * 2011-09-21 2014-07-16 日立オートモティブシステムズ株式会社 自動車用電子制御装置
JP7367359B2 (ja) * 2018-08-10 2023-10-24 株式会社デンソー 車両用電子制御システム、ファイルの転送制御方法、ファイルの転送制御プログラム及び装置
WO2020115818A1 (ja) * 2018-12-04 2020-06-11 三菱電機株式会社 更新管理装置、更新管理システム及び更新管理方法
JP7243217B2 (ja) * 2019-01-25 2023-03-22 株式会社富士通ゼネラル 空気調和機及び空気調和システム
JP7298427B2 (ja) * 2019-10-07 2023-06-27 トヨタ自動車株式会社 プログラム更新システムおよびプログラム更新方法
US11851853B2 (en) * 2019-10-16 2023-12-26 Deere & Company Wake up system to allow remote machine configuration of a work machine
KR20210140862A (ko) * 2020-05-14 2021-11-23 현대자동차주식회사 소프트웨어 업데이트 시스템 및 그 제어 방법
CN114095037B (zh) * 2022-01-17 2022-10-04 浙江地芯引力科技有限公司 应用程序的更新方法、更新数据的压缩方法、装置及设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08237208A (ja) * 1995-02-23 1996-09-13 Daihatsu Motor Co Ltd 情報送信装置及び情報受信装置
JP4285679B2 (ja) * 2002-03-11 2009-06-24 富士通株式会社 差分転送方法、プログラム及びシステム
JP2004170887A (ja) 2002-11-22 2004-06-17 Canon Inc データ処理システム及びデータ格納方法
US20060200658A1 (en) * 2005-03-07 2006-09-07 Bitfone Corporation Agent framework for mobile devices
US20080005733A1 (en) * 2006-06-29 2008-01-03 Balaji Ramachandran Method and apparatus for updating firmware and software
WO2009057459A1 (ja) 2007-10-30 2009-05-07 Nec Corporation データ圧縮方法
DE602009000944D1 (de) * 2008-04-11 2011-05-05 Innovative Sonic Ltd Verfahren und Vorrichtung zur Handhabung des Weiterleitungsverfahrens
CN102510409B (zh) * 2011-12-19 2017-02-22 厦门雅迅网络股份有限公司 一种利用无线网络对移动终端程序快速远程更新的方法及系统
US9558251B2 (en) * 2012-04-03 2017-01-31 Teradata Us, Inc. Transformation functions for compression and decompression of data in computing environments and systems
CN103677878B (zh) * 2012-09-12 2017-07-14 国际商业机器公司 一种打补丁的方法和装置
JPWO2014147672A1 (ja) * 2013-03-22 2017-02-16 富士通株式会社 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム
CN104714819B (zh) * 2013-12-16 2019-11-15 中兴通讯股份有限公司 文件系统升级包制作方法、升级方法及装置、终端
JP6216730B2 (ja) 2015-03-16 2017-10-18 日立オートモティブシステムズ株式会社 ソフト更新装置、ソフト更新方法
MX357454B (es) * 2015-07-16 2018-06-26 Inst Tecnologico Y De Estudios Superiores De Occidente A C Sistema y método para la reprogramación de dispositivos ecu (unidades electrónicas de control) en vehiculos, vía radio digital.
JP5905633B1 (ja) 2015-10-22 2016-04-20 有限会社ちょうりゅう 過屈曲過伸展防止用補助具
US11146401B2 (en) * 2016-08-10 2021-10-12 Ford Global Technologies, Llc Software authentication before software update

Also Published As

Publication number Publication date
WO2018190080A1 (ja) 2018-10-18
JP2018180948A (ja) 2018-11-15
CN110494845A (zh) 2019-11-22
US20210089294A1 (en) 2021-03-25
CN110494845B (zh) 2023-07-14
DE112018001315T5 (de) 2019-12-24
US11513783B2 (en) 2022-11-29

Similar Documents

Publication Publication Date Title
JP6784636B2 (ja) 制御装置、プログラム更新システム、プログラム更新方法
JP6609508B2 (ja) 車両用電子制御装置、プログラム更新方法
KR101074010B1 (ko) 블록 단위 데이터 압축 및 복원 방법 및 그 장치
US10228934B2 (en) Vehicle-mounted control device, program writing device, program generating device and program
US8698657B2 (en) Methods and systems for compressing and decompressing data
JP5027623B2 (ja) 遠隔監視情報収集システム、遠隔監視情報収集装置、監視端末、及び、遠隔監視情報収集方法
US8572054B2 (en) Forward compatibility guaranteed data compression and decompression method and apparatus thereof
JP2004274760A5 (ja)
JP5556809B2 (ja) 情報処理システム、情報圧縮装置、情報復元装置、情報処理方法及びそのプログラム
CN110419036B (zh) 数据压缩方法、设备与计算设备
JP6536444B2 (ja) ネットワークシステム
CN109716289B (zh) 二值图像差分修补
JP2007537642A (ja) Xmlデータの構造化されたブロック単位の圧縮及び解凍方法及び装置
CN100401671C (zh) 一种文件传送方法
JP2006259937A (ja) データ収集装置およびデータ復元装置
US20170322742A1 (en) Method for backing up and restoring data of a secure element
US11108405B2 (en) Devices and methods for compression and decompression
KR101418540B1 (ko) 압축 해제 방법 및 장치
KR20080045842A (ko) 이미지 압축 및 복원을 위한 장치 및 방법
JP2006126981A (ja) データ転送システム及びデータ転送方法
JPH088754A (ja) データ圧縮伝送方式、並びにそれを用いたデータ伝送装置及び記憶装置
JPH0887398A (ja) 符号化、復号化方式及び情報処理装置
KR20120037743A (ko) 비용 최적 데이터 압축 방법 및 시스템
JPH08278856A (ja) プリンタ装置
JPH06350671A (ja) Osi第6層のpdu符号化・展開方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200731

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200923

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201023

R150 Certificate of patent or registration of utility model

Ref document number: 6784636

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350