(57)【要約】【課題】ファームウェアの書き換えが失敗した場合、ファームウェアを適切に更新できないという課題があった。【解決手段】新しい主ファームウェアの全部または一部を受信する第一受信手段２２と、電子機器１の再起動指示に応じて、新しい主ファームウェアの正当性について判断する起動判断手段３２と、起動判断手段３２が新しい主ファームウェアの正当性がないと判断した場合、従ファームウェア４０に主ファームウェアを受信する指示である受信指示をする従起動手段３３と、受信指示に応じて、サーバ装置２から、新しい主ファームウェアの全部または一部を受信する第二受信手段４１と、電子機器１を再起動するように起動部３０に指示をする第二再起動指示手段４２とを備えた。【選択図】図２
2006185309.tif 000002
【特許請求の範囲】
【請求項１】
機器ハードと、起動部と、主ファームウェアと、従ファームウェアを具備する電子機器であって、
前記機器ハードは、
前記電子機器の所定の機能を実現するハードウェアであり、電源投入の指示である起動指示を受け付け、
前記主ファームウェアは、
主ファームウェアを格納しているサーバ装置から、新しい主ファームウェアの全部または一部を受信する第一受信手段と、
前記第一受信手段が主ファームウェアを受信した後、前記電子機器を再起動するように前記起動部に指示する再起動指示手段を具備し、
前記起動部は、
前記起動指示または／および前記再起動の指示に応じて、前記主ファームウェアを起動する主起動手段と、
前記受信手段が受信した新しい主ファームウェアの正当性について判断する起動判断手段と、
前記起動判断手段が新しい主ファームウェアが正当性がないと判断した場合、前記従ファームウェアに主ファームウェアを受信する指示である受信指示をする従起動手段を具備し、
前記従ファームウェアは、
前記受信指示に応じて、主ファームウェアを格納しているサーバ装置から、新しい主ファームウェアの全部または一部を受信する第二受信手段と、
前記第二受信手段が主ファームウェアを受信した後、前記電子機器を再起動するように前記起動部に指示をする第二再起動指示手段を具備する電子機器。
【請求項２】
前記主ファームウェアは、
前記サーバ装置が格納している新しい主ファームウェアのバージョンが所定の条件を満たすか否かを判断する判断手段をさらに具備し、
前記第一受信手段は、
前記判断手段が所定の条件を満たすと判断した場合のみ、前記新しい主ファームウェアを受信する請求項１記載の電子機器。
【請求項３】
前記判断手段は、
前記サーバ装置が格納している新しい主ファームウェアのバージョンが現在の主ファームウェアのバージョンより新しいバージョンであるか否かを判断する請求項２記載の電子機器。
【請求項４】
前記第一受信手段は、
圧縮された形式である新しい主ファームウェアの全部または一部を受信し、
前記主ファームウェアは、
前記第一受信手段が受信した新しい主ファームウェアを所定の記憶媒体に蓄積する蓄積手段をさらに具備し、
前記主起動手段は、
前記蓄積手段が蓄積した新しい主ファームウェアを展開した後、当該展開した主ファームウェアをも起動し、
前記起動判断手段は、
前記主ファームウェアを展開できるか否かに基づいて、新しい主ファームウェアの正当性について判断する請求項１から請求項３いずれか記載の電子機器。
【請求項５】
前記従ファームウェアは、
正常に前記主ファームウェアを更新できるまで、前記第二受信手段の処理、および前記第二再起動指示手段の処理を繰り返す請求項１から請求項４いずれか記載の電子機器。
【請求項６】
請求項１から請求項６いずれか記載の電子機器と、サーバ装置を具備する情報処理システムであって、
前記サーバ装置は、
主ファームウェアを格納している格納部と、
前記電子機器に前記格納部に格納している主ファームウェアを送信する送信部を具備する情報処理システム。
【請求項７】
ファームウェアの全部または一部を受信する第一受信ステップと、
前記第一受信ステップで、ファームウェアを受信した後、前記ファームウェアを再起動する起動ステップと、
前記ファームウェアの正当性について判断する起動判断ステップと、
前記ファームウェアの正当性がないと判断した場合、前記ファームウェアの全部または一部を受信する第二受信ステップと、
前記第二受信ステップによりファームウェアを受信した後、前記ファームウェアを再起動する第二の起動ステップとを具備するファームウェアの更新方法。
【請求項８】
前記第二受信ステップおよび前記第二の起動ステップを、前記起動判断ステップにおいて、前記ファームウェアの正当性があると判断されるまで繰り返す請求項７記載のファームウェアの更新方法。
【請求項９】
コンピュータに、
ファームウェアの全部または一部を受信する第一受信ステップと、
前記第一受信ステップで、ファームウェアを受信した後、前記ファームウェアを再起動する起動ステップと、
前記ファームウェアの正当性について判断する起動判断ステップと、
前記ファームウェアの正当性がないと判断した場合、前記ファームウェアの全部または一部を受信する第二受信ステップと、
前記第二受信ステップによりファームウェアを受信した後、前記ファームウェアを再起動する第二の起動ステップとを実行させるためのプログラム。
【請求項１０】
コンピュータに、
前記第二受信ステップおよび前記第二の起動ステップを、前記起動判断ステップにおいて、前記ファームウェアの正当性があると判断されるまで繰り返し実行させるための、請求項９記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク等を介してファームウェアの更新が可能な電子機器およびファームウェアの更新方法等に関する。
【背景技術】
【０００２】
従来、ファームウェアが組み込まれた電子機器としては、例えば、携帯端末やネットワーク機器等がある。このような電子機器におけるファームウェアの更新は、ユーザがＷｅｂサイト上等に公開されたファームウェアを取得し、このファームウェアにより、ファームウェアが組み込まれたＦｌａｓｈＲＯＭ等を書き換えることで行われる（例えば、特許文献１参照）。
【特許文献１】特開２００２−３２４３２０号公報（第１頁、第１図等）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、このようなファームウェアの書き換えによる更新は、更新中に不測の事態が発生、例えば、電子機器の電源が切れてしまったり、ネットワークとの接続が切れてしまったりすることにより、書き換えの失敗が発生した場合、ファームウェアが破損してしまい、電子機器が動作しなくなる可能性があるという課題があった。
【課題を解決するための手段】
【０００４】
本発明に係る電子機器は、機器ハードと、起動部と、主ファームウェアと、従ファームウェアを具備する電子機器であって、前記機器ハードは、前記電子機器の所定の機能を実現するハードウェアであり、電源投入の指示である起動指示を受け付け、前記主ファームウェアは、主ファームウェアを格納しているサーバ装置から、新しい主ファームウェアの全部または一部を受信する第一受信手段と、前記第一受信手段が主ファームウェアを受信した後、前記電子機器を再起動するように前記起動部に指示する再起動指示手段を具備し、前記起動部は、前記起動指示または／および前記再起動の指示に応じて、前記主ファームウェアを起動する主起動手段と、前記受信手段が受信した新しい主ファームウェアの正当性について判断する起動判断手段と、前記起動判断手段が新しい主ファームウェアが正当性がないと判断した場合、前記従ファームウェアに主ファームウェアを受信する指示である受信指示をする従起動手段を具備し、前記従ファームウェアは、前記受信指示に応じて、主ファームウェアを格納しているサーバ装置から、新しい主ファームウェアの全部または一部を受信する第二受信手段と、前記第二受信手段が主ファームウェアを受信した後、前記電子機器を再起動するように前記起動部に指示をする第二再起動指示手段を具備する。
【０００５】
かかる構成により、主ファームウェアによる新しい主ファームウェアへの更新が、正常に行われなかったとしても、従ファームウェアが、新しい主ファームウェアを受信して、主ファームウェアを更新する。この結果、主ファームウェアを、適切に更新することができる。
【０００６】
また、前記従ファームウェアは、正常に前記主ファームウェアを更新できるまで、前記第二受信手段の処理、および前記第二再起動指示手段の処理を繰り返すようにした。
かかる構成により、主ファームウェアの更新をより確実に行うことができる。
【発明の効果】
【０００７】
本発明による電子機器およびファームウェアの更新方法等によれば、ファームウェアを適切に更新することができる。
【発明を実施するための最良の形態】
【０００８】
以下、電子機器等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【０００９】
図１は本発明の実施の形態に係る電子機器を備えた情報処理システムの概略図である。情報処理システムは、ネットワーク３を介して接続された電子機器１と、サーバ装置２とを備えている。
【００１０】
図２は本発明の実施の形態に係る電子機器を備えた情報処理システムの構成を示すブロック図である。情報処理システムは、ネットワーク３を介して接続された電子機器１と、サーバ装置２とを備えている。
電子機器１は、機器ハード１０と、主ファームウェア２０と、起動部３０と、従ファームウェア４０とを具備している。
主ファームウェア２０は、判断手段２１と、第一受信手段２２と、再起動指示手段２３と、蓄積手段２４とを備えている。
起動部３０は、主起動手段３１と、起動判断手段３２と、従起動手段３３とを備えている。
従ファームウェア４０は、第二受信手段４１と、第二再起動指示手段４２とを備えている。
サーバ装置２は、格納部２０１と、送信部２０２とを備えている。
【００１１】
電子機器１は、所定の機能を有する機器であり、ネットワーク３に接続可能な構成を有している。電子機器１は、具体的には、内部にプロセッサ等を有している、いわゆる組み込み機器であり、例えば、携帯電話やＰＤＡ等の携帯端末や、ルーターやハブ、モデム等のネットワーク機器や、通信機能を有するテレビやＤＶＤレコーダ、ハードディスクレコーダ等の家電機器等である。
【００１２】
機器ハード１０は、電子機器１の所定の機能を実現するためのハードウェアであり、電源投入の指示である起動指示を受け付ける。この起動指示を受け付けた場合に電源が投入されて起動する。起動指示のデータ構造は問わない。また、起動指示をどのように受け付けるかは問わない。例えば、スイッチ等の入力手段を介して起動指示を受け付けても良いし、他の機器等からネットワーク等を介して指示を受け付けても良い。機器ハード１０は、具体的には、内部にプロセッサ等を有しており、主としてこのプロセッサを用いて処理を行うことにより、所定の機能を実現する。所定の機能とは、例えば、携帯電話等においては、テンキーの操作による入力の受付も含めた通話等を実現するための機能である。
【００１３】
主ファームウェア２０は、電子機器１の基本的な制御、特に、機器ハード１０の基本的な制御を行う。例えば、主ファームウェア２０は、所定の機能を実現するための、機器ハード１０の一連の動作を制御する。主ファームウェア２０は、通常、ソフトウェアにより実現される。ただし、その一部を専用回路等のハードウェアにより構成するようにしてもよい。主ファームウェアのソフトウェア部分のデータ構造は問わない。主ファームウェア２０のソフトウェア部分は、例えばＦｌａｓｈＲＯＭ等の不揮発性の書き換え可能な記憶媒体に記憶されている。
【００１４】
判断手段２１は、サーバ装置２が格納している新しい主ファームウェアのバージョンが、所定の条件を満たすか否かを判断する。新しい主ファームウェアとは、現在の主ファームウェア２０の更新の対象となるファームウェアであり、通常、現在の主ファームウェア２０よりもバージョンの新しい主ファームウェアである。ただし、場合によっては、バージョンの古い主ファームウェアであってもよい。判断手段２１の判断する所定の条件とは、現在の主ファームウェア２０から、新しい主ファームウェアにアップグレードすべきであると判断するための条件であれば、どのような条件でも良い。例えば、サーバ装置２が格納している主ファームウェアのバージョンが、現在の主ファームウェア２０のバージョンよりも新しいか等の条件である。この場合、バージョンが少しでも異なるか否かを判断するようにしてもよいし、バージョン番号に一定以上の差があるか否かを判断するようにしてもよい。例えば、バージョン番号の整数部分が１以上増加した場合にのみ所定の条件を満たすと判定するように設定しておき、現在の主ファームウェア２０のバージョンが４．０の場合に、新しい主ファームウェアのバージョンが４．５であれば、条件を満たさないと判定し、新しい主ファームウェアのバージョンが５．２であれば、条件を満たすと判定してもよい。なお、判断手段２１は、新しい主ファームウェアのバージョン以外の他の情報について、所定の条件を満たすか否かを判断するようにしても良い。例えば、新しい主ファームウェアと現在の主ファームウェア２０とについて、作成日や、更新日、サーバ装置２に格納された日等を比較して、その日付が所定の条件を満たすか否かを判断するようにしてもよい。判断手段２１は、通常ソフトウェアで実現される。但し、専用回路等のハードウェアで実現しても良い。
【００１５】
判断手段２１の処理の具体例は、以下である。判断手段２１は、サーバ装置２が格納している新しい主ファームウェアのバージョンに関する情報（以下、バージョン情報と称す）の取得要求をサーバ装置２に送信する。そして、この取得要求の送信に対応して新しい主ファームウェアのバージョン情報を受信する。バージョン情報のデータ構造は問わない。また、判断手段２１は主ファームウェア２０のバージョン情報を取得する。そして、これらのバージョン情報から、新しい主ファームウェアのバージョンと現在の主ファームウェア２０のバージョンとが所定の条件を満たすか否か判断する。そして、判断の結果を第一受信手段２２に出力する。
【００１６】
第一受信手段２２は、主ファームウェアを格納しているサーバ装置２から、新しい主ファームウェアを受信する。具体的には、判断手段２１から、新しい主ファームウェアのバージョンと現在の主ファームウェア２０のバージョンとが所定の条件を満たすという判断結果を受け付けた場合に、この新しい主ファームウェアの取得要求をサーバ装置２に対して出力する。そして、この取得要求の送信に対応して新しい主ファームウェアを受信する。なお、判断手段２１の判断する所定の条件を、現在の主ファームウェア２０から、新しい主ファームウェアにアップグレードすべきではないと判断するための条件とし、判断手段２１から、新しい主ファームウェアと現在の主ファームウェア２０とが所定の条件を満たさない、という判断結果を受けた場合に、第一受信手段２２が、新しい主ファームウェアを受信するようにしてもよい。また、第一受信手段２２が受信するこの新しい主ファームウェアは、主ファームウェア２０全体を置き換えるものでなくても良く、主ファームウェア２０の一部を置き換えるものであっても良い。例えば、主ファームウェア２０が複数のプログラムからなり、その一部のみを更新する場合には、その更新する部分のみを置き換えるようにしてもよい。第一受信手段２２は、モデムやネットワークカード等のハードウェアにより構成される受信デバイスを含むと考えても含まないと考えてもよい。第一受信手段２２は、受信デバイスのドライバーソフトまたは、受信デバイスのドライバーソフトと受信デバイス等で実現され得る。
【００１７】
なお、判断手段２１が行う判断処理と同様の処理をサーバ装置２が行う場合、判断手段２１を省略するようにしてもよい。例えば、電子機器１が電源時投入時や、ユーザからの指示を受けた時に、主ファームウェア２０のバージョン情報等をサーバ装置２に出力することで、サーバ装置２が、電子機器１の主ファームウェア２０のバージョン情報等を取得できるようにする。そして、このバージョン情報等を用いることで、サーバ装置２が、格納している新しい主ファームウェアと、電子機器１の主ファームウェア２０とが所定の関係にあるか判断し、所定の関係にあると判断した場合に、新しい主ファームウェアを第一受信手段２２に対して送信する。そして、この新しい主ファームウェアを第一受信手段２２が受信するようにしてもよい。
【００１８】
また、第一受信手段２２が、定期的、あるいは不定期にサーバ装置２から送信される主ファームウェアを取得するようにした場合などには、判断手段２１は省略してもよい。
【００１９】
再起動指示手段２３は、第一受信手段２２が新しい主ファームウェアを受信した後、電子機器１を再起動するように起動部３０に指示する。この再起動するようにする指示は、どのような構造であってもよい。再起動指示手段２３は、通常ソフトウェアで実現される。但し、専用回路等のハードウェアで実現しても良い。
【００２０】
蓄積手段２４は、第一受信手段２２が受信した新しい主ファームウェアを、所定の記憶媒体に蓄積する。所定の記憶媒体は、例えば、主ファームウェア２０が記憶されていた記憶媒体である。例えば、蓄積手段２４が、主ファームウェア２０を上書きすることで、新しい主ファームウェアは、主ファームウェア２０を置き換えるよう蓄積される。ただし、必要に応じて置き換えないように蓄積しても良い。このようにして新しい主ファームウェアを蓄積することで、主ファームウェア２０が更新されることとなる。なお、第一受信手段２２が受信した新しい主ファームウェアがデータ圧縮や分割されたものである場合、蓄積手段２４は、この新しい主ファームウェアを、圧縮、あるいは分割された状態で記憶媒体に蓄積するようにしてもよい。この場合、例えば、起動部３０が、主ファームウェア２０を再起動する際に、新しい主ファームウェアが圧縮されている場合は伸張、また、分割されている場合は結合することによって、新しい主ファームウェアを展開し、この展開した新しいファームウェアを記憶媒体に蓄積することで、主ファームウェア２０を置き換えるようにしてもよい。なお、このような圧縮や分割された新しい主ファームウェアを記憶する記憶媒体は、主ファームウェア２０が記憶されている記憶媒体であってもよいし、他の不揮発性の記憶媒体等であってもよい。蓄積手段２４は、通常ソフトウェアで実現される。但し、専用回路等のハードウェアで実現しても良い。
【００２１】
起動部３０は、主ファームウェア２０の起動と、従ファームウェア４０の起動とを行う。例えば、主ファームウェアや従ファームウェア４０のソフトウェア部分をそれらが蓄積されている記憶媒体から読み出して実行する。起動部３０は、例えばブートローダ等である。起動部３０は、通常はソフトウェアにより実現される。ただし、その一部を専用回路等のハードウェアにより構成するようにしてもよい。
【００２２】
主起動手段３１は、機器ハード１０に対する起動指示および再起動の指示に応じて、主ファームウェア２０を起動させる。なお、蓄積手段２４が記憶媒体に、データ圧縮や、分割された新しい主ファームウェアを蓄積している場合、主起動手段３１は、主ファームウェア２０を更新するために、必要に応じて、受信した新しい主ファームウェアを伸張したり、結合したりして、記憶媒体に蓄積された新しい主ファームウェアを展開する。そして、この展開した新しい主ファームウェアを、主ファームウェア２０が記憶されている記憶媒体に記憶し、この新しい主ファームウェアを起動する。主起動手段３１は、通常、ソフトウェアにより実現される。ただし、その一部を専用回路等のハードウェアにより構成するようにしてもよい。なお、主起動手段３１を、起動指示に応じて主ファームウェア２０を起動させるソフトウェア等と、再起動指示に応じて主ファームウェア２０を起動させるソフトウェア等とにより構成してもよい。
【００２３】
起動判断手段３２は、第一受信手段２２が受信した新しい主ファームウェアの正当性について判断する。正当性がない、とは、主ファームウェアが正常な状態で起動できるものでないということである。例えば、新しい主ファームウェアに異常があって起動できない、あるいは、新しい主ファームウェアに異常があり、起動はできるが、サーバ装置２からこの異常のある新しい主ファームウェアを置き換えるための新しい主ファームウェアを受信することができるものでない等の場合を正当性がないとする。起動判断手段３２が、どのように新しい主ファームウェアの正当性を判断するかは問わない。例えば、第一受信手段２２が受信した新しい主ファームウェアがデータ圧縮されている場合に、第一受信手段２２がこの新しい主ファームウェアを正常に展開できなければ、新しい主ファームファイルの正当性がないと判断するようにしてもよい。また、新しい主ファームウェアを起動する際に、実際に起動できたか否かを起動部３０等で判定するようにしても良い。また、正当性の判断は、新しい主ファームウェアが正常に起動できるか否かの二段階にかぎらない。例えば、新しい主ファームウェアが、起動可能な状態ではあるが、サーバ装置２から新しい主ファームウェアは受信できない状態などを、制限のある状態と判断するなどにより、正当性を三段階以上の段階で判断し、起動が可能ではない状態のもののみの正当性がないと判断するようにしても良い。また、例えば、第一受信手段２２の受信した新しい主ファームウェアが、３つのデータ圧縮されたファイルにより構成されている場合に、第一受信手段２２により、３つのファイルのそれぞれが展開できるか否かを、段階的に判定し、そのうちの所定数以上、例えば２つ以上のファイルが展開できた場合に正当性があると判断するようにし、その他の場合については正当性がないと判断するようにしてもよい。なお、正常に起動できるか否かを判断するのではなく、新しい主ファームウェアのバージョンを確認して、元の主ファームウェア２０よりもバージョンの高いものであるか否か等を判断するようにしてもよい。起動判断手段３２は、通常、ソフトウェアにより実現される。ただし、その一部を専用回路等のハードウェアにより構成するようにしてもよい。
【００２４】
従起動手段３３は、起動判断手段３２が新しい主ファームウェアの正当性がないと判断した場合、従ファームウェア４０を起動させる。そして、従ファームウェア４０に主ファームウェアを受信する指示である受信指示を出力する。受信指示の構造は問わない。受信指示には、例えば、新しい主ファームウェアを識別できる情報、例えば主ファームウェアの名前や、バージョン番号等を含めるようにしてもよい。これらの情報は、起動判断手段３２等から取得可能である。従起動手段３３は、通常、ソフトウェアにより実現される。ただし、その一部を専用回路等のハードウェアにより構成するようにしてもよい。
【００２５】
従ファームウェア４０は、サーバ装置２から新しい主ファームウェアを受信するために必要な電子機器１の制御、および電子機器１を再起動するために必要な電子機器１の制御を行う。従ファームウェア４０は、通常、ソフトウェアにより実現される。ただし、その一部あるいは全体を専用回路等のハードウェアにより構成するようにしてもよい。従ファームウェア４０のソフトウェア部分は、例えばＲＯＭや、ＦｌａｓｈＲＯＭ等の不揮発性の記憶媒体に記憶されている。なお、記憶媒体のサイズの小型化や、ハードウェアの小型化を実現するためには、従ファームウェア４０は、サーバ装置２から新しい主ファームウェアを受信するために必要な電子機器１の制御、および電子機器１を再起動するために必要な電子機器１の制御を行うために必要最低限のソフトウェアやハードウェアのみにより構成することが好ましい。
【００２６】
第二受信手段４１は、従起動手段３３からの受信指示に応じて、主ファームウェアを格納しているサーバ装置２から、新しい主ファームウェアを受信する。具体的には、第一受信手段２２と同様に、新しい主ファームウェアの取得要求をサーバ装置２に対して出力する。そして、この取得要求の送信に対応して新しい主ファームウェアを受信する。例えば、従起動手段３３からの受信指示に、新しい主ファームウェアを識別できる情報が含まれている場合、この情報により決定される主ファームウェアの取得要求を出力する。この取得要求のデータ構造は問わない。第二受信手段４１は、モデムやネットワークカード等のハードウェアにより構成される受信デバイスを含むと考えても含まないと考えてもよい。第二受信手段４１は、受信デバイスのドライバーソフトまたは、受信デバイスのドライバーソフトと受信デバイス等で実現され得る。第二受信手段４１が受信した新しい主ファームウェアは、例えば、図示しない蓄積手段等により、主ファームウェア２０が記憶されている記憶媒体に蓄積され、主ファームウェア２０が、第二受信手段４１の受信した新しい主ファームウェアにより更新される。
【００２７】
第二再起動指示手段４２は、第二受信手段４１が主ファームウェアを受信した後、電子機器１を再起動するように起動部３０に指示をする。この再起動するようにする指示は、どのようなデータ構造であってもよい。第二再起動指示手段４２は、通常ソフトウェアで実現される。但し、専用回路等のハードウェアで実現しても良い。
【００２８】
サーバ装置２は、１以上の主ファームウェアを格納しており、電子機器１からの取得要求に応じて、この主ファームウェアのうち、電子機器１から取得要求のあった主ファームウェアを、新しい主ファームウェアとして、電子機器１に対して送信する。
【００２９】
格納部２０１は、主ファームウェアを格納している。格納部２０１は、具体的には、電子機器１に送信される新しい主ファームウェアを格納している。新しい主ファームウェアのデータ構造は問わない。例えば、新しい主ファームウェアは、イメージファイルとして、サーバ装置２に格納されている。イメージファイルとは、例えばメモリ等に記憶されているデータをそのままのデータ構造が再現できる形式でファイル化したものであり、新しい主ファームウェアは、主ファームウェア２０が記憶されている記憶媒体に記憶するための所望のデータ構造でイメージファイル化されている。このイメージファイルはデータ圧縮されていてもよいし、ファイルが複数に分割されていても良い。なお、主ファームウェア２０がソフトウェアとハードウェアとにより構成される場合、格納部２０１には、主ファームウェアのソフトウェア部分に相当する部分のみが格納される。したがって、この場合、サーバ装置２から送信される新しい主ファームウェアとしては、実際には、新しい主ファームウェアのソフトウェア部分が送信されることとなる。格納部２０１は、不揮発または揮発性の記憶媒体により実現され得る。
【００３０】
送信部２０２は、電子機器１に、格納部２０１に格納している主ファームウェアを送信する。具体的には、新しい主ファームウェアを、格納部２０１から取得し、電子機器１に対して出力する。送信する新しい主ファームウェアは、例えば、電子機器１からの取得要求に含まれる新しい主ファームウェアを識別するための情報よって決定される新しい主ファームウェアである。なお、このような識別情報が取得要求に含まれない場合、例えば、格納部２０１に格納されている中で最もバージョン番号の高い主ファームウェアや、もっとも作成日の新しい主ファームウェア等を新しい主ファームウェアとして送信するようにしてもよい。送信部２０２は、有線または無線の通信手段、あるいは有線または無線の放送手段により構成される。
【００３１】
ネットワーク３は、電子機器１とサーバ装置２との間での、データの送受信を可能とするものであれば、どのようなネットワークであっても良い。ネットワーク３は、例えば、ＩＰプロトコル等を用いた無線または有線のネットワークであってもよい。また、このネットワークにおける通信を、地上波放送、ケーブルテレビ放送、衛星放送等により実現しても良い。
【００３２】
以下、本実施の形態に係る電子機器の、主ファームウェアを更新する動作について、図３のフローチャートを用いて説明する。
（ステップＳ３０１）主起動手段３１は、機器ハード１０が起動指示を受け付けたか否かを判定する。受け付けた場合、ステップＳ３０２へ進み、受け付けていない場合、ステップＳ３０２へ戻る。
（ステップＳ３０２）主起動手段３１は、機器ハード１０が受け付けた起動指示に応じて主ファームウェア２０を起動させる。
（ステップＳ３０３）判断手段２１がサーバ装置２から、サーバ装置２が格納している新しい主ファームウェアのバージョン情報を取得する。
【００３３】
（ステップＳ３０４）判断手段２１が、サーバ装置２が格納している新しい主ファームウェアのバージョンと、主ファームウェア２０のバージョンとを比較して、新しい主ファームウェアが所定の条件を満たすか否か判断する。そして、所定の条件を満たすと判断した場合、ステップＳ３０５に進む。所定の条件を満たさないと判断した場合、主ファームウェア２０の更新は不要であるとして、処理が終了する。
【００３４】
ここで、「新しい主ファームウェアが所定の条件を満たすか否か判断する」および「所定の条件を満たすと判断した場合」とは、所定の条件が主ファームウェアの更新が必要であることを判断するための条件である場合には、新しい主ファームウェアがこの所定の条件を満たすか否かを判断すること、および新しい主ファームウェアがこの所定の条件を満たすと判断した場合のことである。また、所定の条件が主ファームウェアの更新が不要であることを判断するための条件である場合には、新しい主ファームウェアがこの所定の条件を満たさないか否かの判断をすること、および新しい主ファームウェアが所定の条件を満たさないと判断した場合のことである。
【００３５】
したがって、例えば、上記の所定の条件が、主ファームウェアの更新が必要であると判断するための条件、例えば、新しい主ファームウェアのバージョンが、現在の主ファームウェア２０のバージョンよりも高いことを判断するための条件等である場合には、新しい主ファームウェアが所定の条件を満たすか否か判断する。そして、新しい主ファームウェアのバージョンが所定の条件を満たすと判断した場合、ステップＳ３０５に進む。所定の条件を満たさないと判断した場合、主ファームウェア２０の更新は不要であるとして、処理が終了する。
【００３６】
また、判断手段２１の判断する所定の条件が、主ファームウェアの更新が不要であると判断するための条件である場合、例えば、新しい主ファームウェアのバージョンが、現在の主ファームウェア２０のバージョンよりも低いことを判断するための条件等である場合には、新しい主ファームウェアが所定の条件を満たすか否か判断する。そして、新しい主ファームウェアのバージョンが所定の条件を満たさないと判断した場合、ステップＳ３０５に進む。所定の条件を満たすと判断した場合、主ファームウェア２０の更新は不要であるとして、処理が終了する。
【００３７】
（ステップＳ３０５）第一受信手段２２が、サーバ装置２に対して、新しい主ファームウェアの取得要求を出力する。
（ステップＳ３０６）第一受信手段２２が、サーバ装置２から新しい主ファームウェアを受信したか否かを判定する。受信した場合、ステップＳ３０７へ進み、受信していない場合、ステップＳ３０６へ戻る。
（ステップＳ３０７）蓄積手段２４が、第一受信手段２２の受信した新しい主ファームウェアを記憶媒体等に蓄積する。
（ステップＳ３０８）再起動指示手段２３が、主ファームウェア２０を再起動させる指示を、主起動手段３１に出力する。
（ステップＳ３０９）主起動手段３１は、主ファームウェア２０を再起動させる指示に応じて主ファームウェア２０を再起動させる。
【００３８】
（ステップＳ３１０）起動判断手段３２は、新しい主ファームウェアについて、正当性があるか否かを判断する。正当性がある場合、新しい主ファームウェアへの更新が正常に行われたとして、処理を終了する。正当性がない場合、ステップＳ３１１へ進む。
（ステップＳ３１１）従起動手段３３が、従ファームウェア４０を起動させる。
【００３９】
（ステップＳ３１２）従起動手段３３が、主ファームウェアを受信する指示である受信指示を、従ファームウェア４０に出力する。従ファームウェア４０の第二受信手段４１は、この受信指示に応じて、サーバ装置２に対して、新しい主ファームウェアの取得要求を出力する。
【００４０】
（ステップＳ３１３）第二受信手段２２が、サーバ装置２から新しい主ファームウェアを受信したか否かを判定する。受信した場合、ステップＳ３１４へ進み、受信していない場合、ステップＳ３１３へ戻る。
（ステップＳ３１４）第二受信手段４１が、受信した新しい主ファームウェアを、主ファームウェア２０の記憶されている記憶媒体に蓄積する。
（ステップＳ３１５）第二再起動指示手段４２が、主ファームウェア２０を再起動させる指示を出力する。そしてステップＳ３０９へ戻る。
【００４１】
次に具体例について説明する。ここでは、電子機器１が携帯電話である場合を例として説明する。
電子機器１に電源を投入すると、主起動手段３１は、機器ハード１０が起動指示を受け付けたと判定して、主ファームウェア２０を起動させる。
図４は、サーバ装置２の格納部２０１に格納されている主ファームウェアのバージョン情報管理表の一例を示す図である。バージョン情報管理表は、ファームウェア名、バージョン、更新日等のデータ項目を有している。ファームウェア名は、主ファームウェアを識別するための名前である。バージョンは、主ファームウェアのバージョン番号を示している。主ファームウェアの更新が行われるごとにバージョン番号は増加する。更新日は、主ファームウェアに対して更新が行われた最後の日付を示している。なお、各データ項目のデータ構造は問わない。
【００４２】
主ファームウェア２０が起動すると、判断手段２１は、サーバ装置２に対して、サーバ装置２が格納している主ファームウェアのうちの、最もバージョン番号の高いファームウェアに関するバージョン情報の送信を要求する指示を送信する。この指示を受けて、サーバ装置２が、図４に示すバージョン情報管理表を参照して、最も新しいバージョンのファームウェアについて、そのファームウェア名とバージョン番号とを含むバージョン情報を送信される。ここでは、図４に示すバージョン情報管理表において、バージョン番号のもっとも高いファームウェアが、バージョン番号が５．２のファームウェアＡＡＡであったとすると、ファームウェアＡＡＡに関する、ファームウェア名とバージョン番号とを含むバージョン情報が、サーバ装置２から送信される。
【００４３】
判断手段２１が、サーバ装置２から送信されるファームウェアＡＡＡのバージョン情報を取得する。判断手段２１は、この取得したバージョン情報から得られるファームウェアＡＡＡのバージョン番号５．２と、主ファームウェア２０のバージョン番号とを比較して、サーバ装置２内の最もバージョンの高い主ファームウェアが、電子機器１の主ファームウェア２０よりも、バージョンが高いか否か判定する。ここでは、電子機器１の主ファームウェア２０が図４に示したバージョン４．８のファームウェアＡＢＣであったとすると、ファームウェアＡＡＡのバージョン番号５．２は、主ファームウェア２０よりもバージョンが高いため、ファームウェアＡＡＡの取得を要求する指示である取得指示を、サーバ装置２に対して送信する。サーバ装置２はこの取得指示を受信して、この取得指示に含まれるファームウェアＡＡＡを格納部２０１から取得して送信する。サーバ装置２から送信されるバージョン情報から、サーバ装置２内で、最もバージョンの高い主ファームウェアのバージョンが、ファームウェアＡＢＣのバージョンより高くない場合、つまりバージョンが同じか、低いかのいずれかである場合には、主ファームウェア２０の更新は不要であるとして、主ファームウェア２０の更新は行われない。
【００４４】
なお、取得指示をサーバ装置２に対して送信する前に、図５に示すように、ファームウェアの更新をしてよいか、電子機器１のディスプレイ等に、ユーザに尋ねるダイアログ等を表示するようにしても良い。そして、ユーザが、テンキー等を利用して更新を許可する指示を入力した場合には取得指示を送信するようにし、許可しない指示を入力した場合には、取得指示を送信しないようにしても良い。
【００４５】
ここで、ファームウェアＡＡＡは、イメージファイルとして格納部２０１に格納されているものとし、さらに、ｇｚｉｐ形式で圧縮されているものとする。ｇｚｉｐ形式は、ファイル圧縮形式の一つで、これにより圧縮されたファームウェアＡＡＡのイメージファイルは、３２ｂｉｔＣＲＣ付きの、Ｌｅｍｐｅｌ−ＺｉＶコーディングによりコーディングされたファイルとなる。なお、ＣＲＣとは、Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ（巡回冗長検査）の略で、連続して出現する誤りの検出が可能な誤り検出方式である。
【００４６】
第一受信手段２２が、サーバ装置２から新しい主ファームウェアであるファームウェアＡＡＡを受信する。そして、蓄積手段２４が、第一受信手段２２の受信した、圧縮されたイメージファイルであるファームウェアＡＡＡを、主ファームウェアのソフトウェア部分が記憶されている記憶媒体に記憶する。記憶媒体の容量を小さくするためには、圧縮されたイメージファイルであるファームウェアＡＡＡを、主ファームウェア２０のソフトウェア部分を上書きするよう記憶することが好ましい。
【００４７】
そして、再起動指示手段２３が、主ファームウェア２０を再起動させる指示を、主起動手段３１に出力する。主起動手段３１は、主ファームウェア２０を再起動させる指示に応じて主ファームウェア２０を再起動させる。このとき、ファームウェアＡＡＡのイメージファイルは、ｇｚｉｐ形式で圧縮されているため、主起動手段３１が、これを展開して、主ファームウェア２０が記憶されている記憶媒体にファームウェアＡＡＡのイメージファイルを上書きするよう記憶し、このファームウェアＡＡＡを主ファームウェア２０として起動する。
【００４８】
起動判断手段３２は、新しい主ファームウェアについて、正当性があるか否かを判断する。ここで、上述したように、ファームウェアＡＡＡのイメージファイルは、ｇｚｉｐ形式で圧縮されており、３２ｂｉｔＣＲＣ付きの、Ｌｅｍｐｅｌ−ＺｉＶコーディングによりコーディングされたファイルとなっている。このため、このｇｚｉｐ形式で圧縮されたファームウェアＡＡＡのイメージファイルが正常に展開できれば、ＣＲＣチェックを行ったことと同じこととなり、正常なイメージファイルのファームウェアＡＡＡによって、主ファームウェア２０に対する上書きによる更新が正常に終了したと判断できる。一方、ｇｚｉｐ形式で圧縮されたファームウェアＡＡＡのイメージファイルが正常に展開できなかった場合、ＣＲＣチェックによりエラー等の異常があると判断されたこととなり、ファームウェアＡＡＡで上書きした更新が正常に終了しなかったと判断できる。
【００４９】
したがって、この実施の形態においては、圧縮されたファームウェアＡＡＡのイメージファイルが正常に展開できたか否かにより新しい主ファームウェア、ここではファームウェアＡＡＡの正当性を判断し、ファームウェアＡＡＡのイメージファイルが正常に展開できた場合、ファームウェアＡＡＡの正当性があると判断し、ファームウェアＡＡＡによる更新が正常に行われたとみなして、主ファームウェアの更新処理を終了する。
【００５０】
一方、ファームウェアＡＡＡのイメージファイルが正常に展開できなかった場合には、ファームウェアＡＡＡの正当性がないと判断し、ファームウェアＡＡＡへの更新が正常に行われていないとみなす。そして、従起動手段３３が従ファームウェア４０を起動させる。
【００５１】
そして、従起動手段３３が、ファームウェアＡＡＡの受信指示を出力する。第二受信手段４１は、この受信指示に応じて、ファームウェアＡＡＡの送信を要求する指示を、サーバ装置２に対して送信し、これに応じて、サーバ装置２から、圧縮されたファームウェアＡＡＡのイメージファイルを受信する。
【００５２】
第二受信手段４１が受信したファームウェアＡＡＡのイメージファイルを、従ファームウェア４０の図示しない蓄積手段が、上記の第一受信手段２２と同様に、主ファームウェアのソフトウェア部分が記憶されている記憶媒体に記憶する。そして、第二再起動指示手段４２が、主ファームウェア２０を再起動させる指示を出力する。その後は、主ファームウェアが正常に更新されるまで、上述した主ファームウェアの再起動以降の処理が繰り返される。
【００５３】
以上、本実施の形態によれば、第一受信手段２２が、新しい主ファームウェアを受信後、主ファームウェアを再起動する際に、起動判断手段３２が、新しい主ファームウェアの正当性を判断して、正当性がないと判断すると、従起動手段３３が、従ファームウェア４０を起動させ、従ファームウェア４０の第二受信手段４１が、新しい主ファームウェアを受信して、主ファームウェアを再起動させるようにした。これにより、主ファームウェア２０による新しい主ファームウェアへの更新が、例えば、電子機器の電源が切れてしまったり、ネットワーク接続が切れてしまったりする等の何らかの理由により、正常に行われなかったとしても、従ファームウェア４０が、新しい主ファームウェアを受信して、主ファームウェア２０を更新する。この結果、主ファームウェア２０を、適切に更新することができる。
【００５４】
また、正常に主ファームウェアを更新できるまで、従ファームウェア４０の第二受信手段４１の処理、および第二再起動指示手段４２の処理を繰り返すようにしたことにより、主ファームウェアの更新を、より確実に行うことができる。
【００５５】
なお、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【００５６】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記憶媒体に記憶されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。なお、上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、ファームウェアの全部または一部を受信する第一受信ステップと、前記第一受信ステップで、ファームウェアを受信した後、前記ファームウェアを再起動する起動ステップと、前記ファームウェアの正当性について判断する起動判断ステップと、前記ファームウェアの正当性がないと判断した場合、前記ファームウェアの全部または一部を受信する第二受信ステップと、前記第二受信ステップによりファームウェアを受信した後、前記ファームウェアを再起動する第二の起動ステップとを実行させるためのプログラムである。
【００５７】
また、このプログラムは、コンピュータに、前記第二受信ステップおよび前記第二の起動ステップを、前記起動判断ステップにおいて、前記ファームウェアの正当性があると判断されるまで繰り返し実行させるためのプログラムである。
【００５８】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアでしか行われない処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理は、少なくとも含まれない。
【００５９】
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記憶媒体、例えば、ＣＤ−ＲＯＭなどの光ディスクや磁気ディスク、半導体メモリなど、に記憶されたプログラムが読み出されることによって実行されてもよい。
【００６０】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【００６１】
本発明は、ネットワーク等を介してファームウェアの更新が可能な電子機器およびそのファームウェアの更新方法等に有用であり、特に、ネットワーク接続が可能な、プロセッサが組み込まれた、いわゆる組み込み機器等の電子機器およびそのファームウェアの更新方法等への利用に適している。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態による電子機器を備えた情報処理システムの概略図。
【図２】同電子機器を備えた情報処理システムの構成を示すブロック図。
【図３】同電子機器の動作を説明するフローチャート。
【図４】同電子機器を備えた情報処理システムにおけるサーバ装置に格納されているデータの構成を示す図。
【図５】同電子機器の表示例。
【符号の説明】
【００６３】
１  電子機器
２  サーバ装置
３  ネットワーク
１０  機器ハード
２０  主ファームウェア
２１  判断手段
２２  第一受信手段
２３  再起動指示手段
２４  蓄積手段
３０  起動部
３１  主起動手段
３２  起動判断手段
３３  従起動手段
４０  従ファームウェア
４１  第二受信手段
４２  第二再起動指示手段
２０１  格納部
２０２  送信部
【図１】
2006185309.tif 000003
【図２】
2006185309.tif 000004
【図３】
2006185309.tif 000005
【図４】
2006185309.tif 000006
【図５】
2006185309.tif 000007