(57)【特許請求の範囲】
【請求項１】
それぞれ対応するプログラムモジュールによって制御される複数の電子デバイスを備え、当該複数の電子デバイスのプログラムモジュールを更新する機能を有する電子機器であって、
外部より入力され前記複数の電子デバイスのプログラムモジュールを更新するための更新用プログラムモジュールを記憶する更新情報記憶手段と、
前記複数の電子デバイスそれぞれについて、前記プログラムモジュールの現在のバージョン情報と、前記更新情報記憶手段に記憶された前記更新用プログラムモジュールのバージョン情報とを比較して、更新対象となる電子デバイスを特定する更新対象特定手段と、
前記更新対象特定手段により特定された電子デバイスをグループ分けすると共にグループ間の更新順序を設定し、次いで各グループに含まれる電子デバイスのグループ内更新順序を設定し、これにより更新対象となる全ての電子デバイスについて更新順序を設定した更新順序テーブルを生成する更新順序設定手段と、
前記更新対象となる前記電子デバイスのプログラムモジュールを、前記設定された更新順序テーブルの更新順序に従って、前記更新情報記憶手段に記憶されている更新用プログラムモジュールによりそれぞれ更新する更新実行手段と、
を備え、
前記複数の電子デバイスは、プログラムモジュールを読み込むことにより論理回路の書き換えが可能なプログラマブル集積回路と、論理回路の書き換えが不可能な非プログラマブル集積回路とをそれぞれ少なくとも１つ含み、
前記更新順序設定手段は、前記プログラマブル集積回路を同一のグループとし、且つ当該グループの更新順序を他のグループより先の更新順序にする電子機器。
【請求項２】
請求項１記載の電子機器であって、
前記更新順序設定手段は、電子機器全体を統括制御する前記非プログラマブル集積回路と、当該非プログラマブル集積回路と同一機器内で接続され、前記プログラマブル集積回路以外の電子デバイスとを、同一のグループにする電子機器。
【請求項３】
請求項２記載の電子機器であって、
前記電子機器全体を統括制御する非プログラマブル集積回路がリブートにより更新がなされる非プログラマブル集積回路であり、当該非プログラマブル集積回路と同一機器内で接続され電子デバイスが単独で内部リセット可能な非プログラマブル集積回路であり、
前記更新順序設定手段は、前記電子機器全体を統括制御する非プログラマブル集積回路の更新順序をグループ内において最後にする電子機器。
【請求項４】
請求項１〜請求項３のいずれか一項記載の電子機器であって、
前記プログラマブル集積回路がＦＰＧＡ（Field-Programmable Gate Array）であり、前記非プログラマブル集積回路がＣＰＵ（Central Processing Unit）である電子機器。
【請求項５】
請求項１〜請求項４のいずれか一項記載の電子機器であって、
前記更新順序設定手段は、更新順序の設定において、次の更新対象となる電子デバイスのグループが、当該グループの前の更新対象である電子デバイスのグループと異なる場合に、前記グループ同士の間にリブートを設定する電子機器。
【請求項６】
請求項１〜請求項５のいずれか一項記載の電子機器であって、
前記更新順序テーブルは、前記電子機器の構成の変更に応じて書き換え可能とされている電子機器。
【請求項７】
請求項１〜請求項６のいずれか一項記載の電子機器であって、
前記更新順序設定手段によって設定された更新順序に基づく更新手順を表示する表示手段を備えた電子機器。
【請求項８】
請求項１〜請求項７のいずれか一項記載の電子機器が内視鏡装置である電子機器。
【請求項９】
それぞれ対応するプログラムモジュールによって制御される複数の電子デバイスを備える電子機器の、当該複数の電子デバイスの少なくとも１つのプログラムモジュールを更新するプログラムモジュール更新方法であって、
前記複数の電子デバイスそれぞれについて、前記プログラムモジュールの現在のバージョン情報と、当該プログラムモジュールを更新するための更新用プログラムモジュールのバージョン情報とを比較して、更新対象となる電子デバイスを特定する更新対象特定ステップと、
前記更新対象特定ステップにより特定された電子デバイスをグループ分けすると共にグループ間の更新順序を設定し、次いで各グループに含まれる電子デバイスのグループ内更新順序を設定し、これにより更新対象となる全ての電子デバイスについて更新順序を設定する更新順序設定ステップと、
前記更新対象となる前記電子デバイスのプログラムモジュールを、前記設定された更新順序に従って、前記更新用プログラムモジュールによりそれぞれ更新する更新実行ステップと、を備え、
前記複数の電子デバイスは、プログラムモジュールを読み込むことにより論理回路の書き換えが可能なプログラマブル集積回路と、論理回路の書き換えが不可能な非プログラマブル集積回路とをそれぞれ少なくとも１つ含み、
前記更新順序設定ステップは、前記プログラマブル集積回路を同一のグループとし、且つ当該グループの更新順序を他のグループより先の更新順序にするプログラムモジュール更新方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器、及び電子機器のプログラムモジュール更新方法に関する。
【背景技術】
【０００２】
電子機器には、ハードウェアの基本的な制御を行うファームウェアが組み込まれており、新たな機能の追加や、不具合の修正は、ファームウェアのバージョンアップで実現されている。一般にファームウェアは、複数のプログラムモジュールで構成されており、これら各プログラムモジュールは、それぞれ個別に改変されてバージョン情報で管理されている。このようなプログラムモジュールをバージョンアップする際、システムの１回又は複数回のリブート処理を伴う。このリブートの前後で情報の逸脱が生じることや、多大な更新時間を要することを改善する技術が、例えば特許文献１、２に記載されている。
【０００３】
プログラムモジュールのバージョンアップは、上記のような改善を行うことも大切であるが、プログラムモジュールの更新手順を簡略化すると共に、操作者の誤操作によるバージョンアップの失敗を回避することも大切である。
電子機器のプログラムやデータ等をバージョンアップする作業を使用者に実施させることは、使用者への労力の負担が大きい。また、使用者が適切な手順でバージョンアップの処理を行わないと、処理の途中でバージョン間に不整合を生じ、正しくアップデートできなくなる虞もある。そのため、複数のプログラムモジュールから、バージョンアップの対象となるプログラムモジュールを特定し、情報量や重要度に応じて各プログラムモジュールを順番にアップデートするアップデート方法が特許文献３に提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−８６５６９号公報
【特許文献２】特開２００５−１９０３０８号公報
【特許文献３】特開２００６−２２７８７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献３のアップデート方法では、電子機器の構成に変更がない場合に効率良くアップデートが行えるが、何らかの変更があった場合には各プログラムモジュールのバージョンアップ順序を電子機器の構成に応じて再設定する必要がある。このバージョンアップ順序の再設定は手動で行うことになるため、使用者が機器構成に精通していない場合には、バージョンアップを間違った手順で実施する虞が生じる。また、電子機器の製造者側からスタッフを派遣してバージョンアップ処理を行わせることも考えられるが、その場合でもバージョンアップを頻繁に行う場合や、電子機器が遠隔地にある場合にはコスト高となり、効率良く適切にバージョン管理を行うことが困難となる。
【０００６】
本発明は、機器構成に変更があった場合でも、その機器構成に応じた各プログラムモジュールの適切な更新順序を自動設定し、効率良く適正にプログラムモジュールの書き換えができる電子機器、及び電子機器のプログラムモジュール更新方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は下記構成からなる。
（１）  それぞれ対応するプログラムモジュールによって制御される複数の電子デバイスを備え、当該複数の電子デバイスのプログラムモジュールを更新する機能を有する電子機器であって、
外部より入力され前記複数の電子デバイスのプログラムモジュールを更新するための更新用プログラムモジュールを記憶する更新情報記憶手段と、
前記複数の電子デバイスそれぞれについて、前記プログラムモジュールの現在のバージョン情報と、前記更新情報記憶手段に記憶された前記更新用プログラムモジュールのバージョン情報とを比較して、更新対象となる電子デバイスを特定する更新対象特定手段と、
前記更新対象特定手段により特定された電子デバイスをグループ分けすると共にグループ間の更新順序を設定し、次いで各グループに含まれる電子デバイスのグループ内更新順序を設定し、これにより更新対象となる全ての電子デバイスについて更新順序を設定した更新順序テーブルを生成する更新順序設定手段と、
前記更新対象となる前記電子デバイスのプログラムモジュールを、前記設定された更新順序テーブルの更新順序に従って、前記更新情報記憶手段に記憶されている更新用プログラムモジュールによりそれぞれ更新する更新実行手段と、
を備え、
前記複数の電子デバイスは、プログラムモジュールを読み込むことにより論理回路の書き換えが可能なプログラマブル集積回路と、論理回路の書き換えが不可能な非プログラマブル集積回路とをそれぞれ少なくとも１つ含み、
前記更新順序設定手段は、前記プログラマブル集積回路を同一のグループとし、且つ当該グループの更新順序を他のグループより先の更新順序にする電子機器。
（２）  それぞれ対応するプログラムモジュールによって制御される複数の電子デバイスを備える電子機器の、当該複数の電子デバイスの少なくとも１つのプログラムモジュールを更新するプログラムモジュール更新方法であって、
前記複数の電子デバイスそれぞれについて、前記プログラムモジュールの現在のバージョン情報と、当該プログラムモジュールを更新するための更新用プログラムモジュールのバージョン情報とを比較して、更新対象となる電子デバイスを特定する更新対象特定ステップと、
前記更新対象特定ステップにより特定された電子デバイスをグループ分けすると共にグループ間の更新順序を設定し、次いで各グループに含まれる電子デバイスのグループ内更新順序を設定し、これにより更新対象となる全ての電子デバイスについて更新順序を設定する更新順序設定ステップと、
前記更新対象となる前記電子デバイスのプログラムモジュールを、前記設定された更新順序に従って、前記更新用プログラムモジュールによりそれぞれ更新する更新実行ステップと、を備え、
前記複数の電子デバイスは、プログラムモジュールを読み込むことにより論理回路の書き換えが可能なプログラマブル集積回路と、論理回路の書き換えが不可能な非プログラマブル集積回路とをそれぞれ少なくとも１つ含み、
前記更新順序設定ステップは、前記プログラマブル集積回路を同一のグループとし、且つ当該グループの更新順序を他のグループより先の更新順序にするプログラムモジュール更新方法。
【発明の効果】
【０００８】
本発明によれば、機器構成に変更があった場合でも、その機器構成に応じた各プログラムモジュールの適切な更新順序を自動設定することで、効率良く適正にプログラムモジュールの書き換えが行える。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態を説明するための図で、内視鏡及び内視鏡が接続される各装置を表す内視鏡装置の構成図である。
【図２】内視鏡装置の具体的な構成例を示す外観図である。
【図３】バージョン情報の一例を示す説明図である。
【図４】更新情報の一例を示す説明図である。
【図５】バージョンアップの様子を示す説明図である。
【図６】バージョンアップ処理を行う手順を示すフローチャートである。
【図７】グループ分けされたプログラムモジュールの情報を示す説明図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
図１は本発明の実施形態を説明するための図で、内視鏡装置の構成を概略的に示すブロック図であり、図２は内視鏡装置の具体的な構成例を示す外観図である。
内視鏡装置１００は、図１に示すように、プロセッサ１１と、プロセッサ１１に接続された内視鏡スコープ１３と、観察画像等の情報を表示するモニタ１５と、プロセッサ１１に接続されたキーボード等の入力部１７とを有する。
【００１１】
図２に示すように、内視鏡スコープ１３は、本体操作部１９と、この本体操作部１９に連設され被検体（体腔）内に挿入される挿入部２１と、本体操作部１９から延設され先端にコネクタ２３が設けられたユニバーサルコード２５とを備える。ユニバーサルコード先端のコネクタ２３は、プロセッサ１１に着脱自在に接続されて、各種信号が入出力される。
【００１２】
本体操作部１９には、挿入部２１の先端側で吸引、送気、送水を実施するための送気送水ボタン、撮像時のシャッターボタン等の各種操作ボタン２７や、アングルノブ３５等が設けられている。
【００１３】
挿入部２１は、本体操作部１９側から順に軟性部２９、湾曲部３１、内視鏡先端部３３で構成される。湾曲部３１は、本体操作部１９のアングルノブ３５を回転することによって遠隔的に湾曲操作され、これにより内視鏡先端部３３を所望の方向に向けることができる。
【００１４】
内視鏡先端部３３には、撮像光学系の観察窓が配置される。観察窓の内部には、ＣＣＤ(Charge Coupled Device）型イメージセンサや、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）型イメージセンサ等の撮像素子３７と、観察画を撮像素子３７に結像させるレンズ３９とが配置される。
【００１５】
上記構成の内視鏡装置１００は、複数の電子デバイスのプログラムモジュールを、準備された更新用のプログラムモジュールに書き換えする機能を有する。
【００１６】
図１に示すように、内視鏡スコープ１３には、所望の観察画像を得るための撮像素子３７、操作ボタン２７等が設けられ、操作ボタン２７からの入力信号を受け付けるＣＰＵ３等の電子デバイスを有する。ＣＰＵ３は、ＣＰＵ３を動作させるファームウェアであるプログラムモジュールを格納するためのＲＯＭ４１を備えている。
【００１７】
プロセッサ１１における撮像光学系と関係する回路は、回路基板Ｓ１、回路基板Ｓ２、及び回路基板Ｓ２に接続される更新情報入力部４３とを有して構成される。
【００１８】
回路基板Ｓ１は、駆動信号を撮像素子３７に出力するセンサ駆動ＦＰＧＡ（Field-Programmable Gate Array）４５と、センサ駆動ＦＰＧＡ４５を制御するＣＰＵ１が実装されている。センサ駆動ＦＰＧＡ４５はプログラムモジュールを格納するＲＯＭ４７を備え、ＣＰＵ１もプログラムモジュールを格納するＲＯＭ４９を備える。ＦＰＧＡは、プログラムモジュールを読み込むことにより論理回路の書き換えが可能なプログラマブル集積回路であり、ＣＰＵは、論理回路の書き換えが不可能な非プログラマブル集積回路である。
【００１９】
ＣＰＵ１は、内視鏡スコープ１３側のＣＰＵ３にユニバーサルコード２５（図２参照）を通じてシリアル接続されており、センサ駆動ＦＰＧＡ４５とは同一の回路基板内でパラレル接続されている。また、ＣＰＵ１は回路基板Ｓ２に実装されたＣＰＵ２とシリアル接続されている。ＣＰＵ１は、センサ駆動ＦＰＧＡ４５に撮像素子３７への制御信号を出力すると共に、操作ボタン２７からの入力による制御信号が入力される。
【００２０】
回路基板Ｓ２は、内視鏡を統括制御するプロセッサ１１のメインＣＰＵであるＣＰＵ２と、映像入力ＦＰＧＡ５１と、画像処理ＦＰＧＡ５３と、記憶手段であるメモリ５５が実装されている。ＣＰＵ２はＲＯＭ５７、映像入力ＦＰＧＡ５１はＲＯＭ５９、画像処理ＦＰＧＡ５３はＲＯＭ６１、をそれぞれ備え、それぞれのＲＯＭにそれぞれのプログラムモジュールが格納される。メモリ５５には、外部より入力され、複数の電子デバイスそれぞれに対する更新用のプログラムモジュールが記憶される。
【００２１】
ＣＰＵ２は、上記プロセッサ１１、内視鏡スコープ１３に搭載される複数のＣＰＵ、ＦＰＧＡを制御して、後述するように更新順序設定手段、更新実行手段として機能する。このＣＰＵ２は、内視鏡装置１００の操作者による操作に応じて、所望の内視鏡観察画像をモニタ１５に出力させる。各ＣＰＵ，ＦＰＧＡが備えるＲＯＭには、それぞれデバイスに対応するプログラムモジュールが格納されており、入力された命令信号に応じて所望の機能を実現するようになっている。また、ＣＰＵ２は、更新情報入力部４３を通じて後述する記憶媒体６３等の更新情報を読み出して、各電子デバイスのプログラムモジュールを更新する。
【００２２】
次に、各電子デバイスに格納されるプログラムモジュールを、新たに供給される新バージョンのプログラムモジュールに更新する手順について説明する。
各電子デバイスのプログラムモジュールは、バージョン情報に基づいて管理されており、各電子デバイスに現在格納されているプログラムモジュールのバージョンは、メモリ５５にバージョン情報として記憶されている。図３はバージョン情報の一例を示す。ＣＰＵ２は、メモリ５５からバージョン情報を参照することで、各電子デバイスに格納されたプログラムモジュールのバージョン、即ち、モジュールの機能や仕様を常に正確に把握できるようになっている。
【００２３】
内視鏡装置１００における各プログラムモジュールを、新バージョンのプログラムモジュールに更新する場合、使用者は、プロセッサ１１の更新情報入力部４３に、コンパクトフラッシュ（登録商標）、ＳＤカード等の各種メモリカードや、ハードディスク、光ディスク、磁気テープ等の各種ストレージ装置等の記憶媒体６３を挿入する。そして、ＣＰＵ２が記憶媒体６３に記憶された更新情報を読み出し、この読み出された更新情報をメモリ５５に一旦記憶させる。その後、ＣＰＵ２は各電子デバイスのＲＯＭを必要に応じて書き替える。これにより、内視鏡装置１００への新規機能の搭載や、不具合の解消が行える。なお、更新情報は、記憶媒体６３に限らず、ネットワーク６５を通じて配信する構成であってもよい。
【００２４】
図４に更新情報の一例を示す。ＣＰＵ２は、図３に示す現在のバージョン情報と、更新情報のバージョン情報とを比較して、バージョンナンバーが下位となる旧バージョンのモジュールを、上位となる新バージョンのモジュールに選択的に更新する。つまり、図５にバージョンアップの様子を示すように、ＣＰＵ２は、更新情報であるバージョンアップキットに記憶された各モジュールのバージョンナンバーと、現在の各モジュールのバージョンナンバーとを比較して、現在のモジュールのバージョンナンバーが低い場合に新バージョンのモジュールが提供されたと判定し、そのモジュールを新バージョンのモジュールに更新する。また、比較の結果、現在のバージョンナンバーと同じであった場合は、そのモジュール（図示例では存在せず）を更新せずに、そのままとする。
【００２５】
次に、各モジュールのバージョンアップを行う順序の決定方法について説明する。
旧バージョンのプログラムモジュールを新バージョンのプログラムモジュールに更新する場合、内視鏡装置１００に搭載されたＣＰＵ、ＦＰＧＡのそれぞれに対して個別に更新処理を行う必要がある。しかし、実際に使用されている内視鏡装置の機器構成は、内視鏡スコープやプロセッサの種類が多種多様であり、組み合わせによって回路構成が異なれば、更新用のプログラムモジュールの格納箇所も異なる。そのため、機器のメーカ側から更新情報が提供されても、各内視鏡装置に対して一律に更新順序を設定することはできない。つまり、内視鏡装置毎に異なる更新順序を設定する必要がある。
【００２６】
具体的には、プログラムモジュールに追加機能が存在する場合、プログラムモジュールを呼び出す側と、呼び出される側とでは更新順序の制約がある。例えば、基板上にＣＰＵとＦＰＧＡが実装され、ＣＰＵがＦＰＧＡを制御する構成において、新規機能としてＩ／Ｆが増加する場合、ＦＰＧＡのプログラムモジュールを先に更新してからＣＰＵのプログラムモジュールを更新する必要がある。逆の手順で更新した場合には、ＣＰＵは、搭載していないＩ／ＦでＦＰＧＡを制御する動作となり、予期しない不具合が起きる可能性がある。
【００２７】
さらに、ＦＰＧＡはコンフィグレーション後に動作するものであるため、バージョンアップを行う際は、プログラムモジュールの書き換え後にコンフィグレーションを実施する必要がある。ＣＰＵの場合は、書き換え対象ＣＰＵのプログラムモジュールが更新後に参照できなくなるため、プログラムモジュールを他のＲＡＭ上に一旦退避させてから書き換え等の動作を行う必要があり、リセットやリブート処理を要する。
【００２８】
そのため、プログラムモジュールのバージョンアップを行う際は、変更が必要となるプログラムモジュールを特定し、この特定された各プログラムモジュールの主従関係や、リブートの有無等を加味して更新順序を決定することが必要となる。
【００２９】
本内視鏡装置１００においては、プログラムモジュールの適切な更新順序を自動的に設定し、設定された更新順序で更新処理を実行する機能を有している。以下に、プログラムモジュールの更新処理として、バージョンアップを行う手順を図６に示すフローチャートを用いて詳細に説明する。
【００３０】
まず、内視鏡装置１００の操作者は、記憶媒体６３やネットワーク６５を介して更新情報を更新情報入力部４３に入力する（Ｓｔ．１）。ＣＰＵ２は、更新情報入力部４３に更新情報が入力されると、この更新情報をメモリ５５に取り込む。
【００３１】
ＣＰＵ２は、メモリ５５に予め記憶された現在の各プログラムモジュールのバージョン情報（図３参照）と、更新情報のバージョン情報（図４参照）とを比較して、前述したように更新が必要となる更新対象のプログラムモジュールを特定する（Ｓｔ．２）。図３，図４に示す情報内容の場合、更新対象となるプログラムモジュールは、モジュール１〜６であるが、更新しないプログラムモジュールが混在する場合は、これを更新対象から外せばよい。
【００３２】
次に、特定された更新対象のプログラムモジュールを、内視鏡装置１００の機器構成に応じてグループ分けする（Ｓｔ．３）。グループ分けは、次のルールに従って行う。
【００３３】
（Ａ１）更新の際にコンフィグレーションを実施するＦＰＧＡ等のプログラマブル集積回路を同一グループとする。
このルールによれば、センサ駆動ＦＰＧＡ４５、映像入力ＦＰＧＡ５１、画像処理ＦＰＧＡ５３が同一グループとなる。このグループをグループＡとする。
【００３４】
（Ａ２）システム全体を統括制御する非プログラマブル集積回路（ここではＣＰＵ２）と、このＣＰＵ２と同一機器内で接続され、プログラマブル集積回路以外の電子デバイスを同一グループとする。
このルールによれば、ＣＰＵ２と接続される電子デバイスとして、センサ駆動ＦＰＧＡ４５，映像入力ＦＰＧＡ５１，画像処理ＦＰＧＡ５３，ＣＰＵ１が同一のグループ候補として挙げられるが、センサ駆動ＦＰＧＡ４５，映像入力ＦＰＧＡ５１，画像処理ＦＰＧＡ５３は既にグループＡに登録されているため除外する。その結果、ＣＰＵ１とＣＰＵ２が同一グループとなる。このグループをグループＢとする。
【００３５】
そして、ＣＰＵ３はＣＰＵ１とシリアル接続されており、ＣＰＵ１、ＣＰＵ２とは着脱可能な別の筐体となる。よって、残りの電子デバイスであるＣＰＵ３をグループＣとする。
【００３６】
上記のグループ分け処理により、図７に示すように更新対象となる電子デバイスは下記の３つのグループに分類される。
・グループＡ：センサ駆動ＦＰＧＡ４５，映像入力ＦＰＧＡ５１，画像処理ＦＰＧＡ５３
・グループＢ：ＣＰＵ１，ＣＰＵ２
・グループＣ：ＣＰＵ３
【００３７】
次に、ＣＰＵ２は、各グループ内に複数の電子デバイスが存在する場合に、各電子デバイスのグループ内更新順序を設定する（Ｓｔ．４）。
グループ内の更新順序は、次のルールに従って設定する。
（Ｂ１）単独で内部リセット可能なＣＰＵを、リブートが必要なＣＰＵより先の更新順序に設定する。
つまり、グループＢにおいては、ＣＰＵ２とは異なる基板に実装されて、単独で内部リセット可能なＣＰＵ１を、回路全体のリブートが必要なＣＰＵ２より先の更新順序に設定する。これにより、リブートの回数を最小化でき、更新時間を短縮化できる。
【００３８】
グループＡにおいては、特に更新順序を規定されることはない。ここでは映像信号の伝送下流側から、画像処理ＦＰＧＡ５３，映像入力ＦＰＧＡ５１，センサ駆動ＦＰＧＡ４５の順番に設定しているが、それぞれの更新は同時であってもよい。
【００３９】
次に、ＣＰＵ２は、各グループ間でグループ単位の更新順序を設定する（Ｓｔ．５）。
グループ単位の更新順序は、次のルールに従って設定する。
（Ｃ１）プログラマブル集積回路（ＦＰＧＡ）に対しては、ＦＰＧＡに命令信号を入力する非プログラマブル集積回路（ＣＰＵ）より先の更新順序に設定する。
つまり、グループＡを、グループＢ，Ｃより先の更新順序に設定する。
【００４０】
（Ｃ２）システム全体を統括制御する非プログラマブル集積回路（ここではＣＰＵ２）とは異なるグループの非プログラマブル集積回路（ＣＰＵ）は、更新にリブートを要するので、統括制御する非プログラマブル集積回路（ここではＣＰＵ２）のグループを、異なるグループの非プログラマブル集積回路（ＣＰＵ）より先の更新順序に設定する。
つまり、ＣＰＵ２を含むグループＢは、グループＢとは異なりＣＰＵ３を含むグループＣより先の更新順序に設定する。
【００４１】
（Ｃ３）次の更新対象となる電子デバイスのグループが、当該グループの前の更新対象である電子デバイスのグループと異なる場合に、グループ同士の間にリブートを設定する。
【００４２】
以上より、各電子デバイスのプログラムモジュールの更新順序は次の通りになる。なお、リブート処理は、グループ内全ての書き込みの必要がない場合には省略する。
【００４３】
（１）グループＡ：画像処理ＦＰＧＡ５３
（２）グループＡ：映像入力ＦＰＧＡ５１
（３）グループＡ：センサ駆動ＦＰＧＡ４５
＜リブート＞
（４）グループＢ：ＣＰＵ１
（５）グループＢ：ＣＰＵ２
＜リブート＞
（６）グループＣ：ＣＰＵ３
【００４４】
内視鏡装置１００は、図７に示すグループ内更新順序、グループ単位更新順序の登録された更新順序テーブルであるルックアップテーブル（ＬＵＴ）をメモリ５５に保存し、このＬＵＴの順序に従ってプログラムモジュールを更新する。
【００４５】
そして、ＣＰＵ２は、設定した更新順序をモニタ１５に出力して、内視鏡装置１００の操作者に通知する。これにより、操作者へのガイダンスが行われる（Ｓｔ．６）。操作者はモニタ１５に表示されたガイダンスに従って、バージョンアップ処理を開始する（Ｓｔ．７）。このバージョンアップ処理は、自動で実施することが望ましいが、ステップ毎に手動で実施して、逐次確認しながら実施することであってもよい。また、進捗に合わせて、機器全体の電源ON/OFF等の操作者に必要な操作を指示する構成としてもよい。
【００４６】
例えば、ＣＰＵ２は、更新するプログラムモジュールをモニタ１５にリスト表示させ、操作者に書き換え開始の指示を入力させる。開始指示の入力がされると、プログラムモジュールの書き換えを開始すると共に、現在どのプログラムモジュールの書き換えを実施しているのかをモニタ表示色を変化させる等、視覚的に判別できるようにする。一つのプログラムモジュールの書き換えが完了すると一時停止し、操作者からの開始指示待ちにして、開始指示の入力があったときに、次のプログラムモジュールの書き換えを開始する。
【００４７】
以上説明した内視鏡装置１００は、プログラムモジュールの更新を行う際、更新が必要となるプログラムモジュールを、予めメモリ５５に記憶された現在のプログラムモジュールのバージョン情報と更新用プログラムモジュールのバージョン情報とを比較して特定する。内視鏡装置１００は、プログラムモジュールの更新が必要となる各電子デバイスを、内視鏡装置１００の機器構成に応じてグループ分けする。そして、予め定めたルールに従って、グループ単位の更新順序と、同一グループ内における更新順序とを設定し、各プログラムモジュールの最適な更新順序を決定する。
【００４８】
このため、他の異なる種類の内視鏡スコープ１３に付け替えたり、プロセッサ１１を入れ替えたりする等、内視鏡装置１００の電子デバイス構成に変更が生じても、変更後の機器構成に対する最適な更新順序に設定することができる。
【００４９】
上記構成によれば、内視鏡装置１００の操作者は、プログラムモジュールの更新の際、装置構成に応じた更新手順の検討を要することなく、内視鏡装置１００が自動的に決定した最適な更新順序でバージョンアップが行える。また、更新処理の所要時間を短縮でき、誤った操作手順で更新されることも未然に防止できる。
【００５０】
なお、今回の更新情報の更新処理を完了した後、次回の更新情報が更新情報入力部４３に入力されたとき、内視鏡装置１００の機器構成に変更がない場合には、メモリ５５に記憶された前回の更新順序テーブル（ＬＵＴ）を参照して、更新が必要となる各プログラムモジュールに対する更新順序を決定することができる。これによれば、更新順序を簡単に設定することができる。
【００５１】
上記例では、バージョンアップの処理を説明したが、更新内容によってはバージョンダウンを実施することもある。その場合、更新順序はバージョンアップの場合とは逆にする等、変更を要する。
即ち、バージョンアップ時のプログラムモジュールの更新順序とバージョンダウン時の更新順序とは異なるため、双方の更新を可能にするためには、予めバージョンアップとバージョンダウンのそれぞれに対して別々の更新順序テーブルを用意しておき、ＣＰＵ２がいずれかの更新順序テーブルを選択的に用いればよい。
【００５２】
また、更新順序テーブルには、個々の電子デバイスに導入済みのプログラムモジュールのバージョンが、導入予定のバージョンと同一、又は導入予定のバージョンより更に新しい場合に、その導入予定のバージョンに対しては更新をスキップさせる手順を加えてもよい。このように、各電子デバイスに導入済みのバージョン情報を参照して、更新順序テーブルを書き換えることで、無用な更新処理を行う必要がなくなる。
【００５３】
本発明は上記の実施形態に限定されるものではなく、実施形態の各構成を相互に組み合わせることや、明細書の記載、並びに周知の技術に基づいて、当業者が変更、応用することも本発明の予定するところであり、保護を求める範囲に含まれる。
【００５４】
以上の通り、本明細書には次の事項が開示されている。
（１）  プログラムモジュールによって制御される電子デバイスを複数含み、当該複数の電子デバイスのプログラムモジュールを更新する機能を有する電子機器であって、
外部より入力され前記複数の電子デバイスに対する更新用プログラムを記憶する更新情報記憶手段と、
前記複数の電子デバイスそれぞれについて、前記プログラムモジュールの現在のバージョン情報を、前記更新用プログラムにより更新されるプログラムモジュールのバージョン情報と比較し、更新対象となる電子デバイスを特定する更新対象特定手段と、
前記更新対象特定手段により特定された電子デバイスをグループ分けすると共にグループ間の更新順序を設定し、次いで各グループに含まれる電子デバイスのグループ内更新順序を設定し、これにより更新対象となる全ての電子デバイスについて更新順序を設定した更新順序テーブルを生成する更新順序設定手段と、
前記更新対象となる前記電子デバイスのプログラムモジュールを、前記設定された更新順序テーブルの更新順序に従って、前記更新情報記憶手段に記憶されている更新用プログラムによりそれぞれ更新する更新実行手段と、
を備えた電子機器。
この電子機器によれば、機器構成に変更があった場合でも、その機器構成に応じた各プログラムモジュールの適切な更新順序を更新順序テーブルに設定し、この更新順序テーブルの更新順序に従って、効率良く適正にプログラムモジュールの書き換えが行える。
【００５５】
（２）  （１）の電子機器であって、
前記複数の電子デバイスは、プログラムモジュールを読み込むことにより論理回路の書き換えが可能なプログラマブル集積回路と、論理回路の書き換えが不可能な非プログラマブル集積回路とをそれぞれ少なくとも１つ含む電子機器。
この電子機器によれば、互いに素子構造の異なるプログラム集積回路と非プログラム集積回路とが混在した場合でも、これらを適正なプログラムモジュールの更新順序に設定することができる。
【００５６】
（３）  （２）の電子機器であって、
前記更新順序設定手段は、前記プログラマブル集積回路を同一のグループとし、且つ当該グループの更新順序を他のグループより先の更新順序にする電子機器。
この電子機器によれば、プログラムモジュールを書き込んでも即時更新されないプログラマブル集積回路を先の更新順序に設定することで、次回リブート時にこれらを一度に纏めて、効率良くプログラムモジュールを更新させることができる。
【００５７】
（４）  （３）の電子機器であって、
前記更新順序設定手段は、電子機器全体を統括制御する前記非プログラマブル集積回路と、当該非プログラマブル集積回路と同一機器内で接続され、前記プログラマブル集積回路以外の電子デバイスとを、同一のグループにする電子機器。
この電子機器によれば、電子機器全体を統括制御する非プログラマブル集積回路と、その非プログラマブル集積回路と同一機器内で接続され、プログラマブル集積回路以外の電子デバイスとが同一グループとされる。例えば、上記非プログラマブル集積回路を含む電子機器本体とは異なる外部機器に搭載された電子デバイスは、別グループとなる。従って、電子機器本体側と、これに接続される外部電子機器とがそれぞれ別グループになり、効率良くプログラムモジュールを更新させることができる。
【００５８】
（５）  （４）の電子機器であって、
前記電子機器全体を統括制御する非プログラマブル集積回路がリブートにより更新がなされる非プログラマブル集積回路であり、当該非プログラマブル集積回路にパラレル接続され電子デバイスが単独で内部リセット可能な非プログラマブル集積回路であり、
前記更新順序設定手段は、前記電子機器全体を統括制御する非プログラマブル集積回路の更新順序をグループ内において最後にする電子機器。
この電子機器によれば、電子機器全体を統括制御する非プログラム集積回路のプログラムモジュールを最後に更新することで、更新されたプログラムモジュールの追加機能をエラーの発生なく有効にできる
【００５９】
（６）  （２）〜（５）のいずれか一つの電子機器であって、
前記プログラマブル集積回路がＦＰＧＡ（Field-Programmable Gate Array）であり、前記非プログラマブル集積回路がＣＰＵ（Central Processing Unit）である電子機器。
この電子機器によれば、ＦＰＧＡとＣＰＵとが混在する機器構成であっても、双方を区別してグループ分けすることで、更新順序を適正に設定することができる。
【００６０】
（７）  （１）〜（６）のいずれか一つの電子機器であって、
前記更新順序設定手段は、更新順序の設定において、次の更新対象となる電子デバイスのグループが、当該グループの前の更新対象である電子デバイスのグループと異なる場合に、前記グループ同士の間にリブートを設定する電子機器。
この電子機器によれば、更新順序のうち、異グループ間を跨ぐときに、リブートが設定されることで、各電子デバイスのプログラムモジュールを正常に更新できる。また、グループ分けして更新順序を設定するので、リブートの回数を最小限に留める制御がし易くなる。
【００６１】
（８）  （１）〜（７）のいずれか一つの電子機器であって、
前記更新順序テーブルは、前記電子機器の構成の変更に応じて書き換え可能とされている電子機器。
この電子機器によれば、電子機器の構成に変更があった場合でも、これに対応して更新順序を常に適正に書き換えることができる。
【００６２】
（９）  （１）〜（８）のいずれか一つの電子機器であって、
前記更新順序設定手段によって設定された更新順序に基づく更新手順を表示する表示手段を備えた電子機器。
この電子機器によれば、設定された更新順序が表示手段に表示されるので、操作者が容易に更新内容を把握できる。
【００６３】
（１０）  （１）〜（９）のいずれか一つの電子機器が内視鏡装置である電子機器。
この電子機器によれば、内視鏡スコープやプロセッサの入れ替えが行われた場合でも、適正なプログラムモジュールの更新順序が自動設定されるので、操作者の作業負担が軽減され、内視鏡装置の稼働状況に影響を及ぼすことなく、円滑にプログラムモジュールの更新が行える。
【００６４】
（１１）  プログラムモジュールによって制御される電子デバイスを複数含む電子機器の、当該複数の電子デバイスの少なくとも１つのプログラムモジュールを更新するプログラムモジュール更新方法であって、
前記複数の電子デバイスそれぞれについて、前記プログラムモジュールの現在のバージョン情報を、更新用プログラムにより更新されるプログラムモジュールのバージョン情報と比較し、更新対象となる電子デバイスを特定する更新対象特定ステップと、
前記更新対象特定ステップにより特定された電子デバイスをグループ分けすると共にグループ間の更新順序を設定し、次いで各グループに含まれる電子デバイスのグループ内更新順序を設定し、これにより更新対象となる全ての電子デバイスについて更新順序を設定する更新順序設定ステップと、
前記更新対象となる前記電子デバイスのプログラムモジュールを、前記設定された更新順序に従って、前記更新用プログラムによりそれぞれ更新する更新実行ステップと、
からなるプログラムモジュール更新方法。
このプログラムモジュールの更新方法によれば、機器構成に変更があった場合でも、更新対象となる全ての電子デバイスについて更新順序を設定し、この設定された更新順序に従って、電子デバイスのプログラムモジュールを更新することで、効率良く適正にプログラムモジュールの書き換えが行える。
【符号の説明】
【００６５】
１１  プロセッサ
１３  内視鏡スコープ
１５  モニタ
１７  入力部
１９  本体操作部
２７  操作ボタン
３７  撮像素子
４１  ＲＯＭ
４３  更新情報入力部
４５  センサ駆動ＦＰＧＡ
４７  ＲＯＭ
４９  ＲＯＭ
５１  映像入力ＦＰＧＡ
５３  画像処理ＦＰＧＡ
５５  メモリ
５７  ＲＯＭ
５９  ＲＯＭ
６１  ＲＯＭ
６３  記憶媒体
６５  ネットワーク
１００  内視鏡装置
Ｓ１  回路基板
Ｓ２  回路基板
【図１】
0005624943.tif 000002
【図２】
0005624943.tif 000003
【図３】
0005624943.tif 000004
【図４】
0005624943.tif 000005
【図５】
0005624943.tif 000006
【図６】
0005624943.tif 000007
【図７】
0005624943.tif 000008