図1に示すように、電子内視鏡10は、スコープ12、モニタ13、プロセッサ14等から構成される。
スコープ12は、被検者の体腔内に挿入される挿入部21や、スコープ12を操作するボタンスイッチやノブ等が設けられた操作グリップ22などからなる。
挿入部21は、可撓性で細長く、被検者の体腔内の形状に応じて自在に湾曲するように設けられている。また、挿入部21の先端付近には、医師の操作によって自在に湾曲動作する湾曲部23が設けられている。湾曲部23が湾曲動作することにより、挿入部21の最先端に位置する先端部24が、任意の観察部位の方向に的確に向けられる。
先端部24には、鉗子出口、送気送水口、吸引口、撮像ユニット等が設けられている。鉗子出口は、操作グリップ22に設けられた鉗子入口から挿通された鉗子等の処置具が露呈される。送気送水口からは、蒸留水や薬液、空気等が噴出され、吸引口からは、被検者の体液や送気送水口から噴出された蒸留水等が吸引される。また、撮像ユニットは、観察部位を照明する光源や、CCD型の撮像素子26(以下、単にCCDという。図2参照)、広角の撮像レンズ等からなり、先端部24の向けられた方向を中心に被検者の体腔内を撮像する。
操作グリップ22は、挿入部21が被検者の体腔内に挿通されるときに、医師によって把持され、送気送水口からの蒸留水等の噴出させる送気送水ボタン27や吸引口からの体液等の吸引させる吸引ボタン28等が操作される。また、操作グリップ22には、湾曲部23の湾曲動作を操作するアングルノブ29が設けられている。
さらに、操作グリップ22には、第1ボタンスイッチ31、第2ボタンスイッチ32、第3ボタンスイッチ33が設けられている。これらのボタンスイッチ31,32,33は、電子内視鏡10を用いる各医師が操作しやすいように、予め定められたいくつかの動作の中から任意の動作を割り当てることができるようになっている。ボタンスイッチ31,32,33に割り当てることができる動作としては、押圧操作されたときに静止画像を表示する「静止画像表示」、表示した静止画像を外部メモリに保存する「画像記録」、電子内視鏡10が撮像した観察部位の画像とともに、この画像から得られるデータ等を合成して表示するか否かを切り替える「データ表示切替」などが予め用意されている。
操作グリップ22から伸びるユニバーサルコード34は、コネクタ36を介してプロセッサ14に接続される。また、コネクタ36の近傍には、蒸留水等を送り込む送気送水口金や、吸引した体液等を排出する吸引口金等が設けられている。
プロセッサ14は、電子内視鏡10の電気的な動作を制御する。プロセッサ14は、撮像ユニットの動作を制御し、CCD26から出力される撮像信号をデジタルな画像データ37(以下、単に画像という。図2参照)に変換し、モニタ13に表示する。また、観察部位の画像37から観察部位に関するデータを算出したり、観察部位に照射する照明の光量や、送気送水ボタン27が押圧操作されたときに送気送水口から噴出させる蒸留水の分量等を制御する。同様に、前述のボタンスイッチ31,32,33に対する機能の割り当ても、プロセッサ14によって行われる。さらに、設定によっては、この観察部位に関するデータや検査日時,被検者の氏名といった情報を重畳してモニタ13に表示する場合もある。
また、プロセッサ14の前面には、メディアスロット38が設けられており、コンパクトフラシュメモリ39(以下、CFという。図2参照)等の着脱自在な記憶メディアが装着される。CF39には、検査時に撮像した画像や、検査日時や被検者氏名、検査所見等の検査に付随するデータ等の被検者データ41(図2参照)が記憶される。
さらに、プロセッサ14には、マウスやキーボードからなる操作部42(図2参照)が設けられており、ボタンスイッチ31,32,33への機能の割り当て等の電子内視鏡10の設定は、操作部42を用いて行われる。
図2に示すように、電子内視鏡10は、プロセッサ14内に、CPU46、画像処理部47、DRAM48、SRAM49(メモリ)、バックアップ電池51、FROM52等が設けられている。
CPU46は、プロセッサ14内の各部だけでなく、ボタンスイッチ31,32,33やCCD26等のスコープ12の各部や、モニタ13、操作部42、装着されたCF39等とシステムバス53を介して接続され、電子内視鏡10の動作を統括的に制御する。CF39のデータ入出力や、スコープ12等の動作様態は、CPU46によって制御される。
画像処理部47は、CCD26から出力されるアナログの撮像信号をデジタルな画像37に変換するとともに、取得した画像37に電子内視鏡10の設定に応じた種々の画像処理を施す。
DRAM48は、電子内視鏡10の動作で生じるデータを一時的に記憶する揮発性の作業用のメモリであり、電子内視鏡10に給電が開始されると、CPU46によってファームウェア57(後述)が展開されたり、画像処理部47が各種画像処理を行う際に生じるデータが一時的に記憶される。このDRAM48は、揮発性のメモリであるから、電子内視鏡10への給電が中止されると、DRAM48内のデータは破棄される。
SRAM49は揮発性のメモリであるが、電子内視鏡10への給電を中止した場合にも電力を供給し続けるバックアップ電池51が接続されており、不揮発性のメモリとして機能する。SRAM49には、電子内視鏡10の動作様態を定める設定パラメータ56(設定情報)が記憶される。この設定パラメータ56は、電子内視鏡10を使用する複数の医師が、各々に定めた第1〜第3ボタンスイッチ31,32,33の動作設定を示すパラメータの集まりであり、電子内視鏡10を使用する医師毎に対応するパラメータが読み出される。
FROM52は、電気信号により複数回の書き換えが可能となっているが、電子内視鏡10への給電を中止しても記憶した情報を保持する不揮発性のメモリであり、いわゆるフラッシュEEPROMである。FROM52には、ファームウェア57が記憶されている。
ファームウェア57は組み込みプログラムであり、電子内視鏡10の動作を制御する。ファームウェア57は、設定パラメータ56をSRAM49から読み出し、電子内視鏡10を使用する医師に応じて個々のボタンスイッチ31,32,33の動作割り当てを再現し、電子内視鏡10を動作させる。また、ファームウェア57は、不具合が修正される場合や、ボタンスイッチ31,32,33に割り当てることができる動作の追加する場合などに新しいバージョンへと更新される。ファームウェア57がバージョンアップされるときには、新しいバージョンのファームウェアそのものである更新データ58が導入され、FROM52内の旧バージョンのファームウェア57に上書きされる。なお、更新データ58は、CF39に記憶され、電子内視鏡10の外部から導入される。さらに、ファームウェア57は、電子内視鏡10を動作させるルーチンのほかに、ファームウェア57の更新時に参照される格納構造テーブル59を備えている。
格納構造テーブル59は、ファームウェア57が更新されるときに参照されるテーブルであり、設定パラメータ56内の各パラメータと、各パラメータを個々に識別するキーとを対応させるテーブルであり、図3に示すように、メインテーブル61と、メインテーブル61から参照される第1サブテーブル62とからなる。
メインテーブル61は、図3(A)に示すように、「データ型」、「サイズ」、「キー」、「キーオプション」、「オフセット」、「参照先」を一つのまとまりとした第1から第6の6個のフィールド63a〜63f(図では模式的に「行」で示している)が設けられている。
データ型には、1バイトの長さで文字を扱うCHAR型、4バイトの長さで符号付整数を扱うINT型、いくつかのパラメータをメンバとしたデータの集合を扱うGROUP型等がある。サイズは、各フィールドのデータ量であり、CHAR型の場合には1バイト、INT型の場合には4バイトの長さに定められている。また、GROUP型の場合のサイズは、各メンバのデータサイズの合計値となっている。
キーは数値であり、ファームウェア57のバージョンにかかわらず、設定パラメータ56内のパラメータのひとつひとつ(あるいは一つのグループに対して)に固有に定められている。また、キーオプションは、キーの具体的な扱いを定めるキーワードであり、ABSKEY、NOKEY、ADDKEY等がある。キーオプションがABSKEYと定められたフィールドでは、そのフィールドのキーは演算されずに設定パラメータ56内のパラメータと対応付けられる。また、NOKEYは、メインテーブル61から第1サブテーブル62を参照することが定められたフィールドに指定される。キーオプションがNOKEYと定められたフィールドでは、このフィールドのキーをそのまま設定パラメータ56内のパラメータと対応付けることなく、第1サブテーブル62に渡し、第1サブテーブル62の各フィールドで指定されたキー及びキーオプションに基づいて演算された後に、設定パラメータ56内のパラメータと対応付ける。また、ADDKEYは、第1サブテーブル62内のフィールドに指定されるキーオプションであり、キーオプションがADDKEYと定められたフィールドでは、メインテーブル62から渡されたキーに、第1サブテーブル62のフィールドで定められたキーを加算してから設定パラメータ56内のパラメータに対応付けられる。
また、オフセットは、各フィールドで扱うパラメータが格納されるメモリアドレスを、設定パラメータ56全体の先頭のメモリアドレスからの差分として示す。
メインテーブル61の第1フィールド63aは、電子内視鏡10を使用する第1の医師のIDナンバの格納様態と、固有のキー(0x50000)とを対応付ける。また、メインテーブル61の第2フィールド63bは、第1の医師が設定した第1〜第3ボタンスイッチ31,32,33の動作様態を指定するパラメータをグループとして扱い、このグループに固有のキー(0x50100)を対応付ける。また、メインテーブル61の第2フィールド63bは、第1〜第3ボタンスイッチ31,32,33の設定パラメータをグループとして扱うので、第1ボタンスイッチ31、第2ボタンスイッチ32、第3ボタンスイッチ33の動作様態を示すパラメータを個々に識別するために、第1サブテーブル62を参照することが定められている。
同様に、メインテーブル61の第3フィールド63c及び第4フィールド63dは、電子内視鏡10を使用する第2の医師のIDと、第2の医師の各ボタンスイッチ31,32,33の設定パラメータのグループに、各々固有のキーを対応付ける。また、メインテーブル61の第5フィールド63e及び第6フィールド63fは、第3の医師のIDと、第3の医師の各ボタンスイッチ31,32,33の設定パラメータのグループに、各々固有のキーを対応付ける。
第1サブテーブル62は、図3(B)に示すように、メインテーブル61と同様に、「データ型」、「サイズ」、「キー」、「キーオプション」、「オフセット」、「参照先」を一つのまとまりとした第1〜第3の3個のフィールド64a〜64cが設けられている。第1サブテーブル62は、メインテーブル61から参照され、メインテーブル61でグループとして扱われる第1〜第3ボタンスイッチ31,32,33の設定パラメータに、個々に、固有のキーを対応付ける。
第1サブテーブル62の第1フィールド64aは、メインテーブル61から渡されたキーに、この第1フィールド64aで指定するキー「0x1」を加算してえられる固有のキーを、第1ボタンスイッチ31の動作様態を示すパラメータに対応付ける。同様に、第1サブテーブル62の第2フィールド64bは、第2ボタンスイッチ32の動作様態を示すパラメータに固有のキーを対応付け、第3フィールド64cは、第3ボタンスイッチ33の動作様態を示すパラメータに固有のキーを対応付ける。
このように格納構造テーブル59を備えたファームウェア57の更新は、図4に示す手順で、自動的に行われる。まず、更新データ58を記憶したCF39がメディアスロット38に挿入され、ファームウェア57の更新が開始されると、更新前のファームウェア57は、自身の格納構造テーブル59にしたがって、SRAM49に記憶された設定パラメータ56をテキストファイル(以下、設定ファイルという)に書き出し保存する(情報読み出しステップ)。この後、CF39から更新データ58が読み出され、FROM52に書き込まれると、更新前のファームウェア57は、新しいファームウェア57a(図2参照)に更新される(ファームウェア更新ステップ)。こうしてファームウェアが更新されると、更新後のファームウェア57aは、更新前のファームウェア57によって保存された設定ファイルを参照し、更新前のファームウェア57と更新後のファームウェア57aとで共通する設定パラメータ56をSRAM49へ再格納する(情報再格納ステップ)。
SRAM49からの設定パラメータ56の書き出しは、図5に示す手順で行われる。まず、更新前のファームウェア57は、格納構造テーブル59のうちメインテーブル61を、第1フィールド63aから順に参照する。そして、参照したフィールドのオフセットやサイズにしたがって、設定パラメータ56が記憶された所定のメモリアドレスから指定のパラメータを読み出すとともに、読み出したパラメータにキーを対応付けてテキストファイルに書き出す。このとき、メインテーブル61に、第1サブテーブル62を参照することが指定されている場合には、メインテーブル61だけでなく、第1サブテーブル62の各フィールドの指定にしたがって、固有のキーを読み出したパラメータに対応付けて設定ファイルに書き出す。これをメインテーブル61の全フィールドについて繰り返すことで、設定パラメータ56を全て読み出され、読み出された設定パラメータ56内の各パラメータは、それぞれ固有のキーを対応付けて設定ファイルに記録される。
更新前のファームウェア57下では、図6に示すように、電子内視鏡10を使用する医師のIDと、各々の医師が設定した第1〜第3ボタンスイッチ31,32,33の設定が設定パラメータ56として記録されている。各ボタンスイッチ31,32,33には、前述のように、「不使用」か、「画像記録」,「静止画像表示」,「データ表示切替」の3種の動作のいずれかを割り当てることができるようになっており、これらの設定は、SRAM49上では、「不使用」はパラメータ「0」、「画像記録」はパラメータ「1」、「静止画像表示」はパラメータ「2」、「データ表示切替」はパラメータ「3」でそれぞれ表される。
また、設定パラメータ56の記録には、SRAM49上の所定アドレス(0x4000)から24バイト、3人分の医師の設定パラメータを記憶するメモリ領域が確保されており、メモリアドレス0x4000からメモリアドレス0x4007の8バイトの領域内に、医師IDが「0001」の第1の医師の設定したパラメータが、医師ID,第1ボタンスイッチ31の設定パラメータ、第2ボタンスイッチ32の設定パラメータ、第3ボタンスイッチ33の設定パラメータの順に記録される。また、これに続くメモリアドレス0x4008からメモリアドレス0x4009の8バイトの領域内に、医師IDが「0002」の第2の医師の設定したパラメータが記録される。医師IDが「0003」の第3の医師以降についても同様である。なお、医師ID、及びこの医師IDの設定パラメータが設定されていない場合には、SRAM49上に確保されたメモリ領域には、医師IDは「0000」、各ボタンスイッチの設定は「0」の初期値が記録されている。
このように、更新前のファームウェア57下で設定パラメータ56が記録されているときに、ファームウェアの更新を開始すると、図7に示すように、メインテーブル61の第1フィールド63aが参照される。メインテーブル61の第1フィールド63aには、データ型がINT型であり、サイズが4バイト、オフセットが0バイトであることが指定されているから、所定のメモリアドレス(0x4000)から4バイト分の領域をINT型の値として、医師ID「0001」が読み出される。同時に、メインテーブル61の第1フィールド63aには、キー「0x50000」、キーオプション「ABSKEY」が指定されているから、キーをテキスト化した「00050000H」と、読み出した医師ID「0001」とが等号(=)で対応付けられて、設定ファイル66の1行目に書き出される。
次いで、図8に示すように、メインテーブル61の第2フィールド63bが参照される。メインテーブル61の第2フィールド63bには、データ型がGROUP型であり、サイズが3バイト、オフセットが4バイトであることが指定されているとともに、第1サブテーブル62を参照することが定められている。このため、メインテーブル61の第2フィールド63aが参照されると同時に、第1サブテーブル62の第1フィールド64aが参照される。
第1サブテーブル62の第1フィールド64aには、データ型がCHAR型であり、サイズは1バイト、オフセットは0バイトであることが指定されているから、メインテーブル61で指定されたオフセット4バイトに第1サブテーブル62で指定されたオフセット0バイトを加味して、所定アドレス(0x4000)から4バイト分をオフセットしたメモリアドレス0x4004から1バイト分の領域のデータを、CAHR型のデータとして読み出す。なお、ここで読み出される設定パラメータは、第1の医師の第1ボタンスイッチ31の設定パラメータ「2」である。
同時に、メインテーブル61の第2フィールド63bには、キー「0x50100」、キーオプション「NOKEY」が指定されているから、第1サブテーブル62にキー「0x50100」が渡される。第1サブテーブル62の第1フィールド64aには、キー「0x1」、キーオプション「ADDKEY」が指定されているから、第1サブテーブル62の第1フィールド64aにしたがって読み出された設定パラメータは、キー「0x50100」にキー「0x1」を加えた固有のキー「0x50101」が対応付けられる。したがって、第1の医師の第1ボタンスイッチ31の設定パラメータ「2」は、固有のキー「0x50101」と等号で対応付けて、設定ファイル66の2行目に記録される。
さらに、同様にして、第1サブテーブル62の第2フィールド64bが参照され、メモリアドレス0x4005に記録された第1の医師の第2ボタンスイッチ32の設定パラメータ「1」は、固有のキー「0x50102」と等号で対応付けられて設定ファイル66に続けて記録される。これに続き、第1サブテーブル62の第3フィールド64cが参照され、メモリアドレス0x4006に記録された第1の医師の第3ボタンスイッチ33の設定パラメータ「3」は、固有のキー「0x50103」と等号で対応付けられて設定ファイル66に記録される。
このように、第1の医師の設定パラメータが全て設定ファイルに書き出されると、メインテーブル61の第3フィールド63cから順に参照され、上述と同様にして第2の医師の設定パラメータや第3の医師の設定パラメータが設定ファイル66に書き出される。したがって、設定ファイル66には、図9に示すように、第1の医師の設定パラメータ56a、第2の医師の設定パラメータ56b、第3の医師の設定パラメータ56cが、格納構造テーブル59で指定された順序にしたがって書き出される。こうして設定ファイル66に書き出された設定パラメータ56は、同じ医師IDであっても、第1の医師のIDにはキー「00050000H」、第2の医師のIDにはキー「00050300H」といったように、設定パラメータ毎に固有のキーに対応付けて記録されているから、全ての設定パラメータは個々に区別できるようになっている。
上述のようにして、更新前のファームウェア57によって、更新前のファームウェア57下で設定された設定パラメータ56が設定ファイル66に書き出されると、更新データ58がロードされて、ファームウェア57は新しいファームウェア57aに更新される。更新後のファームウェア57a下は、第1〜第3ボタンスイッチ31,32,33の設定に加え、モニタ13に画像を表示する際の配色と、記録画像への情報重畳設定を設定パラメータ56として新たに記録できるようになっている。配色の設定としては、スコープ12で得られた画像37の色調を加工せず、得られたままの配色でモニタ13に表示する標準色、スコープ12で得られた画像37に血管の色を強調するように画像処理を施した血管強調色のいずれかが選択される。また、記録画像への情報重畳設定は、スコープ12で得られた画像37を記録するときに、被検者の氏名や検査日時等の情報を重畳して記録するか否かを、オン又はオフのいずれかで選択される。
これにともない、更新後のファームウェア57aは、図10及び図11に示すように、更新前のファームウェア57とは異なる格納構造テーブル69を備えている。格納構造テーブル69は、図10に示すメインテーブル71と、図11に示す第1サブテーブル62,第2サブテーブル73とからなる。メインテーブル71は、全9フィールドからなり、第1〜第3フィールド74a〜74cで第1の医師の設定パラメータに各々固有のキーを対応付ける。
メインテーブル71の第1フィールド74a及び第2フィールド74bは、更新前のファームウェア57のメインテーブル61と同様であり、第1の医師のIDと、その第1〜第3ボタンスイッチ31,32,33の設定パラメータに各々固有のキーを対応付ける。一方、第3フィールド74cは、更新後のファームウェア57aで新たに設けられた配色設定と記録画像への情報重畳設定に関する設定パラメータに各々固有のキーを指定するフィールドであり、第2サブテーブル73を参照することが定められている。
同様に、第4〜第6フィールド74d〜74fは、第2の医師の設定パラメータに各々固有のキーを対応付けるフィールドであり、第6フィールド74fが更新後のファームウェア57aで新たに設けられた設定項目に対応する。また、第7〜第8フィールド74g〜74iは、第3の医師の設定パラメータに各々固有のキーを対応付けるフィールドであり、第9フィールド74iが更新後のファームウェアで新たに設けられた設定項目に対応する。
更新後のファームウェア57aの格納構造テーブル69が備える第2サブテーブル73は、メインテーブル71の第3フィールド74c、第6フィールド74f、第9フィールド74iから参照され、図12に示すように、第1フィールド76aで配色の設定パラメータに固有のキーを対応付け、第2フィールド76bで記録画像への情報重畳の設定パラメータに固有のキーを対応付ける。
更新後のファームウェア57aは、格納構造テーブル69を参照し、図13に示す手順にしたがって、更新前のファームウェア57下で設定された設定パラメータ56を、SRAM49に再格納する。まず、更新後のファームウェア57aは、48バイト、3人分の医師の設定パラメータを記憶するメモリ領域を確保する。このとき確保されたメモリ領域には、各設定パラメータの初期値(ID「0000」や値「0」)が格納される。
そして、更新後のファームウェア57aは、設定ファイル66を開き、一番上の行から順に一行ずつ読み込み、この読み込んだ行に記録されたキーを、格納構造テーブル69に指定されたキーと比較する。読み込んだ行に記録されたキーが格納構造テーブル69の何れかのフィールドで指定されたキーと一致する場合には、キーが一致したフィールドにしたがって、このキーに対応付けられて設定ファイル66に記録された設定パラメータをSRAM49に再格納する。一方、読み込んだ行に記録されたキーが、格納構造テーブル69に指定されたキーのいずれとも一致しない場合には、このキーに対応付けて記録された設定パラメータは、SRAM49へ再格納することなく、設定ファイル66のこの行を読み飛ばす。更新後のファームウェア57aは、この手順を繰り返し、設定ファイル66の最後の行まで順に読み込み、更新前のファームウェア57と更新後のファームウェア57aとで共通する設定パラメータを再格納する。
更新後のファームウェア57aが設定ファイル66の一行目を読み込むと、図14に示すように、設定ファイル66の一行目には、第1の医師のID「0001」に、固有のキー「00050000H」が対応付けて記録されている。したがって、更新後のファームウェア57aは、メインテーブル71の第1フィールド63aから順に参照して、読み込んだキー「00050000H」と同じキーが指定されたフィールドがあるか否かを、各フィールドに指定されたキーと比較する。ここで読み込んだキー「00050000H」の場合、これを数値化したものが、メインテーブル71の第1フィールド63aに指定されたキー「0x50000」と一致する。このため、キー「00050000H」に対応付けて記録された設定パラメータ「0001」は、メインテーブル71の第1フィールド63aにしたがって、第1の医師のIDとして、所定のメモリアドレス(0x4000)から4バイトの初期値「0000」が格納された領域に、INT型の値として上書きされ、再格納される。
次いで、設定ファイル66の二行目が読み込まれると、図15に示すように、設定ファイル66の二行目には、第1の医師の第1ボタンスイッチ31の設定パラメータ「2」に、固有のキー「00050101H」が対応付けて記録されている。したがって、更新後のファームウェア57aは、メインテーブル71の第1フィールド74aから順に参照して、読み込んだキー「00050101H」と同じキーが指定されたフィールドがあるか否かを、各フィールドに指定されたキーと比較する。ここで読み込んだキー「00050101H」は、これを数値化したものが、第1サブテーブル62の第1フィールド64aで指定されるキー「0x50101」と一致する。このため、キー「00050101H」に対応付けて記録された設定パラメータ「2」は、メインテーブル71の第2フィールド74b及び第1サブテーブル62の第1フィールド64aにしたがって、第1の医師の第1ボタンスイッチ31の設定パラメータとして、所定のメモリアドレス(0x4000)から4バイトのオフセットしたメモリアドレス0x4004から1バイト分の領域に、CHAR型の値として上書きされ、再格納される。
以降、同様にして、ファイルの終端まで設定ファイル66は一行ずつ読み込まれ、第1〜第3の医師の設定パラメータが、更新後のファームウェア57a下で定められた所定のメモリアドレスに再格納される。このとき、更新後のファームウェア57aで新たに設けられた設定項目を格納するメモリアドレスには、設定ファイルにキーやその値が記録されていないため、更新後のファームウェア57aがメモリ領域を確保したときに格納した初期値が残る。
設定パラメータ56のSRAM49への再格納が完了すると、図16(A)に示すように、更新前のファームウェア57下でメモリアドレス0x4000〜0x4007に格納されていた第1の医師の設定パラメータは、図16(B)に示すように、更新後のファームウェア57a下においても、メモリアドレス0x4000〜0x4007に再格納される。また、更新後のファームウェア57a下では、第1の医師の設定パラメータを格納するメモリ領域としてメモリアドレス0x4000〜0x400Fの16バイトが確保されており、メモリアドレス0x4007には配色の設定パラメータの初期値が、メモリアドレス0x4008には記録画像への情報重畳設定を示すパラメータの初期値がそれぞれ格納されている。
このため、図16(A)に示すように、更新前のファームウェア57下でメモリアドレス0x4008〜0x40009に格納されていた第2の医師の設定パラメータは、図16(B)に示すように、第1の医師の設定パラメータを格納するために確保されたメモリ領域に続けて、更新前のファームウェア57下とは異なるメモリアドレス0x4010から第2の医師の設定パラメータを格納する。同様に、第3の医師の設定パラメータは、更新前のファームウェア57下とは異なるメモリアドレス(0x4020)から格納される。
以上のように、本発明のファームウェアの更新方法によれば、更新するファームウェアを用意するだけで、FROM52を交換したり、ファームウェアの更新前後で設定パラメータを引き継ぐために別途SRAM49にアクセスしてメモリ上で変換操作を行う変換プログラムやドライバ等のファームウェアとは別のプログラムを用意したりすることなく、更新前のファームウェア57下で設定された設定パラメータ56を更新後のファームウェア57a下でのSRAM49の使用様態に合わせて容易に引き継ぐことができる。
また、更新前のファームウェア57で設定された設定パラメータ56を設定ファイル66に書き出すときに、ファームウェアの使用によらないテキスト形式で設定パラメータ56を書き出すから、ファームウェアの仕様によって適切な読み出し方が異なるバイナリ形式で設定パラメータ56を設定ファイル66に書き出すよりも容易に設定パラメータ56を引き継ぐことができ、各設定パラメータのデータ型が変更になるようなファームウェアの更新時に、容易に設定パラメータ56を引き継ぐことができる。
さらに、設定ファイル66内では、各設定パラメータは、各々固有のキーに対応付けて記録されているから、ファームウェアの更新時に、設定項目の増減やSRAM49内での記憶順序の変更などに容易に対応することができる。また、設定ファイル66内に、設定パラメータが各々固有のキーに対応付けて記録されることで、新たに設定項目を増やすようなファームウェアの更新時には、新たに設ける設定項目の設定パラメータに固有のキーを対応付けるフィールドをメインテーブルやサブテーブルに追加するだけで、他の設定項目の設定パラメータと容易に区別されるとともに、いくつかの関連する設定項目の設定パラメータとひとまとめにして容易に管理することができる。
なお、上述の実施形態では、更新前のファームウェア57で使用されていた設定パラメータの全てが更新後のファームウェア57aに引き継がれるが、これに限らず、ファームウェアの更新後に、更新前のファームウェア57で使用されていた設定パラメータの一部を選択的に引き継ぐようにしても良い。このような引き継ぐ設定パラメータの選別は、更新後のファームウェア57aに備える格納構造テーブル69に、ファームウェアの更新で引き継がない設定パラメータにキーを対応付けるフィールドを設けないことで容易に実現される。
なお、上述の実施形態では、設定ファイル66に設定パラメータ56を書き出すときに、格納構造テーブル59に指定するキーをテキスト化し、設定パラメータと対応付けて記録されるが、これに限らず、設定ファイル66に記録するキーは個々の設定パラメータを識別できる固有のものであれば良く、キーを、そのキーが対応付けられる設定パラメータの名称等に置き換えて記録した設定ファイルを保存しても良い。
この場合、図17に示すように、設定ファイル66に設定されたキーを、各々のキーが対応付けられる設定パラメータの名称(文字列)に対応付ける変換テーブル81を設ける。変換テーブル81は、例えば、第1の医師のIDに対応付けられるキー「0005000H」に、このキーが対応付けられる設定パラメータが第1位の医師のIDであることを明示的に示す文字列“第1医師ID”を対応付ける。したがって、この変換テーブル81に基づいて、ファームウェアの更新に使用する設定ファイル66を変換した設定ファイル82は、各設定パラメータとその値が対応付けて記録される。
こうして、設定ファイル66を、各設定パラメータの名称とその値が対応付けられた設定ファイル82とすることで、内容を理解しやすい設定ファイルとすることができる。なお、キーを設定パラメータの名称に置き換えた設定ファイル82は、ファームウェア更新時のログとして保存しても良いし、変換テーブル81に基づいてキーを数値(をテキスト化したもの)に戻すことで、上述の実施形態のようにしてファームウェアの更新に好適に利用することもできる。
なお、上述の実施形態では、ファームウェア57の更新で引き継がれる情報として、医師毎に設定するボタンスイッチ31,32,33等の設定を例に説明するが、これに限らず、ファームウェア57の更新で引継ぎが必要となるデータであれば本発明のファームウェア更新方法を好適に用いることができる。例えば、被検者の氏名や年齢、被検履歴等の情報や、検査時の画像等の被検者データを上述の方法によってファームウェア57の更新で引き継がれるようにしても良い。このような様々は情報をファームウェア57の更新で引き継ぐようにすることで、各種データのバックアップ状況等を考慮せずに、簡単にファームウェアを更新することができるようになる。
また、上述の実施形態では、更新前のファームウェア57で設定された設定パラメータ56を、全て同じ設定ファイル71に続けて書き出すが、これに限らず、医師毎に設定ファイルを設けるなど、設定パラメータ56の単位毎に個別に設定ファイルを設けるようにしても良い。
なお、上述の実施形態で説明するボタンスイッチ31,32,33や配色等の設定は説明のための例であり、具体的な設定項目等は電子内視鏡の種別や仕様等によって定めて良い。また、電子内視鏡の具体的な種別等によって異なるが、本発明のファームウェアの更新方法は電子内視鏡の種別等によらず適用することができる。
なお、上述実施形態では、更新前のファームウェア57でSRAM49に設定された設定パラメータ56を1行ごとに改行して設定ファイル71に書き出すが、これに限らず、キーとその値とが対応付けられ、他の項目と区別できれば良く、カンマ区切りファイルやタブ区切りファイル等の他の周知の様態の設定ファイル71としても良い。
また、上述の実施形態では、更新後のファームウェア57では更新前のファームウェア57と比較して設定項目が増加する新しいバージョンに更新する例を説明するが、これに限らず、新しいバージョンのファームウェア57に不具合が発見され、安定した古いバージョンのファームウェア57に戻すような場合にも、本発明を好適に適用することができる。
また、本発明は、設定ファイル66をCF39等に書き出しておくことで、ファームウェア57の更新時に限らず、SRAM49に障害が生じてSRAM49内のデータを引き出せずに、SRAM49を交換しなければならないような場合にも、CF39等に書き出された設定ファイル71をもとに容易に設定パラメータを復元することができる。
なお、上述の実施形態では、設定パラメータ56を格納するSRAM49上のメモリアドレスとして0x4000から始まる連続した領域を例に説明するが、これに限らず、SRAM49の使用様態はファームウェア57によって任意に設定することができる。
なお、上述の実施形態では、被検者データ41や更新データ58を記憶するメディアとしてCF39を用いるが、これに限らず、他の周知のリムーバブルメディアや、LAN等のネットワークを介して被検者データ41や更新データ58を授受しても良い。
なお、上述の実施形態では、ファームウェアをバージョンアップする例を説明したが、これに限らず、ファームウェアが起動したときに、SRAM49上のデータが初期化されたのを検知し、設定ファイル66から設定パラメータ56を自動的に読み込んで復旧するようにしても良い。
なお、上述の実施形態では、ファームウェアの更新時に、設定ファイル66に設定パラメータ56を記録するが、これに限らず、設定ファイル66は、設定パラメータ56を記録したデータであれば良く、その保存場所は、CF39等の外部メモリ上だけでなく、SRAM49や他の図示しない揮発メモリ上で良い。