(57)【特許請求の範囲】
【請求項１】
プログラム書き換え装置を内蔵する装置の通常プログラムと書き換え予備プログラムとを記憶する通常プログラム記憶部と、
前記通常プログラムと書き換え予備プログラムとを外部装置から受信する受信手順と、受信した前記通常プログラムと前記書き換え予備プログラムとを前記通常プログラム記憶部に上書きする上書き手順と、を示す書き換えプログラムを記憶する書き換えプログラム記憶部と、
第１期間に、書き換えプログラムの受信手順と上書き手順とに基づいて、前記通常プログラム及び書き換え予備プログラムの上書きを実行し、
前記第１期間と異なる第２期間に、前記通常プログラムに基づいて、前記通常プログラム記憶部に上書きされた前記書き換え予備プログラムを前記書き換えプログラム記憶部に複写する制御手段と
を有することを特徴とするプログラム書き換え装置。
【請求項２】
請求項１記載のプログラム書き換え装置において、
プログラムの書き換えの進行状態を判別する状態判別プログラムを記憶する状態判別プログラム記憶部を更に有し、
前記制御手段は、前記第１期間よりも前に、前記通常プログラムが更新されたことを示す通常プログラム更新記録を設定されていない状態にするとともに、前記通常プログラム及び書き換え予備プログラムの上書きが完了することに応答して、前記通常プログラム更新記録をフラグ記憶部に設定し、また
前記状態判別プログラムに基づいて前記通常プログラム更新記録の設定有無を判断し、前記通常プログラム更新記録が設定されていないと判断した場合、前記書き換えプログラムの受信手順と上書き手順とに基づいて、前記通常プログラム記憶部の上書きを実行することを特徴とするプログラム書き換え装置。
【請求項３】
請求項２記載のプログラム書き換え装置において、
前記制御手段は、前記プログラム書き換え装置を内蔵する装置の電源投入時に、通常プログラム更新記録の設定有無を判断することを特徴とするプログラム書き換え装置。
【請求項４】
請求項２または請求項３記載のプログラム書き換え装置において、
前記制御手段は、前記第２期間よりも前に、前記書き換え予備プログラムが更新されたことを示す書き換えプログラム更新記録を設定されていない状態にするとともに、前記書き換え予備プログラムの前記書き換えプログラム記憶部への複写が完了することに応答して、前記書き換えプログラム更新記録をフラグ記憶部に設定し、また
前記通常プログラム更新記録が設定されていると判断した後、または前記通常プログラム更新記録が設定されていないと判断して前記通常プログラム記憶部の上書きが実行された後に、前記状態判別プログラムに基づいて前記書き換えプログラム更新記録の設定有無を判断し、前記書き換えプログラム更新記録が設定されていないと判断した場合、前記通常プログラムに基づいて、前記通常プログラム記憶部に上書きされた前記書き換え予備プログラムを前記書き換えプログラム記憶部に複写することを特徴とするプログラム書き換え装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子機器に内蔵されるプログラム書き換え装置にかかり、特に電子機器の動作を制御するプログラムを書き換えるプログラム書き換え装置に関する。
【０００２】
【従来の技術】
電子機器の動作を制御するプログラムは、通常、電子機器内に設けられたＭＡＳＫＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなどに格納されている。これらのメモリは、読み出し専用のメモリである。しかし、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなどは、特別の装置を使用することにより、メモリに格納されたプログラムを電気的に書き換えることができる。電子機器内に設けられたＣＰＵは、前記メモリに格納されたプログラムにしたがって、電子機器内の各部を制御する。
【０００３】
最近では、パソコンの周辺機器（スキャナ、プリンタ、モデムなど）やパソコンのマザーボードなどの電子機器において、電子機器における機能追加や電子機器に生じる障害の解消のため、前記メモリに格納されたプログラムを書き換える必要が生じる。この様な場合、電子機器内の前記メモリと更新されたプログラムを格納しているメモリとを交換する手間を省くため、下記の２つの方法が用いられている。
【０００４】
（１）プログラムを格納するメモリは、ＥＥＰＲＯＭやフラッシュメモリなどの電気的に書き換え可能なメモリとする。電子機器は、メモリに格納されているプログラムを書き換える場合、パソコンから変更されたプログラムをダウンロードする。次に、電子機器は、電子機器内において、プログラムの書き換えを行う。
こうして、電子機器の機能追加や障害の解消が行われる。
【０００５】
（２）プログラムのブート部分（通信等の初期化部分）だけが、ＭＡＳＫＲＯＭやＥＰＲＯＭに格納されている。電子機器の電源投入時には、パソコンと電子機器との通信機能だけが動作可能になる。電子機器を制御するためのプログラムは、パソコン側において、前記電子機器のドライバソフトを立ち上げる度に、前記通信機能により、電子機器内のＲＡＭにダウンロードされる。そして、ＣＰＵは、ＲＡＭにダウンロードされたプログラムにしたがって、電子機器内の各部を制御する。電子機器の機能追加や障害の解消をする場合、最新のドライバソフトがパソコンにセットされる。したがって、電子機器は、電子機器を制御するための更新されたプログラムをＲＡＭ格納することができる。電子機器は、プログラムを格納しているメモリを交換する必要は無い。こうして、電子機器の機能追加や障害の解消が行われる。
【０００６】
上記２つの方法において、機能追加や障害を解消する変更プログラムは、パソコン通信やインターネットのホームページから、通信回線を介してユーザに配布される。したがって、ユーザがメーカに電子機器を送り返したり、ユーザがサービスの窓口まで電子機器を持ち込む必要がない。また、メーカの担当者が電子機器を分解して、メモリを交換する必要がない。
【０００７】
【発明が解決しようとする課題】
前記従来技術には、次のような問題点がある。
第１に、前記（１）の方法の場合、プログラムをＥＥＰＲＯＭやフラッシュメモリに書き込んでいる最中に電源がダウンし、プログラムの書き込みに失敗することがある。さらに、ＥＥＰＲＯＭやフラッシュメモリへの書き込みが、何らかの原因で失敗することがある。この場合、書き換えが途中まで進んでいるプログラムは、書き換え前の部分と書き換え後の部分との間で、プログラムとしての整合が取れない。したがって、プログラムが暴走して、正常に動作しない。
【０００８】
上記の状態になった電子機器は、ユーザサイドにおけるプログラムの書き換えが不可能になる。したがって、ユーザがメーカに電子機器を送り返したり、ユーザがサービスの窓口まで電子機器を持ち込む必要がある。また、メーカの担当者が電子機器を分解して、メモリを交換する必要がある。
第２に、前記（２）の方法の場合、ＭＡＳＫＲＯＭやＥＰＲＯＭに書き込まれているブート部分のプログラムは、パソコンからのダウンロードでは書き換えることができない。したがって、機能追加や障害の解消がブート部分のプログラムに生じた場合、ユーザがメーカに電子機器を送り返したり、サービスの窓口まで電子機器を持ち込む必要がある。また、メーカの担当者が電子機器を分解して、メモリを交換する必要がある。
【０００９】
本発明の目的は、プログラムの書き換え中に電源が切れてしまったり、なんらかの原因でプログラムの書き換えに失敗した場合、ユーザが、再度書き換えを実行することが可能なプログラム書き換え装置を提供することにある。
【００１０】
本発明の他の目的は、ユーザが、プログラムのどの部分でも、書き換えすることが可能なプログラム書き換え装置を提供することにある。
【００１１】
【課題を解決するための手段】
請求項１記載のプログラム書き換え装置によれば、プログラム書き換え装置を内蔵する装置の通常プログラムと書き換え予備プログラムとを記憶する通常プログラム記憶部と、通常プログラムと書き換え予備プログラムとを外部装置から受信する受信手順と、受信した通常プログラムと書き換え予備プログラムとを通常プログラム記憶部に上書きする上書き手順と、を示す書き換えプログラムを記憶する書き換えプログラム記憶部と、第１期間に、書き換えプログラムの受信手順と上書き手順とに基づいて、通常プログラム及び書き換え予備プログラムの上書きを実行し、第１期間と異なる第２期間に、通常プログラムに基づいて、通常プログラム記憶部に上書きされた書き換え予備プログラムを書き換えプログラム記憶部に複写する制御手段とを有することを特徴とする。
【００１２】
請求項２記載のプログラム書き換え装置によれば、請求項１記載のプログラム書き換え装置において、プログラムの書き換えの進行状態を判別する状態判別プログラムを記憶する状態判別プログラム記憶部を更に有し、制御手段は、第１期間よりも前に、通常プログラムが更新されたことを示す通常プログラム更新記録を設定されていない状態にするとともに、通常プログラム及び書き換え予備プログラムの上書きが完了することに応答して、通常プログラム更新記録をフラグ記憶部に設定し、また状態判別プログラムに基づいて通常プログラム更新記録の設定有無を判断し、通常プログラム更新記録が設定されていないと判断した場合、書き換えプログラムの受信手順と上書き手順とに基づいて、通常プログラム記憶部の上書きを実行することを特徴とする。
【００１３】
請求項３記載のプログラム書き換え装置によれば、請求項２記載のプログラム書き換え装置において、制御手段は、プログラム書き換え装置を内蔵する装置の電源投入時に、通常プログラム更新記録の設定有無を判断することを特徴とする。
【００１４】
請求項４記載のプログラム書き換え装置によれば、請求項２または請求項３記載のプログラム書き換え装置において、制御手段は、第２期間よりも前に、書き換え予備プログラムが更新されたことを示す書き換えプログラム更新記録を設定されていない状態にするとともに、書き換え予備プログラムの書き換えプログラム記憶部への複写が完了することに応答して、書き換えプログラム更新記録をフラグ記憶部に設定し、また通常プログラム更新記録が設定されていると判断した後、または通常プログラム更新記録が設定されていないと判断して通常プログラム記憶部の上書きが実行された後に、状態判別プログラムに基づいて書き換えプログラム更新記録の設定有無を判断し、書き換えプログラム更新記録が設定されていないと判断した場合、通常プログラムに基づいて、通常プログラム記憶部に上書きされた書き換え予備プログラムを書き換えプログラム記憶部に複写することを特徴とする。
【００１５】
他のプログラム書き換え装置によれば、制御手段は、プログラム書き換え装置を内蔵する装置の電源投入時に、書き換えプログラム更新記録の設定有無を判断してもよい。
【００１６】
（作用）
請求項１記載のプログラム書き換え装置によれば、通常プログラム記憶部が、プログラム書き換え装置を内蔵する装置の制御手順を含む通常プログラムと書き換え予備プログラムとを記憶し、書き換えプログラム記憶部が、通常プログラムと書き換え予備プログラムとを外部装置から受信する受信手順と、受信した通常プログラムと書き換え予備プログラムとを通常プログラム記憶部に上書きする上書き手順と、を示す書き換えプログラムを記憶し、制御手段が、第１期間に、書き換えプログラムの受信手順と上書き手順とに基づいて、通常プログラム及び書き換え予備プログラムの上書きを実行し、第１期間と異なる第２期間に、通常プログラムに基づいて、通常プログラム記憶部に上書きされた書き換え予備プログラムを書き換えプログラム記憶部に複写する。
【００１７】
したがって、請求項１記載のプログラム書き換え装置によれば、外部装置から受信した通常プログラムと書き換え予備プログラムとが、第１期間に、通常プログラム記憶部に上書きされる。また、通常プログラム記憶部に上書きされた書き換え予備プログラムが、第２期間に、書き換えプログラム記憶部に複写される。
そのため、第１期間において、電子機器の電源が切れてしまうなどの原因により、通常プログラム記憶部の上書きに失敗した場合には、次のように動作する。すなわち、書き換えプログラム記憶部に格納されている書き換えプログラム（書き換え前のプログラム）が起動され、電子機器は外部装置から通常プログラムと書き換え予備プログラムを受信する。そして、受信した通常プログラムと書き換え予備プログラムが、正常に通常プログラム記憶部に上書きされる。
【００１８】
また、第２期間において、電子機器の電源が切れてしまうなどの原因により、書き換え予備プログラムを書き換えプログラム記憶部に複写することに失敗した場合には、次のように動作する。すなわち、通常プログラム（書き換え後のプログラム）が再度起動され、書き換え予備プログラムの複写が行われる。これによって、書き換えプログラム記憶部は、正常に上書きされる。
【００１９】
したがって、請求項１記載のプログラム書き換え装置は、通常プログラム記憶部の上書きと書き換えプログラム記憶部の上書きとを異なるタイミングで実行する。そのため、請求項１記載のプログラム書き換え装置は、プログラムの書き換え中に電源が切れてしまったり、なんらかの原因でプログラムの書き換えに失敗した場合、ユーザが、再度書き換えを実行できる。
【００２０】
また、請求項１記載のプログラム書き換え装置は、ユーザが、プログラムのどの部分でも書き換えできる。
請求項２記載のプログラム書き換え装置によれば、制御手段は、通常プログラム及び書き換え予備プログラムの上書きが完了することに応答して、通常プログラム更新記録を設定する。
【００２１】
したがって、請求項２記載のプログラム書き換え装置は、通常プログラム更新記録を参照することにより、通常プログラム記憶部の書き換えが完了したか否かを確認することができる。また、制御手段は、通常プログラム更新記録が設定されていないと判断した場合、書き換えプログラムの受信手順と上書き手順とに基づいて、通常プログラム記憶部の上書きを実行する。
【００２２】
したがって、請求項２のプログラム書き換え装置は、通常プログラム記憶部が更新されていないと判断された場合、外部装置から通常プログラムと書き換え予備プログラムを受信して、通常プログラム記憶部の上書きを実行することができる。請求項３記載のプログラム書き換え装置によれば、制御手段は、プログラム書き換え装置を内蔵する装置の電源投入時に、通常プログラム更新記録の設定有無を判断する。したがって、プログラム書き換え装置を内蔵する装置が、前回の起動中に、何らかの原因により、通常プログラムの上書きに失敗したことを検出できる。
【００２３】
請求項４記載のプログラム書き換え装置によれば、制御手段は、書き換え予備プログラムの書き換えプログラム記憶部への複写が完了することに応答して、書き換えプログラム更新記録をフラグ記憶部に設定し、また通常プログラム更新記録が設定されていると判断した後、または通常プログラム更新記録が設定されていないと判断して通常プログラム記憶部の上書きが実行された後に、状態判別プログラムに基づいて書き換えプログラム更新記録の設定有無を判断し、書き換えプログラム更新記録が設定されていないと判断した場合、通常プログラムに基づいて、通常プログラム記憶部に上書きされた書き換え予備プログラムを書き換えプログラム記憶部に複写する。したがって、請求項４記載のプログラム書き換え装置は、書き換えプログラム更新記録を参照することにより、書き換えプログラム記憶部の書き換えが完了したか否かを確認することができる。
【００２４】
また、請求項４記載のプログラム書き換え装置によれば、制御手段は、書き換えプログラム更新記録が設定されていないと判断した場合、通常プログラムに基づいて、通常プログラム記憶部に上書きされた書き換え予備プログラムを書き換えプログラム記憶部に複写することができる。他のプログラム書き換え装置によれば、制御手段は、プログラム書き換え装置を内蔵する装置の電源投入時に、書き換えプログラム更新記録の設定有無を判断する。したがって、プログラム書き換え装置を内蔵する装置が、前回の起動中に、何らかの原因により、書き換えプログラムの上書きに失敗したことを検出できる。
【００２５】
他のプログラム書き換え装置によれば、通常プログラム記憶部が、プログラム書き換え装置を内蔵する装置の制御手順を含む通常プログラムを記憶し、書き換えプログラム記憶部が、通常プログラムを外部装置から受信する受信手順と、受信した通常プログラムを通常プログラム記憶部に上書きする上書き手順と、を示す書き換えプログラムを記憶し、制御手段が、書き換えプログラムに基づく通常プログラム記憶部の記憶内容の更新と、書き換えプログラム記憶部の記憶内容の更新とを異なる期間に実行する。
【００２６】
したがって、このプログラム書き換え装置によれば、制御手段が、異なる期間に、通常プログラム記憶部の記憶内容の更新と書き換えプログラム記憶部の記憶内容の更新を行う。したがって、このプログラム書き換え装置は、プログラムの書き換え中に電源が切れてしまったり、なんらかの原因でプログラムの書き換えに失敗した場合、再度書き換えを実行することが可能である。また、他のプログラム書き換え装置は、プログラムのどの部分でも、書き換えすることが可能である。
【００２７】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。以下に説明する実施の形態は、フィルムスキャナのフラッシュメモリに格納されたプログラムの書き換え動作を例にしている。フラッシュメモリに格納されたプログラムは、フィルムスキャナのＣＰＵによって実行され、フィルムスキャナの各部の動作を制御する。また、以下に説明する実施の形態は、前記全ての請求項に対応する。
【００２８】
図１は、フィルムスキャナ２０とパソコン３０とから構成される画像読取システムの一例を示すブロック図である。図１に示すように、フィルムスキャナ２０は、ＳＣＳＩインタフェース２を通してパソコン３０と接続されている。パソコン３０は、モニタ３１と操作部３２を備えている。モニタ３１は、パソコン３０の指示により表示をするものであり、ＣＲＴや液晶ディスプレイから成る。操作部３２は、キーボードやマウス等の入力機器である。
【００２９】
フィルムスキャナ２０のＣＰＵ１は、パソコン３０からの指示をＳＣＳＩインタフェース２を通して受けて、フィルムスキャナ２０の各部を制御する。ここで、ＣＰＵ１は、フラッシュメモリ３に格納されているプログラムに基づいて、処理を行う。また、ＲＡＭ４は、ＣＰＵ１が処理を行うときに、データを一時的に格納するメモリである。
【００３０】
ＬＥＤ駆動回路５は、ＣＰＵ１により制御され、ＬＥＤ光源１１を駆動する。ＬＥＤ光源１１は、フィルム原稿１７を照明する。ＬＥＤ光源１１から発せられる光は、図示するように、レンズ１２により集光され、ＣＣＤ１３に到達する。ＣＣＤ１３の結像面には、フィルム原稿１７の画像が結像する。ＣＣＤ１３は、フィルム原稿１７上の画像を電気的な画像信号に変換する。ここで、ＣＣＤ駆動回路６は、ＣＰＵ１により制御され、ＣＣＤ１３を駆動する回路である。
【００３１】
また、フィルム原稿１７は、カートリッジ１５からの送り出しと巻取りが可能である。すなわち、原稿駆動モータ駆動回路９は、ＣＰＵ１により制御され、原稿駆動モータ１６を駆動する。ここで、ＣＰＵ１が、原稿駆動モータ１６の回転方向や回転速度を制御することにより、フィルム原稿１７の送り出しや巻き取りが可能になる。また、フィルム原稿１７の位置は、ＣＰＵ１が、原稿位置センサ１４から出力される信号に基づいて検出する。
【００３２】
ＣＣＤ１３は、フィルム原稿１７上の画像を電気的な画像信号に変換する。ＣＣＤ１３から出力される画像信号は、信号処理回路７に入力される。
信号処理回路７は、ＣＰＵ１により制御され、入力された画像信号に各種の信号処理を行い、Ａ／Ｄ変換器８に出力する。
Ａ／Ｄ変換器８は、ＣＰＵ１により制御され、入力された画像信号をディジタル信号に変換する。
【００３３】
Ａ／Ｄ変換器８から出力された画像信号は、ＲＡＭ４に記憶される。
ＲＡＭ４に記憶された画像信号は、ＳＣＳＩインタフェース２を通してパソコン３０に出力される。パソコン３０は画像信号を受け取り、モニタ３１に表示する。
図２は、図１に示すフラッシュメモリ３の記憶内容を示す説明図である。図２に示すように、フラッシュメモリ３は、６つのプログラム領域（Ｐ１〜Ｐ６）を有している。
【００３４】
ベクタ領域Ｐ１は、各プログラム領域（Ｐ１，Ｐ２〜Ｐ６）の先頭アドレス、最終アドレスなどを格納している。
状態判別プログラムＰ２は、フラグ領域Ｐ３を参照して、プログラムの書き換えの進行状態を判別する。
フラグ領域Ｐ３は、プログラムの書き換えの進行状態を示す複数のフラグを備える。具体的には、フラグ領域Ｐ３は、特許請求の範囲に記載する通常プログラム更新記録を示すフラグ（以下に説明する実施の形態では、通常プログラム更新フラグと称する）を格納し、また、特許請求の範囲に記載する書き換えプログラム更新記録（以下に説明する実施の形態では、書き換えプログラム更新フラグと称する）を示すフラグを格納する。
【００３５】
書き換えプログラムＰ４は、パソコンと簡易通信するときに用いられる書き換え動作用簡易通信プログラムと、フラッシュメモリ書き換え動作制御プログラムとを備える。
通常プログラムＰ５は、パソコンとの通信機能とフィルムスキャナ２０内の各部を制御する制御機能を備える。
【００３６】
書き換え予備プログラムＰ６は、パソコンと簡易通信するときに用いられる書き換え動作用簡易通信プログラムと、フラッシュメモリ書き換え動作制御プログラムとを備える。
以上の構成において、特許請求の範囲に記載する書き換えプログラム記憶部は、図示するように、書き換えプログラムＰ４を記憶する記憶領域に相当する。
【００３７】
また、特許請求の範囲に記載する通常プログラム記憶部は、図示するように、通常プログラムＰ５を記憶する記憶領域と書き換え予備プログラムＰ６を記憶する記憶領域とに相当する。
図３は、フラッシュメモリ３の書き換え処理を示すフローチャートである。なお、図３に示すフローチャートは、ＣＰＵ１が、フラッシュメモリ３に格納されているプログラムにしたがって実行する。また、図３に示す各ステップＳ１〜Ｓ１２は、図２に示す書き換えプログラムＰ４及び通常プログラムＰ５に基づいて実行される。具体的には、ステップＳ１，Ｓ２，Ｓ１０，Ｓ１１，Ｓ１２は、図２に示す通常プログラムＰ５に基づいて実行される。また、ステップＳ３〜Ｓ９は、図２に示す書き換えプログラムＰ４に基づいて実行される。以下、図３に示すフローチャートについて説明する。
【００３８】
ステップＳ１において、ＣＰＵ１は、フラッシュメモリ３に格納されている通常プログラムＰ５の通信機能に基づいて、パソコン３０から送信されたプログラム書き換え命令を受信する処理をおこなう。
ステップＳ２において、ＣＰＵ１は、フラッシュメモリ３に格納されている通常プログラムＰ５の制御機能に基づいて、フラッシュメモリ３の読み出しアドレスを書き換えプログラムＰ４の先頭アドレスにジャンプさせる。
【００３９】
ステップＳ３において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４内のフラッシュメモリ書き換え動作制御プログラムに基づいて、フラグ領域Ｐ３に格納されている書き換えプログラム更新フラグを０にセットする。
なお、書き換えプログラム更新フラグは、図３に示す書き換えプログラムＰ４が書き換えられたか否かを示すフラグである。書き換えプログラム更新フラグが１のときは、書き換え予備プログラムＰ６が書き換えプログラムＰ４に上書きされたことを意味する。書き換えプログラム更新フラグが０のときは、前記上書きを実行中であるか、又は上書きが実行されなかったか、又は何らかの原因で上書きに失敗したことを意味する。
【００４０】
ステップＳ４において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４内のフラッシュメモリ書き換え動作制御プログラムに基づいて、フラグ領域Ｐ３に格納されている通常プログラム更新フラグを０にセットする。
なお、通常プログラム更新フラグは、図３に示す通常プログラムＰ５と書き換え予備プログラムＰ６が、パソコン３０から受信した更新プログラムによって、上書きされたか否かを示すフラグである。通常プログラム更新フラグが１のときは、上書きが完了したことを意味する。また、書き換えプログラム更新フラグが０のときは、上書き実行中の状態にあるか、又は上書きが実行されなかったか、又は何らかの原因で上書きに失敗したことを意味する。
【００４１】
次に、ステップＳ５において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４内の書き換え動作用簡易通信プログラムに基づいて、パソコン３０からＳＣＳＩインタフェース２を介して更新プログラムの受信を開始する。受信する更新プログラムは、図２に示す通常プログラムＰ５と書き換え予備プログラムＰ６を更新するものである。
【００４２】
ステップＳ６において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４内のフラッシュメモリ書き換え動作制御プログラムに基づいて、受信した更新プログラムをフラッシュメモリ３に格納する。格納する領域は、通常プログラムＰ５と書き換え予備プログラムＰ６が格納されている通常プログラム記憶部（図２参照）である。
【００４３】
ステップＳ７において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４内のフラッシュメモリ書き換え動作制御プログラムに基づいて、ステップ６における書き込みが終了したか否かを判断する。ＣＰＵ１は、書き込みが終了するまで、前記判断する状態を維持する。ＣＰＵ１は、書き込みが終了したと判断したとき、処理をステップＳ８に進める。
【００４４】
ステップＳ８において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４のフラッシュメモリ書き換え動作制御プログラムに基づいて、フラグ領域Ｐ３に格納されている通常プログラム更新フラグを１にセットする。
ステップＳ９において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４のフラッシュメモリ書き換え動作制御プログラムに基づいて、フラッシュメモリ３の読み出しアドレスを通常プログラムＰ５の先頭アドレスにジャンプさせる。
【００４５】
ステップＳ１０において、ＣＰＵ１は、上書きされた通常プログラムＰ５に基づいて、上書きされた書き換え予備プログラムＰ６を書き換えプログラムＰ４に複写（上書き）する。
ステップＳ１１において、ＣＰＵ１は、上書きされた通常プログラムＰ５に基づいて、ステップ１０における上書きが終了したか否かを判断する。ＣＰＵ１は、上書きが終了するまで、前記判断する状態を維持する。ＣＰＵ１は、上書きが終了したと判断したとき、処理をステップＳ１２に進める。
【００４６】
ステップＳ１２において、ＣＰＵ１は、上書きされた通常プログラムＰ５に基づいて、書き換えプログラム更新フラグを１にセットする。
図４及び図５は、図１に示すフィルムスキャナ２０の初期化時（電源投入時など）の動作を示すフローチャートである。図４及び図５に示すフローチャートは、ＣＰＵ１がフラッシュメモリ３に格納されているプログラムにしたがって実行する。具体的には、ステップＳ２１は、図２に示すベクタ領域Ｐ１のプログラムにしたがって実行される。また、ステップＳ２２，Ｓ２３，Ｓ３０は、図２に示すフラグ領域Ｐ２のプログラムにしたがって実行される。また、ステップＳ２４〜Ｓ２９は、図２に示す通常プログラムＰ５にしたがって実行される。また、ステップＳ３１〜Ｓ３８は、図２に示す書き換えプログラムＰ４にしたがって実行される。以下、図４及び図５に示すフローチャートに基づいて、初期化時の動作について説明する。
【００４７】
電源の投入などのフィルムスキャナ２０の初期化により、図４及び図５に示すフローチャートが開始する。
ステップＳ２１において、ＣＰＵ１は、図２に示すベクタ領域Ｐ１のプログラムに基づいて、状態判別プログラムＰ２の先頭にジャンプする。
ステップＳ２２において、ＣＰＵ１は、状態判別プログラムＰ２に基づいて、通常プログラム更新フラグが１か否かを判断する。ここで、通常プログラム更新フラグが１であれば、前回のプログラムの書き換え動作において、通常プログラムＰ５と書き換え予備プログラムＰ６との上書きは、正常に終了している。通常プログラム更新フラグが１でない場合には、前回のプログラムの書き換え動作において、通常プログラムＰ５と書き換え予備プログラムＰ６との上書きは、正常に終了していない。ＣＰＵ１は、通常プログラム更新フラグが１と判断された場合、処理をステップＳ２３へ進める。ＣＰＵ１は、通常プログラム更新フラグが１ではないと判断された場合、処理をステップＳ３０（図５参照）へ進める。ここでは、通常プログラム更新フラグが１であり、ステップＳ２３に進むものとして説明を続ける。
【００４８】
ステップＳ２３において、ＣＰＵ１は、状態判別プログラムＰ２に基づいて、フラッシュメモリ３の読み出しアドレスを通常プログラムＰ５の先頭アドレスにジャンプさせる。
ステップＳ２４において、ＣＰＵ１は、通常プログラムＰ５の制御機能に基づいて、書き換えプログラム更新フラグが１か否かを判断する。ここで、書き換えプログラム更新フラグが１と判断された場合、前回の書き換え動作において、書き換え予備プログラムＰ６が書き換えプログラムＰ４に正常に複写されている。書き換えプログラム更新フラグが１ではないと判断された場合、前回の書き換え動作において、書き換え予備プログラムＰ６が書き換えプログラムＰ４に正常に複写されていない。すなわち、書き換えプログラム更新フラグが１でない場合、複写が何らかの原因で失敗している。ＣＰＵ１は、書き換えプログラム更新フラグが１でない場合、処理をステップＳ２７に進める。
【００４９】
ステップＳ２７において、ＣＰＵ１は、通常プログラムＰ５の制御機能に基づいて、書き換え予備プログラムＰ６を書き換えプログラムＰ４に複写（上書き）する。
ステップＳ２８において、ＣＰＵ１は、通常プログラムＰ５の制御機能に基づいて、ステップＳ２８における書き込みが終了したか否かを判断する。ＣＰＵ１は、書き込みが終了するまで、前記判断する状態を維持する。ＣＰＵ１は、書き込みが終了したと判断したとき、処理をステップＳ２９に進める。
【００５０】
また、前記したステップＳ２４において、書き換えプログラム更新フラグが１であると判断された場合、ＣＰＵ１は、ステップＳ２７〜Ｓ２９の処理を行うことなく、処理をステップＳ２５に進める。
ステップＳ２９において、ＣＰＵ１は、通常プログラムＰ５の制御機能に基づいて、書き換えプログラム更新フラグを１にセットする。その後、ＣＰＵ１は、通常プログラムＰ５の制御機能に基づいて、処理をステップＳ２５に進める。
【００５１】
ステップ２５において、ＣＰＵ１は、通常プログラムＰ５の制御機能に基づいて、フィルムスキャナ２０の初期化動作を実行する。
ステップＳ２６において、ＣＰＵ１は、通常プログラムＰ５の制御機能に基づいて、ステップＳ２５における初期化動作が終了したか否かを判断する。ＣＰＵ１は、初期化動作が終了するまで、前記判断する状態を維持する。ＣＰＵ１は、初期化動作が終了したと判断したとき、処理を終了する。
【００５２】
前記したように、ステップＳ２２において、ＣＰＵ１は、通常プログラム更新フラグが１ではないと判断された場合、処理をステップＳ３０（図５参照）へ進める。
ステップＳ３０において、ＣＰＵ１は、状態判別プログラムＰ２に基づいて、フラッシュメモリ３の読み出しアドレスを書き換えプログラムＰ４の先頭アドレスにジャンプさせる。
【００５３】
ステップＳ３１において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４内のフラッシュメモリ書き換え動作制御プログラムに基づいて、フラグ領域Ｐ３に格納されている書き換えプログラム更新フラグを０にセットする。
次に、ステップＳ３２において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４内の書き換え動作用簡易通信プログラムに基づいて、パソコン３０との通信を開始する。
【００５４】
ステップＳ３３において、ＣＰＵ１は、書き換えプログラムＰ４内の書き換え動作用簡易通信プログラムに基づいて、パソコン３０に対して更新プログラムの送信を命令する。
ステップＳ３４において、ＣＰＵ１は、書き換えプログラムＰ４内の書き換え動作用簡易通信プログラムに基づいて、パソコン３０からＳＣＳＩインタフェース２を介して更新プログラムの受信を開始する。受信する更新プログラムは、図２に示す通常プログラムＰ５と書き換え予備プログラムＰ６とを更新するものである。
【００５５】
ステップＳ３５において、ＣＰＵ１は、書き換えプログラムＰ４内のフラッシュメモリ書き換え動作制御プログラムに基づいて、受信した更新プログラムをフラッシュメモリ３に格納する。格納する領域は、通常プログラムＰ５と書き換え予備プログラムＰ６が格納されている通常プログラム記憶部（図２参照）である。
ステップＳ３６において、ＣＰＵ１は、フラッシュメモリ３に格納されている書き換えプログラムＰ４内のフラッシュメモリ書き換え動作制御プログラムに基づいて、ステップＳ３５における書き込みが終了したか否かを判断する。ＣＰＵ１は、書き込みが終了するまで、前記判断する状態を維持する。ＣＰＵ１は、書き込みが終了したと判断したとき、処理をステップＳ３７に進める。
【００５６】
ステップＳ３７において、ＣＰＵ１は、書き換えプログラムＰ４のフラッシュメモリ書き換え動作制御プログラムに基づいて、フラグ領域Ｐ３に格納されている通常プログラム更新フラグを１にセットする。
ステップＳ３８において、ＣＰＵ１は、書き換えプログラムＰ４のフラッシュメモリ書き換え動作制御プログラムに基づいて、フラッシュメモリ３の読み出しアドレスを通常プログラムＰ５の先頭アドレスにジャンプさせる。次に、ＣＰＵ１は、前記フラッシュメモリ書き換え動作制御プログラムに基づいて、処理をステップＳ２４に進める。以後の処理は、前記したとおりである。
【００５７】
前記した実施の形態においては、フラッシュメモリを例にして説明した。しかし、本発明はこれに限定されるものではなく、電気的に消去、書き込み、上書きができるメモリであれば適用することができる。
また、前記した実施の形態においては、フィルムスキャナとパソコンのシステムを例にして説明した。しかし、本発明はこれに限定されるものではなく、外部装置からプログラムを受信するシステムであれば適用することができる。
【００５８】
以上の説明から明らかなように、前記実施の形態によれば、フラッシュメモリに格納しているプログラムの書き換えに失敗した場合、再度、書き換えを実行することが可能になる。
また、前記実施の形態によれば、書き換えプログラム記憶部（Ｐ４の記憶領域）及び通常プログラム記憶部（Ｐ５，Ｐ６の記憶領域）の両方を書き換えることができるため、通信機能における機能追加や障害の解消を実行することができる。
【００５９】
【発明の効果】
請求項１記載のプログラム書き換え装置は、書き換えプログラム記憶部に格納されている書き換えプログラム（書き換え前のプログラム）を第１期間に起動する。したがって、請求項１記載のプログラム書き換え装置は、第１期間に、外部装置から通常プログラムと書き換え予備プログラムを受信し、受信した通常プログラムと書き換え予備プログラムを通常プログラム記憶部に上書きする。
【００６０】
また、請求項１記載のプログラム書き換え装置は、通常プログラム（書き換え後のプログラム）を第２期間に起動する。したがって、請求項１記載のプログラム書き換え装置は、第２期間に、起動された通常プログラムに基づいて、書き換え予備プログラムを書き換えプログラム記憶部に複写する。
したがって、請求項１記載のプログラム書き換え装置によれば、通常プログラム記憶部の上書きと書き換えプログラム記憶部の上書きが、異なるタイミングで実行される。そのため、請求項１記載のプログラム書き換え装置は、プログラムの書き換え中に電源が切れてしまったり、なんらかの原因でプログラムの書き換えに失敗した場合、ユーザが、再度書き換えを実行できる。
【００６１】
また、請求項１記載のプログラム書き換え装置は、ユーザが、プログラムのどの部分でも書き換えすることができる。
請求項２記載のプログラム書き換え装置によれば、通常プログラム更新記録を参照することにより、通常プログラム記憶部の書き換えが完了したか否かを確認することができる。
【００６２】
請求項２記載のプログラム書き換え装置によれば、通常プログラム記憶部が更新されていないと判断された場合、外部装置から通常プログラムと書き換え予備プログラムを受信して、通常プログラム記憶部の上書きを実行することができる。請求項３記載のプログラム書き換え装置によれば、制御手段は、プログラム書き換え装置を内蔵する装置の電源投入時に、通常プログラム更新記録の設定有無を判断する。したがって、プログラム書き換え装置を内蔵する装置が、前回の起動中に、何らかの原因により、通常プログラムの上書きに失敗したことを検出できる。
【００６３】
請求項４記載のプログラム書き換え装置によれば、書き換えプログラム更新記録を参照することにより、書き換えプログラム記憶部の書き換えが完了したか否かを確認することができる。また、制御手段は、書き換えプログラム更新記録が設定されていないと判断した場合、通常プログラムに基づいて、通常プログラム記憶部に上書きされた書き換え予備プログラムを書き換えプログラム記憶部に複写することができる。
【００６４】
他のプログラム書き換え装置によれば、制御手段は、プログラム書き換え装置を内蔵する装置の電源投入時に、書き換えプログラム更新記録の設定有無を判断する。したがって、プログラム書き換え装置を内蔵する装置が、前回の起動中に、何らかの原因により、書き換えプログラムの上書きに失敗したことを検出できる。
【００６５】
他のプログラム書き換え装置によれば、制御手段が、異なる期間に、通常プログラム記憶部の記憶内容の更新と書き換えプログラム記憶部の記憶内容の更新を行う。したがって、このプログラム書き換え装置は、プログラムの書き換え中に電源が切れてしまったり、なんらかの原因でプログラムの書き換えに失敗した場合、ユーザが、再度書き換えを実行できる。また、このプログラム書き換え装置は、ユーザが、プログラムのどの部分でも書き換えを実行できる。
【図面の簡単な説明】
【図１】フィルムスキャナとパソコンとから構成される画像読取システムの一例を示すブロック図。
【図２】図１に示すフラッシュメモリの記憶内容を示す説明図。
【図３】フラッシュメモリの書き換え処理を示すフローチャート。
【図４】図１に示すフィルムスキャナ初期化時の動作を示すフローチャート。
【図５】図１に示すフィルムスキャナ初期化時の動作を示すフローチャート。
【符号の説明】
１  ＣＰＵ
２  ＳＣＳＩインタフェース
３  フラッシュメモリ
４  ＲＡＭ
５  ＬＥＤ駆動回路
６  ＣＣＤ駆動回路
７  信号処理回路
８  Ａ／Ｄ変換器
９  原稿駆動モータ駆動回路
１１  ＬＥＤ光源
１２  レンズ
１３  ＣＣＤ
１４  原稿位置センサ
１５  カートリッジ
１６  原稿駆動モータ
１７  フィルム原稿
２０  フィルムスキャナ
３０  パソコン
３１  モニタ
３２  操作部
Ｐ１  ベクタ領域
Ｐ２  状態判別プログラム
Ｐ３  フラグ領域
Ｐ４  書き換えプログラム
Ｐ５  通常プログラム
Ｐ６  書き換え予備プログラム
【図１】
0004652492.tif 000002
【図２】
0004652492.tif 000003
【図３】
0004652492.tif 000004
【図４】
0004652492.tif 000005
【図５】
0004652492.tif 000006