JP2018195046A - プログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システム - Google Patents

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

Info

Publication number
JP2018195046A
JP2018195046A JP2017097947A JP2017097947A JP2018195046A JP 2018195046 A JP2018195046 A JP 2018195046A JP 2017097947 A JP2017097947 A JP 2017097947A JP 2017097947 A JP2017097947 A JP 2017097947A JP 2018195046 A JP2018195046 A JP 2018195046A
Authority
JP
Japan
Prior art keywords
update
program
patch
group
unit
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.)
Pending
Application number
JP2017097947A
Other languages
English (en)
Inventor
正明 野呂
Masaaki Noro
正明 野呂
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017097947A priority Critical patent/JP2018195046A/ja
Publication of JP2018195046A publication Critical patent/JP2018195046A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】端末装置での作業領域のサイズを抑えつつパッチサイズを小さくすること。
【解決手段】パッチ命令の書き込み先が複数のブロックにまたがる場合に、分割部21aが、複数のブロックにまたがらないようにパッチ命令を分割する。そして、グループ化部21bが、書き込み先ブロックが同じであるパッチ命令をグループ化する。そして、特定部22aが、グループ間の依存関係を特定し、解決部22bが、グループ間の依存関係を解決してグループの並び替えを行う。
【選択図】図2

Description

