(57)【特許請求の範囲】
【請求項１】
通常プログラムを記憶する通常プログラム記憶部と書き換えプログラムを記憶する書き換えプログラム記憶部とを含むフラッシュメモリと、
制御手段とを有し、
前記通常プログラムは、プログラム書き換え装置を内蔵した電子機器本体の各部の動作を制御する制御手順と、前記書き換えプログラムを外部装置から受信する受信手順と、受信した前記書き換えプログラムを前記書き換えプログラム記憶部に上書きする上書き手順とを示し、
前記書き換えプログラムは、前記通常プログラムを外部装置から受信する受信手順と、受信した前記通常プログラムを前記通常プログラム記憶部に上書きする上書き手順とを示し、
前記制御手段は、
第１期間にて、書き換えプログラムの受信手順と上書き手順とに基づいて、前記通常プログラムを外部装置から受信し、受信した前記通常プログラムを前記通常プログラム記憶部に上書きし、前記通常プログラムの上書きが完了することに応答して、通常プログラム更新記録を前記フラッシュメモリに設定し、
前記第１期間と異なる第２期間にて、前記通常プログラムの受信手順と上書き手順とに基づいて、前記書き換えプログラムを外部装置から受信し、受信した前記書き換えプログラムを前記書き換えプログラム記憶部に上書きし、前記書き換えプログラムの前記書き換えプログラム記憶部への上書きが完了することに応答して、書き換えプログラム更新記録を前記フラッシュメモリに設定し、
前記外部装置からの書き換え命令の受信に応答して、前記第１期間の処理を実行した後に前記第２期間の処理を実行し、
前記第１期間から前記第２期間までの一連の処理のうちの少なくとも一部の処理が行われた後において、前記電子機器本体の電源投入時に前記通常プログラム更新記録の設定有無を判断し、前記通常プログラム更新記録が設定されていないと判断した場合、前記書き換えプログラムの受信手順と上書き手順とに基づいて、前記第１期間および前記第２期間と異なる第３期間に前記通常プログラムを外部装置から受信するとともに、受信した前記通常プログラムを前記通常プログラム記憶部に上書きし、前記通常プログラムの上書きが完了することに応答して、通常プログラム更新記録を前記フラッシュメモリに設定し、
前記電子機器の電源投入時において、前記通常プログラム更新記録が設定されていると判断された後、または、前記通常プログラム更新記録が設定されていないと判断されて前記第３期間の処理がされた後に、前記書き換えプログラム更新記録の設定有無を判断し、前記書き換えプログラム更新記録が設定されていないと判断した場合、前記通常プログラムに基づいて、前記第１期間、前記第２期間および前記第３期間と異なる第４期間に前記書き換えプログラムを外部装置から受信するとともに、受信した前記書き換えプログラムを前記書き換えプログラム記憶部に上書きし、前記書き換えプログラムの前記書き換えプログラム記憶部への上書きが完了することに応答して、書き換えプログラム更新記録を前記フラッシュメモリに設定し、
前記電子機器の電源投入時に前記通常プログラム更新記録および前記書き換えプログラム更新記録が設定されていると判断した場合には、前記通常プログラムの前記制御手順を実行する
ことを特徴とするプログラム書き換え装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子機器に内蔵されるプログラム書き換え装置に係り、特に電子機器の動作を制御するプログラムを書き換えるプログラム書き換え装置に関する。
【０００２】
【従来の技術】
電子機器の動作を制御するプログラムは、通常、電子機器内に設けられたＭＡＳＫＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＦＬＡＳＨなどに格納されている。これらのメモリは、読み出し専用のメモリである。しかし、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＦＬＡＳＨなどは、特別の装置を使用することにより、メモリに格納されたプログラムを電気的に書き換えることができる。電子機器内に設けられたＣＰＵは、前記メモリに格納されたプログラムにしたがって、電子機器内の各部を制御する。
【０００３】
最近では、パソコンの周辺機器（スキャナ、プリンタ、モデムなど）やパソコンのマザーボードなどの電子機器において、電子機器における機能追加や電子機器に生じる障害の解消のため、前記メモリに格納されたプログラムを書き換える必要が生じる。この様な場合、電子機器内の前記メモリと更新されたプログラムを格納しているメモリとを交換する手間を省くため、下記の２つの方法が用いられている。
【０００４】
（１）プログラムを格納するメモリは、ＥＥＰＲＯＭやＦＬＡＳＨなどの電気的に書き換え可能なメモリとする。電子機器は、メモリに格納されているプログラムを書き換える場合、パソコンから変更されたプログラムをダウンロードする。次に、電子機器は、電子機器内において、プログラムの書き換えを行う。こうして、電子機器の機能追加や障害の解消が行われる。
【０００５】
（２）プログラムのブート部分（通信等の初期化部分）だけが、ＭＡＳＫＲＯＭやＥＰＲＯＭに格納されている。電子機器の電源投入時には、パソコンと電子機器との通信機能だけが動作可能になる。電子機器を制御するためのプログラムは、パソコン側において、前記電子機器のドライバソフトを立ち上げる度に、前記通信機能により、電子機器内のＲＡＭにダウンロードされる。そして、ＣＰＵは、ＲＡＭにダウンロードされたプログラムにしたがって、電子機器内の各部を制御する。電子機器の機能追加や障害の解消をする場合、最新のドライバソフトがパソコンにセットされる。したがって、電子機器は、電子機器を制御するための更新されたプログラムをＲＡＭ格納することができる。電子機器は、プログラムを格納しているメモリを交換する必要は無い。こうして、電子機器の機能追加や障害の解消が行われる。
【０００６】
上記２つの方法において、機能追加や障害を解消する変更プログラムは、パソコン通信やインターネットのホームページから、通信回線を介してユーザに配布される。したがって、ユーザがメーカに電子機器を送り返したり、ユーザがサービスの窓口まで電子機器を持ち込む必要がない。また、メーカの担当者が電子機器を分解して、メモリを交換する必要がない。
【０００７】
【発明が解決しようとする課題】
前記従来技術には、次のような問題点がある。
第１に、前記（１）の方法の場合、プログラムをＥＥＰＲＯＭやＦＬＡＳＨに書き込んでいる最中に電源がダウンし、プログラムの書き込みに失敗することがある。さらに、ＥＥＰＲＯＭやＦＬＡＳＨへの書き込みが、何らかの原因で失敗することがある。この場合、書き換えが途中まで進んでいるプログラムは、書き換え前の部分と書き換え後の部分との間で、プログラムとしての整合が取れない。したがって、プログラムが暴走して、正常に動作しない。
【０００８】
上記の状態になった電子機器は、ユーザサイドにおけるプログラムの書き換えが不可能になる。したがって、ユーザがメーカに電子機器を送り返したり、ユーザがサービスの窓口まで電子機器を持ち込む必要がある。また、メーカの担当者が電子機器を分解して、メモリを交換する必要がある。
第２に、前記（２）の方法の場合、ＭＡＳＫＲＯＭやＥＰＲＯＭに書き込まれているブート部分のプログラムは、パソコンからのダウンロードでは書き換えることができない。したがって、機能追加や障害の解消がブート部分のプログラムに生じた場合、ユーザがメーカに電子機器を送り返したり、サービスの窓口まで電子機器を持ち込む必要がある。また、メーカの担当者が電子機器を分解して、メモリを交換する必要がある。
【０００９】
本発明の目的は、プログラムの書き換え中に電源が切れてしまったり、なんらかの原因でプログラムの書き換えに失敗した場合、ユーザが、再度書き換えを実行することが可能なプログラム書き換え装置を提供することにある。
本発明の他の目的は、ユーザが、プログラムのどの部分でも、書き換えすることが可能なプログラム書き換え装置を提供することにある。
【００１０】
【課題を解決するための手段】
請求項１に記載のプログラム書き換え装置は、通常プログラムを記憶する通常プログラム記憶部と書き換えプログラムを記憶する書き換えプログラム記憶部とを含むフラッシュメモリと、制御手段とを有する。通常プログラムは、プログラム書き換え装置を内蔵した電子機器本体の各部の動作を制御する制御手順と、書き換えプログラムを外部装置から受信する受信手順と、受信した書き換えプログラムを書き換えプログラム記憶部に上書きする上書き手順とを示す。書き換えプログラムは、通常プログラムを外部装置から受信する受信手順と、受信した通常プログラムを通常プログラム記憶部に上書きする上書き手順とを示す。制御手段は、第１期間にて、書き換えプログラムの受信手順と上書き手順とに基づいて、通常プログラムを外部装置から受信し、受信した通常プログラムを通常プログラム記憶部に上書きする。そして、制御手段は、通常プログラムの上書きが完了することに応答して通常プログラム更新記録をフラッシュメモリに設定する。また、制御手段は、第１期間と異なる第２期間にて、通常プログラムの受信手順と上書き手順とに基づいて、書き換えプログラムを外部装置から受信し、受信した書き換えプログラムを書き換えプログラム記憶部に上書きする。そして、制御手段は、書き換えプログラムの書き換えプログラム記憶部への上書きが完了することに応答して書き換えプログラム更新記録をフラッシュメモリに設定する。そして、制御手段は、外部装置からの書き換え命令の受信に応答して、第１期間の処理を実行した後に第２期間の処理を実行する。また、制御手段は、第１期間から第２期間までの一連の処理のうちの少なくとも一部の処理が行われた後において、電子機器本体の電源投入時に通常プログラム更新記録の設定有無を判断する。制御手段は、通常プログラム更新記録が設定されていないと判断した場合、書き換えプログラムの受信手順と上書き手順とに基づいて、第１期間および第２期間と異なる第３期間に通常プログラムを外部装置から受信するとともに、受信した通常プログラムを通常プログラム記憶部に上書きする。そして、制御手段は、通常プログラムの上書きが完了することに応答して、通常プログラム更新記録をフラッシュメモリに設定する。また、制御手段は、電子機器の電源投入時において、通常プログラム更新記録が設定されていると判断された後、または、通常プログラム更新記録が設定されていないと判断されて第３期間の処理がされた後に、書き換えプログラム更新記録の設定有無を判断する。制御手段は、書き換えプログラム更新記録が設定されていないと判断した場合、通常プログラムに基づいて、第１期間、第２期間および第３期間と異なる第４期間に書き換えプログラムを外部装置から受信するとともに、受信した書き換えプログラムを書き換えプログラム記憶部に上書きする。そして、制御手段は、書き換えプログラムの書き換えプログラム記憶部への上書きが完了することに応答して、書き換えプログラム更新記録をフラッシュメモリに設定する。さらに制御手段は、電子機器の電源投入時に通常プログラム更新記録および書き換えプログラム更新記録が設定されていると判断した場合には、通常プログラムの制御手順を実行する。

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