WO2021153224A1 - 情報処理装置および情報処理方法 - Google Patents

情報処理装置および情報処理方法 Download PDF

Info

Publication number
WO2021153224A1
WO2021153224A1 PCT/JP2021/000757 JP2021000757W WO2021153224A1 WO 2021153224 A1 WO2021153224 A1 WO 2021153224A1 JP 2021000757 W JP2021000757 W JP 2021000757W WO 2021153224 A1 WO2021153224 A1 WO 2021153224A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
partial
update
data
area
Prior art date
Application number
PCT/JP2021/000757
Other languages
English (en)
French (fr)
Inventor
宏和 玉野
孝彦 上辻
大輝 松田
Original Assignee
パナソニックIpマネジメント株式会社
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 パナソニックIpマネジメント株式会社 filed Critical パナソニックIpマネジメント株式会社
Priority to DE112021000801.3T priority Critical patent/DE112021000801T5/de
Publication of WO2021153224A1 publication Critical patent/WO2021153224A1/ja
Priority to US17/563,833 priority patent/US11886869B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Abstract

情報処理装置(210)は、第1プログラムが格納されている記憶部(240)と、外部装置から取得したデータを用いて第1プログラムを新たな第2プログラムに更新する更新制御部(221)と、を備え、更新制御部(221)は、第1プログラムが格納されている第1記憶領域(241)が分割された複数の第1部分領域(251~255)のそれぞれについて、当該第1部分領域に格納されている第1プログラムの一部である第1部分プログラムを第2記憶領域(242)にコピーした後で、データを用いて第1部分プログラムを第2プログラムの一部である第2部分プログラムに順次更新し、データは、第1プログラムと第2プログラムとの間の差分を示す差分情報であり、第2記憶領域(242)の記憶容量は、第1記憶領域(241)の記憶容量よりも小さい。

Description

情報処理装置および情報処理方法
 本開示は、情報処理装置および情報処理方法に関する。
 特許文献1には、旧情報から新情報に書き換える際に、メモリに蓄積されている旧情報を当該メモリとは別のメモリに退避させる電子制御装置が開示されている。
特開2019-74847号公報
 本開示は、プログラムの更新時に使用するストレージの記憶容量を低減することができる情報処理装置などを提供する。
 本開示における情報処理装置は、第1プログラムが格納されている記憶部と、外部装置から前記第1プログラムの更新用のデータを取得し、取得した前記データを用いて前記第1プログラムを新たな第2プログラムに更新する更新制御部と、を備え、前記更新制御部は、前記第1プログラムが格納されている前記記憶部の記憶領域である第1記憶領域が分割された複数の第1部分領域のそれぞれについて、当該第1部分領域に格納されている前記第1プログラムの一部である第1部分プログラムを前記第1記憶領域とは異なる第2記憶領域にコピーした後で、前記データのうちで前記第1部分プログラムに対応する部分データを用いて前記第1部分プログラムを前記第2プログラムの一部である第2部分プログラムに順次更新し、前記データは、前記第1プログラムと前記第2プログラムとの間の差分を示す差分情報であり、前記第2記憶領域の記憶容量は、前記第1記憶領域の記憶容量よりも小さい。
 なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
 本開示における情報処理装置などは、プログラムの更新時に使用するストレージの記憶容量を低減することができる。
