(57)【特許請求の範囲】
【請求項１】
ファームウェアが組み込まれた情報機器であって、
ネットワークを介して送信されてきた、前記ファームウェアを更新するための更新ファイルを受信する更新ファイル受信処理部と、
前記更新ファイルに基づいて現バージョンのファームウェアイメージを更新するのに最適な最適化更新データを生成する更新最適化処理部と、
前記最適化更新データを前記現バージョンのファームウェアイメージに適用してファームウェアイメージを更新する更新適用処理部と、を備え、
前記更新ファイルは、最新バージョンまでの複数のバージョンのファームウェアイメージにおいて、互いに隣接するバージョンのファームウェアイメージの差分である複数の差分ファイルによって構成され、
前記差分ファイルは、ファームウェアイメージのバージョンｊ（ｊ＝１，・・・，ｎ−１；ｎはｎ＞ｊの整数）とバージョンｊ＋１の差分であることを示す差分バージョン番号と、ファームウェアのどのファイルに対してどのような処理を実行すべきかを示す更新手順と当該更新手順で用いられる構成データとを有する更新データと、を含み、
前記更新ファイル受信処理部は、前記受信した更新ファイルから、前記現バージョンのファームウェアイメージのバージョン番号までの前記差分ファイルを削除し、残った差分ファイルを適用ファイルとし、
前記更新最適化処理部は、前記適用ファイルに含まれる前記差分ファイルのうち重複する更新手順を取り除いて最新の更新手順及び構成データのみを残すことにより、前記現バージョンのファームウェアイメージから前記最新バージョンのファームウェアイメージに直接書き換えるための前記最適化更新データを生成することを特徴とする情報機器。
【請求項２】
コンピュータを請求項１に記載の情報機器として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、更新データ生成装置、及び情報機器、並びにプログラムに関し、特に、情報機器におけるファームウェアの更新に関するものである。
【背景技術】
【０００２】
組込み機器をリリース後、ファームウェアに不具合が見つかった場合、不具合を解決したファームウェアに従来のファームウェアを書き換えることで問題を解決するという方法が一般に行われている。ここでファームウェアとは、組み込み機器の不揮発性記憶領域にあらかじめ記憶されているデータの全てを意味するものとする。このようなファームウェア更新に関する文献として、例えば特許文献１や非特許文献１がある。
【０００３】
特許文献１は、ファームウェアを全て交換するファームウェア更新方式である。ファームウェアを全て交換するため、ネットワーク経由で更新する場合、新しいバージョンのファームウェアイメージを全て配信する必要があるため、配信すべきデータサイズが大きくなる。
【０００４】
また、非特許文献１は、古いバージョンのデータと新しいバージョンのデータの差分を抽出する技術である。ネットワーク経由でファームウェアを更新する場合、これを利用し、ファームウェアの更新差分だけを配信すれば、配信データサイズを削減できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平11-110218号公報
【非特許文献】
【０００６】
【非特許文献１】xdelta: http://xdelta.org/
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の方法では配信すべきデータサイズが大きくなり過ぎてしまう。従って、例えば、放送波のようなブロードキャストネットワークを介してファームウェア更新を実行する場合、当該ネットワークはその通信速度が低速でビット単価が高いため、特許文献１の方法は好ましくない。よりファームウェアの更新サイズを小さくすることが求められる。
【０００８】
一方、非特許文献１の方法によれば、ファームウェアの更新差分だけを配信するのでデータサイズを小さくすることができる。しかしながら、ファームウェアのバージョンが増えてくると、データサイズが大きくなる課題がある。例えば、最新のファームウェアのバージョンが５である場合、配信対象の機器のファームウェアのバージョンは、１から５までのバージョンが混在しているため、バージョン１から５の差分、２から５の差分、３から５の差分、４から５の差分の4種類のデータを配信しなければならない。また、組み込み機器側では、搭載される物理メモリが限られ、また書込み速度が低速なＮＯＲ型フラッシュメモリが使われることが多いため、非特許文献１によって配信された更新用差分データを適用するためにはメモリの消費領域が大きくなり、かつ更新用差分データの書込み時間が長く掛かってしまうという問題がある。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、組み込み機器側の消費メモリ容量を小さくし、かつ書込み時間を短くし、さらに、配信される更新用データサイズが小さくなるようなファームウェア更新技術を提供するものである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明では、更新データ作成装置は、更新対象機器（情報機器）の新バージョン（バージョンＮ）のファームウェアイメージと一つ古いバージョン（バージョンＮ−１）のファームウェアイメージを入力とし、バージョンＮのファームウェアイメージとバージョンＮ−１のファームウェアイメージの差分（Ｎ−１→Ｎ差分とする）を抽出し、機器Ａに蓄積する。機器Ａは、蓄積された１→２差分、２→３差分、３→４差分・・・（Ｎ−１）→Ｎ差分を更新ファイルとしてまとめ、ブロードキャストネットワークに更新ファイルを配信する。
【００１１】
一方、更新対象機器にはバージョンｉ（１≦ｉ≦Ｎ）のファームウェアがフラッシュメモリに書き込まれ、それが稼動している場合に、更新対象機器が、更新ファイルをブロードキャストネットワークから受信する。更新ファイルには、（ｊ−１）→ｊ差分（２≦ｊ≦Ｎ）が含まれるが、更新対象機器は、ｊ≦ｉが成り立つ差分については、記憶領域にとどめずに破棄し、ｉ＜ｊの差分のみを記憶領域に留める。更新対象機器は、受信した（ｊ−１）→ｊ差分（ｉ＜ｊ≦Ｎ）より、ｉ→Ｎ差分を生成し、ｉ→Ｎ差分をファームウェアイメージに適用し、バージョンＮのファームウェアイメージにアップデートする。
【００１２】
即ち、本発明による更新データ生成装置は、複数のバージョンのファームウェアイメージにおいて互いに隣接するバージョンのファームウェアイメージの差分である複数の差分ファイルを格納する差分ファイル群格納部と、差分ファイル群格納部に格納される全ての差分ファイルの少なくとも一部であって、複数の差分ファイルを更新ファイルとして生成する更新ファイル生成部と、生成された更新ファイルを、ネットワーク（例えば、ブロードキャストネットワーク等の１対多を実現するネットワーク）を介して情報機器（ファームウェア更新対象機器）に送信する更新ファイル送信部と、を備えている。
【００１３】
また、差分ファイルは、ファームウェアイメージのバージョンｊ（ｊ＝１，・・・，ｎ−１；ｎはｎ＞ｊの整数）とバージョンｊ＋１の差分であることを示す差分バージョン番号と、ファームウェアのどのファイルに対してどのような処理を実行すべきかを示す更新手順と当該更新手順で用いられる構成データとを有する更新データと、を含んでいる。
【００１４】
更新データ生成装置は、さらに、最新バージョンのファームウェアイメージを取得するデータ取得部と、最新バージョンのファームウェアイメージの直近の旧バージョンのファームウェアイメージを少なくとも格納する旧版ファームウェアイメージ格納部と、最新バージョンのファームウェアイメージと直近の旧バージョンのファームウェアイメージの差分である最新差分ファイルを生成し、差分ファイル群格納部に最新差分ファイルを追加する差分ファイル生成部と、を備えている。
【００１５】
一方、本発明による情報機器は、ファームウェアが組み込まれており、ネットワークを介して送信されてきた、ファームウェアを更新するための更新ファイルを受信する更新ファイル受信処理部と、更新ファイルに基づいて現バージョンのファームウェアイメージを更新するのに最適な最適化更新データを生成する更新最適化処理部と、最適化更新データを現バージョンのファームウェアイメージに適用してファームウェアイメージを更新する更新適用処理部と、を備えている。ここで、更新ファイルは、最新バージョンまでの複数のバージョンのファームウェアイメージにおいて、互いに隣接するバージョンのファームウェアイメージの差分である複数の差分ファイルによって構成されている。また、差分ファイルは、ファームウェアイメージのバージョンｊ（ｊ＝１，・・・，ｎ−１；ｎはｎ＞ｊの整数）とバージョンｊ＋１の差分であることを示す差分バージョン番号と、ファームウェアのどのファイルに対してどのような処理を実行すべきかを示す更新手順と当該更新手順で用いられる構成データとを有する更新データと、を含んでいる。そして、更新ファイル受信処理部は、受信した更新ファイルから、現バージョンのファームウェアイメージのバージョン番号までの差分ファイルを削除し、残った差分ファイルを適用ファイルとする。また、更新最適化処理部は、適用ファイルを用いて、現バージョンのファームウェアイメージから最新バージョンのファームウェアイメージに直接書き換えるための最適化更新データを生成する。より具体的には、更新最適化処理部は、適用ファイルに含まれる複数の差分ファイルのうち重複する更新手順を取り除いて最新の更新手順及び構成データのみを残すことにより最適化更新データを生成する。
【００１６】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【００１７】
本発明によれば、組み込み機器側の消費メモリ容量を小さくし、かつ書込み時間を短くできる。また、配信される更新用データサイズを小さくすることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態によるファームウェア更新システムの概略構成を示す図である。
【図２】更新作成・配布サーバのソフトウェア構成を示す図である。
【図３】ファームウェア組み込み機器のソフトウェアの構成を示す図である。
【図４】更新データの構成例を示す図である。
【図５】差分ファイル群の構成例を示す図である。
【図６】更新ファイルの構成例を示す図である。
【図７】バージョン番号の構成例を示す図である。
【図８】作業データ領域の構成例を示す図である。
【図９】更新作成機能の処理を説明するためのフローチャートである。
【図１０】更新配布機能の処理を説明するためのフローチャートである。
【図１１】更新受信プログラムによる処理を説明するためのフローチャートである。
【図１２】更新最適化プログラムによる処理を説明するためのフローチャートである。
【図１３】更新適用プログラムによる処理を説明するためのフローチャートである。
【発明を実施するための最良の形態】
【００１９】
本発明は、ファームウェアが組み込まれた情報機器におけるファームウェアを効率よく（配信コストを削減でき、情報機器におけるメモリ容量及び更新時間が少なくて済む）更新することを可能にする技術に関するものである。
【００２０】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００２１】
＜ファームウェア更新システムの構成＞
図１は、本発明の実施形態によるファームウェア更新システムの概略構成を示す図である。ファームウェア更新システムは、更新作成・配布サーバ１３０と、例えばＤＶＤ録再装置等、少なくとも１つのファームウェア組み込み機器１６０（以下、「機器１６０」という）と、を備えている。更新作成・配布サーバ１３０と機器１６０は、ネットワーク、例えばブロードキャストネットワーク１５０を介して接続されている。
【００２２】
開発者１１０が新しいファームウェアを作成すると、そのファームウェアイメージ１２０が更新作成・配布サーバ１３０に転送される。ここで、ファームウェアイメージ１２０とは、開発者１１０が開発したソフトウェアと構成ファイルを一つのファイルとしてアーカイブしたものである。
【００２３】
更新作成・配布サーバ１３０は、ネットワーク機能を備えたコンピュータとしてのハードウェアで構成され、具体的には、ＣＰＵ１３１と、ＲＡＭ１３２と、ネットワークインタフェース１３３と、ＨＤＤ１３４と、を備えている。ネットワークインタフェース１３３には、開発者１１０からのアクセスを可能にするためのＬＡＮインタフェース、及び更新ファイル１４０をブロードキャストネットワーク１５０で配布するため、ブロードキャストネットワーク１５０へのインタフェースが設けられている。
【００２４】
ＨＤＤ１３４は、旧版ファームウェアイメージ１３５と差分ファイル群１３６を格納している。旧版ファームウェアイメージ１３５は、ファームウェアイメージ１２０より一つ古いバージョンのファームウェアイメージでも良いし、古いバージョンのファームウェアイメージを全て保存していても良い。差分ファイル群１３６は、更新ファイル１４０を作成するために使うデータであり、詳細な構成は図５に示される。
【００２５】
更新作成・配布サーバ１３０は、機器１６０のファームウェア更新に用いられる更新ファイル１４０を、ブロードキャストネットワーク１５０を介して配信する。更新ファイル１４０の構成については、図６に示される。更新作成・配布サーバ１３０の詳細なソフトウェアの構成は図２に示される。ブロードキャストネットワーク１５０は、放送波ネットワークで代表されるネットワークであり、送信者から複数の受信者に対して同じデータを送信する。
【００２６】
機器１６０は、ブロードキャストネットワーク１５０からのデータ受信機能を備えた、コンピュータとしてのハードウェアで構成され、具体的には、ＣＰＵ１６１と、ＲＡＭ１６２と、電波チューナ１６３と、フラッシュメモリ１６４と、を備えている。
【００２７】
機器１６０は、ブロードキャストネットワーク１５０に送信される更新ファイル１４０を受信し、フラッシュメモリ１６４に格納されたファームウェアイメージ１６５を更新する。機器１６０の詳細なソフトウェアの構成は図３に示される。
【００２８】
なお、本実施形態では、更新作成・配布サーバ１３０は、更新ファイル作成機能と更新ファイル配布機能の双方を備えているが、作成機能と配布機能を分離して別々の装置として構成しても良い。
【００２９】
＜更新作成・配布サーバ１３０のソフトウェア構成＞
図２は、更新作成・配布サーバ１３０のソフトウェアの構成を示す図である。図２に示されるように、更新作成・配布サーバ１３０は、更新作成機能（プログラム）２２０と更新配布機能（プログラム）２３０を備えている。更新作成機能２２０は、ファームウェアイメージ１２０及び旧版ファームウェアを用いて差分ファイル群１３６を生成し、それに基づいて更新ファイル１４０を作成する。詳細な処理は、図９に示される。一方、更新配布機能２３０は、更新作成機能２２０で作成された更新ファイル１４０を、ブロードキャストネットワーク１５０に送信する機能を有している。詳細な処理は、図１０に示される。
【００３０】
＜機器１６０のソフトウェア構成＞
図３は、機器１６０のソフトウェア構成を示す図である。図３に示されるように、機器１６０は、更新受信プログラム３１０と、更新最適化プログラム３２０と、更新適用プログラム３３０と、バージョン番号格納部３４０と、を備えている。これらプログラムによる処理は、ＲＡＭ１６２の一部である作業データ領域３５０を使用して実行される。
【００３１】
更新受信プログラム３１０は、更新ファイル１４０をネットワークから受信するためのプログラムであり、処理の詳細は図１１に示される。また、更新最適化プログラム３２０は、更新受信プログラム３１０が受信した更新ファイル１４０を最適化するプログラムであり、処理の詳細は図１２に示される。さらに、更新適用プログラム３３０は、更新ファイル１４０に記された更新内容であって、最適化された更新データをファームウェアイメージ１６５に反映するプログラムであり、処理の詳細は図１３に示される。
【００３２】
バージョン番号格納領域３４０は、ファームウェアイメージ１６５のバージョン番号を管理する領域であり、詳細な構成は図７に示される。なお、バージョン番号格納領域３４０は、バージョン番号以外に機器１６０のメタデータを管理していても良い。
【００３３】
作業データ領域３５０は、更新最適化プログラム３２０が使うデータを格納し、受信した更新ファイル１４０からファームウェア更新に必要な最適化された更新データを生成するために用いられるＲＡＭ１６２上の領域である。最適化された更新データの生成例については図８を用いて説明する。
【００３４】
以上のうち、更新受信プログラム３１０、更新最適化プログラム３２０、更新適用プログラム３３０、及びバージョン番号格納領域３４０は、フラッシュメモリ１６４に書き込まれている。なお、作業データ領域３５０は、ＲＡＭ１６２に存在してもいいし、フラッシュメモリ１６４に書き込まれていてもよい。
【００３５】
＜更新データの構成＞
図４は、更新ファイル４００の構成例を示す図である。更新ファイル４００は、差分ファイル群１３６及び更新ファイル１４０で使われるデータ構造に相当するものであり、更新手順４１０と構成データ４２０とによって構成されている。更新データ４００は、差分ファイル群及び更新ファイルの構成要素となるものである。
【００３６】
更新手順４１０は、データ４２０をどのように使って更新するのかを記す情報である。例えば、行４３１は、ファームウェアイメージ１６５内の／ｆｏｏ／ｂａｒというファイルを、行４３１のデータ４２０に格納されたデータで上書きする、という意味である。また、行４３２は、ファームウェアイメージ１６５内のファイル／ｆｏｏ／ｂａｒ２を削除するという意味である。
【００３７】
＜差分ファイル群の構成＞
図５は、差分ファイル群１３６の構成例を示す図である。差分ファイル群１３６は、差分バージョン番号５１０と更新データ５２０で構成されている。
【００３８】
差分バージョン番号１５０は、＜旧バージョン＞→＜新バージョン＞というフォーマットとなっており、更新データ５２０には、＜旧バージョン＞から＜新バージョン＞にバージョンアップするための更新データが記されている。
【００３９】
更新データのフォーマットとして、例えば、行５３１には、バージョン１のファームウェアから、バージョン２のファームウェアにバージョンアップするために必要な更新手順４１０と必要な構成データ４２０（図４参照）が記されている。
【００４０】
＜更新ファイルの構成＞
図６は、更新ファイル１４０の構成例を示した図である。更新ファイル１４０には、差分ファイル群１３６と同様に差分バージョン番号６１０、更新データ６２０の組が格納されている。なお、更新ファイル１４０は、実際に配信されるファイルである。例えば、差分ファイル群１３６が全ての差分ファイル（差分バージョン番号＋更新データ）を有しているのに対し、更新ファイル１４０は、差分ファイル群１３６から一定以上古いバージョンの差分ファイルを除く差分ファイルを有している。
【００４１】
＜バージョン番号＞
図７は、バージョン番号３４０の構成を示す図である。バージョン番号７１０に、機器１６０のファームウェアイメージ１６５のバージョン番号が記録されている。例えば、７２１では、「２」となっているため、機器１６０のファームウェアイメージ１６５のバージョン番号は２であることを意味する。
【００４２】
＜作業データ領域の構成例＞
図８は、作業データ領域３５０に格納されるデータの構成例を示す図である。更新手順、データの組が格納されている。当該作業データ領域３５０に格納される差分データは、バージョン番号７１０よりも大きいバージョンを有する差分データ（例えば８１０、８２０及び８３０）、及びそれに基づいて最適化された差分データ（例えば８４０）である。
【００４３】
＜更新作成機能の処理内容＞
図９は、更新作成機能２２０の処理内容を説明するためのフローチャートである。なお、各ステップの処理はＣＰＵ１３１によって実行されるが、更新作成機能２２０とＣＰＵ１３１が協働して更新作成処理部が構成される。以下の処理は動作主体が更新作成処理部であるとして説明する。
【００４４】
まず、更新作成処理部は、ファームウェアイメージ１２０を受信する（ステップ９１０）。
【００４５】
そして、更新作成処理部は、受信したファームウェアイメージ１２０と旧版ファームウェアイメージ１３５の差分を生成し、図４のフォーマットの更新データを作成する（ステップ９２０）。例えば、ファームウェアイメージ１２０中に／ｆｏｏ／ｂａｒファイルが存在し、旧版ファームウェアイメージ１３５には／ｆｏｏ／ｂａｒファイルが存在しない場合は、行４３１のような更新データを生成する。そして、データ４２０には、ファームウェアイメージ１２０に含まれる／ｆｏｏ／ｂａｒのデータが格納される。また、旧版ファームウェアイメージ１３５に／ｆｏｏ／ｂａｒ２が存在し、ファームウェアイメージ１２０に存在しない場合は、行４３２のような更新データを生成する。
【００４６】
最後に、更新作成処理部は、差分ファイル群１３６に、ステップ９２０で作成した更新データを追加する（ステップ９３０）。例えば、受信したファームウェアイメージのバージョンが５、旧版ファームウェアイメージのバージョンが４の場合は、行５３４のようなデータが追加される（図５参照）。
【００４７】
＜更新配布機能の処理内容＞
図１０は、更新配布機能２３０の処理内容を説明するためのフローチャートである。なお、各ステップの処理はＣＰＵ１３１によって実行されるが、更新配布機能２３０とＣＰＵ１３１が協働して更新配布処理部が構成される。以下の処理は動作主体が更新配布処理部であるとして説明する。
【００４８】
更新配布処理部は、差分ファイル群１３６を基に更新ファイル１４０を作成する（ステップ１０１０）。例えば、最新のファームウェアのバージョンがＮの場合、差分バージョン番号１→２，２→３，３→４，・・・，Ｎ−１→Ｎに対応する更新データを取り出す。最新のファームウェアバージョンが５の場合は、更新ファイル１４０は図６のような構成になる。なお、更新ファイル１４０は、差分ファイル群１３６と同じ内容となる場合もあるし、差分ファイル群１３６から選択された一部の差分ファイルで構成される場合もある。
【００４９】
そして、更新配布処理部は、ステップ１０１０で作成した更新ファイル１４０を、ブロードキャストネットワーク１５０を介して機器１６０に配信する（ステップ１０２０）。
【００５０】
＜更新受信処理の内容＞
図１１は、更新受信プログラム３１０の処理内容を説明するためのフローチャートである。なお、各ステップの処理はＣＰＵ１６１によって実行されるが、更新受信プログラム３１０とＣＰＵ１６１が協働して更新受信処理部が構成される。以下の処理は動作主体が更新受信処理部であるとして説明する。
【００５１】
まず、更新受信処理部は、ブロードキャストネットワーク１５０を介して送信されてきた更新ファイル１４０の受信を開始する（ステップ１１１０）。そして、更新ファイル１４０の各行について、ステップ１１３０及び１１４０の処理が実行される（ステップ１１２０）。
【００５２】
つまり、更新受信処理部は、差分バージョン番号６１０の新バージョンのバージョン番号と機器側のバージョン番号３４０を比較する（ステップ１１３０）。これは、後の更新処理で使わないデータを作業データ領域３５０に保存しないことにより、機器１６０におけるリソース消費量を減らすためである。差分バージョン番号６１０の新バージョンの番号がバージョン番号３４０よりも大きい場合、処理は１１４０に移行する。例えば、機器１６０側のバージョン番号３４０が２の場合は、図６の更新ファイルの場合だと、行６３２、６３３及び６３４についてステップ１１４０の処理が実行されることになる。
【００５３】
そして、更新受信処理部は、必要な差分バージョン番号６１０及び更新データ６２０の組を、例えば作業データ領域３５０に保存する。ここでは作業データ領域３５０に必要なデータを保存するとしたが、これに限られず、ＲＡＭ１６２でもよいしフラッシュメモリ１６４の空き領域でもよい。
【００５４】
＜更新最適化処理の内容＞
図１２は、更新最適化プログラム３２０の処理内容を説明するためのフローチャートである。なお、各ステップの処理はＣＰＵ１６１によって実行されるが、更新最適化プログラム３２０とＣＰＵ１６１が協働して更新最適化処理部が構成される。以下の処理は動作主体が更新最適化処理部であるとして説明する。
【００５５】
まず、各ステップの処理の説明の前に、当該更新最適化処理の目的を説明する。配信された更新ファイル１４０には、最新のファームウェアのバージョンが５の場合、ファームウェアのバージョン１→２への更新手順と構成データ、２→３の手順と構成データ、３→４への手順と構成データ、４→５への手順と構成データ、が別々に含まれている。そして、機器１６０のファームウェアのバージョンが２の時、２→３、３→４、４→５のように順々にバージョンアップする必要がある。順々にバージョンアップする処理の中で、同じファイルのバージョンアップがあると、バージョンアップのためのファイル書き込み時間が無駄になる。例えば、２→３、４→５のバージョンアップの中で／ｆｏｏ／ｂａｒファイルのコピーが生じていたら、２度／ｆｏｏ／ｂａｒファイルをフラッシュＲＯＭに書き込みすることになってしまい、無駄である。そこで、このような無駄が生じないようにするため、更新最適化プログラム３２０は、直接バージョン２からバージョン５に直接アップデートする更新手順と構成データを生成し、最後の一度のコピーや削除等の処理を実行すれば済むようにファイルを最適化している。以下、図６の更新ファイルを受信した例を使いながら説明する。
【００５６】
更新最適化処理部は、Ｓ＝現バージョン番号３４０、Ｎ＝最新のファームウェアのバージョン番号として、差分バージョン番号Ｓ→Ｎのための更新データを空テーブルとして作成する（ステップ１２１０）。今回の例では、Ｓ＝２、Ｎ＝５となる。Ｎについては、図６の更新ファイルの差分バージョン番号６１０の中の最も新しいバージョン番号から知ることができる。
【００５７】
次に、更新最適化処理部は、Ｓ≦ｉ≦Ｎ−１について、ステップ１２３０からステップ１２７０の処理を行う（ステップ１２２０）。今回の例では、２≦ｉ≦４である。つまり、更新最適化処理部は、更新受信プログラム（更新受信処理部）３１０によって受信されたデータから（今回の例では、図６の行６３２から６３４）、差分バージョン番号ｉ→ｉ＋１の更新データ６２０を作業領域３５０に取り出す（ステップ１２３０）。ｉ＝２ならば、行６３２の更新データを取り出すことになる。このステップで取り出される更新データの例は、図８の８１０、８２０、８３０、及び８４０に示されている。それぞれ、ｉ＝２、３、４に対応する更新データである。
【００５８】
続いて、更新最適化処理部は、取り出した更新データの各行について、ステップ１２５０からステップ１２７０の処理を行う（ステップ１２４０）。つまり、更新最適化処理部は、当該取り出した更新手順がＳ→Ｎの更新データの更新手順に一致するかどうかをチェックする（ステップ１２５０）。一致する場合（ステップ１２５０でＹｅｓ）は、更新最適化処理部は、Ｓ→Ｎの更新データのデータを、差分バージョン番号ｉ→ｉ＋１のデータで上書きする（ステップ１２６０）。一方、一致しない場合（ステップ１２５０でＮｏ）は、更新最適化処理部は、Ｓ→Ｎの更新データに、取り出した更新手順、データの組を追加する（ステップ１２７０）。
【００５９】
以上のステップ１２４０から１２７０の処理内容の説明を補足するため、具体例を使って説明する。
【００６０】
繰り返し処理でｉ＝２の場合、８４０は空であるため、ステップ１２５０ではＮｏ（一致しない）となり、ステップ１２７０において、行８１１及び８１２の内容が行８４１及び８４２にそれぞれ追加される。
【００６１】
繰り返し処理でｉ＝３の場合、８４０には既に行８４１及び８４２が存在する。しかし、更新手順ｃｏｐｙ／ｆｏｏ／ｂａｒ３は存在しないので、ステップ１２５０ではＮｏ（一致しない）となり、ステップ１２７０において行８２１の内容が行８４３に追加される。
【００６２】
繰り返し処理でｉ＝４の場合、８４０には既に行８４１、８４２及び８４３が存在する。更新手順ｃｏｐｙ／ｆｏｏ／ｂａｒが８３０及び８４０の双方に存在するため、ステップ１２５０ではＹｅｓ（一致する）となる。よって、ステップ１２６０において、８３０のデータが行８４３のデータに上書きされる。
【００６３】
以上の処理を実行することにより、ファームウェアイメージのバージョン２からバージョン５に直接バージョンアップするために必要な更新手順とデータを８５０に構築できることになる。バージョン２→３、３→４、４→５のように順次バージョンアップすると、／ｆｏｏ／ｂａｒファイルへの書き込みが行８１１及び８３１の２度生じるのに対し、８５０に生成されたバージョン２→５のバージョンアップでは、／ｆｏｏ／ｂａｒファイルへの書き込みは行８４１の一度しか生じていない。よって、ファームウェアの更新処理時間を短縮することができるようになる。
【００６４】
＜更新適用処理の内容＞
図１３は、更新適用プログラム３３０の処理内容を説明するためのフローチャートである。なお、各ステップの処理はＣＰＵ１６１によって実行されるが、更新適用プログラム３３０とＣＰＵ１６１が協働して更新適用処理部が構成される。以下の処理は動作主体が更新適用処理部であるとして説明する。
【００６５】
ファームウェアの更新が指示されると、更新適用処理部は、更新最適化プログラムを呼び出し、受信した更新ファイル１４０の最適化処理（図１２の各ステップ）を実行させ、最適化された更新データを取得する（ステップ１３１０）。
【００６６】
そして、更新適用処理部は、更新最適化処理によって生成された最適化された更新データに含まれる更新手順（図１２の説明で使った例では、８４０）に従い、フラッシュメモリ１６４中のファームウェアイメージ１６５を更新する（ステップ１３２０）。
【００６７】
＜まとめ＞
本実施形態では、更新作成・配布サーバは、複数のバージョンのファームウェアイメージにおいて互いに隣接するバージョンのファームウェアイメージの差分である複数の差分ファイルを格納している。そして、当該サーバは、格納されている全ての差分ファイルの少なくとも一部であって、複数の差分ファイルを更新ファイル（ファームウェアの作成日時によっては、差分ファイルが１→２、２→３、・・・、ｊ−１→ｊの場合、更新ファイルが５→６、・・・、ｊ−１→ｊという場合がある。）として生成し、この生成された更新ファイル（複数の差分ファイルで構成される）を、ブロードキャストネットワーク等の１対多を実現するネットワークを介して情報機器に配信する。このようにすることにより、全てのバージョンから最新バージョンへの更新データを全て作成して配信する必要がなくなり、配信すべきデータのサイズを小さくすることができるようになる。特に、ブロードキャストネットワークはビット単価が高いので、配信コストを削減することが可能となる。
【００６８】
また、更新作成・配布サーバは、最新バージョンのファームウェアイメージを取得すると、最新バージョン（ｊ）のファームウェアイメージと直近の旧バージョン（ｊ−１）のファームウェアイメージの差分である最新差分ファイル（ｊ−１→ｊ）を生成し、差分ファイル群格納部に最新差分ファイルを追加する。このようにすることにより、最新バージョンのファームウェアが供給される度に、全ての旧バージョンと最新バージョンとの差分を演算する必要がなく、サーバ側の負担を軽減することができる。
【００６９】
より具体的に説明すると、配信サイズについては、単純な差分配布では、１→Ｎ差分、２→Ｎ差分、３→Ｎ差分・・・Ｎ−１→Ｎ差分のＮ−１個の差分が配信される。この方式では、各差分での、バージョンの差が大きいため、差分のデータサイズが大きくなる。一方、本発明においては、１→２差分、２→３差分、・・・Ｎ−１→Ｎ差分のＮ−１個の差分が配信される。各差分のバージョンの差は１なため、単純な差分配布より差分のデータサイズが小さくなる。
【００７０】
一方、ファームウェア組み込み機器（情報機器）は、ブロードキャストネットワークを介して送信されてきた更新ファイルを受信し、更新ファイルに基づいて現バージョンのファームウェアイメージを更新するのに最適な最適化更新データを生成し、それを現バージョンのファームウェアイメージに適用してファームウェアイメージを更新する。より詳細には、更新ファイル受信した際に、当該機器は、受信した更新ファイルから、現バージョンのファームウェアイメージのバージョン番号までの差分ファイルを削除し、残った差分ファイルを適用ファイルとする。また、当該機器は、当該機器は、適用ファイルに含まれる複数の差分ファイルのうち重複する更新手順を取り除いて最新の更新手順及び構成データのみを残すことにより最適化更新データ（現バージョンのファームウェアイメージから最新バージョンのファームウェアイメージに直接書き換えるため更新データ）を生成する。
【００７１】
より具体的に説明すると、ファームウェア組み込み機器における必要な記憶領域については、配信されたＮ−１個のｊ−１→ｊ差分（２≦ｊ≦Ｎ）のうち、ｉ＜ｊの差分のみが記憶領域に留められるため、必要な記憶領域は単純に更新を受信し保存するより小さくて済む。
【００７２】
また、当該機器における更新内容をフラッシュメモリに書き込むための処理時間についても、記憶領域に保存された（ｊ−１）→ｊ差分（ｉ＜ｊ≦Ｎ）をそのままフラッシュメモリに書き込むと、それぞれの差分で共通するファイルを更新している場合、余計な書込みが発生する。例えば、それぞれの差分全てで／ｆｏｏ／ｂａｒファイルを更新している場合、Ｎ−ｉ回／ｆｏｏ／ｂａｒファイルを書き込むことになる。一方、本方式では、フラッシュメモリ書込み前に、ｉ→Ｎ差分を動的に生成しているため、／ｆｏｏ／ｂａｒファイルへの書込みは１回であり、書込み時間の短縮を実現している。
【００７３】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【００７４】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【００７５】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ-ＲＷ、ＣＤ-Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【符号の説明】
【００７６】
１２０・・・ファームウェアイメージ
１３０・・・更新作成・配布サーバ
１３１・・・ＣＰＵ
１３２・・・ＲＡＭ
１３３・・・ネットワークインタフェース
１３４・・・ＨＤＤ
１３５・・・旧版ファームウェアイメージ格納部
１３６・・・差分ファイル群格納部
１４０・・・更新ファイル
１５０・・・ブロードキャストネットワーク
１６０・・・情報機器
１６１・・・ＣＰＵ
１６２・・・ＲＡＭ
１６３・・・電波チューナ
１６４・・・フラッシュメモリ
１６５・・・ファームウェアイメージ（現在使用中のもの）
４００・・・更新データ
【図１】
0005478986.tif 000002
【図２】
0005478986.tif 000003
【図３】
0005478986.tif 000004
【図４】
0005478986.tif 000005
【図５】
0005478986.tif 000006
【図６】
0005478986.tif 000007
【図７】
0005478986.tif 000008
【図８】
0005478986.tif 000009
【図９】
0005478986.tif 000010
【図１０】
0005478986.tif 000011
【図１１】
0005478986.tif 000012
【図１２】
0005478986.tif 000013
【図１３】
0005478986.tif 000014