(57)【特許請求の範囲】
【請求項１】
ＣＰＵ、制御プログラム及び第１通信プログラムを記憶する不揮発性メモリ、第１検査プログラム及び第２検査プログラムを含むブートプログラム並びに第２通信プログラムを記憶する書替え不能なメモリ、前記制御プログラムにより制御される制御部、並びに、他の装置と通信するための第１通信手段及び第２通信手段を備えた電子機器であって、
前記ＣＰＵは、
前記第１検査プログラムを実行することにより、前記制御プログラムを検査する第１検査を実施し、
前記第１検査において前記制御プログラムに異常が発見されると、前記第２検査プログラムを実行することにより、前記第１通信プログラムを検査する第２検査を実施し、
前記第１検査において前記制御プログラムに異常が発見された後、前記第２検査において前記第１通信プログラムに異常が発見されなかった場合は、前記第１通信プログラムを実行することにより前記第１通信手段を介して他の装置から制御プログラムをダウンロードする第１ダウンロードを実施し、
前記制御プログラム及び前記第１通信プログラムの両方で異常が発見された場合は、前記第２通信プログラムを実行することにより前記第２通信手段を介して他の装置から前記制御プログラム及び前記第１通信プログラムの両方をダウンロードする第２ダウンロードを実施し、
前記第１検査において前記制御プログラムに異常がない場合は、前記第２検査を実施することなく、前記制御プログラムを実行することを特徴とする電子機器。
【請求項２】
請求項１に記載の電子機器において、
前記第１通信手段は、一対複数接続可能な通信プロトコルを用いた通信方式であり、前記第２通信手段は、一対一接続可能な通信プロトコルを用いた通信方式であることを特徴とする電子機器。
【請求項３】
請求項１に記載の電子機器において、
前記第１通信手段は、論理層を有する通信プロトコルを用いる通信方式であり、前記第２通信手段は、論理層を有しない通信プロトコルを用いる通信方式であることを特徴とする電子機器。
【請求項４】
請求項１乃至３のいずれか一項に記載の電子機器において、
前記不揮発性メモリには、ダウンロードされた前記プログラムを前記不揮発性メモリに更新のために書き換える書き換えプログラムが記憶されており、
前記ＣＰＵは、
前記第２検査プログラムを実行することにより、前記第１通信プログラム及び前記書き換えプログラムを検査する前記第２検査を実施し、
前記第２検査において前記各プログラムに異常がない場合に、前記第１通信プログラムを実行することにより前記第１通信手段を介して他の装置から前記制御プログラムをダウンロードする前記第１ダウンロードを実施し、
前記第２検査において異常がある場合に、前記第２通信プログラムを実行することにより前記第２通信手段を介して他の装置から前記制御プログラム、前記第１通信プログラム及び前記書き換えプログラムをダウンロードする第２ダウンロードを実施し、さらに当該ダウンロードされた前記書き換えプログラムを実行することにより前記制御プログラム及び第１通信プログラムを前記不揮発性メモリに更新のために書き換える書換えを実施することを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタ等の電子機器に係り、詳しくは制御プログラム（ファームウェアプログラム）の動作に基づき制御される電子機器に係り、詳しくは制御プログラムのダウンロード機能を備えた電子機器に関する。
【背景技術】
【０００２】
従来、インクジェット式プリンタ等の電子機器においては、キャリッジモータ、紙送りモータ及び記録ヘッド等のアクチュエータ類を、印刷制御プログラム（ファームウェアプログラム）を実行して駆動制御することが行われている。この種の電子機器では、仕様の更新（バージョンアップ）等が頻繁に行われたり、顧客ニーズ応じた特定機能をプリンタに付与したりする目的などのために、ファームウェアプログラムは、通常、不揮発性メモリに書き込まれている場合が多く、仕様の更新時等には、新規バージョンのファームウェアプログラムを不揮発性メモリに上書きする更新が行われる（例えば特許文献１）。しかし、不揮発性メモリは書替え処理の際に誤ってプログラムの一部を消去してしまったり書替え漏れがあったりするなどして、マスクＲＯＭ等の書替え不能メモリ（読出し専用メモリ）に比べ、プログラム等のデータを破壊してしまう頻度が相対的に高かった。このように異常のあるプログラムが実行されてアクチュエータ類が駆動制御されることになると、電子機器が作動しなかったり、場合によっては異常動作により故障を誘発させたりする虞もある。
【０００３】
そこで、例えば、特許文献２には、プログラムの検査機能を備え、初期動作時に検査を行い、検査の結果、異常が発見された場合は、その印刷制御プログラムをダウンロードして更新する方法が開示されている。この方法では、印刷制御プログラムを検査して検査の結果、異常が発見された場合は、ホストコンピュータから印刷制御プログラムをダウンロードするものであった。なお、電子機器にダウンロード機能を持たせるためには、ダウンロード元のホストコンピュータの通信手段と通信できる通信プログラムをメモリに記憶させておく必要がある。
【特許文献１】特開平９−１１４６１４号公報
【特許文献２】特許第３５７２８６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ダウンロード用の通信プログラムが故障した場合、印刷制御プログラムを更新できなくなるという問題があった。
また、通信プログラムが故障した場合でもダウンロードできるように他のメモリにファームウェアプログラムおよび通信プログラムをダウンロードできる他の通信プログラム（第２通信プログラム）を記憶させておく構成も考えられる。しかし、近年、プリンタとホストコンピュータとの間の通信方式の主流となってきているＵＳＢインターフェイスを用いて通信を行う通信プログラムは、ＵＳＢ通信方式が１対多通信対応の通信プロトコルを採用するため、そのプログラムデータ容量が比較的大きなものとなっている。つまり、ＵＳＢ通信方式は、ホストコンピュータにその通信相手であるプリンタを認識させるために、プリンタに多くの固有情報等を要求するやりとりが必要で、固有情報データや多くの処理手順をプログラムに含ませる必要があり、通信プログラムのデータ容量が比較的膨大なものになりやすかった。そのため、このような通信プログラムを追加することは、他のメモリの記録領域を多く占めるため、他のメモリに他のプログラムを追加することを諦めたり、他のメモリをもっと記憶容量の大きな大サイズで高額なメモリに置き換えたり、さらにその他のメモリを追加するなどの対応を迫られる事態を招くこととなっていた。
【０００５】
本発明は、上記問題点を解決するためになされたものであって、その目的は、制御プログラムに異常があってさらに通信プログラムにも異常がある場合でも、制御プログラムをダウンロードできる電子機器を提供することにある。
【課題を解決するための手段】
【０００６】
本発明は、ＣＰＵ、制御プログラム及び第１通信プログラムを記憶する不揮発性メモリ、第１検査プログラム及び第２検査プログラムを含むブートプログラム並びに第２通信プログラムを記憶する書替え不能なメモリ、前記制御プログラムにより制御される制御部、並びに、他の装置と通信するための第１通信手段及び第２通信手段を備えた電子機器であって、前記ＣＰＵは、前記第１検査プログラムを実行することにより、前記制御プログラムを検査する第１検査を実施し、前記第１検査において前記制御プログラムに異常が発見されると、前記第２検査プログラムを実行することにより、前記第１通信プログラムを検査する第２検査を実施し、前記第１検査において前記制御プログラムに異常が発見された後、前記第２検査において前記第１通信プログラムに異常が発見されなかった場合は、前記第１通信プログラムを実行することにより前記第１通信手段を介して他の装置から制御プログラムをダウンロードする第１ダウンロードを実施し、前記制御プログラム及び前記第１通信プログラムの両方で異常が発見された場合は、前記第２通信プログラムを実行することにより前記第２通信手段を介して他の装置から前記制御プログラム及び前記第１通信プログラムの両方をダウンロードする第２ダウンロードを実施し、前記第１検査において前記制御プログラムに異常がない場合は、前記第２検査を実施することなく、前記制御プログラムを実行することを要旨とする。
【０００７】
ここで、第１ダウンロードの実施でダウンロードするために通信手段を介して通信する他の装置（第１の装置）は、ホストコンピュータ又は他の電子機器であることが好ましい。また、第２ダウンロードの実施でダウンロードするために通信手段を介して通信する他の装置（第２の装置）は、メンテナンスコンピュータ又は他の電子機器であることが好ましい。この場合、第１ダウンロード手段が通信する他の装置と、第２ダウンロード手段が通信する他の装置は、同一の装置であってもよいし、異なる装置であってもよい。特に、第１の装置がホストコンピュータであり、第２の装置がメンテナンスコンピュータであることが望ましい。この場合、第１の装置であるホストコンピュータが、第２の装置であるメンテナンスコンピュータを兼ねることも含む。以下の発明において同様である。
【０００８】
これによれば、第１検査では、不揮発性メモリに記憶された制御プログラムの異常を検査する。また、第２検査では、第１通信プログラムを検査する。第１検査において制御プログラムに異常が発見され、第２検査において第１通信プログラムに異常が発見されなかった場合は、ＣＰＵが、第１通信プログラムを実行することにより他の装置から制御プログラムをダウンロードして不揮発性メモリに書き込む更新を行う。一方、制御プログラムと第１通信プログラムの両方で異常が発見された場合（つまり第１検査と第２検査の両方で異常が発見された場合）は、ＣＰＵは、第２ダウンロード手段が、他の装置から制御プログラム及び第１通信プログラムの両方をダウンロードして不揮発性メモリに書き込む更新を行う。このとき、ＣＰＵが第２通信プログラムを実行することにより、第１通信プログラムをダウンロードして制御プログラムをダウンロードしない構成を採用した場合は、ダウンロードした第１通信プログラムを実行することにより制御プログラムをダウンロードする第１ダウンロードが実施される。よって、例えば不揮発性メモリに記憶されている制御プログラムが故障等しても制御プログラムを他の装置からダウンロードできるうえ、さらに第１通信プログラムまで故障等しても制御プログラムを他の装置からダウンロードすることができる。
【０００９】
ここで、第２ダウンロードで用いられる第２通信プログラムは、書替え不能なメモリに記憶されているので、不揮発性メモリに記憶されるプログラムに比べ書替えエラー等によるプログラムデータの一部消去等の事態が発生しにくい。よって、不揮発性メモリに記憶された制御プログラム及び第１通信プログラムの更新が必要になったとき、ＣＰＵは第２ダウンロードをまず実施可能である。
【００１０】
なお、この発明の電子機器において、前記第２通信プログラムは、前記第１通信プログラムよりデータ容量が小さいことが好ましい。この場合、第１通信プログラムと第２通信プログラムのそれぞれに用いられる通信手段（それぞれ第１通信手段と第２通信手段）の通信方式の違いに基づき第２通信プログラムが第１通信プログラムよりデータ容量が小さくなることが特に好ましい。こうすれば、第２通信プログラムを追加する場合でも、書替え不能メモリの大型化（大記憶容量化）を防止又は小さく抑えたり、あるいは書替え不能メモリの追加を防いだりすることができる。
【００１１】
また、本発明の電子機器では、前記第１通信手段は、一対複数接続可能な通信プロトコルを用いた通信方式であり、前記第２通信手段は、一対一接続可能な通信プロトコルを用いた通信方式であることが好ましい。
【００１２】
これによれば、第２通信プログラムは、一対一接続可能な通信プロトコルを用いた第２通信手段を介して通信するため、そのプログラム内容が比較的簡易（小データ容量）で済み、書替え不能メモリの記憶容量をさほど消費しない。また、第１通信プログラムは、一対複数接続可能な通信プロトコルを用いた第１通信手段を介して通信するので、例えばユーザが使用する場合に、ユーザが操作するダウンロード操作が簡単で済むので、ユーザにとって使い勝手がよくなる。
【００１３】
また、本発明の電子機器では、前記第１通信手段は、論理層を有する通信プロトコルを用いる通信方式であり、前記第２通信手段は、論理層を有しない通信プロトコルを用いる通信方式であることを要旨とする。
【００１５】
これによれば、第１検査では、不揮発性メモリに記憶された制御プログラムを検査する。また、第２検査では、不揮発性メモリに記憶された第１通信プログラムを検査する。第１検査により制御プログラムに異常が発見され、第２検査によっては第１通信プログラムに異常が発見されなかった場合は、ＣＰＵが、第１通信プログラムを実行することにより、他の装置から第１通信手段を介して制御プログラムをダウンロードして不揮発性メモリに書き込む更新を行う。一方、制御プログラムと第１通信プログラムの両方で異常が発見された場合（つまり第１及び第２検査の両方が異常を発見した場合）は、ＣＰＵが、第２通信プログラムを実行することにより、他の装置から第２通信手段を介して制御プログラム及び第１通信プログラムの両方をダウンロードする第２ダウンロードを実施してこれらのプログラムを不揮発性メモリに書き込んで更新を行う。
【００１６】
このため、例えば不揮発性メモリに記憶されている制御プログラムが故障等してもダウンロードできるうえ、さらに第１通信プログラムまで故障等しても、制御プログラム及び第１通信プログラムの両方を他の装置からダウンロードして更新できる。このとき、第２通信プログラムは、論理層を有しない通信プロトコルを用いる第２通信手段を用いて通信するため、そのプログラム内容が比較的簡易（小データ容量）で済み、書替え不能メモリの記憶容量をさほど消費しない。また、第１通信プログラムは、論理層を有する通信プロトコルを用いる第１通信手段を介して通信するので、例えばユーザが使用する場合に、ユーザが操作するダウンロード操作が簡単で済み、ユーザにとって使い勝手がよくなる。また、不揮発性メモリに記憶された各プログラムは、書替え処理時に故障等する可能性が相対的に高いが、書替え処理が行われない書替え不能メモリに記憶された第２通信プログラムはこの種の故障等の心配がほとんどないので、他の装置からのダウンロードはまず可能である。
【００１７】
なお、メンテナンスコンピュータから制御プログラム及び第１通信プログラムをダウンロードする構成を採用した場合は、その後、制御プログラムに再び異常が発見された場合は第１通信プログラムの動作に基づいてホストコンピュータからダウンロードすることが可能である。また、メンテナンスコンピュータから制御プログラムだけをダウンロードする構成を採用した場合は、その後、制御プログラムの異常が再び発見されるとその度に、メンテナンスコンピュータからダウンロードすることになるが、電子機器のダウンロード機能は損なわれない。さらに、メンテナンスコンピュータから第１通信プログラムだけをダウンロードする構成を採用した場合は、そのダウンロードした第１通信プログラムを実行することによりホストコンピュータから制御プログラムをダウンロードし、その後、再び制御プログラムに異常が発見された場合は、第１通信プログラムを実行することによりホストコンピュータからダウンロードすることができる。
【００１８】
また、本発明の電子機器では、前記ＣＰＵは、前記第２通信プログラムを実行することにより、他の装置から制御プログラム及び第１通信プログラムをダウンロードすることが好ましい。
【００１９】
これによれば、ダウンロードした制御プログラム及び第１通信プログラムは不揮発性メモリに書き込まれ、このとき旧プログラム（異常プログラム）を消去してから更新プログラムを書き込むことになる。例えば制御プログラムだけをダウンロードした場合、その書替え更新の際に第１通信プログラムや書き換えプログラムの少なくとも一部が誤って消去されることもあり得るが、本発明の場合は、制御プログラムと一緒に第１通信プログラムがダウンロードされるので、プログラム更新後に第１通信プログラムに異常が発見されることを抑えることができる。よって、その後、再び制御プログラムの異常が発見された場合、更新のための制御プログラムを他の装置からダウンロードできる確率が高くなる。
【００２０】
また、本発明の電子機器では、前記不揮発性メモリには、ダウンロードされた前記プログラムを前記不揮発性メモリに更新のために書き換える書き換えプログラムが記憶されており、前記ＣＰＵは、前記第２検査プログラムを実行することにより、前記第１通信プログラム及び前記書き換えプログラムを検査する前記第２検査を実施し、前記第２検査において前記各プログラムに異常がない場合に、前記第１通信プログラムを実行することにより前記第１通信手段を介して他の装置から前記制御プログラムをダウンロードする前記第１ダウンロードを実施し、 前記第２検査において異常がある場合に、前記第２通信プログラムを実行することにより前記第２通信手段を介して他の装置から前記制御プログラム、前記第１通信プログラム及び前記書き換えプログラムをダウンロードする第２ダウンロードを実施し、さらに当該ダウンロードされた前記書き換えプログラムを実行することにより前記制御プログラム及び第１通信プログラムを前記不揮発性メモリに更新のために書き換える書換えを実施することが好ましい。
【００２１】
これによれば、第２検査では、第１通信プログラム及び書き換えプログラムを検査する。第２検査により異常がない場合に、ＣＰＵは、第１通信プログラムを実行することにより、第１通信手段を介して他の装置から制御プログラムをダウンロードする。一方、第２検査により異常がある場合に、ＣＰＵは、第２通信プログラムを実行することにより第２通信手段を介して他の装置から制御プログラム、第１通信プログラム及び書き換えプログラムをダウンロードする。第２ダウンロードでダウンロードした制御プログラム、第１通信プログラム及び書き換えプログラムは不揮発性メモリに更新のために書き換えられ、このとき旧プログラム（異常プログラムを含む）を消去してから更新プログラムを書き込むことになる。例えば制御プログラム及び第１通信プログラムだけをダウンロードした場合、その更新の際に書き換えプログラムの少なくとも一部が誤って消去されることもあり得るが、本発明の場合は、第１通信プログラム及び書き換えプログラムは、常に制御プログラムと一緒にダウンロードされるので、書き換えエラーにより動作できなくなる事態が起きにくくなる。よって、その後、再び制御プログラムの異常が発見された場合、更新のための制御プログラムを他の装置からダウンロードできる確率を高くすることができる。
【００２２】
また、本発明の電子機器では、前記ホストコンピュータは、前記メンテナンスコンピュータを兼ねていることが好ましい。
これによれば、制御プログラム及び第１通信プログラムの両方で異常が発見された場合（つまり第１及び第２検査の両方が異常を発見した場合）にも、第２ダウンロードでは、メンテナンスコンピュータを兼ねたホストコンピュータからダウンロードすることができる。このため、例えば第１通信手段から第２通信手段に電子機器との接続を変更すれば第２ダウンロード手段と通信可能となるので、例えばサービスマンを呼ぶなどの手間を省くことができる。
【００２３】
また、本発明の電子機器では、前記第１通信手段は、ＵＳＢ通信手段であることが好ましい。
これによれば、ＵＳＢ通信手段はパーソナルコンピュータ及び多くの電子機器に採用されている汎用性の高い通信手段であるので、比較的簡単にしかも簡単な操作で制御プログラムをダウンロードすることができる。
【００２４】
また、本発明の電子機器では、前記第２通信手段は、ＵＡＲＴ通信手段であることが好ましい。
これによれば、ＵＡＲＴ通信手段は、パーソナルコンピュータ及び多くの電子機器に採用されている通信手段（例えばＲＳ−２３２Ｃ通信手段）と通信可能であるうえ、論理層を有しない通信プロトコルによる通信なので、第２通信プログラムのデータ容量を小さく抑えることができる。例えば、マスクＲＯＭ等の書替え不能メモリを大型（大記憶容量）のものに変更したり、他のＲＯＭを追加したりする事態を回避することも可能となる。
【００２５】
また、本発明の電子機器では、前記書替え不能メモリは、ブートプログラムを記憶するブートＲＯＭであり、前記ブートＲＯＭには、前記ブートプログラムの一部として検査プログラムが記憶されており、前記第１及び第２検査のうち少なくとも一方は、前記検査プログラムの動作に基づき検査を行うことが好ましい。
【００２６】
これによれば、電子機器の電源を投入すると、まずブートプログラムの動作に基づき行われるブート処理動作の中で、検査プログラムの動作に基づき第１及び第２検査のうち少なくとも一方がプログラム検査を行うので、プログラムに異常があれば電子機器の立ち上げ時に発見することができる。このため、電子機器の立ち上げ後に電子機器が異常動作することを未然に防ぐことができる。例えば電子機器が異常動作すると、駆動手段やそれにより駆動される機構・部品等が壊れる虞があるが、そのような事態を未然に防ぐことができる。
【００２７】
なお、検査プログラム（第１検査プログラム）がブートプログラムの一部として前記ブートＲＯＭに記憶されており、第１検査では、ＣＰＵが検査プログラム（第１検査プログラム）を実行することにより検査を行うことが好ましい。こうすれば、制御プログラムの検査は電子機器の立ち上げ時に行われるので、その結果、異常があった場合に、ユーザの操作を契機として、あるいは第２検査手段がその異常の通知を受けて自立的に起動されて第２検査を行うことができる。このため、少なくとも制御プログラムに異常があるまま駆動手段が駆動されることは回避できる。
【００２８】
また、本発明の電子機器では、前記第１及び第２検査では、ＣＰＵが前記ブートＲＯＭに前記ブートプログラムの一部として記憶された前記検査プログラムを実行することにより検査を行うことが好ましい。
【００２９】
これによれば、制御プログラム及び第１通信プログラムの検査は、ＣＰＵがブートＲＯＭに記憶された検査プログラム（それぞれ第１検査プログラム及び第２検査プログラム）を実行することにより電子機器の立ち上げ時に行われる。その結果、異常のあるプログラムを電源立ち上げ時に発見できるうえ、適切なダウンロードを直ぐに行うことができる。また、検査されないプログラムがある場合にユーザにその検査されないプログラムの検査のための操作を強いることもなく、ユーザの負担を軽減もしくは無くすことができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明を具体化した一実施形態を図１〜図３に従って説明する。
図１は電子機器システム（プリンタシステム）の電気的構成を示している。プリンタシステムは、プリンタ１０、ホストコンピュータ４０及びメンテナンスコンピュータ５０を備えている。プリンタ１０は、ホストコンピュータ４０から送信される印刷データに基づいて印刷処理を行う。また、プリンタ１０は、ホストコンピュータ４０から印刷制御プログラム（ファームウェアプログラム）をダウンロードする機能を有している。メンテナンスコンピュータ５０は、ホストコンピュータ４０からのダウンロードが不能になった場合、ホストコンピュータ４０が印刷データの送信のために使用される通信端子（ＵＳＢ端子）とは異なる通信端子を介してプリンタ１０にダウンロードするためのコンピュータである。ホストコンピュータ４０とメンテナンスコンピュータ５０は共にパーソナルコンピュータ（ＰＣ）であり、メンテナンスコンピュータ５０については、例えばダウンロード処理を行うサービスマンが持ち運びやすいように携帯型のノートＰＣが用いられている。
【００３１】
プリンタ１０は、プリンタコントローラ（以下、「コントローラ１１」と称す）、プリンタエンジン１２、電源１３およびコントロールパネル１４などを備えている。コントロールパネル１４（操作パネル）は、各種印刷メニューや印刷条件情報（用紙サイズ、印刷モード等）などを表示させる表示部１５と、プリンタ１０に対して所定の指令や設定情報等を入力するための操作に用いられる操作部１６とを備えている。操作部１６は、例えば電源スイッチ、印刷実行スイッチ、メンテナンススイッチ、表示部１５に表示された各種メニューや設定情報等を選択する選択スイッチ、その選択した内容を決定する決定スイッチなどからなる。
【００３２】
プリンタエンジン１２は、印刷を実行するためにプリンタ１０に備えられたアクチュエータ類で構成される。アクチュエータ類としては、例えば印刷のためにインクを噴射（吐出）する記録ヘッド、記録ヘッドを搭載したキャリッジを主走査方向に往復移動させるキャリッジモータ、記録媒体としての印刷用紙を給紙・紙送り・排紙のために副走査方向に搬送する搬送ローラ等を駆動させる紙送りモータなどから構成されている。本実施形態では、プリンタ１０に備えられる全ての駆動手段、すなわちアクチュエータ類からコントロールパネル１４に及ぶ全てがファームウェアプログラムの実行により駆動制御される。
【００３３】
また、電源１３は家庭用交流電源からの交流電圧（例えば１００Ｖ）を降圧・整流等させてプリンタ１０で用いられる直流電圧に変換する例えばＡＣ−ＤＣコンバータ等を内蔵する。電源１３は、出力する直流電圧として、アクチュエータ類の駆動に用いられる動力系の電圧（例えば42Ｖ等）と操作パネル系の電圧（例えば５Ｖ）と制御系（ロジック系）の電圧（例えば3.3Ｖ）を生成する。
【００３４】
コントローラ１１は、プリンタ１０を統括的に制御する制御部である。例えば、プリンタエンジン１２の駆動制御を司り、さらにホストコンピュータ４０との間で行われる、印刷処理に必要な印刷データ等の各種データおよび各種指令を受信する通信および、後述のプログラムダウンロード処理のための通信を司る。その他、電源１３の制御や、コントロールパネル１４の制御を司り、例えば表示部１５に各種メニュー等を表示したり、操作部１６からの入力信号に基づき表示部１５の表示内容を切り替えたりする表示処理、操作部１６から入力した設定情報を記憶する設定処理などを行う。また、メンテナンスコンピュータ５０との間で行われる、後述のプログラムダウンロード処理のための通信を司る。プリンタエンジン１２の駆動制御は、内蔵する後述のＣＰＵ３１がファームウェアプログラムを実行することにより行われる。
【００３５】
コントローラ１１は、カスタムＬＳＩとしてのＡＳＩＣ２０（Application Specific Integrated Circuit）（特定用途向け集積回路）、不揮発性メモリとしてのフラッシュＲＯＭ２１、ＲＡＭ２２、およびプリンタエンジン制御部（以下、「エンジン制御部２３」と称す）などから構成されている。フラッシュＲＯＭ２１としては、ＥＰＲＯＭが用いられ、特に本実施形態では電気的に記憶を消去できるＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）を用いている。もちろん、記憶の消去に紫外線を用いるＵＶ−ＥＰＲＯＭを用いることもできる。カスタムＬＳＩとしては、ＡＳＩＣ以外に、ＦＰＧＡなどを用いてもよい。
【００３６】
フラッシュＲＯＭ２１には、ファームウェアプログラムを始めとする各種プログラム及び印刷処理に必要な各種データ等が記憶されている。ＲＡＭ２２は、ＣＰＵ３１が実行するプログラムデータ及びＣＰＵ３１がプログラムを実行して得られたデータ等を一時記憶する。エンジン制御部２３は、ＣＰＵ３１がファームウェアプログラムを実行してプリンタエンジン１２を駆動制御する際に用いられる各種ドライバ回路を備えており、ＡＳＩＣ２０から入力される制御信号及び制御データに基づいてプリンタエンジン１２を構成する各種アクチュエータを駆動制御する。
【００３７】
ＡＳＩＣ２０は、一つのチップで構成されており、ＣＰＵ（中央処理装置）３１、書替え不能メモリとしてのマスクＲＯＭ３２、第１通信手段としてのＵＳＢ（Universal Serial Bus）インターフェイス３３、第２通信手段としてのＵＡＲＴ（Universal Asynchronous Receiver Transmitter）インターフェイス３４及びエンジンインターフェイス３５を内蔵している。
【００３８】
ＵＳＢインターフェイス３３は、ＵＳＢコントローラおよびＵＳＢコネクタ３３ａを備えている。また、ＵＡＲＴインターフェイス３４は、ＵＡＲＴおよびコネクタ３４ａを備えている。コネクタ３４ａとしては例えばＲＳ−２３２Ｃコネクタが用いられている。
【００３９】
ＵＡＲＴインターフェイス３４が内蔵するＵＡＲＴは、ホストコンピュータ４０から送られてくるシリアル信号をパラレル信号に変換してＣＰＵ３１に転送したり、ＣＰＵ３１から送られてくるパラレル信号をシリアル信号に変換してコネクタ３４ａに出力したりする通信回路である。ＵＡＲＴはシリアルデータ通信用のコントローラとして機能し、簡易通信プログラム言語を使用して、フロー制御やデータの整形、訂正などを行なう。ＵＡＲＴは通信に用いられる通信プロトコルに論理プロトコル層を有していない。このため、通信相手が特定された１対１通信を行う。
【００４０】
ホストコンピュータ４０と通信するときは、プリンタ１０のＵＳＢコネクタ３３ａとホストコンピュータ４０の本体４１に設けられているＵＳＢコネクタ４１ａとを通信ケーブル１８で接続して使用する。メンテナンスコンピュータ５０と通信するときは、プリンタ１０のコネクタ３４ａとメンテナンスコンピュータ５０のコネクタ５０ａ（例えばＲＳ−２３２Ｃコネクタ）とを通信ケーブル１９（例えばＲＳ−２３２Ｃケーブル）で接続して使用する。
【００４１】
ホストコンピュータ４０は、本体４１、表示装置４２、入力装置としてのキーボード４３及びマウス４４を備えている。本体４１にはＣＤ−ＲＯＭ４８の記憶されたデータを読み取る読取装置４５が内蔵されている。例えばプリンタ１０を購入したときに付属されるＣＤ−ＲＯＭ４８にプリンタドライバプログラム等が記憶されており、読取装置４５にＣＤ−ＲＯＭ４８をセットしてプリンタドライバプログラム等をハードディスクにインストールして使用する。本実施形態では、このＣＤ−ＲＯＭ４８にダウンロード処理のために必要な各種プログラムも記憶されており、プリンタドライバプログラムと共にハードディスクに一緒にインストールして使用される。なお、メンテナンスコンピュータ５０についても、ユーザが使用する場合と、サービスマンが使用する場合とがあり、ユーザが使用する場合には、プリンタ１０に付帯されたＣＤ−ＲＯＭ４８にメンテナンス時のダウンロードのためのプログラムが記憶されていて、ホストコンピュータ４０のハードディスクに一緒にインストールされるようにする。またサービスマンが使用する場合は、サービスマン専用のパーソナルコンピュータにメンテナンス用プログラムをインストールしてメンテナンスコンピュータ５０とするようにする。
【００４２】
ここで、プリンタ１０に記憶された後述のファームウェアプログラムが不揮発性メモリであるフラッシュＲＯＭ２１に記憶されているため、書替え処理の際にプログラムの一部が上書きにより消去されたり書替え漏れなどが発生したりし易く、ファームウェアプログラムが破壊される場合がある。プリンタ１０にはファームウェアプログラムをダウンロードのためにホストコンピュータ４０との間で通信する通信プログラムは記憶しており、ファームウェアプログラムが上記の理由等が原因で故障したときには、ファームウェアプログラムをホストコンピュータ４０からダウンロードして更新する。しかし、ＵＳＢ通信プログラムもフラッシュＲＯＭ２１に記憶されているため、ＵＳＢ通信プログラムも破壊されることがあり得る。このような場合に、本実施形態では、メンテナンスコンピュータ５０からＵＳＢ通信プログラム及びファームウェアプログラムをダウンロードするようにしている。
【００４３】
なお、ホストコンピュータ４０もメンテナンスコンピュータ５０も共にパーソナルコンピュータ（ＰＣ）であり、ハードウェア上及びソフトウェア上の違いは特にない。メンテナンス時のダウンロードはプリンタ１０のＵＡＲＴインターフェイス３４を使用して行うため、プリンタ１０とどの端子を接続して通信するかだけが異なる。もちろん、メンテナンス時のダウンロードは、ＵＡＲＴを用いて通信を行っている関係上、論理層のない通信プロトコルなので、種々の指定の操作はオペレータ（サービスマン又はユーザなど）が行う必要がある。メンテナンスコンピュータ５０は、シリアルポートとしてＲＳ−２３２Ｃインターフェイス５１を備えている。
【００４４】
プリンタ１０側のＵＡＲＴインターフェイス３４内のＵＡＲＴは、ＣＰＵ３１に制御され、メンテナンスコンピュータ５０側の通信インターフェイス５１（ＲＳ−２３２Ｃインターフェイス）からシリアル通信で受信した更新プログラムデータのシリアルなビットストリームをパラレルのビットストリームに変換してバス３６を介してＣＰＵ３１に転送する。ＵＡＲＴとＲＳ−２３２Ｃは通信フォーマットが同じなので、直接シリアル通信を行うことができる。なお、コネクタ３４ａ及び５０ａには、ＲＳ−２３２Ｃ通信方式のコネクタとして、例えばD-sub9ピンやD-sub25ピンなどが用いられている。
【００４５】
メンテナンスコンピュータ５０からデータ送信操作を行うと、まず物理層である通信回路間における物理接続が行われる。次にメンテナンスコンピュータ５０からＵＡＲＴ接続要求が出され、これにＵＡＲＴインターフェイス３４が応答する形でＵＡＲＴ接続が確立される。次に論理接続が行われる。メンテナンスコンピュータ５０から論理接続を要求し、これにプリンタ１０のＵＡＲＴインターフェイス３４が応答することで論理接続が確立される。論理接続が確立されると、データ転送が開始される。プリンタ１０側のＵＡＲＴインターフェイス３４のＵＡＲＴは、ＣＰＵ３１へデータを転送する。ダウンロードが完了すると、論理接続が切断され、次いで物理接続が切断されることにより、通信リンクが遮断される。１対１通信対応であるＵＡＲＴ通信方式およびＲＳ−２３２Ｃ通信方式は、通信相手が固定なので通信相手を認識させるための手順がなく、１対多通信対応であるＵＳＢ通信方式で採用されるこの種の機能を果たす論理層がない通信プロトコルとなっている。
【００４６】
図２は、プリンタ１０側のマスクＲＯＭ３２及びフラッシュＲＯＭ２１、ホストコンピュータ４０、メンテナンスコンピュータ５０の各ハードディスクに格納されているプログラムなどを説明するものである。
【００４７】
マスクＲＯＭ３２は、ブートプログラムを記憶しているブートＲＯＭである。マスクＲＯＭ３２は、前述のブートプログラム６０、ＯＳ（オペレーティングシステム）６２、第２通信プログラムとしてのＵＡＲＴ通信プログラム６３（第２のダウンロード処理実行プログラム）、その他、印刷制御に必要な一部のプログラムおよびデータ等が記憶されている。なお、マスクＲＯＭ３２の他に、書替え不能メモリとしては、ＰＲＯＭ（Programmable Read Only Memory）などを用いることができる。
【００４８】
ブートプログラム６０には、ブートローダ、ＭＢＲ（Master Boot Record）など、ブート処理用のプログラムの他、ファームウェアプログラム等にエラーや異常がないか否かをプログラムチェック（検査）して判断できるように用意されているサムチェックプログラム６１が含まれている。
【００４９】
サムチェックプログラム６１ａ（第１検査プログラム）は、印刷制御プログラム７１のうちポイントとなる複数箇所をサムチェックによりエラー等がないか否かを判断するプログラムチェックのために実行されるプログラムである。また、サムチェックプログラム６１ｂ（第２検査プログラム）は、ＵＳＢ通信プログラム７２のうちポイントとなる複数箇所をサムチェックによりエラー等がないか否かを判断するプログラムチェックのために実行されるプログラムである。各サムチェックプログラム６１ａ，６１ｂは、サムチェック以外にもチェック対象プログラムデータについて、ヘッダ情報の確認、バージョン情報の確認なども、チェック項目として実施している。なお、プログラムチェックの方法は、サムチェックに限定されず公知の他のプログラムチェック方法を採用することができ、例えばパリティチェックを採用することができる。
【００５０】
ＵＡＲＴ通信プログラム６３は、一対一接続対応の通信方式なので、上述の論理層を有しておらず、プログラムデータ量が比較的小さくなっている。このようにデータ容量の小さなＵＡＲＴ通信プログラム６３を追加しても、マスクＲＯＭ３２の記憶領域内に格納できるので、マスクＲＯＭ３２を記憶容量の大きな高価なものに変更したり、他にＲＯＭを追加するなどすることもなく対応できている。もちろん、元々マスクＲＯＭ３２に記憶領域の空きが少ない場合は、マスクＲＯＭ３２の大記憶容量化が必要にはなるが、マスクＲＯＭ３２が収容されるＡＳＩＣ２０がさほど大型にならずに済む。
【００５１】
また、フラッシュＲＯＭ２１には、印刷制御プログラム７１（ファームウェアプログラム）、印刷制御プログラム７１をダウンロードするためにホストコンピュータ４０との間でのＵＳＢ通信を行うためのＵＳＢ通信プログラム７２（第１のダウンロード処理実行プログラム）、ダウンロードされた更新プログラムに更新するための書き換えを行う書き換えプログラム７３及びアプリケーションプログラム７４などが記憶されている。
【００５２】
ＵＳＢ通信プログラム７２は、ホストコンピュータ４０とＵＳＢ通信して、印刷制御プログラムをはじめてとする各種更新プログラムをダウンロードする際に実行されるダウンロード処理用プログラムである。本実施形態では、ユーザが比較的簡単な操作でダウンロードできるように、シリアル通信方式の規格の一つであるＵＳＢ通信規格を採用している。ＵＳＢは、一対複数のマルチドロップ接続に対応した通信規格であり、一対複数接続対応のためのソフトウェアが担う論理層を含む通信プロトコルを有している。
【００５３】
ここでいう論理層とは、ＵＳＢ通信部のソフトウェアが担う部分うち、ホストコンピュータ４０に通信相手のデバイス機器を認識させるための複数種の手順を行う部分を指す。ＵＳＢに用意されている複数種の転送方式のうち、例えばコントロール転送ではホストコンピュータ４０とデバイス機器の最初の接続時に、ディスクリプタと呼ばれる数種類のレジスタをやり取りし、ホストコンピュータは接続を確立するために必要な情報を要求する。ＵＳＢでは最低７種類の情報がデバイス機器固有の値として必要で、これらの情報をホストコンピュータに返送することにより、これらの値によってホストコンピュータは固有のデバイス機器として認識できるようになっている。このような一対複数接続対応の通信プロトコルでは、多くの接続を確立するために必要な情報をやり取りする必要があり、一対複数接続対応の規格独自のシステム要求に対応する処理を担うソフトウェア部分を指して、論理層と規定している。
【００５４】
このような論理接続の確立に多くの情報をやり取りする処理を行う論理層を含んでいるため、ＵＳＢ通信プログラム７２は、そのプログラムデータ量が非常に大きなものとなっている。本実施形態では、例えばＵＳＢ ２．０を採用しており、後述のダウンロード通信時には、High Speedモードを採用して、転送速度480Mbpsでの高速転送が可能なっている。もちろん、ＵＳＢ１．１を採用することもできる。また、転送速度も、LS（Low Speed）モード（1.5Mbps）や、FS（Full Speed）（12Mbps）を使用した低速なものとしてもよい。
【００５５】
書き換えプログラム７３は、フラッシュＲＯＭ２１から旧プログラムを消去すると共に、ダウンロードされてＲＡＭ２２に展開されている更新プログラムを、フラッシュＲＯＭ２１の所定領域に書き込む処理を行うためのプログラムである。
【００５６】
メンテナンスコンピュータ５０のハードディスク５２には、図示しないオペレーティングシステム（ＯＳ）がインストールされている。オペレーティングシステムには端末エミュレータ（ターミナルプログラム）が付属されている。この端末エミュレータ（例えばX Window System上で動作する端末エミュレータである「xterm」（又は「kterm」））は、ＲＳ−２３２Ｃで通信を行うことが可能であり、サービスマンは、メンテナンスコンピュータ５０から端末エミュレータを起動して、必要なコマンドやファイル名を入力して、ファイルの選択操作および送信操作を行って、更新プログラムをプリンタへ送信（ダウンロード）する。
【００５７】
ＣＰＵ３１は、プリンタ１０の電源が投入されると、ブート処理を実行し、そのブート処理の中で、サムチェックプログラム６１ａ，６１ｂを実行する。まずサムチェックプログラム６１ａの実行により印刷制御プログラム７１をチェック（検査）し、異常が発見されなければ印刷制御プログラム７１を実行し、異常が発見されると、引き続きサムチェックプログラム６１ｂを実行して、ＵＳＢ通信プログラム７２及び書き換えプログラム７３をチェック（検査）する。ＵＳＢ通信プログラム７２及び書き換えプログラム７３に共に異常が発見されなければ、検査で異常のなかった前記ＵＳＢ通信プログラム７２を実行することにより、ホストコンピュータ４０から印刷制御プログラム７１をダウンロードする。ＵＳＢ通信プログラム７２及び書き換えプログラム７３のうち一方でも異常があれば、印刷制御プログラム７１のダウンロード更新ができないので、この場合は、ＵＡＲＴ通信プログラム６３を実行してメンテナンスコンピュータ５０から印刷制御プログラム７１Ｍ、ＵＳＢ通信プログラム７２Ｍ及び書き換えプログラム７３Ｍをダウンロードするようになっている。
【００５８】
図３は、上記の処理を実現するためにＣＰＵ３１が実行する一連のプログラムを示すフローチャートである。以下、ＣＰＵ３１が実行する処理について図３に従って説明する。なお、このフローチャートでは、ユーザが行う処理も一部含まれている。
【００５９】
ユーザがプリンタ１０の操作部１６の電源スイッチを操作してプリンタ１０の電源を投入する（ステップＳ１０）。すると、ＣＰＵ３１はステップＳ２０以降の処理を開始する。
【００６０】
まずステップＳ２０では、初期動作プログラムを起動する。すなわちマスクＲＯＭ３２（ブートＲＯＭ）から読み出してブートプログラムを実行し、ＯＳ６２を起動する。詳しくは、プリンタ１０を起動するとまずマスクＲＯＭ３２の先頭に置かれたＭＢＲ（Master Boot Record）が読み込まれ、ブートローダ（プログラム）が動作する。ブートローダはマスクＲＯＭ３２内の領域の位置や大きさなどを記録したテーブルを読み込み、そのテーブルを参照して起動するブート領域を読み込む。ブート領域に置かれたプログラムは、その領域に置かれたＯＳ６２（オペレーティングシステム）を起動する。
【００６１】
ステップＳ３０では、印刷制御プログラム７１のサムチェックを実行する。すなわち、マスクＲＯＭ３２から読み出したサムチェックプログラム６１ａを実行することにより行われる。このサムチェックはブート処理の中で行われ、プリンタ１０の立ち上げ時に行われる。なお、ここでは、ヘッダ情報の確認、バージョン情報の確認等も行う。
【００６２】
ステップＳ４０では、サムチェックの結果、正常であるか否かを判断する。正常であれば、ステップ１２０に進んで、印刷制御プログラム７１を実行する。また、正常でなければ、ステップＳ５０に進む。
【００６３】
ステップＳ５０では、ＵＳＢ通信プログラム７２のサムチェックを実行する。なお、ここでは、書き換えプログラム７３のサムチェック等も一緒に行う。なお、ヘッダ情報の確認、バージョン情報の確認等も行う。
【００６４】
次のステップＳ６０では、サムチェックの結果、正常であるか否かを判断する。正常であればステップ７０に進み、正常でなければステップＳ９０に進む。ここで異常と判断された場合は、ホストコンピュータ４０から印刷制御プログラム７１Ｈをダウンロードして更新することができない。すなわち、ＵＳＢ通信プログラム７２に異常があればホストコンピュータ４０とのＵＳＢ通信が不能となり、書き換えプログラム７３に異常があれば、仮にＵＳＢ通信で印刷制御プログラム７１ＨをダウンロードできてもＲＡＭ２２に展開されたプログラムデータを、フラッシュＲＯＭ２１に書き換えることができないからである。
【００６５】
ステップＳ７０では、フラッシュＲＯＭ２１上のＵＳＢ通信プログラム７２を実行して、ホストコンピュータ４０から印刷制御プログラム７１ＨをＲＡＭ２２にダウンロードする。
【００６６】
ステップＳ８０では、フラッシュＲＯＭ２１上の書き換えプログラム７３を実行して、ＲＡＭ２２上の印刷制御プログラム７１ＨをフラッシュＲＯＭ２１に書き込む。なお、ステップＳ７０で書き換えプログラム７３Ｈを一緒にダウンロードし、ダウンロードした書き換えプログラム７３Ｈにより印刷制御プログラム７１のフラッシュＲＯＭ２１への書き換えを行ってもよい。
【００６７】
次のステップＳ１１０では、プリンタ１０をリセットする。そして、ステップＳ２０に進む。以後、電源投入時と同様に処理を行い、初期動作プログラム起動（再起動（リブート））（Ｓ２０）、印刷制御プログラムサムチェック（Ｓ３０）、サムチェック正常判断（Ｓ４０）の各処理が行われ、ホストコンピュータ４０からダウンロードして更新した印刷制御プログラムが正常であれば、ステップＳ１２０に進み、印刷制御プログラム７１を実行することになる。
【００６８】
一方、ステップＳ６０のサムチェックの判断において、正常でない（異常）と判断された場合は、ステップＳ９０に進む。但し、ステップＳ６０で、正常でないと判断されたときは、コントロールパネル１４の表示部１５にメンテナンスコンピュータ５０によるダウンロードが必要な旨を表示させる。そして、その表示を見たユーザに呼ばれたサービスマンは、メンテナンスコンピュータ５０のコネクタ５０ａ（ＲＳ−２３２Ｃ端子）とプリンタ１０のコネクタ３４ａとを通信ケーブル１９で接続する。
【００６９】
ステップＳ９０では、ＵＡＲＴ通信プログラム６３を実行して、メンテナンスコンピュータ５０から、印刷制御プログラム７１Ｍ、ＵＳＢ通信プログラム７２Ｍ及び書き換えプログラム７３ＭをＲＡＭ２２にダウンロードする。このとき、メンテナンスコンピュータ５０でダウンロードのための入力操作を行う。サービスマンはメンテナンスコンピュータ５０を起動して、ＯＳに付帯されている端末エミュレータ（ターミナルプログラム）を起動し、コマンドを入力しファイルを選択操作し、送信コマンドを入力して送信操作を行う。この操作まで終わると、メンテナンスコンピュータ５０が通信プログラム８５を実行して、ダウンロード処理が開始される。更新プログラムデータはＲＳ−２３２Ｃでシリアル通信で送信される。このとき、更新プログラムデータの送信に当たり、事前に通信リンクを確立し、通信リンクを確立すると、更新プログラムデータのプリンタ１０へのダウンロードが開始される。このとき、通信リンクを確立するに当たって一対複数接続対応で必要となるような論理層の通信は行われない。
【００７０】
ステップＳ１００では、ＲＡＭ２２上にダウンロードされた書き換えプログラム７３Ｍを実行して、ＲＡＭ２２上の更新プログラム（印刷制御プログラム７１Ｍ、ＵＳＢ通信プログラム７２Ｍ）をフラッシュＲＯＭ２１に書き込む。そして、ステップＳ１１０においてリセットし、ステップＳ２０に戻り、以後、電源投入時と同様に処理を行い、初期動作プログラム起動（再起動（リブート））（Ｓ２０）、印刷制御プログラムサムチェック（Ｓ３０）、サムチェック判断（Ｓ４０）の各処理が行われ、メンテナンスコンピュータ５０からダウンロードして更新した印刷制御プログラムが正常であれば、ステップＳ１２０に進み、印刷制御プログラム７１を実行することになる。
【００７１】
なお、ステップＳ３０，Ｓ４０のサムチェック処理を実行するＣＰＵ３１により第１検査手段が構成され、ステップＳ５０，Ｓ６０のサムチェック処理を実行するＣＰＵ３１により第２検査手段が構成される。また、ステップＳ７０，Ｓ８０のダウンロード処理を実行するＣＰＵ３１により第１ダウンロード手段が構成され、ステップＳ９０，Ｓ１００のダウンロード処理を実行するＣＰＵ３１により第２ダウンロード手段が構成される。さらにステップＳ１００の書き換え処理を実行するＣＰＵ３１により書換え手段が構成される。
【００７２】
以上、詳述したように本実施形態によれば、以下の効果を奏する。
（１）印刷制御プログラム７１をチェックして異常があると判断した場合は、さらにＵＳＢ通信プログラム７２をチェックするようにした。そして、ＵＳＢ通信プログラム７２に異常があれば、マスクＲＯＭ３２に記憶されたＵＡＲＴ通信プログラム６３を実行して、印刷制御プログラム７１Ｍ及びＵＳＢ通信プログラム７２Ｍをダウンロードするようにした。このため、ＵＳＢ通信プログラム７２に異常があった場合にも、印刷制御プログラム７１Ｍをダウンロードしてプリンタ１０を復旧させることができる。
【００７３】
（２）フラッシュＲＯＭ２１とは別メモリに記憶させる必要があるが、論理層を有しないＵＡＲＴインターフェイス３４を用いるので、ＵＡＲＴ通信プログラム６３のデータ容量を小さくできるので、マスクＲＯＭ３２を大型にしたり他のＲＯＭを追加したりする必要もない。このため、ＵＡＲＴ通信プログラム６３を追加しても、マスクＲＯＭ３２に記憶することができるので、ＡＳＩＣ２０の大型化を回避できる。また、ＵＡＲＴ通信プログラム６３はマスクＲＯＭ３２に記憶されるので破壊されにくいので、ダウンロード用の通信プログラムが故障することによりプリンタ１０を復旧できなくなることはまずない。
【００７４】
（３）ＵＳＢ通信プログラム７２をチェックするサムチェックプログラム６１ｂをブートプログラム６０の一部として組み込んだので、プリンタ１０の電源投入後、直ぐにプログラム異常を発見することができる。
【００７５】
（４）パーソナルコンピュータに付属のＵＳＢインターフェイスおよびＲＳ−２３２Ｃインターフェイスと通信できるように、ＵＳＢ通信プログラム及びＵＡＲＴ通信プログラムを用意した。汎用性のある通信インターフェイスで通信できるように通信プログラムをＵＳＢ通信プロトコルに対応させたＵＳＢ通信プログラム７２及びＲＳ−２３２Ｃに対応させたＵＡＲＴ通信プログラム６３を用意したので、通常のパーソナルコンピュータを用いて印刷制御プログラム等をダウンロードできる。
【００７６】
（５）ＵＳＢ通信プログラム７２に異常があった場合は、印刷制御プログラム７１だけでなく、ＵＳＢ通信プログラム７２も一緒にダウンロードするので、その後再び印刷制御プログラム７１が故障した場合には、ホストコンピュータ４０からダウンロードすることができる。
【００７７】
（６）サムチェックで異常があると判断された場合は、ＣＰＵ３１がＵＳＢ通信プログラム７２を実行してユーザの操作なしでほとんど自動でダウンロードされるし、通信ケーブルが接続されていないときには、プリンタ１０の表示部１５にダウンロードが必要な旨を表示してユーザに知らせるので、ユーザは直ぐに適切な処置を取ることができる。
【００７８】
尚、発明の実施の形態は、上記実施形態に限定されるものではなく、以下のように変更してもよい。
（変形例１）前記実施形態では、ホストコンピュータ４０からＵＳＢ通信によりダウンロードする際に、ホストコンピュータ４０と通信ケーブル１８で接続されていれば印刷制御プログラム７１Ｈを自動ダウンロードで更新させたが、ダウンロードの実行の判断はユーザが行う構成としてもよい。例えば、図４（ａ）に示すように、印刷制御プログラム７１の異常が発見されると、プリンタ１０のコントロールパネル１４の表示部１５に「ダウンロード」とその必要の旨を知らせるとともに、図４（ｂ）に示すように、ホストコンピュータ４０の画面には、ダウンロード確認画面９０を表示させ、ユーザが入力装置を操作することによりダウンロードが開始されるようにする。
【００７９】
（変形例２）前記実施形態では、第１ダウンロード手段のダウンロード元（通信相手）である他の装置（第１の装置）をホストコンピュータ、第２ダウンロード手段のダウンロード元（通信相手）である他の装置（第２の装置）をメンテナンスコンピュータとしたが、これに限定されない。例えばホストコンピュータがメンテナンスコンピュータを兼ねる構成とすることもできる。すなわち、ホストコンピュータ４０は第２通信手段（例えばＵＡＲＴ通信可能なＲＳ−２３２Ｃインターフェイス）を備えていれば、メンテナンスコンピュータ５０がハードディスクに格納していた通信プログラム８５及びＵＳＢ通信プログラム７２Ｍを、別途追加すれば、メンテナンスコンピュータとしても機能できる。
【００８０】
すなわち、図５に示すように、ホストコンピュータ４０のハードディスク４７には、印刷ドライバプログラム８０の他、通信プログラム８１，８５、印刷制御プログラム７１Ｈ、ＵＳＢ通信プログラム７２Ｈ、書き換えプログラム７３Ｈが格納されている。ホストコンピュータ４０として機能するときは、コネクタ３３ａ，４１ａ間に通信ケーブル１８で接続する。メンテナンスコンピュータとして機能するときは、コネクタ３４ａ，４１ｂ間に通信ケーブル１９を接続する。この構成であれば、印刷制御プログラム７１及びＵＳＢ通信プログラム７２に異常が発見された場合、通信ケーブル１９をコネクタ３４ａ，４１ｂ間に接続して、入力装置を操作すれば、印刷制御プログラム７１Ｈを更新でき、プリンタ１０を直ぐに復旧させることができる。よって、サービスマンを呼んだりメンテナンスコンピュータ用のＰＣを別途用意したりする必要もなくなる。
【００８１】
（変形例３）前記実施形態では、サムチェックプログラムとして、第１チェックプログラム及び第２チェックプログラムを共にマスクＲＯＭ３２（ブートＲＯＭ）に記憶させたが、このうち一方のチェック用プログラムのみをマスクＲＯＭに記憶させただけの構成でもよい。例えばファームウェアプログラムをチェックする第１チェックプログラムのみをマスクＲＯＭ３２に記憶させてブートプログラムと共に初期動作起動時に実行させてもよい。この場合、ファームウェアプログラムのチェックは電子機器の立ち上げ時に行われるので、その結果、異常があった場合に、ユーザの操作を契機として、あるいは第２チェック用プログラムを実行して自立的に起動されて第２のチェックを行う構成とする。このため、少なくともファームウェアプログラムに異常があるまま駆動手段としてのプリンタエンジン１２が駆動されることは回避できる。
【００８２】
（変形例４）前記実施形態では、自動で再起動（リブート）させる構成としたが、更新プログラムをダウンロードした後の再起動は、ユーザが電源スイッチを操作することで行ってもよい。この場合、例えばコントロールパネル１４の表示部１５に「電源を投入し直してください。」などの文字情報を表示させるとよい。また、ホストコンピュータ４０の画面に上記の文字情報を表示させてもよい。
【００８３】
（変形例５）前記実施形態では、第１ダウンロード手段のダウンロード元（通信相手）である他の装置（第１の装置）をホストコンピュータ、第２ダウンロード手段のダウンロード元（通信相手）である他の装置（第２の装置）をメンテナンスコンピュータとしたが、これに限定されない。他の装置（第１の装置と第２の装置のうち少なくとも一方）が他の電子機器（例えば他のプリンタ）であってもよい。ダウンロードの通信相手となる他の装置に左右されず、プリンタ１０は前記実施形態の効果（マスクＲＯＭの大型化を抑制など）を得ることはできる。
【００８４】
なお、第１通信手段としての通信インターフェイスは、ＵＳＢインターフェイス３３以外にも、他のシリアル転送方式のインターフェイス（シリアルポート）として、IEEE 1334インターフェイス、RS422シリアルインターフェイスを採用することができる。さらに、ＵＳＢ、IEEE 1334のようなシリアルポートに限定されず、複数の信号線を使い同時に複数のビットのデータ転送を行うパラレル転送方式のインターフェイス（パラレルポート）を採用してもよい。例えばパラレルポートとしては、IEEE 1284やSCSI（スカジー（Small Computer System Interface））を用いることができ、IEEE 1284の場合、セントロニクス互換モード、ニブル・モード、バイト・モード、ECP（拡張機能ポート）モード、EPP（拡張並列ポート）モードのどの規格を用いてもよい。また、コネクタについても、ＵＳＢコネクタ、D-sub（ディーサブ（D Subminiature））コネクタ以外の他の種類のコネクタタイプを使用することができ、例えばアンフェノールコネクタを採用してもよい。また、有線対応の通信インターフェイスに限定されず、ホスト用とメンテナンス用の通信インターフェイスのいずれか一方を、無線通信インターフェイスとすることもできる。無線通信インターフェイスとしては、Bluetooth（R）やＩｒＤＡ（Infrared Data Association）に準拠した赤外線通信インターフェイスを採用することができる。Bluetooth（R）の場合、コントローラ（ベースバンド，RF）とホスト（ホストCPU）の間にＨＣＩ（host controller interface）が規定されているが、このＨＣＩもＵＡＲＴ相当の通信インターフェイスになっているので、これを利用してもよい。この場合、ＡＳＩＣ２０内のＵＡＲＴは必要なくなる。
【００８５】
（変形例６）制御プログラムは、印刷制御プログラムに限定されない。すなわち、モータや記録ヘッド等を含むプリンタエンジンのような駆動手段を駆動制御する駆動制御プログラムであることに限定されない。制御プログラム（ファームウェア）は、例えば表示などの所定の機能を実現するためのプログラムでもよい。例えば電子機器としてのプリンタ１０では、コントロールパネル１４の表示部１５の表示処理（表示制御）を行うために不揮発性メモリ（フラッシュＲＯＭ２１）に記憶された表示制御プログラムを、駆動制御プログラム以外のファームウェアとして挙げることができる。
【００８６】
（変形例７）前記実施形態では、電子機器を液体噴射装置としてのインクジェット式のプリンタ１０に具体化したが、この限りではなく、インク以外の他の液体（機能材料の粒子が分散されている液状体を含む）を噴射する液体噴射装置に具体化することもできる。例えば、液晶ディスプレイ、ＥＬ（エレクトロルミネッセンス）ディスプレイ及び面発光ディスプレイの製造などに用いられる電極材や色材などの材料を分散または溶解のかたちで含む液状体を噴射する液体噴射装置、バイオチップ製造に用いられる生体有機物を噴射する液体噴射装置、精密ピペットとして用いられ試料となる液体を噴射する液体噴射装置であってもよい。そして、これらのうちいずれか一種の液体噴射装置に、本発明を適用してもよい。さらに、液体噴射装置に限らず、レーザプリンタ、スキャナー、プロジェクタ、デジタルカメラなど、広く他の電子機器に適用することができる。
【００８７】
以下、前記実施形態および各変形例から把握される技術的思想を記載する。
（１）請求項１乃至１０のいずれか一項に記載の電子機器が有するコンピュータが実行するためのプログラムであって、前記コンピュータが、前記制御プログラム及び第１通信プログラムの両方で異常が発見されなかった場合に、前記制御プログラムを実行して前記プリンタエンジンを駆動制御するステップと、前記第１及び第２検査手段の検査結果に基づき前記制御プログラムに異常が発見され、前記第１通信プログラムに異常が発見されなかった場合は、当該第１通信プログラムを実行して前記第１通信手段を介してホストコンピュータから制御プログラムをダウンロードするステップと、前記第１通信プログラムを実行してダウンロードした前記制御プログラムを前記第１検査手段による検査の後に異常がないことが確認された後に実行するステップと、前記第１及び前記第２検査手段の両方で異常が発見された場合は、前記第２通信プログラムを実行して前記第２通信手段を介して前記第２ダウンロード手段により前記メンテナンスコンピュータからダウンロードされた制御プログラム及び第１通信プログラムを不揮発性メモリに書き込むステップと、
前記第２通信プログラムを実行してダウンロードした前記制御プログラムを、前記第１検査手段により異常がないことが確認された後に実行するステップとを実行するためのプログラム。なお、メンテナンスコンピュータはホストコンピュータが兼ねることを含む。
【図面の簡単な説明】
【００８８】
【図１】本実施形態におけるプリンタの電気的構成を示すブロック図。
【図２】ダウンロード処理に係る電気的構成を示すブロック図。
【図３】プリンタのＣＰＵが実行するプログラムを示すフローチャート。
【図４】変形例を示し、（ａ）はプリンタ及びその表示部を示す模式図、（ｂ）はホストコンピュータの画面を示す模式図。
【図５】他の変形例におけるホストコンピュータを示すブロック図。
【符号の説明】
【００８９】
１０…電子機器としてのプリンタ、１１…プリンタコントローラ、１２…プリンタエンジン、１４…電源、２１…不揮発性メモリとしてのフラッシュＲＯＭ、２２…ＲＡＭ、２３…エンジン制御部、３１…第１検査手段、第２検査手段、第１ダウンロード手段、第２ダウンロード手段及び書換え手段を構成するＣＰＵ、３２…書替え不能メモリとしてのマスクＲＯＭ（ブートＲＯＭ）、３３…第１通信手段及びＵＳＢ通信手段としてのＵＳＢインターフェイス、３４…第２通信手段及びＵＡＲＴ通信手段としてのＵＡＲＴインターフェイス、３３ａ…ＵＳＢコネクタ、３５…エンジンインターフェイス、４０…他の装置としてのホストコンピュータ、４１ａ…コネクタ、４６…通信インターフェイス（ホストコンピュータ側）、５０…他の装置としてのメンテナンスコンピュータ、５０ａ…コネクタ、５１…通信インターフェイス（メンテナンスコンピュータ側）、６０…ブートプログラム、６２…検査プログラムとしてのサムチェックプログラム、６３…第２通信プログラムとしてのＵＡＲＴ通信プログラム、７１，７１Ｈ，７１Ｍ…制御プログラムとしての印刷制御プログラム（ファームウェアプログラム）、７２，７２Ｍ…第１通信プログラムとしてのＵＳＢ通信プログラム、７３，７３Ｈ，７３Ｍ…書き換えプログラム、８０…印刷ドライバプログラム。
【図１】
0004848734.tif 000002
【図２】
0004848734.tif 000003
【図３】
0004848734.tif 000004
【図４】
0004848734.tif 000005
【図５】
0004848734.tif 000006