図1は、実施の形態に係る自動車への更新用のプログラムを配信するシステムの概略図である。 図2は、実施の形態に係るサーバのハードウェア構成の一例を示すブロック図である。 図3は、実施の形態に係る自動車が備える情報処理装置のハードウェア構成の一例を示すブロック図である。 図4は、実施の形態に係る情報処理装置の機能構成の一例を示すブロック図である。 図5は、実施の形態に係る更新処理の制御、および、提供処理について説明するための図である。 図6は、実施の形態に係る更新処理の詳細の一例について説明するための図である。 図7は、実施の形態に係る更新処理が失敗した場合の処理の第1の例について説明するための図である。 図8は、実施の形態に係る更新処理が失敗した場合の処理の第2の例について説明するための図である。 図9は、実施の形態に係る情報処理装置による更新処理の一例を示すフローチャートである。 図10は、実施の形態に係る情報処理装置による提供処理の一例を示すフローチャートである。 図11は、実施の形態に係る情報処理装置によるロールバック処理の第1の例を示すフローチャートである。 図12は、実施の形態に係る情報処理装置によるロールバック処理の第2の例を示すフローチャートである。 図13は、実施の形態に係る情報処理装置によるロールバック処理の第3の例を示すフローチャートである。 図14は、変形例1に係る情報処理装置の機能構成の一例を示すブロック図である。 図15は、変形例1に係る情報処理装置の機能を実現する仮想マシンの構成を示す図である。
 (本発明の基礎となった知見)
 本発明者は、「背景技術」の欄において記載した、電子制御装置に関し、以下の問題が生じることを見出した。
 特許文献1の電子制御装置では、旧情報から新情報に書き換える際に、メモリに蓄積されている旧情報を当該メモリとは別のメモリに退避させるため、旧情報を記憶できるだけの記憶容量を有する別のメモリが必要となる。あるいは、同じメモリに旧情報を退避するとしても、旧情報のコピーを記憶できるだけの記憶容量を余分に有するメモリが必要となる。このため、別のメモリまたは大容量のメモリが必要となる。
 このような課題を解決するために、発明者らは、プログラムの更新時に使用するストレージの記憶容量を低減することができる情報処理装置および情報処理方法を見出すに至った。
 本開示の一態様に係る情報処理装置は、第1プログラムが格納されている記憶部と、外部装置から前記第1プログラムの更新用のデータを取得し、取得した前記データを用いて前記第1プログラムを新たな第2プログラムに更新する更新制御部と、を備え、前記更新制御部は、前記第1プログラムが格納されている前記記憶部の記憶領域である第1記憶領域が分割された複数の第1部分領域のそれぞれについて、当該第1部分領域に格納されている前記第1プログラムの一部である第1部分プログラムを前記第1記憶領域とは異なる第2記憶領域にコピーした後で、前記データのうちで前記第1部分プログラムに対応する部分データを用いて前記第1部分プログラムを前記第2プログラムの一部である第2部分プログラムに順次更新し、前記データは、前記第1プログラムと前記第2プログラムとの間の差分を示す差分情報であり、前記第2記憶領域の記憶容量は、前記第1記憶領域の記憶容量よりも小さい。
 これによれば、更新処理の対象となる第1部分領域に格納されている第1部分プログラムを第2記憶領域にコピーすることで、第1部分プログラムを退避させた上で、当該第1部分領域に格納されている第1部分プログラムを第2部分プログラムに更新する。このため、更新処理中の第1部分領域にアクセスされた場合であっても、更新処理中の第1部分プログラムの代わりに退避させた第1部分プログラムを用いることができ、アクセス元の機器にプログラムを提供することができる。また、更新に用いられるデータは差分情報であり、かつ、退避させるプログラムは第1プログラムの一部の第1部分プログラムであるため、プログラムの更新時に使用するストレージの記憶容量を低減することができる。
 また、さらに、第1制御器と、前記更新制御部と、前記記憶部を仮想ストレージとして前記第1制御器に提供する提供部とを有する第2制御器と、を備え、前記第1プログラムは、前記第1制御器が起動時に実行するプログラムであってもよい。
 これによれば、第1制御器が実行する第1プログラムは、第2制御器が提供する仮想ストレージに格納されているため、第1制御器のプログラムの更新を、第1制御器を用いずに行うことができる。よって、更新対象の第1制御器のプログラムを第1制御器に影響を与えないように更新することができる。
 また、前記提供部は、前記更新制御部が前記第1プログラムを更新している間において、前記第1制御器から前記仮想ストレージへのアクセスを受け付けた場合、(i)前記アクセスのアクセス先が更新処理後の第1部分領域であれば、当該第1部分領域に格納されている前記第2部分プログラムを前記第1制御器に提供し、(ii)前記アクセス先が更新処理中の第1部分領域であれば、前記第2記憶領域に格納されている第1部分プログラムと、前記データのうちで当該第1部分プログラムに対応する部分データとを用いて、当該第1部分プログラムを更新した第2部分プログラムを生成し、生成した前記第2部分プログラムを前記第1制御器に提供し、(iii)前記アクセス先が更新処理前の第1部分領域であれば、当該第1部分領域に格納されている第1部分プログラムと、前記データのうちで当該第1部分プログラムに対応する部分データとを用いて、当該第1部分プログラムを更新した第2部分プログラムを生成し、生成した前記第2部分プログラムを前記第1制御器に提供してもよい。
 これによれば、アクセス先の第1部分領域の更新状態に応じた処理を行うため、第1プログラムから第2プログラムへの更新処理中であっても第1制御器へ第2プログラムを提供することができる。
 また、前記差分情報は、前記第1プログラムを構成する複数の第1データ単位、および、第2プログラムを構成する複数の第2データ単位の間の差分を示す複数の差分データと、前記複数の差分データ毎に、当該差分データに対応する前記第1データ単位及び前記第2データ単位を特定するための対応関係情報とを含んでもよい。
 このため、差分データを適用する第1データ単位を容易に特定することができる。よって、第2部分プログラムの生成処理に係る処理負荷、および、当該生成処理に係る処理時間を低減することができる。
 また、前記更新制御部は、前記第1プログラムを更新している間に当該更新が失敗した場合、全ての前記複数の第1部分領域について、当該第1部分領域に格納されている前記第1部分プログラムを前記第2部分プログラムに更新し、前記第1プログラムを前記第2プログラムに更新した後で、前記第2プログラムが格納されている前記第1記憶領域が分割された前記複数の第1部分領域のそれぞれについて、当該第1部分領域に格納されている前記第2プログラムの一部である前記第2部分プログラムを前記第2記憶領域にコピーし、当該コピーの後で、前記データのうちで前記第2部分プログラムに対応する部分データを用いて前記第2部分プログラムを前記第1プログラムの一部である第1部分プログラムに更新してもよい。
 これにより、更新処理中において第1プログラムから第2プログラムへの更新が失敗した場合であっても、第1記憶領域に第1プログラムが格納されている状態に戻すことができる。
 また、前記更新制御部は、前記第1プログラムを更新している間に当該更新が失敗した場合、更新済みの1以上の前記第1部分領域と、更新が失敗した第1部分領域とのそれぞれについて、当該第1部分領域に格納されている第2プログラムの一部である第2部分プログラムを前記第2記憶領域にコピーした後で、前記データのうちで前記第2部分プログラムに対応する部分データを用いて前記第2部分プログラムを前記第1部分プログラムに更新してもよい。
 これにより、更新処理中において第1プログラムから第2プログラムへの更新が失敗した場合であっても、第1記憶領域に第1プログラムが格納されている状態に戻すことができる。
 また、前記更新制御部は、前記第1プログラムを更新している間に当該更新が失敗した場合、更新が失敗した第1部分領域が前記複数の第1部分領域のうちの特定の第1部分領域より処理順で前か後かを判定し、前記判定の結果、更新が失敗した前記第1部分領域が処理順で前記特定の第1部分領域より前である場合、更新済みの前記複数の第1部分領域と、更新が失敗した第1部分領域とのそれぞれについて、当該第1部分領域に格納されている第2プログラムの一部である第2部分プログラムを前記第2記憶領域にコピーした後で、前記データのうちで前記第2部分プログラムに対応する部分データを用いて前記第2部分プログラムを前記第1部分プログラムに更新し、前記判定の結果、更新が失敗した前記第1部分領域が処理順で前記特定の第1部分領域より後である場合、全ての前記複数の第1部分領域について、当該第1部分領域に格納されている前記第1部分プログラムを前記第2部分プログラムに更新し、前記第1プログラムを前記第2プログラムに更新した後で、前記第2プログラムが格納されている第3記憶領域が分割された複数の第2部分領域のそれぞれについて、当該第2部分領域に格納されている第2プログラムの一部である第3部分プログラムを前記第2記憶領域にコピーし、当該コピーの後で、前記データのうちで前記第3部分プログラムに対応する部分データを用いて前記第3部分プログラムを前記第1プログラムの一部である第4部分プログラムに更新してもよい。
 これにより、更新処理中において第1プログラムから第2プログラムへの更新が失敗した場合であっても、失敗した第1部分領域の位置に応じて、処理を変更するため、処理に要する時間を低減することができる。
 なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
 以下、適宜図面を参照しながら、実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。
 なお、発明者(ら)は、当業者が本開示を十分に理解するために添付図面および以下の説明を提供するのであって、これらによって請求の範囲に記載の主題を限定することを意図するものではない。
 (実施の形態)
 以下、図1~図13を用いて、実施の形態を説明する。
 [構成]
 図1は、実施の形態に係る自動車への更新用のプログラムを配信するシステムの概略図である。
 具体的には、図1において、サーバ100、自動車200、通信ネットワーク300および移動体通信網の基地局310が示されている。
 サーバ100は、自動車200が備えるECU(Electronic Control Unit)などの電子機器のプログラム(ファームウェア)を記憶しており、自動車200に当該プログラムを、通信ネットワーク300を介して提供する装置である。
 自動車200は、基地局310を介して移動体通信網に通信接続することが可能な移動体である。
 このように、図1では、OTA(Over The Air)で、自動車200のECUの更新用のプログラムが自動車200に配信されることで、ECUのプログラムが更新される例が示されている。なお、ECUのプログラムの更新方法は、OTAを用いて更新することに限らない。例えば、更新用の装置を自動車200に有線接続して、更新用の装置を用いて記録媒体に記録された更新用プログラムを、自動車200のECUに適用する手法が用いられてもよい。つまり、自動車200が備える各ECUは、更新用のプログラムをOTAなどにより無線通信で取得してもよいし、更新用の装置などを介して有線通信で取得してもよい。
 図2は、実施の形態に係るサーバのハードウェア構成の一例を示すブロック図である。
 図2に示すように、サーバ100は、ハードウェア構成として、CPU11(Central Processing Unit)と、メインメモリ12と、ストレージ13と、通信IF(Interface)14とを備える。
 CPU11は、ストレージ13等に記憶された制御プログラムを実行するプロセッサである。
 メインメモリ12は、CPU11が制御プログラムを実行するときに使用するワークエリアとして用いられる揮発性の記憶領域である。
 ストレージ13は、制御プログラム、コンテンツなどを保持する不揮発性の記憶領域である。
 通信IF14は、通信ネットワーク300を介して複数の自動車200と通信する通信インタフェースである。通信IF14は、例えば、有線LANインタフェースである。なお、通信IF14は、無線LANインタフェースであってもよい。また、通信IF14は、LANインタフェースに限らずに、通信ネットワークとの通信接続を確立できる通信インタフェースであれば、どのような通信インタフェースであってもよい。
 図3は、実施の形態に係る自動車が備える情報処理装置210のハードウェア構成の一例を示すブロック図である。
 図3に示すように、情報処理装置210は、ハードウェア構成として、TCU(Telematics Control Unit)21と、n個のECU22とを備える。なお、情報処理装置210は、図3に示されるハードウェア構成を全て含んでいなくてもよい。例えば、情報処理装置210は、TCU21を有していなくてもよい。
 TCU21は、自動車200が通信ネットワーク300との間で無線通信を行う通信ユニットである。TCU21は、移動体通信網の規格に対応したセルラモジュールを含む通信ユニットである。
 n個のECU22は、自動車200が備えるエンジン、モータ、メータ、トランスミッション、ブレーキ、ステアリング、パワーウィンドウ、エアコンなどの各種機器の制御を実行する制御回路である。例えば、n個のECU22は、これらの各種機器のそれぞれに対応して設けられている。n個のECU22のそれぞれは、ここでは図示しないが、各ECU22が実行するプログラムを格納している記憶部(不揮発性の記憶領域)を備えていてもよい。記憶部は、例えば、不揮発性のメモリである。
 ストレージ23は、制御プログラムなどを保持する不揮発性の記憶領域である。ストレージ23は、例えば、HDD(Hard Disk Drive)、SSD(Solid Stated Drive)などにより実現される。
 次に、自動車200の情報処理装置210の機能構成について図4を用いて説明する。
 図4は、実施の形態に係る情報処理装置210の機能構成の一例を示すブロック図である。
 情報処理装置210は、管理ECU220と、ECU230と、記憶部240とを備える。
 管理ECU220は、ECU230が実行するプログラムの更新を管理するECUである。管理ECU220は、ECU230に仮想ストレージとして機能する記憶部240を提供する。管理ECU220は、例えば、n個のECU22のうちの少なくとも1つのECUにより実現される。管理ECU220は、TCU21を含んでいてもよい。管理ECU220は、第2制御器の一例である。
 記憶部240は、管理ECU220を介して仮想ストレージとしてECU230に提供される。記憶部240は、第1記憶領域241、第2記憶領域242および第3記憶領域243を有する。第1記憶領域241には、ECU230が起動時に実行する第1プログラムが格納されている。第1プログラムは、ECU230が現在使用中のプログラムである。なお、ECU230が現在使用中のプログラムとは、ECU230が起動する際に、使用することが定められているプログラムであり、必ずしもECU230が実行中のプログラムを指すものではない。
 第2記憶領域242は、第1記憶領域241とは異なる記憶領域であって、第1記憶領域241の記憶容量よりも小さい記憶容量を有する記憶領域である。第2記憶領域242は、第1プログラムの更新の際に用いられ、第1プログラムの一部である第1部分プログラムが一時的に格納される記憶領域である。
 第3記憶領域243は、第1プログラムの更新に用いられる更新用データが一時的に格納される記憶領域である。第3記憶領域243は、第1記憶領域241および第2記憶領域242とは異なる記憶領域であって、第1記憶領域241の記憶容量よりも小さい記憶容量を有する記憶領域である。また、第2記憶領域242の記憶容量および第3記憶領域243の記憶容量を加算した記憶容量は、第1記憶領域241の記憶容量よりも小さい。
 記憶部240は、ストレージ23により実現される。
 ECU230は、記憶部240の第1プログラムが格納されている第1記憶領域にアクセスし、第1プログラムを実行する。ECU230は、起動時に第1プログラムを実行することで自身の機能を実現する。ECU230は、例えば、n個のECU22のうちの管理ECU220を実現するECU22とは異なる少なくとも1つのECUにより実現される。ECU230は、第1制御器の一例である。
 以下、管理ECU220およびECU230の具体的な機能について説明する。
 管理ECU220は、具体的には、更新制御部221と、提供部222とを有する。
 更新制御部221は、ECU230が実行する第1プログラムを、新たな第2プログラムに更新する更新処理を制御する。更新制御部221は、具体的には、外部装置から第1プログラムの更新用のデータである更新用データを取得し、取得した更新用データを用いて第1プログラムを新たな第2プログラムに更新する。更新制御部221は、取得した更新用データを第3記憶領域243に格納する。更新制御部221による更新処理の制御の詳細は、後述する。なお、外部装置は、例えば、サーバ100、または、更新用の装置である。
 提供部222は、記憶部240を実現しているストレージ23を用いて、ECU230に対して仮想ストレージ260を提供する処理部である。提供部222は、仮想クライアント機能を有するECU230からアクセスされ、ストレージ23の実記憶領域に格納されている第1プログラムが格納されている仮想ストレージをECU230に提供する。また、提供部222は、更新制御部221により第1プログラムから第2プログラムへの更新処理が実行中である場合には、ストレージ23の実記憶領域に格納されている第1プログラムの一部、および、更新用データを用いて第2プログラムが格納されている仮想ストレージをECU230に提供する。提供部222による提供処理の詳細は、後述する。
 ECU230は、具体的には、制御部231と、クライアント部232とを有する。
 制御部231は、管理ECU220によって提供された仮想ストレージに格納されている第1プログラムまたは第2プログラムを実行して、ECU230の機能を実現する処理部である。制御部231は、具体的には、クライアント部232を制御して、管理ECU220により提供された仮想ストレージにアクセスし、仮想ストレージに格納されている第1プログラムまたは第2プログラムを実行する。
 クライアント部232は、管理ECU220の提供部222との間で情報をやり取りすることで、提供部222から仮想ストレージとして機能する記憶部240に格納されている第1プログラムまたは第2プログラムの提供を受ける処理部である。
 次に、更新処理の制御、および、提供処理の詳細について図5を用いて説明する。図5は、更新処理の制御、および、提供処理について説明するための図である。なお、図5は、更新処理の途中の時点を示す図である。
 まず、更新制御部221による更新処理の制御について説明する。
 更新制御部221は、第1プログラムが格納されている第1記憶領域241が複数に分割された複数の第1部分領域251~255のそれぞれについて、取得した更新用データを用いて、当該第1部分領域に格納されている第1部分プログラムを新たな第2プログラムの一部である第2部分プログラムに更新する。具体的には、更新制御部221は、複数の第1部分領域251~255のうちの処理対象の第1部分領域を1つずつ予め定められた順番に選択する。そして、更新制御部221は、選択した処理対象の第1部分領域に格納されている第1部分プログラムを第2記憶領域242にコピーする。その後、更新制御部221は、処理対象の第1部分領域に格納されている第1部分プログラムに更新用データを適用して第2部分プログラムを生成し、処理対象の第1部分領域の第1部分プログラムを、生成した第2部分プログラムで書き換えることで第1部分プログラムを第2部分プログラムに更新する。なお、予め定められた順番は、例えば、ストレージ23におけるアクセス順であってもよい。
 なお、複数の第1部分領域251~255は、ストレージ23の実記憶領域において連続して配置されている記憶領域であってもよいし、各第1部分領域が隣り合う第1部分領域との間で所定の記憶領域の間隔を空けて配置されている記憶領域であってもよい。所定の記憶領域の間隔を空けて配置されている場合、隣り合う第1部分領域との間の所定の記憶領域には、空き領域または空き領域を示すデータが格納されていてもよい。所定の記憶領域は、更新後の第2部分プログラムが第1部分領域251の記憶容量を超えるデータ量である場合に、第1部分領域251に格納しきれなかった第2部分プログラムが格納されてもよい。この場合に利用される所定の記憶領域は、第1部分領域251に隣接して配置される記憶領域であってもよい。なお、上記は、ストレージ23がシーケンシャルにアクセスされる記録媒体が用いられるHDDなどで実現される場合に適用されうる。ストレージ23がランダムアクセスされるSDDなどの不揮発性メモリで実現される場合には、この限りではない。
 また、複数の第1部分領域は、5つの領域を含む例を示したが、5つの領域を含むことに限らずに、5以外の複数の領域を含んでもよい。
 第1部分プログラムは、第1プログラムのうちの複数の第1部分領域251~255のそれぞれに格納されている部分的なプログラムである。第1部分プログラムは、第1プログラムを構成するコードのうち対応する第1部分領域に格納されているコードである。第1プログラムは、第1記憶領域241を構成する複数の第1部分領域251~255に亘って(またがって)格納されている。第1プログラムは、第1のプログラムを構成する全ての複数の第1部分プログラムがないと機能しない。
 第2部分プログラムは、第2プログラムの一部であり、複数の第1部分プログラムのそれぞれに更新用データが適用されることで生成される部分的なプログラムである。第2部分プログラムは、第2プログラムを構成するコードのうち、当該第2部分プログラムに対応する第1部分プログラムが更新用データを用いて更新されることで生成されるコードである。更新制御部221による更新が完了すると、複数の第1部分領域251~255に格納されている全ての複数の第1部分プログラムは、複数の第2部分プログラムに書き換えられる。このため、複数の第1部分領域251~255には、複数の第2部分プログラムが格納される。第2プログラムは、第2のプログラムを構成する全ての複数の第2部分プログラムがないと機能しない。
 次に、更新処理の詳細について図6を用いて説明する。図6は、実施の形態に係る更新処理の詳細の一例について説明するための図である。図6の(a)は、第1部分プログラムを構成する複数の第1データ単位D1~D4と各第1データ単位の第1部分プログラムを構成するデータ上におけるアドレス(位置)との関係を示す図である。図6の(b)は、第2部分プログラムを構成する複数の第2データ単位D1、D2、D5、D6と各第2データ単位の第2部分プログラムを構成するデータ上におけるアドレス(位置)との関係を示す図である。
 ここで、プログラム上におけるアドレスとは、例えば、所定の基準アドレス(例えば当該プログラムの先頭のアドレス、絶対値)からの相対値(オフセット値)で示されてもよい。例えば、第1データ単位D2の第1部分プログラム上におけるアドレスx1は、基準アドレスx0と、第1データ単位D2より前に格納されている第1データ単位D1のデータ長L1とにより算出されてもよい。つまり、アドレスx1は、基準アドレスx0にデータ長L1を加算することにより算出されてもよい。
 図6の(c)は、更新用データの構成を示す図である。更新用データは、複数の差分データと、対応関係情報とを含む。更新用データは、さらに、複数の差分データ、および、その対応関係情報を特定するための番号(シーケンス番号)を含んでいてもよい。複数の差分データは、第1部分プログラムを構成する複数の第1データ単位D1~D4、および、第2部分プログラムを構成する複数の第2データ単位D1、D2、D5、D6との間の差分を示すデータである。対応関係情報は、複数の差分データのそれぞれに対応する第1データ単位の第1部分プログラム上におけるアドレス、および、複数の差分データのそれぞれに対応する第2データ単位の第2部分プログラム上におけるアドレスを含む。つまり、対応関係情報は、各差分データに対応する第1データ単位および第2データ単位を特定するための情報である。
 図6の(c)では、対応関係情報において、対応関係にある第1部分プログラムの第1データ単位と第2部分プログラムの第2データ単位とが示されている。
 番号01の対応関係情報では、第1部分プログラムのデータ上のアドレスx0に配置される第1データ単位D1と、第2部分プログラムのデータ上のアドレスx0に配置される第2データ単位D1とが対応関係にあることが示されている。そして、番号01の差分データは、0であるため、第1データ単位D1と第2データ単位D1とは同じデータ単位であることが示されている。つまり、更新制御部221は、第1部分プログラムのデータ上のアドレスx0に配置される第1データ単位D1に差分データとして0を加算することで、第2データ単位D1を生成することができる。
 番号02の対応関係情報では、第1部分プログラムに対応するアドレスがなく、かつ、第2部分プログラムに対応するアドレスがx1であることが示されている。これにより、第2部分プログラムでは、アドレスx1において差分データで示される第2データ単位D5が、前の番号01の第2データ単位D1の後に挿入されていることが示されている。つまり、更新制御部221は、前回生成した第2データ単位D1のアドレスx0に、前回生成した第2データ単位D1のデータ長L1を加算することでアドレスx1を特定し、特定したアドレスx1に、番号02における差分データで示されるデータ単位D5を挿入する。これにより、更新制御部221は、第2部分プログラムのデータ上のアドレスx1に第2データ単位D5を生成することができる。
 また、番号04の対応関係情報では、第1部分プログラムのデータ上のアドレスx3に配置される第1データ単位D4と、第2部分プログラムのデータ上のアドレスx6に配置される第2データ単位D6とが対応関係にあることが示されている。そして、番号04の差分データは、0ではないD6-D4であるため、第1データ単位D4と第2データ単位D6とは異なるデータ単位であることが示されている。つまり、更新制御部221は、前回生成した第2データ単位D2のアドレスx5に、前回生成した第2データ単位D2のデータ長L2を加算することでアドレスx6を特定する。更新制御部221は、番号04における差分データであるD6-D4を第1データ単位D4に加算することで、第2データ単位D6を生成し、生成した第2データ単位D6を特定したアドレスx6に配置する。
 また、番号04の対応関係情報では、第1部分プログラムのデータ上のアドレスx3が示されており、第1部分プログラムの第1データ単位D1~D4のアドレスx0~x3の並び順で、アドレスx3の1つ前のアドレスx2がスキップされている。これは、アドレスx3の第1データ単位D3を削除することを示している。よって、更新制御部221は、第1部分プログラムの第1データ単位D3を削除する。なお、更新制御部221は、削除した第1データ単位D3を第3記憶領域243に格納してもよい。
 なお、番号03を用いた処理の説明は省略する。
 このようにして、更新制御部221は、第1部分プログラムに更新用データを適用することで、第2部分プログラムを生成し、第1部分領域に格納されている第1部分プログラムを、生成した第2部分プログラムで置き換えることで、第1部分プログラムを第2部分プログラムに更新する。
 差分データは、第1部分プログラムおよび第2部分プログラムが互いに類似している可能性が高いため、差分データのデータ量は、小さくなる。このため、更新用データのデータ量を第2部分プログラムよりも小さくすることができる。
 なお、第1部分プログラムと第2部分プログラムとの間の差分は、バイナリ差分アルゴリズムを利用して求めることができる。この場合、対応関係情報は、図6の(c)に示される情報に限らずに、差分データの処理内容(加算、挿入、削除)と当該処理内容における処理対象のデータ長とを示すデータにより算出されてもよい。これにより、図6の(c)に示される第1データ単位のアドレスと第2データ単位のアドレスとを特定することができる。
 なお、図6では、第1部分プログラムおよび第2部分プログラムを用いて説明したが、第1部分プログラムを第1プログラムに読み替え、第2部分プログラムを第2プログラムに読み替えることで、第1プログラムおよび第2プログラムについても同様に説明することができる。
 次に、図5を用いて、提供部222による提供処理について説明する。
 提供部222は、更新制御部221が第1プログラムを更新している間において、ECU230から仮想ストレージ260へのアクセスを受け付けた場合、アクセス先の第1部分領域251~255の更新状態に応じて、下記に示す3つの処理のいずれかの処理を行うことで、ECU230へ新たな第2プログラムを提供する。つまり、更新制御部221は、3つの更新状態(更新処理後、更新処理中、更新処理前)に応じて、異なる処理を行う。
 (1)提供部222は、アクセス先が更新処理後(更新完了後)の第1部分領域251であれば、当該第1部分領域251に格納されている第2部分プログラムをECU230に提供する。提供部222は、この場合、アクセスされた第1部分領域251に格納されているプログラムを既に第2部分プログラムに更新したため、第1部分領域251に格納されている更新後の第2部分プログラムをECU230に提供する。
 (2)提供部222は、アクセス先が更新処理中の第1部分領域252であれば、第2記憶領域242に格納されている第1部分プログラムと、更新用データのうちで当該第1部分プログラムに対応する部分データとを用いて、当該第1部分プログラムを更新した第2部分プログラムを生成し、生成した第2部分プログラムをECU230に提供する。提供部222は、この場合、アクセスされた第1部分領域251に格納されているプログラムが更新処理中であるため、更新処理中に第2記憶領域242に退避されている第1部分プログラムに、第3記憶領域243に格納されている更新用データのうちの当該第1部分プログラムに対応する部分データを適用して第2部分プログラムを生成する。つまり、この場合、提供部222は、アクセスされる度に第2部分プログラムを生成し、生成した第2部分プログラムをECU230に提供する。
 (3)提供部222は、アクセス先が更新処理前の第1部分領域253~255のいずれかであれば、当該第1部分領域に格納されている第1部分プログラムと、更新用データのうちで当該第1部分プログラムに対応する部分データとを用いて、当該第1部分プログラムを更新した第2部分プログラムを生成し、生成した第2部分プログラムをECU230に提供する。提供部222は、この場合、アクセスされた第1部分領域251に格納されているプログラムが更新処理前であるため、当該第1部分領域に格納されている第1部分プログラムに、第3記憶領域243に格納されている更新用データのうちの当該第1部分プログラムに対応する部分データを適用して第2部分プログラムを生成する。つまり、この場合、提供部222は、アクセスされる度に第2部分プログラムを生成し、生成した第2部分プログラムをECU230に提供する。
 このように、提供部222は、アクセス先の第1部分領域の更新状態に応じた処理を行う。このため、提供部222は、第1プログラムを第2プログラムに更新している処理を行っている間であっても、更新された第2プログラムをECU230に提供することができる。
 なお、提供部222は、上記の(2)および(3)の処理において、アクセスされる度に第2部分プログラムを生成するとしたが、これに限らない。例えば、提供部222は、初めてアクセスされたときに第2部分プログラムを生成して、生成した第2部分プログラムを記憶部240に一時的に保持しておき、2回目以降のアクセスがあった場合に、一時的に保持した第2部分プログラムをECU230に提供してもよい。この場合、提供部222は、第2部分プログラムの生成を一度行うことで済むため、処理負荷を低減することができる。
 なお、提供部222は、第2部分プログラムを記憶部240に一時的に保持するか否かについて、例えばECU230によるアクセス頻度に応じて判断してもよい。この場合、提供部222は、ECU230による各第1部分プログラムへのアクセス回数を記憶部240に一時的に保持しておき、アクセス回数が予め設定されたアクセス回数に達した場合には、生成した第2部分プログラムを記憶部240に一時的に保持し、ECU230によるアクセス回数が予め設定されたアクセス回数に達していない場合には、生成した第2部分プログラムを記憶部240に一時的に保持しなくてもよい。
 次に、更新制御部221による第1プログラムを第2プログラムに更新する更新処理中に更新処理が失敗した場合に行う、更新前の状態に戻す処理(ロールバック処理)の第1の例について図7を用いて説明する。図7は、更新処理が失敗した場合の処理の第1の例について説明するための図である。なお、更新制御部221は、複数の第1部分領域251~255のそれぞれの更新状態を記憶部240に記憶していてもよい。更新状態は、更新処理後(更新完了)、更新中、および、更新処理前(未処理)の3つの状態を含む。
 図7の(a)に示すように、更新制御部221は、第1部分領域254における第1部分プログラムの更新に失敗した場合、図7の(b)に示すように、全ての複数の第1部分領域251~255について、当該第1部分領域に格納されている第1部分プログラムを第2部分プログラムに更新する。つまり、更新制御部221は、更新に失敗した場合であっても、継続して未処理の第1部分領域に格納されている第1部分プログラムを第2部分プログラムに更新する。更新方法は、図5および図6を用いて説明した通りである。
 そして、更新制御部221は、第1プログラムを第2プログラムに更新した後で、第2プログラムが格納されている第1記憶領域241が分割された複数の第1部分領域251~255のそれぞれについて、第3記憶領域243に格納されている更新用データを用いて、当該第1部分領域に格納されている第2部分プログラムを元の第1プログラムの一部である第1部分プログラムに更新する。更新制御部221は、この処理を、第1プログラムを第2プログラムに更新する処理と同様に行う。つまり、更新制御部221による更新処理の制御において、第1プログラムを第2プログラムに、第2プログラムを第1プログラムに、第1部分プログラムを第2部分プログラムに、第2部分プログラムを第1部分プログラムにそれぞれ読み替えることで説明することができる。このときの、提供部222による提供処理についても同様である。
 なお、更新制御部221は、第2部分プログラムを元の第1部分プログラムに更新する場合、第3記憶領域243に格納されている更新用データを用いて更新するとしたが、これに限らない。例えば、更新制御部221は、第3記憶領域243に格納されている更新用データが、第2部分プログラムを元の第1部分プログラムに戻す更新処理に適用できないデータである場合、または、元に戻す更新処理に要する処理量が所定の処理量(例えば、第1部分プログラムから第2部分プログラムへの更新処理に要する処理量)よりも大きくなる場合、新たな更新用データを用いて元に戻す更新処理を行ってもよい。この場合、更新制御部221は、第2部分プログラムを元の第1部分プログラムに戻す更新処理のための新たな更新用データを外部装置から取得する。
 次に、更新制御部221による第1プログラムを第2プログラムに更新する更新処理中に更新処理が失敗した場合に行う、更新前の状態に戻す処理(ロールバック処理)の第2の例について図8を用いて説明する。図8は、更新処理が失敗した場合の処理の第2の例について説明するための図である。
 図8の(a)に示すように、更新制御部221は、第1部分領域252における第1部分プログラムの更新に失敗した場合、図8の(b)に示すように、更新済みの1以上の第1部分領域251と、更新が失敗した第1部分領域252とのそれぞれについて、当該第1部分領域に格納されている第2部分プログラムを第2記憶領域242にコピーした後で、更新用データのうちで当該第2部分プログラムに対応する部分データを用いて第2部分プログラムを第1部分プログラムに更新する。更新制御部221は、この処理を、第1プログラムを第2プログラムに更新する処理と同様に行う。このときの、提供部222による提供処理についても同様である。
 次に、更新制御部221による第1プログラムを第2プログラムに更新する更新処理中に更新処理が失敗した場合に行う、更新前の状態に戻す処理(ロールバック処理)の第3の例について説明する。第3の例は、第1の例の処理と第2の例の処理とを失敗が発生した第1部分領域の位置に応じて切り替える例である。
 具体的には、更新制御部221は、第1プログラムを更新している間に当該更新が失敗した場合、更新が失敗した第1部分領域が複数の第1部分領域251~255のうちの特定の第1部分領域253より処理順で前か後かを判定する。そして、更新制御部221は、判定の結果、更新が失敗した第1部分領域が処理順で特定の第1部分領域253より前である場合、図8で説明した第2の例の処理を行う。一方で、更新制御部221は、判定の結果、更新が失敗した第1部分領域が処理順で特定の第1部分領域253より後である場合、図7で説明した第1の例の処理を行う。
 なお、更新制御部221は、判定の結果、更新が失敗した第1部分領域が処理順で特定の第1部分領域253である場合、第1の例の処理を行ってもよいし、第2の例の処理を行ってもよい。この場合、第1の例の処理を行うか、第2の例の処理を行うかは予め定められていてもよく、更新制御部221は、第1の例の処理および第2の例の処理のうちで予め定められた処理を行う。また、特定の第1部分領域は、複数の第1部分領域251~255のうちの第1部分領域253であることを例示したが、第1部分領域253であることに限らない。特定の第1部分領域は、複数の第1部分領域のうちの予め定められた第1部分領域であればよい。
 [動作]
 以上のように構成された情報処理装置210について、その動作を以下に説明する。
 まず、更新処理について説明する。図9は、実施の形態に係る情報処理装置210による更新処理の一例を示すフローチャートである。
 管理ECU220は、更新用データを取得したか否かを判定する(S11)。
 管理ECU220は、更新用データを取得したと判定した場合(S11でYes)、複数の第1部分領域251~255のそれぞれについて、下記のステップS12およびステップS13を含むループ1を行う。一方で、管理ECU220は、更新用データを取得していないと判定した場合(S11でNo)、ステップS11に戻る。
 管理ECU220は、処理対象の第1部分領域に格納されている第1部分プログラムを第2記憶領域242にコピーする(S12)。
 管理ECU220は、処理対象の第1部分領域に格納されている第1部分プログラムを、更新用データのうちで当該第1部分プログラムに対応する部分データを用いて、第2部分プログラムに更新する(S13)。
 管理ECU220は、全ての第1部分領域251~255について、ステップS12およびステップS13を実行すると、処理を終了する。
 次に、提供処理について説明する。図10は、実施の形態に係る情報処理装置210による提供処理の一例を示すフローチャートである。
 管理ECU220は、ECU230により仮想ストレージ260へアクセスを受け付けたか否かを判定する(S21)。
 管理ECU220は、ECU230により仮想ストレージ260へアクセスを受け付けたと判定した場合(S21でYes)、アクセス先の第1部分領域の更新状態を判定する(S22)。管理ECU220は、ECU230により仮想ストレージ260へアクセスを受け付けていないと判定した場合(S21でNo)、ステップS21に戻る。
 管理ECU220は、アクセス先の第1部分領域の更新状態が更新処理後(更新完了)を示す場合(S22で更新完了)、ステップS23を行う。管理ECU220は、アクセス先の第1部分領域の更新状態が更新中を示す場合(S22で更新中)、ステップS24を行う。管理ECU220は、アクセス先の第1部分領域の更新状態が更新前(未更新)を示す場合(S22で更新前)、ステップS26を行う。
 ステップS23では、管理ECU220は、アクセス先の第1部分領域に格納されている第2部分プログラムをECU230に提供する(S23)。
 ステップS24では、管理ECU220は、第2記憶領域242に格納されている第1部分プログラムと、当該第1部分プログラムに対応する差分データとを用いて、第2部分プログラムを生成する(S24)。そして、管理ECU220は、生成した第2部分プログラムをECU230に提供する(S25)。
 ステップS26では、管理ECU220は、アクセス先の第1部分領域に格納されている第1部分プログラムと、当該第1部分プログラムに対応する差分データとを用いて、第2部分プログラムを生成する(S26)。そして、管理ECU220は、生成した第2部分プログラムをECU230に提供する(S27)。
 次に、更新処理が途中で失敗したときの更新前の状態に戻す処理(ロールバック処理)の第1の例について説明する。図11は、実施の形態に係る情報処理装置210によるロールバック処理の第1の例を示すフローチャートである。
 管理ECU220は、更新処理中において更新に失敗したか否かを判定する(S31)。例えば、管理ECU220は、ステップS31の処理において、更新用データに破損が生じた場合、記憶部240に物理的な劣化などによる書き込み不能領域が発生した場合、更新処理の異常中断が発生した場合などに、更新に失敗したと判定する。管理ECU220は、例えば、更新用データを記憶部240から取得できない場合、更新用データを更新処理に適用できない場合に、更新用データに破損が生じたと判定することができる。管理ECU220は、例えば、更新処理中にエラーが検出された場合に、記憶部240に物理的な劣化などによる書き込み不能領域が発生したと判定することができる。管理ECU220は、例えば、更新処理中にエラーが検出された場合、更新処理再開後の書き込み済みプログラム内容の確認が行われた場合に、更新処理の異常中断が発生したと判定することができる。
 なお、例えば、管理ECU220は、以下の場合に、更新に失敗するおそれがある。更新に失敗するおそれがある場合とは、例えば、更新用データの受信時に突発的な電源断が発生した場合、ストレージ23の物理的な劣化などによる書き込み不能領域が発生した場合、書き込み不能領域へのエラーチェック前アクセスが発生した場合、処理負荷が所定の負荷を超えた場合などである。
 管理ECU220は、図9で説明した更新処理中において更新に失敗したと判定した場合(S31でYes)、更新処理中の第1部分領域があるか否かを判定する(S32)。一方で、管理ECU220は、更新処理中において更新に失敗していないと判定した場合(S31でNo)、ステップS31に戻る。なお、この場合、図9で説明した更新処理は継続される。
 管理ECU220は、更新処理中の第1部分領域があると判定した場合(S32でYes)、第2記憶領域242に格納している第1部分プログラムを、更新処理中の第1部分領域に格納する(S33)。更新中領域への書き込み失敗等の場合、第1部分領域に存在しているデータが更新前か更新後の状態かがわからない、または、当該データが破損している可能性がある。このため、ステップS32およびS33の処理を行うことで、更新中領域を第1部分プログラムに確実に書き戻すことができ、次処理を確実に実施することができる。
 管理ECU220は、更新処理中の第1部分領域がないと判定した場合(S32でNo)、または、ステップS33の後、更新処理前(未処理)の第1部分領域があるか否かを判定する(S34)。
 管理ECU220は、更新処理前の第1部分領域があると判定した場合(S34でYes)、更新処理前の第1部分領域のそれぞれについて、下記のステップS35およびステップS36を含むループ2を行う。
 管理ECU220は、処理対象の第1部分領域に格納されている第1部分プログラムを第2記憶領域242にコピーする(S35)。
 管理ECU220は、処理対象の第1部分領域に格納されている第1部分プログラムを、更新用データのうちで当該第1部分プログラムに対応する部分データを用いて、第2部分プログラムに更新する(S36)。
 管理ECU220は、更新処理前の第1部分領域がないと判定した場合(S34でNo)、または、更新処理前の全ての第1部分領域について、ステップS35およびステップS36を実行した場合、更新処理後の全ての第1部分領域251~255のそれぞれについて、ステップS37およびステップS38を含むループ3を行う。
 管理ECU220は、処理対象の第1部分領域に格納されている第2部分プログラムを第2記憶領域242にコピーする(S37)。
 管理ECU220は、処理対象の第1部分領域に格納されている第2部分プログラムを、更新用データのうちで当該第2部分プログラムに対応する部分データを用いて、第1部分プログラムに更新する(S38)。
 管理ECU220は、全ての第1部分領域251~255について、ステップS37およびステップS38を実行すると、処理を終了する。
 これにより、更新処理中において第1プログラムから第2プログラムへの更新が失敗した場合であっても、第1記憶領域241に第1プログラムが格納されている状態に戻すことができる。
 次に、更新処理が途中で失敗したときの更新前の状態に戻す処理(ロールバック処理)の第2の例について説明する。図12は、実施の形態に係る情報処理装置210によるロールバック処理の第2の例を示すフローチャートである。
 管理ECU220は、ステップS31~S33と同じ処理を行う。
 管理ECU220は、更新処理中の第1部分領域がないと判定した場合(S32でNo)、または、ステップS33の後、更新済みの1以上の第1部分領域と、更新が失敗した第1部分領域とのそれぞれについて、下記のステップS41およびステップS42を含むループ4を行う。
 管理ECU220は、処理対象の第1部分領域に格納されている第2部分プログラムを第2記憶領域242にコピーする(S41)。
 管理ECU220は、処理対象の第1部分領域に格納されている第2部分プログラムを、更新用データのうちで当該第2部分プログラムに対応する部分データを用いて、第1部分プログラムに更新する(S42)。
 管理ECU220は、全ての更新済みの第1部分領域と、更新が失敗した第1部分領域とについて、ステップS41およびステップS41を実行すると、処理を終了する。
 これにより、更新処理中において第1プログラムから第2プログラムへの更新が失敗した場合であっても、第1記憶領域241に第1プログラムが格納されている状態に戻すことができる。
 次に、更新処理が途中で失敗したときの更新前の状態に戻す処理(ロールバック処理)の第3の例について説明する。図13は、実施の形態に係る情報処理装置210によるロールバック処理の第3の例を示すフローチャートである。
 管理ECU220は、ステップS31~S33と同じ処理を行う。
 管理ECU220は、更新処理中の第1部分領域がないと判定した場合(S32でNo)、または、ステップS33の後、更新が失敗した第1部分領域が複数の第1部分領域251~255のうちの特定の第1部分領域253より処理順で前か後かを判定する(S51)。
 管理ECU220は、更新が失敗した第1部分領域が複数の第1部分領域251~255のうちの特定の第1部分領域253より処理順で前であると判定した場合(S51で前)、更新済みの1以上の第1部分領域と、更新が失敗した第1部分領域とのそれぞれについて、下記のステップS41およびステップS42を含むループ4を行う。ループ4については、図12を用いて既に説明したため、説明を省略する。
 管理ECU220は、更新が失敗した第1部分領域が複数の第1部分領域251~255のうちの特定の第1部分領域253より処理順で後であると判定した場合(S51で後)、ステップS34~ステップS38と同じ処理を行う。
 これにより、更新処理中において第1プログラムから第2プログラムへの更新が失敗した場合であっても、失敗した第1部分領域の位置に応じて、処理を変更するため、処理に要する時間を低減することができる。
 [効果など]
 本実施の形態に係る情報処理装置210によれば、更新処理の対象となる第1部分領域に格納されている第1部分プログラムを第2記憶領域242にコピーすることで第1部分プログラムを退避させた上で、当該第1部分領域に格納されている第1部分プログラムを第2部分プログラムに更新する。このため、更新処理中の第1部分領域にアクセスされた場合であっても、更新処理中の第1部分プログラムの代わりに退避させた第1部分プログラムを用いることができ、アクセス元の機器にプログラムを提供することができる。また、更新に用いられるデータは差分情報であり、かつ、退避させるプログラムは第1プログラムの一部の第1部分プログラムであるため、プログラムの更新時に使用するストレージの記憶容量を低減することができる。
 また、本実施の形態に係る情報処理装置210において、ECU230と、更新制御部221、および、記憶部240を仮想ストレージ260としてECU230に提供する提供部222とを有する管理ECU220と、を備え、第1プログラムは、ECU230が起動時に実行するプログラムである。つまり、ECU230が実行する第1プログラムは、管理ECU220が提供する仮想ストレージ260に格納されているため、ECU230のプログラムの更新を、ECU230を用いずに行うことができる。よって、更新対象のECU230のプログラムをECU230の動作に影響を与えないように更新することができる。
 また、本実施の形態に係る情報処理装置210において、差分情報は、第1プログラムを構成する複数の第1データ単位、および、第2プログラムを構成する複数の第2データ単位の間の差分を示す複数の差分データと、複数の差分データ毎に、当該差分データに対応する第1データ単位及び第2データ単位を特定するための対応関係情報とを含む。このため、差分データを適用する第1データ単位を容易に特定することができる。よって、第2部分プログラムの生成処理に係る処理負荷、および、当該生成処理に係る処理時間を低減することができる。
 [変形例]
 (変形例1)
 上記実施の形態では、管理ECU220と、ECU230とは、n個のECU22のうちのいずれかで実現されるとしたが、これに限らずに、1以上のプロセッサ、および、仮想化環境を実現するためのプログラムが格納されているメモリまたはストレージにより実現されてもよい。
 図14は、変形例1に係る情報処理装置210Aの機能構成の一例を示すブロック図である。図15は、変形例1に係る情報処理装置210Aの機能を実現する仮想マシンの構成を示す図である。
 情報処理装置210Aは、図14に示すように、管理VM(Virtual Machine)220Aと、複数のVM(Virtual Machine)230Aa、230Abと、共有メモリ250とを備える。情報処理装置210Aは、図15に示すように、1以上のハードウェアの上にソフトウェアにより仮想的に実現される仮想マシンを有する。例えば、情報処理装置210Aは、ハイパーバイザー型の仮想化環境で実現される。
 管理VM220Aは、実施の形態に係る管理ECU220と同様の機能を有する。複数のVM230Aa、230Abは、実施の形態に係るECU230と同様の機能を有する。
 共有メモリ250は、仮想ストレージ機能による記憶領域を提供する。このように、共有メモリ250により、各VMのプログラムの記憶領域が実現されているため、管理VM220AおよびVM230Aa、230Ab間の情報の受け渡しを高速に行うことができる。
 (変形例2)
 上記実施の形態では、自動車200を移動体の一例として挙げたが、移動体は、自動車200に限らずに、他の乗り物であってもよいし、無人の車両、ドローンなどの飛行体などであってもよい。また、情報処理装置210は、例えば、移動体に搭載されるコンピュータシステムに限らずに、複数の制御器を備えていればどのようなコンピュータシステムに適用されてもよい。
 [その他]
 なお、上記実施の形態およびその変形例1および2において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態のプログラム更新方法などを実現するソフトウェアは、次のようなプログラムである。
 すなわち、このプログラムは、コンピュータに、第1プログラムが格納されている記憶部を備える情報処理装置により実行される情報処理方法であって、外部装置から前記第1プログラムの更新用のデータを取得し、取得した前記データを用いて前記第1プログラムを新たな第2プログラムに更新し、前記更新では、前記第1プログラムが格納されている前記記憶部の記憶領域である第1記憶領域が分割された複数の第1部分領域のそれぞれについて、当該第1部分領域に格納されている前記第1プログラムの一部である第1部分プログラムを前記第1記憶領域とは異なる第2記憶領域にコピーした後で、前記データのうちで前記第1部分プログラムに対応する部分データを用いて前記第1部分プログラムを前記第2プログラムの一部である第2部分プログラムに順次更新し、前記データは、前記第1プログラムと前記第2プログラムとの間の差分を示す差分情報であり、前記第2記憶領域の記憶容量は、前記第1記憶領域の記憶容量よりも小さい情報処理方法を実行させる。
 以上のように、本開示における技術の例示として、実施の形態を説明した。そのために、添付図面および詳細な説明を提供した。
 したがって、添付図面および詳細な説明に記載された構成要素の中には、課題解決のために必須な構成要素だけでなく、上記技術を例示するために、課題解決のためには必須でない構成要素も含まれ得る。そのため、それらの必須ではない構成要素が添付図面や詳細な説明に記載されていることをもって、直ちに、それらの必須ではない構成要素が必須であるとの認定をするべきではない。
 また、上述の実施の形態は、本開示における技術を例示するためのものであるから、請求の範囲またはその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。
 本開示は、更新対象の制御器のプログラムを当該制御器に影響を与えないように更新することができる情報処理装置等に適用可能である。
 11  CPU(Central Processing Unit)
 12  メインメモリ
 13  ストレージ
 14  通信IF(Interface)
 21  TCU(Telematics Control Unit)
 22  ECU(Electronic Control Unit)
 23  ストレージ
