"車載通信システムを構成する電子制御装置のいずれかを対象装置として、該対象装置のメモリに格納されたプログラムを、前記車載通信システムに接続したプログラム書換装置によって、前記車載通信システム経由で書き換えを行うプログラム書換方法であって、前記プログラム書換装置にて、前記プログラムの書き換えに用いるリプログデータを、予め設定されたデータ長の単位ブロックに分割し、各単位ブロックにシリアル番号を対応づける第1の手順と、前記単位ブロックのうち、該単位ブロックが示す値が予め設定された特定値であるものを特定ブロック、該特定ブロックが予め設定された下限値以上連続する領域を連続領域として、該連続領域の先頭となる単位ブロックに対応づけられたシリアル番号である開始番号及び該連続領域の末尾となる単位ブロックに対応づけられたシリアル番号である終了番号からなる領域情報を、前記プログラム書換装置から前記対象装置に送信する第2の手順と、前記単位ブロックのうち、前記連続領域を構成する特定ブロック以外のものを送信対象ブロックとして、該送信対象ブロックを、前記プログラム書換装置から前記対象装置に順番に送信する第3の手順と、前記対象装置にて、前記プログラム書換装置から受信した前記送信対象ブロック及び前記領域情報に基づいて生成した前記特定ブロックにより前記リプログデータを復元して、前記メモリの書き換えを実行する第4の手順と、を備えることを特徴とするプログラム書換方法。車載通信システムを構成する電子制御装置のいずれかを対象装置として、該対象装置のメモリに格納されたプログラムを、前記車載通信システム経由で書き換えを行うプログラム書換装置であって、前記プログラムの書き換えに用いるリプログデータを、予め設定されたデータ長の単位ブロックに分割し、各単位ブロックにシリアル番号を対応づける分割手段と、前記分割手段にて分割された前記単位ブロックのうち、該単位ブロックが示す値が予め設定された特定値であるものを特定ブロック、該特定ブロックが予め設定された下限値以上連続する領域を連続領域として、該連続領域の先頭となる単位ブロックに対応づけられたシリアル番号である開始番号及び該連続領域の末尾となる単位ブロックに対応づけられたシリアル番号である終了番号からなる領域情報を前記対象装置へ送信する領域情報送信手段と、前記単位ブロックのうち、前記連続領域を構成する特定ブロック以外のものを送信対象ブロックとして、該送信対象ブロックを前記対象装置へ順番に送信するブロックデータ送信手段と、を備えることを特徴とするプログラム書換装置。車載通信システムを構成し、格納されたプログラムの書き換えが可能なメモリを有する電子制御装置であって、前記プログラムの書き換えに用いるリプログデータを、予め設定されたデータ長に分割し且つ各々にシリアル番号を対応づけたものを単位ブロック、該単位ブロックが示す値が予め設定された特定値であるものを特定ブロック、該特定ブロックが予め設定された下限値以上連続する領域を連続領域として、該連続領域の先頭となる単位ブロックに対応づけられたシリアル番号である開始番号及び該連続領域の末尾となる単位ブロックに対応づけられたシリアル番号である終了番号からなる領域情報を、前記車載通信システムに接続されたプログラム書換装置から受信する領域情報受信手段と、前記単位ブロックのうち、前記連続領域を構成する特定ブロック以外のものを送信対象ブロックとして、該送信対象ブロックを、前記車載通信システムに接続された前記プログラム書換装置から受信するブロックデータ受信手段と、前記領域情報に基づいて復元した前記連続領域、及び前記ブロックデータ受信手段により受信した前記送信対象ブロックによって前記リプログデータを復元して、前記メモリの書き換えを実行する書換実行手段と、を備えることを特徴とする電子制御装置。しかし、上述の従来技術では、リプログデータの圧縮処理や解凍処理に時間を要してしまうため、作業効率を十分に向上させることができないという問題や、リプログデータを解凍する解凍プログラムを、リプログ対象装置に予め実装しておくか、リプログを実行する際に転送する必要があり、前者の場合、貴重なメモリの一部が、解凍プログラムに使われてしまうというと言う問題があり、後者の場合、作業効率を低下させてしまうという問題があった。本発明は、上記問題点を解決するために、電子制御装置のプログラムを書き換えるリプログする際に、既存の圧縮,解凍プログラムを用いることなく、リプログデータのデータ量を削減しリプログに要する作業時間を短縮することを目的とする。上記目的を達成するための発明である請求項1に記載のプログラム書換方法では、まず、プログラム書換装置にて、前記プログラムの書き換えに用いるリプログデータを、予め設定されたデータ長の単位ブロックに分割し、各単位ブロックにシリアル番号を対応づける第1の手順。次に、単位ブロックのうち、その単位ブロックが示す値が予め設定された特定値であるものを特定ブロック、その特定ブロックが予め設定された下限値以上連続する領域を連続領域として、連続領域の先頭となる単位ブロックに対応づけられたシリアル番号である開始番号及び連続領域の末尾となる単位ブロックに対応づけられたシリアル番号である終了番号からなる領域情報を、プログラム書換装置から対象装置に送信する第2の手順。そして、単位ブロックのうち、連続領域を構成する特定ブロック以外のものを送信対象ブロックとして、この送信対象ブロックを、プログラム書換装置から対象装置に順番に送信する第3の手順。最後に、対象装置にて、プログラム書換装置から受信した送信対象ブロック及び領域情報に基づいて生成した特定ブロックによりリプログデータを復元して、メモリの書き換えを実行する第4の手順。これにより、既存の圧縮,解凍プログラムを用いることなく、車載通信システムを介して伝送するリプログデータのデータ量を削減することができ、その結果、データ伝送に要する時間が削減されるため、リプログの作業効率を向上させることができる。特に、電子制御装置においてプログラムを格納するメモリが、所定サイズのセクタ単位でデータの書き換えが行われる場合、セクタの未使用部分にはゼロが書き込まれるため、効果的にデータ量を削減することができる。次に、請求項2に記載のプログラム書換装置では、分割手段が、プログラムの書き換えに用いるリプログデータを、予め設定されたデータ長の単位ブロックに分割し、各単位ブロックにシリアル番号を対応づける。そして、領域情報送信手段が、分割手段にて分割された単位ブロックのうち、単位ブロックが示す値が予め設定された特定値であるものを特定ブロック、特定ブロックが予め設定された下限値以上連続する領域を連続領域として、連続領域の先頭となる単位ブロックに対応づけられたシリアル番号である開始番号及び連続領域の末尾となる単位ブロックに対応づけられたシリアル番号である終了番号からなる領域情報を対象装置へ送信する。更に、ブロックデータ送信手段が、単位ブロックのうち、連続領域を構成する特定ブロック以外のものを送信対象ブロックとして、送信対象ブロックを対象装置へ順番に送信する。また、請求項3に記載の電子制御装置では、プログラムの書き換えに用いるリプログデータを、予め設定されたデータ長に分割し且つ各々にシリアル番号を対応づけたものを単位ブロック、該単位ブロックが示す値が予め設定された特定値であるものを特定ブロック、該特定ブロックが予め設定された下限値以上連続する領域を連続領域として、領域情報受信手段が、連続領域の先頭となる単位ブロックに対応づけられたシリアル番号である開始番号及び連続領域の末尾となる単位ブロックに対応づけられたシリアル番号である終了番号からなる領域情報を、前記車載通信システムに接続されたプログラム書換装置から受信する。また、ブロックデータ受信手段が、単位ブロックのうち、連続領域を構成する特定ブロック以外のものを送信対象ブロックとして、該送信対象ブロックを、車載通信システムに接続されたプログラム書換装置から受信する。そして、書換実行手段が、領域情報受信手段が受信した領域情報に基づいて復元した連続領域、及び前記ブロックデータ受信手段が受信した前記送信対象ブロックによって前記リプログデータを復元して、前記メモリの書き換えを実行する。これら、請求項2に記載のプログラム書換装置及び請求項3に記載の電子制御装置によれば、請求項1に記載のプログラム書換方法を実現することができる。以下に本発明の実施形態を図面と共に説明する。[全体構成]図1は、本発明が適用された車載通信システム1及び車載通信システム1に接続して使用するプログラム書換装置5の構成を示すブロック図である。車載通信システム1は、図1に示すように、車両の各部に設置された複数の電子制御ユニットECU2と、ECU2を相互に接続する通信線路である基幹バス3と、ECU2を介した車両の状態の診断や、ECU2のプログラムの書き換えリプログ等を実行する外部ツールここではプログラム書換装置5を接続するためのコネクタ4とを備えている。なお、車載通信システム1では、基幹バスではCANプロトコルによる通信を実行するように構成されている。但し、一つの通信フレームで送信可能な最大データ量はNバイトNは正整数、本実施形態ではN=8に制限されているものとする。[ECU]ECU2は、基幹バス3を介した通信を実行する通信制御部21と、通信制御部21を介して各種情報を取得したり提供したりすると共に、取得した情報に基づいて当該ECU2に割り当てられた機能を実現するための各種処理の他、自ECU2が有するプログラムを書き換えるECU側リプログ処理を少なくとも実行する処理実行部22とを備えている。なお、通信制御部21は、CANトランシーバやCANコントローラ等によって構成された周知のものである。また、処理実行部22は、CPU,メモリを少なくとも備えた周知のマイクロコンピュータからなる。但し、プログラムを格納するための不揮発性メモリとして、データの書換が可能なフラッシュメモリを備えていると共に、一時的なデータを記憶するためのRAMは、フラッシュメモリより大きな記憶容量を有するものが用いられている。また、フラッシュメモリは、データプログラムを消去する際には、所定データサイズ例えば4K~64Kバイト程度からなるセクタ単位で処理されるように構成されている。[プログラム書換装置]プログラム書換装置5は、コネクタ4を介して車載通信システム1を構成するECU2との通信を実行する通信制御部51と、インターネット等の公共通信ネットワークを介した通信を実行するネットワーク通信部52と、当該プログラム書換装置5のユーザが操作を入力したり、通信制御部51やネットワーク通信部52を介して取得した情報や、ユーザが行うべき操作手順等をユーザに提示したりするための入出力部53と、入出力部53から入力される指令に従って、個々のECU2のプログラムを書き換えるルール側リプログ処理を少なくとも実行する処理実行部54とを備えている。通信制御部51は、ECU2の通信制御部21と同様に構成されたものであり、ネットワーク通信部52は、TCP/IPを実現するトランシーバやコントローラ等によって構成された周知のものである。また、処理実行部54は、CPU,メモリを少なくとも備えた周知のマイクロコンピュータからなる。[ツール側リプログ処理]図2は、プログラム書換装置5の処理実行部54が実行するツール側リプログ処理の内容を示すフローチャートである。なお、本処理は、入出力部53を介して、リプログ処理の実行を要求するリプログ指令が入力されると起動する。なお、リプログ指令には、リプログ処理の対象となるECU2以下対象ECUというやフラッシュメモリのセクタ以下対象セクタというを指定する指定情報や、リプログデータのファイル名や取得先を示す取得情報が少なくとも含まれている。本処理が起動すると、まず、リプログ指令に示された取得先情報に基づき、ネットワーク通信部52を介してリプログデータを取得しS110、取得したリプログデータをNバイト一つの通信フレームで送信可能なデータ量の単位ブロックに分割して、各単位ブロックにシリアル番号を対応づけ、更に、全ビットがゼロとなる単位ブロックをゼロブロック本発明における特定ブロックの一例として、そのゼロブロックに対応づけられたシリアル番号を抽出するS120。次に、ゼロブロックがMMは正整数、例えばM=50個以上連続する領域を連続領域として抽出し、抽出された連続領域の総数を表す領域数情報を生成すると共に、抽出された個々の連続領域について、その連続領域の先頭となる単位ブロックに対応づけられたシリアル番号である開始番号、末尾となる単位ブロックに対応づけられたシリアル番号である終了番号からなる領域サイズ情報を生成するS130。通信制御部51を介して、リプログモードへの移行を要求する通信フレームリプログ開始フレームを送信するS140。なお、リプログ開始フレームには、リプログ指令に示された指定情報、即ち対象ECUや対象セクタを指定する情報が少なくとも示されている。続けて、通信制御部51を介して、一つの連続領域の領域サイズ情報を示した通信フレーム領域情報フレームを送信するS150。但し、領域情報フレームの送信後は、対象ECUから応答フレームを受信するまで待機し、応答フレームを受信すると送信に成功したものとして次のステップに進む。ここで、図5aは、領域情報フレームのデータ領域8バイトで構成の構成を示す説明図である。図5aに示すように、領域情報フレームは、領域情報フレームの残り送信数2バイト、領域サイズ情報開始番号3バイト、終了番号3バイトによって構成されている。なお、残り送信数に設定される値は、最初に送信される領域情報フレームであれば[残り送信数]←[領域数情報]-1であり、その後、領域情報フレームが送信される毎に1ずつ減少した値[残り送信数]←[前回の領域情報フレームにおける残り送信数]-1が設定される。先のS130にて抽出された全ての連続領域について領域情報フレームの送信を終了したか否かを判断し、終了していなければ、S150に戻って領域情報フレームの送信を繰り返す。一方、全ての連続領域について領域情報フレームの送信を終了していれば、連続領域を構成する単位ブロックゼロブロック以外の単位ブロックを送信対象ブロックとして、送信対象ブロックの総数である必要送信回数を算出しS170、この必要送信回数を示した通信フレーム回数情報フレームを送信するS180。但し、回数情報フレームの送信後は、対象ECUから応答フレームを受信するまで待機し、応答フレームを受信すると送信に成功したものとして次のステップに進む。なお、必要送信回数は、具体的には、リプログデータを構成する単位ブロックの総数からS120で抽出された連続領域を構成するゼロブロックの総数を減じることで算出する。ここで、図5bは、回数情報フレームのデータ領域の構成を示す説明図である。図5bに示すように、回数情報フレームでは、データ領域の3バイトを使って必要送信回数が設定される。次に、一つの送信対象ブロックの値を示した通信フレーム書込情報フレームを送信するS190。但し、書込情報フレームの送信後は、対象ECUから応答フレームを受信するまで待機し、応答フレームを受信すると送信に成功したものとして次のステップに進む。なお、通信フレームを送信する毎に、送信回数をカウントする送信カウンタをインクリメントする。そして、送信カウンタの値が必要送信回数に達したか否かにより、全ての送信対象ブロックについて書込情報フレームの送信を終了したか否かを判断しS200、必要送信回数に達していなければ、S190に戻って書込情報フレームの送信を繰り返す。一方、送信カウンタの値が必要送信回数に達していれば、対象ECUからリプログの完了を示す通信フレームリプログ完了フレームを受信したか否かを判断しS210、受信していなければ同ステップを繰り返すことで待機し、リプログ完了フレームを受信すると、本処理を終了する。[ECU側リプログ処理]図3は、ECU2の処理実行部22が実行するECU側リプログ処理の内容を示すフローチャートである。なお、本処理は、IGイグニションスイッチがオンされる等して、ECU2への電源供給が行われている状態で、自ECU宛のモード移行フレームを受信すると起動する。本処理が起動すると、回数情報フレームを受信したか否かを判断しS310、受信していなければ、領域情報フレームを受信したか否かを判断しS320、受信していなければ、S310に戻る。領域情報フレームを受信した場合は、領域情報フレームに示された領域サイズ情報を記憶すると共に、応答データを送信してS330、S310に戻る。一方、回数情報フレームを受信した場合は、回数情報フレームに示された必要送信回数を記憶すると共に、応答データを送信するS340。その後、プログラム書換装置5から送信されてくる書込情報フレームに示された単位ブロックの値、及び先のS330,S340で記憶した必要送信回数や領域サイズ情報に基づいてリプログデータを再生するリプログデータ再生処理を実行するS350。リプログデータ再生処理によってリプログデータが再生されると、先に受信したリプログ開始フレームに示された指定情報に従って、フラッシュメモリの対象セクタのデータを削除しS360、一時記憶領域に格納されている再生されたリプログデータを対象セクタに書き込むS370。最後に、プログラム書換装置5に対してリプログ処理が完了したことを示すリプログ完了フレームを送信してS380、本処理を終了する。[リプログデータ再生処理]図4は、S350にて実行するリプログデータ再生処理の詳細を示すフローチャートである。本処理では、まず、本処理で使用するパラメータを初期化するS410。具体的には、書込情報フレームの受信数を示すパラメータNDをゼロ、処理の対象となる単位ブロックのシリアル番号を示すパラメータNSを1に設定する。そして、書込情報フレームを受信したか否かを判断しS420、受信していなければ同ステップを繰り返すことで待機する。一方、書込情報フレームを受信すると、書込情報フレームに示された単位ブロック1個分のデータを、再生したリプログデータを一時的に記憶するための一時記憶領域に格納すると共に、応答データを送信するS430。パラメータND,NSをいずれもインクリメントしS440、パラメータNSが先のS330にて記憶した領域サイズ情報の開始番号と一致するか否かを判断するS450。パラメータNSが開始番号と一致すれば、値が全てゼロとなる単位ブロック1個分のデータを一時記憶領域に既に格納されているリプログデータの最後尾に追加するゼロブロック挿入処理を実行してS460、パラメータNSをインクリメントするS470。その後、パラメータNSが先のS450で用いた開始番号と対になる終了番号以下であるか否かを判断しS480、終了番号以下であれば、S460に戻って、ゼロブロック挿入処理を繰り返す。一方、パラメータNSが終了番号より大きいか、先のS450にてパラメータNSが開始番号と一致しなかった場合は、パラメータNDが先のS340で記憶された必要送信回数と一致するか否かを判断するS490。パラメータNDが必要送信回数と一致しなければ、S420に戻って上述の処理を繰り返し、パラメータNDが必要送信回数と一致していれば、全ての書込情報フレームの受信を終了したものとして、本処理を終了する。つまり、連続領域を構成する単位ブロックのデータは、プログラム書換装置5から送信されてこないため、領域サイズ情報に従って、送信が省略された箇所のデータを挿入することでリプログデータを再生するようにされている。[動作]図6は、リプログ処理を実行する際に、プログラム書換装置5と、リプログ処理の対象となったECU2との間で送受信される通信フレームを示したシーケンス図である。図6に示すように、プログラム書換装置5にて、リプログ指令操作が行われると、リプログデータが取得され、リプログの対象となるECU2対象ECUに対してリプログ開始フレームが送信される。すると対象ECUでは、動作モードがリプログモードに移行し、ECU側リプログ処理が起動される。その後、プログラム書換装置5が、リプログデータ中のゼロブロックが所定個以上連続した連続領域に関する情報を示した領域情報フレームを、存在する連続領域の数だけ繰り返し送信する。なお、領域情報フレームを受信した対象ECUは応答フレームを返送し、プログラム書換装置5は、応答フレームの受信を待って、次の領域情報フレームを送信する。領域除法フレームの送信が終了すると、後に続く書込情報フレームの送信回数を示した回数情報フレームを送信し、その応答フレームが対象ECUから返送されると、書込情報フレームの送信を開始する。この領域情報フレームも、領域情報フレームや回数情報フレームと同様に、応答フレームの受信を待って、次の書込情報フレームを送信する。回数情報フレームに示された必要送信回数分の書込情報フレームの受信を終了した対象ECUは、プログラム書換装置5から取得した領域サイズ情報、必要送信回数、書込データに基づいてリプログデータを再生し、フラッシュメモリの対象セクタのデータを、再生したリプログデータでの書き換えを終了すると、プログラム書換装置5に対してリプログ完了フレームを送信し、リプログモードから通常モードに移行することで、一連の処理を終了する。[効果]以上説明したように、プログラム書換装置5は、プログラムの書き換えに用いるリプログデータを、そのまま送信するのではなく、ゼロブロックがM個以上連続する連続領域を抽出し、抽出した連続領域に関する情報領域サイズ情報を対象ECUに送信した後、連続領域以外のリプログデータを単位ブロック毎に送信し、対象ECUでは、プログラム書換装置5から送信されてこない連続領域のデータについては、領域サイズ情報に基づいて復元することでリプログデータを再生し、その再生したリプログデータを用いてプログラムの書き換えを実行するようにされている。これにより、既存の圧縮,解凍プログラムを用いることなく、車載通信システム1を介して伝送するリプログデータのデータ量、ひいてはデータ伝送に要する時間を削減することができ、その結果、リプログの作業効率を向上させることができる。特に、ECU2では、プログラムを格納するメモリが、セクタ単位でデータの消去を行うフラッシュメモリが用いられており、セクタの未使用部分には大きな連続領域が形成され易いため、効果的にデータ量を削減することができる。なお、本実施形態において、S120~S160の処理を実行する処理実行部54が分割手段及び領域情報送信手段の一例であり、S170~S200を実行する処理実行部54がブロックデータ送信手段の一例であり、S320~S330を実行する処理実行部22が領域情報受信手段の一例であり、S310,S340~S370を実行する処理実行部22がブロックデータ受信手段及び書換実行手段の一例である。[他の実施形態]以上、本発明の一実施形態について説明したが本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において様々な態様にて実施することが可能である。例えば、上記実施形態では、連続領域の復元/リプログデータの再生を、書込情報フレームの受信と並行して行っているが、これをフラッシュメモリへの書込時に行うようにしてもよい。また、連続領域か否かを判断するゼロブロックの連続数Mは、連続領域のデータを全て書込情報フレームで送信するのに要する時間や、領域情報フレームの送信や領域サイズ情報等から連続領域を復元する処理に要する時間を考慮して、十分な処理時間の削減効果が得られるような値に設定すればよい。また、上記実施形態では、ゼロブロックが連続する領域を連続領域としているが、全てのビットが1となる単位ブロックが連続する領域を連続領域としてもよい。"