(57)【要約】【課題】ファームウェア更新処理が途中中断しても支障がなく、イメージデータの配信負荷を抑え、かつイメージデータを格納するための記憶容量を節約することのできるファームウェア更新手法を提供する。【解決手段】本発明に係るファームウェア更新方法では、ファームウェアを更新する処理が前回途中で中断していないと判定した場合は、ファームウェアの更新後イメージデータのうち現在のファームウェアとの間の差分のみをネットワーク経由で取得し、当該差分を更新前のファームウェアに適用することによりファームウェアを更新する。ファームウェアを更新する処理が前回途中で中断したと判定した場合は、ファームウェアの更新後イメージデータを全てネットワーク経由で取得し更新する。【選択図】図６
2012008640.tif 000002
【特許請求の範囲】
【請求項１】
通常動作時に用いる通常ファームウェアと緊急動作時に用いる緊急ファームウェアを格納した不揮発性メモリ及び一時的にデータを保存する揮発性メモリを備える情報機器のファームウェアを更新する方法であって、
前記情報機器を次回起動する時に用いるファームウェアを前記緊急ファームウェアに設定するステップと、
前記ファームウェアを更新する処理が前回途中で中断したか否かを判定する中断判定ステップと、
新たな前記ファームウェアをネットワーク経由で取得して前記ファームウェアを更新する更新ステップと、
前記情報機器を次回起動する時に用いるファームウェアを前記通常ファームウェアに設定するステップと、
を有し、
前記更新ステップでは、
前記中断判定ステップにおいて、前記ファームウェアを更新する処理が前回途中で中断したと判定した場合は、前記ファームウェアの更新後イメージデータを全てネットワーク経由で取得して前記揮発性メモリに保存し、
前記中断判定ステップにおいて、前記ファームウェアを更新する処理が前回途中で中断していないと判定した場合は、前記ファームウェアの更新後イメージデータのうち現在の前記ファームウェアとの間の差分のみをネットワーク経由で取得して前記揮発性メモリに保存し、当該差分を更新前の前記ファームウェアに適用することによって前記ファームウェアを更新する
ことを特徴とするファームウェア更新方法。
【請求項２】
前記中断判定ステップでは、
前記緊急ファームウェアを用いて前記情報機器が起動された場合は、前記ファームウェアを更新する処理が前回途中で中断したと判定する
ことを特徴とする請求項１記載のファームウェア更新方法。
【請求項３】
前記情報機器を次回起動する時に用いるファームウェアを前記緊急ファームウェアに設定した後、前記情報機器を再起動するステップを有し、
前記中断判定ステップおよび前記更新ステップを前記緊急ファームウェアの配下で実行する
ことを特徴とする請求項１記載のファームウェア更新方法。
【請求項４】
請求項１から３のいずれか１項記載のファームウェア更新方法をコンピュータに実行させることを特徴とするファームウェア更新プログラム。
【請求項５】
通常動作時に用いる通常ファームウェアと緊急動作時に用いる緊急ファームウェアを格納した不揮発性メモリと、
一時的にデータを保存する揮発性メモリと、
請求項４記載のファームウェア更新プログラムと、
前記ファームウェア更新プログラムを実行する演算装置と、
を備えたことを特徴とする情報機器。
【請求項６】
請求項５記載の情報機器と、
前記ファームウェアの更新後イメージデータを保持する管理装置と、
を有し、
前記管理装置は、
前記情報機器内における前記更新後イメージデータの格納場所を記述したデータマッピングテーブルをさらに備え、
前記情報機器が前記更新後イメージデータまたは前記差分を用いて前記ファームウェアを更新する手順を記述した手順データを、前記データマッピングテーブルの記述にしたがって作成し、
前記情報機器は、
前記更新後イメージデータまたは前記差分と前記手順データをネットワーク経由で取得し、前記手順データの記述にしたがって前記ファームウェアを更新する
ことを特徴とするファームウェア更新システム。
【請求項７】
前記管理装置は、
前記ファームウェアの更新前後のイメージデータを比較し、
更新前後で差分が生じている場合は、当該差分を差分イメージデータとして抽出するとともに、当該差分イメージデータを反映すべき旨を前記手順データに記述する
ことを特徴とする請求項６記載のファームウェア更新システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報機器のファームウェアを更新する手法に関するものである。
【背景技術】
【０００２】
読み込み専用のファイルシステムに格納されているファームウェアを書き換える際は、ファイル単位で書き換えることができないので、ファームウェアのイメージデータ全体を書き換える必要がある。その主な手法として、以下の２つがある。
【０００３】
第１の手法は、全体配布・全体退避法である。本手法では、ファームウェアを格納する不揮発性記憶領域を２つ設ける。ファームウェアを更新する時は、新しいファームウェアのイメージデータ全体を配布し、古いファームウェアを一方の記憶領域へ退避させ、他方の記憶領域に新しいファームウェアを書き込む。本手法を用いる場合、ファームウェア更新処理が途中で中断しても支障はないが、不揮発性メモリの記憶領域が新旧イメージ全体分必要であり、かつイメージデータの配信負荷が大きい。本手法を用いた例として、下記特許文献１がある。
【０００４】
第２の手法は、バイト単位差分配布・全体退避法である。本手法では、ファームウェアのイメージデータ全体ではなく、新旧ファームウェアのバイト単位の差分イメージデータのみを配布する。古いファームウェア全体を退避させる点は共通である。本手法では、ファームウェア更新処理が途中で中断しても支障がなく、かつイメージデータの配信負荷が小さいという利点はあるが、不揮発性メモリの記憶領域が新旧イメージ全体分必要である点は同様である。データの差分をバイト単位で抽出する手法の例として、下記非特許文献１がある。
【０００５】
また、上記第２の手法の派生手法として、ファームウェアを書き換える際に古いファームウェアを不揮発性メモリに退避する手法もあるが、やはり不揮発性メモリに退避領域を設ける必要が生じる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−１１０２１８号公報
【非特許文献】
【０００７】
【非特許文献１】http://xdelta.org/（２０１０年５月１４日取得）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述の各手法では、ファームウェアを格納するための記憶領域が新旧イメージ全体分必要となる。また、イメージデータ全体を配信する場合は、これに加えイメージデータの配信負荷が大きくなるという課題がある。
【０００９】
本発明は、上記のような課題を解決するためになされたものであり、ファームウェア更新処理が途中中断しても支障がなく、イメージデータの配信負荷を抑え、かつイメージデータを格納するための記憶容量を節約することのできるファームウェア更新手法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るファームウェア更新方法では、ファームウェアを更新する処理が前回途中で中断していないと判定した場合は、ファームウェアの更新後イメージデータのうち現在のファームウェアとの間の差分のみをネットワーク経由で取得し、当該差分を更新前のファームウェアに適用することによりファームウェアを更新する。ファームウェアを更新する処理が前回途中で中断したと判定した場合は、ファームウェアの更新後イメージデータを全てネットワーク経由で取得し更新する。
【発明の効果】
【００１１】
本発明に係るファームウェア更新方法によれば、前回のファームウェア更新処理が途中中断した場合は、更新後イメージデータを全て取得して更新するので、イメージデータが破損したままになるなどの支障なく更新を完了することができる。また、前回のファームウェア更新処理が途中中断していない場合は、差分イメージデータのみを取得し、当該差分を適用することによりファームウェアを更新するので、イメージデータの配信負荷と記憶容量を抑えることができる。
【００１２】
また、取得するイメージデータは、ファームウェアブロック全体ではなく、アプリケーションを除いた、起動と更新に必要なファームウェアのみのため、記憶容量を抑えることができる。更に、取得したイメージデータは、不揮発性メモリではなく揮発性メモリに保存するため、不揮発性メモリの容量を節約できる。
【００１３】
従って、更新処理の中断が起こる可能性が低く、かつ揮発性メモリ領域が不揮発性メモリ領域と比較して大きい情報機器に対しては、本発明に係るファームウェア更新方法は特に有効である。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係るファームウェア更新システム１０００の構成図である。
【図２】全体データマッピングテーブル２４３のデータ例を示す図である。
【図３】差分更新手順データ２４４のデータ例を示す図である。
【図４】全体更新手順データ２４５２のデータ例を示す図である。
【図５】配信パッケージ取得先テーブル１４４２のデータ例を示す図である。
【図６】情報機器１００が通常起動する際の動作フローである。
【図７】情報機器１００が緊急起動する際の動作フローである。
【図８】図６のステップＳ６０４および図７のステップＳ７０３の詳細フローである。
【図９】情報機器１００が通常起動する際の動作フローである。
【図１０】情報機器１００が緊急起動する際の動作フローである。
【図１１】管理装置２００が差分配信パッケージ２４４と全体配信パッケージ２４５を作成する処理フローを示す図である。
【図１２】実施形態４に係るファームウェア更新システム１０００の構成図である。
【発明を実施するための形態】
【００１５】
本明細書において配信負荷とは、ファームウェアの更新後イメージデータまたは差分データを更新対象である情報機器に対して配信する際の、配信装置と配信ネットワークにかかる通信負荷を指す。本明細書において更新中断時への対応とは、ファームウェア更新中に予期せぬ電源断等の中断があった場合でも、ファームウェア更新を正常に完了させることができることを指す。
【００１６】
＜実施の形態１＞
図１は、本発明の実施の形態１に係るファームウェア更新システム１０００の構成図である。ファームウェア更新システム１０００は、情報機器１００、管理装置２００を有する。情報機器１００は、ファームウェアを更新する対象となる機器である。管理装置２００は、更新前後のファームウェアのイメージデータを管理する装置である。
【００１７】
情報機器１００は、ファームウェアを不揮発性メモリ内に格納した機器であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、メモリ１２０、通信ポート１３０、不揮発性メモリ１４０を備える。
【００１８】
ＣＰＵ１１０は、不揮発性メモリ１４０が格納しているブートローダ１４１１、通常用ファームウェア１４２１、通常用ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１４２２、通常アプリケーション１４２３、緊急用ファームウェア１４３１、緊急用ＯＳ１４３２、ファームウェア更新プログラム１４４１を実行する。これらプログラムの詳細については後述する。以下の説明では、記載の都合上、各プログラムを動作主体として説明する場合があるが、実際に各プログラムを実行する動作主体はＣＰＵ１１０であることを付言しておく。これは管理装置２００についても同様である。
【００１９】
メモリ１２０は、ＣＰＵ１１０が動作する際に用いる一時的なデータを格納する揮発性メモリである。また、ファームウェアを更新するため管理装置２００が配信する配信パッケージ１２１を一時的に格納する。
【００２０】
通信ポート１３０は、情報機器１００がネットワーク３００を介して管理装置２００と通信するための通信インターフェースである。
【００２１】
不揮発性メモリ１４０は、情報機器１００のファームウェアを格納するメモリ装置であり、ブートブロック１４１、通常ファームウェアブロック１４２、緊急ファームウェアブロック１４３、更新用ブロック１４４を有する。
【００２２】
ブートブロック１４１は、情報機器１００が起動するときに最初に実行すべきプログラム等を格納する記憶領域であり、ブートローダ１４１１、起動設定データ１４１２を格納する。ブートローダ１４１１は、起動設定データ１４１２の記述にしたがって、通常用ファームウェア１４２１または緊急用ファームウェア１４３１を起動する。起動設定データ１４１２は、通常用ファームウェア１４２１と緊急用ファームウェア１４３１のいずれを起動すべきかを記述する。起動設定データ１４２１は、ファームウェアを更新する過程で書き換えられる。詳細は後述する。
【００２３】
通常ファームウェアブロック１４２は、情報機器１００を通常起動するときに実行すべきプログラムを格納する記憶領域であり、通常用ファームウェア１４２１、通常用ＯＳ１４２２、および通常アプリケーション１４２３を格納する。
【００２４】
通常用ファームウェア１４２１は、情報機器１００を通常起動するときにＣＰＵ１１０が実行するファームウェアである。通常用ＯＳ１４２２は、情報機器１００を通常起動するときにＣＰＵ１１０が実行するオペレーティングシステムである。通常アプリケーション１４２３は、情報機器１００が通常起動した後にＣＰＵ１１０が実行するアプリケーションプログラムである。
【００２５】
緊急ファームウェアブロック１４３は、情報機器１００が異常終了するなどした後、非常状態として起動するとき（緊急起動）に実行すべきプログラムを格納する記憶領域であり、緊急用ファームウェア１４３１、緊急用ＯＳ１４３２を格納する。緊急用ファームウェア１４３１は、情報機器１００を緊急起動するときにＣＰＵ１１０が実行するファームウェアである。緊急用ＯＳ１４３２は、情報機器１００を緊急起動するときにＣＰＵ１１０が実行するオペレーティングシステムである。
【００２６】
なお、図１においては、通常ファームウェアブロック１４２、緊急ファームウェアブロック１４３において、それぞれ、通常用ファームウェア１４２１と通常用ＯＳ１４２２、緊急用ファームウェア１４３１と緊急用ＯＳ１４３２を分離して記載しているが、例えばＯＳをＬｉｎｕｘ（登録商標）とするような場合、ＯＳのコア部分（ｋｅｒｎｅｌ）も通常用ファームウェア１４２１または緊急用ファームウェア１４３１に含め、ファームウェアと一体的に更新するような構成としてもよい。
【００２７】
更新用ブロック１４４は、ファームウェアを更新する処理に係る必要なデータ等を格納する記憶領域であり、ファームウェア更新プログラム１４４１、配信パッケージ取得先テーブル１４４２を格納する。ファームウェア更新プログラム１４４１は、通常用ファームウェア１４２１または緊急用ファームウェア１４３１を更新するプログラムである。配信パッケージ取得先テーブル１４４２は、ファームウェアを更新するためのイメージデータ等を含む配信パッケージの配信元アドレスを記述する。これらの詳細は後述する。
【００２８】
管理装置２００は、ＣＰＵ２１０、メモリ２２０、通信ポート２３０、記憶装置２４０を備える。
【００２９】
ＣＰＵ２１０は、記憶装置２４０が格納している後述の各データを用いて、情報機器１００に配信するための配信パッケージを作成する。配信パッケージについては後述する。メモリ２２０は、ＣＰＵ２１０が動作する際に用いる一時的なデータを格納する揮発性メモリである。通信ポート２３０は、管理装置２００がネットワーク３００を介して情報機器１００と通信するための通信インターフェースである。
【００３０】
記憶装置２４０は、旧イメージデータ２４１、新イメージデータ２４２、全体データマッピングテーブル２４３、差分配信パッケージ２４４、および全体配信パッケージ２４５を格納する記憶装置である。記憶装置２４０は、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの不揮発性記憶装置で構成することができる。
【００３１】
旧イメージデータ２４１と新イメージデータ２４２は、それぞれ情報機器１００のファームウェアの更新前後に対応するイメージデータである。全体データマッピングテーブル２４３は、旧イメージデータ２４１と新イメージデータ２４２が情報機器１００上のどの記憶領域に格納されるかを記述するデータである。
【００３２】
差分配信パッケージ２４４は、旧イメージデータ２４１と新イメージデータ２４２の差分を情報機器１００に配信し、その差分のみを情報機器１００上で反映するためのデータである。差分配信パッケージ２４４は、差分イメージデータ２４４１、差分更新手順データ２４４２を含む。差分イメージデータ２４４１は、旧イメージデータ２４１と新イメージデータ２４２の差分を抽出したデータである。差分更新手順データ２４４２は、差分イメージデータ２４４１を情報機器１００上で反映するため情報機器１００が実行すべき手順を記述したデータである。
【００３３】
全体配信パッケージ２４５は、新イメージデータ２４２を情報機器１００に配信し、情報機器１００上で反映するためのデータである。全体配信パッケージ２４５は、新イメージデータ２４５１、全体更新手順データ２４５２を含む。新イメージデータ２４５１は、新イメージデータ２４２に相当する。全体更新手順データ２４５２は、新イメージデータ２４５１を情報機器１００上で反映するため情報機器１００が実行すべき手順を記述したデータである。
【００３４】
ＣＰＵ２１０は、旧イメージデータ２４１、新イメージデータ２４２、および全体データマッピングテーブル２４３に基づき、各配信パッケージを作成し、記憶装置２４０に格納する。作成するタイミングは、例えば新たな新イメージデータ２４２を受け取ったときなどとすればよい。
【００３５】
図２は、全体データマッピングテーブル２４３のデータ例を示す図である。１行目は、情報機器１００の不揮発性メモリ１４０上において、更新前のファームウェアイメージを保持する旧イメージデータ（OLDDATA）が格納されているデバイスパス（/device1）を記述している。２行目は、情報機器１００の不揮発性メモリ１４０上において、更新後のファームウェアイメージを保持する新イメージデータ（NEWDATA）を書き込む先のデバイスパス（/device1）を記述している。
【００３６】
図２では、新イメージデータ、旧イメージデータともに単一のデバイスに格納されている例を示したが、イメージデータを複数のデバイスに分けて格納してもよい。例えば２つのデバイス「/device1」、「/device2」に新旧イメージデータがそれぞれ分かれて格納されている場合は、「/device1 OLDDATA1」、「/device2 OLDDATA2」、「/device1 NEWDATA1」、「/device2 NEWDATA2」という記述をすることもできる。
【００３７】
図３は、差分更新手順データ２４４のデータ例を示す図である。同データ例は、情報機器１００のファームウェア更新プログラム１４４１が以下の手順を実行すべき旨を記述している。
【００３８】
まずファームウェア更新プログラム１４４１は、差分イメージデータ２４４１内に含まれている差分データdeltaを、情報機器１００上の「/device1」というデバイスパスにあらかじめ書き込まれている旧イメージデータに適用し、新イメージデータをデバイスパス「/device1」上で直接作成する。これにより、新旧イメージデータ双方を格納するための記憶領域を設ける必要がなくなるので、必要となる記憶容量を抑えることができる。
【００３９】
図４は、全体更新手順データ２４５２のデータ例を示す図である。同データ例によれば、情報機器１００のファームウェア更新プログラム１４４１は、新イメージデータ「NEWDATA」を情報機器１００上のデバイスパス「/device1」に対して書き込むべきことが分かる。
【００４０】
図３〜図４に示したデータ例では、イメージデータをデバイスに書き込めばファームウェア更新処理が完了することとしたが、必要に応じて情報機器１００を再起動するステップを更新手順に追加してもよい。
【００４１】
図５は、配信パッケージ取得先テーブル１４４２のデータ例を示す図である。１行目は情報機器１００が差分配信パッケージ２４４を取得するためにアクセスすべきアドレスを記述している。２行目は情報機器１００が全体配信パッケージ２４５を取得するためにアクセスすべきアドレスを記述している。いずれも管理装置２００が各配信パッケージを公開しているアドレスである。ここではＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を用いて各配信パッケージを配信する例を示したが、配信手法は任意でよい。
【００４２】
以上、ファームウェア更新システム１０００の各機器の構成について説明した。次に、情報機器１００のファームウェアを更新する手順について説明する。
【００４３】
図６は、情報機器１００が通常起動する際の動作フローである。以下、図６の各ステップについて説明する。
【００４４】
（図６：ステップＳ６００）
ＣＰＵ１１０は、情報機器１００の電源がＯＮになると始めに、ブートローダ１４１１を起動する。本動作フローでは、起動設定１４１２が通常用ファームウェア１４２１を起動するようセットされているものとする。ブートローダ１４１１は、まず、通常用ＯＳ１４２２を起動する。次に、通常用ファームウェア１４２１を起動して所定の初期化処理などを実行する。なお、通常用ＯＳ１４２２が通常用ファームウェア１４２１と一体化している構成の場合は、両者は同時に起動される。
【００４５】
（図６：ステップＳ６０１）
通常用ＯＳ１４２２は、ファームウェア更新プログラム１４４１を起動する。ファームウェア更新プログラム１４４１は、ファームウェア（通常用ファームウェア１４２１と緊急用ファームウェア１４３１を含む、以下同じ）を更新すべきか否かを判定する。更新する場合はステップＳ６０２へ進み、更新しない場合はステップＳ６０８へ進む。
【００４６】
（図６：ステップＳ６０１：補足）
ファームウェアを更新すべきか否かを確認する具体的な手順としては、例えばファームウェア更新プログラム１４４１から管理装置２００に対して、新たなファームウェアの新イメージデータ２４２が発行されているか否かを問い合わせればよい。
【００４７】
（図６：ステップＳ６０２）
ファームウェア更新プログラム１４４１は、配信パッケージ取得先テーブル１４４２の記述にしたがって管理装置２００から差分配信パッケージ２４４を取得し、揮発性のメモリ１２０に一時的に保存する。
【００４８】
（図６：ステップＳ６０３）
ファームウェア更新プログラム１４４１は、情報機器１００を次回ブートする時に緊急用ファームウェア１４３１を起動すべき旨を、起動設定１４１２にセットする。
【００４９】
（図６：ステップＳ６０４）
ファームウェア更新プログラム１４４１は、ファームウェアを更新する処理を実行する。本ステップの詳細は後述の図８で改めて説明する。
【００５０】
（図６：ステップＳ６０５）
ファームウェア更新プログラム１４４１は、情報機器１００を次回ブートする時に通常用ファームウェア１４２１を起動すべき旨を、起動設定１４１２にセットする。
【００５１】
（図６：ステップＳ６０６）
差分更新手順データ２４４２に、情報機器１００の常駐プロセス、ＯＳなどを再起動すべき旨が記述されている場合は、ステップＳ６０７へ進む。それ以外であれば本動作フローを終了する。
【００５２】
（図６：ステップＳ６０７）
ファームウェア更新プログラム１４４１は、差分更新手順データ２４４２の記述にしたがって、再起動する必要があるコンポーネントを再起動する。
【００５３】
（図６：ステップＳ６０８）
ステップＳ６０１において、ファームウェアを更新しないと判断した場合は、ステップＳ６０２〜Ｓ６０７は実行されず、通常ＯＳ１４２２は通常手順通りに起動する。
【００５４】
図７は、情報機器１００が緊急起動する際の動作フローである。以下、図７の各ステップについて説明する。
【００５５】
（図７：ステップＳ７００）
ＣＰＵ１１０は、情報機器１００の電源がＯＮになると始めに、ブートローダ１４１１を起動する。本動作フローでは、起動設定１４１２が緊急用ファームウェア１４３１を起動するようセットされているものとする。ブートローダ１４１１は、まず、緊急用ＯＳ１４３２を起動する。次に、緊急用ファームウェア１４３１を起動して所定の初期化処理などを実行する。なお、緊急用ＯＳ１４３２が緊急用ファームウェア１４３１と一体化している構成の場合は、両者は同時に起動される。
【００５６】
（図７：ステップＳ７００：補足）
起動設定１４１２が緊急用ファームウェア１４３１を起動するようセットされている場合の典型として、図６のステップＳ６０３とＳ６０５の間で処理が異常中断した場合が挙げられる。すなわち、ファームウェアを更新する処理が異常中断した場合は、本動作フローが実行されることになる。
【００５７】
（図７：ステップＳ７０１）
緊急用ＯＳ１４３２は、ファームウェア更新プログラム１４４１を起動する。ファームウェア更新プログラム１４４１は、緊急用ＯＳ１４３２の配下で起動された場合は、ファームウェアを更新する処理が途中中断したものと判断する。ファームウェア更新プログラム１４４１は、配信パッケージ取得先テーブル１４４２の記述にしたがって管理装置２００から全体配信パッケージ２４５を取得し、メモリ１２０に一時的に保存する。
【００５８】
（図７：ステップＳ７０２）
緊急用ＯＳ１４３２を起動した場合、緊急用ＯＳ１４３２は緊急ファームウェアブロック１４３の配下で稼動する。ファームウェア更新プログラム１４４１は、通常用ファームウェア１４２１を更新するため、通常ファームウェアブロック１４２をマウントする。
【００５９】
（図７：ステップＳ７０３）
ファームウェア更新プログラム１４４１は、ファームウェアを更新する処理を実行する。本ステップの詳細は後述の図８で改めて説明する。
【００６０】
（図７：ステップＳ７０４）
ファームウェア更新プログラム１４４１は、情報機器１００を次回ブートする時に通常用ファームウェア１４２１を起動すべき旨を、起動設定１４１２にセットする。
【００６１】
（図７：ステップＳ７０５）
ファームウェア更新プログラム１４４１は、情報機器１００を再起動する。
【００６２】
図８は、図６のステップＳ６０４および図７のステップＳ７０３の詳細フローである。以下、図８の各ステップについて説明する。
【００６３】
（図８：ステップＳ８０１）
ファームウェア更新プログラム１４４１は、メモリ１２０内に保存されている配信パッケージ１２１（＝差分配信パッケージ２４４または全体配信パッケージ２４５）から更新手順データを１行分読み込む。
【００６４】
（図８：ステップＳ８０２）
ファームウェア更新プログラム１４４１は、更新手順データの記述にしたがって、差分イメージデータ２４４１または新イメージデータ２４５１を、指定先に書き込む。このときの書込単位は、必ずしもファイル単位である必要はない。例えば不揮発性メモリ１４０がＦｌａｓｈメモリであれば、ブロック単位などの所定書込単位で書き込んでもよい。
【００６５】
（図８：ステップＳ８０３）
ファームウェア更新プログラム１４４１は、更新手順データの全ての記述について更新を完了したか否かを判定する。更新が済んでいない手順が残っていればステップＳ８０１へ戻り、全て更新完了していれば本動作フローを終了する。
【００６６】
＜実施の形態１：まとめ＞
以上のように、本実施の形態１に係るファームウェア更新プログラム１４４１は、緊急用ファームウェア１４３１および緊急用ＯＳ１４３２の配下で起動した場合は、前回のファームウェア更新処理が途中中断したものと判断し、全体配信パッケージ２４５を取得してファームウェアのイメージデータを全て更新する。これにより、ファームウェア更新処理が途中中断した場合でも、ファームウェアが破損などしたままの異常状態から適切に復帰することができる。
【００６７】
また、本実施の形態１に係るファームウェア更新プログラム１４４１は、通常用ファームウェア１４２１および通常用ＯＳ１４２２の配下で起動した場合は、前回のファームウェア更新処理が正常完了したものと判断し、差分配信パッケージ２４４を取得してファームウェアのイメージデータを新旧の差分のみ更新する。これにより、通常時は配信パッケージのデータサイズを小さく抑え、配信負荷を低減し、配信パッケージを格納するためのメモリ容量も抑えることができる。
【００６８】
また、本実施の形態１に係るファームウェア更新プログラム１４４１において、差分配信パッケージ２４４を用いてファームウェアを更新する場合は、通常アプリケーション１４２３を実行している最中でもファームウェアを更新することができる。これにより、ファームウェアを更新するために必ずしも情報機器１００を再起動する必要がなくなり、ユーザにとって便宜である。
【００６９】
＜実施の形態２＞
実施の形態１では、差分配信パッケージ２４４を用いてファームウェアを更新する場合は、情報機器１００を再起動することなくファームウェアを更新する旨を説明した。一方通常アプリケーション１４２３を実行しているとき、プロセスの割り込みなどにより、ファームウェアを更新する処理が遮られる可能性がある。そこで本発明の実施形態２では、ファームウェアを更新する処理を、緊急用ＯＳ１４３２の配下に集中的に配置した動作例を説明する。各機器の構成は実施形態１と同様である。
【００７０】
図９は、情報機器１００が通常起動する際の動作フローである。本動作フローは、実施形態１の図６に対応するものである。以下、図９の各ステップについて説明する。
【００７１】
（図９：ステップＳ９００〜Ｓ９０１）
これらのステップは、図６のステップＳ６００〜Ｓ６０１と同様である。ステップＳ９０１においてファームウェアを更新しないと判断した場合は、ステップＳ９０４へ進む。
【００７２】
（図９：ステップＳ９０２）
ファームウェア更新プログラム１４４１は、情報機器１００を次回ブートする時に緊急用ファームウェア１４３１を起動すべき旨を、起動設定１４１２にセットする。配信パッケージを取得する処理は、後述する図１０で実行するので、本動作フローには存在しない。
【００７３】
（図９：ステップＳ９０３）
ファームウェア更新プログラム１４４１は、情報機器１００を再起動する。
【００７４】
（図９：ステップＳ９０４）
本ステップは、図６のステップＳ６０８と同様である。
【００７５】
図１０は、情報機器１００が緊急起動する際の動作フローである。本動作フローは、実施形態１の図７に対応するものである。以下、図１０の各ステップについて説明する。
【００７６】
（図１０：ステップＳ１０００）
本ステップは、図７のステップＳ７００と同様である。
【００７７】
（図１０：ステップＳ１００１）
緊急用ＯＳ１４３２は、ファームウェア更新プログラム１４４１を起動する。ファームウェア更新プログラム１４４１は、ファームウェアを更新する前回の処理が途中中断したか否かを判断する。途中中断したと判断する場合はステップＳ１００２へ進み、それ以外であればステップＳ１００３へ進む。
【００７８】
（図１０：ステップＳ１００１：補足）
ファームウェアを更新する前回の処理が途中中断したか否かは、適当なフラグなどを用いて判定すればよい。例えば、ファームウェア更新プログラム１４４１がファームウェアの更新処理を開始したときに不揮発性メモリ１４０の適当な領域にその旨のフラグを書き込んでおき、更新完了するときにそのフラグをクリアする、などとすればよい。
【００７９】
（図１０：ステップＳ１００２〜Ｓ１００３）
ファームウェア更新プログラム１４４１は、配信パッケージ取得先テーブル１４４２の記述にしたがって、管理装置２００から差分配信パッケージ２４４または全体配信パッケージ２４５を取得し、揮発性のメモリ１２０に一時的に保存する。
【００８０】
（図１０：ステップＳ１００４〜Ｓ１００７）
これらのステップは、図７のステップＳ７０２〜Ｓ７０５と同様である。
【００８１】
＜実施の形態２：まとめ＞
以上のように、本実施形態２に係るファームウェア更新プログラム１４４１は、ファームウェア更新処理が前回途中中断したか否かを判断するステップ、配信パッケージを取得するステップ、およびイメージデータを書き込むステップを、緊急用ファームウェア１４３１および緊急用ＯＳ１４３２の配下で実行する。これにより、通常アプリケーション１４２３がファームウェア更新処理を遮る心配がなくなり、ファームウェア更新をスムーズに実施することができる。
【００８２】
＜実施の形態３＞
本発明の実施形態３では、管理装置２００が差分配信パッケージ２４４と全体配信パッケージ２４５を作成する手順例を説明する。各機器の構成およびその他の動作は、実施形態１〜２と同様である。
【００８３】
図１１は、管理装置２００が差分配信パッケージ２４４と全体配信パッケージ２４５を作成する処理フローを示す図である。以下、図１１の各ステップについて説明する。
【００８４】
（図１１：ステップＳ１１００）
管理装置２００のＣＰＵ２１０は、例えば所定時間間隔、または新イメージデータ２４２を受け取った時点などで、本処理フローを起動する。
【００８５】
（図１１：ステップＳ１１０１）
ＣＰＵ２１０は、旧イメージデータ２４１、新イメージデータ２４２を読み込む。
【００８６】
（図１１：ステップＳ１１０２）
ＣＰＵ２１０は、全体データマッピングテーブル２４３を読み込む。
【００８７】
（図１１：ステップＳ１１０３）
ＣＰＵ２１０は、全体データマッピングテーブル２４３が記述している各イメージデータを比較する。図２で説明したデータ例の場合、ＯＬＤＤＡＴＡ（旧イメージデータ２４１）とＮＥＷＤＡＴＡ（新イメージデータ２４２）を比較する。ＣＰＵ２１０は、両者が異なる場合はイメージデータが更新されたものとみなし、新イメージデータ２４５１を反映すべき旨を全体更新手順データ２４５２に記述し、新イメージデータ２４２を全体配信パッケージ２４５に追加する。
【００８８】
（図１１：ステップＳ１１０４）
ＣＰＵ２１０は、全てのイメージデータについてステップＳ１１０３の比較を完了したか否かを判定する。全て比較完了していればステップＳ１１０５へ進み、比較していないイメージデータが残っていればステップＳ１１０３へ戻る。
【００８９】
（図１１：ステップＳ１１０５）
ＣＰＵ２１０は、新イメージデータ２４５１と全体更新手順データ２４５２をパッケージ化して全体配信パッケージ２４５を作成する。
【００９０】
（図１１：ステップＳ１１０６）
ＣＰＵ２１０は、ステップＳ１１０３と同様に各イメージデータを比較する。両者の差分があればこれを差分イメージデータ２４４１として抽出し、差分配信パッケージ２４４に追加する。また、差分イメージデータ２４４１を反映する手順を、差分更新手順データ２４４２に記述する。
【００９１】
（図１１：ステップＳ１１０７）
ＣＰＵ２１０は、差分イメージデータ２４４１を反映した後に再起動が必要であれば、その旨を差分更新手順データ２４４２に記述する。再起動の対象とするのは、ファームウェアの更新を完了するために必要な範囲でよい。例えば、常駐プロセスを再起動すれば差分を更新するのに十分である場合は、その旨を記述すれば足りる。ＯＳを再起動する必要がある場合は、同様にその旨を記述する。全体更新手順データ２４５２についても同様に再起動手順を記述することができる。
【００９２】
（図１１：ステップＳ１１０８）
ＣＰＵ２１０は、全てのイメージデータについてステップＳ１１０６の比較を完了したか否かを判定する。全て比較完了していればステップＳ１１０９へ進み、比較していないイメージデータが残っていればステップＳ１１０６へ戻る。
【００９３】
（図１１：ステップＳ１１０９）
ＣＰＵ２１０は、差分イメージデータ２４４１と差分更新手順データ２４４２をパッケージ化して差分配信パッケージ２４４を作成する。
【００９４】
＜実施の形態３：まとめ＞
以上のように、本実施形態３によれば、管理装置２００は、旧イメージデータ２４１、新イメージデータ２４２、および全体データマッピングテーブル２４３を用いて各配信パッケージを作成することができる。これにより、ファームウェアを更新する必要が生じたとき、管理者は新イメージデータ２４２を管理装置２００に格納するのみで作業が完了するので、ファームウェア更新作業の負担を軽減することができる。
【００９５】
＜実施の形態４＞
図１２は、本発明の実施形態４に係るファームウェア更新システム１０００の構成図である。本実施形態４に係るファームウェア更新システム１０００は、実施形態１〜３で説明した構成に加えて、新たに配信装置４００を有する。その他の構成は実施形態１〜３と同様である。配信装置４００の台数は任意でよい。
【００９６】
配信装置４００は、管理装置２００に代わって情報機器１００に差分配信パッケージ２４４と全体配信パッケージ２４５を配信する装置である。配信装置４００は、ＣＰＵ４１０、メモリ４２０、通信ポート４３０、記憶装置４４０を備える。
【００９７】
ＣＰＵ４１０は、各配信パッケージを管理装置２００から取得して記憶装置４４０に格納し、さらに情報機器１００に配信する。メモリ４２０は、ＣＰＵ４１０が動作する際に用いる一時的なデータを格納する揮発性メモリである。通信ポート４３０は、配信装置４００がネットワーク３００を介して情報機器１００および管理装置２００と通信するための通信インターフェースである。
【００９８】
記憶装置４４０は、差分配信パッケージ２４４、全体配信パッケージ２４５を格納する記憶装置である。記憶装置４４０は、例えばＨＤＤなどの不揮発性記憶装置で構成することができる。
【００９９】
管理装置２００は、各配信パッケージを作成すると、情報機器１００ではなく配信装置４００に配信する。配信装置４００は、情報機器１００から配信リクエストを受け付けると、各配信パッケージを情報機器１００に配信する。
【０１００】
＜実施の形態４：まとめ＞
以上のように、本実施形態４に係るファームウェア更新システム１０００は、管理装置２００に代わって各配信パッケージを配信する配信装置４００を有するので、情報機器１００が多数存在し、配信負荷が大きくなる場合でも、支障なくファームウェア更新を実施することができる。また、管理装置２００自体は性能がさほど高くない端末を用いて構成しても特段の支障はないので、余剰なコンピュータなどを管理装置２００として活用することができる。
【０１０１】
＜実施の形態５＞
以上の実施形態１〜４において、情報機器１００が各配信パッケージを取得する際に、配信パッケージ取得先テーブル１４４２に記述されているアドレスに加え、各配信パッケージのバージョンを指定できるようにしてもよい。
【０１０２】
以上の実施の形態１〜４において、配信パッケージ取得先テーブル１４４２を管理装置２００上または配信装置４００上に配置しておき、情報機器１００上にはその取得先アドレスのみを保持しておくようにしてもよい。
【０１０３】
以上の実施の形態１〜４において、不揮発性メモリ１４０に新たなファームウェアイメージをどの記憶領域まで書き込んだかをログに取っておき、ファームウェア更新処理が途中中断したときは書き込みが完了していない記憶領域以後のイメージデータに対応する差分データのみを管理装置２００または配信装置４００から取得するようにしてもよい。これにより、全体配信パッケージ２４４に代えて差分データのみを取得すればよいので、ファームウェア更新処理が途中中断した場合でも、配信負荷と記憶容量を抑えることができる。
【０１０４】
以上の実施の形態１〜４において、ファームウェアをイメージ単位で更新することを説明したが、ファイル単位で更新する場合でも同様の手法を採用し、配信負荷と記憶容量を抑えることはできる。
【符号の説明】
【０１０５】
１００：情報機器、１１０：ＣＰＵ、１２０：メモリ、１２１：配信パッケージ、１３０：通信ポート、１４０：不揮発性メモリ、１４１：ブートブロック、１４１１：ブートローダ、１４１２：起動設定データ、１４２：通常ファームウェアブロック、１４２１：通常用ファームウェア、１４２２：通常用ＯＳ、１４２３：通常アプリケーション、１４３：緊急ファームウェアブロック、１４３１：緊急用ファームウェア、１４３２：緊急用ＯＳ、１４４：更新用ブロック、１４４１：ファームウェア更新プログラム、１４４２：配信パッケージ取得先テーブル、２００：管理装置、２１０：ＣＰＵ、２２０：メモリ、２３０：通信ポート、２４０：記憶装置、２４１：旧イメージデータ、２４２：新イメージデータ、２４３：全体データマッピングテーブル、２４４：差分配信パッケージ、２４４１：差分イメージデータ、２４４２：差分更新手順データ、２４５：全体配信パッケージ、２４５１：新イメージデータ、２４５２：全体更新手順データ、３００：ネットワーク、４００：配信装置、４１０：ＣＰＵ、４２０：メモリ、４３０：通信ポート、４４０：記憶装置、１０００：ファームウェア更新システム。
【図１】
2012008640.tif 000003
【図２】
2012008640.tif 000004
【図３】
2012008640.tif 000005
【図４】
2012008640.tif 000006
【図５】
2012008640.tif 000007
【図６】
2012008640.tif 000008
【図７】
2012008640.tif 000009
【図８】
2012008640.tif 000010
【図９】
2012008640.tif 000011
【図１０】
2012008640.tif 000012
【図１１】
2012008640.tif 000013
【図１２】
2012008640.tif 000014