(57)【要約】  【課題】  メモリ容量の増加を抑えてデータ更新する。  【解決手段】  ＦＲＯＭ１に記憶されている更新前データを更新用データで更新するためのデータ更新装置であって、更新前データを圧縮する圧縮部５と、更新用データをＦＲＯＭ１に格納させる更新用データコピー部４と、更新用データ及び更新前データのうち少なくとも更新用データに基づいて更新前データを更新する復元部７と、を備える。【選択図】  図１
2005258562.tif 000002
【特許請求の範囲】
【請求項１】
メモリに記憶されている更新前データを更新用データで更新するためのデータ更新装置であって、
前記更新前データを圧縮する圧縮手段と、
前記更新用データを前記メモリに格納させる格納制御手段と、
前記更新用データ及び前記更新前データのうち少なくとも前記更新用データに基づいて前記更新前データを更新する更新手段と、
を備えるデータ更新装置。
【請求項２】
請求項１記載のデータ更新装置であって、
前記更新用データは、更新前後の変更箇所を示す差分データであり、
前記圧縮手段は、前記更新前データのうち更新対象でない部分を圧縮し、
前記更新手段は、前記更新前データのうち更新対象である部分及び前記更新用データに基づいて前記更新前データを更新するデータ更新装置。
【請求項３】
請求項２記載のデータ更新装置であって、
圧縮した前記更新前データを伸張する伸張手段を備えるデータ更新装置。
【請求項４】
請求項１記載のデータ更新装置であって、
前記更新用データは、更新後のデータであり、
前記更新手段は、前記更新用データに基づいて前記更新前データを更新するデータ更新装置。
【請求項５】
請求項１ないし４のいずれか一項記載のデータ更新装置であって、
前記メモリは、不揮発性メモリであり、
フェイルセーフ機能を有するデータ更新装置。
【請求項６】
メモリに記憶されている更新前データを更新用データで更新するためのデータ更新方法であって、
前記更新前データを圧縮し、
前記更新用データを前記メモリに格納させ、
前記更新前データ及び前記更新用データのうち少なくとも前記更新用データに基づいて前記更新前データを更新するデータ更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに記憶されている更新前データを更新用データで更新するためのデータ更新装置及びデータ更新方法に関する。
【背景技術】
【０００２】
更新用データを外部から受信して、装置内のフラッシュメモリ（フラッシュＲＯＭ。ＦＲＯＭと略）等の不揮発性メモリに記憶されたプログラム等の書き換えを行うデータ更新装置が広く使用されている。従来のデータ更新装置では、装置内の電源が切れる等の理由により、データの書き換えが中断すると、プログラムが途中まで書き換わった不完全な状態で更新用データに加え既存データも消失してしまうため、再起動してもその後正常に動作しなくなるという問題があった。
【０００３】
そのため、プログラム等を記憶するフラッシュメモリ(不揮発性メモリ)を冗長的に準備して、更新後のプログラムの記憶領域と更新前のプログラムの記憶領域とを別に確保し、更新後プログラムの書き込みが完了するまでは更新前のプログラムを有効にしておき、書き込み完了後に更新後プログラムを有効にするデータ更新方法などが提案されている（例えば、特許文献１参照）。
【０００４】
図１１は、上記従来のデータ更新方法を実現するデータ更新装置の機能構成を示すブロック図である。データ更新装置は、主に、プログラム等を記憶する不揮発性メモリであるフラッシュメモリ２０、更新用データを外部から受信する更新用データ受信部３０、更新用データの一時記憶領域や作業用領域を含む揮発性メモリであるＲＡＭ（Random Access Memory）４０、上記各部の動作を制御する制御部５０、などで構成される。フラッシュメモリ２０は、同じデータ容量のプログラム領域Ａ２１とプログラム領域Ｂ２２を有し、さらにフラグ領域Ａ２３、フラグ領域Ｂ２４を有する。フラグ領域Ａ２３はプログラム領域Ａ２１の有効／無効を示すフラグＡを、フラグ領域Ｂ２４はプログラム領域Ｂ２２の有効／無効を示すフラグＢを、それぞれ記憶する領域である。
【０００５】
図１２は、図１１に示す従来のデータ更新装置のデータ更新動作手順を示すフローチャートである。はじめに、更新用データ受信部３０は、更新用データを外部から取得してＲＡＭ４０に一時格納する。上記従来例では、更新用データが更新後データそのものであるので、更新用データをそのままフラッシュメモリ２０のプログラム領域Ｂ２２に格納する（ステップＳ３０１）。更新用データの格納が完了した後にフラグ領域Ｂ２４を有効にすることでプログラム領域Ｂ２２のプログラムを有効にして（ステップＳ３０２）、その後、フラグ領域Ａ２３を無効にすることで更新前のデータが格納されているプログラム領域Ａ２１のプログラムを無効にする（ステップＳ３０３）。
【０００６】
上記一連のデータ更新動作が中断した場合、データ更新装置が再起動すると、制御部５０は、フラグ領域Ｂ２４のフラグＢが有効であるか否か、即ち、更新用データがフラッシュメモリに完全に格納された状態であるか否かを判定し（ステップＳ３０４）、有効である場合はプログラム領域Ｂ２２に保存されたプログラムで起動する（ステップＳ３０５）。一方、フラグＢが有効でない場合は、プログラム領域Ａ２１に保存された更新前のプログラムで起動できるので（ステップＳ３０６）、失敗したデータ更新動作をもう一度行うことができる。
【０００７】
以上のように従来のデータ更新方法によれば、プログラム等の書き換えが中断しても、更新前のプログラムが完全な状態で保存されるため、再起動後に動作することが保証される。
【０００８】
【特許文献１】特開平１１−３２８０４０号公報（第３〜６頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記のような従来の方法では、フラッシュメモリを冗長的に用意する必要がある為製造コストが高くなるという問題や、特に、携帯電話などの携帯端末では小型化が阻害されるという問題があった。
【００１０】
本発明は、上記事情に鑑みてなされたものであり、メモリ容量の増加を抑えてデータ更新が可能なデータ更新装置及びデータ更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のデータ更新装置は、メモリに記憶されている更新前データを更新用データで更新するためのデータ更新装置であって、前記更新前データを圧縮する圧縮手段と、前記更新用データを前記メモリに格納させる格納制御手段と、前記更新用データ及び前記更新前データのうち少なくとも前記更新用データに基づいて前記更新前データを更新する更新手段と、を備える。
【００１２】
上記構成によれば、更新前データを圧縮する手段を備えることにより、データを圧縮してメモリに空き領域を形成し、この空き領域に更新用データを格納してデータ更新を行うことができる為、メモリ容量の増加を抑えることができる。
【００１３】
また、本発明のデータ更新装置は、前記更新用データが、更新前後の変更箇所を示す差分データであり、前記圧縮手段が、前記更新前データのうち更新対象でない部分を圧縮し、前記更新手段が、前記更新前データのうち更新対象である部分及び前記更新用データに基づいて前記更新前データを更新する。上記構成によれば、更新用データのデータ量が少ないため、メモリ使用量を低減できる。
【００１４】
また、本発明のデータ更新装置は、圧縮した前記更新前データを伸張する伸張手段を備える。上記構成によれば、更新前データのうち更新対象である部分を更新し、圧縮した更新対象でない更新前データを伸張することにより、データ全体を復元できる。
【００１５】
また、本発明のデータ更新装置は、前記更新用データが、更新後のデータであり、前記更新手段が、前記更新用データに基づいて前記更新前データを更新する。上記構成によれば、更新用データが更新後のデータそのものであるため、更新前データを参照することなくデータを更新できる。
【００１６】
また、本発明のデータ更新装置は、前記メモリが、不揮発性メモリであり、フェイルセーフ機能を有する。上記構成によれば、更新前データや更新用データが不揮発性メモリに記憶されることにより、電源断があった場合でもデータが消失することなく保存され、フェイルセーフ機能を有することにより、データ更新作業が中断されても再起動後の動作を保証できる。
【００１７】
さらに、本発明のデータ更新方法は、メモリに記憶されている更新前データを更新用データで更新するためのデータ更新方法であって、前記更新前データを圧縮し、前記更新用データを前記メモリに格納させ、前記更新前データ及び前記更新用データのうち少なくとも前記更新用データに基づいて前記更新前データを更新する。
【発明の効果】
【００１８】
本発明のデータ更新装置及びデータ更新方法によれば、更新前データを圧縮することにより、メモリに空き領域を形成し、この空き領域に更新用データを格納してデータ更新を行うことができる為、メモリ容量の増加を抑えることができる。
【発明を実施するための最良の形態】
【００１９】
図１は、本発明の実施の形態を説明するためのデータ更新装置の機能構成を示すブロック図である。同図に示すデータ更新装置は、不揮発性メモリに記憶されている更新前データを更新用データで更新するためのものであり、主に、不揮発性メモリであるフラッシュメモリ１、更新用データを外部から取得する更新用データ受信部２、各データを一時的に記憶する揮発性のメモリであるＲＡＭ３、更新用データをフラッシュメモリ１に格納させる更新用データコピー部４、更新前データを圧縮する圧縮部５、圧縮した更新前データを伸張する伸張部６、更新用データ及び更新前データのうち少なくとも更新用データに基づいて更新前データを更新する復元部７、各部を制御する制御部８、などで構成される。
【００２０】
フラッシュメモリ１は、プログラム等を記憶する不揮発性メモリであり、プログラム等を記憶するプログラム領域１１、データ書き込み時にバックアップに使用するバックアップ領域１２、データ書き換えの進行状況を記憶するために使用するレジストリ領域１３、の３つの領域で構成される。更新用データ受信部２は、更新用データを外部から受信する。ＲＡＭ３は、更新用データの一時記憶領域や作業用領域を含む揮発性メモリで、ＤＲＡＭ（Dynamic RAM）やＰＳＲＡＭ（pseudo-Static RAM）等で構成される。
【００２１】
圧縮部５は、フラッシュメモリ１に既に保存されているプログラム等のデータ（更新前データ）を圧縮する。更新用データコピー部４は、更新用データをＲＡＭ３からフラッシュメモリ１へコピーする。更新用データコピー部４は、圧縮部５が更新前データを圧縮して形成したフラッシュメモリ１の空き領域に、更新用データをコピーする。伸張部６は、圧縮されたプログラム等のデータを伸張する。復元部７は、更新用データとフラッシュメモリ内にある更新前データの更新が必要な部分のデータ、または更新用データのみを用いて、更新後のデータを復元する。制御部８は、上記各部の動作を制御して、進行状況のレジストリ領域１３への書き込みやレジストリ内容の解釈を行う。
【００２２】
図２は、図１に示すデータ更新装置のデータ更新動作手順を示すフローチャートである。はじめに、更新用データ受信部２は、更新用データを外部から取得し、ＲＡＭ３の更新用データ一時記憶領域に格納する（ステップＳ１０１）。そして、制御部８を介して、フラッシュメモリ１のレジストリ領域１３に「書き換え必要」状態を記憶する（ステップＳ１０２）。ここで、制御部８は、レジストリ領域１３のレジストリの内容を判断し（ステップＳ１０３）、レジストリの内容が「書き換え必要」の場合はデータ書き換えの初回と判断して次のステップＳ１０４へ、「書き換え再開」の場合は中断したデータ書き換えの再開と判断してステップＳ１１０へ、「書き換え不要」の場合は初期化済みで書き換え不要と判断してデータ更新動作を終了し、通常の起動へ移行する。レジストリの内容が「書き換え必要」である場合、次に、制御部８はレジストリ領域１３に「書き換え開始」状態を記憶し（ステップＳ１０４）、以降はフラッシュメモリ１へのデータ書き込みが1ブロック分完了するごとにレジストリ領域１３に進行状況の書き込みを行う。ここでブロックとは、フラッシュメモリの消去単位を指す。
【００２３】
次に、プログラム領域１１に格納された既存のプログラムの一部圧縮動作を行う（ステップＳ１０５）。ここでは、プログラム領域１１上のデータで、更新が必要ない部分のデータを、圧縮部５によってフラッシュメモリの1ブロックごとに圧縮し、上書きする。
【００２４】
図３は、圧縮部５の圧縮動作を詳細に説明するための図であり、プログラム領域１１内の更新不要な部分のデータ（書き換えを行わないデータ）に対して行われるデータ圧縮の様子を概念的に示す。尚、プログラム領域１１の既存のデータは、予め、データの書き換えを行わない部分の領域Ａ１１ａと、データの書き換えを行う部分の領域Ｂ１１ｂ、とに分けられており、図では、データの書き換えを行わない部分（即ち、領域Ａ）だけを記載している（図３では領域Ｂは図示省略）。
【００２５】
圧縮部５は、各ブロックのデータを1ブロック単位で圧縮するが、上記の通り、圧縮するのは更新が不要なプログラム領域Ａにあるデータであり、これは、更新用データに、プログラムのどこを更新してどこを更新しないのか等の情報を予め含めておき、その情報に基づいて制御部８が更新不要な部分を判断して領域Ａに分ける。
【００２６】
制御部８は、圧縮部５が圧縮したプログラムデータをＲＡＭ３上に蓄積し、フラッシュメモリ１の１ブロック分以上のサイズになった時点で、フラッシュメモリへの書き込みを行う。圧縮したプログラムデータを領域Ａに書き込む際は、書き込み中に電源断等が起きて当該ブロックのデータが失われたり、書き込み途中の状態になったりしてしまわないように、同じフラッシュメモリ１上のバックアップ領域１２を用いる。このバックアップ領域１２は、プログラムデータ等が書き込まれていない空き領域であって、予め１ブロック分用意しておく必要がある。
【００２７】
図において、圧縮する領域のブロックをX1、X2、・・、Xnとし、ブロックXkに書かれているデータをAkとすると、ここではXnから（添え字の降順に）圧縮が行われる（図３（ａ））。圧縮後のデータ（a1、a2、・・、an）は、はじめにバックアップ領域１２に書き込まれる（図３（ｂ））。圧縮後の方がサイズは小さくなるため、Anを圧縮したデータanはすべてバックアップ領域内に記憶される。よって、anがバックアップ領域に記憶された後、ブロックXnには書き込みが行えるようになる。一方、この間に中断が起きても、バックアップ領域１２にan（を含むデータ）が記憶されているので、これを伸張してAnを得ることができ、元のXnに書き込めば、更新前の状態に戻すことが可能である。
【００２８】
以下も同様で、Xkにデータの書き込みを行うときには、すでにXk+1、・・、Xn、またはバックアップ領域にakが書かれていることが保証される。つまり、この書き込み手順のどの時点においても、各ブロックのデータAkまたはakの少なくとも一方がフラッシュメモリ上に記憶されているため、データ更新動作が中断されても必ず更新前の状態に戻すことができる。これにより、処理が中断された場合であっても再起動後の動作が保証される機能（フェイルセーフ機能）が、圧縮処理中のどの時点においても実現される。
【００２９】
圧縮を実行していくと、An、An-1、・・の合計サイズとan、an-1、・・の合計サイズとの差が拡大し、この差が空き領域のサイズとなる。空き領域として、更新用データを格納できるブロック数＋１ブロック以上を確保できるまで圧縮を続ける。
【００３０】
図２のフローチャートに戻り、次に、上記の更新不要なプログラム領域の圧縮によって捻出されたフラッシュメモリ上の空き領域へ、ＲＡＭ３に格納しておいた更新用データをコピーする（ステップＳ１０６）。
【００３１】
図４は、更新用データをフラッシュメモリへ格納する様子を示す図であり、更新用データがＲＡＭ３からフラッシュメモリ１へコピーされる様子を概念的に示す。復元部７は、更新が必要な更新前データと更新用データとに基づいて更新後データの復元と書き込みを行う（ステップＳ１０７）。ここで更新用データは、更新前後の変更箇所を示す差分データである。差分データの生成方法やその差分データを用いた復元方法は、公知の手法を用いてかまわない。
【００３２】
図５は、領域Ｂの更新前データ（書換え対象データ）をＲＡＭにコピーする様子を示す図である。本実施の形態では、同図に示すように、プログラム領域１１の領域Ｂ１１ｂに格納されている書き換え対象のデータを一旦すべてＲＡＭ３にコピーした後、復元動作を行う。
【００３３】
図６は、復元部７によって行われる復元及び書き込みの様子を概念的に示す模式図である。図６（ａ）に示すように、ＲＡＭ３にコピーされた更新前データとプログラム領域１１の領域Ａに格納された更新用データとから更新後データが復元される。図６（ｂ）に示すように、更新後のデータは１ブロック単位でＲＡＭ３の更新前データが記憶されていたブロックへ上書きされ、領域Ｂに記録されていた全てのブロックについての復元が終了すると、図６（ｃ）に示すようにＲＡＭ上にすべての復元データが記憶される。
【００３４】
図７は、更新後データがフラッシュメモリへ格納される様子を概念的に示す模式図である。図において、更新する領域Ｂ１１ｂのブロックをY1、Y2、・・、Ym、ブロックY1に書かれている更新前のデータをデータB1、復元した更新後データをD1、とすると、圧縮によって確保した空き領域は、更新用データを格納してもまだ1ブロック分空いているので、D1をこの空き領域に書き込む（図７（ａ））。以下、D2がY1に、D3がY2に、という具合に書き込まれる（図７（ｂ））。このようにすることで、例えばDkの書き込み中に中断された場合、Dk-1以前の更新後データとBk以降の更新前データがフラッシュメモリ上に記憶されていることが保証される。更新用データもフラッシュメモリ１上に記憶されていることから、Bk以降の更新前データと更新用データとから、Dk以降の更新後データの復元を再開できる。最終的には、図７（ｃ）に示すような状態でデータの格納が完了する。
【００３５】
図８は、更新後のデータの移動の様子を概念的に示す模式図であり、最後のDmまで格納し終えた後の更新後データの移動の様子を示す。図に示すように、Dm（Ym-1に記憶されている）を本来書かれるべきYmの位置に書き込み、以下Dm-1、Dm-2と同様に移動させ、最後は空き領域に記憶しておいたD1をY1に書き込んで移動動作を終了する。この移動動作の最中、例えばYk-1に記憶されているDkをYkに書き込んでいるときに処理が中断された場合、Dk+1以降の更新後データは、すでに本来書かれるべきYk+1以降のブロックに記憶されていることが保証される。また、Dk以前の更新後データは、Yk-1以前のブロックまたは圧縮によって確保した空き領域に記憶されているので、Dk以前の更新後データの移動動作を再開できる。これにより、復元・書き込み処理中のどの時点においても、フェイルセーフ機能が実現できる。
【００３６】
再び図２のフローチャートに戻り、全ての復元動作が終了した後、伸張部５は、圧縮されていたデータを伸張し、元の位置へ書き戻す（ステップＳ１０８）。この処理も1ブロック単位で行われる。
【００３７】
図９は、圧縮データを伸張する様子を概念的に示す模式図であり、プログラム領域１１の領域Ａに格納されていた圧縮データが伸張される様子を概念的に示す。伸張は、圧縮と逆の順番で行われる。伸張時において、akはXk+1以降のブロックに書き込まれていることが保証されているので、akを伸張したAkをＲＡＭ３で取得したら、それを直接フラッシュメモリ上のXkに書き込むことが可能である。Akの書き込み中に動作が中断されても、再度フラッシュメモリ上に格納されたakの伸張から再開すればよい。これにより、伸張処理中のどの時点においても、フェイルセーフ機能が実現できる。最後に、レジストリ領域１３のレジストリ内容を初期化してデータ更新動作が終了する（ステップＳ１０９）。
【００３８】
フローチャートのステップＳ１０３において、「書き換え再開」と判断された場合、レジストリの内容から、どこでデータ更新動作が中断されたかを判断する（ステップＳ１１０）。復元及び書き込み動作中（即ち、図２のフローチャートのステップＳ１０７）に中断した場合、ステップＳ１０７から再開する。レジストリの内容から、中断前にどのブロックまで復元及び書き込みが完了したかを判断し、次に処理すべきブロックから復元及び書き込みを開始する。また、圧縮データの伸張中（即ち、ステップＳ１０８）に中断した場合、ステップＳ１０８から再開する。レジストリの内容から、中断前にどのブロックまで伸張が完了したかを判断し、次に処理すべきブロックから伸張を開始する。
【００３９】
ステップＳ１１０において、更新用データがフラッシュメモリへ完全に格納される前（即ち、ステップＳ１０６以前）に中断したと判断された場合は、再起動すると、更新用データの一部または全部が失われており、更新を再開することができない。そのため、更新前の状態へと復帰させる。まず伸張部６が圧縮データを伸張し（ステップＳ１１１）、制御部８がレジストリ領域１３の内容を初期化して（ステップＳ１１２）、更新前の状態への復帰作業を終了する。この復帰作業中に再度中断が生じた場合は、再起動すると、ステップＳ１１０で復帰作業中に中断されたと判断し、この復帰作業を再開できる。この復帰の動作（ステップＳ１１１）は、更新後の伸張（ステップＳ１０８）と同様の動作であり、復帰処理中のどの時点においても、フェイルセーフ機能が実現できる。更新をやり直す場合には、再度ステップＳ１０１から更新の手順を繰り返せばよい。
【００４０】
以上のように、本実施形態のデータ更新装置は、圧縮、復元、伸張、復帰のどの処理中においても、フェイルセーフ機能を有するため、データ更新中に動作が中断した場合、最悪の事態でもそれまで行っていた更新動作が破棄されるだけで、再起動不能となることはなく、再起動後の動作が保証される。
【００４１】
尚、上記の実施の形態では、バックアップ領域１２として１ブロック（一般には128KB程度）を、レジストリ領域１３として２ブロックを確保した（フラッシュメモリによっては、一部のブロックが小さいサイズ(16KB程度)であるので、それを利用すると、必要なフラッシュメモリのサイズを削減できる。あるいはバックアップ電源付SRAM等を用いてもよい）。
【００４２】
ところで、レジストリ領域１３には、圧縮、復元、伸張、復帰の各処理において、フラッシュメモリへの1ブロックの書き込みが行われるごとに進行状況が記憶される。具体的には、どのステップの処理をしているか、どのブロックまで圧縮、復元、伸張、復帰の処理を行ったかが記憶される。即ち、圧縮の場合、圧縮されたデータがどこまで記憶されたか（a1,a2等の、何バイト目まで記憶されたか）及びそれがどのブロックに記憶されたか（空き領域やX1,X2等）、復元の場合、どこまで復元されて記憶されたか（D1,D2等）及びそれがどこに記憶されたか（Y1,Y2等）、伸張および復帰の場合、どこまで伸張されて記憶されたか（A1,A2等）、について記憶される。
【００４３】
尚、レジストリを更新しているときに中断が生じたときのことを想定して、R1、R2と二つのレジストリ領域を用意しておくことが好ましい。具体的には、まずR1に進行状況を書き、次はR2に書き、と交互に繰り返す。レジストリ領域に記憶させる情報として、通し番号も順次記憶させていくことにより、どちらが最新の情報を記憶しているかを判断できるようにする。レジストリへの書き込み中に電源断があったかどうかは、チェックサム等の誤り検出技術で検査可能である。レジストリへの書き込み中に電源断があった場合、再起動時にはもう一方のレジストリの内容を最新の情報と解釈して処理を再開する。
【００４４】
図１０は、制御部８が再起動時などに行なう最新レジストリの判定手順を示すフローチャートである。はじめに、R1のチェックサムを判定する（ステップＳ２０１）。チェックサムが正常である場合、R1のレジストリ領域に記憶された通し番号を読み込む（ステップＳ２０２）。次に、R2のチェックサムを判定する（ステップＳ２０３）。R2のチェックサムが異常である場合、R1のレジストリ領域に記録された内容が最新データであると判定する。R2のチェックサムが正常である場合、R2のレジストリ領域に記憶された通し番号を読み込む（ステップＳ２０４）。そして、通し番号を比較して、通し番号が大である方のレジストリ領域に記録された内容が最新データであると判定する（ステップＳ２０５）。
【００４５】
一方、ステップＳ２０１でR1のチェックサムが異常であると判定された場合、次に、R2のチェックサムを判定し（ステップＳ２０６）、R2のチェックサムが正常である場合は、R2のレジストリ領域に記録された内容が最新データであると判定する。R2のチェックサムが異常である場合は、R1、R2ともに異常であると判断して、異常終了する。
【００４６】
尚、上記の実施の形態では、更新前データのどこを更新して、どこを更新しないのか等の情報を更新用データに予め含めておき、これをもとに更新不要の領域を把握してその領域を圧縮対象としたが、絶対に更新しない領域がある場合は、その領域を常に圧縮対象とするようにしてもよい。
【００４７】
また、上記の実施の形態では、圧縮されたデータの書き込み時において、はじめにバックアップ領域に書き込み、次はXn、Xn-1、・・と書き込むようにしたが、圧縮対象となる領域の各ブロックについて、どの時点においても、圧縮前のデータ（Ak等）と圧縮されたデータ（ak等）のいずれか一方がフラッシュメモリ上に記憶されているという条件を満たせば、他の書き込み方法でもよい。例えば、バックアップ領域にAnまたはanを含む圧縮されたデータを書き込んでバックアップし、それからXnにanを含む圧縮されたデータを書き込むようにしてもかまわない。伸張は、圧縮と逆順に行えばよい。
【００４８】
また、上記の実施の形態では、復元された更新後データの書き込み時において、D1を空き領域に書き込み、D2はY1に、D3はY2に、・・と書き込むようにしたが、更新対象となる領域の各ブロックについて、どの時点においても、更新前のデータ(Bk等)と復元された更新後データ（bk等）のいずれか一方がフラッシュメモリ上に記憶されているという条件を満たせば、他の書き込み方法でもよい。例えば、まずB1を空き領域に書き込んでバックアップしてからD1をY1に書き込む、という動作をくりかえすようにしてもかまわない。
【００４９】
更に、上記の実施の形態では、更新用データは更新前後のデータの差分としていたが、更新用データの一部または全部が、更新後データそのものであってもよいし、更新後データを圧縮や暗号化等によって変形させたものであってもよい。更新用データが更新後データそのものである場合、更新前データを参照することなくデータを更新できる。更新用データとして差分データを用いる場合は、復元時に更新前データを参照することが必要となる。ここで、Dkを復元する際に、Bkだけを参照する場合は実施例で書いた方法で問題がないが、Bk-1も参照しなければならない場合DkをYk-1に書き込んでいるときに中断されると、Bk-1が消失するため、復元を再開することができない。このような場合には、圧縮時に空き領域を更新用データ記憶用以外に２ブロック確保しておき、D1、D2を空き領域に、D3をY1に記憶する、というように２ブロックずらして記憶すればよい。一般に、参照範囲がiブロック前まで及ぶ場合は、更新用データ記憶用以外にi+1ブロックの空き領域を確保することが必要となる。
【００５０】
また、上記の実施の形態では、R1、R2の２つのレジストリ領域を確保して交互に内容の更新を行うようにしたが、常にR1とR2に同じ最新の情報を記憶するようにしてもかまわない。
【００５１】
また、上記の実施の形態では、領域Ｂの更新前データ（書換え対象データ）をＲＡＭ３にコピーして、ＲＡＭ３上の更新前データを参照しながら更新後データの復元を行うようにしたが、フラッシュメモリ上の更新前データを直接参照するようにしてもかまわない。
【００５２】
また、上記の実施の形態では、更新後データをすべて復元してからフラッシュメモリへ格納するようにしたが、一部の更新後データを復元しては格納するという動作をくりかえすようにしてもかまわない。
【００５３】
また、上記の実施の形態では、処理の単位であるブロックをフラッシュメモリの消去単位（一般に128KB程度）としたが、消去単位の整数倍を１ブロックとしてもかまわない。
【産業上の利用可能性】
【００５４】
本発明のデータ更新装置及びデータ更新方法は、更新前データを圧縮することにより、メモリに空き領域を形成し、この空き領域に更新用データを格納してデータ更新を行うことができる為、メモリ容量の増加を抑えることができる効果を有し、例えば携帯端末等といった、メモリに記憶されている更新前データを更新用データで更新するデータ更新装置及びデータ更新方法等に有用である。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施の形態を説明するためのデータ更新装置の機能構成を示すブロック図である。
【図２】図１に示すデータ更新装置のデータ更新動作手順を示すフローチャートである。
【図３】圧縮部の圧縮動作を詳細に説明するための図である。
【図４】更新用データをフラッシュメモリへ格納する様子を示す図である。
【図５】領域Ｂの更新前データ（書換え対象データ）をＲＡＭにコピーする様子を示す図である。
【図６】復元部によって行われる復元及び書き込みの様子を概念的に示す模式図である。
【図７】更新後データがフラッシュメモリへ格納される様子を概念的に示す模式図である。
【図８】更新後のデータの移動の様子を概念的に示す模式図である。
【図９】圧縮データを伸張する様子を概念的に示す模式図である。
【図１０】制御部が再起動時などに行なう最新レジストリの判定手順を示すフローチャートである。
【図１１】従来のデータ更新方法を実現するデータ更新装置の機能構成を示すブロック図である。
【図１２】図１１に示す従来のデータ更新装置のデータ更新動作手順を示すフローチャートである。
【符号の説明】
【００５６】
１  フラッシュメモリ
２  更新用データ受信部
３  ＲＡＭ
４  更新用データコピー部
５  圧縮部
６  伸張部
７  復元部
８  制御部
１１  プログラム領域
１１ａ  プログラム領域の領域Ａ
１１ｂ  プログラム領域の領域Ｂ
１２  バックアップ領域
１３  レジストリ領域
【図１】
2005258562.tif 000003
【図２】
2005258562.tif 000004
【図３】
2005258562.tif 000005
【図４】
2005258562.tif 000006
【図５】
2005258562.tif 000007
【図６】
2005258562.tif 000008
【図７】
2005258562.tif 000009
【図８】
2005258562.tif 000010
【図９】
2005258562.tif 000011
【図１０】
2005258562.tif 000012
【図１１】
2005258562.tif 000013
【図１２】
2005258562.tif 000014