本発明は、プログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システムに関する。
IoT(Internet of Things)等で広域に配備される端末のファームウェアを更新する場合、現地に作業員を派遣することは困難であるため、広域網を利用した自動更新が行われる。図12は、IoTシステムにおけるファームアップデートを説明するための図である。ここで、「ファーム」はファームウェアを表す。
図12に示すように、プログラム更新装置92は、バグ修正、機能追加、セキュリティ対策等を目的として、広域網4を介してセンサ端末93に更新版ファームを送信してファームアップデートを行う。ただし、更新にあたっては、センサ端末93の必要資源(メモリ、ストレージ等)をできるだけ少なくすること、通信によるセンサ端末93の電力消費をできるだけ少なくすることが重要となる。このため、更新前後の差分情報だけがパッチとしてセンサ端末93に配布され、センサ端末93が更新前ファームとパッチから更新後ファームを作成し、ファームを更新する。
図13は、センサ端末93におけるファームアップデートを説明するための図である。図13に示すように、センサ端末93は、MCU(Micro Control Unit)90と、ストレージ95と、EEPROM96とを有する。
MCU90は、EEPROM96からプログラムを読み出して実行する演算処理装置である。ストレージ95は、フラッシュメモリ等の不揮発性記憶装置である。EEPROM96は、MCU90で実行されるプログラムを記憶する不揮発性記憶装置であり、ファーム本体961、ファーム更新プログラム962及びブートローダ963を記憶する。なお、EEPROMは、Electrically Erasable Programmable Read-Only Memoryを表す。
ファーム本体961は、更新されるプログラムである。ファーム更新プログラム962は、パッチ94を用いてファーム本体961を更新するプログラムである。ブートローダ963は、センサ端末93が起動されると実行され、ファーム本体961又はファーム更新プログラム962を起動するプログラムである。
プログラム更新装置92は、パッチ94を作成してセンサ端末93に送信する。そして、センサ端末93は、パッチ94を受信してストレージ95に格納する。そして、ファーム更新プログラム962は、パッチ94を用いて更新版ファームを作業領域97に作成し、ファーム本体961を更新する。
図13に示したファームアップデートでは、パッチ94の受信に消費される電力をできるだけ少なくすることが重要である。また、ストレージ95の容量をできるだけ小さくすることが重要である。したがって、パッチ94と作業領域97のサイズをできるだけ小さくすることが重要となる。
図14は、作業領域97のサイズを説明するための図である。図14において、「ファイル」は、更新前ファーム(旧版)を記憶するファイル及び更新後ファーム(新版)を記憶するファイルを表す。図14では、パッチ94には4つのパッチ命令が含まれる。パッチ命令#1は、新版のa−b’を置換する命令であり、パッチ命令#2は、b−cをb’に移動する命令であり、パッチ命令#3は、新版のc’−d’を置換する命令であり、パッチ命令#4は、d−eをd’に移動する命令である。なお、読み込み元は、旧版での番地(スタート番地、終了番地)を示し、処理内容は、パッチ命令の種類を示す。
パッチ94を実行するために必要な作業領域97のサイズは、パッチ94の内容によって決定される。作業領域97の理論上の最大値は、1パッチ命令の書き込み先の理論上の最大サイズ、すなわち、ファイルサイズの理論上の最大値、すなわち、センサ端末93のファーム本体961のサイズである。
作業領域97を小さくする技術として、ファーム本体961を複数のブロックに分割し、ブロック単位でパッチを適用する技術がある。図15は、ブロック単位でのパッチ適用を説明するための図である。図15は、ファーム本体961が4つのブロックに分割され、ブロック#0とブロック#1が新版に置き換えられ、ブロック#2にパッチ94が適用されている状況を示す。図15に示すように、作業領域98には、ブロック#2用作業版99が記憶される。したがって、作業領域98のサイズは1ブロックのサイズである。
なお、旧ファイルの新ファイルへの更新にパッチ適用を行う場合に、新ファイルに含まれるブロックが旧ファイルのブロックに循環して互いに依存する場合に依存関係のループを切断してパッチ適用の順番を決定する技術がある。
特表2013−517565号公報
図15に示したブロック単位でのパッチ適用には、パッチのサイズが大きくなるという問題がある。図16は、ブロック単位でのパッチ適用の問題点を説明するための図である。図16に示すように、ブロック#1へのパッチ適用では、b−c’を置換するパッチ命令が実行された後、c−dをc’に移動するパッチ命令が実行され、次に、d’−e’を置換するパッチ命令が実行される。そして、ブロック#2へのパッチ適用では、e−fをe’に移動するパッチ命令が実行され、次に、f’−g’を置換するパッチ命令が実行される。
すなわち、ブロック分割が行われていなければc−fをc’に移動する1つのパッチ命令が、c−dをc’に移動するパッチ命令と、d’−e’を置換するパッチ命令と、e−fをe’に移動するパッチ命令とに分割される。その理由は、ブロック単位でのパッチ適用では、旧版の1ブロック分のデータしかないためである。ブロック#1のパッチ適用では、旧版のc−dは作業領域98にあるため新版へ移動することができるが、旧版のd−eは作業領域98にないため、d’−e’は置換となる。また、ブロック#2のパッチ適用では、旧版のe−fは作業領域98にあるため新版へ移動することができる。
このように、ブロック単位でのパッチ適用では、ブロックをまたぐ移動が一部置換に変化する。一般に、パッチ命令では、置換命令と追加命令は移動命令よりサイズが大きくなる。図17は、パッチ命令の種類とパッチサイズへの影響を説明するための図である。図17に示すように、移動命令には、移動元アドレスと移動先アドレスが含まれるが添付データは含まれない。一方、置換命令及び追加命令の場合には、書き換えデータを示す添付データが含まれる。
したがって、ブロックをまたぐ移動が一部置換に変化すると、パッチサイズは大きくなる。なお、追加命令は、置換命令で実現されるので、図17では、追加命令の添付データが書き換えデータと表されている。
また、図16において、g−hのデータはf’−g’の置換により上書きされるため、f’−g’の置換よりも前にg−hのh’への移動が行われる必要がある。すなわち、旧版と新版の間のデータの依存関係に基づいてパッチ適用は行われる必要がある。
本発明は、1つの側面では、作業領域のサイズを抑えつつパッチサイズを抑えることを目的とする。
1つの態様では、プログラム更新装置は、分割部と、グループ化部と、特定部と、解決部とを有する。分割部は、更新前プログラム及び更新後プログラムを複数のブロックに分割する。そして、分割部は、更新前プログラムを更新後プログラムに更新する第1更新命令群のうちの更新命令が更新後プログラムにおいて複数のブロックにまたがる更新を行う場合に該更新がブロック毎に行われるよう該更新命令を分割して第2更新命令群を得る。グループ化部は、分割で得られた第2更新命令群を更新後プログラムのブロック毎にグループ化する。特定部は、グループ化で得られた各グループと各グループが更新前プログラムのブロックのなかで依存するブロックとの関係を依存関係として特定する。解決部は、特定された依存関係を解決し、第2更新命令群を実行する際のグループの順番を決定する。
1つの側面では、本発明は、作業領域のサイズを抑えつつパッチサイズを抑えることができる。
図1Aは、パッチ作成を説明するための図である。 図1Bは、パッチ分割を説明するための図である。 図1Cは、パッチ命令のグループ分けを説明するための図である。 図1Dは、グループ分け後のパッチを示す図である。 図1Eは、グループ間の依存関係を説明するための図である。 図1Fは、依存関係の解決を説明するための図である。 図2は、実施例1に係るプログラム更新システムの構成を示す図である。 図3は、配布パッチ作成処理のフローを示すフローチャートである。 図4は、分割再構成処理のフローを示すフローチャートである。 図5は、依存関係解決処理のフローを示すフローチャートである。 図6は、作業領域のサイズに関する効果を説明するための図である。 図7は、パッチサイズに関する効果を説明するための図である。 図8は、実施例1に係るプログラム更新プログラムを実行するコンピュータのハードウェア構成を示す図である。 図9は、実施例2に係るセンサ端末による再起動対策を説明するための図である。 図10は、ブートローダによる処理のフローを示すフローチャートである。 図11は、ファーム更新プログラムによる処理のフローを示すフローチャートである。 図12は、IoTシステムにおけるファームアップデートを説明するための図である。 図13は、センサ端末におけるファームアップデートを説明するための図である。 図14は、作業領域のサイズを説明するための図である。 図15は、ブロック単位でのパッチ適用を説明するための図である。 図16は、ブロック単位でのパッチ適用の問題点を説明するための図である。 図17は、パッチ命令の種類とパッチサイズへの影響を説明するための図である。
以下に、本願の開示するプログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例1に係るプログラム更新装置によるパッチ分割再構成について図1A〜図1Fを用いて説明する。図1Aは、パッチ作成を説明するための図である。図1Aに示すように、実施例1に係るプログラム更新装置は、ブロック分割がない場合と同様に、パッチを作成する。すなわち、実施例1に係るプログラム更新装置は、新版のa−b’を置換するパッチ命令、旧版のb−cを新版のb’に移動するパッチ命令、新版のc’−d’を置換するパッチ命令及び旧版のd−eを新版のd’に移動するパッチ命令を含むパッチを作成する。
そして、実施例1に係るプログラム更新装置は、新版に関してブロックにまたがるパッチ命令をブロックをまたがらないように分割する。図1Bは、パッチ分割を説明するための図である。図1Bに示すように、b−cをb’に移動するパッチ命令は、新版に関してブロック#1とブロック#2をまたがるので、2つの移動に分割され、旧版のc−dを置換するパッチ命令は、新版に関してブロック#2とブロック#3をまたがるので、置換と追加に分割される。
そして、実施例1に係るプログラム更新装置は、新版のブロック番号でパッチ命令をグループ分けする。図1Cは、パッチ命令のグループ分けを説明するための図である。図1Cに示すように、パッチ命令#1とパッチ命令#2は、新版のブロック#1に関するパッチ命令であるので1つのグループにまとめられ、パッチ命令#3とパッチ命令#4は、新版のブロック#2に関するパッチ命令であるので1つのグループにまとめられる。また、パッチ命令#5とパッチ命令#6は、新版のブロック#3に関するパッチ命令であるので1つのグループにまとめられる。
そして、実施例1に係るプログラム更新装置は、グループ分け後のパッチについて、読み込み元ブロック番号と書き込み先ブロック番号を特定する。ここで、書き込み先ブロック番号は新版でのブロック番号であり、グループ番号と同じである。
図1Dは、グループ分け後のパッチを示す図である。図1Dに示すように、グループ#1には、パッチ命令#1とパッチ命令#2が含まれ、読み込み元ブロック番号は1と2であり、書き込み先ブロック番号は1である。また、グループ#2には、パッチ命令#3とパッチ命令#4が含まれ、読み込み元ブロック番号は2であり、書き込み先ブロック番号は2である。また、グループ#3には、パッチ命令#5とパッチ命令#6が含まれ、読み込み元ブロック番号は2と3であり、書き込み先ブロック番号は3である。
そして、実施例1に係るプログラム更新装置は、読み込み元ブロック番号と書き込み先ブロック番号に基づいてグループ間の依存関係を抽出する。図1Eは、グループ間の依存関係を説明するための図である。図1Eに示すように、グループ#1(書き込み先ブロック番号は1)の読み込み元ブロック番号は1と2であるので、グループ#1は、グループ#1とグループ#2に依存する。
同様に、グループ#2(書き込み先ブロック番号は2)の読み込み元ブロック番号は2であるので、グループ#2は、グループ#2に依存する。また、グループ#3(書き込み先ブロック番号は3)の読み込み元ブロック番号は2と3であるので、グループ#3は、グループ#2とグループ#3に依存する。そして、実施例1に係るプログラム更新装置は、自己ループを削除し、グループ間の依存関係を表すグラフを作成する。図1Eでは、グループ#1とグループ#3がグループ#2に依存する。
そして、実施例1に係るプログラム更新装置は、グループ間の依存関係を木構造に変換し、依存関係を解決する。図1Fは、依存関係の解決を説明するための図である。図1Fに示すように、実施例1に係るプログラム更新装置は、依存されるグループを上位層とし依存するグループを下位層としてグループ間の依存関係を木構造に変換する。そして、実施例1に係るプログラム更新装置は、木構造のリーフから順にグループを並べることで依存関係を解決する。
図1Fでは、グループ#1→グループ#3→グループ#2の順でパッチ適用を行うことで旧版と新版との間のグループ間の依存関係が解決される。すなわち、図1Dのグループ#3に含まれるパッチ命令#5をグループ#2に含まれるパッチ命令#4より先に実行することで、旧版でeからブロック#2の終わりまでのデータがパッチ命令#4により上書きされる前に新版のブロック#3の先頭に移動される。
次に、実施例1に係るプログラム更新システムの構成について説明する。図2は、実施例1に係るプログラム更新システムの構成を示す図である。図2に示すように、実施例1に係るプログラム更新システム1は、プログラム更新装置2とセンサ端末3を有する。センサ端末3は、広域網4を介してプログラム更新装置2に接続される。なお、図2では、説明の便宜上、1台のセンサ端末3のみが広域網4に接続されるが、広域網4にはより多くのセンサ端末3が接続される。
プログラム更新装置2は、パッチを作成して分割再構成、依存関係の解決を行い、依存関係の解決を行ったパッチを広域網4を介してセンサ端末3に配布する。プログラム更新装置2は、分割再構成部21と、依存関係解決部22と、送信部23と、記憶部24とを有する。
分割再構成部21は、パッチを作成して分割再構成を行う。分割再構成部21は、分割部21aと、グループ化部21bとを有する。分割部21aは、図1Bに示したように、パッチ命令の書き込み先が複数のブロックにまたがる場合に、複数のブロックにまたがらないようにパッチ命令を分割する。グループ化部21bは、図1Cに示したように、パッチ命令群を書き込み先ブロック番号に基づいてグループ分けする。
依存関係解決部22は、グループ間の依存関係を解決し、パッチ命令が正しい順序で実行されるようにグループの並び替えを行う。依存関係解決部22は、特定部22aと、解決部22bとを有する。
特定部22aは、図1Dに示したように、各グループの読み込み元ブロック番号と書き込み先ブロック番号を特定する。そして、特定部22aは、図1Eに示したように、グループ間の依存関係を特定する。
解決部22bは、グループ間の依存関係を解決し、グループの並び替えを行う。すなわち、解決部22bは、図1Fに示したように、グループ間の依存関係を木構造に変換し、リーフから順番にグループを並べることで、グループの並び替えを行う。そして、解決部22bは、グループの順番に基づいてパッチ命令群を並び替え、センサ端末3に配布されるパッチを作成する。
送信部23は、解決部22bにより作成されたパッチを広域網4を介してセンサ端末3に送信する。記憶部24は、分割再構成部21により作成されたパッチ、分割再構成されたパッチ、センサ端末3に配布されるパッチ、一時的なデータ等を記憶する。
センサ端末3は、センサが測定したセンサデータを広域網4を介してセンサデータ収集装置に送信する。センサデータ収集装置は、プログラム更新装置2と同一であってもよい。センサ端末3は、受信部31と、記憶部32と、更新部33とを有する。
受信部31は、プログラム更新装置2が広域網4を介して送信したパッチを受信し、記憶部32に格納する。記憶部32は、パッチを記憶するパッチ領域32aと、更新中のブロックのデータを記憶する作業領域32bを有する。更新部33は、パッチに含まれるパッチ命令を作業領域32bを用いて実行することでセンサ端末3のファームを更新する。
なお、更新部33は、EEPROMに格納されたファーム更新プログラムがMCUで実行されることによって実現される。記憶部32は、フラッシュメモリにより実現される。すなわち、センサ端末3は、MCUとEEPROMとフラッシュメモリとを有する。
次に、配布パッチ作成処理のフローについて説明する。ここで、配布パッチ作成処理とは、プログラム更新装置2が、パッチを作成し、分割再構成及び依存関係解決を行って、センサ端末3に配布するパッチを作成する処理である。
図3は、配布パッチ作成処理のフローを示すフローチャートである。図3に示すように、プログラム更新装置2は、パッチの作成、分割及びグループ化を行う分割再構成処理を実行する(ステップS1)。そして、プログラム更新装置2は、グループ間の依存関係を特定して解決する依存関係解決処理を実行する(ステップS2)。
図4は、分割再構成処理のフローを示すフローチャートである。図4に示すように、分割再構成部21は、旧版と新版に基づいて、パッチを作成する(ステップS11)。そして、分割再構成部21は、パッチの終端まで処理を完了したか否かを判定し(ステップS12)、パッチの終端まで処理を完了した場合には、ステップS17へ進む。
一方、パッチの終端まで処理を完了していない場合には、分割再構成部21は、パッチから1パッチ命令を取り出し(ステップS13)、パッチ命令の書き込み先が複数のブロックにわたるか否かを判定する(ステップS14)。そして、分割再構成部21は、パッチ命令の書き込み先が複数のブロックにわたる場合には、パッチ命令の書き込み先がブロック単位となるようパッチ命令を分割する(ステップS15)。
そして、分割再構成部21は、パッチ命令を第1ワークエリアに書き出し(ステップS16)、ステップS12に戻る。ここで、第1ワークエリアは、記憶部24の領域である。また、分割再構成部21は、ステップS12においてパッチの終端まで処理を完了した場合には、第1ワークエリアの終端まで処理を完了したか否かを判定し(ステップS17)、第1ワークエリアの終端まで処理を完了した場合には、ステップS22へ進む。
一方、第1ワークエリアの終端まで処理を完了していない場合には、分割再構成部21は、第1ワークエリアから1パッチ命令を取り出し(ステップS18)、パッチ命令の書き込み先ブロックが前のパッチ命令と同じであるか否かを判定する(ステップS19)。そして、パッチ命令の書き込み先ブロックが前のパッチ命令と同じでない場合には、分割再構成部21は、第2ワークエリアのパッチ命令を1つのグループとして新しいパッチの末尾に書き出す(ステップS20)。ここで、第2ワークエリアは、記憶部24の領域である。
そして、分割再構成部21は、パッチ命令を第2ワークエリアの末尾に追加し(ステップS21)、ステップS17に戻る。また、分割再構成部21は、ステップS17において第1ワークエリアの終端まで処理を完了した場合には、第2ワークエリアのパッチ命令を1つのグループとして新しいパッチの末尾に書き出す(ステップS22)。
このように、分割再構成部21は、パッチを作成した後、パッチ命令の書き込み先が複数のブロックにわたる場合に、当該パッチ命令を分割することで、置換命令を減らすことができる。
図5は、依存関係解決処理のフローを示すフローチャートである。図5に示すように、依存関係解決部22は、分割再構成したパッチの終端まで処理を完了したか否かを判定し(ステップS31)、分割再構成したパッチの終端まで処理を完了した場合には、ステップS34へ進む。ここで、分割再構成したパッチとは、ステップS20の新しいパッチである。
一方、分割再構成したパッチの終端まで処理を完了していない場合には、依存関係解決部22は、分割再構成したパッチから1グループを読み出す(ステップS32)。そして、依存関係解決部22は、読み出したグループが書き込む先のブロック番号とデータの読み出し元のブロック番号のリストを組み合わせた表を作成し(ステップS33)、ステップS31に戻る。
また、依存関係解決部22は、ステップS31において分割再構成したパッチの終端まで処理を完了した場合には、作成した表に基づいてブロック(グループ)間の依存関係を示す木を作成する(ステップS34)。そして、依存関係解決部22は、木のリーフ層から上位層に向けて順番に階層単位でブロック番号を列に並べる(ステップS35)。
そして、依存関係解決部22は、列の先頭から1つブロック番号を読み出し(ステップS36)、列の最後まで処理を終了したか否かを判定する(ステップS37)。そして、列の最後まで処理を終了した場合には、依存関係解決部22は、依存関係解決処理を終了する。
一方、列の最後まで処理を終了していない場合には、依存関係解決部22は、ブロック番号に対応するグループを読み出し(ステップS38)、読み出したグループを配布パッチエリアの末尾に書き出す(ステップS39)。ここで、グループを配布パッチエリアに書き出すとは、グループ毎にグループ番号、グループに属するパッチ命令を書き出すことである。また、配布パッチエリアは、記憶部24の領域である。そして、依存関係解決部22は、ステップS36に戻る。
このように、依存関係解決部22がブロック間の依存関係を解決することで、センサ端末3は、パッチ適用の際に、旧版のデータのうち新版に移動されるデータを上書きされる前に新版に移動することができる。
次に、プログラム更新装置2の効果について図6及び図7を用いて説明する。図6は、作業領域のサイズに関する効果を説明するための図である。図6において、「加工」とは、パッチを分割、グループ化し依存関係を解決することである。図6に示すように、プログラム更新装置2により加工されたパッチ命令は、新版のブロック単位で更新を行う。したがって、必要な作業領域のサイズは1ブロックのサイズであり、プログラム更新装置2は作業領域を小さくすることができる。また、センサ端末3はパッチを先頭から実行すれば良く、センサ端末3の処理能力は少なくて良い。
図7は、パッチサイズに関する効果を説明するための図である。図7に示すように、パッチ命令の数は加工後に増加する。また、加工後のパッチにはグループ番号が含まれる。したがって、加工後のパッチに含まれるヘッダ情報は増加する。しかしながら、従来のブロック単位でのパッチ適用と比較すると、置換命令や追加命令のデータサイズが小さくなる。そして、増加したヘッダ情報の総和は、置換命令や追加命令のデータサイズよりはるかに小さい。したがって、プログラム更新装置2は、従来のブロック単位でのパッチ適用と比較すると、パッチサイズを小さくすることができる。
上述してきたように、実施例1では、パッチ命令の書き込み先が複数のブロックにまたがる場合に、分割部21aが、複数のブロックにまたがらないようにパッチ命令を分割する。そして、グループ化部21bが、書き込み先ブロックが同じであるパッチ命令をグループ化する。そして、特定部22aが、グループ間の依存関係を特定し、解決部22bが、グループ間の依存関係を解決してグループの並び替えを行う。したがって、プログラム更新装置2は、センサ端末3での作業領域のサイズを抑えつつパッチサイズを抑えることができる。
また、実施例1では、解決部22bは、グループ間の依存関係を表す木を依存先を依存元の上位階層として作成し、作成した木の下位層から上位層に向けた順番でグループの順番を決定する。したがって、解決部22bは、グループ間の依存関係を解決し、グループを正しく順番付けすることができる。
なお、実施例1では、プログラム更新装置2がパッチを加工する場合について説明したが、本発明はこれに限定されるものではなく、センサ端末3がパッチの加工を行う場合にも同様に適用することができる。
また、実施例1では、センサ端末3のファームを更新する場合について説明したが、本発明はこれに限定されるものではなく、情報処理装置、情報処理機器、携帯電話、スマートフォン等の他の装置のプログラムを更新する場合にも同様に適用することができる。
また、実施例1では、プログラム更新装置2が加工されたパッチをそのまま送信する場合について説明したが、本発明はこれに限定されるものではなく、プログラム更新装置2が加工されたパッチを圧縮して送る場合にも同様に適用することができる。
また、実施例1では、プログラム更新装置2について説明したが、プログラム更新装置2が有する構成をソフトウェアによって実現することで、同様の機能を有するプログラム更新プログラムを得ることができる。そこで、プログラム更新プログラムを実行するコンピュータについて説明する。
図8は、実施例1に係るプログラム更新プログラムを実行するコンピュータのハードウェア構成を示す図である。図8に示すように、コンピュータ40は、メインメモリ41と、CPU(Central Processing Unit)42と、LAN(Local Area Network)インタフェース43と、HDD(Hard Disk Drive)44とを有する。また、コンピュータ40は、スーパーIO(Input Output)45と、DVI(Digital Visual Interface)46と、ODD(Optical Disk Drive)47とを有する。
メインメモリ41は、プログラムやプログラムの実行途中結果などを記憶するメモリである。CPU42は、メインメモリ41からプログラムを読み出して実行する中央処理装置である。CPU42は、メモリコントローラを有するチップセットを含む。
LANインタフェース43は、コンピュータ40をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD44は、プログラムやデータを格納するディスク装置であり、スーパーIO45は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。DVI46は、液晶表示装置を接続するインタフェースであり、ODD47は、DVDの読み書きを行う装置である。
LANインタフェース43は、PCIエクスプレス(PCIe)によりCPU42に接続され、HDD44及びODD47は、SATA(Serial Advanced Technology Attachment)によりCPU42に接続される。スーパーIO45は、LPC(Low Pin Count)によりCPU42に接続される。
そして、コンピュータ40において実行されるプログラム更新プログラムは、DVDに記憶され、ODD47によってDVDから読み出されてコンピュータ40にインストールされる。あるいは、プログラム更新プログラムは、LANインタフェース43を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ40にインストールされる。そして、インストールされたプログラム更新プログラムは、HDD44に記憶され、メインメモリ41に読み出されてCPU42によって実行される。
ところで、パッチを適用中にセンサ端末が電力不足や何らかの不具合等で再起動することがある。そこで、実施例2では、再起動時にパッチを継続して実行するセンサ端末について説明する。
図9は、実施例2に係るセンサ端末による再起動対策を説明するための図である。図9に示すように、実施例に係るセンサ端末3aは、MCU10と、ストレージ5aと、EEPROM6aとを有する。
MCU10は、EEPROM6aからプログラムを読み出して実行する演算処理装置である。ストレージ5aは、フラッシュメモリ等の不揮発性記憶装置である。EEPROM6aは、MCU10で実行されるプログラムを記憶する不揮発性記憶装置であり、ファーム本体61、ファーム更新プログラム62及びブートローダ63を記憶する。
ファーム本体61は、更新されるプログラムである。ファーム更新プログラム62は、パッチを用いてファーム本体61を更新するプログラムである。ブートローダ63は、センサ端末3aが起動されると実行され、ファーム本体61又はファーム更新プログラム62を起動するプログラムである。
ストレージ5aは、ブロック番号領域51と、パッチ領域52と、作業領域53とを有する。ブロック番号領域51は、更新作業中のブロックの番号を記憶する領域である。ブロック番号領域51は、更新作業中でない場合には、負の数を記憶する。パッチ領域52は、加工済みパッチを記憶する領域である。作業領域53は、更新作業に使われる領域である。
ファーム更新プログラム62は、作業中のブロックの番号をブロック番号領域51に保存した後、作業領域53に更新対象ブロックの新しいバイナリコードを作成する。ブートローダ63は、動作開始時にブロック番号領域51を参照し、非負の整数が格納されていた場合は、パッチ適用中に再起動されたと判断し、ファーム本体61ではなく、ファーム更新プログラム62を起動する。起動されたファーム更新プログラム62は、ブロック番号領域51を参照し、ブロック番号領域51に格納された番号のブロックに対するパッチグループの適用から処理を再開する。
図10は、ブートローダ63による処理のフローを示すフローチャートである。図10に示すように、ブートローダ63は、ストレージ5aのブロック番号領域51を参照し(ステップS41)、ブロック番号の値が負であるか否かを判定する(ステップS42)。
そして、ブートローダ63は、ブロック番号の値が負である場合には、ファーム本体61を起動し(ステップS43)、ブロック番号の値が負でない場合には、ファーム更新プログラム62を起動する(ステップS44)。
図11は、ファーム更新プログラム62による処理のフローを示すフローチャートである。図11に示すように、ファーム更新プログラム62は、ストレージ5aのブロック番号領域51を参照し(ステップS51)、ブロック番号の値が負であるか否かを判定する(ステップS52)。
そして、ファーム更新プログラム62は、ブロック番号の値が負である場合には、パッチの先頭グループを読み出し(ステップS53)、負でない場合には、ブロック番号領域51に格納された番号のグループを読み出す(ステップS54)。
そして、ファーム更新プログラム62は、読み出したグループの各パッチ命令を処理し(ステップS55)、ストレージ5aのブロック番号領域51を更新する(ステップS56)。そして、ファーム更新プログラム62は、パッチの末尾まで処理を完了したか否かを判定し(ステップS57)、完了していない場合には、ステップS51に戻り、完了した場合には、ブロック番号領域51に−1を書き込む(ステップS58)。
上述してきたように、実施例2では、ブロック番号領域51に作業中のブロック番号を記憶し、ファーム更新プログラム62は、起動されると、ブロック番号領域51に記憶された番号のブロックから処理を再開する。したがって、センサ端末3aは、パッチ適用中に予期しない再起動が発生した場合にも、継続してパッチ適用を行うことができる。
1 プログラム更新システム
2 プログラム更新装置
3,3a センサ端末
4 広域網
5a,95 ストレージ
6a,96 EEPROM
10 MCU
21 分割再構成部
21a 分割部
21b グループ化部
22 依存関係解決部
22a 特定部
22b 解決部
23 送信部
31 受信部
32 記憶部
32a,52 パッチ領域
32b,53,97,98 作業領域
33 更新部
40 コンピュータ
41 メインメモリ
42 CPU
43 LANインタフェース
44 HDD
45 スーパーIO
46 DVI
47 ODD
51 ブロック番号領域
61,961 ファーム本体
62,962 ファーム更新プログラム
63,963 ブートローダ
94 パッチ
99 プロック#2用作業版

