(57)【要約】【課題】更新ファームウェア自体に対する加工処理を事前に必要とせずに、ファームウェアを短時間で更新すること。【解決手段】コンピュータシステム１０は、更新前分割データと特定値とを関連付けてフラッシュＲＯＭ１４に記憶する。プロセッサ１１は、更新分割データ及び当該更新前分割データから算出した特定値から構成される更新ファームウェアデータを取得し、その取得した更新分割データ毎に、更新前分割データから算出された特定値と、当該更新分割データと対応する更新前分割データと関連づけられた特定値とを比較し、両特定値が異なる場合、フラッシュＲＯＭ１４に記憶する更新前分割データ及び特定値を更新分割データ及び算出した特定値に更新する。【選択図】図１
2012216010.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアデータを記憶する情報処理装置であって、
前記ファームウェアデータを分割した更新前分割データと更新前分割データから算出した特定値とを関連付けて記憶する記憶手段と、
更新分割データ及び当該更新前分割データから算出した特定値から構成される更新ファームウェアデータを取得する取得手段と、
前記取得手段で取得した更新分割データ毎に、前記更新前分割データから算出された特定値と、当該更新分割データと対応する更新前分割データと関連づけられた特定値とを比較し、両特定値が一致する場合、前記記憶手段に記憶する更新前分割データ及び特定値の更新を行わず、両特定値が異なる場合、前記記憶手段に記憶する更新前分割データ及び特定値を前記更新分割データ及び前記算出した特定値に更新する更新手段と、
を備える情報処理装置。
【請求項２】
前記特定値は、前記更新前分割データから巡回冗長検査により算出される、ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記取得手段は、
前記更新分割データ毎に外部から受信する受信手段と、
前記受信手段で更新分割データを受信する毎に、受信した更新分割データに基づいて特定値を算出する算出手段と、
を備えることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記取得手段は、
前記更新分割データ及び当該更新分割データから算出される特定値毎に更新ファームウェアデータを受信する受信手段である、
ことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記記憶手段に記憶される更新前分割データ毎の前記特定値は、１つのデータブロックで管理される、ことを特徴とする請求項１記載の情報処理装置。
【請求項６】
更新前分割データと当該更新前分割データから算出した特定値とを関連付けて記憶する記憶手段を備え、当該記憶手段にファームデータを記憶する情報処理装置のファームウェア更新方法であって、
更新分割データ及び当該更新前分割データから算出した特定値から構成される更新ファームウェアデータを取得するステップと、
前記取得した更新分割データ毎に、前記更新前分割データから算出された特定値と当該更新分割データと対応する更新前分割データと関連づけられた特定値とを比較し、両特定値が異なる場合、前記記憶手段に記憶する更新前分割データ及び特定値を前記更新分割データ及び前記算出した特定値に更新するステップと、
を有するファームウェア更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアを更新する処理を行う情報処理装置及びファームウェア更新方法に関する。
【背景技術】
【０００２】
一般に、情報処理装置、例えば、コンピュータシステムは、フラッシュＲＯＭ等のＲＯＭに書き込まれたファームウェアと呼ばれる、システムを動かすためのプログラムが記憶されている。コンピュータシステムは、当該ファームウェアをＲＯＭスタートアドレスから順次読み出し、実行することにより動作する。
【０００３】
既述のＲＯＭに書き込まれたファームウェアは、バグ修正、新機能追加等の理由により、ファームウェアデータの更新が行われる場合がある。この更新は、一般には、保守端末装置からファームウェア更新のコマンドを受け取ったコンピュータシステムが、保守端末装置から更新ファームウェアデータをダウンロードして内部メモリに一時的に格納し、当該内部メモリから更新ファームウェアをＲＯＭに上書きコピーして行われる。その後、コンピュータシステムは、ＲＯＭに書き込まれた更新ファームウェアで動作を開始する。
【０００４】
また、ファームウェアを更新する方法として次のような技術が提案されている（例えば、特許文献１参照）。この方法によると、ファームウェアを格納するメモリを複数の領域に分割し、領域毎に、複数のモジュール群に分割されたファームウェア本体を配置しておき、ファームウェアの更新時には、変更のあるモジュール群が格納された領域のデータのみをダウンロードし、それらをＲＯＭに書き込むことにより、更新ファームウェアのダウンロードや書き換え処理に要する時間を短縮している。
【０００５】
更に、データをブロックに分けて転送する技術として、ＬＴＥ（Long Term Evolution）システムにおいて、転送ブロックが大きい際に、その転送ブロックは多重コードパケットが生成されることができるように多重コードブロックに分割され、１つの２４ビットＣＲＣ（Cyclic Redundancy Check）のみが転送ブロックのエラー検出を目的として生成されるものが知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−３４２１００号公報
【特許文献２】特表２０１０−５３１６１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ファームウェアを更新する場合、全ての更新ファームウェアのデータをＲＯＭに上書きコピーするため、ファームウェアの更新に多くの時間を要する。
【０００８】
この点、特許文献１に記載の技術によると、更新ファームウェアのダウンロード時間の短縮に加え書き換え処理に要する時間を短縮することができるが、一方で、更新ファームウェアをダウンロードする前に、旧ファームウェアデータと更新ファームウェアデータとの相違を領域毎に比較し、この比較結果に基づいてダウンロードする更新ファームウェア自体を加工する処理が必要になる。
【０００９】
また、特許文献２に記載の技術は、転送ブロックが大きい際に、多重コードブロックに分割して転送される転送ブロックのエラーを検出するために用いられる技術であり、ファームウェアの更新時間を短縮するものではない。
【００１０】
本発明は、上記事情に鑑みてなされたものであり、その目的は、更新ファームウェア自体を加工する処理を事前に必要とせず、ファームウェアを短時間で更新することができる情報処理装置及びファームウェアの更新方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明は、ファームウェアデータを記憶する情報処理装置であって、ファームウェアデータを分割した更新前分割データと更新前分割データから算出した特定値とを関連付けて記憶する記憶手段と、更新分割データ及び当該更新前分割データから算出した特定値から構成される更新ファームウェアデータを取得する取得手段と、取得手段で取得した更新分割データ毎に、更新前分割データから算出された特定値と、当該更新分割データと対応する更新前分割データと関連づけられた特定値とを比較し、両特定値が一致する場合、記憶手段に記憶する更新前分割データ及び特定値の更新を行わず、両特定値が異なる場合、記憶手段に記憶する更新前分割データ及び特定値を更新分割データ及び算出した特定値に更新する更新手段と、を備えることを特徴とする。
【発明の効果】
【００１２】
本発明によると、更新ファームウェア自体を加工する処理を事前に必要とせず、ファームウェアを短時間で更新することができる情報処理装置及びファームウェアの更新方法を提供できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の各実施の形態に共通する情報処理装置の構成を概略的に示す図である。
【図２】本発明の第１の実施の形態に係るダウンロードする更新ファームウェアデータの構成を説明するための図である。
【図３】同第１の実施の形態に係るダウンロード後の更新ファームウェアデータの構成を説明するための図である。
【図４】同第1の実施の形態に係るファームウェアの更新処理を示すフローチャートである。
【図５】本発明の第２の実施の形態に係るダウンロードする更新ファームウェアデータの構成を説明するための図である。
【図６】同第２の実施の形態に係るダウンロード後の更新ファームウェアデータの構成を説明するための図である。
【図７】同第２の実施の形態に係るファームウェアの更新処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら各実施の形態について説明する。
【００１５】
（第１の実施の形態）
図１は、情報処理装置であるコンピュータシステムの構成を概略的に示す図である。同図に示すように、コンピュータシステム１０は、ネットワーク１を介して保守端末装置２０と通信可能に接続されている。なお、コンピュータシステム１０は保守端末装置２０と通信ケーブルで直接接続するように構成しても良い。
【００１６】
また、コンピュータシステム１０は、プロセッサ１１、通信インタフェース（Ｉ／Ｆ）１２、メモリ１３及び記憶手段であるフラッシュＲＯＭ（ＦＲＯＭ）１４を有している。なお、コンピュータシステム１０の他の構成については従来よりあるものと同様であるため図示及び詳細な説明は省略する。
【００１７】
プロセッサ１１は、コンピュータシステム１０を動作させるファームウェアの更新処理等の各種処理を実行する。
【００１８】
通信インタフェース１２は、保守端末装置２０との通信を行う。例えば、通信インタフェース１２は、プロセッサ１１の制御に基づいて、保守端末装置２０から更新ファームウェアデータのダウンロードを行う。
【００１９】
メモリ１３は、データを一時的に格納する記憶部であり、例えば、保守端末装置２０からダウンロードされる更新ファームウェアデータを一時的に格納するエリア及び後述するファームウェアの更新処理におけるワークエリアとして使用される。
【００２０】
フラッシュＲＯＭ１４は、ファームウェアデータ等の各種データを記憶する。ファームウェアデータは、所定のブロックに分割されて記憶されており、この分割されたファームウェアデータ（更新前分割データ）と、この分割されたファームウェアデータから算出した特定値とが関連付けて記憶される。なお、本実施の形態においては、この特定値は、更新前分割データから巡回冗長検査により算出されるＣＲＣ（Cyclic Redundancy Check）データとするが、更新前分割データから実質的に固有の値が算出されるものであれば他の方法により算出しても良い。
【００２１】
次に、保守端末装置２０からダウンロードする更新ファームウェアデータについて説明する。
【００２２】
図２に示すように、更新ファームウェアデータ３ａは、アドレス空間において、上位アドレス側から下位アドレス側に向かって、データブロック３０、データブロック３１、データブロック３２、…、データブロック３（ｚ−１）のように、Ｚ個のブロックに分割されている。
【００２３】
また、メモリ１３及びフラッシュＲＯＭ１４上においては、更新ファームウェアデータは、図２に示す構成に加えて新たにＣＲＣ格納ブロックが追加される。図３に示すように、更新ファームウェアデータ３ｂはＣＲＣ格納ブロック３ｚを有しており、ＣＲＣ格納ブロック３ｚには、各データブロック３０，３１，３２，…，３（ｚ−１）からそれぞれ算出したＣＲＣデータ、つまり、ＣＲＣ０、ＣＲＣ１、ＣＲＣ２，…，ＣＲＣ（ｚ−１）が格納されている。
【００２４】
次に、コンピュータシステム１０がフラッシュＲＯＭ１４に記憶されているファームウェアを新たなファームウェアに更新する場合の処理について図４を参照しながら説明する。この更新ファームウェアデータは、既述のデータブロック毎にダウンロードされる。
【００２５】
先ず、プロセッサ１１は、更新ファームウェアデータのダウンロードを開始するに当たって、ダウンロードしたデータブロックをカウントするためのカウンタｎを０に初期化する（Ｓ１０１）。
【００２６】
次に、プロセッサ１１は、カウンタｎと、ダウンロードした総データブロック数Ｚとを比較する終了判定を行う（ステップＳ１０２）。
【００２７】
カウンタｎと、総データブロック数Ｚとが同じ値でないと判定した場合（Ｓ１０２：ＮＯ）、保守端末装置２０からダウンロードすべきデータブロックがまだ残っているため、プロセッサ１１は、データブロックｎの更新ファームウェアデータ（更新分割ファームウェアデータ）を保守端末装置２０から受信し、メモリ１３の任意の場所に格納する。また、プロセッサ１１は、そのデータブロックｎの更新ファームウェアデータの受信と同時に、そのデータブロックｎのデータからＣＲＣデータを算出する。更に、プロセッサ１１は、データブロックｎのデータ受信完了時に、この算出値を、メモリ１３のＣＲＣ格納ブロック３ｚ内の所定の場所、すなわちＣＲＣｎの領域に格納する（Ｓ１０３）。このようにして、更新分割データ及び当該更新分割データのＣＲＣデータが取得される。
【００２８】
次に、プロセッサ１１は、ステップＳ１０３において、ＣＲＣｎへ格納したＣＲＣデータと、フラッシュＲＯＭ１４に記憶されている旧ファームウェアデータのデータブロックｎ（更新前分割データ）に関連付けられているＣＲＣデータと比較し、両ＣＲＣデータの値が一致するか否かを判定する（Ｓ１０４）。
【００２９】
両ＣＲＣデータの値が一致すると判定した場合（Ｓ１０４：ＹＥＳ）、このＣＲＣデータが算出されたデータブロックｎのデータ（更新分割データ）と旧ファームウェアデータのデータブロックｎのデータ（更新前分割データ）とは同じデータである、言い換えれば、データブロックｎのデータは更新されていないため、プロセッサ１１は、データブロックｎのデータをフラッシュＲＯＭ１４に上書きコピーする動作を行わない。
【００３０】
一方、両ＣＲＣデータの値が同じでない、つまり、異なると判定した場合（Ｓ１０４：ＮＯ）、ＣＲＣデータが算出されたデータブロックｎのデータ（更新分割データ）と旧ファームウェアデータのデータブロックｎのデータ（更新前分割データ）とは異なるデータである、言い換えれば、当該更新分割データは新規なデータであるため、プロセッサ１１は、メモリ１３の当該データブロックｎのデータを、フラッシュＲＯＭ１４のデータブロックｎへ上書きコピーし、データブロックｎのデータを更新する（Ｓ１０５）。
【００３１】
既述の両ＣＲＣデータが一致すると判定した場合（Ｓ１０４：ＹＥＳ）、又は、データブロックｎのデータを更新した場合（Ｓ１０５）は、プロセッサ１１は、カウンタｎを１つカウントアップし（Ｓ１０６）、既述のステップＳ１０２の終了判定処理へ戻る。
【００３２】
以降、ステップＳ１０２の終了判定処理でＹＥＳと判定されるまで、つまり、カウンタがＺになるまで既述のステップＳ１０２乃至Ｓ１０６の処理が繰り返される。
【００３３】
そして、ステップＳ１０２において、カウンタｎと、データブロック数Ｚとが同じ値であると判定した場合（Ｓ１０２：ＹＥＳ）、更新ファームウェアデータのダウンロードが終了したため、プロセッサ１１は、メモリ１３のＣＲＣ格納ブロック３ｚのデータをフラッシュＲＯＭ１４のＣＲＣ格納ブロック３ｚへ書き込み（Ｓ１０７）、この処理を終了する。これにより、更新ファームウェアデータのダウンロード処理が完了する。
【００３４】
以上のように構成されたコンピュータシステム１０によると、更新ファームウェア自体を加工する処理を事前に必要とせずに、更新されたデータブロックのデータ及びＣＲＣ格納ブロック３ｚのデータのみをフラッシュＲＯＭ１４の該当箇所に書き込むため、更新されていないデータブロックの上書きコピー処理を回避でき、ファームウェアを更新する時間を短くすることができる。
【００３５】
また、コンピュータシステム１０によると、更新の有無を判断するためにＣＲＣを使用しているため、保守端末装置２０からメモリ１３にデータを格納する際、同時にそのデータの正当性もチェックすることができる。
【００３６】
（第２の実施形態）
次に、第２の実施形態について説明する。この第２の実施形態は、更新ファームウェアデータのうち更新されていないデータの書き込みを回避する処理が既述の第１の実施形態と異なっている。したがって、以下では、第１の実施の形態と異なる点について詳細に説明する。なお、第１の実施形態と同一の構成には同一の符号を付して詳細な説明は省略する。
【００３７】
先ず、保守端末装置２０からダウンロードする更新ファームウェアデータについて説明する。
【００３８】
図５に示すように、更新ファームウェアデータ４ａは、アドレス空間において、上位アドレスから下位アドレス側に向かって、データブロック４０、データブロック４１、データブロック４２、…、データブロック４（ｚ−１）のように、Ｚ個のブロックに分割されるとともに、各データブロックのデータの後にＣＲＣデータであるＣＲＣ０、ＣＲＣ１、ＣＲＣ２，…，ＣＲＣ（ｚ−１）が付加されている。このＣＲＣデータは、保守端末装置２０により更新ファームウェアデータが送信される際に、データブロック単位で算出されて当該データブロックの後に付加される。
【００３９】
また、メモリ１３及びフラッシュＲＯＭ１４においては、各データブロックの後に付加されていたＣＲＣデータは、最後のデータブロック４（ｚ−１）の後に付加されるＣＲＣ格納ブロックにまとめられる。図６に示すように、更新ファームウェアデータ４ｂは、ＣＲＣ格納ブロック４ｚを有しており、ＣＲＣ格納ブロック４ｚには、各データブロック４０，４１，４２，…，４（ｚ−１）の後に付加されていたＣＲＣデータ、つまり、ＣＲＣ０、ＣＲＣ１、ＣＲＣ２，…，ＣＲＣ（ｚ−１）が格納されている。
【００４０】
次に、コンピュータシステム１０がフラッシュＲＯＭ１４に記憶さているファームウェアを新たなファームウェアに更新する場合の処理について図７を参照しながら説明する。この更新ファームウェアデータは、既述のデータブロック及びこのデータブロックから算出したＣＲＣデータ毎にダウンロードされる。なお、ステップＳ２０１，Ｓ２０２，Ｓ２０５乃至Ｓ２０８の処理は、ステップＳ１０１，Ｓ１０２，Ｓ１０４乃至Ｓ１０７の処理と同様であるため、これらの処理については詳細な説明は省略する。
【００４１】
図７に示すように、プロセッサ１１は、データブロックｎのデータ（更新分割データ）をメモリ１３に格納し（Ｓ２０３）、更に、ＣＲＣｎをメモリ１３に格納する（Ｓ２０４）。このように、更新ファームウェアデータのデータブロック及びＣＲＣデータ毎に、データをメモリ１３に格納する。このようにして、更新分割データ及び当該更新分割データのＣＲＣデータが取得される。
【００４２】
このようにデータブロックｎのデータ及びＣＲＣｎをメモリ１３に格納した後、プロセッサ１１は、メモリ１３に格納したＣＲＣｎと、フラッシュＲＯＭ１４に記憶されている旧ファームウェアデータのデータブロックｎ（更新前分割データ）と関連付けられたＣＲＣｎとを比較し、両ＣＲＣデータの値が一致するか否かを判定する（Ｓ２０５）。
【００４３】
そして、プロセッサ１１は、両ＣＲＣデータの値が同じでない、つまり、異なると判定した場合（Ｓ２０５：ＮＯ）のみ、メモリ１３の更新ファームウェアデータのデータブロックｎのデータを、フラッシュＲＯＭ１４のデータブロックｎへ上書きコピーし、データブロックｎのデータを更新する（Ｓ２０６）。
【００４４】
このようにファームウェアを更新するように構成しても既述の第１の実施の形態と同様な効果を奏することができる。
【００４５】
なお、本発明は上述の実施の形態に限定されるものではなく、その実施に際して様々な変形が可能である。
【００４６】
上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００４７】
（付記１）
ファームウェアデータを記憶する情報処理装置であって、
前記ファームウェアデータを分割した更新前分割データと更新前分割データから算出した特定値とを関連付けて記憶する記憶手段と、
更新分割データ及び当該更新前分割データから算出した特定値から構成される更新ファームウェアデータを取得する取得手段と、
前記取得手段で取得した更新分割データ毎に、前記更新前分割データから算出された特定値と、当該更新分割データと対応する更新前分割データと関連づけられた特定値とを比較し、両特定値が一致する場合、前記記憶手段に記憶する更新前分割データ及び特定値の更新を行わず、両特定値が異なる場合、前記記憶手段に記憶する更新前分割データ及び特定値を前記更新分割データ及び前記算出した特定値に更新する更新手段と、
を備える情報処理装置。
【００４８】
（付記２）
前記特定値は、前記更新前分割データから巡回冗長検査により算出される、ことを特徴とする請求項１記載の情報処理装置。
【００４９】
（付記３）
前記取得手段は、
前記更新分割データ毎に外部から受信する受信手段と、
前記受信手段で更新分割データを受信する毎に、受信した更新分割データに基づいて特定値を算出する算出手段と、
を備えることを特徴とする付記１記載の情報処理装置。
【００５０】
（付記４）
前記取得手段は、
前記更新分割データ及び当該更新分割データから算出される特定値毎に更新ファームウェアデータを受信する受信手段である、
ことを特徴とする付記１記載の情報処理装置。
【００５１】
（付記５）
前記記憶手段に記憶される更新前分割データ毎の前記特定値は、１つのデータブロックで管理される、ことを特徴とする付記１記載の情報処理装置。
【００５２】
（付記６）
更新前分割データと当該更新前分割データから算出した特定値とを関連付けて記憶する記憶手段を備え、当該記憶手段にファームデータを記憶する情報処理装置のファームウェア更新方法であって、
更新分割データ及び当該更新前分割データから算出した特定値から構成される更新ファームウェアデータを取得するステップと、
前記取得した更新分割データ毎に、前記更新前分割データから算出された特定値と、当該更新分割データと対応する更新前分割データと関連づけられた特定値とを比較し、両特定値が異なる場合、前記記憶手段に記憶する更新前分割データ及び特定値を前記更新分割データ及び前記算出した特定値に更新するステップと、
を有するファームウェア更新方法。
【産業上の利用可能性】
【００５３】
本発明は、ファームウェアが更新可能な情報処理装置及びファームウェア更新方法に広く適用可能である。
【符号の説明】
【００５４】
３ａ，４ａ・・・ダウンロードする更新ファームウェアデータ
３０，３１，３２，…，３ｚ・・・データブロック
３ｚ・・・ＣＲＣ格納ブロック
３ｂ，４ｂ・・・ダウンロードした更新ファームウェアデータ
４０，４１，４２，…，４ｚ・・・データブロック
４ｚ・・・ＣＲＣ格納ブロック
１０・・・コンピュータシステム
１１・・・プロセッサ
１２・・・通信Ｉ／Ｆ
１３・・・メモリ
１４・・・フラッシュＲＯＭ
２０・・・保守端末装置
【図１】
2012216010.tif 000003
【図２】
2012216010.tif 000004
【図３】
2012216010.tif 000005
【図４】
2012216010.tif 000006
【図５】
2012216010.tif 000007
【図６】
2012216010.tif 000008
【図７】
2012216010.tif 000009