JP5057887B2 - データ更新装置及びデータ更新方法及びデータ更新プログラム - Google Patents

データ更新装置及びデータ更新方法及びデータ更新プログラム Download PDF

Info

Publication number
JP5057887B2
JP5057887B2 JP2007216202A JP2007216202A JP5057887B2 JP 5057887 B2 JP5057887 B2 JP 5057887B2 JP 2007216202 A JP2007216202 A JP 2007216202A JP 2007216202 A JP2007216202 A JP 2007216202A JP 5057887 B2 JP5057887 B2 JP 5057887B2
Authority
JP
Japan
Prior art keywords
data
memory
new version
update
identifier
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.)
Expired - Fee Related
Application number
JP2007216202A
Other languages
English (en)
Other versions
JP2009048557A (ja
Inventor
聡 三井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007216202A priority Critical patent/JP5057887B2/ja
Publication of JP2009048557A publication Critical patent/JP2009048557A/ja
Application granted granted Critical
Publication of JP5057887B2 publication Critical patent/JP5057887B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、データ更新装置及びデータ更新方法及びデータ更新プログラムに関するものである。本発明は、特に、ソフトウェアの差分更新を行う情報処理装置(例えば携帯電話などの組込み情報機器)に関するものである。
携帯電話などの組込み機器では、機器内部の不揮発メモリ上に格納されたソフトウェアを、差分データを用いてアップデートするソフトウェア差分更新機能が提供されることが一般的である(例えば、特許文献1参照)。
差分データが何らかの手段によって不揮発メモリ上に格納されている状態を前提とすると、ソフトウェアをアップデートする手順は一般的には以下のようになる。
S1:不揮発メモリ上の(旧版)ソフトウェアのイメージと差分データから新版ソフトウェアのイメージをRAM(Random・Access・Memory)上に生成する。
S2:新版ソフトウェアのイメージを不揮発メモリ上に上書きする。
ソフトウェアのサイズが大きい場合には、ソフトウェアを複数の区画に予め分割しておき、区画ごとに上記手順S1とS2の処理を繰り返すことでソフトウェアのアップデートを実現する。
上記のような手順でソフトウェアをアップデートする場合において、上記手順S2の途中で電源が切断されたとする。この場合、不揮発メモリ上は途中まで書き換えられた状態となっている。旧版ソフトウェアのイメージが不揮発メモリ上に完全な形では残っていないので、差分データから新版ソフトウェアのイメージをもう一度生成することはできない。また、新版ソフトウェアのイメージも不揮発メモリ上では不完全な形でしか残っておらず、RAM上に生成しておいた新版ソフトウェアのイメージも電源切断によって失われている。このようにアップデートの途中で電源切断が発生すると、アップデート処理を継続することができない可能性がある。
アップデート処理を継続できるようにするために、例えば、上記手順S1とS2の間に上書き対象の旧版ソフトウェアのイメージ、もしくは生成した新版ソフトウェアのイメージのいずれか一方を不揮発メモリ上にバックアップし、どの区画を更新中であるかといった情報を不揮発メモリ上に記録しておくことが考えられる。このようにすることで、電源切断が発生しても新版ソフトウェアのイメージを再度取得することができるので、アップデート処理を継続することができる。
具体的な例として、特許文献2では上書き対象区画とその直前区画の旧版ソフトウェアのイメージから新版ソフトウェアのイメージを生成できるような構成において、電源切断が発生してもアップデート処理を継続する発明が開示されている。この文献における開示内容では構成がやや複雑になっているものの、基本的には上記のようにバックアップと上書きを前提とした処理となっている。
特開2005−196747号公報 特開2004−199121号公報
上記のように、電源切断が発生してもアップデート処理が継続できることを保証するためには、従来の技術ではバックアップと上書きの2回の書込みを不揮発メモリへ行う必要があるため、アップデート処理に時間がかかるという課題があった。
特に、NOR・Flash・ROM(NOR型のフラッシュメモリ)をソフトウェア(全体もしくは一部)の格納先の不揮発メモリとしている機器を想定すると(他の種類の不揮発メモリも内蔵していてよいが、バックアップなどの用途ではNOR・Flash・ROMしか使用できないことを想定する)、従来の技術ではバックアップと上書きの2回の書込みをNOR・Flash・ROMへ行うことになる。一般的にソフトウェアのアップデート処理に要する時間の大半はNOR・Flash・ROMへの書込み時間が占めるので、アップデート処理時間を短くするためには書込み回数をできるだけ減らすことが望ましい。
本発明は、差分データを用いたソフトウェアのアップデート処理を効率的に行うこと、アップデート処理に要する時間を短くすることなどを目的とする。特に、NOR・Flash・ROMを用いたソフトウェア差分更新機能において、電源切断が発生してもアップデート処理が継続できるようにしながらも、NOR・Flash・ROMへの書込み回数を少なくすることでアップデート処理時間を短くすることを目的とする。
本発明の一の態様に係るデータ更新装置は、
第1のメモリ上に設けられたn+1個(n>1)の記憶領域のうち、n個の記憶領域の各々に、旧版データをn分割してなる1〜n番目の旧版分割データを1つずつ格納し、残り1個の記憶領域を予備領域として設定し、1〜n番目の旧版分割データが格納された記憶領域の識別子を1〜n番目の旧版識別子として第2のメモリに格納しておき、前記旧版データを新版データに更新するデータ更新装置であって、
前記旧版データと前記新版データとの差分を示す差分情報を入力する差分入力部と、
前記第2のメモリに格納された1〜n番目の旧版識別子で特定される記憶領域から1〜n番目の旧版分割データを順次読み取り、i番目(i=1,・・・,n)の旧版分割データを読み取る度に、前記差分入力部により入力された差分情報に基づいて、i番目の新版分割データを生成する新版生成部と、
前記新版生成部によりi番目の新版分割データが生成される度に、前記予備領域にi番目の新版分割データを書込み、i番目の旧版分割データが格納された記憶領域を前記予備領域として設定し、i番目の新版分割データが格納された記憶領域の識別子をi番目の新版識別子として前記第2のメモリに書込む書込み処理部とを備えることを特徴とする。
本発明の一の態様によれば、データ更新装置において、新版生成部が、第2のメモリに格納された1〜n番目の旧版識別子で特定される記憶領域から1〜n番目の旧版分割データを順次読み取り、i番目の旧版分割データを読み取る度に、差分情報に基づいて、i番目の新版分割データを生成し、書込み処理部が、新版生成部によりi番目の新版分割データが生成される度に、予備領域にi番目の新版分割データを書込み、i番目の旧版分割データが格納された記憶領域を予備領域として設定し、i番目の新版分割データが格納された記憶領域の識別子をi番目の新版識別子として第2のメモリに書込むことにより、差分情報を用いて旧版データを新版データに更新する処理を効率的に行うことが可能となる。
以下、本発明の実施の形態について、図を用いて説明する。
実施の形態1.
最初に本実施の形態に係る情報処理装置100(データ更新装置)の構成について、図1を用いて説明する。以下で説明するのは本実施の形態に直接的に関わる構成要素だけであり、説明したもの以外の構成要素が存在することは言うまでもない。
図1は、情報処理装置100の構成を示すブロック図である。
情報処理装置100は、例えば携帯電話などの組込み情報機器である。図示していないが、情報処理装置100は1つ以上のCPU(Central・Processing・Unit)をもち、CPUは情報処理装置100が本来目的とする機能(データの抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示など)を達成するために用いられる。アップデート処理においては、1つ以上のCPUのうち、少なくとも1つが用いられる。CPUはMMU(Memory・Management・Unit)をもち、MMUは上記機能達成のためにRAM121上に格納される変換テーブルに基づいて論理アドレスと物理アドレスの変換を行う。ただし、アップデート処理においてはMMUを使用しなくてよい。情報処理装置100は上記RAM121をもち、RAM121は上記機能達成のために用いられるが、アップデート処理においては一時的に各種データを格納するためにも用いられる。
情報処理装置100は更新対象ソフトウェア(の一部)を格納する不揮発メモリ122(第1のメモリ、第2のメモリ、第3のメモリ)をもつ。本実施の形態では、不揮発メモリ122をNOR・Flash・ROMとする。更新対象ソフトウェアは、上記MMUを前提として、このNOR・Flash・ROM上に格納されている。本実施の形態において、不揮発メモリ122を、NAND・Flash・ROM(NAND型のフラッシュメモリ)など、他の種類の不揮発メモリ、あるいは揮発メモリに置き換えることもできるが、後述するように、NOR・Flash・ROMとした方が、より顕著な効果を奏する。
また、情報処理装置100は通信機能を有し、アップデート処理においては機器外部から差分データ111(差分情報)を取得するために通信機能を用いる。通信機能には、例えばUSB(Universal・Serial・Bus)などの有線通信、Bluetooth(登録商標)などの無線通信、メモリカードなどの外部記録媒体などが相当する。情報処理装置100は不揮発メモリ123も有し、通信機能により取得した差分データ111を、この不揮発メモリ123に格納する。
ここで、本実施の形態に係る更新対象ソフトウェアと差分データ111について説明する。更新対象ソフトウェアはXIP(eXecute・In・Place)形式であり、複数の区画に分割して扱われる。各区画には、更新対象ソフトウェアの更新前のイメージである旧版ソフトウェアイメージ112(旧版分割データ)が格納される。簡単のため、本実施の形態では、各区画のサイズは同一とする。具体的には、NOR・Flash・ROMにおける消去単位(ブロック)サイズの整数倍サイズとする。好ましくはMMUのマッピング単位と同一とする。差分データ111は更新対象ソフトウェアの更新後のイメージである新版ソフトウェアイメージ113(新版分割データ)を区画ごとに生成するのに必要な情報を格納しており、各区画の新版ソフトウェアイメージ113を生成する際に少なくとも旧版ソフトウェアイメージ112の同区画を参照する必要がある。
図1において、情報処理装置100は、差分受信部101(差分入力部)、新版生成部102、書込み処理部103、再開処理部104、ソフトウェア実行部105を備える。
差分受信部101は通信機能を用いて差分データ111を機器外部から取得し、差分データ111を不揮発メモリ123に格納する。この不揮発メモリ123はソフトウェアを格納する不揮発メモリ122と同一であってもよいし、別の不揮発メモリであってもよい。
新版生成部102は一区画分の新版ソフトウェアイメージ113をRAM121上に生成する。ここで、差分データ111を解析するなどして新版ソフトウェアイメージ113と不揮発メモリ122上の旧版ソフトウェアイメージ112の内容が全く同一であることが分かった場合には、新版ソフトウェアイメージ113をRAM121上には生成しないようにすることも可能である。また、RAM121上には生成するが、内容が全く同一であることを書込み処理部103に伝えることも可能である。
書込み処理部103は新版生成部102が生成した一区画分の新版ソフトウェアイメージ113を不揮発メモリ122に書込む。前述した通り、不揮発メモリ122は更新対象の旧版ソフトウェアイメージ112を格納するための書き換え可能な不揮発メモリであり、具体的にはNOR・Flash・ROMである。新版生成部102が新版ソフトウェアイメージ113を生成しなかった場合や、新版ソフトウェアイメージ113が旧版ソフトウェアイメージ112と全く同じ内容である場合には、書込み処理部103は不揮発メモリ122への書込みは行わなくてよい。
再開処理部104は電源切断からの復帰後にアップデート処理を再開するための準備を行う。再開処理部104での処理が完了すると、新版生成部102が処理を引き継ぐ。書込み処理部103が処理を引き継ぐ場合があってもよい。
ソフトウェア実行部105はMMUを用いて更新対象ソフトウェアを不揮発メモリ122(第1のメモリ)上で直接実行する。
上記のように、本実施の形態では、ソフトウェアをアップデート処理の対象としている(即ち、旧版ソフトウェアを新版ソフトウェアに更新する)が、ソフトウェア以外の何らかのデータを記録したファイルやその他のデータをアップデート処理の対象としても構わない(即ち、旧版データを新版データに更新することができる)。
図2は、本実施の形態における電源切断を伴わない場合の情報処理装置100の処理手順の概要を示すフローチャートである。
最初に手順S201(差分入力手順)で差分受信部101が機器外部から差分データ111を取得して不揮発メモリ123に格納する。手順S201を開始する契機としては例えばユーザからの指示、携帯電話網からの指示などが考えられる。手順S201が完了すると、旧版ソフトウェアイメージ112の各区画に対して手順S202(新版生成手順)と手順S203(書込み処理手順)が繰返し行われる。この繰返し処理は手順S201の完了直後に開始してもよいし、予め設定しておいた時刻に開始してもよい。手順S202では新版生成部102が新版ソフトウェアイメージ113の生成を行い、手順S203では書込み処理部103が新版ソフトウェアイメージ113の書込みを行う。上記の繰り返し処理が完了するとアップデート処理は終了となる。
なお、手順S201では差分データ111を一括で取得し、格納することとしているが、例えば各区画に対する(部分)差分データ111を繰返し処理の中で毎回取得し、格納するようにしてもよい。
図3は、本実施の形態における電源切断から復帰する場合の情報処理装置100の処理手順の概要を示すフローチャートである。
アップデート処理の途中で電源切断があった場合、電源切断から復帰すると最初に再開処理部104が手順S211(再開処理手順)でどの区画まで新版ソフトウェアイメージ113の書込みが完了しているかを判定するなど、再開に必要な処理を行う。そして、書込みが完了している区画の次の区画以降に対して、手順S212(新版生成手順)と手順S213(書込み処理手順)が繰返し行われる。手順S212と手順S213はそれぞれ手順S202、手順S203と同じである。残りの区画に対しての繰返し処理が完了するとアップデート処理は終了となる。
図4は、アップデート処理開始前の不揮発メモリ122(第1のメモリ)上における旧版ソフトウェアイメージ112の格納状態の一例を示す概念図である。
この例では、不揮発メモリ122上には4つの物理区画(記憶領域)1〜4が存在し、ソフトウェアは3つの論理区画A、B、Cで構成される。論理区画Aは物理区画2に、論理区画Bは物理区画3に、論理区画Cは物理区画4に割り当てられている。物理区画1には論理区画が割り当てられず、予備区画(予備領域)となっている。図4のように、本実施の形態では物理区画数は論理区画数より1以上大きくなければならない(予備区画が1つ以上存在する必要がある)。また、図4では各区画は4つのブロックから構成される。ここでブロックとは、NOR・Flash・ROMの消去単位を示している。
物理区画1〜4の先頭物理アドレスはそれぞれ0x80000000、0x80040000、0x80080000、0x800C0000であり、物理区画1〜4のサイズはいずれも0x40000となっている。論理区画A〜Cの先頭論理アドレスはそれぞれ0x00000000、0x00040000、0x00080000となっている。
図5は、図4の論理アドレスを物理アドレスに変換するための変換テーブル301、論理区画の識別子(以下、「論理区画番号」という)を物理区画の識別子(以下、「物理区画番号」という)に変換するための変換テーブル302の一例を示す図である。
変換テーブル301はRAM121上に格納された状態でMMUから使用されるが、その元となる情報はいずれかの不揮発メモリ(第2のメモリ)(以下では、不揮発メモリ122とする)上に格納されている必要があり、ソフトウェアの起動処理時にソフトウェア実行部105によってRAM121へ展開される。RAM121上の変換テーブル301はMMUの規約に従う必要があるが、不揮発メモリ122上の変換テーブル302は情報処理装置100のソフトウェア差分更新機能で独自に定義できる。
RAM121上の変換テーブル301では論理アドレスと物理アドレスの対応関係が記述されている。不揮発メモリ122上の変換テーブル302では論理区画と物理区画の対応関係が記述されており、変換テーブル302に現れない物理区画が予備区画として扱われる(図5の例では、変換テーブル302において物理区画1に対応する論理区画が記述されていないため、物理区画1が予備区画であることが分かる)。
アップデート処理中には書込み処理部103が不揮発メモリ122上の変換テーブル302の内容を更新するが、不揮発メモリ122上の変換テーブル302を上書きするのではなく、不揮発メモリ122上の古い変換テーブル302(以下、「旧変換テーブル」という)は残しておいて不揮発メモリ122上の別領域に新しい変換テーブル302(以下、「新変換テーブル」という)を順次生成する。全ての論理区画に対する処理が完了すると新変換テーブルの内容で旧変換テーブルの内容を更新する。旧変換テーブルと新変換テーブルの格納位置を固定すれば実装が容易になる。
以下、情報処理装置100の処理手順(情報処理装置100で実行されるアップデート処理プログラムの処理フロー)の詳細について説明する。
まず、本実施の形態における新版生成部102の処理手順を説明する。
新版生成部102はどの論理区画に対する新版ソフトウェアイメージ113を生成するかについての情報を受け取って処理を開始する。差分受信部101の後に処理を行う場合は繰返し処理の1回目であるため、例えば差分受信部101から先頭の論理区画が対象となることを示す情報を受け取る。繰返し処理の2回目以降には、例えば書込み処理部103から論理区画を指定する情報を受け取る。電源切断からの復帰時には、例えば再開処理部104から論理区画を指定する情報を受け取る。
新版生成部102は指定された論理区画(以下、「対象論理区画」という)に相当する部分の差分データ111と、少なくとも対象論理区画にその時点で存在する旧版ソフトウェアイメージ112を参照して当該論理区画の新版ソフトウェアイメージ113を生成する。ただし、参照先としては、対象論理区画より前に存在する新版ソフトウェアイメージ113や、対象論理区画より後ろに存在する旧版ソフトウェアイメージ112などを参照してもよい。
また、新版生成部102が差分データ111を解析するなどして対象論理区画の新版ソフトウェアイメージ113と不揮発メモリ122(第1のメモリ)上の旧版ソフトウェアイメージ112の内容が全く同一であることが分かった場合には、新版ソフトウェアイメージ113をRAM121上には生成しないようにすることも可能である。この場合は書込み処理部103に対して内容が全く同一であることを伝える。また、RAM121上に生成した上で内容が全く同一であることを伝えてもよい。
図6は、本実施の形態における書込み処理部103の処理手順を示すフローチャートである。
書込み処理部103は最初に対象論理区画の新版ソフトウェアイメージ113と旧版ソフトウェアイメージ112が同一であるかどうかを手順S401で判定する。この判定には、書込み処理部103が新版生成部102から受け取った情報(前述したように、新版生成部102が差分データ111を解析した結果など)を用いてもよいし、書込み処理部103が新版生成部102によってRAM121上に生成された新版ソフトウェアイメージ113と不揮発メモリ122上の旧版ソフトウェアイメージ112を比較するなどしてもよい。
手順S401での判定の結果、新版ソフトウェアイメージ113と旧版ソフトウェアイメージ112が異なる場合、手順S402において予備区画の位置を特定した上で新版ソフトウェアイメージ113を予備区画に書込む。予備区画を特定するためには、例えば旧変換テーブルからどの論理区画にも割り当てられていない物理区画を探してもよいし、いずれかの不揮発メモリ(第3のメモリ)(例えば、不揮発メモリ122)の領域上に予備区画の情報を管理しておき、その情報を参照してもよい。なお、予備区画は不揮発メモリ122上に存在し、不揮発メモリ122はNOR・Flash・ROMなので、新版ソフトウェアイメージ113の書込みに先立ってブロックごとに旧版ソフトウェアイメージ112の消去を行う必要があるのは言うまでもない(旧版ソフトウェアイメージ112が予備区画に格納されている場合)。
手順S403で書込み処理部103は対象論理区画分の変換レコードを新変換テーブルに追記する。予備区画に新版ソフトウェアイメージ113を書込んだ後の場合には(手順S402から手順S403に進んだ場合)、当該論理区画の論理区画番号と書込み先である予備区画の物理区画番号とを対応付けて変換レコードに書込む。新版ソフトウェアイメージ113と旧版ソフトウェアイメージ112が同一であった場合には(手順S401から手順S403に進んだ場合)、旧変換テーブルの対象論理区画分の変換レコードをそのまま新変換テーブルにコピーする。
手順S404で書込み処理部103は現在処理対象としている論理区画が最終論理区画であるかどうかを判定する。最終論理区画を特定するために書込み処理部103が参照する情報は、例えば予め内部情報としてアップデート処理プログラムがもっていてもよいし、差分データ111内に入力情報として更新対象ソフトウェアの論理区画数が格納されていてもよい。
対象論理区画が最終論理区画であった場合、手順S406で書込み処理部103は新変換テーブルの内容を旧変換テーブルに上書きする。これで図2及び図3で示した繰返し処理が完了する。なお、変換テーブルの上書きによって、アップデート処理完了後の通常起動時には新変換テーブルの内容に従ってRAM121上の変換テーブルが構築されるようになる。
対象論理区画が最終論理区画でなかった場合、次の論理区画に対する新版生成部102の処理を開始するため、手順S405で書込み処理部103は新版生成部102に次の論理区画を対象論理区画として指定し、書込み処理部103の処理を終了する。
次に、本実施の形態における再開処理部104の処理手順を説明する。
再開処理部104は新変換テーブルの内容を解析して、どの論理区画からアップデート処理を再開するかを判定し、新版生成部102にその情報を渡す。詳細には新変換テーブルにどの論理区画まで変換レコードが書込まれているかで再開時の対象論理区画(以下、「再開論理区画」という)を判定する。図4及び図5の例では、新変換テーブルに論理区画Aの変換レコードのみが書込まれている場合には再開論理区画はBとなる。
以下、情報処理装置100の動作例を、図7〜図10を用いて説明する。
図7は、電源切断を伴わない場合の動作例を示している。
状態501は差分受信部101による差分データ111の取得、格納が終わった状態を示している。旧版ソフトウェアイメージ112の論理区画Aが不揮発メモリ122の物理区画2に、論理区画Bが物理区画3に、論理区画Cが物理区画4に格納されており、その内容が不揮発メモリ122(第2のメモリ)上の旧変換テーブルに格納されている。旧変換テーブルの内容から物理区画1が予備区画であることが分かる。また不揮発メモリ123内に差分データ111が格納されている。
状態502は新版生成部102によって論理区画Aの新版ソフトウェアイメージ113が生成された後の状態を示している。この例では、新版生成部102は論理区画Aの旧版ソフトウェアイメージ112と差分データ111を参照して新版ソフトウェアイメージ113をRAM121上に生成している。
状態503は書込み処理部103によって予備区画である物理区画1に論理区画Aの新版ソフトウェアイメージ113が書込まれた後の状態である。この時点では新変換テーブルが更新されていないので、物理区画1は予備区画扱いのままである。
状態504は書込み処理部103が新変換テーブルに論理区画Aに対する変換レコード(論理区画Aと物理区画1を対応付けている)を書込んだ後の状態である。この書込みによって、論理区画Aの旧版ソフトウェアイメージ112を格納している物理区画2が予備区画となる。
状態505は新版生成部102及び書込み処理部103によって論理区画Bに対する処理が完了した後の状態である。ここでは論理区画Bのソフトウェアイメージには変更がないことを想定している。即ち、論理区画Bの新版ソフトウェアイメージ113は旧版ソフトウェアイメージ112と同一である。そのため、新版生成部102では新版ソフトウェアイメージ113をRAM121上に生成せず、書込み処理部103は旧変換テーブルの論理区画Bに対する変換レコード(論理区画Bと物理区画3を対応付けている)を新変換テーブルにコピーしている。
状態506,507,508への遷移は論理区画Cに対するもので、そこに至る処理内容は論理区画Aに対する状態502,503,504への遷移時の処理内容と同様である。論理区画Cは最終論理区画であるため、状態508になった後は、書込み処理部103が新変換テーブルの内容で旧変換テーブルを上書きし、アップデート処理が完了する。この結果、情報処理装置100の次回起動時には新版ソフトウェアイメージ113で動作する。即ち、ソフトウェア実行部105は新版ソフトウェアを実行する。
以上、本実施の形態における情報処理装置100の動作例について説明したが、以下では、これを、バックアップを用いる従来技術と比較する。
バックアップを用いる場合には、例えば論理区画Aに対する処理では、新版ソフトウェアイメージ113を生成後、それを予備区画にバックアップとして書込んだ後に物理区画2に新版ソフトウェアイメージ113を書込むことになる。したがって、本実施の形態では1つの論理区画に対して必要な書込みは1回であるのに対し、バックアップを用いる場合には書込みが2回必要となる。
バックアップを用いる場合には変換テーブルへの書込みは必要ないものの、本実施の形態で新変換テーブルへ書込むデータは、更新対象ソフトウェアのサイズにかかわらず、データ量が少なくて済む上に、不揮発メモリ122には追記するだけでよい。NOR・Flash・ROMはその特性上、上書きには時間を要するが追記は短い時間でできる。また、バックアップを用いる場合には変換テーブルは必要ないが、少なくともどの論理区画まで更新が完了したかどうかについての情報を不揮発メモリ上に記録する必要があるので、本実施の形態と小さいデータ量の書込みの回数にはそれほど違いがない。
このように、バックアップを用いる従来技術と比較すると、本実施の形態では短い時間でアップデート処理を行うことができるという利点がある。
図8は、電源切断後の再開処理での動作例を示している。
この例では、図7の状態503になる直前まで、つまり予備区画である物理区画1に論理区画Aの新版ソフトウェアイメージ113が完全には書込まれていない状態で電源切断が発生した場合を考える。
この場合、電源復帰直後の状態は図8の状態511のようになる。RAM121上のデータは電源切断によって消失するので、状態511では、状態502で生成されていた論理区画Aの新版ソフトウェアイメージ113は消失している。この状態に対して再開処理部104は再開論理区画の特定を行う。新変換テーブルには変換レコードが全く存在しないため、再開論理区画は論理区画Aであることが分かる。この情報を受けて新版生成部102が論理区画Aの新版ソフトウェアイメージ113をRAM121上に生成する。このとき、参照する必要のある論理区画Aの旧版ソフトウェアイメージ112は物理区画2上に残っているので(旧版ソフトウェアイメージ112の位置は旧変換テーブルから判断できる)、新版生成部102は新版ソフトウェアイメージ113を問題なく生成することができ、その結果、状態512に遷移する。状態512は図7の状態502と同様であるから、これ以降の動作は図7の状態503以降と同じになる。
図9は、電源切断後の再開処理での別の動作例を示している。
この例では、図7の状態504になる直前まで、つまり予備区画である物理区画1に論理区画Aの新版ソフトウェアイメージ113が書込まれているが、新変換テーブルに論理区画Aに対する変換レコードがない状態で電源切断が発生した場合を考える。
この場合、電源復帰直後の状態は図9の状態521のようになる。RAM121上のデータは電源切断によって消失するので、状態521でも、状態502で生成されていた論理区画Aの新版ソフトウェアイメージ113は消失している。この状態に対して再開処理部104が再開論理区画の特定を行うと、再開論理区画は論理区画Aとなる。このため、新版生成部102は論理区画Aの新版ソフトウェアイメージ113をRAM121上に生成し、その結果、状態522に遷移する。そして、書込み処理部103が既に論理区画Aの新版ソフトウェアイメージ113の書込まれた物理区画1に再度新版ソフトウェアイメージ113を書込み、その結果、状態523に遷移する。状態523は図7の状態503と同様であるから、これ以降の動作は図7の状態504以降と同じになる。
図10は、電源切断後の再開処理での別の動作例を示している。
この例では、図7の状態505になる直前まで、つまり論理区画Aの更新は完了して論理区画Bに対する変換レコードが新変換テーブルに未だ追記されていない状態で電源切断が発生した場合を考える。
この場合、電源復帰直後の状態は図10の状態531のようになる。この状態では新変換テーブルに論理区画Aに対する変換レコードが書込まれているので、再開処理部104が再開論理区画の特定を行うと、再開論理区画は論理区画Bとなる。論理区画Bには変更がないので、新版生成部102と書込み処理部103の処理の結果、状態532に遷移する。これ以降の動作は図7の状態506以降と同じになる。
図示していないが、図7の状態507になる直前、つまり予備区画である物理区画2に論理区画Cの新版ソフトウェアイメージ113が完全には書込まれていない状態で電源切断が発生した場合の動作は、状態503になる直前までの動作とほぼ同じである。主な違いは、新変換テーブルに他の論理区画に対する変換レコードが存在するため再開論理区画が次の論理区画である論理区画Cと判定されることや予備区画の位置が物理区画2であること(これは新変換テーブルの論理区画A,Bに対する変換レコードや旧変換テーブルの論理区画Cに対する変換レコードから判定できる)である。同様に、図7の状態508になる直前で電源切断が発生した場合の動作は、状態504になる直前までの動作とほぼ同じである。
以上のように、本実施の形態によれば、アップデート処理のどのタイミングで電源切断が発生しても復帰後にアップデート処理を正常に再開できる。また、バックアップ処理が不要であることから、電源切断が発生しない通常のケースでの不揮発メモリに対する書込み回数がバックアップを行う場合よりも少なくなり、結果としてアップデート処理時間が短くなる。
以上説明した通り、本実施の形態では、旧版データ(更新対象ソフトウェア)を新版データに更新するデータ更新装置(情報処理装置100)において、第1のメモリ(不揮発メモリ122)上にn+1個(n>1)(上記例では4個)の記憶領域(上記例では物理区画1〜4)が設けられる。n+1個の記憶領域のうち、n個(上記例では3個)の記憶領域の各々に、旧版データをn分割(上記例では3分割)してなる1〜n番目の旧版分割データ(上記例では論理区画A〜Cの旧版ソフトウェアイメージ112)が1つずつ格納される。残り1個の記憶領域が予備領域(予備区画)として設定される。1〜n番目の旧版分割データが格納された記憶領域の識別子(物理区画番号)が1〜n番目の旧版識別子(上記例では旧変換テーブルの変換レコード)として第2のメモリ(不揮発メモリ122)に格納される。
差分入力部(差分受信部101)は、旧版データと新版データとの差分を示す差分情報(差分データ111)を入力する。
新版生成部は、第2のメモリに格納された1〜n番目の旧版識別子で特定される記憶領域から1〜n番目の旧版分割データを順次読み取り、i番目(i=1,・・・,n)の旧版分割データを読み取る度に、差分入力部により入力された差分情報に基づいて、i番目の新版分割データ(上記例では論理区画A〜Cの新版ソフトウェアイメージ113)を生成する。
書込み処理部は、新版生成部によりi番目の新版分割データが生成される度に、予備領域にi番目の新版分割データを書込み、i番目の旧版分割データが格納された記憶領域を予備領域として設定し、i番目の新版分割データが格納された記憶領域の識別子をi番目の新版識別子(上記例では新変換テーブルの変換レコード)として第2のメモリに書込む。
再開処理部は、新版生成部又は書込み処理部による処理の途中で電源が切断され、再び電源が投入されたときには、第2のメモリに格納されていない新版識別子を確認し、第2のメモリに格納されていない新版識別子がj〜n番目(1≦j≦n)の新版識別子の場合には、新版生成部に、i=j(再開論理区画の論理区画番号)として処理を再開させる。
書込み処理部は、i番目の旧版分割データとi番目の新版分割データとに差分がない場合には、予備領域にi番目の新版分割データを書込まず、i番目の旧版分割データが格納された記憶領域を予備領域として設定せずに、i番目の旧版分割データが格納された記憶領域の識別子をi番目の新版識別子として第2のメモリに書込んでもよい。
新版生成部は、i番目の旧版分割データとi番目の新版分割データとに差分がない場合には、i番目の新版分割データを生成せずに、書込み処理部に、i番目の旧版分割データが格納された記憶領域の識別子をi番目の新版識別子として第2のメモリに書込ませてもよい。
書込み処理部は、新版生成部によりi番目の新版分割データが生成される度に、第2のメモリに格納された1〜n番目の旧版識別子に基づいて、予備領域を特定してもよいし、第3のメモリ(不揮発メモリ122)に予備領域の識別子が格納される場合には、予備領域を設定する度に、第3のメモリに格納された予備領域の識別子を上書きし、新版生成部によりi番目の新版分割データが生成される度に、第3のメモリに格納された予備領域の識別子で予備領域を特定してもよい。
また、前述した通り、本実施の形態に係る組込み情報機器は、
ソフトウェアを不揮発メモリ上に格納し、MMUを介して前記ソフトウェアを不揮発メモリ上で直接実行する組込み情報機器であって、
ソフトウェアを新版に更新するための差分データを組込み情報機器の外部から取得して不揮発メモリ上に格納する差分受信部と、
ソフトウェアが同一サイズの複数区画から構成されるという前提のもとで、一区画分の新版ソフトウェアを、差分データの一部と不揮発メモリ上のソフトウェアから生成する新版生成部と、
生成された一区画分の新版ソフトウェアが旧版ソフトウェアから更新されていない場合には新版ソフトウェア書込みを行わず当該区画の識別情報を不揮発メモリ上に記録し、更新されている場合には前記一区画分の新版ソフトウェアを不揮発メモリ上に用意された予備区画に書込み、MMUが前記予備区画を新版ソフトウェアにおける当該区画とし、旧版ソフトウェアでは当該区画であった区画を予備区画とするように設定するための情報を不揮発メモリ上に記録し、当該区画の識別情報を不揮発メモリ上に記録する書込み処理部と、
組込み情報機器での電源切断発生からの復帰時に動作し、不揮発メモリ上に記録された区画の識別情報をチェックして、次に新版生成部が処理の対象とする区画を選択する再開処理部とを備えることを特徴とする。
また、新版生成部は、新版ソフトウェアの一区画が旧版ソフトウェアから更新されないと判定した場合には当該区画分の新版ソフトウェアを生成しないことを特徴とする。
実施の形態2.
本実施の形態について、主に実施の形態1との差異を説明する。
本実施の形態では、区画内のブロック単位で更新の有無を見ることで、書込み回数を少なくすることができる。
以下、情報処理装置100の処理手順の詳細について説明する。
まず、本実施の形態における新版生成部102の処理手順を説明する。
新版生成部102は対象論理区画の新版ソフトウェアイメージ113を生成する際に、当該論理区画内の各ブロックで更新が発生しているかどうかについての情報を生成する。そして、この情報を書込み処理部103に引き渡す。また、RAM121上に生成する新版ソフトウェアイメージ113に関しても、全体を生成するか全く生成しないかの2択ではなく、新版ソフトウェアイメージ113のうち、更新が発生しているブロック(以下、「更新ブロック」という)に対応する部分のみを生成するという選択肢を用意してもよい。
図11は、本実施の形態における書込み処理部103の処理手順を示すフローチャートである。
手順S601は図6の手順S401と同様である。
手順S601での判定の結果、新版ソフトウェアイメージ113と旧版ソフトウェアイメージ112が異なる場合、書込み処理部103は手順S602で更新ブロック数が一定値(閾値)以上であるかどうかを判定する。この一定値は例えば区画内ブロック数の半分とする。即ち、1つの区画の容量を不揮発メモリ122(第1のメモリ)の書込み単位で割った数の半分とする。
手順S602での判定の結果、更新ブロック数が一定値以上である場合、図6の手順S402と同様に、書込み処理部103は手順S603で予備区画に新版ソフトウェアイメージ113を書込む。ここで、新版生成部102が新版ソフトウェアイメージ113のうち、更新ブロックに対応する部分しか生成していない場合、更新ブロック以外のブロックの予備区画への書込みは不揮発メモリ122上の旧版ソフトウェアイメージ112を参照して行う。
手順S602での判定の結果、更新ブロック数が一定値未満の場合、書込み処理部103は手順S604、S605、S606でバックアップと上書きによって対象区画の更新を行う。最初に手順S604では、更新ブロックのみを予備区画に書込む(バックアップする)。予備区画内での書込み位置に関しては、予備区画内の先頭ブロックから順に書込んでもよいし、対象区画内の位置と同じ位置に書込んでもよい。次に手順S605では、更新ブロックの識別子(以下、「更新ブロック番号」という)と対象論理区画の論理区画番号をセットにしたバックアップレコードをいずれかの不揮発メモリ(第3のメモリ)(以下では、不揮発メモリ122とする)上のバックアップ情報に記録する。そして手順S606で、更新ブロックの上書きを行う。
手順S607で書込み処理部103は対象論理区画分の変換レコードを新変換テーブルに追記する。予備区画に新版ソフトウェアイメージ113を書込んだ後の場合には(手順S603から手順S607に進んだ場合)、当該論理区画の論理区画番号と書込み先である予備区画の物理区画番号とを対応付けて変換レコードに書込む。新版ソフトウェアイメージ113と旧版ソフトウェアイメージ112が同一であった場合(手順S601から手順S607に進んだ場合)、及び、更新ブロックを上書きした場合(手順S606から手順S607に進んだ場合)には、旧変換テーブルの対象論理区画分の変換レコードをそのまま新変換テーブルにコピーする。
手順S608、S609、S610はそれぞれ図6の手順S404、S405、S406と同様である。
図12は、本実施の形態における再開処理部104の処理手順を示すフローチャートである。
再開処理部104は最初に手順S611で新変換テーブルの内容から再開論理区画を特定する。特定の方法は実施の形態1と同様である。再開処理部104は次に手順S612でバックアップ情報内に再開論理区画に対応するバックアップレコードがあるかどうかをチェックする。バックアップレコードが存在しない場合、再開処理部104は手順S613で再開論理区画の情報を新版生成部102に渡すことでアップデート処理を再開する。バックアップレコードが存在する場合、予備区画上に新版ソフトウェアイメージ113の一部(更新ブロック)がバックアップされているので、再開処理部104は手順S614で各更新ブロックを再開論理区画に上書きする。各更新ブロックの上書きが完了すると、再開処理部104は手順S615で図11の手順S607以降と同じ処理を行った後、次の論理区画を再開論理区画とする情報を新版生成部102に渡すことでアップデート処理を再開する。再開処理部104は手順S615で書込み処理部103に図11の手順S607以降の処理を行わせてもよい。
以下、情報処理装置100の動作例を、図13〜図16を用いて説明する。
各図において、旧変換テーブル、新変換テーブルは実施の形態1における動作例と同一のルールで更新されるため省略する。なお、バックアップを行うかどうかを判定するための更新ブロック数の閾値(図11の手順S602の一定値)は2とする。つまり、更新ブロック数が2以上であればバックアップを行わずに予備区画への新版ソフトウェアイメージ113の書込みを行い、更新ブロック数が1であれば更新ブロックのバックアップと上書きを行う。
図13は、電源切断を伴わない場合の動作例を示している。
状態701は差分受信部101による差分データ111の取得、格納が終わった状態を示している。バックアップ情報は空の状態となっている。
状態702は新版生成部102によって論理区画Aの新版ソフトウェアイメージ113が生成された後の状態を示している。この例では区画内の1番目のブロックのみに更新が発生しているため、新版ソフトウェアイメージ113は1番目のブロックの部分だけがRAM121上に生成されている。更新ブロック数が1なので、書込み処理部103は1番目のブロックの内容を予備区画の1番目のブロックにバックアップし、その結果、状態703に遷移する。そして、書込み処理部103はバックアップ情報に論理区画Aと更新ブロック番号1をセットにしたバックアップレコードを記録し、その結果、状態704に遷移する。その後、書込み処理部103はRAM121上に生成された1番目のブロックの内容で、現在論理区画Aが割り当てられている物理区画2の1番目のブロックを上書きし、その結果、状態705に遷移する。図示していないが、上書きの後には新変換テーブルの先頭に論理区画Aと物理区画2を対応させる変換レコードを書込む。
状態706は新版生成部102によって論理区画Bの新版ソフトウェアイメージ113が生成された後の状態を示している。この例では区画内の1〜3番目のブロックのみに更新が発生しているため、新版ソフトウェアイメージ113は1〜3番目のブロックの部分だけがRAM121上に生成されている。更新ブロック数が3なので、書込み処理部103は予備区画に論理区画Bの新版ソフトウェアイメージ113を書込み、その結果、状態707に遷移する。この際、変更のない4番目のブロックに対応する部分の新版ソフトウェアイメージ113はRAM121上に生成されていないので、4番目のブロックに対応する部分のみ不揮発メモリ122上の物理区画3に格納されている旧版ソフトウェアイメージ112から予備区画にコピーしている。その後、論理区画Bの旧版ソフトウェアイメージ112を格納している物理区画3が予備区画となる。
状態708は新版生成部102によって論理区画Cの新版ソフトウェアイメージ113が生成された後の状態を示している。この例では区画内の4番目のブロックのみに更新が発生しているため、新版ソフトウェアイメージ113は4番目のブロックの部分だけがRAM121上に生成されている。更新ブロック数が1なので、書込み処理部103は4番目ブロックの内容を予備区画の4番目ブロックにバックアップし、その結果、状態709に遷移する。その後の状態710,711への遷移は、論理区画Aに対する状態704,705への遷移と同様である。状態711に遷移した後は、新変換テーブルへの変換レコードの追加、旧変換テーブルの上書きが行われ、アップデート処理が完了する。
以上、本実施の形態における情報処理装置100の動作例について説明したが、以下では、これを、一般的なバックアップを用いる技術と比較する。
論理区画Aの更新では、従来技術、本実施の形態ともに、バックアップの1回と上書きの1回で計2ブロック分の書込みが必要になると考えられる。論理区画Bの更新では、従来技術ではバックアップ3回と上書き3回の計6回の書込みが必要になると考えられるが、これに対し、本実施の形態では予備区画への書込みなので4ブロック分の書込みが行われる。論理区画Cについては論理区画Aと同様である。よって、合計すると従来技術では10回のブロック書込みが必要になると考えられ、これは本実施の形態における8回のブロック書込みより回数が多い。
また、小さいサイズのデータであるバックアップ情報の追記に関しては、従来技術でも、少なくともどの論理区画まで更新が完了したかどうかについての情報とどのブロックをバックアップしているかについての情報を不揮発メモリ上に記録する必要があるので、本実施の形態と小さいデータ量の書込みの回数にはそれほど違いがない。
このように、従来技術と比較すると、本実施の形態では短い時間でアップデート処理を行うことができるという利点がある。
図14は、電源切断後の再開処理での動作例を示している。
この例では、図13の状態704になる直前まで、つまりバックアップ情報が未登録の状態で電源切断が発生した場合を考える(予備区画である物理区画1の状態は任意)。
この場合、電源復帰直後の状態は図14の状態721のようになる。RAM121上のデータは電源切断によって消失するので、状態721では、状態704で生成されていた論理区画Aの新版ソフトウェアイメージ113の1番目の更新ブロックは消失している。この状態に対して再開処理部104は再開論理区画の特定を行う。新変換テーブルには変換レコードが全く存在しないため、再開論理区画は論理区画Aとなり、論理区画Aに対するバックアップレコードも存在しないので、論理区画Aを対象として新版生成部102に処理を開始させる。これにより、新版生成部102が論理区画Aの新版ソフトウェアイメージ113の1番目の更新ブロックをRAM121上に生成し、その結果、状態722に遷移する。状態722は図13の状態702と同様であるから、これ以降の動作は図13の状態703以降と同じになる。
図15は、電源切断後の再開処理での別の動作例を示している。
この例では、図13の状態704から状態705までの間であって、図示していない新変換テーブルの変換レコードの追加処理が完了する前の状態で電源切断が発生した場合を考える。
この場合、電源復帰直後の状態は図15の状態731のようになる(物理区画2の1番目のブロックの状態は任意)。この状態に対して再開処理部104が再開論理区画の特定を行うと、再開論理区画は論理区画Aとなる。論理区画Aに対応するバックアップレコードは存在するので、再開処理部104は予備区画である物理区画1の1番目のブロックにバックアップされた新版ソフトウェアイメージ113を、論理区画Aの旧版ソフトウェアイメージ112が格納されている物理区画2の1番目のブロックに上書きし、その結果、状態732に遷移する。そして新変換テーブルに論理区画Aに対する変換レコードを追加してから、対象論理区画を次の論理区画Bとして新版生成部102に処理を開始させる。状態732は図13の状態705と同様であるから、これ以降の動作は図13の状態706以降と同じになる。
他の例として、図13の状態705になる直前まで、つまり論理区画Aに対するバックアップレコードは登録済みであるが、物理区画2の1番目のブロックへの新版ソフトウェアイメージ113の上書きが完了していない状態で電源切断が発生した場合を考える。
この場合も、電源復帰直後の状態は図15の状態731のようになる。この状態に対して再開処理部104が再開論理区画の特定を行うと、再開論理区画は論理区画Aとなる。論理区画Aに対応するバックアップレコードは存在するので、再開処理部104は予備区画である物理区画1の1番目のブロックにバックアップされた新版ソフトウェアイメージ113を物理区画2の1番目のブロックに上書きし、その結果、状態732に遷移する。そして新変換テーブルに論理区画Aに対する変換レコードを追加してから、対象論理区画を次の論理区画Bとして新版生成部102に処理を開始させる。状態732は図13の状態705と同様であるから、これ以降の動作は図13の状態706以降と同じになる。
図16は、電源切断後の再開処理での別の動作例を示している。
この例では、図13の状態705から状態707までの間であって、図示していない新変換テーブルの変換レコードの追加処理が完了する前の状態で電源切断が発生した場合を考える。
この場合、電源復帰直後の状態は図16の状態741のようになる(物理区画1の状態は任意)。RAM121上のデータは電源切断によって消失するので、状態741では、状態706で論理区画Bの新版ソフトウェアイメージ113の1〜3番目の更新ブロックが生成されていたとしても、これらの更新ブロックは消失している。この状態に対して再開処理部104が再開論理区画の特定を行うと、再開論理区画は論理区画Bとなるが、論理区画Bに対応するバックアップレコードは存在しないので、再開処理部104はそのまま対象論理区画を論理区画Bとして新版生成部102に処理を開始させる。これにより、新版生成部102が論理区画Bの新版ソフトウェアイメージ113の1〜3番目の更新ブロックをRAM121上に生成し、その結果、状態742に遷移する。状態742は図13の状態706と同様であるから、これ以降の動作は図13の状態707以降と同じになる。
状態707以降は論理区画Cに対する処理が行われており、論理区画Cの場合も更新ブロック数は1であるから、論理区画Aと同様にバックアップ処理が行われる。よって、状態707以降で電源切断が発生した場合、復帰後の再開処理は、論理区画Aに対するものとほぼ同じとなる。
以上のように、本実施の形態によれば、アップデート処理のどのタイミングで電源切断が発生しても復帰後にアップデート処理を正常に再開できる。また、各区画の更新ブロック数を元にブロックの書込み回数を低減していることから、電源切断が発生しない通常のケースでの不揮発メモリに対する書込み回数が従来技術より少なくなり、結果としてアップデート処理時間が短くなる。
以上説明した通り、本実施の形態では、新版生成部は、i番目の新版分割データを生成する代わりに、i番目の新版分割データを第1のメモリの書込み単位ごとに分割してなる複数の新版単位データ(上記例では論理区画A〜Cの新版ソフトウェアイメージ113の1〜4番目のブロック)のうち、i番目の旧版分割データを第1のメモリの書込み単位ごとに分割してなる複数の旧版単位データ(上記例では論理区画A〜Cの旧版ソフトウェアイメージ112の1〜4番目のブロック)との差分がある新版単位データをi番目の更新データ(更新ブロック)として生成する。
書込み処理部は、新版生成部によりi番目の更新データが生成される度に、i番目の更新データが閾値(一定値)以上の数の新版単位データを含む場合には、予備領域にi番目の更新データとi番目の旧版分割データの一部とをi番目の新版分割データを構成するように書込み、i番目の旧版分割データが格納された記憶領域を予備領域として設定し、i番目の新版分割データが格納された記憶領域の識別子をi番目の新版識別子として第2のメモリに書込み、i番目の更新データが閾値以上の数の新版単位データを含まない場合には、予備領域にi番目の更新データを書込み、前記予備領域にてi番目の更新データが格納された位置の識別子(更新ブロック番号)をi番目の更新識別子(バックアップ情報のバックアップレコード)として第3のメモリ(不揮発メモリ122)に書込み、i番目の旧版分割データが格納された記憶領域の一部をi番目の更新データで上書きし、i番目の旧版分割データが格納された記憶領域の識別子をi番目の新版識別子として第2のメモリに書込む。
再開処理部は、新版生成部又は書込み処理部による処理の途中で電源が切断され、再び電源が投入されたときには、第2のメモリに格納されていない新版識別子を確認し、第2のメモリに格納されていない新版識別子がj〜n番目(1≦j≦n)の新版識別子の場合には、さらに、第3のメモリにj番目の更新識別子が格納されているかどうかを確認し、第3のメモリにj番目の更新識別子が格納されている場合には、書込み処理部に、j番目の旧版分割データが格納された記憶領域の一部を予備領域にてj番目の更新識別子で特定される位置に格納されたj番目の更新データで上書きさせ、j番目の旧版分割データが格納された記憶領域の識別子をj番目の新版識別子として第2のメモリに書込ませた後、新版生成部に、i=j+1として処理を再開させ、第3のメモリにj番目の更新識別子が格納されていない場合には、新版生成部に、i=jとして処理を再開させる。
また、前述した通り、本実施の形態に係る組込み情報機器において、
新版生成部は、一区画分の新版ソフトウェアを不揮発メモリ特有の書込み単位に分割し、書込み単位ごとに旧版ソフトウェアからの変更があるかどうかを判定し、
書込み処理部は、更新のある書込み単位の数が閾値以上である場合には実施の形態1と同様の書込み処理を行い、更新のある書込み単位の数が前記閾値未満である場合には、新版ソフトウェアのうち、更新のある書込み単位だけを予備区画にバックアップし、バックアップした書込み単位の識別情報を区画情報と関連付けて不揮発メモリ上に記録し、更新のある書込み単位のみを旧版ソフトウェアに上書きし、上書きの完了した区画の識別情報を不揮発メモリ上に記録し、
再開処理部は、不揮発メモリ上に記録された区画の識別情報と書込み単位の識別情報をチェックして、バックアップされた書込み単位の上書き処理が未完了である場合は上書きを行うことを特徴とする。
また、書込み処理部がバックアップを行うかどうかを判定するための閾値は、区画内に含まれる書込み単位の数の1/2であることを特徴とする。
以上、本発明の実施の形態について説明したが、これらのうち、2つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、1つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、2つ以上の実施の形態を部分的に組み合わせて実施しても構わない。
実施の形態1に係る情報処理装置の構成を示すブロック図である。 実施の形態1における電源切断を伴わない場合の情報処理装置の処理手順の概要を示すフローチャートである。 実施の形態1における電源切断から復帰する場合の情報処理装置の処理手順の概要を示すフローチャートである。 実施の形態1におけるアップデート処理開始前の不揮発メモリ上における旧版ソフトウェアイメージの格納状態の一例を示す概念図である。 図4の論理アドレスを物理アドレスに変換するための変換テーブル、論理区画の識別子を物理区画の識別子に変換するための変換テーブルの一例を示す図である。 実施の形態1における書込み処理部の処理手順を示すフローチャートである。 実施の形態1における電源切断を伴わない場合の情報処理装置の動作例を示す図である。 実施の形態1における電源切断後の情報処理装置の動作例を示す図である。 実施の形態1における電源切断後の情報処理装置の動作例を示す図である。 実施の形態1における電源切断後の情報処理装置の動作例を示す図である。 実施の形態2における書込み処理部の処理手順を示すフローチャートである。 実施の形態2における再開処理部の処理手順を示すフローチャートである。 実施の形態2における電源切断後の情報処理装置の動作例を示す図である。 実施の形態2における電源切断後の情報処理装置の動作例を示す図である。 実施の形態2における電源切断後の情報処理装置の動作例を示す図である。 実施の形態2における電源切断後の情報処理装置の動作例を示す図である。
符号の説明
100 情報処理装置、101 差分受信部、102 新版生成部、103 書込み処理部、104 再開処理部、105 ソフトウェア実行部、111 差分データ、112 旧版ソフトウェアイメージ、113 新版ソフトウェアイメージ、121 RAM、122,123 不揮発メモリ、301,302 変換テーブル。

Claims (8)

  1. 第1のメモリ上に設けられたn+1個(n>1)の記憶領域のうち、n個の記憶領域の各々に、旧版データをn分割してなる1〜n番目の旧版分割データを1つずつ格納し、残り1個の記憶領域を予備領域として設定し、1〜n番目の旧版分割データが格納された記憶領域の識別子を1〜n番目の旧版識別子として第2のメモリに格納しておき、前記旧版データを新版データに更新するデータ更新装置であって、
    前記旧版データと前記新版データとの差分を示す差分情報を入力する差分入力部と、
    前記第2のメモリに格納された1〜n番目の旧版識別子で特定される記憶領域から1〜n番目の旧版分割データを順次読み取り、i番目(i=1,・・・,n)の旧版分割データを読み取る度に、前記差分入力部により入力された差分情報に基づいて、i番目の新版分割データを前記第1のメモリの書込み単位ごとに分割してなる複数の新版単位データのうち、i番目の旧版分割データを前記第1のメモリの書込み単位ごとに分割してなる複数の旧版単位データとの差分がある新版単位データをi番目の更新データとして生成する新版生成部と、
    前記新版生成部によりi番目の更新データが生成される度に、i番目の更新データが閾値以上の数の新版単位データを含む場合には、前記予備領域にi番目の更新データとi番目の旧版分割データの一部とをi番目の新版分割データを構成するように書込み、i番目の旧版分割データが格納された記憶領域を前記予備領域として設定し、i番目の新版分割データが格納された記憶領域の識別子をi番目の新版識別子として前記第2のメモリに書込み、i番目の更新データが閾値以上の数の新版単位データを含まない場合には、前記予備領域にi番目の更新データを書込み、前記予備領域にてi番目の更新データが格納された位置の識別子をi番目の更新識別子として第3のメモリに書込み、i番目の旧版分割データが格納された記憶領域の一部をi番目の更新データで上書きし、i番目の旧版分割データが格納された記憶領域の識別子をi番目の新版識別子として前記第2のメモリに書込む書込み処理部とを備えることを特徴とするデータ更新装置。
  2. 前記第1のメモリ及び前記第2のメモリ及び前記第3のメモリは、書き換え可能な不揮発メモリであり、
    前記データ更新装置は、さらに、
    前記新版生成部又は前記書込み処理部による処理の途中で電源が切断され、再び電源が投入されたときには、前記第2のメモリに格納されていない新版識別子を確認し、前記第2のメモリに格納されていない新版識別子がj〜n番目(1≦j≦n)の新版識別子の場合には、さらに、前記第3のメモリにj番目の更新識別子が格納されているかどうかを確認し、前記第3のメモリにj番目の更新識別子が格納されている場合には、前記書込み処理部に、j番目の旧版分割データが格納された記憶領域の一部を前記予備領域にてj番目の更新識別子で特定される位置に格納されたj番目の更新データで上書きさせ、j番目の旧版分割データが格納された記憶領域の識別子をj番目の新版識別子として前記第2のメモリに書込ませた後、前記新版生成部に、i=j+1として処理を再開させ、前記第3のメモリにj番目の更新識別子が格納されていない場合には、前記新版生成部に、i=jとして処理を再開させる再開処理部を備えることを特徴とする請求項に記載のデータ更新装置。
  3. 前記n+1個の記憶領域の各々は、同じ容量をもち、
    前記閾値は、前記容量を前記第1のメモリの書込み単位で割った数の半分であることを特徴とする請求項又はに記載のデータ更新装置。
  4. 前記旧版データ及び前記新版データは、ソフトウェアであり、
    前記データ更新装置は、さらに、
    MMU(Memory・Management・Unit)を用いて前記ソフトウェアを前記第1のメモリ上で直接実行するソフトウェア実行部を備えることを特徴とする請求項1〜いずれかに記載のデータ更新装置。
  5. 前記第1のメモリ及び前記第2のメモリは、同一のメモリデバイス上に実装されることを特徴とする請求項1〜いずれかに記載のデータ更新装置。
  6. 前記第1のメモリ及び前記第2のメモリ及び前記第3のメモリは、同一のメモリデバイス上に実装されることを特徴とする請求項いずれかに記載のデータ更新装置。
  7. 第1のメモリ上に設けられたn+1個(n>1)の記憶領域のうち、n個の記憶領域の各々に、旧版データをn分割してなる1〜n番目の旧版分割データを1つずつ格納し、残り1個の記憶領域を予備領域として設定し、1〜n番目の旧版分割データが格納された記憶領域の識別子を1〜n番目の旧版識別子として第2のメモリに格納しておき、前記旧版データを新版データに更新するデータ更新方法であって、
    コンピュータが、前記旧版データと前記新版データとの差分を示す差分情報を入力し、
    前記コンピュータが、前記第2のメモリに格納された1〜n番目の旧版識別子で特定される記憶領域から1〜n番目の旧版分割データを順次読み取り、i番目(i=1,・・・,n)の旧版分割データを読み取る度に、前記入力により入力された差分情報に基づいて、i番目の新版分割データを前記第1のメモリの書込み単位ごとに分割してなる複数の新版単位データのうち、i番目の旧版分割データを前記第1のメモリの書込み単位ごとに分割してなる複数の旧版単位データとの差分がある新版単位データをi番目の更新データとして生成し、
    前記コンピュータが、前記生成によりi番目の更新データが生成される度に、i番目の更新データが閾値以上の数の新版単位データを含む場合には、前記予備領域にi番目の更新データとi番目の旧版分割データの一部とをi番目の新版分割データを構成するように書込み、i番目の旧版分割データが格納された記憶領域を前記予備領域として設定し、i番目の新版分割データが格納された記憶領域の識別子をi番目の新版識別子として前記第2のメモリに書込み、i番目の更新データが閾値以上の数の新版単位データを含まない場合には、前記予備領域にi番目の更新データを書込み、前記予備領域にてi番目の更新データが格納された位置の識別子をi番目の更新識別子として第3のメモリに書込み、i番目の旧版分割データが格納された記憶領域の一部をi番目の更新データで上書きし、i番目の旧版分割データが格納された記憶領域の識別子をi番目の新版識別子として前記第2のメモリに書込むことを特徴とするデータ更新方法。
  8. 第1のメモリ上に設けられたn+1個(n>1)の記憶領域のうち、n個の記憶領域の各々に、旧版データをn分割してなる1〜n番目の旧版分割データを1つずつ格納し、残り1個の記憶領域を予備領域として設定し、1〜n番目の旧版分割データが格納された記憶領域の識別子を1〜n番目の旧版識別子として第2のメモリに格納しておき、前記旧版データを新版データに更新するデータ更新プログラムであって、
    前記旧版データと前記新版データとの差分を示す差分情報を入力する差分入力手順と、
    前記第2のメモリに格納された1〜n番目の旧版識別子で特定される記憶領域から1〜n番目の旧版分割データを順次読み取り、i番目(i=1,・・・,n)の旧版分割データを読み取る度に、前記差分入力手順により入力された差分情報に基づいて、i番目の新版分割データを前記第1のメモリの書込み単位ごとに分割してなる複数の新版単位データのうち、i番目の旧版分割データを前記第1のメモリの書込み単位ごとに分割してなる複数の旧版単位データとの差分がある新版単位データをi番目の更新データとして生成する新版生成手順と、
    前記新版生成手順によりi番目の更新データが生成される度に、i番目の更新データが閾値以上の数の新版単位データを含む場合には、前記予備領域にi番目の更新データとi番目の旧版分割データの一部とをi番目の新版分割データを構成するように書込み、i番目の旧版分割データが格納された記憶領域を前記予備領域として設定し、i番目の新版分割データが格納された記憶領域の識別子をi番目の新版識別子として前記第2のメモリに書込み、i番目の更新データが閾値以上の数の新版単位データを含まない場合には、前記予備領域にi番目の更新データを書込み、前記予備領域にてi番目の更新データが格納された位置の識別子をi番目の更新識別子として第3のメモリに書込み、i番目の旧版分割データが格納された記憶領域の一部をi番目の更新データで上書きし、i番目の旧版分割データが格納された記憶領域の識別子をi番目の新版識別子として前記第2のメモリに書込む書込み処理手順とをコンピュータに実行させることを特徴とするデータ更新プログラム。
JP2007216202A 2007-08-22 2007-08-22 データ更新装置及びデータ更新方法及びデータ更新プログラム Expired - Fee Related JP5057887B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007216202A JP5057887B2 (ja) 2007-08-22 2007-08-22 データ更新装置及びデータ更新方法及びデータ更新プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007216202A JP5057887B2 (ja) 2007-08-22 2007-08-22 データ更新装置及びデータ更新方法及びデータ更新プログラム

Publications (2)

Publication Number Publication Date
JP2009048557A JP2009048557A (ja) 2009-03-05
JP5057887B2 true JP5057887B2 (ja) 2012-10-24

Family

ID=40500683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007216202A Expired - Fee Related JP5057887B2 (ja) 2007-08-22 2007-08-22 データ更新装置及びデータ更新方法及びデータ更新プログラム

Country Status (1)

Country Link
JP (1) JP5057887B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016170471A (ja) * 2015-03-11 2016-09-23 日立オートモティブシステムズ株式会社 電子制御装置
JP2016218664A (ja) * 2015-05-19 2016-12-22 株式会社東芝 保護制御装置のソフトウェア変更装置、変更プログラム及び保護制御装置
JP6984203B2 (ja) * 2017-07-13 2021-12-17 株式会社デンソー 電子制御装置及び更新ソフトウェア配信システム
JP7087544B2 (ja) * 2018-03-28 2022-06-21 日本電気株式会社 情報処理装置、情報処理方法、情報処理プログラム、及び記憶装置
CN112559349B (zh) * 2020-12-16 2024-04-09 合安科技技术有限公司 一种程序的运行方法及运行装置
CN114925083A (zh) * 2022-07-21 2022-08-19 北京星天科技有限公司 海图数据更新文件的生成方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH113223A (ja) * 1997-06-10 1999-01-06 Canon Inc 情報処理装置及び情報格納方法
JP2004240717A (ja) * 2003-02-06 2004-08-26 Kawasaki Microelectronics Kk ソフトウェア更新装置
JP2005258562A (ja) * 2004-03-09 2005-09-22 Matsushita Electric Ind Co Ltd データ更新装置及びデータ更新方法
JP2006202086A (ja) * 2005-01-21 2006-08-03 Digion Inc ファームウェア更新方法

Also Published As

Publication number Publication date
JP2009048557A (ja) 2009-03-05

Similar Documents

Publication Publication Date Title
JP3708047B2 (ja) フラッシュメモリの管理方法
KR100847506B1 (ko) 기억 장치, 메모리 관리 방법 및 프로그램
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US8516182B2 (en) Controller and memory system for managing data
US8756458B2 (en) Mount-time reconciliation of data availability
JPH11203191A (ja) 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
JP2000305839A (ja) 記憶装置、記憶システム、メモリ管理方法及び記録媒体
JP2002169729A (ja) 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
KR100370893B1 (ko) 일괄 소거형 비휘발성 메모리 장치
JP2005010897A (ja) 計算機システム、計算機システム起動方法およびプログラム
JP5057887B2 (ja) データ更新装置及びデータ更新方法及びデータ更新プログラム
JP4745465B1 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP4586469B2 (ja) メモリ制御装置、メモリ制御方法、プログラム
JP2003076605A (ja) ブロック消去型不揮発メモリを搭載した半導体記憶装置とそのデータの書込み・読出し方法
JP4242245B2 (ja) フラッシュrom制御装置
US7987314B2 (en) Non-volatile memory device and write method thereof
JP2007034581A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006003966A (ja) フラッシュメモリの書込方法
JP4661369B2 (ja) メモリコントローラ
JP5204265B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP2005115562A (ja) フラッシュrom制御装置
CN115705153A (zh) 有条件更新和延迟的查找
JP2008047155A (ja) 一括消去型不揮発性メモリおよび携帯電話
WO2020039927A1 (ja) 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
JP2004062851A (ja) 直接重複書き込み可能で冗長フィールドの使用不要の非揮発性メモリの保存システム及びその書き込み方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100428

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120403

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120731

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees