(57)【要約】【課題】新旧プログラムを書換えるための情報としての差分情報を小さくすることを目的とする。【解決手段】新プログラムと旧プログラムとを記憶するメモリ１０１と、上記メモリ１０１により記憶された新プログラムと旧プログラムとを比較し、新プログラムの各部に対し、新プログラムの一部と位置及び内容が同一である旧プログラムの第１の部分と新プログラムの一部と位置が異なるが内容が同一である旧プログラムの第２の部分と旧プログラムには存在しない新プログラムの第３の部分との内いずれかを判定し、判定された部分に基づいて、旧プログラムを新プログラムに書換えるための所定の情報を生成する所定情報生成部１２０と、上記所定情報生成部１２０により生成された所定の情報を出力する出力部１１１とを備えたことを特徴とする。【選択図】        図１
2004227520.tif 000002
【特許請求の範囲】
【請求項１】
新プログラムと旧プログラムとを記憶する記憶部と、
上記記憶部により記憶された新プログラムと旧プログラムとを比較し、新プログラムの各部に対し、新プログラムの一部と位置及び内容が同一である旧プログラムの第１の部分と新プログラムの一部と位置が異なるが内容が同一である旧プログラムの第２の部分と旧プログラムには存在しない新プログラムの第３の部分との内いずれかを判定し、判定された部分に基づいて、旧プログラムを新プログラムに書換えるための所定の情報を生成する所定情報生成部と、
上記所定情報生成部により生成された所定の情報を出力する出力部と
を備えたことを特徴とする新旧プログラム書換情報生成装置。
【請求項２】
上記所定情報生成部は、新プログラムの上段から順に、上記第１の部分に基づく場合に、上記旧プログラムの第１の部分を素通りすることを示す第１の情報を生成し、上記第２の部分に基づく場合に、上記旧プログラムの第２の部分の位置情報とデータ量とを示す第２の情報を生成し、上記第３の部分に基づく場合に、上記新プログラムの第３の部分のデータ量とデータとを示す第３の情報を生成することを特徴とする請求項１記載の新旧プログラム書換情報生成装置。
【請求項３】
上記所定情報生成部は、旧プログラムを新プログラムに書換えるためには上記第１の情報と上記第２の情報と上記第３の情報との内少なくとも２つの情報が必要な場合に、上記必要な内少なくとも２つの情報を新プログラムの上段から順に組合わせて上記所定の情報を生成することを特徴とする請求項２記載の新旧プログラム書換情報生成装置。
【請求項４】
上記所定情報生成部は、
上記記憶部により記憶された新プログラムと旧プログラムとを比較し、新プログラムの上段から順に、上記第１の部分と第２の部分とを検出する検出部と、
上記検出部により検出されなかった部分を第３の部分として、上記検出部により検出された第１の部分と第２の部分と上記検出部により検出されなかった第３の部分との内少なくとも１つを選択し、選択された部分に基づいて、旧プログラムを新プログラムに書換えるための所定の情報を生成する書換情報生成部と
を有することを特徴とする請求項１記載の新旧プログラム書換情報生成装置。
【請求項５】
上記書換情報生成部は、所定のワークメモリを用いて旧プログラムを新プログラムに書換をおこなう新旧プログラム書換装置の所定のワークメモリサイズを記憶し、上記所定の情報が上記記憶された所定のワークメモリサイズを超えないように上記所定の情報を生成することを特徴とする請求項４記載の新旧プログラム書換情報生成装置。
【請求項６】
上記書換情報生成部は、上記所定の情報が上記記憶された所定のワークメモリサイズを超える場合に、上記所定の情報を上段から順に分割して複数の情報にすることで上記所定の情報が所定のワークメモリサイズを超えないように生成し、
上記出力部は、上記書換情報生成部により生成された複数の情報を上段から順に出力し、上記出力するにあたり上記複数の情報のうち出力された前回の情報に基づいて上記新旧プログラム書換装置により旧プログラムが新プログラムに書換られるのを待って上記複数の情報のうち次の情報を上記新旧プログラム書換装置に出力することを特徴とする請求項５記載の新旧プログラム書換情報生成装置。
【請求項７】
上記所定のワークメモリは、上記出力部により出力された所定の情報を記憶し、上記新旧プログラム書換装置により旧プログラムが新プログラムに書換られると記憶された所定の情報を削除し、
上記書換情報生成部は、上記所定の情報が上記記憶された所定のワークメモリサイズを超える場合に、上記所定のワークメモリから削除されても構わないように上記所定の情報を上段から順に分割して複数の情報にすることで上記所定の情報が所定のワークメモリサイズを超えないように生成し、
上記出力部は、上記書換情報生成部により生成された複数の情報を上段から順に出力し、
上記書換情報生成部は、上記所定の情報を上段から順に分割するにあたり、上記所定のワークメモリから削除されても構わないように上記所定の情報を上段から順に分割し、
上記出力部は、上記出力するにあたり上記複数の情報のうち出力された前回の情報が上記所定のワークメモリから削除されるのを待って上記複数の情報のうち次の情報を上記新旧プログラム書換装置に出力することを特徴とする請求項５記載の新旧プログラム書換情報生成装置。
【請求項８】
上記書換情報生成部は、上記検出部により上記第２の部分に検出された部分がある場合に、上記部分を第２の部分ではなく上記第３の部分として上記所定の情報を生成することを特徴とする請求項４記載の新旧プログラム書換情報生成装置。
【請求項９】
上記書換情報生成部は、上記検出部により検出されなかった上記第３の部分がある場合に、上記第３の部分にかかる部分を第３の部分ではなく上記第２の部分として上記所定の情報を生成することを特徴とする請求項４記載の新旧プログラム書換情報生成装置。
【請求項１０】
上記新旧プログラム書換装置は、上記第２の部分に基づいて生成された所定の情報により旧プログラムを新プログラムに書換える場合に、所定の書換動作をおこない、
上記出力部は、上記新旧プログラム書換装置によりおこなわれる所定の書換動作に連動して上記複数の情報のうち次の情報を出力することを特徴とする請求項６又は７記載の新旧プログラム書換情報生成装置。
【請求項１１】
新プログラムと旧プログラムとを記憶装置に記憶する記憶工程と、
上記記憶工程により上記記憶装置に記憶された新プログラムと旧プログラムとを比較し、新プログラムの各部に対し、新プログラムの一部と位置及び内容が同一である旧プログラムの第１の部分と新プログラムの一部と位置が異なるが内容が同一である旧プログラムの第２の部分と旧プログラムには存在しない新プログラムの第３の部分との内いずれかを判定する判定工程と、
上記判定工程により判定された部分に基づいて、旧プログラムを新プログラムに書換えるための所定の情報を生成する所定情報生成工程と、
上記所定情報生成工程により生成された所定の情報を出力する出力工程と
を備えたことを特徴とする新旧プログラム書換情報生成方法。
【請求項１２】
新プログラムと旧プログラムとを記憶装置に記憶する記憶処理と、
上記記憶処理により上記記憶装置に記憶された新プログラムと旧プログラムとを比較し、新プログラムの各部に対し、新プログラムの一部と位置及び内容が同一である旧プログラムの第１の部分と新プログラムの一部と位置が異なるが内容が同一である旧プログラムの第２の部分と旧プログラムには存在しない新プログラムの第３の部分との内いずれかを判定する判定処理と、
上記判定処理により判定された部分に基づいて、旧プログラムを新プログラムに書換えるための所定の情報を生成する所定情報生成処理と、
上記所定情報生成処理により生成された所定の情報を出力する出力処理と
をコンピュータに実行させるためのプログラム。
【請求項１３】
新プログラムと旧プログラムとを記憶装置に記憶する記憶処理と、
上記記憶処理により上記記憶装置に記憶された新プログラムと旧プログラムとを比較し、新プログラムの各部に対し、新プログラムの一部と位置及び内容が同一である旧プログラムの第１の部分と新プログラムの一部と位置が異なるが内容が同一である旧プログラムの第２の部分と旧プログラムには存在しない新プログラムの第３の部分との内いずれかを判定する判定処理と、
上記判定処理により判定された部分に基づいて、旧プログラムを新プログラムに書換えるための所定の情報を生成する所定情報生成処理と、
上記所定情報生成処理により生成された所定の情報を出力する出力処理と
をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、新旧プログラムの書換情報を生成する新旧プログラム書換情報生成装置に関する。特に、携帯電話などの組み込み型の小型情報処理機器の補助記憶装置において、フラッシュメモリ上の内容を更新する場合に、ソフトウエアのバイナリイメージでの差分を抽出し、その差分を表現する方法を用いた装置に関する。
【０００２】
【従来の技術】
中央局と基地局とから構成され、中央局が基地局の処理プログラムを管理するシステムにおいて、中央局から基地局へのプログラムのダウンロードの処理時間を短縮すると共に中央局の構成を簡単化することを目的として以下の手段が公知となっている。中央局は、最新の基地局の処理プログラムとプログラムブロック情報とを保持しており、基地局２が保持する処理プログラムが最新でない場合は、まずプログラムブロック情報を基地局に送出する。基地局では、受信したプログラムブロック情報と自装置内のプログラムブロック情報とを比較し、現在保持していないプログラムブロックのみを中央局に対して要求する。中央局では、要求されたプログラムブロックを基地局に対して送出する。基地局では、受信したプログラムブロックと、自装置内に保持しているプログラムブロックとを用いて、自装置内の処理プログラムを最新の状態に更新する。（特許文献１参照）
【０００３】
記憶容量を小さくし、記憶されているソフトウエアの一部分を更新可能にすることを目的として以下の手段が公知となっている。フラッシュメモリには、コードＡ、データＡ、およびデータＢが非圧縮で記憶されており、コードＢが圧縮されて記憶されている。これらの記憶されているモジュールをＲＡＭ上に展開する場合、コピー・伸張プログラムに従って行われる。例えば、コードＡ、データＡ、およびデータＢを、それぞれＲＡＭ上にコピーした後、コードＢをＲＡＭ上に伸張する。例えば、コードＡを更新する場合、コードＡよりも小さいサイズになるように更新するコードＡ’を圧縮すれば、コードＡの領域に、コードＡ’を置き換える（更新する）ことが可能となる。（特許文献２参照）
【０００４】
従来の技術として、格納されている旧プログラムから新プログラムへの変更を、旧プログラムデータの変更部分をフラッシュメモリからＲＡＭへコピーし、ＲＡＭ上で書き換えたプログラムデータを前記フラッシュメモリに戻すことにより行うこと、前記変更部分のコピー及び前記ＲＡＭ上での書き換えを書き換え単位毎に行うこと、前記書き換え単位は、前記フラッシュメモリの記憶領域の一部分を消去する上での最小単位となるセクターであることが記載されている。（特許文献３参照）
【０００５】
フラッシュメモリに記憶された、複数のプログラムブロックからなるプログラムデータの一部のプログラムブロックのデータを更新するにあたり、更新対象であるプログラムブロックに対してのみデータの書き換えを行うことを目的として以下の手段が公知となっている。Ａ〜Ｅの各機能を実現するための複数のプログラムブロックを記憶したフラッシュメモリに対して、たとえば、機能ＤのＯＳデータを更新する場合、第４番目のメモリブロック５４のデータを消去する前に、機能ＤのＯＳデータとともに第４番目のメモリブロック内に格納された、機能ＣのＯＳデータの一部と機能ＥのＯＳデータの一部のデータを、パーソナルコンピュータに一時的に退避し、第４番目のメモリブロックのデータを消去した後、新しい機能ＤのＯＳデータとともに退避データを第４番目のメモリブロックの元の位置に書き込む。（特許文献４参照）
【０００６】
【特許文献１】
特開２０００−３５３０９６号公報
【特許文献２】
特開２００１−１６６９４１号公報
【特許文献３】
特開２００２−０１４８３３号公報
【特許文献４】
特開２０００−２４２４８７号公報
【０００７】
【発明が解決しようとする課題】
特許文献１では、一定の大きさのブロックに分けてプログラムの置換を行うだけであり、単にブロックに分けるだけでは差分情報は小さくならないし、フラッシュＲＯＭの特性を考えた場合に必要なワークメモリに関しては考慮されていないという問題があった。
【０００８】
特許文献２は、単に差分情報の大きさを小さくするために圧縮の技術を利用するのであって、根本のデータを小さくすることに関しては触れられていないし、ワークメモリサイズに関しても考慮されていない。
【０００９】
特許文献３では、差分データを小さくする方法やワークメモリサイズとの関連に関しては触れられていない。
【００１０】
特許文献４では、プログラム更新のための操作順序に関しては開示されているが、差分データを小さくする方法やワークメモリとの関係に関しては触れられていない。
【００１１】
ここで、フラッシュＲＯＭ上の場合は、一旦古い情報をワークメモリに読み込んでから再度フラッシュＲＯＭに書き込まなければならないという特性がある。一度フラッシュＲＯＭを書き直してしまうと、古い版の情報は書き換わってしまうため利用できない。
また、特に、一般に組み込み機器や、携帯電話では、コストの関係で、ワークメモリを十分にとっておき、新しい版のイメージを全部作成してから書き直すような方法が適用できるほどワークメモリは大きくない。
【００１２】
本発明は、新旧プログラムを書換えるための情報としての差分情報を小さくすることを目的とする。
【００１３】
さらに、本発明は、例えば、フラッシュＲＯＭの特性を考えた場合に必要とされるワークメモリについて、ワークメモリのサイズを考慮した新旧プログラムを書換えるための情報としての差分情報を生成することを目的とする。
【００１４】
【課題を解決するための手段】
この発明に係る新旧プログラム書換情報生成装置は、新プログラムと旧プログラムとを記憶する記憶部と、
上記記憶部により記憶された新プログラムと旧プログラムとを比較し、新プログラムの各部に対し、新プログラムの一部と位置及び内容が同一である旧プログラムの第１の部分と新プログラムの一部と位置が異なるが内容が同一である旧プログラムの第２の部分と旧プログラムには存在しない新プログラムの第３の部分との内いずれかを判定し、判定された部分に基づいて、旧プログラムを新プログラムに書換えるための所定の情報を生成する所定情報生成部と、
上記所定情報生成部により生成された所定の情報を出力する出力部と
を備えたことを特徴とする。
【００１５】
【発明の実施の形態】
実施の形態１．
例えば、組み込みソフトウエアの機器のフィールドでのバージョンアップのためには、バージョンアップ用のデータを組み込み機器に入力し書き換える処理が必要になる。新たなソフトウエアの全情報を送り込むと膨大なデータ量になる。そこで、古いファイルとの差分情報を送る。差分情報を適用するためには、古い版（旧プログラム）の情報に差分情報を適用して新しい情報（新プログラム）を作る。
【００１６】
以下に実施の形態を述べる。
図１は、実施の形態１における構成図と処理の流れを示した図である。
図１において、組み込みソフトウエア差分情報生成装置１（新旧プログラム書換情報生成装置の一例である）は、ハードディスク装置１００、コード読み込み部１０３、メモリ１０１、ハードディスク装置１１０、出力部１１１、所定情報生成部１２０を備えている。ハードディスク装置１００には、新版ファイル１０２と旧版ファイル６０２とが記憶されている。
記憶部は、新プログラムと旧プログラムとを記憶する。すなわち、記憶部或いは記憶装置の一例として、メモリ１０１には、新版バイナリイメージ１０４と旧版バイナリイメージ６０４とが記憶されている。
所定情報生成部１２０は、同一領域検出部１０５（検出部の一例である）、書換情報生成部１２１を有している。書換情報生成部１２１は、差分情報生成部１０６、最適差分情報生成部１０７を有している。
【００１７】
ハードディスク装置１００は、例えばＰＣ（パーソナルコンピュータ）で構成するような場合のシステムが持つ。
メモリ１０１は、例えばＰＣで構成する場合における書換え可能なランダムアクセスメモリである。
新版ファイル１０２と旧版ファイル６０２とはハードディスク装置１００上に置くファイルであり、組み込みソフトウエアの差分情報を生成する元となる新、旧プログラムの両バージョンのファイルを示している。本ファイルからは一意に組み込みシステムのソフトウエアを構成できるものであれば、その途上のフォーマットでも差し支えない。例えば、バイナリファイルであって、その内容からアドレス位置などを決めることができる形式であったり、テキストファイルであって、その情報からアドレス位置などの情報がわかる形式でよい。
【００１８】
コード読み込み部１０３は、図示していない組み込み機器上で実行する新、旧の複数のプログラムに関して、前記新、旧のプログラムのコードを組み込みソフトウエア差分情報生成装置１（新旧プログラム書換情報生成装置の一例である）内のメモリ１０１内に読み込む。組み込みソフトウエア差分情報生成装置１の一例として、例えば、ＰＣ等の計算機が挙げられる。コード読み込み部１０３は、ハードディスク装置１００上のファイル、ここでは、新版ファイル１０２と旧版ファイル６０２とをその形式に従って、メモリ１０１上に、図示していない組み込み機器（新旧プログラム書換装置の一例である）のアドレスイメージで展開する。比較可能であれば、バイナリ形式で展開していても、テキスト形式で展開していてもかまわない。
新版バイナリイメージ１０４と旧版バイナリイメージ６０４とは、前期コード読み込み部１０３で読み込まれたメモリ１０１上の組み込み機器の新旧プログラムそれぞれのバイナリコードを表現する各データである。
【００１９】
所定情報生成部１２０は、上記記憶部（ここでは、メモリ１０１）により記憶された新プログラムと旧プログラムとを比較し、新プログラムの各部に対し、新プログラムの一部と位置及び内容が同一である旧プログラムの第１の部分と新プログラムの一部と位置が異なるが内容が同一である旧プログラムの第２の部分と旧プログラムには存在しない新プログラムの第３の部分との内いずれかを判定し、判定された部分に基づいて、旧プログラムを新プログラムに書換えるための所定の情報を生成する。
【００２０】
以下、上記所定情報生成部１２０の機能について細分して説明する。
検出部の一例としての同一領域検出部１０５は、上記記憶部により記憶された新プログラムと旧プログラムとを比較し、新プログラムの上段から順に、上記第１の部分と第２の部分とを検出する。
詳細に言いかえると、同一領域検出部１０５は、前記コード読み込み部１０３によって読み込まれた複数のバイナリコードを比較して同一領域を検出する。すなわち、同一領域検出部１０５は、新版と旧版とのメモリ１０１上の新版バイナリイメージ１０４と旧版バイナリイメージ６０４とから同一領域（第１の部分の一例である）を検出する。同一領域検出部１０５は、２つのファイルをまずバイナリ比較し、アドレスとその内容の双方とも一致している領域（部分）を抽出する。ここで抽出された部分は位置、内容ともに一致しているため、新版でも旧版でも置き換える必要のない部分である。また、同一領域検出部１０５は、バイナリ比較し、アドレスは違うものの内容が一致している部分（第２の部分の一例である）を探す。これはメモリ上の位置をずらすだけで表現できるもので、実際には新版（新プログラム）と旧版（旧プログラム）では着目したメモリ１０１上のアドレス位置で見ると内容が変わっているため書き換える必要があるが、旧版のイメージをワークメモリにコピーし、再度新版の新しいアドレス位置にワークメモリからコピーして書き込めばよい領域であること示している。
【００２１】
この同一領域検出部１０５による同一領域検出のためにはアドレスの位置のずれをみつける参考データとしてコンパイラやリンカの出力したアドレス情報を使って比較しても良いし、新版のある決まった領域を旧版から探し出すという方法を使っても良い。
【００２２】
そして、書換情報生成部１２１は、上記検出部の一例としての同一領域検出部１０５により検出されなかった部分を第３の部分として、上記検出部の一例としての同一領域検出部１０５により検出された第１の部分と第２の部分と上記検出部の一例としての同一領域検出部１０５により検出されなかった第３の部分との内少なくとも１つを選択し、選択された部分に基づいて、旧プログラムを新プログラムに書換えるための差分ファイル１０８（所定の情報の一例である）を生成する。
書換情報生成部１２１の内部では、以下の処理をおこなう。
差分情報生成部１０６は、前記同一領域検出部１０５の生成結果から差分情報を生成する。差分情報生成部１０６は、前期同一領域検出部１０５によって検出されたアドレスも含めた同一領域をスキップ領域（第１の部分の一例である）とし、アドレスは違うが内容は同じ領域をアドレスのコピー領域（第２の部分の一例である）とし、旧版上に全く現れない新版上の領域をデータ領域（第３の部分の一例である）とわけて、新版上の連続したアドレス上で、上記３種類を順番に表現する手段である。言いかえれば、差分情報生成部１０６は、前記同一領域検出部１０５の生成結果から、アドレス位置、内容の双方同一である同一領域（第１の部分の一例である）と、アドレス位置に違いはあるが内容が同一である移動あり同一領域（第２の部分の一例である）と、更新領域（第３の部分の一例である）の３つに分類する領域分類手段である。
【００２３】
次に、最適差分情報生成部１０７は、プログラム実行対象である組込み機器のワークメモリサイズ情報と前記差分情報生成部１０６の生成結果から、最適差分情報を生成する。最適差分情報生成部１０７は、前記分類結果を組み合わせて組み込み機器上で逐次解釈実行可能な逐次解釈実行差分情報生成手段でもある。最適差分情報生成部１０７は、前記差分情報生成部１０６の出力結果で、コピーの関係などで、旧版の状態を消せる場合と消せない場合とを判断し、消せる場合には、そこまではコピーして新版に入れ替えても良いということを示すフラグを出力していく。その結果、フラグ間の新版のイメージがワークメモリを超えるような場合にはコピーで表現するのではなく、データで表現するというような形式に変換し、フラグ間のサイズがワークメモリのサイズを超えないようにする手段である。
【００２４】
差分ファイル１０８は、前記最適差分情報生成部１０７の結果出力される差分データファイルである。差分ファイル１０８は、ハードディスク装置１１０に記憶される。
出力部１１１は、上記所定情報生成部の一例としての最適差分情報生成部１０７により生成された差分ファイル１０８（所定の情報の一例である）を出力する。出力部１１１は、差分ファイル１０８をハードディスク装置１１０から入力して出力しても構わないし、最適差分情報生成部１０７から直接入力して出力しても構わない。
【００２５】
図２は、新版、旧版ファイル構成の一例を示す図である。
図２を用いて、前記コード読み込み部１０３を説明する。
図２において、ファイル２０１はバイナリ形式のファイルの例である。ファイル２０２はテキスト形式のファイルの例である。実際には、これらはファイル上は２ビットの形式で表現されており、ここでは１６進法で記載している。ファイル２０１のファイルの例の場合は通常のエディタなどでは見ることができず、バイナリエディタなどをとおして見ることができる例である。ファイル２０２はその逆であり、通常のエディタで見ることができる形式であり、テキストファイル形式である。しかしながらこのままのイメージで組み込みソフトウエアのメモリイメージになるわけではなく、ファイル２０１の形に変換してメモリ１０１上には格納される。本実施の形態では、ファイル２０１とファイル２０２はファイルの形式が違うだけで同じ内容を示している。
【００２６】
ファイル２０１の形に変換するこのデータの変換は、例えばメモリ１０１上のイメージの「０」は、「３０」で表し、「１」は「３１」であらわすというように１６進で表現できる１６のパターンをテーブルを見て変換するだけで変換することができる。このようにして、コード読み込み部１０３は、ファイルをハードディスク装置１００から読みこんでメモリ１０１上に展開する。
図２におけるファイル２０３，２０４に示すように、アドレスの情報を付加することにより、絶対アドレス位置の特定も可能となる。読み込んだデータは例えば配列などを使ってアドレス位置とデータの対応がつくようにメモリ１０１上で管理する。ファイル２０３は、ファイル２０１の情報に、「００００」、「０００８」、「００１０」とアドレスの情報が付加されている。ファイル２０４は、ファイル２０２の情報に、「Ｓ３００００８」、「Ｓ３０００８８」、「Ｓ３００１０８」とアドレスの情報が付加されている。
【００２７】
図３は、同一領域検出部と差分情報生成部を説明するためのファイル例を示す図である。
同一領域検出部１０５では、まず、アドレスが同じで内容も同じ領域を探す。ファイル３０１は旧版のファイル、ファイル３０２は新版のファイルであり、図３では、ファイル３０１，３０２をメモリ１０１上に読み込んだ図が示されている。図３において、ファイル３０１上のポイント３０３からポイント３０４までと、ファイル３０２上のポイント３１０からポイント３１２までとはアドレス、内容ともすべて一致している。
これらの情報は、差分情報生成部１０６によって、ファイル３２０に示すように、ＳＫＩＰの関係として分類され出力される。ファイル３２０の最初のＳＫＩＰ（第１の情報の一例である）の意味は、０から８バイトはスキップする、即ち、その間は内容を変更しないことを意味している。すなわち、差分情報生成部１０６によって、第１の部分に分類される。
【００２８】
同一領域検出部１０５は次に位置がずれているが内容は同じ領域（第２の部分の一例である）を探す。具体的な方法としてはコンパイラ、リンカの出力情報を利用して関数単位などでで位置情報が異なるが全く同じである可能性のあるところを比較するなどの方法でもかまわない、いわゆるＵＮＩＸ（登録商標）オペレーティングシステムに含まれるｄｉｆｆの機能を利用するようなことをしてもかまわない。
同一領域検出部１０５の結果として、ポイント３１４からポイント３１５までは、ポイント３０７からポイント３０８までと内容は同一であるが、アドレスは違うことが同一領域検出部１０５によって検出されるため、差分情報生成部１０６によってＣＯＰＹの関係として分類され出力される。ファイル３２０におけるＣＯＰＹ（第２の情報の一例である）とは、旧版のアドレスである１２バイト目（位置情報の一例である）から１２バイト（データ量の一例である）を新版の現在の位置から１２バイトにコピーするという意味になる。
【００２９】
同一領域検出部１０５は、ポイント３１３からポイント３１４に関して内容が同一である領域を検出しない。ポイント３１３からポイント３１４に関しては同一のデータが存在しないため、新版で新たに付加されたデータである。同一領域検出部１０５によって比較して結果、ポイント３１３からポイント３１４までは、内容が同一である領域がないと検出されるため、差分情報生成部１０６によってＤＡＴＡの関係として分類され出力される。ファイル３２０における「ＤＡＴＡ２，１１１１」（第３の情報の一例である）の内、「ＤＡＴＡ」とは、「，」の次に示す２バイトデータ「１１１１」が現在の位置から入るという意味となり、「２」とは、「ＤＡＴＡ２，」の次に示すデータ「１１１１」が現在の位置から２バイト（データ量の一例である）入るという意味となる。
【００３０】
最後に、同一領域検出部１０５は、ポイント３１５からポイント３１６に関して内容が同一である領域を検出しない。上記同様、ポイント３１５からポイント３１６に関しては同一のデータが存在しないため、新版で新たに付加されたデータである。同一領域検出部１０５によって比較して結果、ポイント３１５からポイント３１６までは、内容が同一である領域がないと検出されるため、差分情報生成部１０６によってＤＡＴＡの関係として分類され出力される。ファイル３２０における「ＤＡＴＡ２，ＦＦＦＦ」（第３の情報の一例である）の内、「ＤＡＴＡ」とは、「，」の次に示す２バイトデータ「ＦＦＦＦ」が現在の位置から入るという意味となり、「２」とは、「ＤＡＴＡ２，」の次に示すデータ「ＦＦＦＦ」が現在の位置から２バイト入るという意味となる。ここで、差分情報生成部１０６は、ポイント３１５からポイント３１６までの２バイト分はＤＡＴＡの関係として出力している。しかし、ポイント３０６の直前の２バイト分をＣＯＰＹの関係で出力してもかまわない。
【００３１】
差分情報生成部１０６は、同一領域検出部１０５の結果に基づいて前記のように、差分情報として、逐次実行差分情報生成手段によってＣＯＰＹとＳＫＩＰとＤＡＴＡの関係を実行順序で示していく。このようにして出てくる差分情報として正しい解は複数考えられるがどれでもかまわない。
以上のような差分情報を生成することで、新旧プログラムを書換えるための情報としての差分情報を小さくすることができる。
【００３２】
次に、最適差分情報生成部１０７に関して図４を用いて説明する。
図４は、最適差分情報生成部を説明するためのファイル例を示す図である。
図４におけるファイル４００は、図３における差分情報の例であるファイル３２０と同じものである。図４におけるファイル４０１は別の解（差分情報の例）である。
【００３３】
最適差分情報生成部１０７が、差分情報にフラグ情報を使用する場合について説明する。
差分情報の一部をＣＯＰＹコマンドで表現した場合、ファイル４０１において、３行目は１２バイト目から１２バイトのコピーしていることになるが新版上では、１０バイト目から書き込んでいることになる。４行目の「ＣＯＰＹ」は、９バイト目から２バイトのコピーを示しているが、このコピーを実行するときには、既に１０バイト目からの書き込みが行われている場合も考えられるためそのまま出力していいかどうかわからない。
【００３４】
そこで、ワークメモリ上に読み込み、差分情報にフラグ情報も使うこととし、フラグ情報が来るまではワークメモリ上のデータをフラッシュＲＯＭに書き込まないこととしてデータ内容を保証する。
【００３５】
次に、ＣＯＰＹのアドレスの位置関係で逆転がない場合、すなわち、ファイル４０１のように、４行目の「ＣＯＰＹ」に基づいて、９バイト目から２バイトのコピーを実行するときに、既に１０バイト目からの書き込みが行われているような場合でない場合は、ＣＯＰＹコマンドの後ろにフラグをつけることができる。
このフラグがあれば、そのフラグ以前の位置の情報は保証する必要がない。
【００３６】
以上のようにして、最適差分情報生成部１０７は、最適差分情報（ここでは、差分ファイル１０８（所定の情報の一例である））を生成し、出力する。
【００３７】
次に、最適差分情報生成部１０７が、最適差分情報（ここでは、差分ファイル１０８（所定の情報の一例である））を生成する際の最適化方法について説明する。
最適差分情報生成部１０７は、差分情報生成部１０６により生成された差分情報の内、ＣＯＰＹコマンド（すなわちＣＯＰＹの関係）を表現するためにかかるバイト数を調べる。例えば、ＣＯＰＹを１バイトで表現できるとして、ＣＯＰＹコマンドで表現するためには、さらに、サイズ情報とアドレス情報とが必要になる。この情報のデータサイズとデータコマンド（すなわちＤＡＴＡの関係）で表現した場合のデータサイズとを比較し、どちらが最適かを決める。
【００３８】
すなわち、上記書換情報生成部１２１、特に、最適差分情報生成部１０７は、上記検出部の一例である同一領域検出部１０５により検出されなかった上記第３の部分がある場合に、上記第３の部分にかかる部分を第３の部分ではなく上記第２の部分として上記最適差分情報（ここでは、差分ファイル１０８（所定の情報の一例である））を生成するようにしても構わない。
【００３９】
以上のように構成することで、さらに、例えば、フラッシュＲＯＭの特性を考えた場合に必要とされるワークメモリについて、ワークメモリのサイズを考慮した新旧プログラムを書換えるための情報としての差分情報を生成することができる。
【００４０】
ここで、上記新旧プログラム書換装置の一例である組込み機器は、旧プログラムを図示していない記憶装置に記憶している。組込み機器は、上記第２の部分に基づいて生成された所定の情報の一例である差分ファイル１０８により旧プログラムを新プログラムに書換える場合に、例えば、組込み機器が有する所定のワークメモリに自己が記憶する旧プログラムの上記第２の部分に該当する部分のコピーを退避させ、旧プログラムの内上記最適差分情報により書換える箇所を初期化し、上記所定のワークメモリに退避させた上記第２の部分に該当する部分のコピーを移動し、上記初期化された箇所に上記移動させた上記第２の部分に該当する部分のコピーを書き込む書換動作をおこなう。
【００４１】
すなわち、上記新旧プログラム書換装置は、上記第２の部分に基づいて生成された所定の情報により旧プログラムを新プログラムに書換える場合に、所定の書換動作をおこなう。
【００４２】
言いかえれば、差分情報生成部１０６は、前記領域分類手段にて生成される領域を、移動あり同一領域（第２の部分）のワークメモリ退避、更新する領域を初期化する更新領域初期化、移動あり同一領域を初期化された更新領域に移動する移動あり同一領域移動、初期化された更新領域に移動された移動あり同一領域を書き込む更新領域書込みの順を１回以上繰り返すように差分情報を生成する逐次実行差分情報生成手段でもある。
【００４３】
ここで、最適差分情報生成部１０７は、差分情報生成部１０６において、生成された差分情報が前期１回あたりのワークメモリ退避の容量が実際にあるワークメモリの容量を越える場合には、超えた部分をワークメモリ退避の不要な更新領域（ここでは、データコマンド）として扱う。すなわち、ワークメモリが非常に小さく、ワークメモリ上のデータをフラッシュＲＯＭに書き込まないこととすることでもデータ内容を保証できない場合は、図４におけるファイル４０１の最後の行（４行目）のコピーコマンド「ＣＯＰＹ９，２」の代わりに、ファイル４００の最後の行（４行目）のデータコマンド「ＤＡＴＡ２，ＦＦＦＦ」を出力することとする。
【００４４】
すなわち、上記書換情報生成部１２１、特に、最適差分情報生成部１０７は、上記検出部の一例である同一領域検出部１０５により上記第２の部分に検出された部分がある場合に、上記部分を第２の部分ではなく上記第３の部分として上記所定の情報を生成するようにしても構わない。
【００４５】
以上のようにして、最適差分情報生成部１０７は、最適差分情報（ここでは、差分ファイル１０８（所定の情報の一例である））を生成し、出力する。
【００４６】
以上のように構成することで、さらに、例えば、フラッシュＲＯＭの特性を考えた場合に必要とされるワークメモリについて、ワークメモリのサイズを考慮した新旧プログラムを書換えるための情報としての差分情報を生成することができる。
【００４７】
そして、上記出力部１１１は、上記新旧プログラム書換装置によりおこなわれる所定の書換動作に連動して第１の情報、第２の情報、第３の情報という上記複数の情報のうち上段から順に必要な次回の情報を出力する。
【００４８】
以上のように、上記所定情報生成部１２０は、新プログラムの上段から順に、上記第１の部分に基づく場合に、上記旧プログラムの第１の部分を素通りすることを示す第１の情報（ここでは、例えば図４におけるファイル４００の「ＳＫＩＰ０，８」）を生成し、上記第２の部分に基づく場合に、上記旧プログラムの第２の部分の位置情報とデータ量とを示す第２の情報（ここでは、例えば図４におけるファイル４００の「ＣＯＰＹ１２，１２」）を生成し、上記第３の部分に基づく場合に、上記新プログラムの第３の部分のデータ量とデータとを示す第３の情報（ここでは、例えば図４におけるファイル４００の「ＤＡＴＡ２，ＦＦＦＦ」）を生成する。
【００４９】
そして、上記所定情報生成部１２０は、旧プログラムを新プログラムに書換えるためには上記第１の情報と上記第２の情報と上記第３の情報との内少なくとも２つの情報が必要な場合に、上記必要な内少なくとも２つの情報を新プログラムの上段から順に組合わせて上記所定の情報を生成する。
【００５０】
ここで、次のような場合を考える。それは、以上のようにして生成した最適差分情報の大きさが大きい場合である。この場合、データを送り込んで操作するためにもこのデータを保持するワークメモリがフラッシュＲＯＭのイメージを作成するものとは別に必要になる。そこで、最適差分情報生成部１０７は、このデータ転送用のワークメモリも考えたフラグを入れるようにしても構わない。フラグ間のデータサイズはデータ転送用のワークメモリサイズを超えないように設定しておき、フラグ情報があるところで、データを分断し、ファイルに分割してもかまわない。
【００５１】
かかる場合、上記構成を言いかえれば、上記書換情報生成部１２１、特に、最適差分情報生成部１０７は、所定のワークメモリを用いて旧プログラムを新プログラムに書換をおこなう新旧プログラム書換装置の所定のワークメモリサイズを記憶し、上記所定の情報が上記記憶された所定のワークメモリサイズを超えないように上記所定の情報を生成する。
【００５２】
そして、上記書換情報生成部１２１、特に、最適差分情報生成部１０７は、上記所定の情報が上記記憶された所定のワークメモリサイズを超える場合に、上記所定の情報を上段から順に分割して複数の情報にすることで上記所定の情報が所定のワークメモリサイズを超えないように生成する。
【００５３】
図５は、データを分割する場合の説明図である。
図５を用いて説明すると、最適差分情報生成部１０７の出力の差分情報であるファイル５００は、全体のサイズがワークメモリサイズ５０３を超えている。しかし、ファイル５００は、フラグ５０１より左側部分ではワークメモリサイズ５０３を超えているがフラグ５０２より左側部分ではワークメモリサイズ５０３を超えていない。このような場合に、最適差分情報生成部１０７は、ファイル５００をファイル５０４とファイル５０５の２つのファイルに分割し、出力部１１１がデータを転送することにより、差分データが差分データ受信用のワークメモリを超えないようにすることができる。
【００５４】
そして、上記出力部１１１は、上記最適差分情報生成部１０７により生成された複数の情報を上段から順に出力し、上記出力するにあたり上記複数の情報のうち出力された前回の情報に基づいて上記新旧プログラム書換装置により旧プログラムが新プログラムに書換られるのを待って上記複数の情報のうち次の情報を上記新旧プログラム書換装置に出力する。
【００５５】
言いかえれば、上記所定のワークメモリは、上記出力部により出力された所定の情報を記憶し、上記新旧プログラム書換装置により旧プログラムが新プログラムに書換られると記憶された所定の情報を削除する。
そして、上記書換情報生成部１２１は、上記所定の情報が上記記憶された所定のワークメモリサイズを超える場合に、上記所定のワークメモリから削除されても構わないように上記所定の情報を上段から順に分割して複数の情報にすることで上記所定の情報が所定のワークメモリサイズを超えないように生成する。
そして、上記出力部１１１は、上記書換情報生成部１２１により生成された複数の情報を上段から順に出力する。
すなわち、上記出力部１１１は、上記出力するにあたり上記複数の情報のうち出力された前回の情報が上記所定のワークメモリから削除されるのを待って上記複数の情報のうち次の情報を上記新旧プログラム書換装置に出力する。
いずれにしろ、分割した単位でデータを転送し実行する。
【００５６】
以上のように、最適差分情報生成部１０７は、差分データ量が多い場合には、データを複数のデータに分割する分割手段を備える。
【００５７】
以上のように構成することで、さらに、例えば、フラッシュＲＯＭの特性を考えた場合に必要とされるワークメモリについて、ワークメモリのサイズを考慮した新旧プログラムを書換えるための情報としての差分情報を生成することができる。
【００５８】
また最適差分情報を生成する上では、このようなワークメモリサイズを超えるようなフラグ間になる場合は、フラグを強制的に入れ、残りをデータで表現することでかまわない。
【００５９】
また、このようにフラグを利用することにより、差分データの切れ目で、フラッシュＲＯＭのイメージを作るためのワークメモリもクリアできるように差分データを構成することができる。
【００６０】
以上のように、最適差分情報生成部１０７における上記分割手段において、差分データの切れ目で、ワークメモリをクリアできるように情報を配置したことを特徴とする。
【００６１】
本実施の形態では、このような制限のある環境で、差分を適用できるように差分情報を作成するために、差分情報にワークメモリへの読み込み、書き込みといった処理の切れ目を明確に入れ、ワークメモリサイズを意識し、時には差分情報サイズが大きくなったとしても処理可能であることを優先とする方法を適用する。
【００６２】
以上のように構成することで、さらに、例えば、フラッシュＲＯＭの特性を考えた場合に必要とされるワークメモリについて、ワークメモリのサイズを考慮した新旧プログラムを書換えるための情報としての差分情報を生成することができる。
【００６３】
以上の説明において、組み込みソフトウエア差分情報生成装置１は、図示されていないが、システムユニット、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）表示装置、キーボード（Ｋ／Ｂ）、マウス、コンパクトディスク装置（ＣＤＤ）、プリンタ装置、スキャナ装置を備えている。ＣＲＴ表示装置、Ｋ／Ｂ、マウス、ＣＤＤ、プリンタ装置、スキャナ装置は、システムユニットにケーブルで接続されている。
また、組み込みソフトウエア差分情報生成装置１は、図示されていないが、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵは、バスを介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）（記憶装置の一例である）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）（記憶装置の一例である）、通信ボード、ＣＲＴ表示装置、Ｋ／Ｂ、マウス、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、磁気ディスク装置（記憶装置の一例である）、ＣＤＤ、プリンタ装置、スキャナ装置と接続されている。通信ボードは、インターネットに接続されている。
ここで、通信ボードは、インターネットに限らず、さらに、ＬＡＮ（ローカルエリアネットワーク）、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されていても構わない。
磁気ディスク装置には、オペレーティングシステム（ＯＳ）、ウィンドウシステム、プログラム群、ファイル群が記憶されている。プログラム群は、ＣＰＵ、ＯＳ、ウィンドウシステムにより実行される。
【００６４】
また、以上の説明において、各実施の形態の説明において「〜部」として説明したものは、一部或いはすべてコンピュータで動作可能なプログラムにより構成することができる。これらのプログラムは、例えば、Ｃ言語により作成することができる。或いは、ＨＴＭＬやＳＧＭＬやＸＭＬを用いても構わない。或いは、ＪＡＶＡ（登録商標）を用いて画面表示を行っても構わない。
プログラムにより構成する場合、上記プログラム群には、各実施の形態の説明において「〜部」として説明したものにより実行されるプログラムが記憶されている。ファイル群には、上記実施の形態の説明において「ファイル」として説明したものが記憶されている。
また、各実施の形態の説明において「〜部」として説明したものは、ＲＯＭに記憶されたファームウェアで実現されていても構わない。或いは、ソフトウエア或いは、ハードウェア或いは、ソフトウエアとハードウェアとファームウェアとの組み合わせで実施されても構わない。
また、上記各実施の形態を実施させるプログラムは、また、磁気ディスク装置、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置を用いて記憶されても構わない。
【００６５】
【発明の効果】
本発明により、フラッシュＲＯＭのサイズに比べてワークメモリが小さい組み込み機器のソフトウエアを更新する際に、対象となる機器上で実行可能なサイズの差分データを作成することができるようになった。即ち、実行時間、書換え速度ともに効率的に実行可能なデータを作成できる。
【図面の簡単な説明】
【図１】実施の形態１における構成図と処理の流れを示した図である。
【図２】新版、旧版ファイル構成の一例を示す図である。
【図３】同一領域検出部と差分情報生成部を説明するためのファイル例を示す図である。
【図４】最適差分情報生成部を説明するためのファイル例を示す図である。
【図５】データを分割する場合の説明図である。
【符号の説明】
１  組み込みソフトウエア差分情報生成装置、１００  ハードディスク装置、１０１  メモリ、１０２  新版ファイル、１０３  コード読み込み部、１０４  新版バイナリイメージ、１０５  同一領域検出部、１０６  差分情報生成部、１０７  最適差分情報生成部、１０８  差分ファイル、１１０  ハードディスク装置、１１１  出力部、１２０  所定情報生成部、１２１  書換情報生成部、２０１  ファイル、２０２  ファイル、２０３  ファイル、２０４  ファイル、３０１  ファイル、３０２  ファイル、３２０  ファイル、４００  ファイル、４０１  ファイル、５００  ファイル、５０１  フラグ、５０２  フラグ、５０３  ワークメモリサイズ、５０４  ファイル、５０５  ファイル、６０２  旧版ファイル、６０４  旧版バイナリイメージ。
【図１】
2004227520.tif 000003
【図２】
2004227520.tif 000004
【図３】
2004227520.tif 000005
【図４】
2004227520.tif 000006
【図５】
2004227520.tif 000007