(57)【要約】【解決手段】本発明の第１側面に係るアップデート方法は、第１のバージョンを第２のバージョンにアップデートするためにデルタファイル（Ｄ１２）を受信して実行することにより、デバイス（４０）の物理メモリ（４８）のアドレス空間（２１１）で定義される多くのメモリブロック（２０１−２０４）に分割保存されている前記第１のバージョンのソフトウェアのアップデート方法であって、前記多くのメモリブロックと関連した特別メモリブロック（２１２）を定義する定義ステップと、特別メモリブロック空間を定義するために前記特別メモリブロックを消去する消去ステップと、第１の前記多くのメモリブロックに対してアップデートされたデータを、前記特別メモリブロックの前記デルタファイルによって決定されるように、前記特別メモリブロックに書き込む第１書き込みステップと、前記第１のメモリブロックを消去し、それによって前記特別メモリブロック空間を１ブロックだけ移動させる移動ステップと、第２の前記多くのメモリブロックに対してアップデートされたデータを、前記デルタファイルによって決定されるように、前記第１のメモリブロックに書き込む第２書き込みステップとを備えたことを特徴とする。
2007528071.tif 000002
【特許請求の範囲】
【請求項１】
第１のバージョンを第２のバージョンにアップグレードするためのデルタファイル（Ｄ１２）を受信して実行することにより、デバイス（４０）の物理メモリ（４８）のアドレス空間（２１１）で定義される多くのメモリブロック（２０１−２０４）に分割保存されている前記第１のバージョンのソフトウェアをアップデートするためのアップデート方法であって、
前記多くのメモリブロックと関連した特別メモリブロック（２１２）を定義する定義ステップと、
特別メモリブロック空間を定義するために前記特別メモリブロックを消去する消去ステップと、
前記多くのメモリブロックにおける第１のメモリブロックのためのデータであって前記特別メモリブロックの前記デルタファイルによって決定されるようにアップデートされたデータを、前記特別メモリブロックに書き込む第１書き込みステップと、
前記第１のメモリブロックを消去し、それによって前記特別メモリブロック空間を１ブロックだけ移動させる移動ステップと、
前記多くのメモリブロックにおける第２のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記第１のメモリブロックに書き込む第２書き込みステップと、
を備えたことを特徴とするアップデート方法。
【請求項２】
前記特別メモリブロックは、前記アドレス空間における前記第１のメモリブロックに隣接して配置されたメモリブロックとして定義される
ことを特徴とする請求項１に記載のアップデート方法。
【請求項３】
前記デルタファイルによって決定されるようにアップグレ−ドされている間、前記多くのメモリブロックの全てが前記アドレス空間において１ステップだけシフトするまで、前記特別メモリブロック空間を一度に１ブロックだけ移動し、前記多くのメモリブロックにおいて特別メモリブロックが定義されるメモリブロックに前記アドレス空間の次のメモリブロックからデータを書き込むことにより、前記多くのメモリブロックの全てを１つずつ処理する処理ステップをさらに備えた
ことを特徴とする請求項１に記載のアップデート方法。
【請求項４】
第１のバージョンから第２のバージョンへの前記アップグレードから、前記第２のバージョンから第３のバージョンへの第２のアップグレードへ、メモリブロックを書き込む順番を前記アドレス空間において逆にする逆書き込みステップをさらに備えた
ことを特徴とする請求項１に記載のアップデート方法。
【請求項５】
前記デバイスが、デルタファイルを受信して実行する前に、サーバに接続して、前記アドレス空間における前記特別ブロックの現在位置に応じて、前記ソフトウェアをアップグレードするのにデルタファイルのどのタイプが利用可能かを決定する情報であって現在のアドレス空間のステータスに関連する情報を通信し、第１のデルタファイルタイプが、前記アドレス空間において１つの順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用され、第２のデルタファイルが、前記アドレス空間において逆の順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用される通信ステップと、
適用可能なデルタファイルタイプのデルタファイルを前記サーバから前記デバイスへダウンロードするダウンロードステップと、
前記適用可能なデルタファイルを用いて、前記ソフトウェアをアップグレ−ドするアップグレードステップと、
をさらに備えた
ことを特徴とする請求項４に記載のアップデート方法。
【請求項６】
前記デルタファイルによって決定されるように書き込まれる間に、前記メモリブロック間のデータを移動することに応じて、前記ソフトウェアのブートコードにおける前記アドレス空間内の開始アドレスを変更する変更ステップをさらに備えた
ことを特徴とする請求項１から５のいずれか１項に記載のアップデート方法。
【請求項７】
コンピュータ制御された電子デバイス（４０）においてデバイスに存在している第１のバージョン（Ｖ１）のソフトウェアをアップデートするために使用されるプログラムであり、前記デバイスが、前記第１のバージョンから第２のバージョン（Ｖ２）へアップグレ−ドするためのデルタファイル（Ｄ１２）を受信して実行する手段を備え、前記ソフトウェアが、前記デバイスの物理メモリ（４８）のアドレス空間（２１１）で定義される多くのメモリブロック（２０１−２０４）に分割保存されるプログラムであって、
前記多くのメモリブロックとともに特別メモリブロックを定義する定義ステップと、
特別メモリブロック空間を定義するために前記特別メモリブロックを消去する消去ステップと、
前記多くのメモリブロックにおける第１のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記特別メモリブロックに書き込む第１書き込みステップと、
前記第１のメモリブロックを消去し、それによって、前記特別メモリブロック空間を１ブロックだけ移動する移動ステップと、
前記多くのメモリブロックにおける第２のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記第１のメモリブロックに書き込む第２書き込みステップと、
を前記デバイスに実行させる
ことを特徴とするプログラム。
【請求項８】
請求項１から６のいずれか１項に記載のアップデート方法を前記デバイスに実行させる
ことを特徴とする請求項７に記載のプログラム。
【請求項９】
端末における第１のバージョン（Ｖ１）のソフトウェアをアップデートすることに関連したコンピュータコードと、前記第１のバージョンを第２のバージョン（Ｖ２）へアップグレードするためのデルタファイル（Ｄ１２）を受信して実行する手段（４６）とを有するコンピュータシステム（４７）を備え、前記ソフトウェアは、前記端末の物理メモリのアドレス空間（２１１）で定義される多くのメモリブロック（２０１−２０４）に分割保存される無線通信端末（４０）であって、
前記多くのメモリブロックに関連した特別メモリブロック（２１２）は、前記アドレス空間で定義され、
前記端末は、
特別メモリブロック空間を定義するために前記特別メモリブロックを消去する手段と、
前記多くのメモリブロックにおける第１のメモリブロックのためのデータであってデルタファイルによって決定されるようにアップデートされたデータを、前記特別メモリブロックに書き込むデータ書き込み手段と、
前記特別メモリブロック空間を１ブロックだけ移動するために前記第１のメモリブロックを消去するデータ消去手段と、
を備え、
前記データ書き込み手段は、前記多くのメモリブロックにおける第２のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記第１のメモリブロックに書き込む
ことを特徴とする無線通信端末。
【請求項１０】
前記特別メモリブロックは、前記アドレス空間における前記第１のメモリブロックに隣接して配置される
ことを特徴とする請求項９に記載の無線通信端末。
【請求項１１】
前記データ書き込み手段は、前記デルタファイルによって決定されるようにアップグレ−ドされる間に、前記多くのメモリブロックのすべてが前記アドレス空間において１ステップだけシフトするまで、前記アドレス空間において次のメモリブロックから前記多くのメモリブロックの１つにデータを書き込むことにより、前記多くのメモリブロックのすべてを前記特別メモリブロックからひとつずつ処理する
ことを特徴とする請求項９に記載の無線通信端末。
【請求項１２】
第１のバージョンから第２のバージョンへの前記アップグレードから、前記第２のバージョンから第３のバージョンへの第２のアップグレードへ、前記アドレス空間においてメモリブロックに書き込みを行う順番を逆にする逆書き込み手段をさらに備えた
ことを特徴とする請求項９に記載の無線通信端末。
【請求項１３】
前記デバイスは、現在のアドレス空間ステータスに関連する情報であって、前記アドレス空間における前記特別ブロックの現在位置に応じて前記ソフトウェアをアップグレ−ドするのにどのタイプのデルタファイルが適しているかを決定する情報を通信するために、デルタファイルを受信して実行する前に、サーバにつなぐように配され、
第１のデルタファイルタイプは、前記アドレス空間において１つの順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用され、
第２のデルタファイルが、前記アドレス空間において逆の順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用され、
前記端末は、
適用可能なデルタファイルタイプのデルタファイルを前記サーバから前記デバイスへダウンロードするダウンロード手段と、
前記適用可能なデルタファイルを用いて、前記ソフトウェアをアップグレ−ドするアップグレード手段と、
をさらに備えた
ことを特徴とする請求項１２に記載の無線通信端末。
【請求項１４】
前記デルタファイルによって決定されるように書き込まれる間に、前記メモリブロック間でデータを移動することに応じて、前記ソフトウェアのブートコードにおける前記アドレス空間内の開始アドレスを変更する変更手段をさらに備えた
ことを特徴とする請求項９から１３のいずれか１項に記載の無線通信端末。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、コンピュータ及びマイクロプロセッサのシステムに用いられる方法であって、ターゲットアップグレードのためのデルタファイルを受信して実行することにより、ソフトウェアをアップグレードする方法に関する。特に、本発明は、ターゲットアップグレードにおいて潜在的な電力の損失に対処するように改良されたソリューションに関する。
【背景技術】
【０００２】
バックグラウンド
現在のソフトウェアバージョンとアップデート後のソフトウェアバージョンとの差分を送るだけで、ソフトウェアのバイナリをアップグレードすることを可能にするいくつかの技術がある。新バージョンのソフトウェアの特定の部分における差分は、通常、ソースバイナリの約１-１０%である。差分ファイル（一般に指示されたデルタファイル）を使用する手順は、アップデートがＧＰＲＳ（汎用パケット無線サービス）のような低いバンド幅ベアラで送られる場合に、特にメリットが大きい。この技術は、ファームウェア・アップグレード・オーバー・ザ・エアー（Ｆｉｒｍｗａｒｅ  Ｕｐｇｒａｄｅ  Ｏｖｅｒ  ｔｈｅ  Ａｉｒ）と呼ばれて、現在、ＯＭＡにおいて標準化されている。このタイプのアップグレードの動作の１例を概説したものを次に示す：
携帯電話は、マイクロプロセッサで制御されアップグレードされるべきデバイスであるが、現在、ソフトウェアＶ１を有する。目標は、ソフトウェアを最新のリリースバージョンＶ２にアップデートすることである。以下の手続きは、携帯電話におけるソフトウェアをアップデートするために実行される：
１.  ターゲットソフトウェアＶ２をコンパイルしてリンクする；
２.  ＶｌからＶ２までバイナリの差分Ｄ１２を計算する。Ｄ１２は、Ｖ１からＶ２を作成するのに必要なすべての情報を含んでいる；
３.  ターゲットへ例えばＧＰＲＳでＤ１２を転送する；
４.  現在のバイナリのＶ１とＤ１２とを用いてターゲットにＶ２を作成することにより、ターゲットデバイスを再フラッシュ、すなわち、アップグレードさせる。
このように、ターゲットデバイスは、小さいアップデートパッケージＤ１２をデバイスに送るだけでＶ２にアップデートされた。
【０００３】
上記したアップデートプロセスにおける重要なステップは、ターゲットアップグレードのステップである。ターゲットソフトウェア、例えば、ＲＴＯＳ（リアルタイムオペレーティングシステム）及びアプリケーションが再フラッシュされるという事実のために、電力損失はデバイスに致命的なものとなり得る。アップデートプロセスは１００%のフォルトトレランス安全性を有する必要がある。つまり、予期しない停電の後であってもアップデートプロセスを続けることができなければならない。フェイルセーフ能力を実行するのに使用される従来の方法は二相コミットと呼ばれる。この二相コミットは、データベースのような多くのアプリケーションで既に使用されている。アイデアは、アップデート中に古い情報のコピーを取っておくことである。アップデートが完了するまで、古い情報は削除されない。この様にして、アップデート中にアップデートが失敗したら、直前の状態に戻ることができる。
【０００４】
ＮＯＲ型フラッシュを使用するデバイスに対して、通常、メモリは等しい大きさの６４ｋＢのブロックに分割されている。ＮＯＲデバイスに書込みを行うとき、特別な制約がある。全ブロックしかすぐに消すことができず、各ブロックのすべてのビットは１にセットされる。書込みは、バイトレベルで実行して、ビット状態を１から０へ変更することができるだけである。ＮＯＲデバイスにおけるアップグレードはブロックごとに実行される。フェイルリカバリを可能にするために、元のブロックにアップデート後のブロックが書き込まれる前に、各ブロックがまず特定のバックアップブロックにコピーされる。この従来技術の手順を、図１に関して説明する。
【０００５】
特定のデバイスソフトウェアは、４つのメモリブロック１０１-１０４に格納された４つのソフトウェアブロック１-４から構成される。メモリブロック１０１-１０４は、デバイスの物理メモリのメモリスペース１１１の中で定義される。メモリブロック１０１-１０４は、アップデートプロセスの間、特定の状態１０６-１１０で表されるように縦方向に描かれている。各カラムは、アップデートプロセスにおける新しい状態を表す。そのアップデートプロセスは、図面に矢印で示されるように、左から右へと実行される。また、そのプロセスは、デルタパッケージ、状態情報及びアップデートアプリケーションに関連している。しかし、これらは、全体のプロセス自体をはっきりさせるために、ここで示されていない。アップデートプロセス中に、２つのソフトウェアのブロック１及び２が既にアップデートされているが、それはカラム１０６に表現される状態である。次に、ブロック３がアップデートされる。潜在的な電力損失から回復することができるように、情報は、持続的にストアされる必要性がある。状態情報は、どのブロックが処理されているか、そして、現在アップデートのどの状態にあるのかをつかむのに使用される。さらに、新しいブロックが作り出されるまで、古いブロックは保持されなければならない。ブロック３をアップデートするプロセスでは、まずバックアップブロック１０５が消去される。バックアップブロック１０５は、状態１０７へのステップにおいて、メモリスペース１１１の中で定義される。そして、ブロック３のデータは、状態１０８へのステップにおいて、ブロック１０３からバックアップブロック１０５へコピーされる。次に、ブロック１０３が状態１０９へのステップにおいて消去され、空ブロック１０３が残る。最後に、書込みプロセスが状態１１０へのステップにおいてブロック１０３に対して行われ、そこにデータがアップグレードさせて新ブロック３が生成される。あるいは、古いブロック３がバックアップブロック１０５へコピーされる代わりに、新ブロック３は、バックアップブロック１０５において生成されてもよい。
【０００６】
仮に、バックアップブロック１０５が使用されていなかったならば、ブロックが消去された後であって新ブロックが完全に書き込まれる前における電力損失は、ソースのブロックも送出先のブロックも利用できないので、回復不能の事態を招いていただろう。上記の手順を用いることにより、直前のブロックを書き直してアップデートを続行することができるので、アップデートをいつでも行うことができる。
【０００７】
この従来技術の手順の問題は、各ブロックが電力損失に対するリカバリをサポートできるように各ブロックが二度書き込まれなければならないので、フラッシュアップデートの間の書込み時間が倍になるということである。ＮＯＲ型フラッシュに関しては、通常、書込みスピードは約２００ｋＢ／ｓである。次に、１６ＭＢのイメージアップデートにおいてブロックに書き込むための時間はおよそ１６ＭＢ*２／０.２=１６０秒である。そのデバイスは、アップデート中に全ブロックがアップデートされる必要があるなら、完全に使用不能である。したがって、この時間をできるだけ短く保つのは重要である。アップデートのデータサイズと、コードの変化の新しいバイナリーイメージにおける分布の仕方とに応じて、アップデートされなければならないブロック数は異なることがある。経験から明らかなことは、ほとんどのアップデートにおいて、すべての利用可能なブロックの大部分をアップデートする必要があるということである。アップデートがイメージのより小さな部品に集中するような方法でバイナリーイメージを構造化することによって、アップデートが必要なブロック数を減少させるいくつかの方法がある。しかしながら、これらの技術はかなり複雑である。
【発明の開示】
【課題を解決するための手段】
【０００８】
発明の概要
本発明の全般的な目的は、ソフトウェアのアップデートプロセスが例えば電力損失などによる中断後にも回復可能であることを保証するように改良されたソリューションを提供することである。特に、本発明の目的は、デルタファイルを使用してターゲットアップグレード時間を最小とすることができるソフトウェアアップグレ−ドのソリューションを提供することである。
【０００９】
本発明の第１の側面によれば、この目的は、第１のバージョンを第２のバージョンにアップグレードするためのデルタファイルを受信して実行することにより、デバイスの物理メモリのアドレス空間で定義される多くのメモリブロックに分割保存されている前記第１のバージョンのソフトウェアをアップデートする方法であって、以下のステップを備えた方法により、実現することができる。
−前記多くのメモリブロックと関連した特別メモリブロックを定義する；
−特別メモリブロック空間を定義するために前記特別メモリブロックを消去する；
−前記多くのメモリブロックにおける第１のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記特別メモリブロックに書き込む；
−前記第１のメモリブロックを消去し、それによって前記特別メモリブロック空間を１ブロック動かす；及び、
−前記多くのメモリブロックにおける第２のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記第１のメモリブロックに書き込む。
【００１０】
好適な実施形態において、前記特別メモリブロックは、前記アドレス空間における前記第１のメモリブロックに隣接して配置されたメモリブロックとして定義される。
【００１１】
好ましくは、その方法は、前記デルタファイルによって決定されるようにアップグレ−ドされている間、前記多くのメモリブロックの全てがアドレス空間において１ステップだけシフトするまで、前記アドレス空間における次のメモリブロックからの前記多くのメモリブロックの１つにデータを書き込むことにより、前記特別メモリブロックから前記多くのメモリブロックの全てを１つずつ処理するステップを備える。
【００１２】
１つの実施形態では、その方法は、第１のバージョンから第２のバージョンへの前記アップグレードから、前記第２のバージョンから第３のバージョンへの第２のアップグレードへ、メモリブロックを書き込む順番を前記アドレス空間において逆にするステップを備える。
【００１３】
好ましくは、その方法は、以下のステップを備える。
−前記デバイスが、デルタファイルを受信して実行する前に、サーバに接続して、前記アドレス空間における前記特別ブロックの現在位置に応じて、前記ソフトウェアをアップグレードするためのデルタファイルのどのタイプが利用可能かを決定する情報であって現在のアドレス空間のステータスに関連する情報を通信し、第１のデルタファイルタイプは、アドレス空間において１つの順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用され、第２のデルタファイルは、アドレス空間において逆の順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用される；
−適用可能なデルタファイルタイプのデルタファイルを前記サーバから前記デバイスへダウンロードする；及び、
−その適用可能なデルタファイルを用いて、前記ソフトウェアをアップグレ−ドする。
【００１４】
１つの実施形態において、その方法は、前記デルタファイルによって決定されるように書き込まれる間に、前記メモリブロック間のデータを移動することに応じて、前記ソフトウェアのブートコードにおける前記アドレス空間内の開始アドレスを変更するステップを備える。
【００１５】
本発明の第２の側面によれば、前述の目的は、コンピュータ制御された電子デバイスにおいてそのデバイスに存在している第１のバージョンのソフトウェアをアップデートするために使用されるプログラム製品であって、前記デバイスが、前記第１のバージョンから第２のバージョンへアップグレ−ドするためのデルタファイルを受信して実行する手段を備え、前記ソフトウェアが、前記デバイスの物理メモリのアドレス空間で定義される多くのメモリブロックに分割保存され、以下のステップをそのデバイスに実行させることができるプログラムコードを備えた前記プログラム製品によって解決される。
−前記多くのメモリブロックとともに特別メモリブロックを定義する；
−特別メモリブロック空間を定義するために前記特別メモリブロックを消去する；
−前記多くのメモリブロックにおける第１のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記特別メモリブロックに書き込む；
−前記第１のメモリブロックを消去し、それによって、前記特別メモリブロックスペースを１ブロック移動する；及び
−前記多くのメモリブロックにおける第２のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記第１のメモリブロックに書き込む。
【００１６】
１つの実施形態において、そのプログラム製品は、上記のステップにおけるいずれのステップも、前記デバイスに実行させることができるプログラムコードを備える。
【００１７】
本発明の第３の側面によれば、前述の目的は、端末における第１のバージョンのソフトウェアをアップデートすることに関連したコンピュータコードと、前記第１のバージョンを第２のバージョンへアップグレードするためのデルタファイルを受信して実行する手段とを有するコンピュータシステムを備え、前記ソフトウェアは、前記端末の物理メモリのアドレス空間で定義される多くのメモリブロックに分割保存され、前記多くのメモリブロックに関連する特別メモリブロックは、前記アドレス空間で定義され、前記端末は、以下の手段をさらに備えた無線通信端末によって解決される。特別メモリブロックスペースを定義するために前記特別メモリブロックを消去する手段；前記多くのメモリブロックにおける第１のメモリブロックに対して、前記特別メモリブロックに、デルタファイルによって決定されるようにアップデートされたデータを書き込むデータ書き込み手段；前記特別メモリブロックスペースを１ブロック移動するために前記第１のメモリブロックを消去するデータ消去手段；前記データ書き込み手段は、前記多くのメモリブロックにおける第２のメモリブロックのためのデータであって前記デルタファイルによって決定されるようにアップデートされたデータを、前記第１のメモリブロックに書き込むためのものである。
【００１８】
１つの実施形態において、前記特別メモリブロックは、前記アドレス空間における前記第１のメモリブロックに隣接して配置される。
【００１９】
好ましくは、前記データ書き込み手段は、前記デルタファイルによって決定されるようにアップグレ−ドされる間に、前記多くのメモリブロックのすべてが前記アドレス空間において１ステップだけシフトするまで、前記アドレス空間において次のメモリブロックから前記多くのメモリブロックの１つにデータを書き込むことにより、前記多くのメモリブロックのすべてを前記特別メモリブロックからひとつずつ処理するためのものである。
【００２０】
好ましくは、前記無線通信端末は、第１のバージョンから第２のバージョンへの前記アップグレードから、前記第２のバージョンから第３のバージョンへの第２のアップグレードへ、前記アドレス空間においてメモリブロックに書き込みを行う順番を逆にする手段を備える。
【００２１】
好適な実施形態において、前記デバイスは、現在のアドレス空間ステータスに関連する情報であって、前記アドレス空間における前記特別ブロックの現在位置に応じて前記ソフトウェアをアップグレ−ドするのにどのタイプのデルタファイルが適しているかを決定する情報を通信するために、デルタファイルを受信して実行する前に、サーバにつなぐように配される。
【００２２】
好ましくは、前記無線通信端末は、前記デルタファイルによって決定されるように書き込まれる間に、前記メモリブロック間でデータを移動することに応じて、前記ソフトウェアのブートコードにおける前記アドレス空間内の開始アドレスを変更するための手段を備える。
【００２３】
本発明の特徴及び利点は、添付した図面に関して好適な実施形態の以下の説明文から明らかになる。
【発明を実施するための最良の形態】
【００２４】
好適な実施形態の詳細な説明
本説明は、デルタファイルとターゲットアップグレードとを用いてソフトウェアのファームウェアアップグレードすることに使用される手段及び方法について言及する。本発明は、比較的低い伝送帯域幅を使うシステムに使用された場合に特にメリットが大きいが、そのような技術分野に限定されない。
以下に述べる好適な実施形態は、モバイル電話の技術分野に関し、特に無線通信端末への実装に関する。用語「無線通信端末」は、放送局と無線通信するためのすべての移動通信装置を含んでいる。また、その放送局は、例えば、移動端末であってもよいし、静止した基地局であってもよい。その結果、用語「無線端末」は、ＷＬＡＮ（Ｗｉｒｅｌｅｓｓ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの無線通信のための携帯用ラップトップコンピュータだけでなく、移動電話、コミュニケータ、電子手帳、スマートフォン、ＰＤＡ：ｓ（携帯情報端末）、乗り物据付けの無線通信デバイス、または同様のものを含む。さらに、用語「備えている」又は「備える」は、この説明や添付したクレームにおいて含まれている機能、要素又はステップを示す際に、明白に述べられたもの以外の機能、要素又はステップを除外して解釈されることには決してならない点を強調しておく。
【００２５】
以下の説明は、本発明の好適な実施形態に関し、アドレス空間が４つのメモリブロックを備える場合に関する。もっとも、本発明は、いろいろなメモリブロックを備えるアドレス空間に適用可能である点に注意すべきである。
【００２６】
図２は、本発明の好適な実施形態において、ファームウェアアップグレードにおいて自動バックアップストアするための方法の考え方を示す。このアップデートの考え方を用いることによって、アップデート前に各ブロックのバックアップをとる必要がなくなる。図２に示す実施形態の一例において、デバイスは、４つのメモリブロック２０１-２０４を備えるメモリ又はアドレス空間２１１を定義し、各前記メモリブロックがそれぞれ１つのソフトウェアブロック１-４を保持するメモリを備える。カラム２０６で示される状態では、どんなブロックもまだアップデートされていない、そして、ソフトウェアは第１のバージョンになっている。上記の従来技術の方法に関して、メモリ空間２１１は、少なくとも１つのブロックを備え、４つのブロック２０１-２０４より多くのブロックを備える。しかしながら、特定バックアップブロックを使用する代わりに、特別ブロックは、バイナリーイメージがブロック２０１-２０４により表される前に、アドレス空間２１１においてソフトウェアの全イメージを１ブロック又は前方に移動するのに使用される。別の実施形態では、１以上、例えば、２つの特別ブロックが使用されてもよい。
【００２７】
ソフトウェアがアップデートされる際に、アドレス空間２１１に関する物理メモリを保持したデバイスは、前記第１のバージョンから第２のバージョンへソフトウェアをアップデートするのに必要なすべての情報を含むデルタファイル又は差分ファイルを受信する。状態２０６から状態２０７へのステップにおいて、特別ブロック２１２が消去され、次に、現在のソフトウェアに関連したデルタファイルに従ってアップデートされる。この考え方を用いることにより、アップデートされたブロックが常に古いブロックのすぐ前に書き込まれているので、各ブロックのバックアップをとる必要がなくなる。アップデートされるブロックの書込みが完了するまで、古いブロックは上書きされない。消去／書込みの２つの動作の代わりに、消去／書込みの１つの動作が必要なだけである。
【００２８】
提案されたソリューションは、明確な利点を持っているが、克服すべき問題もまたもたらす。１つのアップデートが完了すると、全イメージがアドレス空間においてシフトし終わるので、イメージの始めには特別ブロックがもはや１つも存在しない。しかしながら、本発明の好適な実施形態は、この問題のソリューションを提供する。第１のアップデート動作の後に、代わりにイメージの終わりに、すなわち、、図２の実施形態におけるブロック２０４に、１つの特別ブロックを設ける。しかしながら、アップデートプロセスを逆にすることにより、すなわち、逆の順番でブロックに書き込みを行うことにより、次のアップデートにおいて、同じアルゴリズムを使うことができる。別の問題は、実際のバイナリのコードが、あるベースアドレスにリンクされているということである。ベースアドレスが動かされるならば、バイナリーイメージ内の位置への絶対アドレスが間違ったアドレスで示すことになるので、そのコードは実行できないだろう。何らかの方法において、イメージで使用される絶対アドレスは、アップデート後に１ブロックだけ移動するようにしなければならない。１つの実施形態によれば、この問題は、図３に図示されるように、各アップデートに対して２つのデルタファイルを生成することによって解決される。
【００２９】
図３において、Ｄ１２（ＵＰ）は、カラム３０６に示すソフトウェアバージョンＶ１タイプＡから、カラム３０７に示すＶ２タイプＢへと変換するための第１のデルタファイルを表す。その結果、タイプＡのイメージは、ブロック１-４の後に位置している特別ブロックとともにアドレス空間を定義する。一方、タイプＢのイメージは、ブロック１-４の前に位置している特別ブロックとともにアドレス空間を定義する。Ｄ１２（ＤＯＷＮ）は、カラム３０８に示すソフトウェアバージョンＶ１タイプＢから、カラム３０９に示すＶ２タイプＡへと変換するための第２のデルタファイルを表す。好ましくは、２つのデルタファイルは、実際のデルタファイルを生成する前にタイプＡとＢのイメージを作り出すようにリンクプロセスを変更するのによって生成される。最後に、ブートコードに位置する開始アドレスは、ソフトウェアの実行が意図した通りに行われるように、正しい開始アドレスを指し示すように変更される必要がある。これは、アップデート手順の最後のステップとして行われても良い。
【００３０】
アップデート時間は、本発明によって提供される新しいバックアップの考え方により、最も良い場合において、約半分になる。これは、すべてのブロックがアップデートされた場合である。提案されたソリューションにより、すべてのブロックが、一度書き直される必要がある。現在のソリューションにより、変更されたブロックのみが、アップデートされる必要があり、二度書き込まれる必要がある。全ブロックの半分以上が変更されるアップデートに対して、新しいソリューションは、さらに速い。通常、ほとんどのブロックが、アップデートにおいて変更される必要がある。
【００３１】
好適な実施形態において、本発明は、無線によるファームウェア・アップグレードに使用される。特に、本発明は、ターゲットデバイスとして無線通信端末を用いて移動無線通信する技術分野に適用される。図４は、本発明が用いられる可能性があるデバイスの一例として、セルラー携帯電話４０の実施形態における無線通信端末を示している。端末４０は、車台又はハウジング４５を備える。端末４０は、マイクロホン４１の形でユーザの音声入力を運び、スピーカ４２の形又はイヤホン（図示せず）に接続されるコネクターの形でユーザの音声出力を運ぶ。一連のキー、ボタンまたは同様のものは、既存の技術に従って、例えば、電話をかけるのに使用可能なデータ入力インタフェース４３を構成する。データ出力インタフェースは、当業者によく知られた方法で、通信情報、アドレスリスト情報などを表示するものをさらに含むディスプレイ４４を備える。無線通信端末４０は、無線送受信エレクトロニクス（図示せず）を含んでおり、ハウジング４５内に内蔵アンテナ４６が設けられ、そのアンテナは、実質的に平坦な物体であるとして破線で図面に示されている。図５は、簡易化された方法で図４の端末４０を示したものである。端末４０は、そのアンテナ４６によって、無線通信ネットワークに含まれる基地局５０に、よく知られている方法で通信可能に接続される。端末４０は、マイクロプロセッサ制御器４７をそれと関連した物理メモリ４８とともに備えるコンピュータシステムをさらに含んでいる。基地局５０と通信することにより、端末４０は、本発明に従って、メモリ４８に存在しているアップグレ−ドソフトウェア、特にソフトウェアバイナリーのデルタファイルを受信することができる。さらに、プロセッサ４７を含むコンピュータシステムは、図２と３とで定義されるアドレス空間を用いて、メモリ４８に格納されたソフトウェアを保存及びアクセスし、上記図２と３とに関連して定義されるプロセスのステップを実行する。特に、プロセッサ４７によって制御されるコンピュータシステムは、前記ソフトウェアを更新し、それによってメモリブロックの内容をアップデートしたかどうかに関わらず１ブロックだけアドレス空間においてシフトさせるために、デルタファイルの内容によって決定されるようにメモリブロックを消去して及び書き込む手段を備える。
【００３２】
以上は、本発明の原理、好適な実施形態、および動作モードを説明したものである。もっとも、添付した特許請求の範囲において定義されるように、本発明の範囲から逸脱しないで当業者がこれらの実施形態を変更可能な点も評価すべきである。
【図面の簡単な説明】
【００３３】
【図１】図１は、ターゲットアップグレードによりソフトウェアをアップデートするための従来技術のプロセスの概要を示したものである。
【図２】図２は、ターゲットアップグレードによりソフトウェアをアップデートするための本発明の実施形態に従ったプロセスの概要を示したものである。
【図３】図３は、図２の全体的なプロセスにおける２つの異なるバージョンの概要を示したものである。
【図４】図４は、本発明のプロセスのステップを実行するためのプログラム製品が実装された一例となる無線通信端末の概要を示したものである。
【図５】図５は、端末でのターゲットアップグレードのためのアップデートデルタファイルを受信するために基地局と通信している状態において、図４の端末とその内蔵のコンピュータシステムとの概要を示したものである。
【図１】
2007528071.tif 000003
【図２】
2007528071.tif 000004
【図３】
2007528071.tif 000005
【図４】
2007528071.tif 000006
【図５】
2007528071.tif 000007
【手続補正書】
【提出日】平成18年11月2日(2006.11.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のバージョンを第２のバージョンにアップグレードするためのデルタファイル（Ｄ１２）を受信して実行することにより、デバイス（４０）の物理メモリ（４８）のアドレス空間（２１１）で定義される多くのメモリブロック（２０１−２０４）に分割保存されている前記第１のバージョンのソフトウェアをアップデートするためのアップデート方法であって、
前記多くのメモリブロックと関連しており初期状態においてメモリ空間の一端に位置している第１のメモリブロックの前に配置される特別メモリブロック（２１２）を定義する定義ステップと、
前記特別メモリブロックを消去する消去ステップと、
前記第１のメモリブロックに対してアップデートされたデータを、前記特別メモリブロックに書き込む書き込みステップと、
前記特別メモリブロックを１ブロックだけ前に移動させる移動ステップと、
前記多くのメモリブロックの全てが前記アドレス空間において１ステップだけシフトするまで、前記多くのメモリブロックの全てを１つずつ処理する処理ステップと、を備え、
前記処理ステップは、
前記特別メモリブロックを消去する工程と、
前記特別メモリブロックに隣接しかつ前記特別メモリブロックの後に位置するメモリブロックのためのアップデートされたデータを前記特別メモリブロックに書き込む工程と、
前記特別メモリブロックを一度に１ブロックだけ移動する工程と、
を含む
ことを特徴とするアップデート方法。
【請求項２】
第１のバージョンから第２のバージョンへの前記アップグレードから、前記第２のバージョンから第３のバージョンへの第２のアップグレードへ、メモリブロックを書き込む順番を前記アドレス空間において逆にする逆書き込みステップをさらに備えた
ことを特徴とする請求項１に記載のアップデート方法。
【請求項３】
前記デバイスが、デルタファイルを受信して実行する前に、サーバに接続して、前記アドレス空間における前記特別ブロックの現在位置に応じて、前記ソフトウェアをアップグレードするのにデルタファイルのどのタイプが利用可能かを決定する情報であって現在のアドレス空間のステータスに関連する情報を通信し、第１のデルタファイルタイプが、前記アドレス空間において１つの順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用され、第２のデルタファイルが、前記アドレス空間において逆の順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用される通信ステップと、
適用可能なデルタファイルタイプのデルタファイルを前記サーバから前記デバイスへダウンロードするダウンロードステップと、
前記適用可能なデルタファイルを用いて、前記ソフトウェアをアップグレ−ドするアップグレードステップと、
をさらに備えた
ことを特徴とする請求項２に記載のアップデート方法。
【請求項４】
前記メモリブロック間のデータを移動することに応じて、前記ソフトウェアのブートコードにおける前記アドレス空間内の開始アドレスを変更する変更ステップをさらに備えた
ことを特徴とする請求項１から３のいずれか１項に記載のアップデート方法。
【請求項５】
コンピュータ制御された電子デバイス（４０）においてデバイスに存在している第１のバージョン（Ｖ１）のソフトウェアをアップデートするために使用されるプログラムであり、前記デバイスが、前記第１のバージョンから第２のバージョン（Ｖ２）へアップグレ−ドするためのデルタファイル（Ｄ１２）を受信して実行する手段を備え、前記ソフトウェアが、前記デバイスの物理メモリ（４８）のアドレス空間（２１１）で定義される多くのメモリブロック（２０１−２０４）に分割保存されるプログラムであって、
前記多くのメモリブロックと関連しており初期状態においてメモリ空間の一端に位置している第１のメモリブロックの前に配置される特別メモリブロック（２１２）を定義する定義ステップと、
前記特別メモリブロックを消去する消去ステップと、
前記第１のメモリブロックに対してアップデートされたデータを、前記特別メモリブロックに書き込む書き込みステップと、
前記特別メモリブロックを１ブロックだけ移動する移動ステップと、
前記多くのメモリブロックの全てが前記アドレス空間において１ステップだけシフトするまで、前記多くのメモリブロックの全てを１つずつ処理する処理ステップと、
を前記デバイスに実行させ、
前記処理ステップは、
前記特別メモリブロックを消去する工程と、
前記特別メモリブロックに隣接しかつ前記特別メモリブロックの後に位置するメモリブロックのためのアップデートされたデータを前記特別メモリブロックに書き込む工程と、
前記特別メモリブロックを一度に１ブロックだけ移動する工程と、
を含む
ことを特徴とするプログラム。
【請求項６】
請求項２から４のいずれか１項に記載のアップデート方法を前記デバイスに実行させる
ことを特徴とする請求項５に記載のプログラム。
【請求項７】
端末における第１のバージョン（Ｖ１）のソフトウェアをアップデートすることに関連したコンピュータコードと、前記第１のバージョンを第２のバージョン（Ｖ２）へアップグレードするためのデルタファイル（Ｄ１２）を受信して実行する手段（４６）とを有するコンピュータシステム（４７）を備え、前記ソフトウェアは、前記端末の物理メモリのアドレス空間（２１１）で定義される多くのメモリブロック（２０１−２０４）に分割保存される無線通信端末（４０）であって、
前記多くのメモリブロックに関連しており初期状態においてメモリ空間の一端に位置している第１のメモリブロックの前に配置される特別メモリブロック（２１２）は、前記アドレス空間で定義され、
前記端末は、
前記特別メモリブロックを消去する手段と、
前記第１のメモリブロックに対してアップデートされたデータを、前記特別メモリブロックに書き込むデータ書き込み手段と、
前記特別メモリブロックを１ブロックだけ前に移動させる移動手段と、
前記多くのメモリブロックの全てが前記アドレス空間において１ステップだけシフトするまで、前記特別メモリブロックを消去し、前記特別メモリブロックに隣接したメモリブロック又は前記特別メモリブロックの後のメモリブロック対してアップデートされたデータを前記特別メモリブロックに書き込み、前記特別メモリブロックを一度に１ブロックだけ移動することにより、前記多くのメモリブロックの全てを１つずつ処理する処理手段と、
を備えたことを特徴とする無線通信端末。
【請求項８】
第１のバージョンから第２のバージョンへの前記アップグレードから、前記第２のバージョンから第３のバージョンへの第２のアップグレードへ、前記アドレス空間においてメモリブロックに書き込みを行う順番を逆にする逆書き込み手段をさらに備えた
ことを特徴とする請求項７に記載の無線通信端末。
【請求項９】
前記デバイスは、現在のアドレス空間ステータスに関連する情報であって、前記アドレス空間における前記特別ブロックの現在位置に応じて前記ソフトウェアをアップグレ−ドするのにどのタイプのデルタファイルが適しているかを決定する情報を通信するために、デルタファイルを受信して実行する前に、サーバにつなぐように配され、
第１のデルタファイルタイプは、前記アドレス空間において１つの順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用され、
第２のデルタファイルが、前記アドレス空間において逆の順番で前記メモリブロックに存在するソフトウェアをアップグレードさせることに適用され、
前記端末は、
適用可能なデルタファイルタイプのデルタファイルを前記サーバから前記デバイスへダウンロードするダウンロード手段と、
前記適用可能なデルタファイルを用いて、前記ソフトウェアをアップグレ−ドするアップグレード手段と、
をさらに備えた
ことを特徴とする請求項８に記載の無線通信端末。
【請求項１０】
前記デルタファイルによって決定されるように書き込まれる間に、前記メモリブロック間でデータを移動することに応じて、前記ソフトウェアのブートコードにおける前記アドレス空間内の開始アドレスを変更する変更手段をさらに備えた
ことを特徴とする請求項７から９のいずれか１項に記載の無線通信端末。
【国際調査報告】
2007528071.tif 000008
2007528071.tif 000009
2007528071.tif 000010