(57)【特許請求の範囲】
【請求項１】
第１のメモリ上に設けられたｎ＋１個（ｎ＞１）の記憶領域のうち、ｎ個の記憶領域の各々に、旧版データをｎ分割してなる１〜ｎ番目の旧版分割データを１つずつ格納し、残り１個の記憶領域を予備領域として設定し、１〜ｎ番目の旧版分割データが格納された記憶領域の識別子を１〜ｎ番目の旧版識別子として第２のメモリに格納しておき、前記旧版データを新版データに更新するデータ更新装置であって、
前記旧版データと前記新版データとの差分を示す差分情報を入力する差分入力部と、
前記第２のメモリに格納された１〜ｎ番目の旧版識別子で特定される記憶領域から１〜ｎ番目の旧版分割データを順次読み取り、ｉ番目（ｉ＝１，・・・，ｎ）の旧版分割データを読み取る度に、前記差分入力部により入力された差分情報に基づいて、ｉ番目の新版分割データを前記第１のメモリの書込み単位ごとに分割してなる複数の新版単位データのうち、ｉ番目の旧版分割データを前記第１のメモリの書込み単位ごとに分割してなる複数の旧版単位データとの差分がある新版単位データをｉ番目の更新データとして生成する新版生成部と、
前記新版生成部によりｉ番目の更新データが生成される度に、ｉ番目の更新データが閾値以上の数の新版単位データを含む場合には、前記予備領域にｉ番目の更新データとｉ番目の旧版分割データの一部とをｉ番目の新版分割データを構成するように書込み、ｉ番目の旧版分割データが格納された記憶領域を前記予備領域として設定し、ｉ番目の新版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として前記第２のメモリに書込み、ｉ番目の更新データが閾値以上の数の新版単位データを含まない場合には、前記予備領域にｉ番目の更新データを書込み、前記予備領域にてｉ番目の更新データが格納された位置の識別子をｉ番目の更新識別子として第３のメモリに書込み、ｉ番目の旧版分割データが格納された記憶領域の一部をｉ番目の更新データで上書きし、ｉ番目の旧版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として前記第２のメモリに書込む書込み処理部とを備えることを特徴とするデータ更新装置。
【請求項２】
前記第１のメモリ及び前記第２のメモリ及び前記第３のメモリは、書き換え可能な不揮発メモリであり、
前記データ更新装置は、さらに、
前記新版生成部又は前記書込み処理部による処理の途中で電源が切断され、再び電源が投入されたときには、前記第２のメモリに格納されていない新版識別子を確認し、前記第２のメモリに格納されていない新版識別子がｊ〜ｎ番目（１≦ｊ≦ｎ）の新版識別子の場合には、さらに、前記第３のメモリにｊ番目の更新識別子が格納されているかどうかを確認し、前記第３のメモリにｊ番目の更新識別子が格納されている場合には、前記書込み処理部に、ｊ番目の旧版分割データが格納された記憶領域の一部を前記予備領域にてｊ番目の更新識別子で特定される位置に格納されたｊ番目の更新データで上書きさせ、ｊ番目の旧版分割データが格納された記憶領域の識別子をｊ番目の新版識別子として前記第２のメモリに書込ませた後、前記新版生成部に、ｉ＝ｊ＋１として処理を再開させ、前記第３のメモリにｊ番目の更新識別子が格納されていない場合には、前記新版生成部に、ｉ＝ｊとして処理を再開させる再開処理部を備えることを特徴とする請求項１に記載のデータ更新装置。
【請求項３】
前記ｎ＋１個の記憶領域の各々は、同じ容量をもち、
前記閾値は、前記容量を前記第１のメモリの書込み単位で割った数の半分であることを特徴とする請求項１又は２に記載のデータ更新装置。
【請求項４】
前記旧版データ及び前記新版データは、ソフトウェアであり、
前記データ更新装置は、さらに、
ＭＭＵ（Ｍｅｍｏｒｙ・Ｍａｎａｇｅｍｅｎｔ・Ｕｎｉｔ）を用いて前記ソフトウェアを前記第１のメモリ上で直接実行するソフトウェア実行部を備えることを特徴とする請求項１〜３いずれかに記載のデータ更新装置。
【請求項５】
前記第１のメモリ及び前記第２のメモリは、同一のメモリデバイス上に実装されることを特徴とする請求項１〜４いずれかに記載のデータ更新装置。
【請求項６】
前記第１のメモリ及び前記第２のメモリ及び前記第３のメモリは、同一のメモリデバイス上に実装されることを特徴とする請求項１〜３いずれかに記載のデータ更新装置。
【請求項７】
第１のメモリ上に設けられたｎ＋１個（ｎ＞１）の記憶領域のうち、ｎ個の記憶領域の各々に、旧版データをｎ分割してなる１〜ｎ番目の旧版分割データを１つずつ格納し、残り１個の記憶領域を予備領域として設定し、１〜ｎ番目の旧版分割データが格納された記憶領域の識別子を１〜ｎ番目の旧版識別子として第２のメモリに格納しておき、前記旧版データを新版データに更新するデータ更新方法であって、
コンピュータが、前記旧版データと前記新版データとの差分を示す差分情報を入力し、
前記コンピュータが、前記第２のメモリに格納された１〜ｎ番目の旧版識別子で特定される記憶領域から１〜ｎ番目の旧版分割データを順次読み取り、ｉ番目（ｉ＝１，・・・，ｎ）の旧版分割データを読み取る度に、前記入力により入力された差分情報に基づいて、ｉ番目の新版分割データを前記第１のメモリの書込み単位ごとに分割してなる複数の新版単位データのうち、ｉ番目の旧版分割データを前記第１のメモリの書込み単位ごとに分割してなる複数の旧版単位データとの差分がある新版単位データをｉ番目の更新データとして生成し、
前記コンピュータが、前記生成によりｉ番目の更新データが生成される度に、ｉ番目の更新データが閾値以上の数の新版単位データを含む場合には、前記予備領域にｉ番目の更新データとｉ番目の旧版分割データの一部とをｉ番目の新版分割データを構成するように書込み、ｉ番目の旧版分割データが格納された記憶領域を前記予備領域として設定し、ｉ番目の新版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として前記第２のメモリに書込み、ｉ番目の更新データが閾値以上の数の新版単位データを含まない場合には、前記予備領域にｉ番目の更新データを書込み、前記予備領域にてｉ番目の更新データが格納された位置の識別子をｉ番目の更新識別子として第３のメモリに書込み、ｉ番目の旧版分割データが格納された記憶領域の一部をｉ番目の更新データで上書きし、ｉ番目の旧版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として前記第２のメモリに書込むことを特徴とするデータ更新方法。
【請求項８】
第１のメモリ上に設けられたｎ＋１個（ｎ＞１）の記憶領域のうち、ｎ個の記憶領域の各々に、旧版データをｎ分割してなる１〜ｎ番目の旧版分割データを１つずつ格納し、残り１個の記憶領域を予備領域として設定し、１〜ｎ番目の旧版分割データが格納された記憶領域の識別子を１〜ｎ番目の旧版識別子として第２のメモリに格納しておき、前記旧版データを新版データに更新するデータ更新プログラムであって、
前記旧版データと前記新版データとの差分を示す差分情報を入力する差分入力手順と、
前記第２のメモリに格納された１〜ｎ番目の旧版識別子で特定される記憶領域から１〜ｎ番目の旧版分割データを順次読み取り、ｉ番目（ｉ＝１，・・・，ｎ）の旧版分割データを読み取る度に、前記差分入力手順により入力された差分情報に基づいて、ｉ番目の新版分割データを前記第１のメモリの書込み単位ごとに分割してなる複数の新版単位データのうち、ｉ番目の旧版分割データを前記第１のメモリの書込み単位ごとに分割してなる複数の旧版単位データとの差分がある新版単位データをｉ番目の更新データとして生成する新版生成手順と、
前記新版生成手順によりｉ番目の更新データが生成される度に、ｉ番目の更新データが閾値以上の数の新版単位データを含む場合には、前記予備領域にｉ番目の更新データとｉ番目の旧版分割データの一部とをｉ番目の新版分割データを構成するように書込み、ｉ番目の旧版分割データが格納された記憶領域を前記予備領域として設定し、ｉ番目の新版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として前記第２のメモリに書込み、ｉ番目の更新データが閾値以上の数の新版単位データを含まない場合には、前記予備領域にｉ番目の更新データを書込み、前記予備領域にてｉ番目の更新データが格納された位置の識別子をｉ番目の更新識別子として第３のメモリに書込み、ｉ番目の旧版分割データが格納された記憶領域の一部をｉ番目の更新データで上書きし、ｉ番目の旧版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として前記第２のメモリに書込む書込み処理手順とをコンピュータに実行させることを特徴とするデータ更新プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ更新装置及びデータ更新方法及びデータ更新プログラムに関するものである。本発明は、特に、ソフトウェアの差分更新を行う情報処理装置（例えば携帯電話などの組込み情報機器）に関するものである。
【背景技術】
【０００２】
携帯電話などの組込み機器では、機器内部の不揮発メモリ上に格納されたソフトウェアを、差分データを用いてアップデートするソフトウェア差分更新機能が提供されることが一般的である（例えば、特許文献１参照）。
【０００３】
差分データが何らかの手段によって不揮発メモリ上に格納されている状態を前提とすると、ソフトウェアをアップデートする手順は一般的には以下のようになる。
Ｓ１：不揮発メモリ上の（旧版）ソフトウェアのイメージと差分データから新版ソフトウェアのイメージをＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）上に生成する。
Ｓ２：新版ソフトウェアのイメージを不揮発メモリ上に上書きする。
ソフトウェアのサイズが大きい場合には、ソフトウェアを複数の区画に予め分割しておき、区画ごとに上記手順Ｓ１とＳ２の処理を繰り返すことでソフトウェアのアップデートを実現する。
【０００４】
上記のような手順でソフトウェアをアップデートする場合において、上記手順Ｓ２の途中で電源が切断されたとする。この場合、不揮発メモリ上は途中まで書き換えられた状態となっている。旧版ソフトウェアのイメージが不揮発メモリ上に完全な形では残っていないので、差分データから新版ソフトウェアのイメージをもう一度生成することはできない。また、新版ソフトウェアのイメージも不揮発メモリ上では不完全な形でしか残っておらず、ＲＡＭ上に生成しておいた新版ソフトウェアのイメージも電源切断によって失われている。このようにアップデートの途中で電源切断が発生すると、アップデート処理を継続することができない可能性がある。
【０００５】
アップデート処理を継続できるようにするために、例えば、上記手順Ｓ１とＳ２の間に上書き対象の旧版ソフトウェアのイメージ、もしくは生成した新版ソフトウェアのイメージのいずれか一方を不揮発メモリ上にバックアップし、どの区画を更新中であるかといった情報を不揮発メモリ上に記録しておくことが考えられる。このようにすることで、電源切断が発生しても新版ソフトウェアのイメージを再度取得することができるので、アップデート処理を継続することができる。
【０００６】
具体的な例として、特許文献２では上書き対象区画とその直前区画の旧版ソフトウェアのイメージから新版ソフトウェアのイメージを生成できるような構成において、電源切断が発生してもアップデート処理を継続する発明が開示されている。この文献における開示内容では構成がやや複雑になっているものの、基本的には上記のようにバックアップと上書きを前提とした処理となっている。
【特許文献１】特開２００５−１９６７４７号公報
【特許文献２】特開２００４−１９９１２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のように、電源切断が発生してもアップデート処理が継続できることを保証するためには、従来の技術ではバックアップと上書きの２回の書込みを不揮発メモリへ行う必要があるため、アップデート処理に時間がかかるという課題があった。
【０００８】
特に、ＮＯＲ・Ｆｌａｓｈ・ＲＯＭ（ＮＯＲ型のフラッシュメモリ）をソフトウェア（全体もしくは一部）の格納先の不揮発メモリとしている機器を想定すると（他の種類の不揮発メモリも内蔵していてよいが、バックアップなどの用途ではＮＯＲ・Ｆｌａｓｈ・ＲＯＭしか使用できないことを想定する）、従来の技術ではバックアップと上書きの２回の書込みをＮＯＲ・Ｆｌａｓｈ・ＲＯＭへ行うことになる。一般的にソフトウェアのアップデート処理に要する時間の大半はＮＯＲ・Ｆｌａｓｈ・ＲＯＭへの書込み時間が占めるので、アップデート処理時間を短くするためには書込み回数をできるだけ減らすことが望ましい。
【０００９】
本発明は、差分データを用いたソフトウェアのアップデート処理を効率的に行うこと、アップデート処理に要する時間を短くすることなどを目的とする。特に、ＮＯＲ・Ｆｌａｓｈ・ＲＯＭを用いたソフトウェア差分更新機能において、電源切断が発生してもアップデート処理が継続できるようにしながらも、ＮＯＲ・Ｆｌａｓｈ・ＲＯＭへの書込み回数を少なくすることでアップデート処理時間を短くすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一の態様に係るデータ更新装置は、
第１のメモリ上に設けられたｎ＋１個（ｎ＞１）の記憶領域のうち、ｎ個の記憶領域の各々に、旧版データをｎ分割してなる１〜ｎ番目の旧版分割データを１つずつ格納し、残り１個の記憶領域を予備領域として設定し、１〜ｎ番目の旧版分割データが格納された記憶領域の識別子を１〜ｎ番目の旧版識別子として第２のメモリに格納しておき、前記旧版データを新版データに更新するデータ更新装置であって、
前記旧版データと前記新版データとの差分を示す差分情報を入力する差分入力部と、
前記第２のメモリに格納された１〜ｎ番目の旧版識別子で特定される記憶領域から１〜ｎ番目の旧版分割データを順次読み取り、ｉ番目（ｉ＝１，・・・，ｎ）の旧版分割データを読み取る度に、前記差分入力部により入力された差分情報に基づいて、ｉ番目の新版分割データを生成する新版生成部と、
前記新版生成部によりｉ番目の新版分割データが生成される度に、前記予備領域にｉ番目の新版分割データを書込み、ｉ番目の旧版分割データが格納された記憶領域を前記予備領域として設定し、ｉ番目の新版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として前記第２のメモリに書込む書込み処理部とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明の一の態様によれば、データ更新装置において、新版生成部が、第２のメモリに格納された１〜ｎ番目の旧版識別子で特定される記憶領域から１〜ｎ番目の旧版分割データを順次読み取り、ｉ番目の旧版分割データを読み取る度に、差分情報に基づいて、ｉ番目の新版分割データを生成し、書込み処理部が、新版生成部によりｉ番目の新版分割データが生成される度に、予備領域にｉ番目の新版分割データを書込み、ｉ番目の旧版分割データが格納された記憶領域を予備領域として設定し、ｉ番目の新版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として第２のメモリに書込むことにより、差分情報を用いて旧版データを新版データに更新する処理を効率的に行うことが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、図を用いて説明する。
【００１３】
実施の形態１．
最初に本実施の形態に係る情報処理装置１００（データ更新装置）の構成について、図１を用いて説明する。以下で説明するのは本実施の形態に直接的に関わる構成要素だけであり、説明したもの以外の構成要素が存在することは言うまでもない。
【００１４】
図１は、情報処理装置１００の構成を示すブロック図である。
【００１５】
情報処理装置１００は、例えば携帯電話などの組込み情報機器である。図示していないが、情報処理装置１００は１つ以上のＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）をもち、ＣＰＵは情報処理装置１００が本来目的とする機能（データの抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示など）を達成するために用いられる。アップデート処理においては、１つ以上のＣＰＵのうち、少なくとも１つが用いられる。ＣＰＵはＭＭＵ（Ｍｅｍｏｒｙ・Ｍａｎａｇｅｍｅｎｔ・Ｕｎｉｔ）をもち、ＭＭＵは上記機能達成のためにＲＡＭ１２１上に格納される変換テーブルに基づいて論理アドレスと物理アドレスの変換を行う。ただし、アップデート処理においてはＭＭＵを使用しなくてよい。情報処理装置１００は上記ＲＡＭ１２１をもち、ＲＡＭ１２１は上記機能達成のために用いられるが、アップデート処理においては一時的に各種データを格納するためにも用いられる。
【００１６】
情報処理装置１００は更新対象ソフトウェア（の一部）を格納する不揮発メモリ１２２（第１のメモリ、第２のメモリ、第３のメモリ）をもつ。本実施の形態では、不揮発メモリ１２２をＮＯＲ・Ｆｌａｓｈ・ＲＯＭとする。更新対象ソフトウェアは、上記ＭＭＵを前提として、このＮＯＲ・Ｆｌａｓｈ・ＲＯＭ上に格納されている。本実施の形態において、不揮発メモリ１２２を、ＮＡＮＤ・Ｆｌａｓｈ・ＲＯＭ（ＮＡＮＤ型のフラッシュメモリ）など、他の種類の不揮発メモリ、あるいは揮発メモリに置き換えることもできるが、後述するように、ＮＯＲ・Ｆｌａｓｈ・ＲＯＭとした方が、より顕著な効果を奏する。
【００１７】
また、情報処理装置１００は通信機能を有し、アップデート処理においては機器外部から差分データ１１１（差分情報）を取得するために通信機能を用いる。通信機能には、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ・Ｓｅｒｉａｌ・Ｂｕｓ）などの有線通信、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの無線通信、メモリカードなどの外部記録媒体などが相当する。情報処理装置１００は不揮発メモリ１２３も有し、通信機能により取得した差分データ１１１を、この不揮発メモリ１２３に格納する。
【００１８】
ここで、本実施の形態に係る更新対象ソフトウェアと差分データ１１１について説明する。更新対象ソフトウェアはＸＩＰ（ｅＸｅｃｕｔｅ・Ｉｎ・Ｐｌａｃｅ）形式であり、複数の区画に分割して扱われる。各区画には、更新対象ソフトウェアの更新前のイメージである旧版ソフトウェアイメージ１１２（旧版分割データ）が格納される。簡単のため、本実施の形態では、各区画のサイズは同一とする。具体的には、ＮＯＲ・Ｆｌａｓｈ・ＲＯＭにおける消去単位（ブロック）サイズの整数倍サイズとする。好ましくはＭＭＵのマッピング単位と同一とする。差分データ１１１は更新対象ソフトウェアの更新後のイメージである新版ソフトウェアイメージ１１３（新版分割データ）を区画ごとに生成するのに必要な情報を格納しており、各区画の新版ソフトウェアイメージ１１３を生成する際に少なくとも旧版ソフトウェアイメージ１１２の同区画を参照する必要がある。
【００１９】
図１において、情報処理装置１００は、差分受信部１０１（差分入力部）、新版生成部１０２、書込み処理部１０３、再開処理部１０４、ソフトウェア実行部１０５を備える。
【００２０】
差分受信部１０１は通信機能を用いて差分データ１１１を機器外部から取得し、差分データ１１１を不揮発メモリ１２３に格納する。この不揮発メモリ１２３はソフトウェアを格納する不揮発メモリ１２２と同一であってもよいし、別の不揮発メモリであってもよい。
【００２１】
新版生成部１０２は一区画分の新版ソフトウェアイメージ１１３をＲＡＭ１２１上に生成する。ここで、差分データ１１１を解析するなどして新版ソフトウェアイメージ１１３と不揮発メモリ１２２上の旧版ソフトウェアイメージ１１２の内容が全く同一であることが分かった場合には、新版ソフトウェアイメージ１１３をＲＡＭ１２１上には生成しないようにすることも可能である。また、ＲＡＭ１２１上には生成するが、内容が全く同一であることを書込み処理部１０３に伝えることも可能である。
【００２２】
書込み処理部１０３は新版生成部１０２が生成した一区画分の新版ソフトウェアイメージ１１３を不揮発メモリ１２２に書込む。前述した通り、不揮発メモリ１２２は更新対象の旧版ソフトウェアイメージ１１２を格納するための書き換え可能な不揮発メモリであり、具体的にはＮＯＲ・Ｆｌａｓｈ・ＲＯＭである。新版生成部１０２が新版ソフトウェアイメージ１１３を生成しなかった場合や、新版ソフトウェアイメージ１１３が旧版ソフトウェアイメージ１１２と全く同じ内容である場合には、書込み処理部１０３は不揮発メモリ１２２への書込みは行わなくてよい。
【００２３】
再開処理部１０４は電源切断からの復帰後にアップデート処理を再開するための準備を行う。再開処理部１０４での処理が完了すると、新版生成部１０２が処理を引き継ぐ。書込み処理部１０３が処理を引き継ぐ場合があってもよい。
【００２４】
ソフトウェア実行部１０５はＭＭＵを用いて更新対象ソフトウェアを不揮発メモリ１２２（第１のメモリ）上で直接実行する。
【００２５】
上記のように、本実施の形態では、ソフトウェアをアップデート処理の対象としている（即ち、旧版ソフトウェアを新版ソフトウェアに更新する）が、ソフトウェア以外の何らかのデータを記録したファイルやその他のデータをアップデート処理の対象としても構わない（即ち、旧版データを新版データに更新することができる）。
【００２６】
図２は、本実施の形態における電源切断を伴わない場合の情報処理装置１００の処理手順の概要を示すフローチャートである。
【００２７】
最初に手順Ｓ２０１（差分入力手順）で差分受信部１０１が機器外部から差分データ１１１を取得して不揮発メモリ１２３に格納する。手順Ｓ２０１を開始する契機としては例えばユーザからの指示、携帯電話網からの指示などが考えられる。手順Ｓ２０１が完了すると、旧版ソフトウェアイメージ１１２の各区画に対して手順Ｓ２０２（新版生成手順）と手順Ｓ２０３（書込み処理手順）が繰返し行われる。この繰返し処理は手順Ｓ２０１の完了直後に開始してもよいし、予め設定しておいた時刻に開始してもよい。手順Ｓ２０２では新版生成部１０２が新版ソフトウェアイメージ１１３の生成を行い、手順Ｓ２０３では書込み処理部１０３が新版ソフトウェアイメージ１１３の書込みを行う。上記の繰り返し処理が完了するとアップデート処理は終了となる。
【００２８】
なお、手順Ｓ２０１では差分データ１１１を一括で取得し、格納することとしているが、例えば各区画に対する（部分）差分データ１１１を繰返し処理の中で毎回取得し、格納するようにしてもよい。
【００２９】
図３は、本実施の形態における電源切断から復帰する場合の情報処理装置１００の処理手順の概要を示すフローチャートである。
【００３０】
アップデート処理の途中で電源切断があった場合、電源切断から復帰すると最初に再開処理部１０４が手順Ｓ２１１（再開処理手順）でどの区画まで新版ソフトウェアイメージ１１３の書込みが完了しているかを判定するなど、再開に必要な処理を行う。そして、書込みが完了している区画の次の区画以降に対して、手順Ｓ２１２（新版生成手順）と手順Ｓ２１３（書込み処理手順）が繰返し行われる。手順Ｓ２１２と手順Ｓ２１３はそれぞれ手順Ｓ２０２、手順Ｓ２０３と同じである。残りの区画に対しての繰返し処理が完了するとアップデート処理は終了となる。
【００３１】
図４は、アップデート処理開始前の不揮発メモリ１２２（第１のメモリ）上における旧版ソフトウェアイメージ１１２の格納状態の一例を示す概念図である。
【００３２】
この例では、不揮発メモリ１２２上には４つの物理区画（記憶領域）１〜４が存在し、ソフトウェアは３つの論理区画Ａ、Ｂ、Ｃで構成される。論理区画Ａは物理区画２に、論理区画Ｂは物理区画３に、論理区画Ｃは物理区画４に割り当てられている。物理区画１には論理区画が割り当てられず、予備区画（予備領域）となっている。図４のように、本実施の形態では物理区画数は論理区画数より１以上大きくなければならない（予備区画が１つ以上存在する必要がある）。また、図４では各区画は４つのブロックから構成される。ここでブロックとは、ＮＯＲ・Ｆｌａｓｈ・ＲＯＭの消去単位を示している。
【００３３】
物理区画１〜４の先頭物理アドレスはそれぞれ０ｘ８０００００００、０ｘ８００４００００、０ｘ８００８００００、０ｘ８００Ｃ００００であり、物理区画１〜４のサイズはいずれも０ｘ４００００となっている。論理区画Ａ〜Ｃの先頭論理アドレスはそれぞれ０ｘ００００００００、０ｘ０００４００００、０ｘ０００８００００となっている。
【００３４】
図５は、図４の論理アドレスを物理アドレスに変換するための変換テーブル３０１、論理区画の識別子（以下、「論理区画番号」という）を物理区画の識別子（以下、「物理区画番号」という）に変換するための変換テーブル３０２の一例を示す図である。
【００３５】
変換テーブル３０１はＲＡＭ１２１上に格納された状態でＭＭＵから使用されるが、その元となる情報はいずれかの不揮発メモリ（第２のメモリ）（以下では、不揮発メモリ１２２とする）上に格納されている必要があり、ソフトウェアの起動処理時にソフトウェア実行部１０５によってＲＡＭ１２１へ展開される。ＲＡＭ１２１上の変換テーブル３０１はＭＭＵの規約に従う必要があるが、不揮発メモリ１２２上の変換テーブル３０２は情報処理装置１００のソフトウェア差分更新機能で独自に定義できる。
【００３６】
ＲＡＭ１２１上の変換テーブル３０１では論理アドレスと物理アドレスの対応関係が記述されている。不揮発メモリ１２２上の変換テーブル３０２では論理区画と物理区画の対応関係が記述されており、変換テーブル３０２に現れない物理区画が予備区画として扱われる（図５の例では、変換テーブル３０２において物理区画１に対応する論理区画が記述されていないため、物理区画１が予備区画であることが分かる）。
【００３７】
アップデート処理中には書込み処理部１０３が不揮発メモリ１２２上の変換テーブル３０２の内容を更新するが、不揮発メモリ１２２上の変換テーブル３０２を上書きするのではなく、不揮発メモリ１２２上の古い変換テーブル３０２（以下、「旧変換テーブル」という）は残しておいて不揮発メモリ１２２上の別領域に新しい変換テーブル３０２（以下、「新変換テーブル」という）を順次生成する。全ての論理区画に対する処理が完了すると新変換テーブルの内容で旧変換テーブルの内容を更新する。旧変換テーブルと新変換テーブルの格納位置を固定すれば実装が容易になる。
【００３８】
以下、情報処理装置１００の処理手順（情報処理装置１００で実行されるアップデート処理プログラムの処理フロー）の詳細について説明する。
【００３９】
まず、本実施の形態における新版生成部１０２の処理手順を説明する。
【００４０】
新版生成部１０２はどの論理区画に対する新版ソフトウェアイメージ１１３を生成するかについての情報を受け取って処理を開始する。差分受信部１０１の後に処理を行う場合は繰返し処理の１回目であるため、例えば差分受信部１０１から先頭の論理区画が対象となることを示す情報を受け取る。繰返し処理の２回目以降には、例えば書込み処理部１０３から論理区画を指定する情報を受け取る。電源切断からの復帰時には、例えば再開処理部１０４から論理区画を指定する情報を受け取る。
【００４１】
新版生成部１０２は指定された論理区画（以下、「対象論理区画」という）に相当する部分の差分データ１１１と、少なくとも対象論理区画にその時点で存在する旧版ソフトウェアイメージ１１２を参照して当該論理区画の新版ソフトウェアイメージ１１３を生成する。ただし、参照先としては、対象論理区画より前に存在する新版ソフトウェアイメージ１１３や、対象論理区画より後ろに存在する旧版ソフトウェアイメージ１１２などを参照してもよい。
【００４２】
また、新版生成部１０２が差分データ１１１を解析するなどして対象論理区画の新版ソフトウェアイメージ１１３と不揮発メモリ１２２（第１のメモリ）上の旧版ソフトウェアイメージ１１２の内容が全く同一であることが分かった場合には、新版ソフトウェアイメージ１１３をＲＡＭ１２１上には生成しないようにすることも可能である。この場合は書込み処理部１０３に対して内容が全く同一であることを伝える。また、ＲＡＭ１２１上に生成した上で内容が全く同一であることを伝えてもよい。
【００４３】
図６は、本実施の形態における書込み処理部１０３の処理手順を示すフローチャートである。
【００４４】
書込み処理部１０３は最初に対象論理区画の新版ソフトウェアイメージ１１３と旧版ソフトウェアイメージ１１２が同一であるかどうかを手順Ｓ４０１で判定する。この判定には、書込み処理部１０３が新版生成部１０２から受け取った情報（前述したように、新版生成部１０２が差分データ１１１を解析した結果など）を用いてもよいし、書込み処理部１０３が新版生成部１０２によってＲＡＭ１２１上に生成された新版ソフトウェアイメージ１１３と不揮発メモリ１２２上の旧版ソフトウェアイメージ１１２を比較するなどしてもよい。
【００４５】
手順Ｓ４０１での判定の結果、新版ソフトウェアイメージ１１３と旧版ソフトウェアイメージ１１２が異なる場合、手順Ｓ４０２において予備区画の位置を特定した上で新版ソフトウェアイメージ１１３を予備区画に書込む。予備区画を特定するためには、例えば旧変換テーブルからどの論理区画にも割り当てられていない物理区画を探してもよいし、いずれかの不揮発メモリ（第３のメモリ）（例えば、不揮発メモリ１２２）の領域上に予備区画の情報を管理しておき、その情報を参照してもよい。なお、予備区画は不揮発メモリ１２２上に存在し、不揮発メモリ１２２はＮＯＲ・Ｆｌａｓｈ・ＲＯＭなので、新版ソフトウェアイメージ１１３の書込みに先立ってブロックごとに旧版ソフトウェアイメージ１１２の消去を行う必要があるのは言うまでもない（旧版ソフトウェアイメージ１１２が予備区画に格納されている場合）。
【００４６】
手順Ｓ４０３で書込み処理部１０３は対象論理区画分の変換レコードを新変換テーブルに追記する。予備区画に新版ソフトウェアイメージ１１３を書込んだ後の場合には（手順Ｓ４０２から手順Ｓ４０３に進んだ場合）、当該論理区画の論理区画番号と書込み先である予備区画の物理区画番号とを対応付けて変換レコードに書込む。新版ソフトウェアイメージ１１３と旧版ソフトウェアイメージ１１２が同一であった場合には（手順Ｓ４０１から手順Ｓ４０３に進んだ場合）、旧変換テーブルの対象論理区画分の変換レコードをそのまま新変換テーブルにコピーする。
【００４７】
手順Ｓ４０４で書込み処理部１０３は現在処理対象としている論理区画が最終論理区画であるかどうかを判定する。最終論理区画を特定するために書込み処理部１０３が参照する情報は、例えば予め内部情報としてアップデート処理プログラムがもっていてもよいし、差分データ１１１内に入力情報として更新対象ソフトウェアの論理区画数が格納されていてもよい。
【００４８】
対象論理区画が最終論理区画であった場合、手順Ｓ４０６で書込み処理部１０３は新変換テーブルの内容を旧変換テーブルに上書きする。これで図２及び図３で示した繰返し処理が完了する。なお、変換テーブルの上書きによって、アップデート処理完了後の通常起動時には新変換テーブルの内容に従ってＲＡＭ１２１上の変換テーブルが構築されるようになる。
【００４９】
対象論理区画が最終論理区画でなかった場合、次の論理区画に対する新版生成部１０２の処理を開始するため、手順Ｓ４０５で書込み処理部１０３は新版生成部１０２に次の論理区画を対象論理区画として指定し、書込み処理部１０３の処理を終了する。
【００５０】
次に、本実施の形態における再開処理部１０４の処理手順を説明する。
【００５１】
再開処理部１０４は新変換テーブルの内容を解析して、どの論理区画からアップデート処理を再開するかを判定し、新版生成部１０２にその情報を渡す。詳細には新変換テーブルにどの論理区画まで変換レコードが書込まれているかで再開時の対象論理区画（以下、「再開論理区画」という）を判定する。図４及び図５の例では、新変換テーブルに論理区画Ａの変換レコードのみが書込まれている場合には再開論理区画はＢとなる。
【００５２】
以下、情報処理装置１００の動作例を、図７〜図１０を用いて説明する。
【００５３】
図７は、電源切断を伴わない場合の動作例を示している。
【００５４】
状態５０１は差分受信部１０１による差分データ１１１の取得、格納が終わった状態を示している。旧版ソフトウェアイメージ１１２の論理区画Ａが不揮発メモリ１２２の物理区画２に、論理区画Ｂが物理区画３に、論理区画Ｃが物理区画４に格納されており、その内容が不揮発メモリ１２２（第２のメモリ）上の旧変換テーブルに格納されている。旧変換テーブルの内容から物理区画１が予備区画であることが分かる。また不揮発メモリ１２３内に差分データ１１１が格納されている。
【００５５】
状態５０２は新版生成部１０２によって論理区画Ａの新版ソフトウェアイメージ１１３が生成された後の状態を示している。この例では、新版生成部１０２は論理区画Ａの旧版ソフトウェアイメージ１１２と差分データ１１１を参照して新版ソフトウェアイメージ１１３をＲＡＭ１２１上に生成している。
【００５６】
状態５０３は書込み処理部１０３によって予備区画である物理区画１に論理区画Ａの新版ソフトウェアイメージ１１３が書込まれた後の状態である。この時点では新変換テーブルが更新されていないので、物理区画１は予備区画扱いのままである。
【００５７】
状態５０４は書込み処理部１０３が新変換テーブルに論理区画Ａに対する変換レコード（論理区画Ａと物理区画１を対応付けている）を書込んだ後の状態である。この書込みによって、論理区画Ａの旧版ソフトウェアイメージ１１２を格納している物理区画２が予備区画となる。
【００５８】
状態５０５は新版生成部１０２及び書込み処理部１０３によって論理区画Ｂに対する処理が完了した後の状態である。ここでは論理区画Ｂのソフトウェアイメージには変更がないことを想定している。即ち、論理区画Ｂの新版ソフトウェアイメージ１１３は旧版ソフトウェアイメージ１１２と同一である。そのため、新版生成部１０２では新版ソフトウェアイメージ１１３をＲＡＭ１２１上に生成せず、書込み処理部１０３は旧変換テーブルの論理区画Ｂに対する変換レコード（論理区画Ｂと物理区画３を対応付けている）を新変換テーブルにコピーしている。
【００５９】
状態５０６，５０７，５０８への遷移は論理区画Ｃに対するもので、そこに至る処理内容は論理区画Ａに対する状態５０２，５０３，５０４への遷移時の処理内容と同様である。論理区画Ｃは最終論理区画であるため、状態５０８になった後は、書込み処理部１０３が新変換テーブルの内容で旧変換テーブルを上書きし、アップデート処理が完了する。この結果、情報処理装置１００の次回起動時には新版ソフトウェアイメージ１１３で動作する。即ち、ソフトウェア実行部１０５は新版ソフトウェアを実行する。
【００６０】
以上、本実施の形態における情報処理装置１００の動作例について説明したが、以下では、これを、バックアップを用いる従来技術と比較する。
【００６１】
バックアップを用いる場合には、例えば論理区画Ａに対する処理では、新版ソフトウェアイメージ１１３を生成後、それを予備区画にバックアップとして書込んだ後に物理区画２に新版ソフトウェアイメージ１１３を書込むことになる。したがって、本実施の形態では１つの論理区画に対して必要な書込みは１回であるのに対し、バックアップを用いる場合には書込みが２回必要となる。
【００６２】
バックアップを用いる場合には変換テーブルへの書込みは必要ないものの、本実施の形態で新変換テーブルへ書込むデータは、更新対象ソフトウェアのサイズにかかわらず、データ量が少なくて済む上に、不揮発メモリ１２２には追記するだけでよい。ＮＯＲ・Ｆｌａｓｈ・ＲＯＭはその特性上、上書きには時間を要するが追記は短い時間でできる。また、バックアップを用いる場合には変換テーブルは必要ないが、少なくともどの論理区画まで更新が完了したかどうかについての情報を不揮発メモリ上に記録する必要があるので、本実施の形態と小さいデータ量の書込みの回数にはそれほど違いがない。
【００６３】
このように、バックアップを用いる従来技術と比較すると、本実施の形態では短い時間でアップデート処理を行うことができるという利点がある。
【００６４】
図８は、電源切断後の再開処理での動作例を示している。
【００６５】
この例では、図７の状態５０３になる直前まで、つまり予備区画である物理区画１に論理区画Ａの新版ソフトウェアイメージ１１３が完全には書込まれていない状態で電源切断が発生した場合を考える。
【００６６】
この場合、電源復帰直後の状態は図８の状態５１１のようになる。ＲＡＭ１２１上のデータは電源切断によって消失するので、状態５１１では、状態５０２で生成されていた論理区画Ａの新版ソフトウェアイメージ１１３は消失している。この状態に対して再開処理部１０４は再開論理区画の特定を行う。新変換テーブルには変換レコードが全く存在しないため、再開論理区画は論理区画Ａであることが分かる。この情報を受けて新版生成部１０２が論理区画Ａの新版ソフトウェアイメージ１１３をＲＡＭ１２１上に生成する。このとき、参照する必要のある論理区画Ａの旧版ソフトウェアイメージ１１２は物理区画２上に残っているので（旧版ソフトウェアイメージ１１２の位置は旧変換テーブルから判断できる）、新版生成部１０２は新版ソフトウェアイメージ１１３を問題なく生成することができ、その結果、状態５１２に遷移する。状態５１２は図７の状態５０２と同様であるから、これ以降の動作は図７の状態５０３以降と同じになる。
【００６７】
図９は、電源切断後の再開処理での別の動作例を示している。
【００６８】
この例では、図７の状態５０４になる直前まで、つまり予備区画である物理区画１に論理区画Ａの新版ソフトウェアイメージ１１３が書込まれているが、新変換テーブルに論理区画Ａに対する変換レコードがない状態で電源切断が発生した場合を考える。
【００６９】
この場合、電源復帰直後の状態は図９の状態５２１のようになる。ＲＡＭ１２１上のデータは電源切断によって消失するので、状態５２１でも、状態５０２で生成されていた論理区画Ａの新版ソフトウェアイメージ１１３は消失している。この状態に対して再開処理部１０４が再開論理区画の特定を行うと、再開論理区画は論理区画Ａとなる。このため、新版生成部１０２は論理区画Ａの新版ソフトウェアイメージ１１３をＲＡＭ１２１上に生成し、その結果、状態５２２に遷移する。そして、書込み処理部１０３が既に論理区画Ａの新版ソフトウェアイメージ１１３の書込まれた物理区画１に再度新版ソフトウェアイメージ１１３を書込み、その結果、状態５２３に遷移する。状態５２３は図７の状態５０３と同様であるから、これ以降の動作は図７の状態５０４以降と同じになる。
【００７０】
図１０は、電源切断後の再開処理での別の動作例を示している。
【００７１】
この例では、図７の状態５０５になる直前まで、つまり論理区画Ａの更新は完了して論理区画Ｂに対する変換レコードが新変換テーブルに未だ追記されていない状態で電源切断が発生した場合を考える。
【００７２】
この場合、電源復帰直後の状態は図１０の状態５３１のようになる。この状態では新変換テーブルに論理区画Ａに対する変換レコードが書込まれているので、再開処理部１０４が再開論理区画の特定を行うと、再開論理区画は論理区画Ｂとなる。論理区画Ｂには変更がないので、新版生成部１０２と書込み処理部１０３の処理の結果、状態５３２に遷移する。これ以降の動作は図７の状態５０６以降と同じになる。
【００７３】
図示していないが、図７の状態５０７になる直前、つまり予備区画である物理区画２に論理区画Ｃの新版ソフトウェアイメージ１１３が完全には書込まれていない状態で電源切断が発生した場合の動作は、状態５０３になる直前までの動作とほぼ同じである。主な違いは、新変換テーブルに他の論理区画に対する変換レコードが存在するため再開論理区画が次の論理区画である論理区画Ｃと判定されることや予備区画の位置が物理区画２であること（これは新変換テーブルの論理区画Ａ，Ｂに対する変換レコードや旧変換テーブルの論理区画Ｃに対する変換レコードから判定できる）である。同様に、図７の状態５０８になる直前で電源切断が発生した場合の動作は、状態５０４になる直前までの動作とほぼ同じである。
【００７４】
以上のように、本実施の形態によれば、アップデート処理のどのタイミングで電源切断が発生しても復帰後にアップデート処理を正常に再開できる。また、バックアップ処理が不要であることから、電源切断が発生しない通常のケースでの不揮発メモリに対する書込み回数がバックアップを行う場合よりも少なくなり、結果としてアップデート処理時間が短くなる。
【００７５】
以上説明した通り、本実施の形態では、旧版データ（更新対象ソフトウェア）を新版データに更新するデータ更新装置（情報処理装置１００）において、第１のメモリ（不揮発メモリ１２２）上にｎ＋１個（ｎ＞１）（上記例では４個）の記憶領域（上記例では物理区画１〜４）が設けられる。ｎ＋１個の記憶領域のうち、ｎ個（上記例では３個）の記憶領域の各々に、旧版データをｎ分割（上記例では３分割）してなる１〜ｎ番目の旧版分割データ（上記例では論理区画Ａ〜Ｃの旧版ソフトウェアイメージ１１２）が１つずつ格納される。残り１個の記憶領域が予備領域（予備区画）として設定される。１〜ｎ番目の旧版分割データが格納された記憶領域の識別子（物理区画番号）が１〜ｎ番目の旧版識別子（上記例では旧変換テーブルの変換レコード）として第２のメモリ（不揮発メモリ１２２）に格納される。
【００７６】
差分入力部（差分受信部１０１）は、旧版データと新版データとの差分を示す差分情報（差分データ１１１）を入力する。
【００７７】
新版生成部は、第２のメモリに格納された１〜ｎ番目の旧版識別子で特定される記憶領域から１〜ｎ番目の旧版分割データを順次読み取り、ｉ番目（ｉ＝１，・・・，ｎ）の旧版分割データを読み取る度に、差分入力部により入力された差分情報に基づいて、ｉ番目の新版分割データ（上記例では論理区画Ａ〜Ｃの新版ソフトウェアイメージ１１３）を生成する。
【００７８】
書込み処理部は、新版生成部によりｉ番目の新版分割データが生成される度に、予備領域にｉ番目の新版分割データを書込み、ｉ番目の旧版分割データが格納された記憶領域を予備領域として設定し、ｉ番目の新版分割データが格納された記憶領域の識別子をｉ番目の新版識別子（上記例では新変換テーブルの変換レコード）として第２のメモリに書込む。
【００７９】
再開処理部は、新版生成部又は書込み処理部による処理の途中で電源が切断され、再び電源が投入されたときには、第２のメモリに格納されていない新版識別子を確認し、第２のメモリに格納されていない新版識別子がｊ〜ｎ番目（１≦ｊ≦ｎ）の新版識別子の場合には、新版生成部に、ｉ＝ｊ（再開論理区画の論理区画番号）として処理を再開させる。
【００８０】
書込み処理部は、ｉ番目の旧版分割データとｉ番目の新版分割データとに差分がない場合には、予備領域にｉ番目の新版分割データを書込まず、ｉ番目の旧版分割データが格納された記憶領域を予備領域として設定せずに、ｉ番目の旧版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として第２のメモリに書込んでもよい。
【００８１】
新版生成部は、ｉ番目の旧版分割データとｉ番目の新版分割データとに差分がない場合には、ｉ番目の新版分割データを生成せずに、書込み処理部に、ｉ番目の旧版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として第２のメモリに書込ませてもよい。
【００８２】
書込み処理部は、新版生成部によりｉ番目の新版分割データが生成される度に、第２のメモリに格納された１〜ｎ番目の旧版識別子に基づいて、予備領域を特定してもよいし、第３のメモリ（不揮発メモリ１２２）に予備領域の識別子が格納される場合には、予備領域を設定する度に、第３のメモリに格納された予備領域の識別子を上書きし、新版生成部によりｉ番目の新版分割データが生成される度に、第３のメモリに格納された予備領域の識別子で予備領域を特定してもよい。
【００８３】
また、前述した通り、本実施の形態に係る組込み情報機器は、
ソフトウェアを不揮発メモリ上に格納し、ＭＭＵを介して前記ソフトウェアを不揮発メモリ上で直接実行する組込み情報機器であって、
ソフトウェアを新版に更新するための差分データを組込み情報機器の外部から取得して不揮発メモリ上に格納する差分受信部と、
ソフトウェアが同一サイズの複数区画から構成されるという前提のもとで、一区画分の新版ソフトウェアを、差分データの一部と不揮発メモリ上のソフトウェアから生成する新版生成部と、
生成された一区画分の新版ソフトウェアが旧版ソフトウェアから更新されていない場合には新版ソフトウェア書込みを行わず当該区画の識別情報を不揮発メモリ上に記録し、更新されている場合には前記一区画分の新版ソフトウェアを不揮発メモリ上に用意された予備区画に書込み、ＭＭＵが前記予備区画を新版ソフトウェアにおける当該区画とし、旧版ソフトウェアでは当該区画であった区画を予備区画とするように設定するための情報を不揮発メモリ上に記録し、当該区画の識別情報を不揮発メモリ上に記録する書込み処理部と、
組込み情報機器での電源切断発生からの復帰時に動作し、不揮発メモリ上に記録された区画の識別情報をチェックして、次に新版生成部が処理の対象とする区画を選択する再開処理部とを備えることを特徴とする。
【００８４】
また、新版生成部は、新版ソフトウェアの一区画が旧版ソフトウェアから更新されないと判定した場合には当該区画分の新版ソフトウェアを生成しないことを特徴とする。
【００８５】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００８６】
本実施の形態では、区画内のブロック単位で更新の有無を見ることで、書込み回数を少なくすることができる。
【００８７】
以下、情報処理装置１００の処理手順の詳細について説明する。
【００８８】
まず、本実施の形態における新版生成部１０２の処理手順を説明する。
【００８９】
新版生成部１０２は対象論理区画の新版ソフトウェアイメージ１１３を生成する際に、当該論理区画内の各ブロックで更新が発生しているかどうかについての情報を生成する。そして、この情報を書込み処理部１０３に引き渡す。また、ＲＡＭ１２１上に生成する新版ソフトウェアイメージ１１３に関しても、全体を生成するか全く生成しないかの２択ではなく、新版ソフトウェアイメージ１１３のうち、更新が発生しているブロック（以下、「更新ブロック」という）に対応する部分のみを生成するという選択肢を用意してもよい。
【００９０】
図１１は、本実施の形態における書込み処理部１０３の処理手順を示すフローチャートである。
【００９１】
手順Ｓ６０１は図６の手順Ｓ４０１と同様である。
【００９２】
手順Ｓ６０１での判定の結果、新版ソフトウェアイメージ１１３と旧版ソフトウェアイメージ１１２が異なる場合、書込み処理部１０３は手順Ｓ６０２で更新ブロック数が一定値（閾値）以上であるかどうかを判定する。この一定値は例えば区画内ブロック数の半分とする。即ち、１つの区画の容量を不揮発メモリ１２２（第１のメモリ）の書込み単位で割った数の半分とする。
【００９３】
手順Ｓ６０２での判定の結果、更新ブロック数が一定値以上である場合、図６の手順Ｓ４０２と同様に、書込み処理部１０３は手順Ｓ６０３で予備区画に新版ソフトウェアイメージ１１３を書込む。ここで、新版生成部１０２が新版ソフトウェアイメージ１１３のうち、更新ブロックに対応する部分しか生成していない場合、更新ブロック以外のブロックの予備区画への書込みは不揮発メモリ１２２上の旧版ソフトウェアイメージ１１２を参照して行う。
【００９４】
手順Ｓ６０２での判定の結果、更新ブロック数が一定値未満の場合、書込み処理部１０３は手順Ｓ６０４、Ｓ６０５、Ｓ６０６でバックアップと上書きによって対象区画の更新を行う。最初に手順Ｓ６０４では、更新ブロックのみを予備区画に書込む（バックアップする）。予備区画内での書込み位置に関しては、予備区画内の先頭ブロックから順に書込んでもよいし、対象区画内の位置と同じ位置に書込んでもよい。次に手順Ｓ６０５では、更新ブロックの識別子（以下、「更新ブロック番号」という）と対象論理区画の論理区画番号をセットにしたバックアップレコードをいずれかの不揮発メモリ（第３のメモリ）（以下では、不揮発メモリ１２２とする）上のバックアップ情報に記録する。そして手順Ｓ６０６で、更新ブロックの上書きを行う。
【００９５】
手順Ｓ６０７で書込み処理部１０３は対象論理区画分の変換レコードを新変換テーブルに追記する。予備区画に新版ソフトウェアイメージ１１３を書込んだ後の場合には（手順Ｓ６０３から手順Ｓ６０７に進んだ場合）、当該論理区画の論理区画番号と書込み先である予備区画の物理区画番号とを対応付けて変換レコードに書込む。新版ソフトウェアイメージ１１３と旧版ソフトウェアイメージ１１２が同一であった場合（手順Ｓ６０１から手順Ｓ６０７に進んだ場合）、及び、更新ブロックを上書きした場合（手順Ｓ６０６から手順Ｓ６０７に進んだ場合）には、旧変換テーブルの対象論理区画分の変換レコードをそのまま新変換テーブルにコピーする。
【００９６】
手順Ｓ６０８、Ｓ６０９、Ｓ６１０はそれぞれ図６の手順Ｓ４０４、Ｓ４０５、Ｓ４０６と同様である。
【００９７】
図１２は、本実施の形態における再開処理部１０４の処理手順を示すフローチャートである。
【００９８】
再開処理部１０４は最初に手順Ｓ６１１で新変換テーブルの内容から再開論理区画を特定する。特定の方法は実施の形態１と同様である。再開処理部１０４は次に手順Ｓ６１２でバックアップ情報内に再開論理区画に対応するバックアップレコードがあるかどうかをチェックする。バックアップレコードが存在しない場合、再開処理部１０４は手順Ｓ６１３で再開論理区画の情報を新版生成部１０２に渡すことでアップデート処理を再開する。バックアップレコードが存在する場合、予備区画上に新版ソフトウェアイメージ１１３の一部（更新ブロック）がバックアップされているので、再開処理部１０４は手順Ｓ６１４で各更新ブロックを再開論理区画に上書きする。各更新ブロックの上書きが完了すると、再開処理部１０４は手順Ｓ６１５で図１１の手順Ｓ６０７以降と同じ処理を行った後、次の論理区画を再開論理区画とする情報を新版生成部１０２に渡すことでアップデート処理を再開する。再開処理部１０４は手順Ｓ６１５で書込み処理部１０３に図１１の手順Ｓ６０７以降の処理を行わせてもよい。
【００９９】
以下、情報処理装置１００の動作例を、図１３〜図１６を用いて説明する。
【０１００】
各図において、旧変換テーブル、新変換テーブルは実施の形態１における動作例と同一のルールで更新されるため省略する。なお、バックアップを行うかどうかを判定するための更新ブロック数の閾値（図１１の手順Ｓ６０２の一定値）は２とする。つまり、更新ブロック数が２以上であればバックアップを行わずに予備区画への新版ソフトウェアイメージ１１３の書込みを行い、更新ブロック数が１であれば更新ブロックのバックアップと上書きを行う。
【０１０１】
図１３は、電源切断を伴わない場合の動作例を示している。
【０１０２】
状態７０１は差分受信部１０１による差分データ１１１の取得、格納が終わった状態を示している。バックアップ情報は空の状態となっている。
【０１０３】
状態７０２は新版生成部１０２によって論理区画Ａの新版ソフトウェアイメージ１１３が生成された後の状態を示している。この例では区画内の１番目のブロックのみに更新が発生しているため、新版ソフトウェアイメージ１１３は１番目のブロックの部分だけがＲＡＭ１２１上に生成されている。更新ブロック数が１なので、書込み処理部１０３は１番目のブロックの内容を予備区画の１番目のブロックにバックアップし、その結果、状態７０３に遷移する。そして、書込み処理部１０３はバックアップ情報に論理区画Ａと更新ブロック番号１をセットにしたバックアップレコードを記録し、その結果、状態７０４に遷移する。その後、書込み処理部１０３はＲＡＭ１２１上に生成された１番目のブロックの内容で、現在論理区画Ａが割り当てられている物理区画２の１番目のブロックを上書きし、その結果、状態７０５に遷移する。図示していないが、上書きの後には新変換テーブルの先頭に論理区画Ａと物理区画２を対応させる変換レコードを書込む。
【０１０４】
状態７０６は新版生成部１０２によって論理区画Ｂの新版ソフトウェアイメージ１１３が生成された後の状態を示している。この例では区画内の１〜３番目のブロックのみに更新が発生しているため、新版ソフトウェアイメージ１１３は１〜３番目のブロックの部分だけがＲＡＭ１２１上に生成されている。更新ブロック数が３なので、書込み処理部１０３は予備区画に論理区画Ｂの新版ソフトウェアイメージ１１３を書込み、その結果、状態７０７に遷移する。この際、変更のない４番目のブロックに対応する部分の新版ソフトウェアイメージ１１３はＲＡＭ１２１上に生成されていないので、４番目のブロックに対応する部分のみ不揮発メモリ１２２上の物理区画３に格納されている旧版ソフトウェアイメージ１１２から予備区画にコピーしている。その後、論理区画Ｂの旧版ソフトウェアイメージ１１２を格納している物理区画３が予備区画となる。
【０１０５】
状態７０８は新版生成部１０２によって論理区画Ｃの新版ソフトウェアイメージ１１３が生成された後の状態を示している。この例では区画内の４番目のブロックのみに更新が発生しているため、新版ソフトウェアイメージ１１３は４番目のブロックの部分だけがＲＡＭ１２１上に生成されている。更新ブロック数が１なので、書込み処理部１０３は４番目ブロックの内容を予備区画の４番目ブロックにバックアップし、その結果、状態７０９に遷移する。その後の状態７１０，７１１への遷移は、論理区画Ａに対する状態７０４，７０５への遷移と同様である。状態７１１に遷移した後は、新変換テーブルへの変換レコードの追加、旧変換テーブルの上書きが行われ、アップデート処理が完了する。
【０１０６】
以上、本実施の形態における情報処理装置１００の動作例について説明したが、以下では、これを、一般的なバックアップを用いる技術と比較する。
【０１０７】
論理区画Ａの更新では、従来技術、本実施の形態ともに、バックアップの１回と上書きの１回で計２ブロック分の書込みが必要になると考えられる。論理区画Ｂの更新では、従来技術ではバックアップ３回と上書き３回の計６回の書込みが必要になると考えられるが、これに対し、本実施の形態では予備区画への書込みなので４ブロック分の書込みが行われる。論理区画Ｃについては論理区画Ａと同様である。よって、合計すると従来技術では１０回のブロック書込みが必要になると考えられ、これは本実施の形態における８回のブロック書込みより回数が多い。
【０１０８】
また、小さいサイズのデータであるバックアップ情報の追記に関しては、従来技術でも、少なくともどの論理区画まで更新が完了したかどうかについての情報とどのブロックをバックアップしているかについての情報を不揮発メモリ上に記録する必要があるので、本実施の形態と小さいデータ量の書込みの回数にはそれほど違いがない。
【０１０９】
このように、従来技術と比較すると、本実施の形態では短い時間でアップデート処理を行うことができるという利点がある。
【０１１０】
図１４は、電源切断後の再開処理での動作例を示している。
【０１１１】
この例では、図１３の状態７０４になる直前まで、つまりバックアップ情報が未登録の状態で電源切断が発生した場合を考える（予備区画である物理区画１の状態は任意）。
【０１１２】
この場合、電源復帰直後の状態は図１４の状態７２１のようになる。ＲＡＭ１２１上のデータは電源切断によって消失するので、状態７２１では、状態７０４で生成されていた論理区画Ａの新版ソフトウェアイメージ１１３の１番目の更新ブロックは消失している。この状態に対して再開処理部１０４は再開論理区画の特定を行う。新変換テーブルには変換レコードが全く存在しないため、再開論理区画は論理区画Ａとなり、論理区画Ａに対するバックアップレコードも存在しないので、論理区画Ａを対象として新版生成部１０２に処理を開始させる。これにより、新版生成部１０２が論理区画Ａの新版ソフトウェアイメージ１１３の１番目の更新ブロックをＲＡＭ１２１上に生成し、その結果、状態７２２に遷移する。状態７２２は図１３の状態７０２と同様であるから、これ以降の動作は図１３の状態７０３以降と同じになる。
【０１１３】
図１５は、電源切断後の再開処理での別の動作例を示している。
【０１１４】
この例では、図１３の状態７０４から状態７０５までの間であって、図示していない新変換テーブルの変換レコードの追加処理が完了する前の状態で電源切断が発生した場合を考える。
【０１１５】
この場合、電源復帰直後の状態は図１５の状態７３１のようになる（物理区画２の１番目のブロックの状態は任意）。この状態に対して再開処理部１０４が再開論理区画の特定を行うと、再開論理区画は論理区画Ａとなる。論理区画Ａに対応するバックアップレコードは存在するので、再開処理部１０４は予備区画である物理区画１の１番目のブロックにバックアップされた新版ソフトウェアイメージ１１３を、論理区画Ａの旧版ソフトウェアイメージ１１２が格納されている物理区画２の１番目のブロックに上書きし、その結果、状態７３２に遷移する。そして新変換テーブルに論理区画Ａに対する変換レコードを追加してから、対象論理区画を次の論理区画Ｂとして新版生成部１０２に処理を開始させる。状態７３２は図１３の状態７０５と同様であるから、これ以降の動作は図１３の状態７０６以降と同じになる。
【０１１６】
他の例として、図１３の状態７０５になる直前まで、つまり論理区画Ａに対するバックアップレコードは登録済みであるが、物理区画２の１番目のブロックへの新版ソフトウェアイメージ１１３の上書きが完了していない状態で電源切断が発生した場合を考える。
【０１１７】
この場合も、電源復帰直後の状態は図１５の状態７３１のようになる。この状態に対して再開処理部１０４が再開論理区画の特定を行うと、再開論理区画は論理区画Ａとなる。論理区画Ａに対応するバックアップレコードは存在するので、再開処理部１０４は予備区画である物理区画１の１番目のブロックにバックアップされた新版ソフトウェアイメージ１１３を物理区画２の１番目のブロックに上書きし、その結果、状態７３２に遷移する。そして新変換テーブルに論理区画Ａに対する変換レコードを追加してから、対象論理区画を次の論理区画Ｂとして新版生成部１０２に処理を開始させる。状態７３２は図１３の状態７０５と同様であるから、これ以降の動作は図１３の状態７０６以降と同じになる。
【０１１８】
図１６は、電源切断後の再開処理での別の動作例を示している。
【０１１９】
この例では、図１３の状態７０５から状態７０７までの間であって、図示していない新変換テーブルの変換レコードの追加処理が完了する前の状態で電源切断が発生した場合を考える。
【０１２０】
この場合、電源復帰直後の状態は図１６の状態７４１のようになる（物理区画１の状態は任意）。ＲＡＭ１２１上のデータは電源切断によって消失するので、状態７４１では、状態７０６で論理区画Ｂの新版ソフトウェアイメージ１１３の１〜３番目の更新ブロックが生成されていたとしても、これらの更新ブロックは消失している。この状態に対して再開処理部１０４が再開論理区画の特定を行うと、再開論理区画は論理区画Ｂとなるが、論理区画Ｂに対応するバックアップレコードは存在しないので、再開処理部１０４はそのまま対象論理区画を論理区画Ｂとして新版生成部１０２に処理を開始させる。これにより、新版生成部１０２が論理区画Ｂの新版ソフトウェアイメージ１１３の１〜３番目の更新ブロックをＲＡＭ１２１上に生成し、その結果、状態７４２に遷移する。状態７４２は図１３の状態７０６と同様であるから、これ以降の動作は図１３の状態７０７以降と同じになる。
【０１２１】
状態７０７以降は論理区画Ｃに対する処理が行われており、論理区画Ｃの場合も更新ブロック数は１であるから、論理区画Ａと同様にバックアップ処理が行われる。よって、状態７０７以降で電源切断が発生した場合、復帰後の再開処理は、論理区画Ａに対するものとほぼ同じとなる。
【０１２２】
以上のように、本実施の形態によれば、アップデート処理のどのタイミングで電源切断が発生しても復帰後にアップデート処理を正常に再開できる。また、各区画の更新ブロック数を元にブロックの書込み回数を低減していることから、電源切断が発生しない通常のケースでの不揮発メモリに対する書込み回数が従来技術より少なくなり、結果としてアップデート処理時間が短くなる。
【０１２３】
以上説明した通り、本実施の形態では、新版生成部は、ｉ番目の新版分割データを生成する代わりに、ｉ番目の新版分割データを第１のメモリの書込み単位ごとに分割してなる複数の新版単位データ（上記例では論理区画Ａ〜Ｃの新版ソフトウェアイメージ１１３の１〜４番目のブロック）のうち、ｉ番目の旧版分割データを第１のメモリの書込み単位ごとに分割してなる複数の旧版単位データ（上記例では論理区画Ａ〜Ｃの旧版ソフトウェアイメージ１１２の１〜４番目のブロック）との差分がある新版単位データをｉ番目の更新データ（更新ブロック）として生成する。
【０１２４】
書込み処理部は、新版生成部によりｉ番目の更新データが生成される度に、ｉ番目の更新データが閾値（一定値）以上の数の新版単位データを含む場合には、予備領域にｉ番目の更新データとｉ番目の旧版分割データの一部とをｉ番目の新版分割データを構成するように書込み、ｉ番目の旧版分割データが格納された記憶領域を予備領域として設定し、ｉ番目の新版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として第２のメモリに書込み、ｉ番目の更新データが閾値以上の数の新版単位データを含まない場合には、予備領域にｉ番目の更新データを書込み、前記予備領域にてｉ番目の更新データが格納された位置の識別子（更新ブロック番号）をｉ番目の更新識別子（バックアップ情報のバックアップレコード）として第３のメモリ（不揮発メモリ１２２）に書込み、ｉ番目の旧版分割データが格納された記憶領域の一部をｉ番目の更新データで上書きし、ｉ番目の旧版分割データが格納された記憶領域の識別子をｉ番目の新版識別子として第２のメモリに書込む。
【０１２５】
再開処理部は、新版生成部又は書込み処理部による処理の途中で電源が切断され、再び電源が投入されたときには、第２のメモリに格納されていない新版識別子を確認し、第２のメモリに格納されていない新版識別子がｊ〜ｎ番目（１≦ｊ≦ｎ）の新版識別子の場合には、さらに、第３のメモリにｊ番目の更新識別子が格納されているかどうかを確認し、第３のメモリにｊ番目の更新識別子が格納されている場合には、書込み処理部に、ｊ番目の旧版分割データが格納された記憶領域の一部を予備領域にてｊ番目の更新識別子で特定される位置に格納されたｊ番目の更新データで上書きさせ、ｊ番目の旧版分割データが格納された記憶領域の識別子をｊ番目の新版識別子として第２のメモリに書込ませた後、新版生成部に、ｉ＝ｊ＋１として処理を再開させ、第３のメモリにｊ番目の更新識別子が格納されていない場合には、新版生成部に、ｉ＝ｊとして処理を再開させる。
【０１２６】
また、前述した通り、本実施の形態に係る組込み情報機器において、
新版生成部は、一区画分の新版ソフトウェアを不揮発メモリ特有の書込み単位に分割し、書込み単位ごとに旧版ソフトウェアからの変更があるかどうかを判定し、
書込み処理部は、更新のある書込み単位の数が閾値以上である場合には実施の形態１と同様の書込み処理を行い、更新のある書込み単位の数が前記閾値未満である場合には、新版ソフトウェアのうち、更新のある書込み単位だけを予備区画にバックアップし、バックアップした書込み単位の識別情報を区画情報と関連付けて不揮発メモリ上に記録し、更新のある書込み単位のみを旧版ソフトウェアに上書きし、上書きの完了した区画の識別情報を不揮発メモリ上に記録し、
再開処理部は、不揮発メモリ上に記録された区画の識別情報と書込み単位の識別情報をチェックして、バックアップされた書込み単位の上書き処理が未完了である場合は上書きを行うことを特徴とする。
【０１２７】
また、書込み処理部がバックアップを行うかどうかを判定するための閾値は、区画内に含まれる書込み単位の数の１／２であることを特徴とする。
【０１２８】
以上、本発明の実施の形態について説明したが、これらのうち、２つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、１つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、２つ以上の実施の形態を部分的に組み合わせて実施しても構わない。
【図面の簡単な説明】
【０１２９】
【図１】実施の形態１に係る情報処理装置の構成を示すブロック図である。
【図２】実施の形態１における電源切断を伴わない場合の情報処理装置の処理手順の概要を示すフローチャートである。
【図３】実施の形態１における電源切断から復帰する場合の情報処理装置の処理手順の概要を示すフローチャートである。
【図４】実施の形態１におけるアップデート処理開始前の不揮発メモリ上における旧版ソフトウェアイメージの格納状態の一例を示す概念図である。
【図５】図４の論理アドレスを物理アドレスに変換するための変換テーブル、論理区画の識別子を物理区画の識別子に変換するための変換テーブルの一例を示す図である。
【図６】実施の形態１における書込み処理部の処理手順を示すフローチャートである。
【図７】実施の形態１における電源切断を伴わない場合の情報処理装置の動作例を示す図である。
【図８】実施の形態１における電源切断後の情報処理装置の動作例を示す図である。
【図９】実施の形態１における電源切断後の情報処理装置の動作例を示す図である。
【図１０】実施の形態１における電源切断後の情報処理装置の動作例を示す図である。
【図１１】実施の形態２における書込み処理部の処理手順を示すフローチャートである。
【図１２】実施の形態２における再開処理部の処理手順を示すフローチャートである。
【図１３】実施の形態２における電源切断後の情報処理装置の動作例を示す図である。
【図１４】実施の形態２における電源切断後の情報処理装置の動作例を示す図である。
【図１５】実施の形態２における電源切断後の情報処理装置の動作例を示す図である。
【図１６】実施の形態２における電源切断後の情報処理装置の動作例を示す図である。
【符号の説明】
【０１３０】
１００  情報処理装置、１０１  差分受信部、１０２  新版生成部、１０３  書込み処理部、１０４  再開処理部、１０５  ソフトウェア実行部、１１１  差分データ、１１２  旧版ソフトウェアイメージ、１１３  新版ソフトウェアイメージ、１２１  ＲＡＭ、１２２，１２３  不揮発メモリ、３０１，３０２  変換テーブル。
【図１】
0005057887.tif 000002
【図２】
0005057887.tif 000003
【図３】
0005057887.tif 000004
【図４】
0005057887.tif 000005
【図５】
0005057887.tif 000006
【図６】
0005057887.tif 000007
【図７】
0005057887.tif 000008
【図８】
0005057887.tif 000009
【図９】
0005057887.tif 000010
【図１０】
0005057887.tif 000011
【図１１】
0005057887.tif 000012
【図１２】
0005057887.tif 000013
【図１３】
0005057887.tif 000014
【図１４】
0005057887.tif 000015
【図１５】
0005057887.tif 000016
【図１６】
0005057887.tif 000017