(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024075841
(43)【公開日】2024-06-05
(54)【発明の名称】ファームウェア管理装置
(51)【国際特許分類】
G06F 8/65 20180101AFI20240529BHJP
【FI】
G06F8/65
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022187032
(22)【出願日】2022-11-24
(71)【出願人】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100132067
【弁理士】
【氏名又は名称】岡田 喜雅
(74)【代理人】
【識別番号】100131521
【弁理士】
【氏名又は名称】堀口 忍
(72)【発明者】
【氏名】平 佳那子
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB01
5B376CA05
5B376CA18
5B376CA32
5B376CA52
5B376CA61
(57)【要約】 (修正有)
【課題】デバイスのファームウェアのバージョンを適切に管理する。
【解決手段】複数のデバイスに夫々ファームウェアが実装されるマルチデバイスシステムにおいて、ファームウェア管理装置20は、各システムのファームウェアについて、バージョン毎に、他のデバイスに対応するファームウェアと連携して動作できるか否かを表すファームウェア依存関係情報を保存する保存部25と、第1のファームウェアおよび第2のファームウェアの更新の状況を管理する更新管理部22と、第1のファームウェアの更新が成功し、第2のファームウェアの更新が失敗したときに、更新後の第1のファームウェア及び更新前の第2のファームウェアが連携して動作できるか否かを判定する判定部23と、更新後の第1のファームウェアおよび更新前の第2のファームウェアが連携して動作できないときに、更新後の第1のファームウェアのバージョンを変更する復旧処理部24と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のデバイスにそれぞれ対応するファームウェアが実装されるシステムにおいて、前記ファームウェアを管理するファームウェア管理装置であって、
前記複数のデバイスそれぞれに対応する各ファームウェアについて、バージョン毎に、他のデバイスに対応するファームウェアと連携して動作できるか否かを表すファームウェア依存関係情報を保存する保存部と、
前記複数のデバイスの中の第1のデバイスに実装される第1のファームウェアおよび前記複数のデバイスの中の第2のデバイスに実装される第2のファームウェアのバージョンを変更する更新処理において、前記第1のファームウェアおよび前記第2のファームウェアの更新の状況を管理する更新管理部と、
前記第1のファームウェアの更新が成功し、前記第2のファームウェアの更新が失敗したときに、前記ファームウェア依存関係情報に基づいて、更新後のバージョンの前記第1のファームウェアおよび更新前のバージョンの前記第2のファームウェアが連携して動作できるか否かを判定する判定部と、
更新後のバージョンの前記第1のファームウェアおよび更新前のバージョンの前記第2のファームウェアが連携して動作できないときに、更新後の前記第1のファームウェアのバージョンを変更する復旧処理部と、
を備えるファームウェア管理装置。
【請求項2】
前記復旧処理部は、前記第1のファームウェアを更新前のバージョンに戻す
ことを特徴とする請求項1に記載のファームウェア管理装置。
【請求項3】
前記復旧処理部は、前記ファームウェア依存関係情報に基づいて、前記第1のファームウェアを、更新前のバージョンの前記第2のファームウェアと連携して動作できるバージョンに変更する
ことを特徴とする請求項1に記載のファームウェア管理装置。
【請求項4】
前記復旧処理部は、前記ファームウェア依存関係情報に基づいて、前記第1のファームウェアを、更新前のバージョンの前記第2のファームウェアと連携して動作できるバージョンのうちの最新のバージョンに変更する
ことを特徴とする請求項3に記載のファームウェア管理装置。
【請求項5】
前記保存部には、前記複数のデバイスそれぞれに過去に実装されていたバージョンのファームウェアが保存されており、
前記復旧処理部は、過去に前記第1のデバイスに実装されていたバージョンの前記第1のファームウェアを前記第1のデバイスに送信する
ことを特徴とする請求項1に記載のファームウェア管理装置。
【請求項6】
前記第1のデバイスが、更新前のバージョンの前記第1のファームウェアを保持しているときには、前記復旧処理部は、更新前のバージョンの前記第1のファームウェアを使用することを前記第1のデバイスに指示する
ことを特徴とする請求項1に記載のファームウェア管理装置。
【請求項7】
複数のデバイスと、
前記複数のデバイスにそれぞれ実装されるファームウェアを管理するファームウェア管理装置と、を備え、
前記ファームウェア管理装置は、
前記複数のデバイスそれぞれに対応する各ファームウェアについて、バージョン毎に、他のデバイスに対応するファームウェアと連携して動作できるか否かを表すファームウェア依存関係情報を保存する保存部と、
前記複数のデバイスの中の第1のデバイスに実装される第1のファームウェアおよび前記複数のデバイスの中の第2のデバイスに実装される第2のファームウェアのバージョンを変更する更新処理において、前記第1のファームウェアおよび前記第2のファームウェアの更新の状況を管理する更新管理部と、
前記第1のファームウェアの更新が成功し、前記第2のファームウェアの更新が失敗したときに、前記ファームウェア依存関係情報に基づいて、更新後のバージョンの前記第1のファームウェアおよび更新前のバージョンの前記第2のファームウェアが連携して動作できるか否かを判定する判定部と、
更新後のバージョンの前記第1のファームウェアおよび更新前のバージョンの前記第2のファームウェアが連携して動作できないときに、更新後の前記第1のファームウェアのバージョンを変更する復旧処理部と、を備える
ことを特徴とするマルチデバイスシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のデバイスにそれぞれ実装されるファームウェアを管理する技術に係わる。
【背景技術】
【0002】
複数のデバイスが連携して動作するシステムにおいて、各デバイスにファームウェアを実装する構成が実用化されている。この場合、各デバイスのファームウェアを更新できるように構成されていることが好ましい。例えば、特許文献1には、複数のIoT機器に実装されているファームウェアを、通信ネットワークを介して新しいバージョンのファームウェアに更新する方法が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ただし、各デバイスに実装されているファームウェアを個々に新しいバージョンに更新すると、複数のデバイスが連携して動作できなくなることがある。
【0005】
本発明の1つの側面に係わる目的は、複数のデバイスにそれぞれファームウェアが実装されるシステムにおいて、各デバイスのファームウェアのバージョンを適切に管理することである。
【課題を解決するための手段】
【0006】
本発明の1つの態様のファームウェア管理装置は、複数のデバイスにそれぞれ対応するファームウェアが実装されるシステムにおいて、前記ファームウェアを管理する。このファームウェア管理装置は、前記複数のデバイスそれぞれに対応する各ファームウェアについて、バージョン毎に、他のデバイスに対応するファームウェアと連携して動作できるか否かを表すファームウェア依存関係情報を保存する保存部と、前記複数のデバイスの中の第1のデバイスに実装される第1のファームウェアおよび前記複数のデバイスの中の第2のデバイスに実装される第2のファームウェアのバージョンを変更する更新処理において、前記第1のファームウェアおよび前記第2のファームウェアの更新の状況を管理する更新管理部と、前記第1のファームウェアの更新が成功し、前記第2のファームウェアの更新が失敗したときに、前記ファームウェア依存関係情報に基づいて、更新後のバージョンの前記第1のファームウェアおよび更新前のバージョンの前記第2のファームウェアが連携して動作できるか否かを判定する判定部と、更新後のバージョンの前記第1のファームウェアおよび更新前のバージョンの前記第2のファームウェアが連携して動作できないときに、更新後の前記第1のファームウェアのバージョンを変更する復旧処理部と、を備える。
【発明の効果】
【0007】
上述の態様によれば、複数のデバイスにそれぞれファームウェアが実装されるシステムにおいて、各デバイスのファームウェアのバージョンを適切に管理できる。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態に係わるマルチデバイスシステムの一例を示す図である。
【
図3】ファームウェアの更新が成功するケースの一例を示す図である。
【
図4】
図3に示す更新処理のシーケンスを示す図である。
【
図5】ファームウェアの更新が失敗するケースの一例を示す図である。
【
図6】
図5に示す更新処理のシーケンスを示す図である。
【
図8】ファームウェア依存関係情報の一例を示す図である。
【
図9】ファームウェアの更新が失敗した後にシステムを復旧させるケースの一例を示す図である。
【
図10】
図9に示す更新処理および復旧処理のシーケンスを示す図である。
【
図11】サーバの処理の一例を示すフローチャートである。
【
図12】ファームウェア管理装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0009】
図1は、本発明の実施形態に係わるマルチデバイスシステムの一例を示す。本発明の実施形態に係わるマルチデバイスシステム1は、複数のデバイス10およびサーバ20を備える。なお、マルチデバイスシステム1は、
図1に示していない他のデバイス、機器、または機能を備えてもよい。
【0010】
複数のデバイス10は、システムS0を構成し、互いに連携して動作する。この実施例では、システムS0は、2個のデバイス10を備える。以下の記載では、システムS0が備えるデバイス10を「デバイスA0」および「デバイスB0」と呼ぶことがある。尚、システムS0が備えるデバイス10の個数は、特に限定されるものではなく、3個以上であってもよい。
【0011】
各デバイス10には、対応するファームウェアが実装される。この実施例では、デバイスA0にファームウェアAFが実装されており、デバイスB0にファームウェアBFが実装されている。そして、デバイスA0およびデバイスB0が連携して動作するときに、ファームウェアAFとファームウェアBFとの間でデータおよび/または情報が送受信される。なお、ファームウェアに係わる表記において、「AF」および「BF」は、ファームウェアを識別するファームウェアIDを表し、ファームウェアIDに続く数字は、ファームウェアのバージョンを表す。例えば、AF00は、ファームウェアAFのバージョンが「00」であることを表す。
【0012】
サーバ20は、各デバイス10に実装されるファームウェアを管理するファームウェア管理装置の一例であり、配信部21、更新管理部22、判定部23、復旧処理部24、および保存部25を備える。なお、サーバ20は、
図1に示していない他の機能を備えてもよい。また、サーバ20は、複数のシステムS0~Snそれぞれについて、各デバイス10に実装されるファームウェアを管理してもよい。
【0013】
保存部25には、各デバイス10および各デバイス10のファームウェアを管理するための情報が保存されている。デバイスIDは、サーバ20が管理するデバイス10に付与されている識別情報(A0、B0・・・)を表す。システムIDは、サーバ20が管理するシステム(S0、S1、・・・Sn)に付与されている識別情報を表す。構成管理情報は、サーバ20が管理するシステムの構成を表す。具体的には、構成管理情報は、
図2に示すように、各デバイス10がどのシステムに属しているのかを表す。また、構成管理情報は、各デバイス10にどのファームウェアが実装されているのかを表す。例えば、
図2に示す構成管理情報は、デバイスA0およびデバイスB0がシステムS0に属し、デバイスA0にファームウェアAFが実装されており、デバイスB0にファームウェアBFが実装されていることを表している。
【0014】
更新計画情報は、各デバイス10について、ファームウェアを更新する予定日時および更新後のファームウェアのバージョンを表す。進捗管理情報およびファームウェア依存関係情報については後で記載する。
【0015】
また、保存部25には、各デバイス10について、復旧処理用ファームウェアおよび更新用ファームウェアが保存される。復旧処理用ファームウェアは、過去にデバイス10に実装されていたファームウェア(すなわち、旧バージョンファームウェア)および現在デバイス10に実装されているファームウェア(すなわち、現バージョンファームウェア)を表す。また、更新用ファームウェアは、デバイス10に実装すべき新たなファームウェア(すなわち、新バージョンファームウェア)を表す。
【0016】
配信部21は、更新計画情報に従って、デバイス10に対応する新バージョンファームウェアを配信する。そうすると、デバイス10は、配信部21から配信される新バージョンファームウェアで自分のファームウェアを更新する。なお、以下の記載では、新バージョンファームウェアの配信先のデバイス10を「更新対象デバイス」と呼ぶことがある。
【0017】
更新管理部22は、配信部21が新バージョンファームウェアを配信した後、更新対象デバイスにおけるファームウェアの更新の状況を管理する。具体的には、更新管理部22は、更新対象デバイスが新バージョンファームウェアを受信したか否か、及び、更新対象デバイスにおいてファームウェアが正常に更新されたか否かを管理する。
【0018】
判定部23は、更新対象デバイスにおいてファームウェアが正常に更新されたか否かに応じて、更新対象デバイスを含む複数のデバイス10が連携して動作できるか否かを判定する。このとき、判定部23は、保存部25に保存されているファームウェア依存関係情報に基づいて、更新対象デバイスを含む複数のデバイス10が連携して動作できるか否かを判定する。
【0019】
復旧処理部24は、複数のデバイス10が連携して動作できないと判定されたときに、それら複数のデバイス10が連携して動作できるように、更新対象デバイスのファームウェアのバージョンを変更する。このとき、復旧処理部24は、保存部25に保存されているファームウェア依存関係情報に基づいて、更新対象デバイスのファームウェアのバージョンを変更してもよい。
【0020】
図3は、ファームウェアの更新が成功するケースの一例を示す。
図4は、
図3に示す更新処理のシーケンスを示す。なお、この実施例では、システムS0は、互いに連携して動作するデバイスA0およびデバイスB0を備える。デバイスA0にはファームウェアAF00が実装され、デバイスB0にはファームウェアBF00が実装されている。そして、サーバ20は、デバイスA0のファームウェアをファームウェアAF00からファームウェアAF01に更新し、デバイスB0のファームウェアをファームウェアBF00からファームウェアBF01に更新するものとする。
【0021】
この場合、配信部21は、デバイスA0にファームウェアAF01に送信し、デバイスB0にファームウェアBF01を送信する。デバイスA0は、ファームウェアAF01を受信すると、ファームウェアを受信したことを表す受信成功メッセージをサーバ20に送信する。また、デバイスA0は、現在のファームウェア(すなわち、ファームウェアAF00)をサーバ20から受信したファームウェアAF01に更新すると、ファームウェアの更新が成功したことを表す更新成功メッセージをサーバ20に送信する。同様に、デバイスB0においてファームウェアが更新され、デバイスB0からサーバ20に受信成功メッセージおよび更新成功メッセージが送信される。
【0022】
サーバ20は、デバイスA0およびデバイスB0の双方から更新成功メッセージを受信すると、ファームウェアの更新処理を終了する。なお、サーバ20は、新バージョンファームウェアの送信後に対応するデバイス10から受信成功メッセージを受信できなかったときには、再送処理を実行してもよい。
【0023】
図5は、ファームウェアの更新が失敗するケースの一例を示す。
図6は、
図5に示す更新処理のシーケンスを示す。なお、この実施例でも、
図3~
図4に示すケースと同様に、配信部21は、デバイスA0にファームウェアAF01に送信し、デバイスB0にファームウェアBF01を送信する。そして、デバイスA0においてファームウェアAF00からファームウェアAF01への更新が行われ、デバイスA0からサーバ20に更新成功メッセージが送信されるものとする。
【0024】
ただし、
図5~
図6に示すケースでは、デバイスB0において、ファームウェアBF00からファームウェアBF01への更新が失敗する。この場合、デバイスB0は、ロールバック処理により、自身のファームウェアを元の状態に戻す。即ち、デバイスB0は、ファームウェアBF00が実装された状態を維持する。また、デバイスB0は、ファームウェアの更新が失敗したことを表す更新失敗メッセージをサーバ20に送信する。更新失敗メッセージは、ロールバック後のファームウェアのバージョンを識別する情報(即ち、BF00)を含んでもよい。
【0025】
サーバ20は、デバイスA0から更新成功メッセージを受信し、デバイスB0から更新失敗メッセージを受信する。そうすると、更新管理部22は、
図7(a)に示すように、これらのメッセージに基づいて進捗管理情報を更新する。ここで、デバイスA0については、配信部21がファームウェアAF01を送信した後に、更新管理部22が更新成功メッセージを受信している。よって、更新管理部22は、デバイスA0に対応する「更新」フィールドに「成功」を書き込むと共に、「バージョン(実行後)」フィールドに「01」を書き込む。これに対して、デバイスB0については、配信部21がファームウェアBF01を送信した後に、更新管理部22が更新失敗メッセージを受信している。この場合、更新管理部22は、デバイスB0のファームウェアは、ロールバック処理により元の状態に戻っていると判断する。或いは、更新失敗メッセージがロールバック後のファームウェアのバージョンを識別する情報を含むときは、その情報に基づいてロールバック後のファームウェアのバージョンを認識してもよい。いずれにしても、更新管理部22は、デバイスB0に対応する「更新」フィールドに「失敗」を書き込むと共に、「バージョン(実行後)」フィールドに「00」を書き込む。
【0026】
判定部23は、更新管理部22から通知を受けることにより、又は、
図7(a)に示す進捗管理情報を参照することにより、各デバイス10におけるファームウェアの更新の状況を認識する。そして、1以上のデバイス10においてファームウェアの更新が失敗しているときには、判定部23は、ファームウェアの更新に失敗したデバイス10を含むシステムにおいて複数のデバイス10が連携して動作できるか否かを判定する。
【0027】
具体的には、判定部23は、まず、
図2に示す構成管理情報を参照することにより、ファームウェアの更新に失敗したデバイス10を含むシステムを特定する。この例では、ファームウェアの更新に失敗したデバイスB0は、システムS0に属している。また、判定部23は、特定したシステムを構成するデバイス10を検出する。この例では、システムS0がデバイスA0およびデバイスB0から構成されていることが検出される。
【0028】
続いて、判定部23は、ファームウェア依存関係情報を参照することで、システムS0を構成するデバイスA0に実装されるファームウェアおよびデバイスB0に実装されるファームウェアが連携して動作できるか否かを判定する。ファームウェア依存関係情報は、
図8に示すように、各ファームウェアのバージョン毎に、連携動作可能なファームウェアを表す。この実施例では、例えば、ファームウェアAF00は、ファームウェアBF00およびファームウェアBF01と連携して動作できる。ファームウェアAF01も、ファームウェアBF00およびファームウェアBF01と連携して動作できる。ただし、ファームウェアAF02は、ファームウェアBF02と連携して動作できるが、ファームウェアBF00またはファームウェアBF01とは連携して動作できない。
【0029】
図5~
図6に示すケースでは、デバイスA0においては、ファームウェアの更新が成功しているので、ファームウェアAF01が実装されている。デバイスB0においては、ファームウェアの更新が失敗しているので、ロールバック処理により、更新前のファームウェアであるファームウェアBF00が実装されている。ここで、
図8に示すファームウェア依存関係情報によれば、ファームウェアAF01およびファームウェアBF00は互いに連携して動作できる。したがって、判定部23は、デバイスA0およびデバイスB0が互いに連携して動作できると判定する。この場合、サーバ20は、ファームウェアの更新処理を終了する。なお、デバイスA0およびデバイスB0は、互いにバージョンの異なるファームウェアで動作を継続することになる。
【0030】
図9は、ファームウェアの更新が失敗した後にシステムを復旧させるケースの一例を示す。
図10は、
図9に示す更新処理および復旧処理のシーケンスを示す。なお、
図9~
図10に示す実施例においては、
図3~
図4に示すケースまたは
図5~
図6に示すケースと異なり、配信部21は、デバイスA0にファームウェアAF02に送信し、デバイスB0にファームウェアBF02を送信する。
【0031】
デバイスA0において、ファームウェアの更新が成功するものとする。すなわち、デバイスA0のファームウェアは、ファームウェアAF00からファームウェアAF02に更新される。この後、デバイスA0は、更新成功メッセージをサーバ20に送信する。
【0032】
デバイスB0においては、ファームウェアの更新が失敗するものとする。この場合、デバイスB0は、ロールバック処理により、ファームウェアを元の状態に戻す。すなわち、デバイスB0は、ファームウェアBF00が実装された状態を維持する。また、デバイスB0は、ファームウェアの更新が失敗したことを表す更新失敗メッセージをサーバ20に送信する。更新失敗メッセージは、ロールバック後のファームウェアのバージョンを識別する情報(すなわち、BF00)を含んでもよい。
【0033】
サーバ20は、デバイスA0から更新成功メッセージを受信し、デバイスB0から更新失敗メッセージを受信する。そうすると、更新管理部22は、
図7(b)に示すように、これらのメッセージに基づいて進捗管理情報を更新する。ここで、デバイスA0については、配信部21がファームウェアAF02を送信した後に、更新管理部22が更新成功メッセージを受信している。よって、更新管理部22は、デバイスA0に対応する「更新」フィールドに「成功」を書き込むと共に、「バージョン(実行後)」フィールドに「02」を書き込む。これに対して、デバイスB0については、配信部21がファームウェアBF02を送信した後に、更新管理部22が更新失敗メッセージを受信している。この場合、更新管理部22は、デバイスB0のファームウェアは、ロールバック処理により元の状態に戻っていると判断する。或いは、更新失敗メッセージがロールバック後のファームウェアのバージョンを識別する情報を含むときは、その情報に基づいてロールバック後のファームウェアのバージョンを認識してもよい。いずれにしても、更新管理部22は、デバイスB0に対応する「更新」フィールドに「失敗」を書き込むと共に、「バージョン(実行後)」フィールドに「00」を書き込む。
【0034】
判定部23は、更新管理部22から通知を受けることにより、又は、
図7(b)に示す進捗管理情報を参照することにより、各デバイス10におけるファームウェアの更新の状況を認識する。そして、1以上のデバイス10においてファームウェアの更新が失敗しているときには、判定部23は、ファームウェアの更新に失敗したデバイス10を含むシステムにおいて複数のデバイス10が連携して動作できるか否かを判定する。
【0035】
判定部23の処理は、
図5~
図6に示すケースとほぼ同じである。すなわち、判定部23は、まず、
図2に示す構成管理情報を参照することにより、ファームウェアの更新に失敗したデバイス10を含むシステムを特定する。この実施例では、システムS0が特定される。また、システムS0がデバイスA0およびデバイスB0から構成されていることが検出される。したがって、判定部23は、
図8に示すファームウェア依存関係情報を参照することにより、システムS0を構成するデバイスA0およびデバイスB0に実装されるファームウェアが連携して動作できるか否かを判定する。
【0036】
図9~
図10に示すケースでは、デバイスA0においては、ファームウェアの更新が成功しているので、ファームウェアAF02が実装されている。デバイスB0においては、ファームウェアの更新が失敗しているので、ロールバック処理により、更新前のファームウェアであるファームウェアBF00が実装されている。ここで、
図8に示すファームウェア依存関係情報によれば、ファームウェアAF02およびファームウェアBF00は互いに連携して動作できない。したがって、判定部23は、デバイスA0およびデバイスB0が互いに連携して動作できないと判定する。この場合、判定部23は、この判定結果を復旧処理部24に通知する。
【0037】
復旧処理部24は、ファームウェアの更新に失敗したデバイスB0に実装されているファームウェアと連携して動作可能なファームウェアを選択する。ここで、ファームウェアの更新に失敗したデバイスB0においては、ロールバック処理により、更新前のファームウェアであるファームウェアBF00が実装されている。この場合、デバイスA0においても更新前のファームウェアを実装すれば、デバイスA0のファームウェアおよびデバイスB0のファームウェアは連携して動作できるはずである。したがって、復旧処理部24は、更新処理の前にデバイスA0に実装されていたファームウェアを選択する。即ち、ファームウェアAF00が選択される。そして、復旧処理部24は、配信部21に対して、
ファームウェアAF00をデバイスA0に配信することを指示する。
【0038】
配信部21は、復旧処理部24から与えられる配信指示に従ってファームウェアの配信を実行する。すなわち、配信部21は、デバイスA0にファームウェアAF00を配信する。そうすると、デバイスA0は、自身のファームウェアをファームウェアAF02からファームウェアAF00に再更新する。この結果、システムS0は、デバイスA0にファームウェアAF00が実装され、且つ、デバイスB0にファームウェアBF00が実装された状態に復帰するので、デバイスA0およびデバイスB0が連携して動作できない状態は回避される。
【0039】
この後、デバイスA0から更新成功メッセージが送信される。そして、復旧処理部24がこの更新成功メッセージを受信すると、サーバ20による一連の更新処理および復旧処理が終了する。
【0040】
なお、上述の実施例では、デバイスB0におけるファームウェアの更新が失敗したときに、サーバ20からデバイスA0に更新前のバージョンのファームウェア(即ち、ファームウェアAF00)が送信されるが、本発明の実施形態はこの構成に限定されるものではない。例えば、各デバイス10が更新前のバージョンのファームウェアのバックアップを保持する場合は、サーバ20は、デバイスA0にファームウェアAF00を送信することなく、ファームウェアAF00を使用することを表す指示を送信してもよい。この場合、デバイスA0は、サーバ20からの指示に応じて、自身のファームウェアを更新前に状態に戻してもよい。或いは、各デバイス10が更新前のバージョンのファームウェアまたは更新後のバージョンのファームウェアを選択的に実行できる場合は、デバイスA0は、サーバ20からの指示に応じて、デバイスB0と接続するときにデバイスB0のファームウェアのバージョン情報を取得し、自身が実行すべきファームウェアのバージョンを選択してもよい。
【0041】
また、上述の実施例では、デバイスB0におけるファームウェアの更新が失敗したときに、サーバ20は、デバイスA0のファームウェアを更新前の状態に戻しているが、本発明の実施形態はこの構成に限定されるものではない。すなわち、デバイスB0のファームウェアBFと連携して動作できるファームウェアAFのバージョンが複数ある場合は、サーバ20は、任意のバージョンを選択してもよい。例えば、この実施例は、デバイスB0のファームウェアは、ロールバック処理により、ファームウェアBF00に戻っている。ここで、
図8に示すファームウェア依存関係情報によれば、ファームウェアAF00およびファームウェアAF01がファームウェアBF00と連携して動作できる。この場合、サーバ20は、ファームウェアAF00またはファームウェアAF01のいずれか一方をデバイスA0に送信すればよい。一例としては、サーバ20は、ファームウェアBF00と連携して動作できるファームウェアAFの中から、最新のバージョン(即ち、ファームウェアAF01)を選択してデバイスA0に送信してもよい。
【0042】
さらに、上述の実施例では、システムS0が2個のデバイス10を備えるが、本発明の実施形態は、システムS0が3個以上のデバイス10を備える構成にも適用される。この場合、1または複数のデバイス10においてファームウェアの更新が失敗したときに
図6または
図10に示すシーケンスが実行される。
【0043】
図11は、サーバ20の処理の一例を示すフローチャートである。なお、このフローチャートは、ファームウェアの更新および復旧に係わる手順を示している。
【0044】
S1において、配信部21は、各デバイス10にそれぞれ対応する更新用ファームウェアを配信する。この後、S2において、更新管理部22は、各デバイス10から送信されるメッセージを待ち受ける。そして、いずれかのデバイス10から更新失敗メッセージを受信したときは、サーバ20の処理はS3に進む。なお、すべてのデバイス10から受信成功メッセージおよび更新成功メッセージを受信したときには、サーバ20の処理は終了する。また、所定時間内にいずれかのデバイス10から受信成功メッセージを受信できなかったときには、サーバ20は、そのデバイス10に対して更新用ファームウェアの再送処理を実行してもよい。
【0045】
S3において、判定部23は、ファームウェアの更新に失敗したデバイス10と同じシステムに属するデバイス10を検出する。このとき、判定部23は、
図2に示す構成管理情報を参照する。
図5または
図9に示す実施例では、デバイスB0においてファームウェアの更新が失敗したときに、システムS0に属するデバイスA0が検出される。
【0046】
S4~S5において、判定部23は、ファームウェアの更新に失敗したデバイス10に実装されているファームウェアとS3で検出したデバイス10に実装されているファームウェアとの間の依存関係を確認する。具体的には、判定部23は、
図8に示すファームウェア依存関係情報を参照し、これらのファームウェアが連携して動作できるか否かを判定する。この結果、問題がなければ、サーバ20の処理は終了する。
【0047】
上述した複数のファームウェアが連携して動作できないときは、S6において、復旧処理部24は、複数のファームウェアが連携して動作できるように、1または複数のデバイス10に実装すべきファームウェアのバージョンを決定する。一例としては、復旧処理部24は、システムS0がS1のファームウェア配信の前の状態に戻るように、1または複数のデバイス10に実装すべきファームウェアのバージョンを決定する。そして、配信部21は、復旧処理部24が選択したバージョンのファームウェアを対応するデバイス10に送信する。
【0048】
S7において、対応するデバイス10から更新成功メッセージを受信すると、サーバ20の処理は終了する。ただし、所定時間内に対応するデバイス10から更新成功メッセージを受信できなかったときは、サーバ20は、S8において、異常通知を出力する。異常通知は、例えば、マルチデバイスシステム1のユーザまたは管理者の端末装置に表示される。
【0049】
このように、本発明の実施形態に係わるファームウェア管理装置(実施例では、サーバ20)は、システムを構成する複数のデバイスのうちの一部のデバイスにおいてファームウェアの更新が失敗したときに、ファームウェアの更新に成功したデバイスのファームウェアのバージョンを変更することで、システムを構成する複数のデバイスが連携して動作できるようにする。一例としては、ファームウェアの更新に成功したデバイスにおいて、ファームウェアのバージョンを更新前の状態に戻す。これにより、システム全体としての動作を継続させることが可能になる。
【0050】
なお、サーバ20が複数のシステムS0~Snを管理するときには、1つのシステムで実行した更新手順を他のシステムに適用してもよい。例えば、
図1に示すシステムS0およびシステムS1が互いに実質的に同じ構成であるものとする。そして、システムS0において
図5~
図6に示す手順が行われたものとする。すなわち、システムS0において、デバイスA0のファームウェアはAF00からAF01に更新されるが、デバイスB0のファームウェアは元のままである。この場合、サーバ20は、システムS1において、デバイスB0に更新用ファームウェアを送信する必要はない。或いは、システムS0において
図9~
図10に示す手順が行われた場合には、デバイスA0およびデバイスB0のファームウェアはいずれも元のバージョンに戻ることになる。したがって、この場合、サーバ20は、システムS1に対して、ファームウェアの更新処理を実行しない。これにより、不要な更新手順を回避または抑制できる。
【0051】
<ハードウェア構成>
図12は、ファームウェア管理装置(実施例では、サーバ20)のハードウェア構成の一例を示す。ファームウェア管理装置は、プロセッサ101、メモリ102、記憶装置103、入出力デバイス104、記録媒体読取り装置105、および通信インタフェース106を備えるコンピュータ100により実現される。
【0052】
プロセッサ101は、記憶装置103に保存されているファームウェア更新プログラムを実行することにより、配信部21、更新管理部22、判定部23、および復旧処理部24の機能を提供する。ファームウェア更新プログラムは、
図11に示すフローチャートの手順を記述したプログラムコードを含む。メモリ102は、プロセッサ101の作業領域として使用される。記憶装置103は、上述したファームウェア更新プログラムおよび他のプログラムを保存する。また、記憶装置103は、
図1に示す保存部25として使用される。
【0053】
入出力デバイス104は、キーボード、マウス、タッチパネル、マイクなどの入力デバイスを含む。また、入出力デバイス104は、表示装置、スピーカーなどの出力デバイスを含む。記録媒体読取り装置105は、記録媒体110に記録されているデータおよび情報を取得できる。記録媒体110は、コンピュータ100に着脱可能なリムーバブル記録媒体である。また、記録媒体110は、例えば、半導体メモリ、光学的作用で信号を記録する媒体、または磁気的作用で信号を記録する媒体により実現される。なお、ファームウェア更新プログラムは、記録媒体110からコンピュータ100に与えられてもよい。通信インタフェース106は、ネットワークに接続する機能を提供する。なお、ファームウェア更新プログラムがプログラムサーバ120に保存されているときは、コンピュータ100は、プログラムサーバ120から制御プログラムを取得してもよい。
【符号の説明】
【0054】
1 マルチデバイスシステム
10 デバイス
20 サーバ
21 配信部
22 更新管理部
23 判定部
24 復旧処理部
25 保存部
100 コンピュータ
101 プロセッサ