100  サーバ
200  自動車
210、210A  情報処理装置
220  管理ECU
220A  管理VM
221  更新制御部
222  提供部
230  ECU
230Aa、230Ab  VM
231  制御部
232  クライアント部
240  記憶部
241  第1記憶領域
242  第2記憶領域
243  第3記憶領域
250  共有メモリ
251~255  第1部分領域
260  仮想ストレージ
300  通信ネットワーク
310  基地局

Claims (8)

  1.  第1プログラムが格納されている記憶部と、
     外部装置から前記第1プログラムの更新用のデータを取得し、取得した前記データを用いて前記第1プログラムを新たな第2プログラムに更新する更新制御部と、を備え、
     前記更新制御部は、前記第1プログラムが格納されている前記記憶部の記憶領域である第1記憶領域が分割された複数の第1部分領域のそれぞれについて、当該第1部分領域に格納されている前記第1プログラムの一部である第1部分プログラムを前記第1記憶領域とは異なる第2記憶領域にコピーした後で、前記データのうちで前記第1部分プログラムに対応する部分データを用いて前記第1部分プログラムを前記第2プログラムの一部である第2部分プログラムに順次更新し、
     前記データは、前記第1プログラムと前記第2プログラムとの間の差分を示す差分情報であり、
     前記第2記憶領域の記憶容量は、前記第1記憶領域の記憶容量よりも小さい
     情報処理装置。
  2.  さらに、
     第1制御器と、
     前記更新制御部と、前記記憶部を仮想ストレージとして前記第1制御器に提供する提供部とを有する第2制御器と、を備え、
     前記第1プログラムは、前記第1制御器が起動時に実行するプログラムである
     請求項1に記載の情報処理装置。
  3.  前記提供部は、前記更新制御部が前記第1プログラムを更新している間において、前記第1制御器から前記仮想ストレージへのアクセスを受け付けた場合、
     (i)前記アクセスのアクセス先が更新処理後の第1部分領域であれば、当該第1部分領域に格納されている前記第2部分プログラムを前記第1制御器に提供し、
     (ii)前記アクセス先が更新処理中の第1部分領域であれば、前記第2記憶領域に格納されている第1部分プログラムと、前記データのうちで当該第1部分プログラムに対応する部分データとを用いて、当該第1部分プログラムを更新した第2部分プログラムを生成し、生成した前記第2部分プログラムを前記第1制御器に提供し、
     (iii)前記アクセス先が更新処理前の第1部分領域であれば、当該第1部分領域に格納されている第1部分プログラムと、前記データのうちで当該第1部分プログラムに対応する部分データとを用いて、当該第1部分プログラムを更新した第2部分プログラムを生成し、生成した前記第2部分プログラムを前記第1制御器に提供する
     請求項2に記載の情報処理装置。
  4.  前記差分情報は、前記第1プログラムを構成する複数の第1データ単位、および、第2プログラムを構成する複数の第2データ単位の間の差分を示す複数の差分データと、前記複数の差分データ毎に、当該差分データに対応する前記第1データ単位及び前記第2データ単位を特定するための対応関係情報とを含む
     請求項1から3のいずれか1項に記載の情報処理装置。
  5.  前記更新制御部は、前記第1プログラムを更新している間に当該更新が失敗した場合、
      全ての前記複数の第1部分領域について、当該第1部分領域に格納されている前記第1部分プログラムを前記第2部分プログラムに更新し、
      前記第1プログラムを前記第2プログラムに更新した後で、前記第2プログラムが格納されている前記第1記憶領域が分割された前記複数の第1部分領域のそれぞれについて、当該第1部分領域に格納されている前記第2プログラムの一部である前記第2部分プログラムを前記第2記憶領域にコピーし、当該コピーの後で、前記データのうちで前記第2部分プログラムに対応する部分データを用いて前記第2部分プログラムを前記第1プログラムの一部である第1部分プログラムに更新する
     請求項1から4のいずれか1項に記載の情報処理装置。
  6.  前記更新制御部は、前記第1プログラムを更新している間に当該更新が失敗した場合、更新済みの1以上の前記第1部分領域と、更新が失敗した第1部分領域とのそれぞれについて、当該第1部分領域に格納されている第2プログラムの一部である第2部分プログラムを前記第2記憶領域にコピーした後で、前記データのうちで前記第2部分プログラムに対応する部分データを用いて前記第2部分プログラムを前記第1部分プログラムに更新する
     請求項1から4のいずれか1項に記載の情報処理装置。
  7.  前記更新制御部は、前記第1プログラムを更新している間に当該更新が失敗した場合、更新が失敗した第1部分領域が前記複数の第1部分領域のうちの特定の第1部分領域より処理順で前か後かを判定し、
     前記判定の結果、更新が失敗した前記第1部分領域が処理順で前記特定の第1部分領域より前である場合、更新済みの前記複数の第1部分領域と、更新が失敗した第1部分領域とのそれぞれについて、当該第1部分領域に格納されている第2プログラムの一部である第2部分プログラムを前記第2記憶領域にコピーした後で、前記データのうちで前記第2部分プログラムに対応する部分データを用いて前記第2部分プログラムを前記第1部分プログラムに更新し、
     前記判定の結果、更新が失敗した前記第1部分領域が処理順で前記特定の第1部分領域より後である場合、
      全ての前記複数の第1部分領域について、当該第1部分領域に格納されている前記第1部分プログラムを前記第2部分プログラムに更新し、
      前記第1プログラムを前記第2プログラムに更新した後で、前記第2プログラムが格納されている第3記憶領域が分割された複数の第2部分領域のそれぞれについて、当該第2部分領域に格納されている第2プログラムの一部である第3部分プログラムを前記第2記憶領域にコピーし、当該コピーの後で、前記データのうちで前記第3部分プログラムに対応する部分データを用いて前記第3部分プログラムを前記第1プログラムの一部である第4部分プログラムに更新する
     請求項1から4のいずれか1項に記載の情報処理装置。
  8.  第1プログラムが格納されている記憶部を備える情報処理装置により実行される情報処理方法であって、
     外部装置から前記第1プログラムの更新用のデータを取得し、
     取得した前記データを用いて前記第1プログラムを新たな第2プログラムに更新し、
     前記更新では、前記第1プログラムが格納されている前記記憶部の記憶領域である第1記憶領域が分割された複数の第1部分領域のそれぞれについて、当該第1部分領域に格納されている前記第1プログラムの一部である第1部分プログラムを前記第1記憶領域とは異なる第2記憶領域にコピーした後で、前記データのうちで前記第1部分プログラムに対応する部分データを用いて前記第1部分プログラムを前記第2プログラムの一部である第2部分プログラムに順次更新し、
     前記データは、前記第1プログラムと前記第2プログラムとの間の差分を示す差分情報であり、
     前記第2記憶領域の記憶容量は、前記第1記憶領域の記憶容量よりも小さい
     情報処理方法。