Claims (5)

  1. 更新前プログラム及び更新後プログラムを複数のブロックに分割し、更新前プログラムを更新後プログラムに更新する第1更新命令群のうちの更新命令が更新後プログラムにおいて複数のブロックにまたがる更新を行う場合に該更新がブロック毎に行われるよう該更新命令を分割して第2更新命令群を得る分割部と、
    前記分割部による分割により得られた第2更新命令群を更新後プログラムのブロック毎にグループ化するグループ化部と、
    前記グループ化部によるグループ化により得られた各グループと各グループが更新前プログラムのブロックのなかで依存するブロックとの関係を依存関係として特定する特定部と、
    前記特定部により特定された依存関係を解決し、前記第2更新命令群を実行する際のグループの順番を決定する解決部と
    を有することを特徴とするプログラム更新装置。
  2. 前記解決部は、前記依存関係に基づいてグループ間の木構造を依存先を依存元の上位階層として作成し、作成した木構造の下位層から上位層に向けた順番でグループの順番を決定することを特徴とする請求項1に記載のプログラム更新装置。
  3. コンピュータが、
    更新前プログラム及び更新後プログラムを複数のブロックに分割し、更新前プログラムを更新後プログラムに更新する第1更新命令群のうちの更新命令が更新後プログラムにおいて複数のブロックにまたがる更新を行う場合に該更新がブロック毎に行われるよう該更新命令を分割して第2更新命令群を得て、
    前記第2更新命令群を更新後プログラムのブロック毎にグループ化し、
    グループ化により得た各グループと各グループが更新前プログラムのブロックのなかで依存するブロックとの関係を依存関係として特定し、
    前記依存関係を解決し、前記第2更新命令群を実行する際のグループの順番を決定
    する処理を実行することを特徴とするプログラム更新方法。
  4. コンピュータに、
    更新前プログラム及び更新後プログラムを複数のブロックに分割し、更新前プログラムを更新後プログラムに更新する第1更新命令群のうちの更新命令が更新後プログラムにおいて複数のブロックにまたがる更新を行う場合に該更新がブロック毎に行われるよう該更新命令を分割して第2更新命令群を得て、
    前記第2更新命令群を更新後プログラムのブロック毎にグループ化し、
    グループ化により得た各グループと各グループが更新前プログラムのブロックのなかで依存するブロックとの関係を依存関係として特定し、
    前記依存関係を解決し、前記第2更新命令群を実行する際のグループの順番を決定
    する処理を実行させることを特徴とするプログラム更新プログラム。
  5. 端末装置と該端末装置の更新プログラムを作成するプログラム更新装置とを有するプログラム更新システムにおいて、
    前記プログラム更新装置は、
    更新前プログラム及び更新後プログラムを複数のブロックに分割し、更新前プログラムを更新後プログラムに更新する第1更新命令群のうちの更新命令が更新後プログラムにおいて複数のブロックにまたがる更新を行う場合に該更新がブロック毎に行われるよう該更新命令を分割して第2更新命令群を得る分割部と、
    前記分割部による分割により得られた第2更新命令群を更新後プログラムのブロック毎にグループ化するグループ化部と、
    前記グループ化部によるグループ化により得られた各グループと各グループが更新前プログラムのブロックのなかで依存するブロックとの関係を依存関係として特定する特定部と、
    前記特定部により特定された依存関係を解決し、前記第2更新命令群を実行する際のグループの順番を決定する解決部と
    を有し、
    前記端末装置は、
    前記解決部により決定されたグループ順に第2更新命令群を実行することでプログラムを更新する更新部
    を有することを特徴とするプログラム更新システム。
