(57)【要約】【課題】  ファームウェアの更新を適切にかつ確実に実行することができる、周辺装置及びその周辺装置のファームウェアの更新方法、プログラムを提供する。【解決手段】  ファームウェアとして、周辺装置の機能を実現する制御プログラムと、制御プログラムの書換を行うための書換プログラムを少なくとも有し、制御プログラムを記憶する第１記憶領域と、書換プログラムを記憶する第２記憶領域を不揮発性記憶媒体に確保して記憶する。書換プログラムによるファームウェアの更新を行うための第１モードと、制御プログラムを実行する第２モードを選択的に切り替えて制御する場合に、第１モードは、制御プログラムの更新用データを外部装置より受信し、書換プログラムを用いて、第１記憶領域に記憶される制御プログラムを、更新用データに書き換え、書換の正常完了を判定し、書換が正常完了していない場合、書換を再度実行する。【選択図】  図４
2005063050.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアに基づいて、装置自身を制御する周辺装置であって、
前記ファームウェアとして、当該周辺装置の機能を実現する制御プログラムと、前記制御プログラムの書換を行うための書換プログラムを少なくとも有し、前記制御プログラムを記憶する第１記憶領域と、前記書換プログラムを記憶する第２記憶領域を不揮発性記憶媒体に確保して記憶する記憶手段と、
前記書換プログラムによるファームウェアの更新を行うための第１モードと、前記制御プログラムを実行する第２モードを選択的に切り替えて制御する制御手段とを備え、
前記第１モードは、
前記制御プログラムの更新用データを外部装置より受信する受信手段と、
前記書換プログラムを用いて、前記第１記憶領域に記憶される制御プログラムを、前記受信手段で受信した更新用データに書き換える書換手段と、
前記書換手段による書換の正常完了を判定する判定手段と、
前記判定手段による判定の結果、前記書換が正常完了していない場合、前記書換手段による書換を再度実行する書換制御手段と
を備えることを特徴とする周辺装置。
【請求項２】
前記書換手段による書換状況を出力する出力手段を更に備える
ことを特徴とする請求項１に記載の周辺装置。
【請求項３】
前記判定手段は、前記第１モードから前記第２モードへ移行する前に、前記第２記憶領域に記憶されている制御プログラムが正常であるか否かを判定し、
前記書換制御手段は、前記判定手段による判定の結果、前記制御プログラムが正常でない場合、前記書換手段による書換を再度実行する
ことを特徴とする請求項１に記載の周辺装置。
【請求項４】
前記第１モードは、
前記不揮発性記憶媒体の異常の有無をチェックするチェック手段と、
前記チェック手段によって、前記第１記憶領域に異常がある場合、その旨を示す通知を行う通知手段と
を更に備えることを特徴とする請求項１に記載の周辺装置。
【請求項５】
前記第１モードの進捗状況を前記外部装置へ送信する送信手段を更に備える
ことを特徴とする請求項１に記載の周辺装置。
【請求項６】
前記第１モードは、
前記不揮発性記憶媒体とは異なる記憶媒体に、前記書換手段による書換状況を示す書換状況情報を記憶する書換状況情報記憶手段を更に備え、
前記書換制御手段は、前記書換手段による書換が中断された後、その書換を再開する場合には、中断直前に前記記憶媒体に記憶されている書換状況情報を参照して、書換が未完了の更新用データのみ、前記書換手段による書換を実行する
ことを特徴とする請求項１に記載の周辺装置。
【請求項７】
前記第１モードを実行するための第１操作手段と、
当該周辺装置の電源のＯＮ／ＯＦＦを行うための第２操作手段とを更に備え、
前記制御手段は、前記第１及び第２操作手段の操作状態に基づいて、当該周辺装置を特定する装置情報の前記外部装置への出力の有無を示すフラグを設定する
ことを特徴とする請求項１に記載の周辺装置。
【請求項８】
当該周辺装置は、記録媒体に対して画像の記録を行う記録装置であり、前記制御プログラムは前記記録装置の動作を制御するプログラムを含む
ことを特徴とする請求項１乃至７のいずれかに記載の周辺装置。
【請求項９】
ファームウェアとして、当該周辺装置の機能を実現する制御プログラムと、前記制御プログラムの書換を行うための書換プログラムを少なくとも有し、前記制御プログラムを記憶する第１記憶領域と、前記書換プログラムを記憶する第２記憶領域を確保している不揮発性記憶媒体を有する周辺装置の前記ファームウェアの更新方法であって、
前記制御プログラムの更新用データを外部装置より受信する受信工程と、
前記書換プログラムを用いて、前記第１記憶領域に記憶される制御プログラムを、前記受信工程で受信した更新用データに書き換える書換工程と、
前記書換工程による書換の正常完了を判定する判定工程と、
前記判定工程による判定の結果、前記書換が正常完了していない場合、前記書換工程による書換を再度実行する書換制御工程と
を備えることを特徴とする周辺装置のファームウェアの更新方法。
【請求項１０】
ファームウェアとして、当該周辺装置の機能を実現する制御プログラムと、前記制御プログラムの書換を行うための書換プログラムを少なくとも有し、前記制御プログラムを記憶する第１記憶領域と、前記書換プログラムを記憶する第２記憶領域を確保している不揮発性記憶媒体を有する周辺装置の前記ファームウェアの更新を行うためのプログラムであって、
前記制御プログラムの更新用データを外部装置より受信する受信工程のプログラムコードと、
前記書換プログラムを用いて、前記第１記憶領域に記憶される制御プログラムを、前記受信工程で受信した更新用データに書き換える書換工程のプログラムコードと、
前記書換工程による書換の正常完了を判定する判定工程のプログラムコードと、
前記判定工程による判定の結果、前記書換が正常完了していない場合、前記書換工程による書換を再度実行する書換制御工程のプログラムコードと
を備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアに基づいて、装置自身を制御する周辺装置及びその周辺装置のファームウェア更新方法、プログラムに関するものである。
【背景技術】
【０００２】
従来、記録用紙やプラスチック薄板等のシート材、最近ではＣＤ（被記録媒体）等の記録媒体に、文字や画像を記録する記録装置が知られている。これらの記録装置では、記録装置に接続されているホストコンピュータからの受信データ解析、記録媒体の搬送及び記録ヘッド制御等のプリンタエンジン制御等を実現するプリンタ制御プログラムの実行を、記録装置を制御するために内蔵されているマイクロ処理装置（ＭＰＵ）が行っている。
【０００３】
このＭＰＵの制御手順を示すプログラムは、不揮発性のＥＰＲＯＭまたはマスクＲＯＭに記憶されている。また、記録ヘッドの駆動パルス作成等のエンジン制御、記録データ作成等の各種ロジック部分はハードウェア化されており、最近では、そのロジック部分を一つのＬＳＩに集積したゲートアレイを使用することが多い。
【０００４】
しかしながら、上記従来の記録装置では、プリンタ制御プログラムを記憶したＥＰＲＯＭまたはマスクＲＯＭの内容は、ユーザ側では書換不能である。そのため、バージョンアップ等に伴って、プリンタ制御プログラムの更新が生じた時には、記録装置に内蔵されている既存の不揮発性のＥＰＲＯＭまたはマスクＲＯＭを、新たなプリンタ制御プログラムが記憶されている不揮発性のＥＰＲＯＭまたはマスクＲＯＭに交換することによって、プリンタ制御プログラムの更新が行われることになる。
【０００５】
この不揮発性のＥＰＲＯＭまたはマスクＲＯＭの交換は、通常、簡単には行うことができないため、サービスマンによって行われていた、または装置本体をサービスセンターに搬入し、サービスセンターにおいて行われていた。
【０００６】
このプリンタ制御プログラムの更新を簡単に行うための方法として、例えば、特許文献１がある。この特許文献１による方法は、記録装置のプリンタ制御プログラムをフラッシュメモリに格納し、別に内蔵されているＲＯＭにフラッシュメモリの書換プログラムを格納しておく。そして、プリンタ制御プログラムの更新が生じた時には、ホストコンピュータから新たなプリンタ制御プログラムを受信して、その受信したプログラムデータをＲＯＭ上に格納されている書換プログラムにより、フラッシュメモリ内のププリンタ制御ログラムを更新するというものである。
【特許文献１】特開平７−３１４７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
通常、プリンタ制御プログラム等のファームウェアを更新する作業は、それを記憶するフラッシュメモリやＥＥＰＲＯＭの内容を書き換えることによって行われるので、書換前のファームウェアの内容は消去される。そのため、更新の際に使用したプログラムデータが間違っていたり、書換中の電源断や、ケーブルの接触不良、ノイズ等により書換処理が失敗した場合は、ファームウェアが不正な状態となってしまい、一般ユーザでは対処不可能な故障状態に陥ってしまう危険性があった。
【０００８】
つまり、ファームウェアの更新を行うことは、ユーザにとって不慣れな特別な操作が必要であり、さらに書換が失敗したときには、ユーザによる回復が不可能な障害状態に陥るリスクをユーザが背負わされている点が大きな課題となっている。
【０００９】
一方で、工場で製品を生産中にＲＯＭの書換が必要になった場合や、生産後にＲＯＭの書換をサービスセンター等で行う場合など、１台の新しいファームウェアを送信可能なホストコンピュータで、複数の記録装置のファームウェアの書換を行う場合、書換を行うためにダウンロードモードに入り、ホストコンピュータと接続する度に、ホストコンピュータには新しいプリンタが登録されてしまい、ホストコンピュータの動作が遅くなったり、登録されたプリンタのどれが現在利用しているプリンタか見分けがつきにくくなったりすることが多々あった。
【００１０】
このように、工場やサービスセンターで、一台のホストコンピュータで、複数の記録装置のファームウェアの書換を行う場合には、書換の台数が多くなればなるほど、ホストコンピュータに無駄にプリンタが登録されるため、業務効率が著しく低下してしまう。
【００１１】
本発明は上記の課題を解決するためになされたものであり、ファームウェアの更新を適切にかつ確実に実行することができる、周辺装置及びその周辺装置のファームウェアの更新方法、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するための本発明による周辺装置は以下の構成を備える。即ち、
ファームウェアに基づいて、装置自身を制御する周辺装置であって、
前記ファームウェアとして、当該周辺装置の機能を実現する制御プログラムと、前記制御プログラムの書換を行うための書換プログラムを少なくとも有し、前記制御プログラムを記憶する第１記憶領域と、前記書換プログラムを記憶する第２記憶領域を不揮発性記憶媒体に確保して記憶する記憶手段と、
前記書換プログラムによるファームウェアの更新を行うための第１モードと、前記制御プログラムを実行する第２モードを選択的に切り替えて制御する制御手段とを備え、
前記第１モードは、
前記制御プログラムの更新用データを外部装置より受信する受信手段と、
前記書換プログラムを用いて、前記第１記憶領域に記憶される制御プログラムを、前記受信手段で受信した更新用データに書き換える書換手段と、
前記書換手段による書換の正常完了を判定する判定手段と、
前記判定手段による判定の結果、前記書換が正常完了していない場合、前記書換手段による書換を再度実行する書換制御手段と
を備える。
【００１３】
また、好ましくは、前記書換手段による書換状況を出力する出力手段を更に備える。
【００１４】
また、好ましくは、前記判定手段は、前記第１モードから前記第２モードへ移行する前に、前記第２記憶領域に記憶されている制御プログラムが正常であるか否かを判定し、
前記書換制御手段は、前記判定手段による判定の結果、前記制御プログラムが正常でない場合、前記書換手段による書換を再度実行する。
【００１５】
また、好ましくは、前記第１モードは、
前記不揮発性記憶媒体の異常の有無をチェックするチェック手段と、
前記チェック手段によって、前記第１記憶領域に異常がある場合、その旨を示す通知を行う通知手段と
を更に備える。
【００１６】
また、好ましくは、前記第１モードの進捗状況を前記外部装置へ送信する送信手段を更に備える。
【００１７】
また、好ましくは、前記第１モードは、前記不揮発性記憶媒体とは異なる記憶媒体に、前記書換手段による書換状況を示す書換状況情報を記憶する書換状況情報記憶手段を更に備え、
前記書換制御手段は、前記書換手段による書換が中断された後、その書換を再開する場合には、中断直前に前記記憶媒体に記憶されている書換状況情報を参照して、書換が未完了の更新用データのみ、前記書換手段による書換を実行する。
【００１８】
また、好ましくは、前記第１モードを実行するための第１操作手段と、
当該周辺装置の電源のＯＮ／ＯＦＦを行うための第２操作手段とを更に備え、
前記制御手段は、前記第１及び第２操作手段の操作状態に基づいて、当該周辺装置を特定する装置情報の前記外部装置への出力の有無を示すフラグを設定する。
【００１９】
また、好ましくは、当該周辺装置は、記録媒体に対して画像の記録を行う記録装置であり、前記制御プログラムは記録装置の動作を制御するプログラムを含む。
【００２０】
上記の目的を達成するための本発明による周辺装置のファームウェアの更新方法は以下の構成を備える。即ち、
ファームウェアとして、当該周辺装置の機能を実現する制御プログラムと、前記制御プログラムの書換を行うための書換プログラムを少なくとも有し、前記制御プログラムを記憶する第１記憶領域と、前記書換プログラムを記憶する第２記憶領域を確保している不揮発性記憶媒体を有する周辺装置の前記ファームウェアの更新方法であって、
前記制御プログラムの更新用データを外部装置より受信する受信工程と、
前記書換プログラムを用いて、前記第１記憶領域に記憶される制御プログラムを、前記受信工程で受信した更新用データに書き換える書換工程と、
前記書換工程による書換の正常完了を判定する判定工程と、
前記判定工程による判定の結果、前記書換が正常完了していない場合、前記書換工程による書換を再度実行する書換制御工程と
を備える。
【００２１】
上記の目的を達成するための本発明によるプログラムは以下の構成を備える。即ち、
ファームウェアとして、当該周辺装置の機能を実現する制御プログラムと、前記制御プログラムの書換を行うための書換プログラムを少なくとも有し、前記制御プログラムを記憶する第１記憶領域と、前記書換プログラムを記憶する第２記憶領域を確保している不揮発性記憶媒体を有する周辺装置の前記ファームウェアの更新を行うためのプログラムであって、
前記制御プログラムの更新用データを外部装置より受信する受信工程のプログラムコードと、
前記書換プログラムを用いて、前記第１記憶領域に記憶される制御プログラムを、前記受信工程で受信した更新用データに書き換える書換工程のプログラムコードと、
前記書換工程による書換の正常完了を判定する判定工程のプログラムコードと、
前記判定工程による判定の結果、前記書換が正常完了していない場合、前記書換工程による書換を再度実行する書換制御工程のプログラムコードと
を備える。
【発明の効果】
【００２２】
本発明によれば、ファームウェアの更新を適切にかつ確実に実行することができる、周辺装置及びその周辺装置のファームウェアの更新方法、プログラムを提供できる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００２４】
特に、本実施形態では、記録装置を例に挙げて説明する。
【００２５】
本発明の実施形態が実現する特徴としては、以下の点が挙げられる。
【００２６】
１つは、通常の記録装置として起動するユーザモードと、ファームウェアの書換モードであるダウンロードモードを実現する各プログラムを、一つの書換可能な不揮発性メモリにセクションを分けて格納しておく。そして、装置にＡＣ／ＤＣ電源が接続された時点で、ダウンロードモードを起動して、ファームウェアの書換完了後、その書換が正常に完了したか否かのチェックを行い、正常に書換が完了していなかった場合には、自動的にダウンロードモードで起動し直す機能を備える。
【００２７】
また、ユーザモードで起動する場合にも、不揮発性メモリのチェックを行い、異常を検知した場合は、自動的にダウンロードモードに起動し直す機能を備える。
【００２８】
また、不揮発性メモリに対するチェックをユーザモードのプログラムが格納されている記憶領域と、ダウンロードモードのプログラムが格納されている記憶領域とに分けて行い、ユーザモードのプログラムが格納されている記憶領域で異常を検知した場合には、自動的に記録装置をダウンロードモードで起動し直す。一方、ダウンロードモードのプログラムが格納されている記憶領域で異常を検知した場合には、ＲＯＭエラーを記録装置のＬＣＤやＬＥＤなどの表示部によってそのエラーを通知する機能を備える。
【００２９】
また、ホストコンピュータと接続を確立しているインターフェースで、更新用のファームウェアを受信するホストコンピュータ→記録装置の系とは別に、ホストコンピュータ←記録装置の系でも接続を確立し、その系によりファームウェアの書換状況を通知する機能を備える。さらに、ホストコンピュータに記録装置のファームウェアのダウンロードモードに対応したプログラムをインストール済みである場合に、ファームウェアの書換状況をホストコンピュータのディスプレイ上に表示する機能を備える。
【００３０】
また、ユーザモード及びダウンロードモードに対応するそれぞれのプログラムを記憶する不揮発性メモリとは別に、ダウンロードモード中のファームウェアの書換状況に関する情報（例えば、書換に使用したファイル名、書換が完了したセクション番号等）を、別の書換可能な不揮発性メモリ上に随時記録しながら、ファームウェアの書換作業を行う機能を備える。
【００３１】
また、ダウンロードモードの起動時に、所定の外部キーの押下の有無を検出し、その検出結果に基づいて、装置を特定する装置情報（シリアル番号）のサポートの有無を決定する機能を備える。
【００３２】
以下、上記の各種特徴を実現するための具体的な構成について説明する。
【００３３】
図１は本発明の実施形態の記録装置の構成を示すブロック図である。
【００３４】
１００は記録装置である。記録装置１００の記録方式としては、例えば、インクジェット方式、レーザビーム方式、熱転写方式等の各種方式について、本発明を適用することができるが、本実施形態では、インクジェット方式の記録装置を例に挙げて説明する。
【００３５】
１０１はデータ送受信部であり、物理インターフェース１１１より、外部装置（例えば、ホストコンピュータ）とデータの送受信を行う。尚、本実施形態では、物理インターフェース１１１に、例えば、ＵＳＢ２．０のＦｕｌｌＳｐｅｅｄのアップストリームポートを採用しているが、これに限定されるものではなく、例えば、ＵＳＢ１．０、ＩＥＥＥ１３９４、無線ＬＡＮ、ブルートゥース等の他の規格のインターフェースを採用することができる。また、このインタフェース１１１に加えて、ＬＡＮ等に接続するためのネットワークインタフェースを有していても良い。
【００３６】
１０２は書換可能な不揮発性メモリのフラッシュＲＯＭであり、記録装置１００を動作させるための各種制御プログラム、データ、フォントデータ、テーブル等を記憶している。１０３はＣＰＵであり、記録データに基づく記録媒体への記録を行うための各種モータ、キャリッジ、ＡＳＦ等を制御する。
【００３７】
１０４はＲＡＭであり、データ受信時や、プログラム実行時など一時的にデータをロードする記憶領域や作業領域として機能する。１０５はＥＥＰＲＯＭであり、記録装置１００の最終記録時間、エラー履歴等の記録に関する記録情報や、装置固有に付与されるシリアル番号、出荷時の初期設定情報である出荷時設定情報等を記憶する。１０６は記録部であり、記録データに基づく画像を記録媒体に記録するための記録ヘッド及びそれを走査するためのキャリッジ等からなる記録機構、記録媒体を給紙し、排紙するための給排紙機構、記録媒体を搬送するための搬送機構、各種機構を駆動するモータ等からなる。
【００３８】
１０７は操作部であり、電源ボタン等の各種操作ボタン、ＬＥＤやＬＣＤ等で記録装置１００の各種状態を通知する通知部等からなる。
【００３９】
次に、記録装置１００の外観について、図２を用いて説明する。
【００４０】
図２は本発明の実施形態の記録装置の外観を示す図である。
【００４１】
２００は記録媒体を記録装置１００に給紙するための給紙トレイである。２０１は電源ボタンであり、この電源ボタン２０１を押下することで、記録装置１００の電源オン／オフを行うことができる。２０２は続行ボタンであり、エラーが発生した場合に、エラー復帰を行うためのボタンである。２０３は印刷された記録媒体を排紙時に受け止めるための排紙トレイである。２０４はＬＥＤであり、記録装置のオン／オフ状態を通知したり、異常状態を通知するために点灯する。本実施形態では、このＬＥＤ２０４は、緑あるいはオレンジの点灯が可能である。
【００４２】
次に、フラッシュＲＯＭ１０２の記憶領域の構成について、図３を用いて説明する。
【００４３】
図３は本発明の実施形態のフラッシュＲＯＭの記憶領域の構成を示す図である。
【００４４】
本実施形態では、フラッシュＲＯＭ１０２のアドレスの先頭番地（００００００００００）から０ｘ００００ＦＦＦＦ番地の記憶領域に、ユーザプログラム領域を書き換えるための書換プログラムを格納するためのダウンロードプログラム領域を確保している。
【００４５】
尚、この書換プログラムは、外部（本実施形態の場合は、ホストコンピュータ）よりユーザプログラム領域を書き換えるためのデータを受信して、実際に書換を行うまでに必要な各種処理（後述するのフラッシュＲＯＭ書換ルーチン）を実現するプログラムを意味するものである。
【００４６】
また、０ｘ０００１００００番地から０ｘ００３ＦＦＦＦＦ番地の記憶領域に、通常、記録装置１００の機能を実現するための制御プログラム（インタプリタ、ラスタライザ、レンダラ等）を格納するためのユーザプログラム領域を確保している。また、それぞれの記憶領域では、チェックサム値が０となるように、１６ビットのチェックサムデータが格納されている。
【００４７】
尚、本実施形態では、フラッシュＲＯＭ１０２に記憶されているプログラムやデータが、記録装置１００に対するファームウェアとなり、これには、ダウンロードプログラム領域中の書換プログラム、ユーザプログラム領域中の各種プログラムが含まれる。
【００４８】
次に、本実施形態の記録装置が実行する処理について、図４を用いて説明する。
【００４９】
図４は本発明の実施形態の記録装置が実行する処理を示すフローチャートである。
【００５０】
尚、図４の処理では、ファームウェアの更新を行うためのダウンロードモードと、ユーザが通常の記録装置として使用するユーザモードの２種類のモードが存在する。
【００５１】
ここで、ダウンロードモードは、記録装置１００のＡＣオン状態で、かつ記録装置１００の電源がＯＮでない状態（つまり、電源ボタン２０１が押下されて、電源ＯＮになっていない状態）で、フラッシュＲＯＭ１０２のダウンロードプログラム領域中の書換プログラムを実行（起動）して、ユーザプログラム領域の書換を実行するモードである。ここで、ＡＣオン状態とは、記録装置１００と外部電源（ＡＣ電源あるいはＤＣ電源）とが接続されていて、電源ボタン２０１が押下されると、いつでも記録装置１００の電源がＯＮにできる場合の通電状態を指している。
【００５２】
一方、ユーザモードは、電源ボタン２０１によって、記録装置１００の電源ＯＮ後、フラッシュＲＯＭ１０２のユーザプログラム領域中の制御プログラムを実行（起動）するモードである。
【００５３】
以下、具体的な処理について、図４を参照して説明する。
【００５４】
記録装置１００がＡＣオンとなると、まず、ステップＳ４００で、ダウンロードプログラム領域の１６ビットのチェックサムデータのチェックを行う。チェックサムは、図３で説明したように、ダウンロードプログラム領域のチェックサム値は「０」になるようにして格納しているので、ここでは、チェックサム値が０であるか否かをチェックする。また、これに加えて、フラッシュＲＯＭ１０２の結線チェックを行うようにしても良い。
【００５５】
ステップＳ４０１において、チェックサム値が「０」でない場合（ステップＳ４０１でＮＯ）、ステップＳ４０２に進み、フラッシュＲＯＭ１０２に異常が発生していることを示すエラーとして、ＬＥＤ２０４をオレンジと緑とを交互に点滅させるエラー点滅を実行する。
【００５６】
但し、この場合、ダウンロードプログラム領域が壊れている可能性が非常に高いため、ＬＥＤ２０４を点滅させることすらできない場合もある。そして、その場合にのみ、サービスマンコールに電話して記録装置の点検を依頼したり、修理窓口に記録装置を持参して点検依頼を行うことになる。一方、それ以外の場合は、このエラー・トグル点滅によって、ユーザは、フラッシュＲＯＭ１０２の異常を認知することが可能となり、ユーザ自身でフラッシュＲＯＭ１０２の異常を回復することが可能となる。
【００５７】
一方、ステップＳ４０１において、チェックサム値が「０」である場合（ステップＳ４０１でＹＥＳ）、ダウンロードプログラム領域内のプログラムが正常に格納されていると判定して、ステップＳ４０３に進む。
【００５８】
ステップＳ４０３で、続行ボタン２０２が押下されているか否かを判定する。押下されていない場合（ステップＳ４０３でＮＯ）、ステップＳ４１０に進む。
【００５９】
ステップＳ４１０で、ユーザプログラム領域、つまり、０ｘ０００１００００から０ｘ００４０００００の１６ビットのチェックサムデータのチェックを行う。ユーザプログラム領域もチェックサム値を「０」にして格納しているので、ここでは、チェックサム値が「０」であるか否かをチェックする。また、これに加えて、フラッシュＲＯＭ１０２の結線チェックを行うようにしても良い。
【００６０】
ステップＳ４１１で、チェックサム値が「０」でない場合（ステップＳ４１１でＮＯ）、ユーザプログラム領域が何らかの要因により破壊されている可能性があるので、ステップＳ４０９に進み、ユーザプログラム領域の書換を実行するために、ダウンロードモード（フラッシュＲＯＭ書換ルーチン）に移行する。
【００６１】
一方、チェックサム値が「０」である場合（ステップＳ４１１でＹＥＳ）、ダウンロードモードを終了し、ユーザモードのソフトパワーオフ状態、つまり、電源ボタン２０１の押下待ち状態になる。
【００６２】
一方、ステップＳ４０３で、続行ボタン２０２が押下されている場合（ステップＳ４０３でＹＥＳ）、この時点で、ダウンロードモードであることを示すために、ステップＳ４０４で、ＬＥＤ２０４を緑に点灯する。その後、ステップＳ４０５で、続行ボタン２０２が離されるまでずっとループし、ステップＳ４０６で、電源ボタン２０１が押下されたか否かを判定する。
【００６３】
電源ボタン２０１が押下された場合（ステップＳ４０６でＹＥＳ）には、ステップＳ４０７に進み、電源ボタン２０１が押下されたことを示す押下フラグをＯＮにして、ＲＡＭ１０４に記憶しておく。
【００６４】
尚、この押下フラグは、デフォルトはＯＦＦに設定されており、電源ボタン２０１が押下された場合にＯＮに設定される。そして、この押下フラグのＯＮ／ＯＦＦによって、ＵＳＢのディスクリプタ情報のホストコンピュータへの返信の有無を決定する。そのため、この押下フラグは、ディスクリプタ情報の１つである装置固有のシリアル番号の有無を示す有無情報として捉えることができる。
【００６５】
このように、続行ボタン２０２を押してダウンロードモードを立ち上げる場合に、電源ボタン２０１により、シリアル番号の有無を切り替えることにより、工場やサービスセンター等で実行する大量のフラッシュＲＯＭ書換時に、ホストコンピュータに無駄に多くのプリンタが登録されることを回避することが可能になる。
【００６６】
一方、続行ボタン２０２が離されるまでに、電源ボタン２０１が押下されなかった場合（ステップＳ４０５で）、ステップＳ４０８へ進む。この場合は、後述するステップＳ４０９のフラッシュＲＯＭ書換ルーチン内で、ＵＳＢのディスクリプタ情報を作成する際に、ＥＥＰＲＯＭ１０５へアクセスして、ユーザモードで使用しているシリアル番号を取得して、ホストコンピュータに返信されることになる。
【００６７】
その後、ステップＳ４０８で、一旦、ＬＥＤ２０４を消灯する。次に、ステップＳ４０９で、フラッシュＲＯＭ書換ルーチンを実行する。尚、このフラッシュＲＯＭ書換ルーチンの詳細については、図５を用いて説明する。
【００６８】
ステップＳ４０９の処理が終了すると、ステップＳ４１０に進み、ユーザプログラム領域の１６ビットのチェックサムデータのチェックを行う。そして、ステップＳ４１１で、チェックサム値が「０」である場合（ステップＳ４１１でＹＥＳ）、ダウンロードモードを終了し、ユーザモードへ移行する。一方、チェックサム値が「０」でない場合（ステップＳ４１１でＮＯ）、ダウンロードが正常に終了しなかったことを意味するので、ステップＳ４０９に戻り、フラッシュＲＯＭ書換ルーチンを再実行する。
【００６９】
このように、本実施形態では、ダウンロードモードに入って、フラッシュＲＯＭ１０２を書き換えようとした場合に、仮に書換を失敗しても、正常にダウンロードができるまで、ユーザモードが起動しないように制御される。
【００７０】
次に、図４のステップＳ４０８のフラッシュＲＯＭ書換ルーチンの詳細について、図５を用いて説明する。
【００７１】
図５は本発明の実施形態のフラッシュＲＯＭ書換ルーチンの詳細を示すフローチャートである。
【００７２】
まず、ステップＳ５００で、ＬＥＤ２０４の点滅制御を行うためのタイマーの初期化を行うとともに、タイマーによる計時を開始する。
【００７３】
尚、このタイマーは、ＣＰＵ１０３によるソフトタイマーでも、ハードウェアで実現されても良い。また、本実施形態では、タイマー周期を５００μＳｅｃとしている。そして、このタイマーから随時時間を取得して、経過時間を計算し、ＬＥＤ２０４の点滅制御を行う。
【００７４】
具体的には、ＬＥＤ点滅制御を実行するためのＬＥＤ点滅周期制御関数を作成しておき、この関数を、時間のかかる処理の間や時間にシビアでない期間で呼び出すことにより、タイマーから時間を確認し、ＬＥＤ点滅周期と比較し、点滅周期以上時間が経過した場合は、点灯／消灯処理を行う。
【００７５】
ステップＳ５０１で、ＬＥＤ２０４の点滅周期をグローバルデータとしてＲＡＭ１０４に記憶し、このグローバルデータに基づいて、ＬＥＤ２０４の点滅を開始する。特に、本実施形態では、エラー発生時、ダウンロードデータ受信開始時には、この点滅周期のグローバルデータを書き換え、点滅周期を変更している。
【００７６】
次に、ステップＳ５０２で、ホストコンピュータから受信するユーザプログラム領域を書き換えるためのダウンロードデータ（更新用データ）に基づいて、ダウンロードプログラム領域に書き込む実際のＲＯＭイメージを作成し、そのＲＯＭイメージを格納するバッファを０ｘＦＦで埋めて、バッファの初期化を行う。この処理では、ループにより、０ｘＦＦをＲＡＭ１０４に確保されるバッファに書き込んでいるので、ループの途中に、ＬＥＤ点滅周期制御関数を呼び出し、ＬＥＤ２０４の点滅が乱れないようにしている。
【００７７】
次に、ステップＳ５０３で、ＥＥＰＲＯＭ１０５よりユーザモード時に使用するシリアル番号・出荷時設定情報を取得する。この処理でも、ＥＥＰＲＯＭ１０５の読出に時間を要するので、ＬＥＤ点滅周期制御関数を適所に呼び出して、ＬＥＤの点滅周期が乱れないようにしている。
【００７８】
次に、ステップＳ５０４で、インターフェース１１１の初期化を行う。具体的には、ＵＳＢで使用するＥｎｄｐｏｉｎｔ０、１、２のレジスタの初期化を行う。
【００７９】
次に、ステップ５０５で、ホストコンピュータより受信するダウンロードデータを格納するためのリングバッファの初期化を行う。このリングバッファは、例えば、ＲＡＭ１０４に確保される。
【００８０】
次に、ステップＳ５０６で、ＲＡＭ１０４に記憶されている押下フラグの内容（ＯＮ／ＯＦＦ）と、ステップＳ５０３で取得したシリアル番号・出荷時設定情報から、記録装置１００の種類を示すモデル名を作成して、ホストコンピュータと接続を確立するためのディスクリプタ情報を作成する。この処理も時間のかかる処理なので、ＬＥＤ点滅周期制御関数を適所に呼び出して、ＬＥＤ２０４の点滅が乱れないようにしている。
【００８１】
次に、ステップＳ５０７で、ＵＳＢ関連の割込を許可して、接続確立及びホストコンピュータからのデータの送信を待機する。
【００８２】
次に、ステップ５０８でのループに入る。まず、ステップ５０９で、リングバッファよりダウンロードデータの取得を行いながら、ＬＥＤ点滅周期制御関数を呼び出し、ＬＥＤ点滅を実行する。ステップＳ５０９で、リングバッファからダウンロードデータを取得できた場合には、特に、本実施形態では、モトローラのＳフォーマットを使用しているので、それに基づいて、ステップＳ５１０で、コマンド処理を随時実行していき、ＲＡＭ１０４上のバッファにＲＯＭイメージを作成していく。
【００８３】
そして、リングバッファからのダウンロードデータの取得が完了すると、ステップＳ５１１で、バッファ上のＲＯＭイメージのフラッシュＲＯＭ１０２への書込を行う。このフラッシュＲＯＭ１０２への書込も時間のかかる処理なので、ＬＥＤ点滅周期制御関数を適所に呼び出して、ＬＥＤ２０４の点滅が乱れないようにしている。
【００８４】
次に、ステップＳ５１２で、ＬＥＤ点滅周期制御関数を呼び出し、電源ボタン２０１の操作の監視を行い、電源ボタン２０１の押下の有無を判定する。電源ボタン２０１が押下されていない場合（ステップＳ５１２でＮＯ）、押下されるまで待機する。一方、電源ボタン２０１が押下された場合（ステップＳ５１２でＹＥＳ）、ステップＳ５１３に進み、ＬＥＤ点滅制御を終了し、タイマーを止める。
【００８５】
そして、ステップＳ５１４で、割込を禁止して、フラッシュＲＯＭ書換ルーチンを終了する。
【００８６】
フラッシュＲＯＭ書換ルーチン時にエラーが発生した場合、または、ホストコンピュータよりダウンロードデータでないファイルが送信されてきた場合、コマンド解析でエラーが発生した場合等のエラーが発生した場合は、グローバルデータを変更し、ステップＳ５１２で、電源ボタン２０１の押下を待機しながら、ＬＥＤ点滅周期制御関数を呼び出し、エラー点滅を行う。
【００８７】
また、フラッシュＲＯＭ書換ルーチン中に、ユーザに記録装置１００の電源を遮断されないようにするために、ホストコンピュータ側にはＵＳＢのプリンタクラスのリクエストであるＤｅｖｉｃｅ  ＩＤでダウンロードの進行状況、また、エラー状況等のダウンロードモードの進捗状況を通知している。
【００８８】
そして、その進行状況やエラー状況を専用ダイアログ（例えば、記録装置１００のプリンタドライバで実現される）で、ホストコンピュータのディスプレイ上に表示することで、ユーザに記録装置の状態を通知したり、ユーザの記録装置１００に対する誤操作（フラッシュＲＯＭ書換ルーチン中の電源遮断等）を防止するための注意喚起を行うことが可能となる。
【００８９】
尚、フラッシュＲＯＭ書換ルーチンによるダウンロードデータの書込の際には、ダウンロードデータのファイルバージョン及び対応機種、書換元と書換先のダウンロードデータが同一であるか否かを確認する情報やフラッシュＲＯＭ１０２への書換状況を示す情報からなる書換状況情報を、セクタ単位でＥＥＰＲＯＭ１０５に管理しながら、書換を実行するようにしても良い。このように構成することで、ダウンロードが途中で失敗して、再度ダウンロードを試みる場合に、前回失敗したセクタ（書換が未完了のセクタ）から再開することが可能となるので、失敗時の再ダウンロードの時間短縮を図ることができる。
【００９０】
また、本実施形態では、ホストコンピュータから更新用のファームウェアをダウンロードして、ファームウェアを更新する構成としたが、記録装置１００がメモリカードスロットのような着脱可能な記憶媒体の専用スロットや外部記憶装置（ハードディスク、光ディスクドライバ（ＣＤ−ＲＯＭ／Ｒ／ＲＷ、ＤＶＤ−ＲＯＭ／ＲＡＭ／ＲＷ等）等）を有している場合には、その記憶媒体に更新用のファームウェアを記憶させて、その記録媒体から更新用のファームウェアをダウンロードして、ファームウェアを更新する構成としても良い。更には、ネットワークインタフェースを有している場合には、ネットワーク上の機器（サーバ、外部記憶装置）から、更新用のファームウェアをダウンロードして、ファームウェアを更新する構成としても良い。
【００９１】
以上説明したように、本実施形態によれば、ユーザがファームウェアの更新を行っている場合に発生する、電源ケーブル断や、停電など不慮の事故によるダウンロードの失敗や、フラッシュＲＯＭそのものが壊れている、あるいはフラッシュＲＯＭの記憶領域が壊れている場合には、その状況に応じて、ダウンロードモードによるファームウェアの更新の試行、あるいはエラーの通知を行い、ユーザモードへの移行を禁止する。
【００９２】
これにより、例えば、フラッシュＲＯＭの記憶領域が壊れているから動作しないことが認識できなくても、ファームウェアのダウンロードによる復旧が可能である場合には、各自にダウンロードモードに移行して、復旧を図ることができる。そのため、もしもの場合にもユーザに錯誤を与えることなく、装置を復旧するためのファームウェアのダウンロードという最良の選択を行うことができる。
【００９３】
また、ユーザモードに移行する場合にも、フラッシュＲＯＭのチェックを行い、エラーが発見された場合には、ダウンロードモードに自動的に移行して、再度、ダウンロードモードによってユーザプログラム領域の更新を行う。これにより、ダウンロード失敗のエラーを見逃しても次回の起動時もダウンロードモードで開始されるので、フラッシュＲＯＭの内容が不正であるために起きるプリンタの異常動作を防止することができる。
【００９４】
また、続行ボタンを押してダウンロードモードを立ち上げる場合に、電源ボタンにより、装置のシリアル番号のホストコンピュータへの通知の有無を切り替えることにより、工場や、サービスセンター等で実行する大量のフラッシュＲＯＭ書換時に、ホストコンピュータに無駄に多くのプリンタが登録されることを回避することが可能になる。
【００９５】
また、Ｄｅｖｉｃｅ ＩＤによりダウンロードの進行状況やエラー状況等の各種状況をホストコンピュータへ通知することで、ホストコンピュータ上にその状況を表示させることで、ユーザにファームウェアに係る処理状況を容易に確認させることができる。
【００９６】
尚、本実施形態では、記録装置１００を例に挙げて説明したが、この記録装置１００を搭載するファクシミリ装置や、複写機等に本発明を適用することが可能である。また、本発明は、記録装置１００に限定されず、装置を制御するファームウェアを記憶するための書換可能な不揮発性メモリを有している周辺（例えば、スキャナ、デジタルカメラ、ハブ、ルータ）や、ハードウェア（例えば、パーソナルコンピュータ等に組み込まれるマザーボード、ビデオカード、ＳＣＳＩカード等）であれば、どのようなものにも適用することが可能である。
【００９７】
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００９８】
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図に示すフローチャートに対応したプログラム）を、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００９９】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１００】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０１０１】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【０１０２】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１０３】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１０４】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０１０５】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１０６】
【図１】本発明の実施形態の記録装置の構成を示すブロック図である。
【図２】本発明の実施形態の記録装置の外観を示す図である。
【図３】本発明の実施形態のフラッシュＲＯＭの記憶領域の構成を示す図である。
【図４】本発明の実施形態の記録装置が実行する処理を示すフローチャートである。
【図５】本発明の実施形態のフラッシュＲＯＭ書換ルーチンの詳細を示すフローチャートである。
【符号の説明】
【０１０７】
１００  記録装置
１０１  データ送受信部
１０２  フラッシュＲＯＭ
１０３  ＣＰＵ
１０４  ＲＡＭ
１０５  ＥＥＰＲＯＭ
１０６  記録部
１０７  操作部
【図１】
2005063050.tif 000003
【図２】
2005063050.tif 000004
【図３】
2005063050.tif 000005
【図４】
2005063050.tif 000006
【図５】
2005063050.tif 000007