PCT/JP2021/000757 2020-01-31 2021-01-13 情報処理装置および情報処理方法 WO2021153224A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE112021000801.3T DE112021000801T5 (de) 2020-01-31 2021-01-13 Informationsverarbeitungsvorrichtung und Informationsverarbeitungsverfahren
US17/563,833 US11886869B2 (en) 2020-01-31 2021-12-28 Information processing device and information processing method for updating a program by partially relocating the program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020014785A JP7266216B2 (ja) 2020-01-31 2020-01-31 情報処理装置および情報処理方法
JP2020-014785 2020-01-31

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/563,833 Continuation US11886869B2 (en) 2020-01-31 2021-12-28 Information processing device and information processing method for updating a program by partially relocating the program

Publications (1)

Publication Number Publication Date
WO2021153224A1 true WO2021153224A1 (ja) 2021-08-05

Family

ID=77078787

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/000757 WO2021153224A1 (ja) 2020-01-31 2021-01-13 情報処理装置および情報処理方法

Country Status (4)

Country Link
US (1) US11886869B2 (ja)
JP (1) JP7266216B2 (ja)
DE (1) DE112021000801T5 (ja)
WO (1) WO2021153224A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014115927A (ja) * 2012-12-12 2014-06-26 Sharp Corp プログラム更新装置、方法、プログラム、及び記憶媒体
JP2014191574A (ja) * 2013-03-27 2014-10-06 Denso Corp 車両用電子制御装置、及び制御プログラム
JP2016033728A (ja) * 2014-07-31 2016-03-10 京セラドキュメントソリューションズ株式会社 情報処理装置
JP2018018186A (ja) * 2016-07-26 2018-02-01 日立オートモティブシステムズ株式会社 車両制御装置、車載ネットワークシステム
JP2018197993A (ja) * 2017-05-24 2018-12-13 シャープ株式会社 端末装置、サーバ装置、端末装置の制御プログラム、サーバ装置の制御方法、およびシステム
JP2019144671A (ja) * 2018-02-16 2019-08-29 トヨタ自動車株式会社 車両制御装置、プログラム更新方法およびプログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4856580U (ja) 1971-11-01 1973-07-19
JPH0511740Y2 (ja) 1987-09-18 1993-03-24
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US7376870B2 (en) * 2004-09-30 2008-05-20 Intel Corporation Self-monitoring and updating of firmware over a network
JP4548601B2 (ja) 2005-04-20 2010-09-22 株式会社デンソー 自動車用制御ユニット
US20060259207A1 (en) 2005-04-20 2006-11-16 Denso Corporation Electronic control system for automobile
US7802245B2 (en) 2006-04-27 2010-09-21 Agere Systems Inc. Methods and apparatus for performing in-service upgrade of software in network processor
JP5349104B2 (ja) * 2009-03-25 2013-11-20 富士通株式会社 電子機器およびプログラム更新方法
JP6386302B2 (ja) * 2014-08-29 2018-09-05 株式会社スクウェア・エニックス パッチ適用システム、パッチ適用プログラム、パッチ提供装置、及びパッチ適用方法
JP6447469B2 (ja) 2015-11-23 2019-01-09 株式会社デンソー 書換システム
JP6361671B2 (ja) 2016-03-02 2018-07-25 住友電気工業株式会社 プログラム更新システム、プログラム更新方法、中継装置及びコンピュータプログラム
JP6699324B2 (ja) 2016-04-26 2020-05-27 株式会社デンソー 電子制御装置及びデータ書換えシステム
KR20180131840A (ko) * 2017-06-01 2018-12-11 한국전자통신연구원 펌웨어 업데이트 지원 장치 및 그 방법
JP6984203B2 (ja) 2017-07-13 2021-12-17 株式会社デンソー 電子制御装置及び更新ソフトウェア配信システム
JP7087334B2 (ja) 2017-10-13 2022-06-21 株式会社デンソー 電子制御装置
US10452386B1 (en) * 2018-07-19 2019-10-22 American Megatrends International, Llc Non-destructive update of discrete components of firmware

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014115927A (ja) * 2012-12-12 2014-06-26 Sharp Corp プログラム更新装置、方法、プログラム、及び記憶媒体
JP2014191574A (ja) * 2013-03-27 2014-10-06 Denso Corp 車両用電子制御装置、及び制御プログラム
JP2016033728A (ja) * 2014-07-31 2016-03-10 京セラドキュメントソリューションズ株式会社 情報処理装置
JP2018018186A (ja) * 2016-07-26 2018-02-01 日立オートモティブシステムズ株式会社 車両制御装置、車載ネットワークシステム
JP2018197993A (ja) * 2017-05-24 2018-12-13 シャープ株式会社 端末装置、サーバ装置、端末装置の制御プログラム、サーバ装置の制御方法、およびシステム
JP2019144671A (ja) * 2018-02-16 2019-08-29 トヨタ自動車株式会社 車両制御装置、プログラム更新方法およびプログラム