JP2017097947A 2017-05-17 2017-05-17 プログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システム Pending JP2018195046A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017097947A JP2018195046A (ja) 2017-05-17 2017-05-17 プログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017097947A JP2018195046A (ja) 2017-05-17 2017-05-17 プログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システム

Publications (1)

Publication Number Publication Date
JP2018195046A true JP2018195046A (ja) 2018-12-06

Family

ID=64571793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017097947A Pending JP2018195046A (ja) 2017-05-17 2017-05-17 プログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システム

Country Status (1)

Country Link
JP (1) JP2018195046A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113031988A (zh) * 2021-03-26 2021-06-25 北京字节跳动网络技术有限公司 应用程序更新方法、装置、设备和存储介质
WO2022097605A1 (ja) * 2020-11-06 2022-05-12 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
CN113031988B (zh) * 2021-03-26 2024-05-14 北京字节跳动网络技术有限公司 应用程序更新方法、装置、设备和存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022097605A1 (ja) * 2020-11-06 2022-05-12 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
CN113031988A (zh) * 2021-03-26 2021-06-25 北京字节跳动网络技术有限公司 应用程序更新方法、装置、设备和存储介质
CN113031988B (zh) * 2021-03-26 2024-05-14 北京字节跳动网络技术有限公司 应用程序更新方法、装置、设备和存储介质

