(57)【特許請求の範囲】
【請求項１】
少なくとも１つのメインプロセッサと、
前記メインプロセッサがホストコンピュータと交信を実行する場合に前記メインプロセッサを補助するとともに、前記メインプロセッサをリセット状態に設定するためのリセット信号を出力する少なくとも１つのコプロセッサと、
前記メインプロセッサが実行するプログラムを記憶するための少なくとも２つの領域を有する再書き込み可能なメモリと、
前記少なくとも１つのメインプロセッサと前記少なくとも１つのコプロセッサの間での双方向通信を許容するインターフェイス手段と、
前記少なくとも１つのメインプロセッサのそれぞれ内に設置され、前記メモリ内の前記プログラムの書換えが必要となったときに前記メモリの第１の領域に記憶された前記プログラムを前記メモリの第２の領域に複写する複写手段と、
前記少なくとも１つのメインプロセッサのそれぞれ内に設置され、前記メモリの第１の領域に新たなプログラムをダウンロードするダウンロード手段と、
前記少なくとも１つのメインプロセッサ内に新たにダウンロードされたプログラムが正常であるかについての前記インターフェイスを介しての前記コプロセッサの質問に対し、異常である旨の応答があったとき、あるいは応答が無かったときに前記メインプロセッサがアクセス可能な前記フラッシュメモリの領域を領域１から領域２に移行させるアドレス信号制御手段と、
前記少なくとも１つのメインプロセッサのそれぞれ内に設置され、前記アドレス信号制御手段により前記メインプロセッサがアクセス可能な前記フラッシュメモリの領域が領域１から領域２に移行したときに、プログラムを再度ダウンロードする再ダウンロード手段と、を具備するプログラム再書き込み機能付コンピュータ。
【請求項２】
前記メモリが、一括消去型不揮発型メモリ（フラッシュメモリ）である請求項１に記載のプログラム再書き込み機能付コンピュータ。
【請求項３】
前記メモリが、ＥＥＰＲＯＭである請求項１に記載のプログラム再書き込み機能付コンピュータ。
【請求項４】
前記メモリが、バッテリバックアップされたＲＡＭである請求項１に記載のプログラム再書き込み機能付コンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はプログラム再書き込み機能付コンピュータに係り、特に、ホストコンピュータからダウンロードされるプログラムの書き込みが失敗したときにプログラムを再書き込みすることの可能なプログラム再書き込み機能付コンピュータに関する。
【０００２】
【従来の技術】
例えばプリンタである周辺機器の制御装置としては、バージョンアップ等への対応を容易とするために、マイクロプロセッサとメモリを主体とするマイクロプロセッサシステムが適用される場合が多い。
マイクロプロセッサは、メモリ内に記憶されているプログラムの実行形式であるプログラムコードを順次読み込み、プログラムコードを解析して所定の動作を実行する。
【０００３】
従来マイクロプロセッサシステムで使用するメモリとしては、ＥＰＲＯＭ（Erasable and Programmable Read-Only Memory）を適用していた。
しかし、ＥＰＲＯＭに記憶されているプログラムコードを変更するためには、いったんＥＰＲＯＭをマイクロプロセッサシステムから取り外し、ＲＯＭライタを使用して修正されたプログラムコードをＥＰＲＯＭに書き込むことが必要となるので、プログラムコードの変更のたびに周辺装置を分解してＥＰＲＯＭを取り外すという煩雑さを回避することはできない。
【０００４】
この課題を解決するために、近年マイクロプロセッサシステムで使用するメモリとしてＥＰＲＯＭに代えてフラッシュメモリが使用されるようになってきている。
即ち、フラッシュメモリは消去信号を印加することにより記憶内容をクリアし、ダウンロードされてきた修正されたプログラムコードを改めて記憶することが可能となるため、プログラムコード変更の際に周辺装置を分解してメモリを取り外す必要はなくなる。
【０００５】
しかし、フラッシュメモリは予め定められた大きさのセクタごとに書き換えが可能な構成であり、セクタ内の記憶セルをいったんすべて消去した後に改めてプログラムコードをダウンロードする必要がある。
このため、プログラムコードのダウンロード中に電源断等に異常が発生した場合には、ダウンロードは中断されるためフラッシュメモリは正しいプログラムコードを記憶することはできない。この結果、異常が解消された後もメインプロセッサは正しいプログラムをフラッシュメモリから取り出すことはできず、マイクロプロセッサシステムの制御対象である周辺機器を正しく制御することは不可能となる。
【０００６】
この課題の解決方法としては、例えば、
１．フラッシュメモリのベクタ領域（ブートプログラムが記憶されている領域）の書き換えを禁止して、少なくとも異常解除後の再ロードは可能なシステムとする。
２．少なくともプログラムコードのダウンロード中は電源維持が可能なように、いわゆるシーケンス電源を使用する。
等が提案されている。
【０００７】
【発明が解決しようとする課題】
しかしながら、ベクタ領域の書き換えを禁止した場合には、ベクタ領域自体に記憶されるプログラム・コードの修正、バージョンアップのためには、メモリ素子自体の交換が必要となるという課題が生じる。
また、シーケンス電源を使用する場合には、電源自体が高価であるため、システムが高価となるという課題を生じる。
【０００８】
本発明は上記課題に鑑みなされたものであって、ホストコンピュータからダウンロードされるプログラムの書き込みが失敗したときにプログラムを再書き込みすることの可能なプログラム再書き込み機能付コンピュータを提供することを目的とする。
【０００９】
【課題を解決するための手段】
第１の発明に係るプログラム再書き込み機能付コンピュータは、メインプロセッサと、メインプロセッサがホストコンピュータと交信を実行する場合にメインプロセッサを補助するとともにメインプロセッサをリセット状態に設定するためのリセット信号を出力するコプロセッサと、メインプロセッサが実行するプログラムを記憶する再書き込み可能なメモリと、メインプロセッサとメモリとを接続するメインバスと、コプロセッサとメモリとを接続する補助バスと、メインバス中に設置されコプロセッサがメインプロセッサをリセット状態としたときにメインバスを非活性状態とするとともに、補助バス中に設置され通信コプロセッサがメインプロセッサをリセット状態としたときに補助バスを活性状態とするバストランシーバと、を具備する。
【００１０】
本発明にあっては、ホストコンピュータからメインプロセッサを介するメモリへのプログラムのダウンロード中にメインプロセッサに異常が発生してメインプロセッサがリセットされる状態になった場合に、プログラムはコプロセッサからメモリに直接ダウンロードされる。
第２の発明に係るプログラム再書き込み機能付コンピュータは、少なくとも１つのメインプロセッサと、メインプロセッサがホストコンピュータと交信を実行する場合にメインプロセッサを補助するとともにメインプロセッサをリセット状態に設定するためのリセット信号を出力する少なくとも１つのコプロセッサと、メインプロセッサが実行するプログラムを記憶するための少なくとも２つの領域を有する再書き込み可能なメモリと、少なくとも１つのメインプロセッサと少なくとも１つのコプロセッサの間での双方向通信を許容するインターフェイス手段と、少なくとも１つのメインプロセッサのそれぞれ内に設置されメモリ内のプログラムの書換えが必要となったときにメモリの第１の領域に記憶されたプログラムをメモリの第２の領域に複写する複写手段と、少なくとも１つのメインプロセッサのそれぞれ内に設置されメモリの第１の領域に新たなプログラムをダウンロードするダウンロード手段と、少なくとも１つのメインプロセッサ内に新たにダウンロードされたプログラムが正常であるかについてのインターフェイスを介してのコプロセッサの質問に対し異常である旨の応答があったときあるいは応答が無かったときにメインプロセッサがアクセス可能なフラッシュメモリの領域を領域１から領域２に移行させるアドレス信号制御手段と、少なくとも１つのメインプロセッサのそれぞれ内に設置されアドレス信号制御手段によりメインプロセッサがアクセス可能なフラッシュメモリの領域が領域１から領域２に移行したときにプログラムを再度ダウンロードする再ダウンロード手段と、を具備する。
【００１１】
本発明にあっては、メモリ内の新たなプログラムのダウンロードが正常に行われなかったときは、コプロセッサによりメインプロセッサがアクセス可能なメモリ領域を切り換えた後再度ダウンロードが実行される。
第３の発明に係るプログラム再書き込み機能付コンピュータは、メインプロセッサと、メインプロセッサが実行するプログラムを記憶するための少なくとも２つの領域を有する再書き込み可能なメモリと、メインプロセッサ内に設置されメモリ内のプログラムの書換えが必要となったときにメモリの第１の領域に記憶されたプログラムを前記メモリの第２の領域に複写する複写手段と、メインプロセッサ内に設置されメモリの第１の領域に新たなプログラムをダウンロードするダウンロード手段と、メインプロセッサが正常に動作しているかをウオッチドッグ信号が所定周期毎に変化しているかにより監視する時間監視手段と、時間監視手段によりメインプロセッサが異常であると判定されたときにメインプロセッサがアクセス可能なフラッシュメモリの領域を領域１から領域２に移行させるアドレス信号制御手段と、アドレス信号制御手段によりメインプロセッサがアクセス可能なフラッシュメモリの領域が領域１から領域２に移行したときにメインプロセッサをリセットするリセット制御手段と、を具備する。
【００１２】
本発明にあっては、メモリ内の新たなプログラムのダウンロードが正常に行われなかったときは、アドレス信号制御手段によりメインプロセッサがアクセス可能なメモリ領域を切り換えた後再度ダウンロードが実行される。
【００１３】
【発明の実施の形態】
図１は本発明に係るプログラム再書き込み機能付コンピュータを適用したプリンタの第１の実施形態の構成図であって、プリンタ１は制御部１０とプリント部１１とから構成される。
制御部１０のメインプロセッサ１００は、インターフェイス１０１を介して通信コプロセッサ１０２とバスによって接続される。メインプロセッサ１００は、また、アドレスデコーダ１０３、フラッシュメモリ１０４、ＲＡＭ（Random Access Memory）１０５ともバスによって接続される。アドレスデコーダ１０３は、メインプロセッサ１００が出力するアドレスがフラッシュメモリ１０４またはＲＡＭ１０５を指しているかを判断し、フラッシュメモリ１０４またはＲＡＭ１０５に対してイネーブル信号を出力する。
【００１４】
制御部１０は、また、アドレスバストランシーバ１０６、データバストランシーバ１０７、およびコントロールトランシーバ１０８を具備するが、具体的構成ならびに機能については後述する。
制御部１０は、さらに、電源監視回路１０９を具備しており、電源監視回路１０９は制御部１０に供給される電源の電圧が正常であるときは、第１のダイオード１０９１を介してメインプロセッサ１００のリセット端子に “Ｈ" レベルのリセット信号を供給する。そして、電源電圧が異常となるとリセット信号を “Ｌ" レベルとしてメインプロセッサ１００をリセット状態とする。
【００１５】
また、メインプロセッサ１００のリセット端子は第２のダイオード１０９２を介して通信コプロセッサ１０２のリセット信号出力端子と接続されており、通信コプロセッサ１０２からメインプロセッサ１００の動作を制御可能な構成としている。
プリンタ１のプリント部１１は、印刷を実行するサーマルヘッド１１０、および印刷紙を送るプラテン１１１を具備するが、サーマルヘッド１１０は直接メインプロセッサ１００によって制御され、プラテン１１１は駆動回路１１２を介してメインプロセッサ１００によって制御されるモータ１１３によって駆動される。
【００１６】
さらに、制御部１０の通信コプロセッサ１０２はケーブル１３を介してホストコンピュータ１２に接続されており、ホストコンピュータ１２はメインプロセッサ１００が実行するプログラムコードをフラッシュメモリ１０４にダウンロードすることができる。
図２は、メインプロセッサ１００、アドレスデコーダ１０３、アドレストランシーバ１０６周辺の詳細回路図であって、アドレスバス３０はｎ本の線（３０1 、３０2 ・・・３０n ）で構成されている。なお、アドレスバス３０はメインプロセッサ１００がリセット状態となると、高インピーダンス状態になるものとする。
【００１７】
このアドレスバス３０には通信コプロセッサ１０２のアドレスバス３１がアドレストランシーバ１０６を介してＯＲ接続されている。アドレストランシーバ１０６はｎ個の制御端子付ゲート（１０６1 、１０６2 ・・・１０６n ）から構成される。なお、各制御端子付ゲート１０６i は、制御入力３２である通信コプロセッサ１０２が出力するメインプロセッサ１００のリセット信号が “Ｈ" レベルであるときには、それぞれの出力は高インピーダンスに維持されて、アドレスデコーダ１０３は通信コプロセッサ１０２から絶縁される。
【００１８】
逆に、制御入力３２が “Ｌ" レベルであるときには、制御端子付ゲート１０６i は導通状態となる。制御入力が “Ｌ" レベルであることは、通信コプロセッサ１０２がメインプロセッサ１００をリセット状態としてることを意味しており、メインプロセッサ１００がリセット状態にあれば、アドレスバス３０は高インピーダンスとなる。従って、通信コプロセッサ１０２がメインプロセッサ１００をリセットしているときは、アドレスデコーダ１０３は通信コプロセッサ１０２から送出されるアドレスをデコードする。
【００１９】
データバスおよびコントロールバスについても同様であり、通信コプロセッサ１０２がメインプロセッサ１００をリセットしているときは、通信コプロセッサ１０２から送出されるデータがフラッシュメモリ１０４およびＲＡＭ１０５に送られる。
図３および４は、通信コプロセッサ１０２で実行されるプログラム再書き込みルーチンのフローチャートであって、メインプロセッサ１００がリセットされるたび、および、電源投入されるたびに実行される。
【００２０】
まず、ステップ３０で再書き込み回数を表すインデックスｎを初期値 “１" に設定し、ステップ３１でメインプロセッサ１００に対してフラッシュメモリ１０４の検査を要求する。メインプロセッサ１００がリセット状態でなければ、この要求に応じてメインプロセッサ１００は、例えば、フラッシュメモリ１０４のパリティ・チェックを実行し、異常の有無を通信コプロセッサ１０２に返答する。メインプロセッサ１００がリセット状態であれば、通信コプロセッサ１０２の要求に対して応答しない。
【００２１】
ステップ３２で返答の内容、あるいは、返答の有無を判定するが、正常である旨の返答があった場合は、プログラムコードは正しくロードされたものとして、このルーチンを終了する。
逆に、異常である旨の返答があった場合、または、返答自体がない場合は、プログラムコードは正しくロードされなかったものとしてステップ３３に進み、リセット信号を “Ｌ" レベルとする。
【００２２】
これにより、メインプロセッサ１００はリセット状態となる。また、アドレストランシーバ１０６、データトランシーバ１０７およびコントロールトランシーバ１０８は活性状態となり、通信コプロセッサ１０２のアドレスバス、データバスおよびコントロールバスがアドレスデコーダ１０３、フラッシュメモリ１０４およびＲＡＭ１０５に接続された状態となる。
【００２３】
そして、ステップ３４でホストコンピュータ１２に対してプログラムコードの再送を要求する。ホストコンピュータ１２がプログラムコードの再送を開始すると、ステップ３５で通信コプロセッサ１０２はプログラムコードを受信し、直接フラッシュメモリ１０４に転送する。
ステップ３６で全プログラムコードのロードが完了したかを判定し、完了していない場合はステップ３５に戻ってプログラムコードのロードを続行する。ステップで全プログラムコードのロードが完了したと判定されたときには、ステップ３７に進み、リセット信号を “Ｈ" レベルとして通信コプロセッサ１０２のアドレスバス、データバスおよびコントロールバスとアドレスデコーダ１０３、フラッシュメモリ１０４およびＲＡＭ１０５との接続を断とする。
【００２４】
続いて、ステップ３８でメインプロセッサ１００に対してフラッシュメモリ１０４の検査を要求する。ステップ３９で、メインプロセッサ１００からの返答の内容、あるいは、返答の有無を判定するが、正常である旨の返答があった場合は、プログラムコードは正しく再ロードされたものとして、このルーチンを終了する。
【００２５】
逆に、異常である旨の返答があった場合、または、返答自体がない場合は、プログラムコードは正しく再ロードされなかったものとしてステップ４０に進み、再書き込み回数を表すインデックスｎが閾値Ｎ以上となっているかを判定する。
ステップ４０で否定判定された場合、即ち、再書き込みが閾値Ｎ回以上繰り返された場合には、ステップ４１でこれ以上再書き込みを行っても、プログラムコードを正しくロードできないものとして警報を出力して、このルーチンを終了する。
【００２６】
逆に、ステップ４０で肯定判定された場合、即ち、再書き込みが閾値Ｎ回以上繰り返されていない場合には、プログラムコードを再ロードするために、ステップ４２でインデックスｎをインクリメントした後に、ステップ３３に戻る。
なお、上記実施例においては、メインプロセッサは、リセットされると各バスはハイインピーダンスとなる構造であるため、メインプロセッサとアドレスデコーダ、フラッシュメモリ、およびＲＡＭとの間には特にトランシーバを設置する必要はないが、リセットされても各バスがハイインピーダンスとならないときはメインプロセッサの各バスにもバストランシーバを設置し、メインプロセッサがリセットされたときにメインプロセッサとアドレスデコーダ、フラッシュメモリおよびＲＡＭとを切り離すことが必要となる。
【００２７】
さらに、上記実施例においては、プリンタに搭載された制御部１０は通信コプロセッサを介して通信ケーブルによってホストコンピュータと接続されるものとしたが、制御部１０のメインプロセッサがホストコンピュータのバスに直接接続可能である場合には、メインプロセッサのバスとホストコンピュータのバスをトランシーバを介して接続する構造としてもよい。
【００２８】
上記第１の実施形態にあっては、バージョンアップ時に正しいプログラムがフラッシュメモリにダウンロードされなかったときは、コプロセッサを使用してプログラムを再度ダウンロードしない限りメインプロセッサによる制御を再開できないため、システム構成が複雑となる。
第２の実施形態は上記課題を解決するためのものであって、比較的簡単な構成でプログラムの再ダウンロードを可能とする。
【００２９】
図５は本発明に係るプログラム再書き込み機能付きコンピュータを使用したプリンタの第２の実施形態の構成図であって、第１の実施形態からの変更点を説明する。
即ち、第１の実施形態においては通信コプロセッサ１０２のアドレスバス３１、データバス及びコントロールバスは、それぞれアドレストランシーバ１０６、データトランシーバ１０７及びコントロールトランシーバ１０８を介してメインプロセッサ１００の各バスに接続されているが、第２の実施形態においては通信コプロセッサ１０２とメインプロセッサ１００とはバス接続されていない。
【００３０】
その代わりに、通信コプロセッサ１０２から出力されるアドレス制御信号ａは第１のアドレス制御部５０を介してフラッシュメモリ１０４のアドレスの最上位桁に接続されている。さらに、通信コプロセッサ１０２のアドレス制御信号はメインプロセッサ１００のディジタル入力ポートに直結されている。
図６は第１のアドレス制御部５０回りの詳細回路図であって、メインプロセッサのアドレスバスは２４ビット（Ａ０〜Ａ２３）で構成されており１６メガバイトのメモリ空間を有し、フラッシュメモリ１０４は２５６キロバイトの容量を、ＲＡＭ１０５は１２８キロバイトの容量を有する場合を想定する。
【００３１】
通信コプロセッサ１０２のディジタル出力ポートから出力されるアドレス制御信号ａは第１の抵抗５０１を介してＮＰＮトランジスタ５０２のベースに印加される。
ＮＰＮトランジスタ５０２のエミッタは直接接地され、ＮＰＮトランジスタ５０２のコレクタはフラッシュメモリ１０４の最上位桁アドレス端子に直接接続される。さらに、メインプロセッサの第１８番目のアドレスバスＡ１７は第２の抵抗５０３を介してＮＰＮトランジスタ５０２のコレクタに接続される。
【００３２】
図７は第２の実施形態におけるメモリマップであって、メインプロセッサは論理アドレスで（００００００）H 〜（ＦＦＦＦＦＦ）H でアクセスできる１８メガバイトのメモリ空間を有する。そして、物理アドレスが（０００００）H 〜（３ＦＦＦＦ）H である２５６キロバイトのフラッシュメモリ１０４はメインプロセッサの論理アドレス（ＦＦＣ０００）H 〜（ＦＦＦＦＦＦ）H に割当てられ、物理アドレスが（０００００）H 〜（１ＦＦＦＦ）H である１２８キロバイトのＲＡＭ１０５はメインプロセッサの論理アドレスで（４０００００）H 〜（４１ＦＦＦＦ）H に割当てられている。従って、フラッシュメモリ１０４及びＲＡＭ１０５はメインプロセッサのアドレスバスの下位１８ビット（Ａ０〜Ａ１７）を使用してアクセスすることが可能である。
【００３３】
そしてメインプロセッサのアドレスバスの上位２ビット（Ａ２２，Ａ２３）はアドレスデコーダ１０３に入力され、メインプロセッサ１００が使用するメモリをフラッシュメモリ１０４とＲＡＭ１０５の間で切り換えるために使用される。即ち、（Ａ２２，Ａ２３）が “Ｌ，Ｈ" である場合はアドレスレコーダはフラッシュメモリ１０４にディスエーブル（disable ）信号を出力し、ＲＡＭ１０５にエーブル（able）信号を出力する。そして（Ａ２２，Ａ２３）が “Ｈ，Ｈ" である場合はアドレスレコーダはフラッシュメモリ１０４にエーブル信号を出力し、ＲＡＭ１０５にディスエーブル信号を出力する。
【００３４】
さらにフラッシュメモリ１０４はそれぞれの容量が１２８キロバイトである領域１と領域２に区分されており、領域１は論理アドレス（ＦＦＥ０００）H 〜（ＦＦＦＦＦＦ）H を有し、領域２は論理アドレス（ＦＦＣ０００）H 〜（ＦＦＤＦＦＦ）H を有する。なお、通常状態においては領域１及び領域２には同一のプログラムが記憶されている。
【００３５】
上記構成において、通信コプロセッサ１０２から出力されるアドレス制御信号ａが “Ｌ" であればＮＰＮトランジスタ５０２はオフ状態となるため、メインプロセッサから出力されるアドレスバスの第１８番目のビットＡ１７が “Ｈ" であるときには領域１にアクセス可能となり、 “Ｌ" であるときには領域２にアクセス可能となる。通常状態においてはメインプロセッサ１００はフラッシュメモリ１０４の領域１に記憶されたプログラムを使用して処理を実行するため、メインプロセッサはアドレスバスの第１８番目のビットＡ１７として “Ｈ" を出力する。
【００３６】
逆に通信コプロセッサ１０２から出力されるアドレス制御信号ａが “Ｈ" であればＮＰＮトランジスタ５０２はオン状態となり、アドレスバスの第１８番目のビットＡ１７は強制的に “Ｌ" となるため、メインプロセッサは領域２に対してだけアクセス可能となる。
ここで、フラッシュメモリ１０４の領域１にはメインプロセッサ制御用プログラム（第１版）Ｖ1 が、領域２にはメインプロセッサ制御用プログラム（第０版）Ｖ0 が記憶されており、制御用プログラムを第２版Ｖ2 にバージョンアップするために、ホストコンピュータ１２からケーブル１３および通信コプロセッサ１０２を介してダウンロード中に障害が発生し、メインプロセッサ制御用プログラム第２版Ｖ2 のダウンロードが正常に行われなかった場合を想定する。
【００３７】
図８はメインプロセッサ１００で実行される第１のプログラム書換えルーチンのフローチャートであって、メインプロセッサ制御用プログラムの書換えが必要となった時点で割り込み処理として実行される。
即ち、書換え要求が発生すると、まずステップ８Ａでアドレス制御信号ａが “Ｌ" であるか、即ちメインプロセッサ１００がアクセス可能なフラッシュメモリ１０４の領域が領域１であるかを判定する。
【００３８】
ステップ８Ａで肯定判定されたとき、即ちメインプロセッサ１００がフラッシュメモリ１０４の領域１にアクセス可能であるときは、ステップ８Ｂで制御プログラムコピールーチンを実行する。
図９は制御プログラムコピールーチンの詳細フローチャートであって、ステップ８Ｂ１でフラッシュメモリ１０４の領域１に記憶されているコピールーチンをＲＡＭ１０５のコピーする。そして、ステップ８Ｂ２でメインプロセッサ１００のタスク制御をＲＡＭ１０５に移行させて、メインプロセッサ１００がＲＡＭ１０５に記憶されているコピールーチンを実行できる状態とした後、ステップ８Ｂ３でフラッシュメモリ１０４の領域１に記憶されているメインプロセッサ制御用プログラム（第１版）Ｖ1 をフラッシュメモリ１０４の領域２にコピーしてこのルーチンを終了する。
【００３９】
次に、ステップ８Ｃ（図８）でコピーが正常に行われたかを、領域２についてパリティチェックによって判定する。ステップ８Ｃで肯定判定されたとき、即ちコピーが正常に行われたと判定されたときは、ステップ８Ｄに進みダウンロードルーチンを実行する。
図１０はダウンロードルーチンの詳細フローチャートであって、ステップ８Ｄ１でメインプロセッサ１００のタスク制御をフラッシュメモリ１０４に移行させた後、ステップ８Ｄ２で制御用プログラムを第２版Ｖ2 をホストコンピュータ１２からＲＡＭ１０５にダウンロードする。ステップ８Ｄ３で、再びフラッシュメモリ１０４の領域１に記憶されているコピールーチンをＲＡＭ１０５のコピーした後、ステップ８Ｄ４でタスク制御をＲＡＭ１０５に移行させ、ステップ８Ｄ５でＲＡＭ１０５にダウンロードされた制御用プログラム第２版Ｖ2 をフラッシュメモリ１０４の領域１にコピーして、このルーチンを終了する。
【００４０】
ステップ８Ｅ（図８）で領域１についてパリティチェックを実行することにより領域１へのコピーが正常に行われたかを判定する。ステップ８Ｅで肯定判定されたとき、即ち領域１へのコピーが正常に実行されたときはステップ８Ｆにおいて通信コプロセッサ１０２に正常ステータスを送信してこのルーチンを終了する。一方、ステップ８Ｃ及びステップ８Ｅで否定判定されたとき、即ちコピーが正常に実行されなかったときは、ステップ８Ｇにおいて通信コプロセッサ１０２に異常ステータスを送信してこのルーチンを終了する。
【００４１】
図１１は通信コプロセッサ１０２で実行されるコプロセッサルーチンのフローチャートであって、メインプロセッサ制御用プログラムの書換えが必要となった時点で割り込み処理として実行される。
まず、ステップ１１Ａでメインプロセッサ診断ルーチンを実行する。
図１２はメインプロセッサ診断ルーチンの詳細フローチャートであって、ステップ１１Ａ１でメインプロセッサから送信されるステータスの受信を開始し、ステップ１１Ａ２でステータスを受信したかを判定する。
【００４２】
ステップ１１Ａ２で肯定判定されたとき、即ちステータスを受信したときには、ステップ１１Ａ３で受信したステータスが正常ステータスかを判定する。そして、ステップ１１Ａ３で肯定判定されたとき、即ち正常ステータスを受信したときは、ステップ１１Ａ４でメインプロセッサにおいてダウンロードが正常に完了したか否かを示すフラグＭＳをダウンロードが正常に完了したことを表す “１" に設定してこのルーチンを終了する。
【００４３】
ステップ１１Ａ２で否定判定されたとき、即ちステータスを受信していないときは、ステップ１１Ａ５でステータスの受信を開始してからフラッシュメモリからＲＡＭへのコピー時間又は制御用プログラムのダウンロード時間に基づいて設定された所定時間が経過したかを判定する。
ステップ１１Ａ５で否定判定されたとき、即ちステータスの受信を開始してから所定時間が経過していないときはステップ１１Ａ２に戻り、ステータス受信のための待機状態を継続する。
【００４４】
ステップ１１Ａ５で肯定判定されたとき、即ちステータスの受信を開始してから所定時間が経過したとき、並びにステップ１１Ａ３で否定判定されたとき、即ち異常ステータスを受信したときは、ステップ１１Ａ６でフラグＭＳをダウンロードが正常に完了しなかったことを表す “０" に設定してこのルーチンを終了する。
【００４５】
ステップ１１Ｂ（図１１）でメインプロセッサにおいてダウンロードが正常に行われたかをフラグの設定に基づいて判定する。
ステップ１１Ｂで否定判定されたとき、即ちメインプロセッサにおいて制御用プログラム第２版Ｖ2 のダウンロードが正常に行われなかったときは、ステップ１１Ｃでメモリ領域切り換えルーチンを実行する。
【００４６】
図１３はメモリ領域切り換えルーチンの詳細フローチャートであって、ステップ１１Ｃ１でメインプロセッサをリセット状態するために通信コプロセッサ１０２のリセット信号出力端子を介してリセット信号を “Ｌ" レベルに設定する。
メインプロセッサ１００をリセット状態とした後、ステップ１１Ｃ２でアドレス制御信号を “Ｈ" レベルとし、メインプロセッサがアクセスするフラッシュメモリ１０４の領域を領域２に切り換える。
【００４７】
その後、ステップ１１Ｃ３で通信コプロセッサ１０２のリセット信号出力端子を介してリセット信号を “Ｈ" レベルとしてメインプロセッサ１００を動作状態として、このルーチンを終了する。
すると、メインプロセッサは再度図８のダウンロードルーチンの実行を開始するが、今回はアドレス制御信号が “Ｈ" レベルであるのでステップ８Ａにおいて否定判定され直接ステップ８Ｄに進み、制御用プログラム第２版Ｖ2 がＲＡＭ１０５に再度ダウンロードされる。ステップ８Ｅから８Ｇで制御用プログラム第２版Ｖ2 のダウンロードステータスを通信コプロセッサに送信してこのルーチンを終了する。
通信コプロセッサはステップ１１Ｄで図１２に示すメインプロセッサ診断ルーチンを実行してこのステータスを処理する。
【００４８】
即ち、ステップ１１Ｅ（図１１）でメインプロセッサにおいてダウンロードが正常に行われたれたかをフラグの設定に基づいて判定する。
ステップ１１Ｅで否定判定されたとき、即ちメインプロセッサにおいて制御用プログラム第２版Ｖ2 の再ダウンロードが正常に行われなかったときは、ステップ１１Ｆで異常処理を実行してこのルーチンを終了する。なお、異常処理としては、ダウンロードを再実行する、あるいは適当な異常表示を表示する等の処理がある。
【００４９】
ステップ１１Ｂ又はステップ１１Ｅで肯定判定されたとき、即ちメインプロセッサでダウンロードが正常に行われたときは、ステップ１１Ｇでアドレス制御信号を “Ｌ" レベルとしメインプロセッサがアクセスするフラッシュメモリ領域を領域１に戻してこのルーチンを終了する。
上記第２の実施形態においてはメインプロセッサにおいてダウンロードが正常に行われたか否かを通信コプロセッサによりソフトウエア的に判定していたが、通信コプロセッサを具備しない場合にもハードウエア的に判定することも可能である。
【００５０】
図１４は本発明に係るプログラム再書き込み機能付きコンピュータを使用したプリンタの第３の実施形態の構成図であって、第２の実施形態からの変更点を説明する。
即ち、通信コプロセッサ１０２に代わり、リセット制御部１４０、時間監視部１４１及び第２のアドレス信号制御部１４２が使用される。
【００５１】
図１５はリセット制御部、時間監視部及び第２のアドレス信号制御部周辺の詳細回路図、図１６は詳細回路各部の波形図であって、図１５及び図１６のSig ○は相互に対応しており、Sig １は電源監視回路１０９１から出力されるメインプロセッサリセット信号を示している。
リセット制御部１４０は一次遅れ回路１４０１と排他的論理和ゲート１４０２を具備し、一次遅れ回路１４０１の出力であるリセット信号Sig ２はＮＯＲゲート１４０２の一方の入力端子に接続されている。ＮＯＲゲート１４０２の出力はダイオード１０９２を介してメインプロセッサ１００のリセット端子に接続されている。
【００５２】
時間監視部１４１はＯＲゲート１４１１、タイマ１４１２、充電回路１４１３、ＮＯＴ素子１４１４、第１のトランジスタ１４１５を具備し、ＯＲゲート１４１１の第１の入力端子はメインプロセッサ１００のウォッチドッグタイマ端子に接続されており、メインプロセッサ１００が正常であるときには一定周期のパルス信号となるウォッチドッグタイマ信号Sig ３を受信する。
【００５３】
ＯＲゲート１４１１の出力Sig ４はタイマＩＣ１４１２のトリガ端子に供給されるが、ウォッチドッグタイマ信号Sig ３が所定周期で変化するかにより、メインプロセッサ１００が正常であるかを監視する。タイマＩＣ１４１２の出力Sig ５はメインプロセッサ１００が正常と判定されれば “Ｈ" レベルであり、異常と判定されれば “Ｌ" レベルとなる。タイマＩＣ１４１２の出力Sig ５はＮＯＴ素子１４１４で反転されて信号Sig ６となる。
【００５４】
なお、第１のトランジスタ１４１５のベースはＯＲゲート１４１１の出力Sig ４に、エミッタはタイマＩＣ１４１２のディスチャージ端子及びスレッシホールド端子に接続されており、コレクタは接地されている。
第２のアドレス信号制御部１４２はフリップフロップ１４２１、第２のトランジスタ１４２２及び第３のトランジスタ１４２３を具備し、フリップフロップ１４２１のクロック端子にはＮＯＴ素子１４１４の出力が接続される。
【００５５】
フリップフロップ１４２１の正転出力ＱはＮＯＲゲート１４０２の他の一方の入力端子に、反転出力Ｑ* は一次遅れ回路１４０１の入力に接続されている。又、フリップフロップ１４２１の正転出力Ｑは第２のトランジスタ１４２２のエミッタ及びメインプロセッサ１００のディジタル入力ポートにも接続される。
第２のトランジスタ１４２２のコレクタは抵抗を介して第３のトランジスタ１４２３のベースに、ベースは抵抗分割回路を介してメインプロセッサ１００のディジタル出力ポートに接続される。そして、第３のトランジスタ１４２３のエミッタは接地され、コレクタはフラッシュメモリ１０４の最上位桁アドレス端子に直接接続されるとともに抵抗を介してメインプロセッサ１００のアドレスバスの最上位桁端子Ａ１７にも接続される。
【００５６】
図１７はメインプロセッサ１００で実行される第２のプログラム書換えルーチンのフローチャートであって、メインプロセッサ制御用プログラムの書換えが必要となった時点で割り込み処理として実行される。大部分の処理は第２のプログラム書換えルーチン（図８）と同一であるので相違点のみを説明する。
即ち、ステップ８Ｅでコピーが正常に行われたときは、ステップ１６Ａでディジタル出力ポートから出力されるアクセス制御信号Sig １３を “Ｌ" レベルに設定してこのルーチンを終了する。逆に、ステップ８Ｃ及びステップ８Ｅで否定判定されたとき、即ちコピーが正常に行われなかったときは、ステップ１６Ｂでアクセス制御信号Sig １３を “Ｈ" レベルに設定し、ステップ１６Ｃで内部リセットをかけてこのルーチンを終了する。
【００５７】
従って、コピーが正常に行われなかったときは第２のプログラム書換えルーチンが再実行されるが、この場合はステップ８Ａで否定判定されステップ８Ｄでプログラムが再度ダウンロードされる。
プログラムのダウンロードによりダウンロードルーチンが実行できないほどにフラッシュメモリ１０４の領域１の記憶内容が破壊された場合には、時間監視部１４１のウオッチドッグタイマSig ３が周期的なパルスでなくなる。すると、タイマＩＣ１４１２の出力Sig ５が “Ｈ" に、Sig ５が “Ｌ" に遷移する（図１６の時刻ｔ1 ）。
【００５８】
すると、アドレス制御部１４２のフリップフロップ１４２１が駆動され、正転出力Ｑが “Ｈ" となり、リセット制御部１４０の排他的論理和ゲート１４０２の一方に入力端子に供給されるため、その出力であるリセット信号Sig ２も “Ｈ" となる。
フリップフロップ１４２１の反転出力Ｑ* は “Ｌ" となり、一次遅れ回路１４０１の時定数だけ遅れて排他的論理和ゲート１４０２の他方の入力端子に供給されるため、リセット信号Sig ２は所定時間後に “Ｌ" となりリセット信号はプルス状の波形となる（図１６の時刻ｔ2 ）。このリセット信号Sig ２によってメインプロセッサ１００はリセットされて再実行可能となる。
【００５９】
フリップフロップ１４２１の正転出力Ｑが “Ｈ" となると、第２のトランジスタ１４２２及び第３のトランジスタ１４２３によってメインプロセッサ１００のデータアドレスの最上位ビットＡ１７が強制的に接地状態とされ、メインプロセッサ１００はフラッシュメモリ１０４の領域２に記憶されたプログラムの実行を開始する。
【００６０】
即ち、フラッシュメモリ１０４の領域２に記憶されたダウンロードルーチンを使用して新たな制御用プログラムをいったんＲＡＭ１０５にダウンロードする。そして領域２に記憶されたコピールーチンをＲＡＭ１０５にコピーした後タスク制御をＲＡＭ１０５に遷移し、ＲＡＭ１０５に記憶された新たな制御用プログラムをフラッシュメモリ１０４の領域１にコピーし、アドレス制御信号を “Ｈ" に設定してダウンロード処理は完了する。
【００６１】
なお、フリップフロップ１４２１の正転出力Ｑが “Ｈ" で、メインプロセッサ１００のデータアドレスの最上位ビットＡ１７が強制的に接地状態とされている間は時間監視部１４１のＯＲゲート１４１１の他方の端子が “Ｈ" に維持されるため、タイマＩＣ１４１２によりウオッチドッグ信号Sig ３の監視は実行されない。
【００６２】
そして、メインプロセッサ１００によってアドレス制御信号を “Ｈ" とする処理が実行されると、ディジタル出力ポートから出力されるリセットパルスSig １０が “Ｈ" となり（図１６の時刻ｔ3 ）、メインプロセッサ１００はフラッシュメモリ１０４の領域１に記憶された制御用プログラムを実行する。
そして、正常であれば図１６の時刻ｔ4 でSig １２によりタイマＩＣ１４１２及びフリップフロップ１４２１がリセットされる。
【００６３】
以上第３の実施形態にあっては、メインプロセッサが正常であるか否かをウオッチドッグ信号Sig ３に基づき判定する際の時間をコンデンサと抵抗を使用した一次遅れ回路により決定しているが、例えばカウンタ、コイルと抵抗、コイルとコンデンサを使用した時間計時回路によっても代用することが可能である。
また、第２及び第３の実施形態においてはトランジスタとしてバイポーラ型トランジスタを使用しているが電界効果型トランジスタ又は集積回路を使用できることはいうまでもない。
【００６４】
さらに、第２及び第３の実施形態においては一つのフラッシュメモリを２領域に分割しているが、各領域毎に独立したフラッシュメモリを使用してもよい。
なお、上記の各実施形態においては、一括消去型不揮発メモリはフラッシュメモリであるとしたが、他の形式のメモリ、例えば、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory ）、バッテリバックアップ付ＲＡＭ（Random Access Memory）を適用することも可能である。
【００６５】
又ダウンロードが完全に行なわれなかった旨をホストコンピュータに連絡する機能をメインプロセッサ又はコプロセッサに持たせてもよい。
【００６６】
【発明の効果】
本発明に係るプログラム再書き込み機能付コンピュータによれば、ホストコンピュータからメモリへのプログラムのダウンロードが正常に行われなかったときは、正常に行われなかったことを自動的に検出して、再度ダウンロードが行われるので、全プログラムをメモリに正しくダウンロードすることが可能となる。
【図面の簡単な説明】
【図１】本発明に係るプログラム再書き込み機能付コンピュータを適用したプリンタの第１の実施形態の構成図である。
【図２】詳細回路図である。
【図３】プログラム再書き込みルーチンのフローチャート（１／２）である。
【図４】プログラム再書き込みルーチンのフローチャート（２／２）である。
【図５】本発明に係るプログラム再書き込み機能付コンピュータを適用したプリンタの第２の実施形態の構成図である。
【図６】第１のアドレス信号制御部回りの詳細構成図である。
【図７】メモリマップである。
【図８】第１のプログラム書換えルーチンのフローチャートである。
【図９】制御プログラムコピールーチンの詳細フローチャートである。
【図１０】ダウンロードルーチンの詳細フローチャートである。
【図１１】コプロセッサのフローチャートである。
【図１２】メインプロセッサ診断ルーチンの詳細フローチャートである。
【図１３】メモリ切り換えルーチンの詳細フローチャートである。
【図１４】本発明に係るプログラム再書き込み機能付コンピュータを適用したプリンタの第３の実施形態の構成図である。
【図１５】リセット制御部、時間監視部及び第２のアドレス制御部回りの詳細回路図である。
【図１６】リセット制御部、時間監視部及び第２のアドレス制御部の波形図である。
【図１７】第２のプログラム書換えルーチンのフローチャートである。
【符号の説明】
１…プリンタ
１０…制御部
１００…メインプロセッサ
１０１…インターフェイス
１０２…通信コプロセッサ
１０３…アドレスデコーダ
１０４…フラッシュメモリ
１０５…ＲＡＭ
１０６…アドレストランレシーバ
１０７…データトランレシーバ
１０８…コントロールトランレシーバ
１０９…電源監視回路
１１…プリント部
１１０…サーマルヘッド
１１１…プラテン
１１２…駆動回路
１１３…モータ
【図１】
0004375857.tif 000002
【図２】
0004375857.tif 000003
【図３】
0004375857.tif 000004
【図４】
0004375857.tif 000005
【図５】
0004375857.tif 000006
【図６】
0004375857.tif 000007
【図７】
0004375857.tif 000008
【図８】
0004375857.tif 000009
【図９】
0004375857.tif 000010
【図１０】
0004375857.tif 000011
【図１１】
0004375857.tif 000012
【図１２】
0004375857.tif 000013
【図１３】
0004375857.tif 000014
【図１４】
0004375857.tif 000015
【図１５】
0004375857.tif 000016
【図１６】
0004375857.tif 000017
【図１７】
0004375857.tif 000018