(57)【要約】【課題】  メモリ容量に制限があり、ＭＭＵ対応のＯＳを搭載した端末装置に内蔵されているプログラムを、通信手段によって受信した差分データを用いて更新するための方法、プログラムおよび端末装置を提供する。【解決手段】  ＭＭＵによるメモリ保護が行われる第１動作モードにおいてプログラム更新用の差分データを受信してメモリに格納した後に、動作モードを、ＭＭＵによるメモリ保護が行われない第２動作モードに切り替えて、格納しておいた差分データを取得し、これを用いてプログラムの更新を行うことに想到した。受信した差分データをメモリに格納する際には、ＭＭＵによる論理アドレスと物理アドレス空間との変換が行われているが、差分データの格納領域についてのアドレス変換に関する情報を保持しておくことにより、後の第２動作モードにおいて差分データへのアクセスを可能とすることができる。【選択図】  図２
2006133889.tif 000002
【特許請求の範囲】
【請求項１】
プログラム更新用の差分データを用いて端末装置のプログラムを更新する方法であって、
前記差分データを取得する差分データ取得ステップと、
ＯＳによるメモリ管理が行われる第１の動作モードにおいて、前記差分データをメモリに格納する差分データ格納ステップと、
前記差分データのメモリにおける配置に関する情報を取得し、メモリに格納する差分データ配置情報格納ステップと、
前記メモリに格納された内容を保持したまま、前記第１の動作モードから、ＯＳによるメモリ管理が行われない第２の動作モードに切り替えを行う切り換えを行う動作モード切り換えステップと、
前記第２の動作モードにおいて、前記メモリに格納された差分データ配置情報に基づいて、前記差分データをメモリから取得する差分データ復元ステップと、
前記差分データを用いて、前記プログラムの更新を行うプログラム更新ステップと、
を含む方法。
【請求項２】
前記メモリは、前記第１の動作モード及び前記第２の動作モードにおいて利用可能なファイルシステムとして構成されており、
前記差分データ格納ステップにおいて、前記ファイルシステム上のファイルに差分データを格納し、
前記差分データ配置情報格納ステップにおいて、前記差分データの配置情報として、前記差分データを格納したファイルを特定する情報を取得及び格納し、
前記差分データ復元ステップにおいて、前記差分データ配置情報に基づき、前記差分データを格納したファイルを読み出すことにより前記差分データを取得することを特徴とする請求項１に記載のプログラム更新方法。
【請求項３】
前記メモリは、前記差分データがとり得る最大のサイズ以上のサイズのダミーファイルを格納しており、
前記差分データ取得ステップにおいて、取得した差分データを前記ダミーファイルに上書きする処理を行うことを特徴とする請求項２に記載のプログラム更新方法。
【請求項４】
前記差分データ格納ステップにおいて、前記差分データを前記メモリにおける１つ以上の物理アドレス空間上の領域に格納し、
前記差分データ配置情報格納ステップにおいて、前記領域の物理アドレス空間上の位置及びサイズと、前記差分データの格納順序に関する情報とを取得及び格納することを特徴とする請求項１に記載のプログラム更新方法。
【請求項５】
前記差分データ格納ステップを実行する前に、前記メモリにおいて前記差分データを格納するのに必要となる物理アドレス空間上の領域の数を削減するステップをさらに含んでいることを特徴とする請求項４に記載のプログラム更新方法。
【請求項６】
前記差分データ格納ステップを実行する前に、プログラム更新処理に不要な作業を中止し、それに利用されていたメモリ領域を解放するステップを含んでいることを特徴とする請求項４又は５に記載のプログラム更新方法。
【請求項７】
前記差分データ格納ステップを実行する前に、ＯＳの再起動を行うステップを含んでいることを特徴とする請求項４又は５に記載のプログラム更新方法。
【請求項８】
前記差分データ取得ステップにおいて、通信手段によりプログラム更新用の差分データを前記端末装置外部から取得することを特徴とする請求項１から７のいずれか１項に記載のプログラム更新方法。
【請求項９】
前記ＯＳによるメモリ管理は、ＭＭＵによる論理アドレス及び物理アドレス間のアドレス変換により実現されることを特徴とする請求項１から８のいずれか１項に記載のプログラム更新方法。
【請求項１０】
請求項１から９のいずれか１項に記載の方法を用いて、端末装置のプログラム更新処理を実行するプログラム。
【請求項１１】
プログラムを含んだ端末装置であって、
プログラム及び当該プログラムの更新用データを記憶するメモリと、
ＯＳにより前記メモリを管理するメモリ管理手段と、
プログラム更新用の差分データを取得する差分データ取得手段と、
前記差分データを用いて前記プログラムの更新を行うプログラム更新手段と、
前記メモリに格納された内容を保持したまま、ＯＳによるメモリ管理が行われる第１の動作モードと、ＯＳによるメモリ管理が行われない第２の動作モードとの間で動作モードを切り替える動作モード切り換え手段とを備え、
前記差分データ取得手段により取得した差分データを、前記第１の動作モードにおいて、前記メモリに格納するとともに、前記差分データのメモリにおける配置に関する情報を取得してメモリに格納した後、
前記第２の動作モードにおいて、前記メモリに格納された差分データの配置に関する情報に基づいて、前記差分データをメモリから取得し、その差分データを用いて前記プログラムの更新を行う端末装置。
【請求項１２】
前記メモリは、前記第１の動作モード及び前記第２の動作モードにおいて利用可能なファイルシステムとして構成されており、
前記差分データは前記ファイルシステム上のファイルに格納され、
前記差分データの配置情報は、前記差分データを格納したファイルを特定する情報であり、
前記差分データ配置情報に基づき、前記差分データを格納したファイルを読み出すことにより前記差分データが取得されることを特徴とする請求項１１に記載の端末装置。
【請求項１３】
前記メモリは、前記差分データがとり得る最大のサイズ以上のサイズのダミーファイルを格納しており、
前記差分データ取得手段は、取得した差分データを前記ダミーファイルに上書きする処理を行うことを特徴とする請求項１２に記載の端末装置。
【請求項１４】
前記差分データは、前記メモリにおける１つ以上の物理アドレス空間上の領域に格納され、
前記差分データ配置情報をメモリに格納する際に、前記領域の物理アドレス空間上の位置及びサイズと、前記差分データの格納順序に関する情報とを取得及び格納することを特徴とする請求項１１に記載の端末装置。
【請求項１５】
前記差分データ格納する前に、前記メモリにおいて前記差分データを格納するのに必要となる物理アドレス空間上の領域の数を削減する領域削減手段をさらに含んでいることを特徴とする請求項１４に記載の端末装置。
【請求項１６】
前記領域削減手段は、プログラム更新処理に不要な作業を中止し、それに利用されていたメモリ領域を解放することを特徴とする請求項１５に記載の端末装置。
【請求項１７】
前記領域削減手段は、ＯＳの再起動を行うことを特徴とする請求項１５に記載の端末装置。
【請求項１８】
前記差分データ取得手段は、通信手段によりプログラム更新用の差分データを前記端末装置外部から取得することを特徴とする請求項１１から１７のいずれか１項に記載の端末装置。
【請求項１９】
前記メモリ管理手段は、ＭＭＵによる論理アドレス及び物理アドレス間のアドレス変換によりメモリ管理を実現することを特徴とする請求項１１から１８のいずれか１項に記載の端末装置。
【請求項２０】
請求項１１から１９のいずれか１項に記載の端末装置を含んでいることを特徴とする携帯端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信手段によって受信した差分データを用いて端末装置に内蔵されるプログラムの更新を行うための方法、プログラムおよび端末装置に関し、特に、メモリ容量に制限があり、ＭＭＵ対応のＯＳを搭載した携帯型の端末装置においてプログラムの更新を行うための方法、プログラムおよび端末装置に関するものである。
【背景技術】
【０００２】
携帯電話機や携帯情報端末（ＰＤＡ等）などの通信手段を備えた携帯型の端末装置に内蔵されるソフトウェアは大規模化しており、プログラムの改良や不具合対応のために、製品出荷後も端末外部からアップデート用データを供給して、これらのプログラムの更新を行うことがある。
【０００３】
従来、このようなデータの供給は、サポートを行う店舗などにおいて、有線通信経由で行われてきたが、近年では、重大な不具合の解消を急いだり、更新作業のサポートコストを低減したりするために、無線通信経由でデータの供給が行なわれている。このようにデータを無線通信で供給する場合、無線リンクの帯域が小さいことと、携帯型の端末装置ではパーソナルコンピュータなどの汎用のコンピュータに比べてメモリ容量が小さいことから、供給するデータのサイズをできるだけ小さくすることが要求される。
【０００４】
特許文献１には、供給データのサイズを小さくするために、データの送信側において、端末装置内のプログラムの更新前のバージョンと更新後のバージョンを比較して得られる差分を抽出して、その差分データのみを端末装置に伝送し、端末装置では、装置内にあるデータ（更新対象となるプログラム）と受信した差分データとから更新後データを復元し、この更新後データにより更新対象となるプログラムの格納領域を書き換えることによりプログラムを更新する方法が開示されている。
【０００５】
しかしながら、携帯型の端末装置では、差分データから書換えに用いる更新後のデータ、すなわち更新対象となるプログラムを全て復元するだけの作業領域を確保できないほどメモリ容量が小さいことがある。
【０００６】
この問題に対処する方法として、特許文献２には、対象プログラムを複数の領域に区分しておき、データの送信側ではそれらの領域ごとに差分データを抽出し、全ての差分データをまとめたものを伝送する差分データとし、端末装置では、更新後データの復元を個々の領域に対する差分データごとに行い、全ての領域の更新後データが復元されるのを待つことなく、個々の領域の更新後データを更新対象プログラムの格納領域に書き込むことにより、全ての領域の更新後データを同時に保持することを必要とせずプログラム更新を行う方法が開示されている。また、特許文献３には、特許文献２に開示された方法において、個々の領域ごとに抽出される差分データを小さくする方法が開示されている。
【０００７】
非特許文献１には、特許文献１、特許文献２および特許文献３における構成要素となる２つのプログラムの対応する領域間の差分データ抽出処理の基礎的アルゴリズムである「Block-Moveアルゴリズム」が開示されている。
【０００８】
一方で、大規模化している携帯端末のソフトウェアの不具合による影響を抑えるための別の方法として、端末装置で動作するＯＳ（オペレーティングシステム）にＭＭＵ（メモリ管理ユニット）を利用してメモリ保護を行う方法が知られている（以下、このようなＯＳをＭＭＵ対応のＯＳと呼ぶ）。ＭＭＵ非対応のＯＳでは、特定のアプリケーションの不具合が他のアプリケーションやシステム全体に影響を及ぼすのに対して、ＭＭＵ対応のＯＳでは、このような影響を局所化し低減できるという利点がある。このため、携帯電話機のＯＳは、μＩＴＲＯＮなどのＭＭＵ非対応のＯＳから、ＬｉｎｕｘやＳｙｍｂｉａｎのようなＭＭＵ対応のＯＳに移行しつつある。
【０００９】
【特許文献１】特開平８−２５５１０４号公報。
【特許文献２】特開２００４−２３４５０３号公報。
【特許文献３】特開２００４−２２７５２０号公報。
【非特許文献１】Walter F. Tichy, The String-to-String Correction Problem with Block Moves, ACM Transaction on Computing Systems， Nov.1984 (Vol.2, No.4), pp.309-321
【発明の開示】
【発明が解決しようとする課題】
【００１０】
一般に、上記のような携帯型の端末装置のメモリは、ＲＡＭなどの書換え可能な揮発性メモリと、フラッシュＲＯＭなどの書換え可能な不揮発性メモリとから構成されており、前者は作業領域および／または一時データの格納領域として用いられ、後者は命令コードや命令コードが用いる初期化データなどから構成されるプログラムおよび／または永続的なデータの格納領域として用いられる。携帯電話などにおいては、生産コストを低減するために可能な範囲でメモリ容量を小さくしようとするので、命令コードや定数データの領域は、ＲＡＭにコピーされることなく、フラッシュＲＯＭなどの書換え可能不揮発性メモリから直接読み出されることが多い。
【００１１】
一方、ＭＭＵ対応のＯＳでは、通常、プログラムや定数データの領域はＭＭＵによって保護されているので、ＭＭＵよるメモリ管理が行われている最中に当該メモリ上にあるプログラムの書換えを行うことは不可能である。特許文献１〜３および非特許文献１には、このようなＭＭＵ対応のＯＳを搭載した端末装置においてプログラムの更新を行う方法は具体的に言及されていない。
【００１２】
本発明は、このような実情に鑑みてなされたものであり、メモリ容量に制限があり、ＭＭＵ対応のＯＳを搭載した端末装置に内蔵されているプログラムを、通信手段によって受信した差分データを用いて更新するための方法、プログラムおよび端末装置を提供しようとするものである。
【課題を解決するための手段】
【００１３】
上記解決課題に鑑みて鋭意研究の結果、本発明者は、ＭＭＵによるメモリ保護が行われる第１の動作モードにおいてプログラム更新用の差分データを受信してメモリに格納した後に、動作モードを、ＭＭＵによるメモリ保護が行われない第２の動作モードに切り替えて、格納しておいた差分データを取得し、これを用いてプログラムの更新を行うことに想到した。ここで、受信した差分データをメモリに格納する際には、ＭＭＵによる論理アドレスと物理アドレス空間との変換が行われているが、差分データの格納領域についてのアドレス変換に関する情報を保持しておくことにより、後の第２の動作モードにおいて差分データへのアクセスを可能とすることができる。
【００１４】
すなわち、本発明は、プログラム更新用の差分データを用いて端末装置のプログラムを更新する方法であって、前記差分データを取得する差分データ取得ステップと、ＯＳによるメモリ管理が行われる第１の動作モードにおいて、前記差分データをメモリに格納する差分データ格納ステップと、前記差分データのメモリにおける配置に関する情報を取得し、メモリに格納する差分データ配置情報格納ステップと、前記メモリに格納された内容を保持したまま、前記第１の動作モードから、ＯＳによるメモリ管理が行われない第２の動作モードに切り替えを行う切り換えを行う動作モード切り換えステップと、前記第２の動作モードにおいて、前記メモリに格納された差分データ配置情報に基づいて、前記差分データをメモリから取得する差分データ復元ステップと、前記差分データを用いて、前記プログラムの更新を行うプログラム更新ステップと、を含む方法を提供するものである。
【００１５】
本発明のプログラム更新方法では、前記メモリは、前記第１の動作モード及び前記第２の動作モードにおいて利用可能なファイルシステムとして構成されており、前記差分データ格納ステップにおいて、前記ファイルシステム上のファイルに差分データを格納し、前記差分データ配置情報格納ステップにおいて、前記差分データの配置情報として、前記差分データを格納したファイルを特定する情報を取得及びし格納し、前記差分データ復元ステップにおいて、前記差分データ配置情報に基づき、前記差分データを格納したファイルを読み出すことにより前記差分データを取得することを特徴とする。
【００１６】
本発明のプログラム更新方法では、前記メモリは、前記差分データがとり得る最大のサイズ以上のサイズのダミーファイルを格納しており、前記差分データ取得ステップにおいて、取得した差分データを前記ダミーファイルに上書きする処理を行うことを特徴とする。
【００１７】
本発明のプログラム更新方法では、前記差分データ格納ステップにおいて、前記差分データを前記メモリにおける１つ以上の物理アドレス空間上の領域に格納し、前記差分データ配置情報格納ステップにおいて、前記領域の物理アドレス空間上の位置及びサイズと、前記差分データの格納順序に関する情報とを取得及び格納することを特徴とする。
【００１８】
本発明のプログラム更新方法は、前記差分データ格納ステップを実行する前に、前記メモリにおいて前記差分データを格納するのに必要となる物理アドレス空間上の領域の数を削減するステップをさらに含んでいることを特徴とする。具体的には、前記差分データ格納ステップを実行する前に、プログラム更新処理に不要な作業を中止し、それに利用されていたメモリ領域を解放するステップ、あるいは、ＯＳの再起動を行うステップとすることができる。
【００１９】
本発明のプログラム更新方法では、前記差分データ取得ステップにおいて、通信手段によりプログラム更新用の差分データを前記端末装置外部から取得することを特徴とする。
【００２０】
本発明のプログラム更新方法において、前記ＯＳによるメモリ管理は、ＭＭＵによる論理アドレス及び物理アドレス間のアドレス変換により実現されることを特徴とする。
【００２１】
本発明は、また、上記したいずれかのプログラム更新方法を用いて、端末装置のプログラム更新処理を実行するプログラムを提供するものである。さらには、そのようなプログラムを記録した記録媒体が提供される。
【００２２】
本発明は、また、プログラムを含んだ端末装置であって、プログラム及び当該プログラムの更新用データを記憶するメモリと、ＯＳにより前記メモリを管理するメモリ管理手段と、プログラム更新用の差分データを取得する差分データ取得手段と、前記差分データを用いて前記プログラムの更新を行うプログラム更新手段と、前記メモリに格納された内容を保持したまま、ＯＳによるメモリ管理が行われる第１の動作モードと、ＯＳによるメモリ管理が行われない第２の動作モードとの間で動作モードを切り替える動作モード切り換え手段とを備え、前記差分データ取得手段により取得した差分データを、前記第１の動作モードにおいて、前記メモリに格納するとともに、前記差分データのメモリにおける配置に関する情報を取得してメモリに格納した後、前記第２の動作モードにおいて、前記メモリに格納された差分データの配置に関する情報に基づいて、前記差分データをメモリから取得し、その差分データを用いて前記プログラムの更新を行う端末装置を提供するものである。
【００２３】
本発明の端末装置において、前記メモリは、前記第１の動作モード及び前記第２の動作モードにおいて利用可能なファイルシステムとして構成されており、前記差分データは前記ファイルシステム上のファイルに格納され、前記差分データの配置情報は、前記差分データを格納したファイルを特定する情報であり、前記差分データ配置情報に基づき、前記差分データを格納したファイルを読み出すことにより前記差分データが取得されることを特徴とする。
【００２４】
本発明の端末装置において、前記メモリは、前記差分データがとり得る最大のサイズ以上のサイズのダミーファイルを格納しており、前記差分データ取得手段は、取得した差分データを前記ダミーファイルに上書きする処理を行うことを特徴とする。
【００２５】
本発明の端末装置において、前記差分データは、前記メモリにおける１つ以上の物理アドレス空間上の領域に格納され、前記差分データ配置情報をメモリに格納する際に、前記領域の物理アドレス空間上の位置及びサイズと、前記差分データの格納順序に関する情報とを取得及び格納することを特徴とする。
【００２６】
本発明の端末装置は、前記差分データ格納する前に、前記メモリにおいて前記差分データを格納するのに必要となる物理アドレス空間上の領域の数を削減する領域削減手段をさらに含んでいることを特徴とする。
【００２７】
本発明の端末装置において、前記領域削減手段は、プログラム更新処理に不要な作業を中止し、それに利用されていたメモリ領域を解放することを特徴とする。あるいは、ＯＳの再起動を行うことを特徴とする。
【００２８】
本発明の端末装置において、前記差分データ取得手段は、通信手段によりプログラム更新用の差分データを前記端末装置外部から取得することを特徴とする。
【００２９】
本発明の端末装置において、前記メモリ管理手段は、ＭＭＵによる論理アドレス及び物理アドレス間のアドレス変換によりメモリ管理を実現することを特徴とする。
【００３０】
本発明は、また、上記したいずれかの端末装置を含んでいることを特徴とする携帯端末を提供するものである。
【発明の効果】
【００３１】
以上、説明したように、本発明のプログラムを更新するための方法、プログラムおよび装置によれば、メモリ容量に制限があり、ＭＭＵ対応のＯＳを搭載した端末装置に内蔵されているプログラムを、通信手段によって受信した差分データを用いて更新することが可能となる。
【発明を実施するための最良の形態】
【００３２】
以下、添付図面を参照しながら、本発明のプログラムを更新するための方法、プログラムおよび装置を実施するための最良の形態を詳細に説明する。図１〜図７は、本発明の実施の形態を例示する図であり、これらの図において、同一の符号を付した部分は同一物を表わし、基本的な構成および動作は同様であるものとする。
【００３３】
端末装置のハードウェア構成
図１は、本実施形態において更新対象であるプログラムを含んだ端末装置のハードウェア構成を概略的に示すブロック図である。図１において、端末装置は、プログラム実行処理部１１と、記憶部１２と、無線通信部１３と、アンテナ１４とを有している。記憶部１２は、ＲＡＭ１２１と、プログラム用フラッシュＲＯＭ１２２と、データ用フラッシュＲＯＭ１２３とを含んでいる。プログラム実行処理部１１は、プログラム用フラッシュＲＯＭ１２２に内蔵されたプログラムを実行するＣＰＵコア１１１と、実行されるプログラムに含まれる論理アドレスを記憶部１２内のメモリの物理アドレスに変換する処理を行うＭＭＵ（メモリ管理ユニット）１１２とを含んでいる。
【００３４】
図１に示す端末装置は携帯型であり、生産コストの低減および消費電力の節減のために、メモリ容量は可能な限り小さく抑えられており、ハードディスクのような比較的電力消費の大きい大容量の２次記憶装置は搭載していないものとする。上述のフラッシュＲＯＭならば、書き換え可能な不揮発性メモリであって、ハードディスクよりも消費電力が小さい。また、本実施形態では、更新対象であるプログラムは、プログラム用フラッシュＲＯＭ１２２に格納されており、このプログラムは、メモリの使用効率を高めるために、実行時にＲＡＭ１２１にコピーされることなく、ＣＰＵコア１１１によりプログラム用フラッシュＲＯＭ１２２から直接読み出されて実行されるものとする。ＮＯＲ型のフラッシュメモリは、アドレスを指定して直接読み出しアクセスできるから、このような利用形態が可能である。ただし、このことは本発明の本質とは関係がなく、本発明自体はＮＡＮＤ型のプログラム用フラッシュＲＯＭ(実行するプログラムをいったんＲＡＭにコピーする必要がある)にも適用できる。
【００３５】
また、図１に示す端末装置は、ＲＡＭ１２１の記憶内容を保持したままＣＰＵコア１１１をリセットすることができるように構成されている。例えば、ＲＡＭがＳＲＡＭである場合には、特別な構成を必要とせずＣＰＵコアのリセット後もＲＡＭの記憶内容は保持されるし、ＲＡＭがＤＲＡＭである場合には、一旦ＳｅｌｆＲｅｆｒｅｓｈモード（近年のＤＲＡＭの多くはこのモードを備えている）に移行してからリセットすれば、ＲＡＭの記憶内容は保持される。また、フラッシュＲＯＭに対する指令に読み取りと書き込みの両方が混在していると、読み出しのみを行うときに比べて読み出し速度が落ちることが通常であるため、本実施形態の端末装置では、プログラム実行時の速度が落ちないように、プログラム用とデータ用のフラッシュＲＯＭをそれぞれ設けている。
【００３６】
なお、図１に示す端末装置において、無線通信部１３及びアンテナ１４に替えて、ネットワークインタフェースカード等の有線の通信手段を備えていてもよい。
【００３７】
端末装置の機能的構成
図２は、図１に示す端末装置の処理内容にもとづいた機能的構成を示す機能ブロック図である。図２において、端末装置は、プログラム実行手段２１と、記憶手段２２と、差分データ受信手段２３とを有している。プログラム実行手段２１は、第１の動作モード（以下、「動作モード１」という）によるプログラム実行手段２１１と、第２の動作モード（以下、「動作モード２」という）によるプログラム実行手段２１２と、動作モード切り換え／再起動実行手段２１３と、アドレス変換手段２１４とを含んでいる。記憶手段２２は、動作モード１によるプログラム実行手段２１１が実行する第１のプログラム２２１と、動作モード２によるプログラム実行手段２１２が実行する第２のプログラム２２２と、差分データ受信手段により受信した差分データ２２３と、動作モード１によるプログラム実行手段が生成する差分データ配置情報２２４とを格納している。
【００３８】
ここで、プログラム実行手段２１は、プログラム実行処理部１１に対応する機能であり、記憶手段２２は記憶部１２に対応する機能であり、差分データ受信手段は無線通信部１３に対応する機能である。すなわち、記憶手段２２に含まれている第１のプログラム２２１および第２のプログラム２２２は、記憶部１２のプログラム用フラッシュＲＯＭ１２２に格納されており、差分データ２２３および差分データ配置情報２２４は、ＲＡＭ１２１またはデータ用フラッシュＲＯＭ１２３に格納されている。
【００３９】
なお、データ用フラッシュＲＯＭ１２３に対するデータの読み書きは、通常、ファイルシステムを介して読み書きするものであるが、特定の目的ごとに使用する領域（予約領域）を決めて、ファイルシステムを介さずに読み書きを行うことも可能である。そこで本実施形態の端末装置では、データ用フラッシュＲＯＭの大部分はファイルシステム（以下、「フラッシュファイルシステム」という）を通じて読み書きを行い、少数の特定のデータについては予約領域に読み書きを行うものとする。
【００４０】
第１のプログラム２２１は、更新処理の対象となるプログラムであって、動作モード１によるプログラム実行手段２１１によって実行されるものである。第２のプログラム２２２は、第１のプログラム２２１を更新する処理を行うプログラムであって、動作モード２によるプログラム実行手段２１２によって実行されるものである。第２のプログラム２２２は更新することができないから、不具合が生ずる可能性を低くするために、更新処理に関する機能のみを有する簡易な構成としておくのが好ましい。このため、端末装置に内蔵されるプログラムコードの大部分は、第１のプログラム２２１に含むように構成している。後述するように、差分データ受信手段を用いた差分データの受信処理も第１のプログラムにより行う。
【００４１】
また、第１のプログラム２２１は、ＭＭＵ１１２を用いたメモリ保護を行うＯＳ（オペレーティングシステム）のプログラムコードを含んでおり、動作モード１によるプログラム実行手段２１１は、アドレス変換手段２１４を用いたアドレス変換およびメモリ保護を行う。一方、第２のプログラム２２２は、このようなプログラムコードを含んでおらず、動作モード２によるプログラム実行手段２１２は、アドレス変換手段２１４の機能を用いることはない。
【００４２】
動作モード切替え／再起動実行手段２１３は、プログラムを実行する主体を、動作モード１によるプログラム実行手段と動作モード２によるプログラム実行手段との間で切替えるものである。本実施形態の端末装置では、次の動作モードを指定して切替えを行うと、指定された動作モードで動作するプログラムを始めから実行するようになっている。このため、次の動作モードとして現在と同じ動作モードを指定すれば、プログラムを再起動することになるので、動作モード切替え／再起動実行手段２１３によって、動作モード切替え機能とプログラム再起動機能とが提供されることになる。
【００４３】
アドレス変換手段２１４は、ＭＭＵ１１２を用いて論理アドレスから物理アドレスへの変換を行うことにより、メモリ保護を行う。アドレス変換はページ単位で行われる。例えば、アドレスを３２ビット、ページサイズを４Ｋとし、論理アドレスの上位２０ビットが論理ページ番号を表し、物理アドレスの上位２０ビットが物理ページ番号を表すとすると、アドレス変換手段は、ページテーブル（論理ページ番号と物理ページ番号の対応表であり、通常はＲＡＭに保持されている）を用いて、論理アドレスの論理ページ番号を物理ページ番号に置換することで、論理アドレスを記憶部１２における物理アドレスに変換することができる。
【００４４】
図３は、アドレス変換手段２１４によりアドレス変換を行う際の論理アドレス空間と物理アドレス空間との対応関係を例示する模式図である。アドレス変換手段２１４は、このようなアドレス変換を行う過程で、特定のページへのアクセス権限を禁止したり、読み出し専用にしたりすることで、メモリ保護を実現できる。例えば、プログラムが格納される論理アドレス空間上の領域を読み出し専用（書き込み禁止）に設定したり、第１のプログラムの一部であるアプリケーション１のプログラムから、同じく第１のプログラムの一部であるアプリケーション２のデータに対するアクセスは禁止されるように設定したりすることができる。なお、ＭＭＵにはこのようなメモリ保護機能のみを有するものもあるが、一般的にはアドレス変換機能と併用されることが多い。
【００４５】
本実施形態の端末装置において、第１のプログラム２２１の実行を開始すると、初期段階のＯＳ起動処理によりＭＭＵによるアドレス変換が有効な状態となり、第１のプログラム２２１は論理アドレスを用いることになる。一方、第２のプログラム２２２は、アドレス変換手段によるアドレス変換機能を使わないので、第２のプログラム２２２が用いるアドレスは記憶部１２における物理アドレスを用いることになる。
【００４６】
端末装置によるプログラム更新処理
次に、図４〜図７のフローチャートを参照しながら、上記した本実施形態の端末装置においてプログラム更新処理を行う手順について説明する。以下では説明を具体的にするために、図１に示す端末装置のハードウェア構成において、ＲＡＭ１２１のサイズを１６Ｍバイト、プログラム用フラッシュＲＯＭ１２２のサイズを３２Ｍバイト、データ用フラッシュＲＯＭ１２３のサイズを３２Ｍバイトとしている。また、差分データのサイズの最大値を４Ｍバイトとしている。
【００４７】
図４は、動作モード１によるプログラム実行手段２１１が実行するプログラム更新処理の前半部分の流れを示すフローチャートである。動作モード１は端末装置が通常に動作している状態であって、アドレス変換手段によりＭＭＵ１１２を用いたアドレス変換／メモリ保護を行う機能が働いている。この状態で、プログラム更新処理が開始されると、図４のフローチャートの処理が開始される。
【００４８】
まず、差分データ受信ステップ（Ｓ４１）が実行される。このステップでは、差分データ受信手段２３が無線通信部１３を用いて差分データを受信し、記憶手段２２に格納する。ここでの格納先は、データ用フラッシュＲＯＭ１２３のファイルシステム（フラッシュファイルシステム）上のファイルまたは予約領域とする（あるいはＲＡＭの作業領域とすることも可能である）。次いで、差分データ配置情報取得ステップ（Ｓ４２）が実行され、ステップＳ４１で格納した差分データから差分データ配置情報が取得される。ここで、ステップＳ４１において差分データをフラッシュファイルシステム上のファイルに格納した場合には、差分データ配置情報として、差分データが格納されたファイル名が取得されることになる。一方、ステップＳ４１において差分データをフラッシュＲＯＭの予約領域（あるいはＲＡＭの作業領域）に格納した場合には、差分データ配置情報として、当該予約領域の論理アドレスとその物理ページの並びに関する情報とが取得されることになる。この差分データ配置情報の内容については、後に詳しく説明する（※１）。
【００４９】
取得された差分データ配置情報は、データ用フラッシュＲＯＭ１２３の予約領域に格納する。次いで、動作モード切替えステップを行う（Ｓ４３）。このステップでは、動作モード切り換え／再起動実行手段２１３により、動作モード１から動作モード２への切り換えを行う。実際の切り替え処理は、次の動作モードをデータ用フラッシュＲＯＭ１２３の予約領域に格納してから、ＣＰＵコア１１１にリセットをかけることにより行う。このリセットは、ステップＳ４１で格納した差分データと、Ｓ４２で格納した差分データ配置情報を保持したままで行われる。この後、リセット処理ルーチンが、予約領域にある次の動作モードを読み出して、指定された動作モードで起動処理を行う。ここでは、ステップＳ４３で次の動作モードとして指定した動作モード２が起動されるので、動作モード１から動作モード２への切り替えが起こることになる。以上で、動作モード１によるプログラム実行手段２１１が実行するプログラム更新処理の前半部分は終了する。
【００５０】
図５は、動作モード２によるプログラム実行手段２１２が実行するプログラム更新処理の後半部分の流れを示すフローチャートである。まず、差分データ復元ステップ（Ｓ５１）が実行される。このステップでは、ステップＳ４２で取得した差分データ配置情報を用いて、ステップＳ４１で受信した差分データを復元する。続いて、復元された差分データと、第１のプログラムの所定部分である更新前データとから、その所定部分に対する更新後のデータを生成する更新後データ生成ステップ（Ｓ５２）が実行される。さらに、当該更新後データを用いて第１のプログラムの該当部分を書き換える書換えステップ（Ｓ５３）が実行される。その後、ステップＳ５１において復元した差分データが残っているかどうかを判定し（Ｓ５４）、残っている場合にはその残りの差分データについてステップＳ５２からの処理を繰り返し、残っていない場合には動作モード２によるプログラム実行手段２１２が実行するプログラム更新処理の後半部分は終了する。
【００５１】
ステップＳ５４において、復元した差分データが残っている場合とは、プログラム更新用差分データの送信側において、更新前と更新後の第１のプログラムを複数の分割された領域ごとに比較し、更新されている領域のみの差分データを抽出して端末装置に送信しているため、端末装置において複数の領域に対する差分データが取得されている場合である。このような場合には、それら全ての差分データが使われるまで、各領域について更新後データ生成ステップ（Ｓ５２）および書換えステップ（Ｓ５３）が繰り返し実行されるようになっている。
【００５２】
以上にてプログラム更新処理は全て終了する。ところで図４において、差分データ受信ステップを、動作モード１で実行する第１のプログラムに含めているのは、動作モード２で実行する第２のプログラムの機能を小さい範囲に留めるためであるほか、第１のプログラムに含めることによって、ＯＳがサポートするＨＴＴＰやＨＴＴＰＳ（ＳＳＬ）などの高度かつ広く行き渡った通信機能を使えるという利点も考慮したためである。実際、これらの高度な通信機能を第２のプログラムの小さいプログラム容量の中で表現することは困難である。
【００５３】
図６は、図５の差分データ復元ステップ（Ｓ５１）における処理の詳細を示すフローチャートである。上記したように、差分データ配置情報はその格納先によって内容が異なっているので、差分データを復元する際には、まず、差分データ配置情報がファイル名であるかどうかを判定する（Ｓ６１）。差分データ配置情報がファイル名である場合には、フラッシュＲＯＭのファイルシステム（フラッシュファイルシステム）上の当該ファイルを読み出して差分データを得ることができる（Ｓ６２）。差分データ配置情報がファイル名ではなく、フラッシュＲＯＭの予約領域の論理アドレスとその物理ページの並びである場合には、その並びに従って当該物理ページから差分データを読み出すことで、元の差分データを復元することができる（Ｓ６３）。
【００５４】
なお、ステップＳ６３において、フラッシュＲＯＭの予約領域から差分データを読み出すと、差分データと同じサイズの追加の作業領域が必要となってしまう。これを避けるために、フラッシュＲＯＭの予約領域において、差分データ配置情報に従って差分データ情報をページ単位で並べ替える処理を行うことにより、元の差分データを復元してもよい。例えば、差分データ配置情報をメモリ上に読み出して（４Ｋバイト）、それをキーとしてページをソートすると、必要となる追加の作業領域を減少させることができる。
【００５５】
以上、図４〜図６を用いて、本実施形態の端末装置におけるプログラム更新処理の基本的な手順を示したが、メモリ容量に制限がある端末装置では、図４のステップＳ４１において差分データを受信した際に、そのデータを一時的に格納するための領域をＲＡＭ上あるいはフラッシュファイルシステム上に確保できない可能性がある。上記した本実施形態のプログラム更新処理では、端末装置は全ての差分データを受信して記憶手段に格納した後に、動作モード１から動作モード２に切り換えることとしているので、少なくとも差分データの最大サイズ（上記では４Ｍバイト）に相当する領域をＲＡＭ上あるいはフラッシュファイルシステム上に確保する必要がある。
【００５６】
この対応策として、差分データを全てフラッシュファイルシステムのファイルに格納する場合には、例えば、事前に４Ｍバイトのダミーファイルをフラッシュファイルシステムに作成しておき、受信した差分データをそのファイルに上書きすればよい。あるいは、ダミーファイルを作成せずとも、プログラム更新処理を行う前に、消去しても差し支えがないファイルを消去して空き領域を作るようにしてもよい。後者の方法は、そのようなファイル（重要度の低いファイルや、後でバックアップから復旧できるファイルなど）が所定サイズ以上存在することが事前に分かっている場合に有効である。事前に分かっていない場合には、ユーザーインタフェースを通じてユーザに不要なファイルを消去するよう促して、必要な空き領域を作るようにしてもよい。
【００５７】
あるいは、差分データを格納するための作業領域をＲＡＭ上に確保するために、他の用途で用いられている作業領域を解放させて、差分データの格納に転用することもできる。このような解放処理を行うために、プログラム更新処理以外のプロセスを個別に停止させ、それらが使用していた作業領域を解放させてもよい。また、動作モード１が動作しているＯＳを一旦再起動した後に、プログラム更新処理を継続するようにしてもよい。例えば、ステップＳ４３と同様の処理を、次の動作モードを動作モード１に設定して行うようにすればよい。
【００５８】
図７は、差分データを格納するための作業領域をＲＡＭ上に確保できない場合に、差分データ受信ステップ（図４のＳ４１）により行われる作業領域のための処理の流れを示すフローチャートである。まず、動作モード１で動作する第１のプログラムは、受信した差分データをフラッシュファイルシステム上のファイルに格納する（Ｓ７１）。上述したように、あらかじめフラッシュファイルシステム上に差分データの最大サイズと同じサイズのダミーファイルを作成しておけば、この処理を確実に実行することができる。なお、ＭＭＵ対応ＯＳの起動処理では、通常、ＲＡＭの初期化を行うので、Ｓ７１ではＲＡＭ上に差分データを格納することはできない。続いて、ＲＡＭ上の作業領域を確保するために、第１のプログラムが動作しているＯＳを再起動する（Ｓ７２）。ＯＳ再起動後、受信した差分データを格納するための作業領域をＲＡＭ上に確保し（Ｓ７３）、その作業領域に、フラッシュファイルシステム上のファイルに格納してある差分データを読み出す（Ｓ７４）。以上の処理により、差分データ受信ステップ（図４のＳ４１）が正常に実行されたことになる。
【００５９】
図７に示す処理では、ステップＳ７３においてＲＡＭ上に必要な作業領域が確保できなければ、プログラム更新処理は実行できないことになる。しかしながら、実際には再起動直後に確保可能な作業領域は、プログラムのバージョンに応じて再現性があるから、差分データの最大サイズが確保できるかどうかを事前の調査によって知ることが可能である。また、ステップＳ７２で再起動した後に動作するＯＳは、ステップＳ７１の実行時のものと同じＯＳでよいが、再起動後にＯＳ上で動作させるプログラムは、ステップＳ７１の実行時とは違って、ステップＳ７３以降の処理に必要な最小限度のものにとどめることができる。具体的には、ステップＳ７３以降においてもファイル読み出し機能は必要であるが、ステップＳ７１で用いた差分データの受信機能は必要ではない。このように、ＯＳ再起動後のステップＳ７３では、ステップＳ７１の実行時よりも大きな作業領域を確保できるものと期待することができる。
【００６０】
また、ＯＳの再起動直後は、上記のとおりＲＡＭの初期化が行われてから間もないため、ＲＡＭ上の作業領域を確保する直前までに、ＲＡＭ上に初期化以来一度も使われていない物理ページが残っているときは、作業領域の中には連続した物理ページが多く含まれることが期待できる。一般的に、物理ページが連続していると、実効的な差分データ配置情報のサイズを小さくすることが可能である。これは、連続している領域の数が少ないほど、差分データ配置情報のサイズは小さくなり、作業領域全体が連続する物理ページで構成される１つの領域だけで構成されるとき、差分データ配置情報のサイズは最小となるためである。実際の差分データ配置情報のサイズは、プログラムのバージョンに応じて再現性があるから、差分データ配置情報のサイズは事前の調査によって知ることが可能であり、予約領域のサイズを小さくすることができる。
【００６１】
起動直後でなければ、ＯＳによって物理ページの割当と解放が繰り返されているから、作業領域の中に連続した物理ページが多く割り当てられるかどうかは、空きページの管理アルゴリズムに依存するが、一般に多く割り当てられることは期待できない。ＯＳによっては、ＤＭＡ処理用のバッファを確保するために、物理ページが連続した作業領域を確保するＡＰＩを提供することもあり、ＯＳを改変してそのようなＡＰＩを作成してもよい。ただし、再起動した場合の差分データ配置情報のサイズを事前に知ることができるから、同様の効果が期待できるのであれば、再起動の方が簡便である。
【００６２】
なお、ステップＳ７１〜Ｓ７４の処理では、差分データの受信後に再起動を行っているが、差分データの受信前に再起動を行って、データの受信前にＲＡＭ上に作業領域を確保してから、差分データの受信と格納を行ってもよい。作業領域を確保した状態で差分データ受信処理を行ってもＲＡＭの空き容量が不足しないと判定できる場合には、この処理手順によれば受信したデータを一旦ファイルに格納する必要がなくなる。
【００６３】
※１
本実施形態の端末装置では、上記したように動作モード２の機能を簡易な構成としているため、フラッシュファイルシステムが使用できないこともある。この場合、図４のステップＳ４１では差分データをフラッシュＲＯＭの予約領域（あるいはＲＡＭ上の作業領域）に格納することになる。動作モード１では、ＭＭＵを用いたアドレス変換／メモリ保護を行うＯＳが動作しているから、ステップＳ４１で差分データを格納した予約領域は論理アドレスで指示されている。ところが、動作モード２では、アドレスは物理アドレスで指定しなければならない。このため、図５のステップＳ５１において差分データを復元できるように、ステップＳ４１において差分データが格納された予約領域の論理アドレスとともにその物理ページの並びに関する情報を差分データ配置情報として記録しておくことが必要となる。
【００６４】
例えばこのような情報は、最大で４Ｍバイト／４Ｋバイト＝１０２４個の物理ページ番号を、差分データの格納順にデータ用フラッシュ上の予約領域に格納することで表現できる。物理ページ番号を、各ページの先頭番地の物理アドレス（３２ビット）で表現すると、４Ｋバイトのサイズの予約領域がデータ用フラッシュ上に必要となるが、格納されている物理ページが連続している箇所がある場合は、ランレングス法にもとづく適当な符号化を施すことで、実効的な差分データ配置情報のサイズを小さくすることが可能である。具体的には、連続する物理ページで構成される領域を、「（連続する物理ページのうちの）先頭ページの先頭番地の物理アドレス」と「連続する個数」という２つの値の組で表す。さらに、前者を２０ビット、後者を１２ビットとして、３２ビット長に符号化すれば、差分データ配置情報の格納に必要な予約領域のサイズは、符号化を施す前のサイズを超えることはない。
【００６５】
上記符号化の形式は、物理アドレス空間上の１つ以上の領域に格納された差分データの、各領域の位置（先頭の物理アドレス）と大きさ（連続するページ数）を表したもので、それを順番に格納することで領域の順序を表している。
【００６６】
なお、所定の論理ページ番号に対応する物理アドレスを取得するためには、対象となるＯＳ内部の状態にアクセスする必要がある。ＯＳがそのような情報を取得するためのＡＰＩを提供していることもあるし、ＯＳを改変したり、デバイスドライバを作成したりして、ページテーブル経由で取得できることもある。
【００６７】
以上、本発明のプログラムを更新するための方法、プログラムおよび装置について、具体的な実施の形態を示して説明したが、本発明はこれらに限定されるものではない。当業者であれば、本発明の要旨を逸脱しない範囲内において、上記各実施形態又は他の実施形態にかかる発明の構成および機能に様々な変更・改良を加えることが可能である。
【産業上の利用可能性】
【００６８】
本発明のプログラムを更新するための方法およびプログラムは、データ受信手段、記憶手段、データ書き換え手段等を備えた携帯型の端末装置などにおいて実現され得るものであり、内蔵プログラムの更新という情報処理が上記のデータ受信手段、記憶手段、データ書き換え手段等を用いて具体的に実現されるものであるから、産業上利用することができる発明である。
【図面の簡単な説明】
【００６９】
【図１】本発明のプログラムを更新するための方法、プログラムおよび装置において、更新の対象であるプログラムを含んだ端末装置のハードウェア構成を概略的に示すブロック図である。
【図２】図１に示す端末装置が行う処理の内容にもとづいた機能的構成を示す機能ブロック図である。
【図３】図１に示す端末装置のアドレス変換手段によりアドレス変換を行う際の論理アドレス空間と物理アドレス空間との対応関係を例示する模式図である。
【図４】動作モード１によるプログラム実行手段が実行するプログラム更新処理の前半部分の流れを示すフローチャートである。
【図５】動作モード２によるプログラム実行手段が実行するプログラム更新処理の後半部分の流れを示すフローチャートである。
【図６】図５の差分データ復元ステップ（Ｓ５１）における処理の詳細を示すフローチャートである。
【図７】差分データを格納するための作業領域をＲＡＭ上に確保できない場合に、差分データ受信ステップ（図４のＳ４１）により行われる作業領域のための処理の流れを示すフローチャートである。
【符号の説明】
【００７０】
１１  プログラム実行処理部
１１１  ＣＰＵコア
１２  記憶部
１２１  ＲＡＭ
１２２  プログラム用フラッシュＲＯＭ
１２３  データ用フラッシュＲＯＭ
１３  無線通信部
１４  アンテナ
２１  プログラム実行手段
２１１  第１の動作モードによるプログラム実行手段
２１２  第２の動作モードによるプログラム実行手段
２１３  動作モード切り替え／再起動実行手段
２１４  アドレス変換手段
２２  記憶手段
２２１  第１のプログラム
２２２  第２のプログラム
２２３  差分データ
２２４  差分データ配置情報
２３  差分データ受信手段
【図１】
2006133889.tif 000003
【図２】
2006133889.tif 000004
【図３】
2006133889.tif 000005
【図４】
2006133889.tif 000006
【図５】
2006133889.tif 000007
【図６】
2006133889.tif 000008
【図７】
2006133889.tif 000009