(57)【要約】  配信装置及び通信装置夫々は、通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備える。前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記通信装置に送信し、前記通信装置の記憶部に記憶された進捗情報を前記通信装置から受信し、受信した進捗情報に応じて、前記通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する。前記通信装置は、前記配信装置から送信された進捗情報を受信し、受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記配信装置に送信する。
2018105609.tif 000002
【特許請求の範囲】
【請求項１】
メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されており、コンピュータプログラムを配信する配信装置及び通信装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新システムであって、
前記配信装置及び通信装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、
前記配信装置は、
前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新する第１更新部と、
該第１更新部で更新した進捗情報を前記通信装置に送信する第１送信部と、
該第１送信部で進捗情報を送信した場合、前記通信装置の記憶部に記憶された進捗情報を前記通信装置から受信する第１受信部と、
該第１受信部で受信した進捗情報に応じて、前記通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部と
を備え、
前記通信装置は、
前記配信装置から送信された進捗情報を受信する第２受信部と、
該第２受信部で受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新する第２更新部と、
該第２更新部で更新した進捗情報を前記配信装置に送信する第２送信部と
を備えるプログラム更新システム。
【請求項２】
メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されており、コンピュータプログラムを配信する配信装置及び配信されるべきコンピュータプログラムを保持する更新装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記配信装置が取得した新たなコンピュータプログラムを通信装置に配信し、該通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新システムであって、
前記配信装置及び更新装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、
前記配信装置は、
前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新する第１更新部と、
該第１更新部で更新した進捗情報を前記更新装置に送信する第１送信部と、
該第１送信部で進捗情報を送信した場合、前記更新装置の記憶部に記憶された進捗情報を前記更新装置から受信する第１受信部と、
該第１受信部で受信した進捗情報に応じて、前記更新装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部と
を備え、
前記更新装置は、
前記配信装置から送信された進捗情報を受信する第２受信部と、
該第２受信部で受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新する第２更新部と、
該第２更新部で更新した進捗情報を前記配信装置に送信する第２送信部と
を備えるプログラム更新システム。
【請求項３】
前記配信装置は、前記通信信号及び新たなコンピュータプログラムの送受信を中断した場合、前記第１更新部によって自装置の記憶部に記憶する進捗情報を、送受信を再開すべき通信信号又は新たなコンピュータプログラムに応じて更新するようにしてある請求項１又は２に記載のプログラム更新システム。
【請求項４】
前記配信装置は、
前記通信信号及び新たなコンピュータプログラムの送受信を中断した場合、前記通信装置又は更新装置の記憶部に記憶された進捗情報の送信を要求する信号を前記通信装置又は更新装置に送信する第３送信部と、
該第３送信部で信号を送信した場合、前記通信装置又は更新装置の記憶部に記憶された進捗情報を前記通信装置又は更新装置から受信する第３受信部と、
該第３受信部で受信した進捗情報と自装置の記憶部に記憶した進捗情報とを比較する比較部と、
該比較部の比較結果に基づいて、より遅い進捗を表す進捗情報を特定する第２の特定部と、
該第２の特定部で特定した進捗情報を自装置の記憶部に記憶して更新する第３更新部と、
該第３更新部で更新した進捗情報を前記通信装置又は更新装置に送信する第４送信部と
を更に備え、
前記通信装置又は更新装置は、
前記配信装置から前記進捗情報の送信を要求する信号を受信する第４受信部と、
該第４受信部で信号を受信した場合、自装置の記憶部に記憶した進捗情報を前記配信装置に送信する第５送信部と、
該第５送信部で進捗情報を送信した場合、前記配信装置の記憶部に記憶された進捗情報を前記配信装置から受信する第５受信部と、
該第５受信部で受信した進捗情報を自装置の記憶部に記憶して更新する第４更新部と
を更に備える
請求項１又は２に記載のプログラム更新システム。
【請求項５】
前記通信装置又は更新装置は、
前記第２受信部で受信した進捗情報が表す進捗が、自装置の記憶部に記憶した進捗情報が表す進捗よりも、前記通信信号及び新たなコンピュータプログラムの何れかの送受信２回分以上早いか否かを判定する判定部を更に備え、
前記第２更新部は、前記判定部で２回分以上早くはないと判定した場合、前記第２受信部で受信した進捗情報を自装置の記憶部に記憶して更新するようにしてあり、
前記第２送信部は、前記判定部の判定結果に関わらず、自装置の記憶部に記憶した進捗情報を前記配信装置に送信するようにしてある
請求項１から４の何れか１項に記載のプログラム更新システム。
【請求項６】
前記新たなコンピュータプログラムは、複数に分割されており、
前記配信装置と、前記通信装置又は更新装置とは、分割されたコンピュータプログラムを順次互いに送受信するようにしてある
請求項１から５の何れか１項に記載のプログラム更新システム。
【請求項７】
メモリに記憶してあるコンピュータプログラムに基づく処理を実行する外部装置と通信可能に接続されており、前記外部装置との間で通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記外部装置に前記新たなコンピュータプログラムを配信してコンピュータプログラムを更新させる配信装置であって、
前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部と、
前記送受信の進捗に応じて、前記記憶部に記憶する進捗情報を更新する更新部と、
該更新部で更新した進捗情報を前記外部装置に送信する送信部と、
該送信部で送信した進捗情報に基づいて前記外部装置にて更新された進捗情報を前記外部装置から受信する受信部と、
該受信部で受信した進捗情報に応じて、前記外部装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部と
を備える配信装置。
【請求項８】
メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されている通信システムにて、コンピュータプログラムを配信する配信装置及び通信装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新方法であって、
前記配信装置及び通信装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、
前記配信装置は、
前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新し、
更新した進捗情報を前記通信装置に送信し、
前記通信装置の記憶部に記憶された進捗情報を前記通信装置から受信し、
受信した進捗情報に応じて、前記通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定し、
前記通信装置は、
前記配信装置から送信された進捗情報を受信し、
受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新し、
更新した進捗情報を前記配信装置に送信するプログラム更新方法。
【請求項９】
メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されている通信システムにて、コンピュータプログラムを配信する配信装置及び配信されるべきコンピュータプログラムを保持する更新装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記配信装置が取得した新たなコンピュータプログラムを通信装置に配信し、該通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新方法であって、
前記配信装置及び更新装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、
前記配信装置は、
前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新し、
更新した進捗情報を前記更新装置に送信し、
前記更新装置の記憶部に記憶された進捗情報を前記更新装置から受信し、
受信した進捗情報に応じて、前記更新装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定し、
前記更新装置は、
前記配信装置から送信された進捗情報を受信し、
受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新し、
更新した進捗情報を前記配信装置に送信するプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム更新システム、配信装置及びプログラム更新方法に関する。本出願は、２０１６年１２月６日出願の日本出願第２０１６−２３６９４２号に基づく優先権を主張し、前記日本出願に記載された全ての記載事項を援用するものである。
【背景技術】
【０００２】
コンピュータプログラム（以下、単にプログラムと言う）に基づく制御を行う制御装置を複数用いた制御システムが様々な分野で利用されている。車両制御の分野では、車両内に制御装置として多数のＥＣＵ（Electronic Control Unit ）が配されており、各ＥＣＵが車載ＬＡＮ（Local Area Network ）を介して情報を送受信し、協調及び連携して多様な処理を行なうように構成されている。【０００３】
上記制御装置の機能を追加若しくは変更する場合、又はプログラムの不具合を解消すべき場合など、制御装置のプロセッサが実行するプログラムの更新が必要となるときがある。プログラムの更新方法としては、特定の制御装置が外部から有線又は無線通信にて受信した更新プログラムを対象の制御装置へ送信し、これを受信した制御装置にてプログラムを更新する方法が一般的に採用される。【０００４】
このような制御システムにてプログラムを更新する場合、例えば、更新の対象装置にて更新プログラムが更新前の旧プログラムに上書きされる方法が採用されたときは、更新の中断により旧プログラムによる実行が不能になって、更新の再開もできなくなる可能性がある。【０００５】
これに対し、特許文献１には、リプログ（プログラムの更新）の対象外となるメモリブロックに簡易通信プログラムを格納しておき、リプログ時には簡易通信プログラムに基づく簡易通信を実行することにより、リプログが中断されて旧プログラムが破壊された場合であっても、簡易通信によってリプログを再開することが可能な車載装置が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１９２０９２号公報
【発明の概要】
【０００７】
本発明の一態様に係るプログラム更新システムは、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されており、コンピュータプログラムを配信する配信装置及び通信装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新システムであって、前記配信装置及び通信装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新する第１更新部と、該第１更新部で更新した進捗情報を前記通信装置に送信する第１送信部と、該第１送信部で進捗情報を送信した場合、前記通信装置の記憶部に記憶された進捗情報を前記通信装置から受信する第１受信部と、該第１受信部で受信した進捗情報に応じて、前記通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部とを備え、前記通信装置は、前記配信装置から送信された進捗情報を受信する第２受信部と、該第２受信部で受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新する第２更新部と、該第２更新部で更新した進捗情報を前記配信装置に送信する第２送信部とを備える。
【０００８】
本発明の一態様に係るプログラム更新システムは、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されており、コンピュータプログラムを配信する配信装置及び配信されるべきコンピュータプログラムを保持する更新装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記配信装置が取得した新たなコンピュータプログラムを通信装置に配信し、該通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新システムであって、前記配信装置及び更新装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新する第１更新部と、該第１更新部で更新した進捗情報を前記更新装置に送信する第１送信部と、該第１送信部で進捗情報を送信した場合、前記更新装置の記憶部に記憶された進捗情報を前記更新装置から受信する第１受信部と、該第１受信部で受信した進捗情報に応じて、前記更新装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部とを備え、前記更新装置は、前記配信装置から送信された進捗情報を受信する第２受信部と、該第２受信部で受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新する第２更新部と、該第２更新部で更新した進捗情報を前記配信装置に送信する第２送信部とを備える。
【０００９】
本発明の一態様に係る配信装置は、メモリに記憶してあるコンピュータプログラムに基づく処理を実行する外部装置と通信可能に接続されており、前記外部装置との間で通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記外部装置に前記新たなコンピュータプログラムを配信してコンピュータプログラムを更新させる配信装置であって、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部と、前記送受信の進捗に応じて、前記記憶部に記憶する進捗情報を更新する更新部と、該更新部で更新した進捗情報を前記外部装置に送信する送信部と、該送信部で送信した進捗情報に基づいて前記外部装置にて更新された進捗情報を前記外部装置から受信する受信部と、該受信部で受信した進捗情報に応じて、前記外部装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部とを備える。
【００１０】
本発明の一態様に係るプログラム更新方法は、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されている通信システムにて、コンピュータプログラムを配信する配信装置及び通信装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新方法であって、前記配信装置及び通信装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置及び通信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記通信装置に送信し、前記通信装置の記憶部に記憶された進捗情報を前記通信装置から受信し、受信した進捗情報に応じて、前記通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定し、前記通信装置は、前記配信装置から送信された進捗情報を受信し、受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記配信装置に送信する。
【００１１】
本発明の一態様に係るプログラム更新方法は、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されている通信システムにて、コンピュータプログラムを配信する配信装置及び配信されるべきコンピュータプログラムを保持する更新装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記配信装置が取得した新たなコンピュータプログラムを通信装置に配信し、該通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新方法であって、前記配信装置及び更新装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記更新装置に送信し、前記更新装置の記憶部に記憶された進捗情報を前記更新装置から受信し、受信した進捗情報に応じて、前記更新装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定し、前記更新装置は、前記配信装置から送信された進捗情報を受信し、受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記配信装置に送信する。
【００１２】
なお、本願は、このような特徴的な処理部を備えるプログラム更新システム、配信装置及びプログラム更新方法として実現することができるだけでなく、かかる特徴的な処理を行うステップをコンピュータに実行させるためのコンピュータプログラムとして実現することができる。また、プログラム更新システム又は配信装置の一部又は全部を半導体集積回路として実現したり、プログラム更新システム又は配信装置を含むその他のシステムとして実現したりすることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態１に係るプログラム更新システムの構成例を示すブロック図である。
【図２】ＥＣＵ間で送受信される通信信号及び更新用制御プログラムを示すシーケンス図である。
【図３】通信信号及び更新ファイルを送受信する都度、ステップ番号を含む下位信号を送受信するＣＰＵの処理手順を示すフローチャートである。
【図４】ステップ番号の要求、応答及び通知を行う下位信号を送受信するＣＰＵの処理手順を示すフローチャートである。
【図５】本発明の実施形態３に係るプログラム更新システムの構成例を示すブロック図である。
【図６】更新装置及びＥＣＵ間で送受信される通信信号及び更新用制御プログラムを示すシーケンス図である。
【発明を実施するための形態】
【００１４】
［本発明が開示しようとする課題］
しかしながら、特許文献１に記載された技術では、プログラムの更新が中断された場合、更新処理の中断点から再開することは考慮されていないため、特定の制御装置で認識される中断点からプログラムの更新が再開されたときに、プログラムの更新が正常に完了しない虞があった。また、特定の制御装置と更新の対象装置との間で実行される信号の送受信に進捗のずれが生じる虞があった。
【００１５】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、一の制御装置と他の制御装置との間で実行される信号の送受信に進捗のずれが生じるのを防止することが可能なプログラム更新システム、配信装置及びプログラム更新方法を提供することにある。
［本発明の効果］
【００１６】
上記によれば、一の制御装置と他の制御装置との間で実行される信号の送受信に進捗のずれが生じるのを防止することが可能となる。
【００１７】
［本発明の実施形態の説明］
最初に本発明の実施態様を列記して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【００１８】
（１）本発明の一態様に係るプログラム更新システムは、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されており、コンピュータプログラムを配信する配信装置及び通信装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新システムであって、前記配信装置及び通信装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新する第１更新部と、該第１更新部で更新した進捗情報を前記通信装置に送信する第１送信部と、該第１送信部で進捗情報を送信した場合、前記通信装置の記憶部に記憶された進捗情報を前記通信装置から受信する第１受信部と、該第１受信部で受信した進捗情報に応じて、前記通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部とを備え、前記通信装置は、前記配信装置から送信された進捗情報を受信する第２受信部と、該第２受信部で受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新する第２更新部と、該第２更新部で更新した進捗情報を前記配信装置に送信する第２送信部とを備える。
【００１９】
（８）本発明の一態様に係るプログラム更新方法は、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されている通信システムにて、コンピュータプログラムを配信する配信装置及び通信装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新方法であって、前記配信装置及び通信装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記通信装置に送信し、前記通信装置の記憶部に記憶された進捗情報を前記通信装置から受信し、受信した進捗情報に応じて、前記通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定し、前記通信装置は、前記配信装置から送信された進捗情報を受信し、受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記配信装置に送信する。
【００２０】
本態様にあっては、配信装置及び通信装置が通信信号及び新たなコンピュータプログラムを互いに送受信する間に、配信装置から通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させることにより、メモリ内のコンピュータプログラムを更新する。配信装置は、通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を、送受信の進捗に応じて自装置の記憶部に記憶して更新すると共に更新した進捗情報を通信装置に送信する。通信装置は、配信装置から受信した進捗を表す進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新すると共に更新した進捗情報を配信装置に送信する。そして、配信装置は、通信装置から受信した進捗情報に応じて、通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する。これにより、通信信号及び新たなコンピュータプログラム（以下、これらを総称して単に信号ともいう）の送受信の進捗と共に通信装置にて更新された進捗情報に応じて、配信装置と通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムが特定されるため、配信装置及び通信装置間における信号の送受信の進捗ずれが防止される。
【００２１】
（２）本発明の一態様に係るプログラム更新システムは、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されており、コンピュータプログラムを配信する配信装置及び配信されるべきコンピュータプログラムを保持する更新装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記配信装置が取得した新たなコンピュータプログラムを通信装置に配信し、該通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新システムであって、前記配信装置及び更新装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新する第１更新部と、該第１更新部で更新した進捗情報を前記更新装置に送信する第１送信部と、該第１送信部で進捗情報を送信した場合、前記更新装置の記憶部に記憶された進捗情報を前記更新装置から受信する第１受信部と、該第１受信部で受信した進捗情報に応じて、前記更新装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部とを備え、前記更新装置は、前記配信装置から送信された進捗情報を受信する第２受信部と、該第２受信部で受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新する第２更新部と、該第２更新部で更新した進捗情報を前記配信装置に送信する第２送信部とを備える。
【００２２】
（９）本発明の一態様に係るプログラム更新方法は、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されている通信システムにて、コンピュータプログラムを配信する配信装置及び配信されるべきコンピュータプログラムを保持する更新装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記配信装置が取得した新たなコンピュータプログラムを通信装置に配信し、該通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新方法であって、前記配信装置及び更新装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記更新装置に送信し、前記更新装置の記憶部に記憶された進捗情報を前記更新装置から受信し、受信した進捗情報に応じて、前記更新装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定し、前記更新装置は、前記配信装置から送信された進捗情報を受信し、受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記配信装置に送信する。
【００２３】
本態様にあっては、配信装置及び更新装置が通信信号及び新たなコンピュータプログラムを互いに送受信する間に、配信装置が新たなコンピュータプログラムを更新装置から取得する。配信装置は、取得した新たなコンピュータプログラムを通信装置に配信し、通信装置は配信された新たなコンピュータプログラムを自装置のメモリに記憶させることにより、メモリ内のコンピュータプログラムを更新する。配信装置は、通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を、送受信の進捗に応じて自装置の記憶部に記憶して更新すると共に更新した進捗情報を更信装置に送信する。更信装置は、配信装置から受信した進捗を表す進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新すると共に更新した進捗情報を配信装置に送信する。そして、配信装置は、更信装置の記憶部に記憶された進捗情報を受信して、更信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する。これにより、信号の送受信の進捗と共に更信装置にて更新された進捗情報に応じて、配信装置と更信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムが特定されるため、配信装置及び更信装置間における信号の送受信の進捗ずれが防止される。
【００２４】
（３）前記配信装置は、前記通信信号及び新たなコンピュータプログラムの送受信を中断した場合、前記第１更新部によって自装置の記憶部に記憶する進捗情報を、送受信を再開すべき通信信号又は新たなコンピュータプログラムに応じて更新することが好ましい。
【００２５】
配信装置と、通信装置又は更新装置との間で行われる通信信号及び新たなコンピュータプログラムの送受信を中断した場合、配信装置は、再開時に送受信されるべき通信信号又はコンピュータプログラムに応じて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を通信装置又は更新装置に送信する。以後、進捗情報の交換が前述の通り行われる。これにより、再開後に、配信装置の記憶部に記憶される進捗情報と、通信装置又は更新装置の記憶部に記憶される進捗情報とが整合するように、配信装置と、通信装置又は更新装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムが特定されるため、配信装置と、通信装置又は更新装置との間における信号の送受信の進捗ずれが防止される。
【００２６】
（４）前記配信装置は、前記通信信号及び新たなコンピュータプログラムの送受信を中断した場合、前記通信装置又は更新装置の記憶部に記憶された進捗情報の送信を要求する信号を前記通信装置又は更新装置に送信する第３送信部と、該第３送信部で信号を送信した場合、前記通信装置又は更新装置の記憶部に記憶された進捗情報を前記通信装置又は更新装置から受信する第３受信部と、該第３受信部で受信した進捗情報と自装置の記憶部に記憶した進捗情報とを比較する比較部と、該比較部の比較結果に基づいて、より遅い進捗を表す進捗情報を特定する第２の特定部と、該第２の特定部で特定した進捗情報を自装置の記憶部に記憶して更新する第３更新部と、該第３更新部で更新した進捗情報を前記通信装置又は更新装置に送信する第４送信部とを更に備え、前記通信装置又は更新装置は、前記配信装置から前記進捗情報の送信を要求する信号を受信する第４受信部と、該第４受信部で信号を受信した場合、自装置の記憶部に記憶した進捗情報を前記配信装置に送信する第５送信部と、該第５送信部で進捗情報を送信した場合、前記配信装置の記憶部に記憶された進捗情報を前記配信装置から受信する第５受信部と、該第５受信部で受信した進捗情報を自装置の記憶部に記憶して更新する第４更新部とを更に備えることが好ましい。
【００２７】
本態様にあっては、配信装置と、通信装置又は更新装置との間における通信信号及び新たなコンピュータプログラムの送受信を中断した場合、配信装置は、通信装置又は更新装置の記憶部に記憶された進捗情報の送信を要求する信号を通信装置又は更新装置に送信し、この信号を受信した通信装置又は更新装置は、自らの記憶部に記憶した進捗情報を配信装置に送信する。この進捗情報を受信した配信装置は、受信した進捗情報と自らの記憶部に記憶した進捗情報とを比較してより遅い進捗を表す進捗情報を特定し、特定した進捗情報を自らの記憶部に記憶して更新すると共に、更新した進捗情報を通信装置又は更新装置に送信する。この進捗情報を受信した通信装置又は更新装置は、受信した進捗情報を自らの記憶部に記憶して更新する。これにより、配信装置と、通信装置又は更新装置とのうち、信号の送受信の進捗が遅い方に合わせて次に送受信すべき通信信号又は新たなコンピュータプログラムが特定されるため、配信装置と、通信装置又は更新装置との間における信号の送受信の進捗ずれが防止される。
【００２８】
（５）前記通信装置又は更新装置は、前記第２受信部で受信した進捗情報が表す進捗が、自装置の記憶部に記憶した進捗情報が表す進捗よりも、前記通信信号及び新たなコンピュータプログラムの何れかの送受信２回分以上早いか否かを判定する判定部を更に備え、前記第２更新部は、前記判定部で２回分以上早くはないと判定した場合、前記第２受信部で受信した進捗情報を自装置の記憶部に記憶して更新するようにしてあり、前記第２送信部は、前記判定部の判定結果に関わらず、自装置の記憶部に記憶した進捗情報を前記配信装置に送信することが好ましい。
【００２９】
本態様にあっては、通信装置又は更新装置は、配信装置から受信した進捗情報が表す進捗が、自らの記憶部に記憶した進捗情報が表す進捗よりも、通信信号及び新たなコンピュータプログラムの何れかの送受信（送信又は受信）２回分以上早いとは判定されない場合に、受信した進捗情報を自らの記憶部に記憶して更新し、更新した場合及び更新しない場合の何れの場合であっても自らの記憶部に記憶した進捗情報を配信装置に送信する。これにより、通信装置又は更新装置は、受信した進捗情報によって、配信装置における信号の送受信の進捗が、予定される進捗より早いと判定した場合に、自らの記憶部に記憶する進捗情報を更新せずに配信装置に送信するため、配信装置にて信号の送受信を進捗させないようにすることができる。通信装置又は更新装置は、また、受信した進捗情報によって、配信装置における信号の送受信の進捗が、予定される進捗より早くはないと判定した場合に、受信した進捗情報を配信装置に送信するため、通信装置又は更新装置の記憶部に記憶する進捗情報を配信装置における信号の送受信の進捗に整合させることが可能となる。
【００３０】
（６）前記新たなコンピュータプログラムは、複数に分割されており、前記配信装置と、前記通信装置又は更新装置とは、分割されたコンピュータプログラムを順次互いに送受信するようにしてあることが好ましい。
【００３１】
本態様にあっては、複数に分割されている新たなコンピュータプログラムが、配信装置と、前記通信装置又は更新装置との間で順次送受信される。これにより、分割された１つ１つのコンピュータプログラムについて、送受信の進捗ずれが防止される。
【００３２】
（７）本発明の一態様に係る配信装置は、メモリに記憶してあるコンピュータプログラムに基づく処理を実行する外部装置と通信可能に接続されており、前記外部装置との間で通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記外部装置に前記新たなコンピュータプログラムを配信してコンピュータプログラムを更新させる配信装置であって、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部と、前記送受信の進捗に応じて、前記記憶部に記憶する進捗情報を更新する更新部と、該更新部で更新した進捗情報を前記外部装置に送信する送信部と、該送信部で送信した進捗情報に基づいて前記外部装置にて更新された進捗情報を前記外部装置から受信する受信部と、該受信部で受信した進捗情報に応じて、前記外部装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する特定部とを備える。
【００３３】
本態様にあっては、配信装置が外部装置との間で通信信号及び新たなコンピュータプログラムを互いに送受信する間に、外部装置に新たなコンピュータプログラムを配信してメモリ内のコンピュータプログラムを更新させる。配信装置は、通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を、送受信の進捗に応じて記憶部に記憶して更新すると共に更新した進捗情報を外部装置に送信する。配信装置は、外部装置に送信した進捗情報に基づいて外部装置にて更新された進捗情報を外部装置から受信し、受信した進捗情報に応じて、外部装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定する。これにより、信号の送受信の進捗と共に外部装置にて更新された進捗情報に応じて、外部装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムが特定されるため、配信装置及び外部装置間における信号の送受信の進捗ずれが防止される。
【００３４】
［本発明の実施形態の詳細］
本発明の実施形態に係るプログラム更新システムの具体例を、以下に図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、各実施形態で記載されている技術的特徴は、お互いに組み合わせることが可能である。
【００３５】
（実施形態１）
図１は、本発明の実施形態１に係るプログラム更新システムの構成例を示すブロック図である。プログラム更新システムは、不図示の車載機器を制御する１又は複数のＥＣＵ２（通信装置及び外部装置に相当）、及び該ＥＣＵ２と通信線４を介して通信可能に接続されたＥＣＵ１ａ（配信装置に相当）を含んで構成されている。ＥＣＵ１ａは、例えば一の通信線に接続されたＥＣＵ２から送信された信号を受信して他の通信線に接続されたＥＣＵ２に送信する中継装置であってもよい。
【００３６】
ＥＣＵ１ａは、ＣＰＵ（Central Processing Unit ）１１（プロセッサに相当）を有するマイクロコンピュータを含んでなる。ＣＰＵ１１は、制御プログラム１２０（コンピュータプログラムに相当）等の情報を記憶するＲＯＭ（Read Only Memory ）１２（メモリに相当）、一時的に発生した情報を記憶するＲＡＭ（Random Access Memory ）１３（記憶部に相当）、及び経過時間等を計時するタイマ１５と互いにバス接続されている。ＲＯＭ１２は、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable Read Only Memory ）、ＥＥＰＲＯＭ（Electrically EPROM ：登録商標）等の不揮発性メモリからなる。ＲＡＭ１３は、ＤＲＡＭ（Dynamic Random Access Memory ）、ＳＲＡＭ（Static Random Access Memory ）等の書き換え可能なメモリからなる。
【００３７】
ＣＰＵ１１には、更に、ＣＡＮ（Controller Area Network）、ＬＩＮ（Local Interconnect Network ）、ＭＯＳＴ（Media Oriented Systems Transport ）、ＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol ）、ＡＶＴＰ（Audio Video Transport Protocol ）、ＦｌｅｘＲａｙ（登録商標）等の通信規格による通信を行う通信部１４、及び内部記憶装置１６がバス接続されている。内部記憶装置１６は、例えばハードディスク装置又はフラッシュメモリであり、ＥＣＵ２に送信すべき更新用制御プログラム１６０（新たなコンピュータプログラムに相当）が不図示の外部装置から転送されて記憶されている。
【００３８】
ＥＣＵ２は、ＣＰＵ２１（プロセッサに相当）を有するマイクロコンピュータを含んでなる。ＣＰＵ２１は、制御プログラム２２０（コンピュータプログラムに相当）等の情報を記憶するＲＯＭ２２（メモリに相当）、一時的に発生した情報を記憶するＲＡＭ２３（記憶部に相当）、及び通信部１４と同じ通信規格による通信を行う通信部２４とバス接続されている。ＲＯＭ２２は、例えばフラッシュメモリ等の書き換え可能なメモリである。
【００３９】
上述の構成にて、ＥＣＵ１ａ及びＥＣＵ２夫々が、通信部１４及び２４を用いて通信信号及び更新用制御プログラム１６０（以下、これらを総称して単に信号ともいう）を互いに送受信することにより、ＥＣＵ１ａがＥＣＵ２に更新用制御プログラム１６０を配信する。ここでいう送受信とは、１つの通信信号又は更新用制御プログラム１６０が、ＥＣＵ１ａ及びＥＣＵ２の一方から送信されて他方で受信される処理を言う。ＥＣＵ２は、ＥＣＵ１ａから配信された更新用制御プログラム１６０をＲＯＭ２２に記憶されている制御プログラム２２０に上書きすべくＲＯＭ２２に記憶させることにより、制御プログラム２２０を更新する。
【００４０】
図２は、ＥＣＵ１ａ及びＥＣＵ２間で送受信される通信信号及び更新用制御プログラム１６０を示すシーケンス図である。以下では、送受信の進捗をステップ番号（送受信の進捗を表す進捗情報に相当）で表す。図２では、制御プログラム２２０を「ソフト」と表記し、そのバージョンを「Ｖｅｒ」と表記する。また、制御プログラム２２０の更新に係る処理をリプログ又はリプロという。本実施形態１では、更新用制御プログラム１６０が更新ファイル１６１、１６２・・に分割されているが、これに限定されるものではない。更新ファイル１６１、１６２・・の１つ１つが、ＥＣＵ１ａ及びＥＣＵ２間で送受信される信号である。図２に示すシーケンスは１例であって、これに限定されるものではない。
【００４１】
リプログの実行に際し、ＥＣＵ１ａは、現在のソフトＶｅｒ情報要求（通信信号の１つ）をＥＣＵ２に送信し（ステップ１）、これを受信したＥＣＵ２は、制御プログラム２２０の現在のバージョンを示す情報を現在のソフトＶｅｒ応答（通信信号の１つ）に含ませてＥＣＵ１ａに返信する（ステップ２）。次に、ＥＣＵ１ａは、制御プログラム２２０のバージョンがリプログの対象バージョンであることを確認してリプロ準備完了通知（通信信号の１つ）をＥＣＵ２に送信し（ステップ３）、これを受信したＥＣＵ２は、自身がリプログの可能な状態である場合に、リプロ開始可能応答（通信信号の１つ）をＥＣＵ１ａに返信する（ステップ４）。
【００４２】
次に、ＥＣＵ１ａは、更新ファイル１６１、１６２・・を順次ＥＣＵ２に送信する（ステップ５，６・・）。一方のＥＣＵ２は、更新ファイル１６１、１６２・・を順次受信してＲＡＭ２３内のバッファ領域（不図示）に一時記憶する。ＥＣＵ１ａは、複数に分割された更新用制御プログラム１６０を全て送信した後に、更新ファイル送信完了通知（通信信号の１つ）をＥＣＵ２に送信し（ステップａ）、これを受信したＥＣＵ２は、更新用制御プログラム１６０を正常に受信した場合に、更新ファイル受信完了応答（通信信号の１つ）をＥＣＵ１ａに返信する（ステップａ＋１）。
【００４３】
その後、ＥＣＵ１ａは、ソフト更新要求（通信信号の１つ）をＥＣＵ２に送信し（ステップａ＋２）、これを受信したＥＣＵ２は、上記バッファ領域に記憶した更新用制御プログラム１６０を制御プログラム２２０に上書きしてソフト更新を実行した後に、ソフト更新完了応答（通信信号の１つ）をＥＣＵ１ａに返信する（ステップａ＋３）。
【００４４】
ＥＣＵ１ａ及びＥＣＵ２夫々の制御プログラム１２０及び２２０には、以上のシーケンスで各通信信号及び更新ファイル１６１、１６２・・を送受信するタスク（処理ルーチン）が含まれている。本実施形態１では、図２に示す送受信のシーケンスを実行するタスクを「上位タスク」と称し、そのフローチャートの記載を省略する。これらの上位タスクによる処理手順では、ＥＣＵ１ａ及びＥＣＵ２間で通信が一時的に中断された場合等において、ＥＣＵ１ａ側とＥＣＵ２側とで送受信の進捗が整合しなくなることがある。そこで、ＥＣＵ１ａ側及びＥＣＵ２側夫々にて、前述の上位タスクの下位に下位タスクを設け、下位タスクにて送受信の進捗を整合させる。
【００４５】
具体的に本実施形態１では、ＥＣＵ１ａ及びＥＣＵ２夫々にてステップ番号をＲＡＭ１３及び２３に記憶しておく。そして、上位タスク間で通信信号及び更新ファイル１６１、１６２・・が送受信される度に、下位タスク間でステップ番号を含む各種信号（以下、下位信号という）を送受信することにより、ＲＡＭ１３及び２３夫々に記憶されたステップ番号を整合させるようにする。
【００４６】
例えば更新ファイル１６３の送信を中断した場合（図中の×印参照）、上位タスクは、再開時に送受信すべき更新ファイル１６３に対応するステップ番号（図２の例ではステップ７）を下位タスクに受け渡しておき、更新ファイル１６３の送信を再開する。以後、下位タスクによってＲＡＭ１３及び２３間で整合されたステップ番号が下位タスクから上位タスクに通知されるようにしておけば、更新ファイル１６１、１６２、１６３・・の送受信の連続性が保たれる。図２に白抜き矢印で示した処理については、後述する実施形態２にて説明する。以下では、上位タスクの下位に位置する下位タスクにて下位信号を送受信するＥＣＵ１ａ及びＥＣＵ２の動作を、それを示すフローチャートを用いて説明する。
【００４７】
図３は、通信信号及び更新ファイル１６１、１６２・・を送受信する都度、ステップ番号を含む下位信号を送受信するＣＰＵ１１及びＣＰＵ２１の処理手順を示すフローチャートである。図３に示すＥＣＵ１ａ側の下位タスクの処理は、リプログがステップ１から開始されるときに起動される。また、ＥＣＵ２側の下位タスクの処理は、リプログがステップ１から開始可能であるときに適時起動される。図３に示すＥＣＵ１ａ側及びＥＣＵ２側夫々の処理が起動される場合、ＲＡＭ１３及び２３に記憶されるステップ番号は、例えばステップ１の１つ前のステップであることを表す「ステップ０」に初期化される。ＣＰＵ１１は、上位タスクが通信信号及び更新ファイル１６１、１６２・・の何れかを送受信する都度、上位タスクからステップ番号が指示されるものとする。リプログが完了したか否かは、上位タスクが管理しているものとする。
【００４８】
図３に示す処理の概要は、次のとおりである。ＥＣＵ１ａのＣＰＵ１１は、上位タスクによる通信信号及び更新ファイル１６１、１６２・・の送受信の進捗に追従すべく、上位タスクから通知される送受信のステップ番号をＲＡＭ１３に記憶して更新し、更新したステップ番号を含む下位信号をＥＣＵ２に送信する。この下位信号を受信したＥＣＵ２のＣＰＵ２１は、受信した下位信号に含まれるステップ番号（以下、受信した各下位信号に含まれるステップ番号を、受信したステップ番号という）が、ＲＡＭ２３に記憶しているステップ番号より２以上大きいか否かを判定する。この判定は、ＥＣＵ１ａ側の上位タスクによる信号の送受信がＥＣＵ２側より早く進捗しているか否かを判定するものである。
【００４９】
上記判定で２以上大きいと判定された場合、ＣＰＵ２１は受信したステップ番号をＲＡＭ２３に記憶しないため、予定された進捗通りに直前に実行された送受信のステップ番号がＲＡＭ２３に保持される。一方、上記判定で２以上大きくはないと判定された場合、ＣＰＵ２１は受信したステップ番号をＲＡＭ２３に記憶して更新するため、最後に実行された送受信のステップ番号がＲＡＭ２３に記憶される。従って、ＲＡＭ２３に記憶されて更新されるステップ番号は、１回の更新で２以上増大することがなく、上位タスク間における送受信が予定通りに進捗している場合に１回の更新で１ずつ増大する。上位タスクが過去の送受信を再度実行した場合は、ＲＡＭ２３に記憶されて更新されるステップ番号が変化しないこともあるし、減少することもある。
【００５０】
ＣＰＵ２１は、更に、ＲＡＭ２３に記憶しているステップ番号を含む下位信号をＥＣＵ１ａに返信する。ここで返信される下位信号に含まれるステップ番号は、ＥＣＵ１ａ及びＥＣＵ２間での整合性が確認されたものである。返信された下位信号を受信したＥＣＵ１ａのＣＰＵ１１は、受信したステップ番号に１を加算したステップ番号を特定して上位タスクに通知する。上位タスクは、通知されたステップ番号によって、ＥＣＵ２との間で次に送受信すべき通信信号又は更新ファイルを決定することができる。
【００５１】
実際に図３の各処理が起動された場合、ＥＣＵ１ａ側では、ＣＰＵ１１が、上位（タスク）よりステップ番号の指示が有ったか否かを判定し（Ｓ１１）、指示が無かった場合（Ｓ１１：ＮＯ）、指示が有るまで待機する。ステップ番号の指示が有った場合（Ｓ１１：ＹＥＳ）、ＣＰＵ１１は、通知されたステップ番号をＲＡＭ１３に記憶して更新する（Ｓ１２：第１更新部に相当）と共に、更新したステップ番号を情報通知信号に含ませてＥＣＵ２に送信する（Ｓ１３：第１送信部及び送信部に相当）。
【００５２】
一方のＥＣＵ２では、ＣＰＵ２１が、情報通知信号を受信したか否かを判定し（Ｓ２１：第２受信部に相当）、受信しない場合（Ｓ２１：ＮＯ）、受信するまで待機する。情報通知信号を受信した場合（Ｓ２１：ＹＥＳ）、ＣＰＵ２１は、受信したステップ番号を上位（タスク）へ通知する（Ｓ２２）。上位タスクは、通知されたステップ番号によって、次に送信すべき信号を変更したり、次に受信すべき信号の待ち受けを変更したりすることが好ましい。
【００５３】
次いで、ＣＰＵ２１は、受信したステップ番号が、ＲＡＭ２３に記憶したステップ番号＋２以上であるか否かを判定し（Ｓ２３：判定部に相当）、記憶したステップ番号＋２以上ではない場合（Ｓ２３：ＮＯ）、受信したステップ番号をＲＡＭ２３に記憶して更新する（Ｓ２４：第２更新部に相当）。ステップＳ２４の処理を終えた場合、又は、受信したステップ番号が、記憶したステップ番号＋２以上である場合（Ｓ２３：ＹＥＳ）、ＣＰＵ２１は、ＲＡＭ２３に記憶したステップ番号を情報応答信号に含ませてＥＣＵ１ａに送信する（Ｓ２５：第２送信部に相当）。
【００５４】
なお、ＥＣＵ２で受信された情報通知信号に含まれるステップ番号が表す進捗が、ＲＡＭ２３に記憶されたステップ番号が表す進捗よりも信号（通信信号及び更新用制御プログラム１６０）の送受信１回分だけ早い場合は、最後の信号の送受信の進捗が予定通りであった場合に相当し、１回分以上早くはない場合は、過去の信号の送受信が再度実行された場合に相当する。
【００５５】
その後、ＣＰＵ２１は、リプログが完了したか否かを判定し（Ｓ２６）、完了した場合（Ｓ２６：ＹＥＳ）、図３の処理を終了する。これに対し、リプログが完了していない場合（Ｓ２６：ＮＯ）、ＣＰＵ２１は、ステップＳ２１に処理を移して、情報通知信号の受信待ちに戻る。
【００５６】
他方のＥＣＵ１ａでは、ＣＰＵ１１が、ステップＳ１３の処理を終えたときにタイマ１５による所定時間の計時を開始した（Ｓ１４）後、情報応答信号を受信したか否かを判定している（Ｓ１５：第１受信部及び受信部に相当）。ここでの所定時間は、上位タスクで信号の応答が監視される時間より短くしておくことが好ましい。情報応答信号を受信しない場合（Ｓ１５：ＮＯ）、ＣＰＵ１１は、所定時間の計時が終了したか否かを判定し（Ｓ１６）、終了しない場合（Ｓ１６：ＮＯ）、ステップＳ１５に処理を移す。
【００５７】
所定時間の計時が終了した場合（Ｓ１６：ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１３に記憶したステップ番号を上位（タスク）に通知し（Ｓ１７）、ステップＳ１１に処理を移して、上位（タスク）からの指示待ちに戻る。これにより、上位タスクは、最後に送受信した信号の再送が必要であると判定できる。ステップＳ１７では、ステップ番号を通知せずにタイムアウトの旨を通知し、その後の信号の送受信の変更を上位タスクで決定させるようにしてもよい。
【００５８】
ステップＳ１５で情報応答信号を受信した場合（Ｓ１５：ＹＥＳ）、ＣＰＵ１１は、受信したステップ番号より１つ大きいステップ番号を特定して上位（タスク）に通知する（Ｓ１８：特定部に相当）。これにより、上位タスクにて次に送受信すべき通信信号又は更新ファイルが決定される。ここで上位タスクに通知されるステップ番号は、上位タスクが次に送受信を予定している信号に係るステップ番号と一致しているか、又はそれよりも若番である。ＥＣＵ１ａ側の上位タスクは、例えば次に送信を予定している更新ファイルに係るステップ番号と、下位タスクから通知されたステップ番号とを照合する。照合結果が一致する場合、上位タスクは予定していた更新ファイルを送信する。照合結果が一致しない場合、上位タスクは、更新ファイルに係るステップ番号を通知されたステップ番号に戻す。これにより、上位タスクは、送信済みである複数の更新ファイルの一部のみを再送する形で、一連の更新ファイル１６１、１６２・・の送信を継続することができる。
【００５９】
その後、ＣＰＵ１１は、リプログが完了したか否かを判定し（Ｓ１９）、完了した場合（Ｓ１９：ＹＥＳ）、図３の処理を終了する。これに対し、リプログが完了していない場合（Ｓ１９：ＮＯ）、ＣＰＵ１１は、ステップＳ１１に処理を移して、上位（タスク）からの指示待ちに戻る。
【００６０】
以上のフローチャートに基づく処理により、ＥＣＵ１ａ側及びＥＣＵ２側夫々のＲＡＭ１３及び２３に記憶されるステップ番号が整合することを、図２を参照しつつ以下のケースに分けて説明する。
（ａ）ＥＣＵ１ａから送信された通信信号（例えば、現在のソフトＶｅｒ情報要求）がＥＣＵ２で受信されず、且つ、この通信信号に応じてＥＣＵ１ａから送信された下位信号（情報通知信号）がＥＣＵ２で受信されたケース
（ｂ）ＥＣＵ１ａから送信された通信信号（例えば、現在のソフトＶｅｒ情報要求）がＥＣＵ２で受信され、且つ、この通信信号に応じてＥＣＵ１ａから送信された下位信号（情報通知信号）がＥＣＵ２で受信されないケース
（ｃ）ＥＣＵ２から送信された通信信号（例えば、現在のソフトＶｅｒ応答）がＥＣＵ１ａで受信されないケース
（ｄ）ＥＣＵ１ａから送信された更新ファイル１６１、１６２・・（例えば、更新ファイル１６１）がＥＣＵ２で受信されず、且つ、この更新ファイル１６１に応じてＥＣＵ１ａから送信された下位信号（情報通知信号）がＥＣＵ２で受信されたケース
（ｅ）ＥＣＵ１ａから送信された更新ファイル１６１、１６２・・（例えば、更新ファイル１６１）に応じてＥＣＵ１ａから送信された下位信号（情報通知信号）がＥＣＵ２で受信されないケース
（ｆ）何らかの原因により、ＥＣＵ１ａ側の上位タスクが図２に示すシーケンスを中断したケース
【００６１】
（ａ）のケース：現在のソフトＶｅｒ情報要求に応じてＥＣＵ１ａから情報通知信号が送信された場合、ＲＡＭ１３及び２３夫々に記憶されるステップ番号はステップ１である。その後、ＥＣＵ１ａで受信される情報応答信号に含まれるステップ番号（ここではステップ１）に１を加算した番号のステップ２が上位タスクに通知されるが、上位タスクは、現在のソフトＶｅｒ応答が受信できないため、この通知を無視して現在のソフトＶｅｒ情報要求を再送する。この再送に応じてＥＣＵ１ａから送信される情報通知信号に含まれるステップ番号はステップ１であるため、ステップ番号の不整合は発生しない。
【００６２】
（ｂ）のケース：現在のソフト情報要求に応じてＥＣＵ１ａから送信された情報通知信号がＥＣＵ２で受信されない状態で、現在のソフトＶｅｒ応答がＥＣＵ２から送信されてＥＣＵ１ａで受信されたことにより、ＥＣＵ１ａから次の情報通知信号が送信された場合、ＲＡＭ１３及び２３夫々に記憶されるステップ番号はステップ２及びステップ１である。次いで、ＥＣＵ１ａで受信される情報応答信号に含まれるステップ番号（ここではステップ１）に１を加算した番号のステップ２が上位タスクに通知された場合、上位タスクはステップ番号をステップ３に進めずにステップ２に戻すために、現在のソフトＶｅｒ情報要求を再送する。この再送に応じてＥＣＵ１ａから送信される情報通知信号に含まれるステップ番号はステップ１であるため、ＲＡＭ１３に記憶されるステップ番号がステップ１となり、ステップ番号の不整合が解消される。
【００６３】
（ｃ）のケース：現在のソフトＶｅｒ情報要求に応じてＥＣＵ１ａから情報通知信号が送信された場合、ＲＡＭ１３及び２３夫々に記憶されるステップ番号はステップ１である。ＥＣＵ１ａの上位タスクは、現在のソフトＶｅｒ応答が受信できないため、現在のソフトＶｅｒ情報要求を再送する。この再送に応じてＥＣＵ１ａから送信される情報通知信号に含まれるステップ番号は、やはりステップ１であるため、ステップ番号の不整合は発生しない。
【００６４】
（ｄ）のケース：最初の更新ファイル１６１に応じてＥＣＵ１ａから情報通知信号が送信された場合、ＲＡＭ１３及び２３夫々に記憶されるステップ番号はステップ５である。その後、ＥＣＵ１ａから送信された更新ファイル１６２がＥＣＵ２で受信された場合、ＥＣＵ２の上位タスクが更新ファイルの不連続を検出してＥＣＵ１ａに再送を要求するように構成しておくことができる。その後、再送される更新ファイル１６１に応じてＥＣＵ１ａから送信される情報通知信号に含まれるステップ番号は、やはりステップ５であるため、ステップ番号の不整合は発生しない。
【００６５】
（ｅ）のケース：１つ前のリプロ開始可能応答に応じてＥＣＵ１ａから情報通知信号が送信された結果、ＲＡＭ１３及び２３夫々に記憶されたステップ番号はステップ４である。その後、更新ファイル１６１に応じてＥＣＵ１ａから送信された情報通知信号がＥＣＵ２で受信されない状態で、更新ファイル１６２に応じてＥＣＵ１ａから情報通知信号が送信された場合、ＲＡＭ１３及び２３夫々に記憶されるステップ番号がステップ６及びステップ４となる。次いで、ＥＣＵ１ａで受信される情報応答信号に含まれるステップ番号（ここではステップ４）に１を加算した番号のステップ５が上位タスクに通知されるため、上位タスクは、更新ファイル１６１を再送する。この再送に応じてＥＣＵ１ａから送信される情報通知信号に含まれるステップ番号はステップ５であるため、ＲＡＭ１３及び２３夫々に記憶されるステップ番号が何れもステップ５となって不整合が解消する。なお、このケースでは、最初の更新ファイル１６１がＥＣＵ２で受信されなかった場合であっても、上位タスク間の再送手順は必要とされない。
【００６６】
（ｆ）のケース：ＥＣＵ１ａ側の上位タスクは、図３に示すＥＣＵ１ａ側の処理をステップＳ１１から再開させてステップ番号が指示されるのを待ち受ける状態にしておき、この処理に対して再開時のステップ番号を指示する。これに応じて、図３に示すＥＣＵ１ａ側の処理がステップＳ１１で指示されたステップ番号をＲＡＭ１３に記憶することにより、記憶されたステップ番号を含む情報通知信号がＥＣＵ２に送信されて、図３に示す処理の全体が再開される。その後、ＲＡＭ１３及び２３に記憶されるステップ番号が整合するように処理が進むのは、上述したケース（ａ）から（ｅ）までの説明によって明らかである。
【００６７】
以上のように本実施形態１によれば、ＥＣＵ１ａ及びＥＣＵ２が通信信号及び更新用制御プログラム１６０を互いに送受信する間に、ＥＣＵ１ａからＥＣＵ２に配信された更新用制御プログラム１６０を自装置のＲＯＭ２２に記憶させることにより、ＲＯＭ２２内の制御プログラム２２０を更新する。ＥＣＵ１ａは、通信信号及び更新用制御プログラム１６０の送受信の進捗を表すステップ番号を、送受信の進捗に応じてＲＡＭ１３に記憶して更新すると共に更新したステップ番号を情報通知信号に含ませてＥＣＵ２に送信する。ＥＣＵ２は、ＥＣＵ１ａから受信した情報通知信号に含まれるステップ番号に基づいて、ＲＡＭ２３に記憶するステップ番号を更新すると共に更新したステップ番号を情報応答信号に含ませてＥＣＵ１ａに送信する。そして、ＥＣＵ１ａは、ＥＣＵ２から受信した情報応答信号に含まれるステップ番号に応じて、ＥＣＵ２との間で次に送受信すべき通信信号又は更新用制御プログラム１６０を特定する。これにより、信号の送受信の進捗と共にＥＣＵ２にて更新されたステップ番号に応じて、ＥＣＵ１ａとＥＣＵ２との間で次に送受信すべき通信信号又は更新用制御プログラム１６０が特定されるため、ＥＣＵ１ａ及びＥＣＵ２間における信号の送受信の進捗ずれを防止することが可能となる。
【００６８】
また、実施形態１によれば、ＥＣＵ１ａがＥＣＵ２との間で通信信号及び更新用制御プログラム１６０を互いに送受信する間に、ＥＣＵ２に更新用制御プログラム１６０を配信してＲＯＭ２２内の制御プログラム２２０を更新させる。ＥＣＵ１ａは、通信信号及び更新用制御プログラム１６０の送受信の進捗を表すステップ番号を、送受信の進捗に応じてＲＡＭ１３に記憶して更新すると共に更新したステップ番号を情報通知信号に含ませてＥＣＵ２に送信する。ＥＣＵ１ａは、情報通知信号に含ませてＥＣＵ２に送信したステップ番号に基づいてＥＣＵ２にて更新されたステップ番号を含む情報応答信号をＥＣＵ２から受信し、受信した情報応答信号に含まれるステップ番号に応じて、ＥＣＵ２との間で次に送受信すべき通信信号又は更新用制御プログラム１６０を特定する。これにより、信号の送受信の進捗と共にＥＣＵ２にて更新されたステップ番号に応じて、ＥＣＵ２との間で次に送受信すべき通信信号又は更新用制御プログラム１６０が特定されるため、ＥＣＵ１ａ及びＥＣＵ２間における信号の送受信の進捗ずれを防止することが可能となる。
【００６９】
更に、実施形態１によれば、ＥＣＵ２は、ＥＣＵ１ａから受信した情報通知信号に含まれるステップ番号が表す進捗が、ＲＡＭ２３に記憶したステップ番号が表す進捗よりも、通信信号及び更新用制御プログラム１６０の何れかの送受信（送信又は受信）２回分以上早いとは判定されない場合に、受信したステップ番号をＲＡＭ２３に記憶して更新し、更新した場合及び更新しない場合の何れの場合であってもＲＡＭ２３に記憶したステップ番号を情報応答信号に含ませてＥＣＵ１ａに送信する。これにより、ＥＣＵ２は、受信したステップ番号によって、ＥＣＵ１ａにおける信号の送受信の進捗が、予定される進捗より早いと判定した場合に、ＲＡＭ２３に記憶するステップ番号を更新せずにＥＣＵ１ａに送信するため、ＥＣＵ１ａにて信号の送受信を進捗させないようにすることが可能となる。ＥＣＵ２は、また、受信したステップ番号によって、ＥＣＵ１ａにおける信号の送受信の進捗が、予定される進捗より早くはないと判定した場合に、受信したステップ番号をＥＣＵ１ａに送信するため、ＥＣＵ２のＲＡＭ２３に記憶するステップ番号をＥＣＵ１ａにおける信号の送受信の進捗に整合させることが可能となる。
【００７０】
更に、実施形態１によれば、ＥＣＵ１ａと、ＥＣＵ２との間で行われる通信信号及び更新用制御プログラム１６０の送受信を中断した場合、ＥＣＵ１ａは、再開時に送受信されるべき通信信号又は更新用制御プログラム１６０に応じて、ＲＡＭ１３に記憶するステップ番号を更新し、更新したステップ番号をＥＣＵ２に送信する。以後、ステップ番号の交換が前述の通り行われる。従って、再開後に、ＥＣＵ１ａのＲＡＭ１３に記憶されるステップ番号と、ＥＣＵ２のＲＡＭ２３に記憶されるステップ番号とが整合するように、ＥＣＵ１ａとＥＣＵ２との間で次に送受信すべき通信信号又は更新用制御プログラム１６０が特定されるため、ＥＣＵ１ａ及びＥＣＵ２間における信号の送受信の進捗ずれを防止することが可能となる。
【００７１】
（実施形態２）
実施形態１は、ＥＣＵ１ａ及びＥＣＵ２夫々で記憶されるステップ番号を、ＥＣＵ２における判定に基づいてＥＣＵ１ａが整合させる形態であるのに対し、実施形態２は、ＥＣＵ１ａが主体的にステップ番号を整合させる形態である。実施形態２におけるプログラム更新システムの構成は、実施形態１の場合と同様であるため、実施形態１に対応する箇所には同様の符号を付してその説明を省略する。
【００７２】
実施形態１の例では、情報応答信号が所定時間内に受信できなかった場合（図３のステップＳ１７参照）を含めて、一旦中断したシーケンスが再開された場合（（ｆ）のケース参照）は、上位タスクが再開時に送受信すべき信号のステップ番号を正確に把握していない限り、ＥＣＵ１ａ及びＥＣＵ２間における信号の送受信の進捗ずれを防止できないことがある。
【００７３】
そこで、本実施形態２では、実施形態１の図２に白抜き矢印で示すように、ＥＣＵ１ａがＥＣＵ２に対して積極的にステップ番号を問い合わせ、取得したステップ番号とＲＡＭ１３に記憶したステップ番号とを照合し、整合が取れたステップ番号をＥＣＵ２に通知するようにする。以下では、図２に示す送受信のシーケンスを実行する上位タスクの下位に位置する下位タスクにて下位信号を送受信するＥＣＵ１ａ及びＥＣＵ２の動作を、それを示すフローチャートを用いて説明する。
【００７４】
図４は、ステップ番号の要求、応答及び通知を行う下位信号を送受信するＣＰＵ１１及びＣＰＵ２１の処理手順を示すフローチャートである。図４に示すＥＣＵ１ａ側及びＥＣＵ２側の下位タスクの処理は、一旦中断されたリプログが再開されるときに起動される。ＥＣＵ２側では、例えば、情報通知信号の受信（図３のステップＳ２１参照）が一定時間内に完了しないときに起動されるようにしてもよい。
【００７５】
図４に示す処理の概要は、次のとおりである。ＥＣＵ１ａのＣＰＵ１１は、ＥＣＵ２にステップ番号の応答を要求する下位信号を送信する。この下位信号を受信したＥＣＵ２は、ＲＡＭ２３に記憶しているステップ番号を含む下位信号をＥＣＵ１ａに送信する。この下位信号を受信したＥＣＵ１ａは、受信したステップ番号と、ＲＡＭ１３に記憶しているステップ番号とを比較して若番のステップ番号を特定し、特定したステップ番号をＲＡＭ１３に記憶して更新すると共に、更新したステップ番号を含む下位信号をＥＣＵ２に送信する。この下位信号を受信したＥＣＵ２は、受信したステップ番号をＲＡＭ２３に記憶して更新する。これにより、ＲＡＭ１３及び２３に記憶されたステップ番号が整合する。
【００７６】
実際に図４の処理が起動された場合、ＥＣＵ１ａ側では、ＣＰＵ１１が、情報要求信号を送信する（Ｓ３１：第３送信部に相当）。
【００７７】
一方のＥＣＵ２では、ＣＰＵ２１が、情報要求信号を受信したか否かを判定し（Ｓ４１：第４受信部に相当）、受信しない場合（Ｓ４１：ＮＯ）、受信するまで待機する。情報要求信号を受信した場合（Ｓ４１：ＹＥＳ）、ＣＰＵ２１は、ＲＡＭ２３に記憶したステップ番号を読み出し（Ｓ４２）、読み出したステップ番号を情報応答信号に含ませてＥＣＵ１ａに送信する（Ｓ４３：第５送信部に相当）。
【００７８】
他方のＥＣＵ１ａでは、ＣＰＵ１１が、情報応答信号を受信したか否かを判定し（Ｓ３２：第３受信部に相当）、受信しない場合（Ｓ３２：ＮＯ）、受信するまで待機する。情報応答信号を受信した場合（Ｓ３２：ＹＥＳ）、ＣＰＵ１１は、受信したステップ番号と、ＲＡＭ１３に記憶したステップ番号とを比較し（Ｓ３３：比較部に相当）、比較結果に基づいて若番のステップ番号を特定する（Ｓ３４：第２の特定部に相当）。
【００７９】
次いで、ＣＰＵ１１は、特定したステップ番号をＲＡＭ１３に記憶して更新する（Ｓ３５：第３更新部に相当）と共に、更新したステップ番号を情報変更信号に含ませてＥＣＵ２に送信する（Ｓ３６：第４送信部に相当）。ＣＰＵ１１は、更新したステップ番号に変更すべき旨を上位へ通知した（Ｓ３７）後、ステップＳ１１（図３参照）へ処理を移す。以後、ＣＰＵ１１は、図３に示すＥＣＵ１ａ側の処理を実行する。下位タスクからステップ番号の変更が通知された上位タスクは、例えば更新ファイルに係るステップ番号を通知されたステップ番号に変更する。これにより、上位タスクは、一連の更新ファイル１６１、１６２・・の送信の途中から処理を再開することができる。
【００８０】
一方のＥＣＵ２では、ＣＰＵ２１が、情報変更信号を受信したか否かを判定し（Ｓ４４：第５受信部に相当）、受信しない場合（Ｓ４４：ＮＯ）、受信するまで待機する。情報変更信号を受信した場合（Ｓ４４：ＹＥＳ）、ＣＰＵ２１は、受信したステップ番号をＲＡＭ２３に記憶して更新する（Ｓ４５：第４更新部に相当）と共に、更新したステップ番号に変更すべき旨を上位へ通知した（Ｓ４６）後、ステップＳ２１（図３参照）へ処理を移す。以後、ＣＰＵ２１は、図３に示すＥＣＵ２側の処理を実行する。
【００８１】
以上のように本実施形態２によれば、ＥＣＵ１ａとＥＣＵ２との間におけるコンピュータプログラムの送受信を中断した場合、ＥＣＵ１ａは、ＥＣＵ２のＲＡＭ２３に記憶されたステップ番号の送信を要求する情報要求信号をＥＣＵ２に送信し、この情報要求信号を受信したＥＣＵ２は、ＲＡＭ２３に記憶したステップ番号を情報応答信号に含ませてＥＣＵ１ａに送信する。この情報応答信号を受信したＥＣＵ１ａは、情報応答信号に含まれるステップ番号とＲＡＭ２３に記憶したステップ番号とを比較して若番のステップ番号を特定し、特定したステップ番号をＲＡＭ１３に記憶して更新すると共に、更新したステップ番号を情報変更信号に含ませてＥＣＵ２に送信する。この情報変更信号を受信したＥＣＵ２は、情報変更信号に含まれるステップ番号をＲＡＭ２３に記憶して更新する。これにより、ＥＣＵ１ａ及びＥＣＵ２のうち、信号の送受信の進捗が遅い方に合わせて次に送受信すべき通信信号又は更新用制御プログラム１６０が特定されるため、ＥＣＵ１ａ及びＥＣＵ２間における信号の送受信の進捗ずれを防止することが可能となる。
【００８２】
（実施形態３）
実施形態１は、ＥＣＵ１ａが内部記憶装置１６に記憶された更新用制御プログラム１６０をＥＣＵ２に送信し、これを受信したＥＣＵ２がＲＯＭ２２に記憶された制御プログラム２２０を更新する形態であった。これに対し、実施形態３は、更新装置３が内部記憶装置に記憶（保持）された更新用制御プログラムをＥＣＵ１ｂに送信し、ＥＣＵ１ｂが受信した更新用制御プログラムをＥＣＵ２に更に送信し、これを受信したＥＣＵ２がＲＯＭ２２に記憶された制御プログラム２２０を更新する形態である。
【００８３】
図５は、本発明の実施形態３に係るプログラム更新システムの構成例を示すブロック図である。プログラム更新システムは、１又は複数のＥＣＵ２（通信装置に相当）、ＥＣＵ１ｂ（配信装置に相当）及び更新装置３を含み、これらが通信線４を介して通信可能に接続されている。更新装置３は、例えばＥＣＵ１ｂの不図示のＯＢＤ（On-Board Diagnostics ）コネクタを介して接続ケーブルで接続されていてもよい。
【００８４】
ＥＣＵ１ｂは、実施形態１の図１に示すＥＣＵ１ａと比較して内部記憶装置１６を欠いているが、その他の構成はＥＣＵ１ａと同様である。
【００８５】
更新装置３は、ＣＰＵ３１（プロセッサに相当）を有するマイクロコンピュータを含んでなる。ＣＰＵ３１は、制御プログラム３２０（コンピュータプログラムに相当）等の情報を記憶するＲＯＭ３２（メモリに相当）、一時的に発生した情報を記憶するＲＡＭ３３（記憶部に相当）、通信部１４，２４と同じ通信規格による通信を行う通信部３４、経過時間等を計時するタイマ３５、及び内部記憶装置３６とバス接続されている。
【００８６】
内部記憶装置３６は、例えばハードディスク装置又はフラッシュメモリであり、ＥＣＵ１ｂに送信すべき更新用制御プログラム３６０（新たなコンピュータプログラムに相当）が予め記憶されている。その他、実施形態１に対応する箇所には同様の符号を付してその説明を省略する。
【００８７】
上述の構成にて、ＥＣＵ１ｂ及び更新装置３夫々が、通信部１４及び３４を用いて通信信号及び更新用制御プログラム３６０（以下、これらを総称して単に信号ともいう）を互いに送受信することにより、ＥＣＵ１ｂが更新用制御プログラム３６０を更新装置３から取得する。ＥＣＵ１ｂは、取得した更新用制御プログラム３６０を、実施形態１に示す手順でＥＣＵ２に配信し、ＥＣＵ２は配信された更新用制御プログラム３６０をＲＯＭ２２に記憶されている制御プログラム２２０に上書きすべくＲＯＭ２２に記憶させることにより、制御プログラム２２０を更新する。
【００８８】
図６は、更新装置３、ＥＣＵ１ｂ及びＥＣＵ２間で送受信される通信信号及び更新用制御プログラム３６０を示すシーケンス図である。本実施形態３では、更新用制御プログラム３６０が更新ファイル３６１，３６２・・に分割されているが、これに限定されるものではない。更新ファイル３６１，３６２・・の１つ１つが、更新装置３及びＥＣＵ１ｂ間と、ＥＣＵ１ｂ及びＥＣＵ２間とで送受信される信号である。図６に示すシーケンスは１例であって、これに限定されるものではない。以下では、主に更新装置３及びＥＣＵ１ｂ間の通信シーケンスについて説明する。例えば、更新用制御プログラム３６０の送受信が中断及び再開される場合のシーケンスは、ステップ番号の問い合わせ、照合、通知が行われる場合を含めて、実施形態１の図２に示すものと同様であるため、図６への記載を省略する。ＥＣＵ１ｂ及びＥＣＵ２間の通信シーケンスについては、実施形態１で既に説明したため、ここでの説明を省略する。
【００８９】
リプログの実行に際し、ＥＣＵ１ｂは、ソフト新Ｖｅｒ有無確認要求（通信信号の１つ）を更新装置３に送信し（ステップ１）、これを受信したＥＣＵ２は、更新用制御プログラム３６０が内部記憶装置３６に記憶されている場合に、ソフト新Ｖｅｒ有無応答（有）（通信信号の１つ）をＥＣＵ１ｂに返信する（ステップ２）。次に、ＥＣＵ１ｂは、ＥＣＵ２の制御プログラム２２０のバージョンがリプログの対象バージョンであることを確認して更新ファイルＤＬ準備要求（通信信号の１つ）を更新装置３に送信し（ステップ３）、これを受信した更新装置３は、更新ファイル送信準備完了応答（通信信号の１つ）をＥＣＵ１ｂに返信する（ステップ４）。
【００９０】
次に、ＥＣＵ１ｂは、更新ファイル送信要求（通信信号の１つ）を更新装置３に送信し（ステップ５）、これを受信した更新装置３は、更新ファイル３６１、３６２・・を順次ＥＣＵ１ｂに送信する（ステップ６，７・・）。更新装置３は、複数に分割された更新用制御プログラム３６０を全て送信した後に、更新ファイル送信終了通知（通信信号の１つ）をＥＣＵ１ｂに送信する（ステップａ）。これを受信したＥＣＵ１ｂは、更新用制御プログラム３６０を正常に受信した場合に、更新ファイル受信完了応答（通信信号の１つ）を更新装置３に返信する（ステップａ＋１）。その後、ＥＣＵ１ｂ及びＥＣＵ２間の処理手順が終了した場合、ＥＣＵ１ｂは、リプロ完了応答（通信信号の１つ）を更新装置３に送信して（ステップａ＋２）リプログを終了する。
【００９１】
ＥＣＵ１ｂ及び更新装置３夫々の制御プログラム１２０及び３２０には、以上のシーケンスで各通信信号及び更新ファイル３６１、３６２・・を送受信する上位タスクが含まれている。ここでは、図６に示す送受信のシーケンスを実行する上位タスクのフローチャートの記載を省略する。これらの上位タスクによる処理手順では、ＥＣＵ１ｂ及び更新装置３間で通信が一時的に中断された場合等において、ＥＣＵ１ｂ側と更新装置３側とで送受信の進捗が整合しなくなることがある。そこで、ＥＣＵ１ｂ側及び更新装置３側夫々にて、前述の上位タスクの下位に下位タスクを設け、下位タスクにて送受信の進捗を整合させる。
【００９２】
具体的に本実施形態３では、ＥＣＵ１ｂ及び更新装置３夫々にてステップ番号をＲＡＭ１３及び３３に記憶しておく。そして、上位タスク間で通信信号及び更新ファイル３６１、３６２・・が送受信される度に、下位タスク間でステップ番号を含む下位信号を送受信することにより、ＲＡＭ１３及び３３夫々に記憶されたステップ番号を整合させるようにする。
【００９３】
なお、ＥＣＵ１ｂ及び更新装置３で下位信号を送受信する下位タスクの動作を示すフローチャートについては、実施形態１の図３にてＥＣＵ１ａ及びＥＣＵ２夫々をＥＣＵ１ｂ及び更新装置３で置き換えたものと同様であるため、フローチャートの図示及びその説明を省略する。
【００９４】
図３に示すフローチャートに基づく処理により、ＥＣＵ１ｂ側及び更新装置３側夫々のＲＡＭ１３及び３３に記憶されるステップ番号が整合することを、図６を参照しつつ以下のケースに分けて説明する。
（ａ）ＥＣＵ１ｂから送信された通信信号（例えば、ソフト新Ｖｅｒ有無確認要求）が更新装置３で受信されず、且つ、この通信信号に応じてＥＣＵ１ｂから送信された下位信号（情報通知信号）が更新装置３で受信されたケース
（ｂ）ＥＣＵ１ｂから送信された通信信号（例えば、ソフト新Ｖｅｒ有無確認要求）が更新装置３で受信され、且つ、この通信信号に応じてＥＣＵ１ｂから送信された下位信号（情報通知信号）が更新装置３で受信されないケース
（ｃ）更新装置３から送信された通信信号（例えば、ソフト新Ｖｅｒ有無応答）がＥＣＵ１ｂで受信されないケース
（ｄ）更新装置３から送信された更新ファイル３６１，３６２・・（例えば、更新ファイル３６１）がＥＣＵ１ｂで受信されず、且つ、この更新ファイル３６１に応じてＥＣＵ１ｂから送信された下位信号（情報通知信号）が更新装置３で受信されたケース
（ｅ）更新装置３から送信された更新ファイル３６１，３６２・・（例えば、更新ファイル３６１）に応じてＥＣＵ１ｂから送信された下位信号（情報通知信号）が更新装置３で受信されないケース
（ｆ）何らかの原因により、ＥＣＵ１ｂ側の上位タスクが図６に示すシーケンスを中断したケース
【００９５】
（ａ）、（ｂ）及び（ｃ）夫々のケースについては、実施形態１の（ａ）、（ｂ）及び（ｃ）の場合と同様に不整合が発生しないことが明らかであるため、詳細な説明を省略する。
【００９６】
（ｄ）のケース：最初の更新ファイル３６１に応じてＥＣＵ１ｂから情報通知信号が送信された場合、ＲＡＭ１３及び３３夫々に記憶されるステップ番号はステップ６である。その後、更新装置３から送信された更新ファイル３６２がＥＣＵ１ｂで受信された場合、ＥＣＵ１ｂの上位タスクが更新ファイルの不連続を検出して更新装置３に再送を要求するように構成しておくことができる。その後、再送される更新ファイル３６１に応じてＥＣＵ１ｂから送信される情報通知信号に含まれるステップ番号は、やはりステップ６であるため、ステップ番号の不整合は発生しない。
【００９７】
（ｅ）のケース：１つ前の更新ファイル送信要求に応じてＥＣＵ１ｂから情報通知信号が送信された結果、ＲＡＭ１３及び３３夫々に記憶されたステップ番号はステップ５である。その後、更新ファイル３６１に応じてＥＣＵ１ｂから送信された情報通知信号が更新装置３で受信されない状態で、更新ファイル３６２に応じてＥＣＵ１ｂから情報通知信号が送信された場合、ＲＡＭ１３及び３３夫々に記憶されるステップ番号がステップ７及びステップ５となる。次いで、ＥＣＵ１ｂで受信される情報応答信号に含まれるステップ番号（ここではステップ５）に１を加算した番号のステップ６が上位タスクに通知されるため、上位タスクは、更新ファイル３６１を再送する。この再送に応じてＥＣＵ１ｂから送信される情報通知信号に含まれるステップ番号はステップ６であるため、ＲＡＭ１３及び３３夫々に記憶されるステップ番号が何れもステップ６となって不整合が解消する。なお、このケースでは、最初の更新ファイル３６１がＥＣＵ１ｂで受信されなかった場合であっても、上位タスク間の再送手順は必要とされない。
【００９８】
（ｆ）のケース：ＥＣＵ１ｂ側の上位タスクは、図３に示すＥＣＵ１ａ（上記の置き換え後はＥＣＵ１ｂ）側の処理をステップＳ１１から再開させてステップ番号が指示されるのを待ち受ける状態にしておき、この処理に対して再開時のステップ番号を指示する。これに応じて、図３に示すＥＣＵ１ａ（１ｂ）側の処理がステップＳ１１で指示されたステップ番号ＲＡＭ１３に記憶することにより、ＲＡＭ１３に記憶されたステップ番号を含む情報通知信号がＥＣＵ２（上記の置き換え後は更新装置３）に送信されて、図３に示す処理の全体が再開される。その後、ＲＡＭ１３及び３３に記憶されるステップ番号が整合するように処理が進むのは、上述したケース（ａ）から（ｅ）までの説明によって明らかである。
【００９９】
なお、本実施形態３にあっては、ＥＣＵ１ｂ及び更新装置３間の信号の送受信の進捗を表すステップ番号を、実施形態１におけるＥＣＵ１ａ及びＥＣＵ２間の信号の送受信の場合と同様の連番にしたが、これらのステップ番号が明示的に区別されるようにしてもよい。例えば、ソフト新Ｖｅｒ有無確認要求：ステップ１＿１、ソフト新Ｖｅｒ有無応答：ステップ１＿２、更新ファイルＤＬ準備要求：ステップ１＿３・・・・とし、現在のソフトＶｅｒ情報要求：ステップ２＿１、現在のソフトＶｅｒ応答：ステップ２＿２、リプロ準備完了通知：ステップ２＿３・・・としてもよい。
【０１００】
また例えば、ＥＣＵ１ｂ、更新装置３及びＥＣＵ２相互間の信号の送受信の進捗を連番のステップ番号で表すべく、ソフト新Ｖｅｒ有無確認要求：ステップ１、ソフト新Ｖｅｒ有無応答：ステップ２、現在のソフトＶｅｒ情報要求：ステップ３、現在のソフトＶｅｒ応答：ステップ４、更新ファイルＤＬ準備要求：ステップ５・・・・としてもよい。上述の２つの例のように全てのステップ番号が明示的に区別される場合、ＥＣＵ１ｂは、下位信号の送信先を区別する必要がなく、情報通知信号をブロードキャストしてもよい。
【０１０１】
以上のように本実施形態３によれば、ＥＣＵ１ｂ及び更新装置３が通信信号及び更新用制御プログラム３６０を互いに送受信する間に、ＥＣＵ１ｂが新たなコンピュータプログラムを更新装置３から取得する。ＥＣＵ１ｂは、取得した新たなコンピュータプログラムをＥＣＵ２に配信し、ＥＣＵ２は配信された新たなコンピュータプログラムを自装置のＲＯＭ２２に記憶させることにより、メモリ内のコンピュータプログラムを更新する。ＥＣＵ１ｂは、通信信号及び更新用制御プログラム３６０の送受信の進捗を表すステップ番号を、送受信の進捗に応じてＲＡＭ１３に記憶して更新すると共に更新したステップ番号を情報通知信号に含ませて更新装置３に送信する。更新装置３は、ＥＣＵ１ｂから受信した情報通知信号に含まれるステップ番号に基づいて、ＲＡＭ３３に記憶するステップ番号を更新すると共に更新したステップ番号を情報応答信号に含ませてＥＣＵ１ｂに送信する。そして、ＥＣＵ１ｂは、更新装置３から受信した情報応答信号に含まれるステップ番号に応じて、更新装置３との間で次に送受信すべき通信信号又は更新用制御プログラム３６０を特定する。これにより、信号の送受信の進捗と共に更新装置３にて更新されたステップ番号に応じて、ＥＣＵ１ｂと更新装置３との間で次に送受信すべき通信信号又は更新用制御プログラム３６０が特定されるため、ＥＣＵ１ｂ及び更新装置３間における信号の送受信の進捗ずれを防止することが可能となる。
【０１０２】
また、実施形態１によれば、ＥＣＵ１ｂと、更新装置３との間で行われる通信信号及び更新用制御プログラム３６０の送受信を中断した場合、ＥＣＵ１ｂは、再開時に送受信されるべき通信信号又は更新用制御プログラム３６０に応じて、ＲＡＭ１３に記憶するステップ番号を更新し、更新したステップ番号を更新装置３に送信する。以後、ステップ番号の交換が前述の通り行われる。従って、再開後に、ＥＣＵ１ｂのＲＡＭ１３に記憶されるステップ番号と、更新装置３のＲＡＭ３３に記憶されるステップ番号とが整合するように、ＥＣＵ１ｂと更新装置３との間で次に送受信すべき通信信号又は更新用制御プログラム３６０が特定されるため、ＥＣＵ１ｂ及び更新装置３間における信号の送受信の進捗ずれを防止することが可能となる。
【０１０３】
更に、実施形態１（又は３）によれば、複数に分割されている更新用制御プログラム１６０（又は更新用制御プログラム３６０）が、ＥＣＵ１ａ及びＥＣＵ２間（又はＥＣＵ１ｂ及び更新装置３間）で順次送受信される。これにより、分割された更新ファイル１６１、１６２・・（又は更新ファイル３６１、３６２・・）について、送受信の進捗ずれを防止することが可能となる。
【符号の説明】
【０１０４】
１ａ、１ｂ、２  ＥＣＵ
１１、２１、３１  ＣＰＵ
１２、２２、３２  ＲＯＭ
１２０、２２０、３２０  制御プログラム
１３、２３、３３  ＲＡＭ
１４、２４、３４  通信部
１５、３５  タイマ
１６、３６  内部記憶装置
１６０、３６０  更新用制御プログラム
３  更新装置
４  通信線
【図１】
2018105609.tif 000003
【図２】
2018105609.tif 000004
【図３】
2018105609.tif 000005
【図４】
2018105609.tif 000006
【図５】
2018105609.tif 000007
【図６】
2018105609.tif 000008
【手続補正書】
【提出日】平成30年9月20日(2018.9.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明の一態様に係るプログラム更新方法は、メモリに記憶してあるコンピュータプログラムに基づく処理を実行するプロセッサを備える複数の装置が通信可能に接続されている通信システムにて、コンピュータプログラムを配信する配信装置及び通信装置が通信信号及び新たなコンピュータプログラムを互いに送受信することにより、前記通信装置に配信された新たなコンピュータプログラムを自装置のメモリに記憶させてコンピュータプログラムを更新するプログラム更新方法であって、前記配信装置及び通信装置夫々は、前記通信信号及び新たなコンピュータプログラムの送受信の進捗を表す進捗情報を記憶するための記憶部を備え、前記配信装置は、前記送受信の進捗に応じて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記通信装置に送信し、前記通信装置の記憶部に記憶された進捗情報を前記通信装置から受信し、受信した進捗情報に応じて、前記通信装置との間で次に送受信すべき通信信号又は新たなコンピュータプログラムを特定し、前記通信装置は、前記配信装置から送信された進捗情報を受信し、受信した進捗情報に基づいて、自装置の記憶部に記憶する進捗情報を更新し、更新した進捗情報を前記配信装置に送信する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０２
【補正方法】変更
【補正の内容】
【０１０２】
また、実施形態３によれば、ＥＣＵ１ｂと、更新装置３との間で行われる通信信号及び更新用制御プログラム３６０の送受信を中断した場合、ＥＣＵ１ｂは、再開時に送受信されるべき通信信号又は更新用制御プログラム３６０に応じて、ＲＡＭ１３に記憶するステップ番号を更新し、更新したステップ番号を更新装置３に送信する。以後、ステップ番号の交換が前述の通り行われる。従って、再開後に、ＥＣＵ１ｂのＲＡＭ１３に記憶されるステップ番号と、更新装置３のＲＡＭ３３に記憶されるステップ番号とが整合するように、ＥＣＵ１ｂと更新装置３との間で次に送受信すべき通信信号又は更新用制御プログラム３６０が特定されるため、ＥＣＵ１ｂ及び更新装置３間における信号の送受信の進捗ずれを防止することが可能となる。
【国際調査報告】
2018105609.tif 000009
2018105609.tif 000010
2018105609.tif 000011