Similar Documents

Publication Publication Date Title
US10019256B2 (en) Systems and methods for incremental software development
US8423991B2 (en) Embedded network device and firmware upgrading method
US9405630B2 (en) Methods and apparatus to perform site recovery of a virtual data center
US10592354B2 (en) Configurable recovery states
CN105487907A (zh) 一种差分包的制作方法和装置
WO2005020089A1 (en) Servicing a component-base software product
US10795688B2 (en) System and method for performing an image-based update
TW201502974A (zh) 可延伸韌體抽取技術
US10346150B2 (en) Computerized system and method for patching an application by separating executables and working data using different images
CN113238819B (zh) 一种适用于U-Boot的驱动文件动态加载方法及系统
US20190220272A1 (en) Binary image differential patching
CN108694049B (zh) 一种更新软件的方法和设备
CN104461621A (zh) 一种更新属性信息的方法及装置
CN114942933A (zh) 一种自动更新数据库的方法及相关装置
US20200341746A1 (en) Snapshot recovery states
WO2019041891A1 (zh) 升级包的生成方法及装置
JP2018195046A (ja) プログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システム
US20150355997A1 (en) Server-Platform Simulation Service
US10564894B2 (en) Free space pass-through
US20070079279A1 (en) Embedded device with software registry
US11620136B2 (en) Space snapshots
WO2015068206A1 (ja) 計算機、そのモジュールの修正方法
TWI807824B (zh) 具有自動升級功能的開發系統以及開發系統的自動升級方法
CN115756554B (zh) 版本升级方法及装置
CN107608699B (zh) 一种基于魔术分区的细粒度软件版本升级方法