Also Published As

Publication number Publication date
US20220121440A1 (en) 2022-04-21
US11886869B2 (en) 2024-01-30
JP7266216B2 (ja) 2023-04-28
JP2021121894A (ja) 2021-08-26
DE112021000801T5 (de) 2022-12-22

Similar Documents

Publication Publication Date Title
JP5113700B2 (ja) ファームウェア更新装置及び方法
KR101636870B1 (ko) 최소 부트 이미지의 생성 방법 및 장치
CN102334100A (zh) 程序更新设备、程序更新方法以及信息处理设备
WO2018159691A1 (ja) 通信処理装置、情報処理装置、及び、通信処理装置の制御方法
US7818557B2 (en) Method for re-imaging a computer system
KR20220084336A (ko) 보안 저장 디바이스의 탄력적인 소프트웨어 업데이트
CN110764486B (zh) 车载控制器的运行方法、装置、车载控制器及存储介质
CN111026417A (zh) 一种嵌入式设备的升级方法及嵌入式设备
WO2021153224A1 (ja) 情報処理装置および情報処理方法
US7904422B2 (en) System for deploying data from deployment-source device to deployment-destination device
KR102123701B1 (ko) 네트워크 부트 시스템
WO2021117445A1 (ja) 情報処理装置、移動体および情報処理方法
US20080027963A1 (en) Storage apparatus and program update method
JP2008217202A (ja) ディスクアレイ装置及びファームウェア更新方法
JP2002258971A (ja) 計算機システムの再立上げ方法
US20220365696A1 (en) Re-partitioning of a flash memory device
JP6149624B2 (ja) ファームウェア実行装置、ファームウェア実行方法、コンピュータ・プログラム、および、コンピュータ装置
KR100775887B1 (ko) 임베디드시스템에서 하드디스크를 이용한 운영체계 로딩 및업데이트 방법
WO2018150820A1 (ja) 情報処理装置
US20230185564A1 (en) Control device and management method
CN112068928B (zh) 一种基于重定向的虚拟机数据存储方法及系统
WO2020241473A1 (ja) 演算処理装置、車両制御装置及び更新方法
JP2005321967A (ja) 情報処理装置
JP5668518B2 (ja) 情報処理装置、情報処理方法及びプログラム
CN116974601A (zh) 终端设备的系统升级方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21748357

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 21748357

Country of ref document: EP

Kind code of ref document: A1