(57)【要約】【課題】コマンド／ステータス送受信用インタフェースを簡単なハードで構成し、かつ、プロトコルオーバヘッドが少なく、スループットの向上が期待できるコントローラとエンジンの通信方法を実現すること。【解決手段】コマンドを転送するために共有メモリ方式のデータ転送手段を有し、コントローラからエンジンへのコマンド送信用とエンジンからコントローラへのコマン送信用に共有メモリを分割して使用する手段を有し、共有メモリにおけるコントローラによる書き込み開始位置をエンジンに通知する手段とエンジンによる書き込み開始位置をコントローラに通知する手段を有し、コマンドのパケットサイズが転送に使用できる共有メモリのサイズを超える場合は、共有メモリサイズ分のデータを書き込み、書き込み完了の通知を発行した後、再び書き込み開始アドレスからデータの書き込みを始める手段を有し、コマンド受信側が読み込み完了の通知を発行するまで送信側は共有メモリに書き込みを行わない手段を有する。【選択図】        図１
2006019831.tif 000002
【特許請求の範囲】
【請求項１】
画像処理コントローラと印刷エンジンを有する印刷装置において、コマンド／ステータスを転送するために共有メモリ方式のデータ転送手段を有することを特徴とする印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【請求項２】
画像処理コントローラから印刷エンジンへのコマンド／ステータス送信用と、印刷エンジンから画像処理コントローラへのコマンド／ステータス送信用に、共有メモリを分割して使用する手段を有することを特徴とする請求項１記載の印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【請求項３】
共有メモリにおける画像処理コントローラによる書き込み開始位置を印刷エンジンに通知する手段と、印刷エンジンによる書き込み開始位置を画像処理コントローラに通知する手段を有することを特徴とする請求項１記載の印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【請求項４】
コマンド／ステータスのパケットサイズが転送に使用できる共有メモリのサイズを超える場合は、共有メモリサイズ分のデータを書き込み、書き込み完了の通知を発行した後、再び書き込み開始位置からデータの書き込みを始める手段を有することを特徴とする請求項１記載の印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【請求項５】
コマンド／ステータス受信側が読み込み完了の通知を発行するまで、送信側は共有メモリに書き込みを行わない手段を有することを特徴とする請求項１記載の印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理コントローラと印刷エンジンを有する印刷装置に関するものである。
【背景技術】
【０００２】
従来、レーザビームプリンタに代表される電子写真方式のプリンタにおいては、ホストコンピュータ等の外部装置からＰＤＬ（ページ記述言語）などの形式で表現された印刷データ（コードデータやイメージデータ等）を受信し、画像処理コントローラにより受信データに基づきビットマップデータに展開し、展開されたビットマップデータを印刷エンジンに出力することが可能となっている。
【０００３】
前記画像処理コントローラと印刷エンジンとのインタフェースとしては、標準的なパラレルインタフェースであるＰＣＩバス等を用いてビットマップデータを転送したり、お互いを制御するためのコマンドやお互いの状態を表すステータスの入出力を行うことが可能になっている。
【０００４】
さらに、ビットマップデータを転送するインタフェースと、コマンド／ステータスを転送するインタフェースを別々に用意することにより、ビットマップデータ転送中におけるコマンド／ステータスの入出力を容易に行うことも可能になっている。
【０００５】
一方、インクジェットプリンタにおいても、レーザビームプリンタと同様に画像処理コントローラと印刷エンジンで構成されるようになっており、前述したようにビットマップデータやコマンド／ステータスの転送を行うことが可能になっている（たとえば、特許文献１参照。）。
【特許文献１】特開平０８−３１７１６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら上記従来例は、ビットマップデータ転送用のインタフェースとは別に用意したコマンド／ステータス送受信用インタフェースのハードウェアのコストがかさんだり、プロトコルオーバヘッドが大きく、スループットの低下が怪訝される等の欠点が存在する。
【０００７】
従って本出願に係る目的は、コマンド／ステータス送受信用インタフェースを簡単なハードで構成し、かつ、プロトコルオーバヘッドが少なく、スループットの向上が期待できる画像処理コントローラと印刷エンジンの通信方法を実現することである。
【課題を解決するための手段】
【０００８】
この発明は下記の構成を備えることにより上記課題を解決できるものである。
【０００９】
（１）画像処理コントローラと印刷エンジンを有する印刷装置において、コマンド／ステータスを転送するために共有メモリ方式のデータ転送手段を有することを特徴とする印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【００１０】
（２）画像処理コントローラから印刷エンジンへのコマンド／ステータス送信用と、印刷エンジンから画像処理コントローラへのコマンド／ステータス送信用に、共有メモリを分割して使用する手段を有することを特徴とする前記（１）記載の印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【００１１】
（３）共有メモリにおける画像処理コントローラによる書き込み開始位置を印刷エンジンに通知する手段と、印刷エンジンによる書き込み開始位置を画像処理コントローラに通知する手段を有することを特徴とする前記（１）記載の印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【００１２】
（４）コマンド／ステータスのパケットサイズが転送に使用できる共有メモリのサイズを超える場合は、共有メモリサイズ分のデータを書き込み、書き込み完了の通知を発行した後、再び書き込み開始位置からデータの書き込みを始める手段を有することを特徴とする前記（１）記載の印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【００１３】
（５）コマンド／ステータス受信側が読み込み完了の通知を発行するまで、送信側は共有メモリに書き込みを行わない手段を有することを特徴とする前記（１）記載の印刷装置における画像処理コントローラと印刷エンジンの通信方法。
【発明の効果】
【００１４】
本出願に係る第１〜５の発明によれば、画像処理コントローラと印刷エンジンを有する印刷装置において、コマンド／ステータスを転送するために共有メモリ方式のデータ転送手段を有し、画像処理コントローラから印刷エンジンへのコマンド／ステータス送信用と印刷エンジンから画像処理コントローラへのコマンド／ステータス送信用に共有メモリを分割して使用する手段を有し、共有メモリにおける画像処理コントローラによる書き込み開始位置を印刷エンジンに通知する手段と印刷エンジンによる書き込み開始位置を画像処理コントローラに通知する手段を有し、コマンド／ステータスのパケットサイズが転送に使用できる共有メモリのサイズを超える場合は、共有メモリサイズ分のデータを書き込み、書き込み完了の通知を発行した後、再び書き込み開始アドレスからデータの書き込みを始める手段を有し、コマンド／ステータス受信側が読み込み完了の通知を発行するまで送信側は共有メモリに書き込みを行わない手段を有することにより、コマンド／ステータス送受信用インタフェースを簡単なハードで構成し、かつ、プロトコルオーバヘッドが少なく、スループットの向上が期待できる画像処理コントローラと印刷エンジンの通信方法を実現することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下本発明を実施するための最良の形態を、実施例により詳しく説明する。
【実施例】
【００１６】
（第１の実施例）
図１は本実施例を実現する印刷装置の一構成例であり、１〜７および１６は画像処理コントローラに含まれ、１０〜１６は印刷エンジンに含まれる。
【００１７】
まず、画像処理コントローラから説明する。１はＣＰＵ、２はＬＣＤなどの表示部、３はスイッチやキーなどの入力部、４はホストＩＦ（ＩＦはインタフェースのこと。以降、ＩＦと記載する。）から受信した印刷データをビットマップデータに変換するための画像処理部、５は書き換えの発生頻度が低いモジュールを格納するＲＯＭやフラッシュメモリなどのメモリ、６は主にメモリ５に格納されているプログラムの作業領域や変数などに使用されるＲＡＭなどのメモリ、７はビットマップデータを印刷エンジンに送信するためのエンジンＩＦである。メモリ５に格納されているファームウェアは画像処理コントローラを制御するためのプログラムである。
【００１８】
次に、印刷エンジンを説明する。１０はＣＰＵ、１１はインクを格納するタンクやインクを吐出し印刷を行うヘッドなどの印刷部、１２はカセットや手差しトレイなどの給紙部、１３は書き換えの発生頻度が低いモジュールを格納するＲＯＭやフラッシュメモリなどのメモリ、１４は主にメモリ１３に格納されているプログラムの作業領域や変数などに使用されるＲＡＭなどのメモリ、１５はビットマップデータを画像処理コントローラから受信するためのコントローラＩＦである。メモリ１３に格納されているファームウェアは印刷エンジンを制御するためのプログラムであり、図３、図４のフローチャートで示される各処理を含んでいる。
【００１９】
以下、メモリ１４に確保される変数に関して説明するが、コマンド／ステータスはそれぞれヘッダ＋ボディで構成されているものを想定している。ＷｒｔＣｎｔは、画像処理コントローラ／印刷エンジンが書き込んだレジスタ数であり、図２のコマンド／ステータス書き込み数通知レジスタから取得する。ＰａｃｋｅｔＬｅｎは、コマンド／ステータス（ヘッダ＋ボディ）のパケット長（単位はバイト）であり、未図示であるが、コマンド／ステータスヘッダから取得することを想定している。ＲｅｇＮｏは、コマンド／ステータス書き込み開始レジスタ番号であり、図２のコマンド／ステータス書き込み開始レジスタ番号通知レジスタから取得する。ＭａｘＲｅｇＮｏは、読み込むべきコマンドデータ格納レジスタ番号の最大値、もしくは書き込むべきステータスデータ格納レジスタ番号の最大値である。Ｄａｔａ［］は、コマンド／ステータスデータを格納するバッファである。Ｐｎｔは、Ｄａｔａ［］で使用されるポインタであり、初期値は０である。
【００２０】
１６はコマンド／ステータスを画像処理コントローラと印刷エンジンの間で送受信するための共有メモリ式ＩＦである。また、印刷装置以外のものとして、８はＵＳＢやＮｅｔＷｏｒｋなどのホストＩＦ、９はパソコンなどのホスト装置である。
【００２１】
図２は共有メモリ式ＩＦ１６の一構成例であり、本実施例では画像処理コントローラから印刷エンジンに送信するデータはコマンド、印刷エンジンから画像処理コントローラに送信するデータはステータスを想定している。コマンドデータ格納レジスタ０〜１５はコマンドデータ（ヘッダ＋ボディ）を転送するレジスタ、ステータスデータ格納レジスタ０〜１５はステータスデータ（ヘッダ＋ボディ）を転送するレジスタ、コマンド／ステータス書き込み完了通知レジスタはそれぞれ画像処理コントローラがコマンドを書き込み終わったことや印刷エンジンがステータスを書き込み終わったことを相手に通知するレジスタ、コマンド／ステータス書き込み数通知レジスタは、それぞれ画像処理コントローラおよび印刷エンジンが書き込んだレジスタ数を通知するレジスタ、コマンド／ステータス書き込み開始レジスタ番号通知レジスタは、それぞれコマンドおよびステータスが書き込まれている先頭レジスタ番号を通知するレジスタである。
【００２２】
本実施例は、画像処理コントローラと印刷エンジンを有する印刷装置において、共有メモリ式ＩＦを用いて印刷エンジンがコマンドを画像処理コントローラから受信し、同じく印刷エンジンがステータスを画像処理コントローラへ送信するものである。なお、説明の便宜上、本実施例は画像処理コントローラから印刷エンジンに送信するデータをコマンド、印刷エンジンから画像処理コントローラに送信するデータをステータスとしている。
【００２３】
以降、これらの実現方法を図３、４のフローチャートを用いて説明していく。
【００２４】
まず、印刷エンジンがコマンドを画像処理コントローラから受信する処理を、図３のフローチャートを用いて説明する。
【００２５】
Ｓ３−１では画像処理コントローラからのコマンド書き込み終了待ちを行っている。具体的には、画像処理コントローラがコマンドデータ格納レジスタにコマンドを書き込み終わると、コマンド書き込み完了通知レジスタにその旨を書き込み、これを印刷エンジンが読み込む。実際のシステムでは、前記コマンド書き込み完了通知レジスタの値が変化すると印刷エンジンに対して割り込みが発生するのが一般的である。また、この処理の前段階として、例えば、ユーザが入力部３と表示部２を用いてヘッドクリーニング等を実行すると、メモリ５に格納されているファームウェアがこれをヘッドクリーニングコマンド等に解釈する処理が必要であるが、本発明は画像処理コントローラと印刷エンジンの通信方法に関するものなので、特に詳細な説明は記載しない。
【００２６】
Ｓ３−２ではＷｒｔＣｎｔにコマンド書き込み数を代入している。これは実際にはコマンドデータ格納レジスタの書き込み数であり、コマンド書き込み数通知レジスタから取得する。
【００２７】
Ｓ３−３では画像処理コントローラが書き込み可能レジスタ数を超えた値をコマンド書き込み数通知レジスタに設定しているか否かを判断している。本実施例における書き込み可能レジスタ数は図２に示した通り１６であるが、これはシステム依存であることは言うまでもない。超えた場合にはＳ３−４へ行き、超えない場合にはＳ３−５へ行く。
【００２８】
Ｓ３−４ではＷｒｔＣｎｔに書き込み可能レジスタ数を代入している。Ｓ３−３とＳ３−４は画像処理コントローラが想定外のコマンド書き込み数を設定した場合の処理であり、本実施例では、最大値である書き込み可能レジスタ数をＷｒｔＣｎｔに設定している。
【００２９】
Ｓ３−５ではコマンドヘッダを読み込み済みか否かを判断している。この判断方法は未図示であるが、例えば、あらかじめフラグを０に初期化しておき、Ｓ３−６でコマンドヘッダを読み込んだら、そのフラグに１を設定する等の処理が考えられる。コマンドヘッダを既に読み込んでいる場合はＳ３−８へ行き、読み込んでいない場合はＳ３−６へ行く。
【００３０】
Ｓ３−６ではコマンドヘッダを読み込んでいる。具体的にはＳ３−１２と同様の方法でコマンドデータ格納レジスタから読み込むだけである。例えば、コマンドヘッダが２レジスタ分のサイズであれば、コマンドデータ格納レジスタ０と同１を読み込めばよい。また、ここでコマンドヘッダを読み込んだ（２レジスタ分）のでＷｒｔＣｎｔから２を減算する必要がある。
【００３１】
Ｓ３−７ではＰａｃｋｅＬｅｎにコマンドパケット長を代入している。前述した通り、コマンドパケット長はコマンドヘッダに含まれている。
【００３２】
Ｓ３−８ではＲｅｇＮｏにコマンド書き込み開始レジスタ番号を代入している。これはコマンド書き込み開始レジスタ数通知レジスタから取得する。
【００３３】
Ｓ３−９ではコマンド書き込み開始レジスタ番号に書き込み可能レジスタ数を加算した値をＭａｘＲｅｇＮｏに代入している。これでＭａｘＲｅｇＮｏに読み込むべきコマンドデータ格納レジスタ番号の最大値が設定されたことになる。
【００３４】
Ｓ３−１０ではＰｎｔに０を代入し、初期化している。
【００３５】
Ｓ３−１１では画像処理コントローラによって書き込まれたコマンドデータ格納レジスタを全て読み込んだか否かを判断している。全て読み込んだ場合はＳ３−１４へ行き、全てを読み込んでいない場合はＳ３−１２へ行く。
【００３６】
Ｓ３−１２ではコマンドボディを読み込んでいる。具体的にはＲｅｇＮｏで示されるコマンドデータ格納レジスタを読み込み、Ｄａｔａ［］のＰｎｔ位置に格納する。
【００３７】
Ｓ３−１３では次のコマンドデータをＤａｔａ［］に格納するために、ＰｎｔとＲｅｇＮｏにそれぞれ１を加算している。
【００３８】
上記、Ｓ３−１１〜Ｓ３−１３のループにより、画像処理コントローラによって書き込まれたコマンドデータをＤａｔａ［］に順番に格納することになる。
【００３９】
Ｓ３−１４ではコマンド読み込みが完了したことを画像処理コントローラに通知している。具体的には、印刷エンジンがコマンド読み込み完了通知レジスタを設定し、これを画像処理コントローラが読み込む。実際のシステムでは、前記コマンド読み込み完了通知レジスタの値が変化すると画像処理コントローラに対して割り込みが発生するのが一般的である。
【００４０】
Ｓ３−１５では読み込んだレジスタ数に１レジスタのサイズを積算した値をコマンドパケット長から減算し、ＰａｃｋｅｔＬｅｎに代入している。ここで１レジスタサイズは例えば３２ビット（４バイト）等である。
【００４１】
Ｓ３−１６ではＳ３−１５の結果、ＰａｃｋｅｔＬｅｎが０であるか否かを判断している。０の場合は全てのコマンドボディを読み込んだので終了し、０以外の場合はまだ画像処理コントローラからコマンドボディの続きが書き込まれるので、Ｓ３−１へ行き、コマンド書き込み待ちとなる。
【００４２】
以上で、共有メモリ式ＩＦを用いて印刷エンジンがコマンドを画像処理コントローラから受信することが可能となる。一方、画像処理コントローラがステータスを印刷エンジンから受信する処理であるが、基本的に図３におけるコマンドをステータスに置き換えればよいので、図示及び説明を省くこととする。
【００４３】
次は、印刷エンジンがステータスを画像処理コントローラへ送信する処理を、図４のフローチャートを用いて説明する。
【００４４】
Ｓ４−１ではＰａｃｋｅＬｅｎにステータスパケット長を代入している。前述した通り、ステータスパケット長はステータスヘッダに含まれている。この処理の前段階として、例えば、給紙部１２で用紙なしが発生すると、メモリ１４に格納されているファームウェアがこれを用紙なしステータスとして処理する必要があるが、本発明は画像処理コントローラと印刷エンジンの通信方法に関するものなので、特に詳細な説明は記載しない。
【００４５】
Ｓ４−２ではＰｎｔに０を代入し、初期化している。
【００４６】
Ｓ４−３ではステータスパケット長が書き込み可能レジスタ数に１レジスタのサイズを積算した値より大きいか否かを判断している。これはステータスデータ格納レジスタ０〜１５にステータスデータ（ヘッダ＋ボディ）が全て書き込めるか否かを判断している。全て書き込める場合はＳ４−６へ行き、全てを書き込めない場合はＳ４−４へ行く。
【００４７】
Ｓ４−４ではＭａｘＲｅｇＮｏに書き込み可能レジスタ数を代入している。
【００４８】
Ｓ４−５では書き込み可能レジスタ数に１レジスタのサイズを積算した値をステータスパケット長から減算し、ＰａｃｋｅｔＬｅｎに代入している。これでＰａｃｋｅｔＬｅｎにはこれから書き込むステータスデータを差し引いたサイズが設定されたことになる。
【００４９】
Ｓ４−６ではステータスパケット長を１レジスタのサイズで除算し、ＭａｘＲｅｇＮｏに代入している。なお、ステータスパケット長が１レジスタサイズで除算した結果余りが発生した場合は、ＭａｘＲｅｇＮｏに１を加算する処理が必要になる。
【００５０】
Ｓ４−７ではステータスパケット長に０を代入している。これは、今回の書き込みで全てのステータスデータが書き込めるためである。
【００５１】
Ｓ４−８ではＲｅｇＮｏにステータス書き込み開始レジスタ番号を代入している。これはステータス書き込み開始レジスタ数通知レジスタから取得する。
【００５２】
Ｓ４−９ではステータス書き込み開始レジスタ番号に書き込み可能レジスタ数を加算した値をＭａｘＲｅｇＮｏに代入している。これでＭａｘＲｅｇＮｏに書き込むべきステータスデータ格納レジスタ番号の最大値が設定されたことになる。
【００５３】
Ｓ４−１０では今回書き込むステータスデータを全て書き込んだか否かを判断している。全て書き込んだ場合はＳ４−１３へ行き、全てを書き込んでいない場合はＳ４−１１へ行く。
【００５４】
Ｓ４−１１ではステータスデータ（ヘッダ＋ボディ）を書き込んでいる。具体的にはＤａｔａ［］のＰｎｔ位置のデータを読み込み、ＲｅｇＮｏで示されるステータスデータ格納レジスタに格納している。
【００５５】
Ｓ４−１２では次のＤａｔａ［］をステータスデータ格納レジスタに格納するために、ＰｎｔとＲｅｇＮｏにそれぞれ１を加算している。
【００５６】
上記、Ｓ４−１０〜Ｓ４−１２のループにより、Ｄａｔａ［］に格納されているステータスデータをステータスデータ格納レジスタに順番に書き込んだことになる。
【００５７】
Ｓ４−１３ではステータス書き込みが完了したことを画像処理コントローラに通知している。具体的には、印刷エンジンがステータス書き込み完了通知レジスタを設定し、これを画像処理コントローラが読み込む。実際のシステムでは、前記ステータス書き込み完了通知レジスタの値が変化すると画像処理コントローラに対して割り込みが発生するのが一般的である。
【００５８】
Ｓ４−１４では画像処理コントローラからのステータス読み込み終了待ちを行っている。具体的には、画像処理コントローラがステータスデータ格納レジスタからステータスを読み込み終わると、ステータス読み込み完了通知レジスタにその旨を書き込み、これを印刷エンジンが読み込む。実際のシステムでは、前記ステータス読み込み完了通知レジスタの値が変化すると印刷エンジンに対して割り込みが発生するのが一般的である。
【００５９】
Ｓ４−１５ではＳ４−５及びＳ４−７の結果、ＰａｃｋｅｔＬｅｎが０であるか否かを判断している。０の場合は全てのステータスデータを書き込んだので終了し、０以外の場合はまだステータスデータの続きをステータスデータ格納レジスタに書き込む必要があるので、Ｓ４−３へ行く。
【００６０】
以上で、共有メモリ式ＩＦを用いて印刷エンジンがステータスを画像処理コントローラへ送信することが可能となる。一方、画像処理コントローラがコマンドを印刷エンジンへ送信する処理であるが、基本的に図４におけるステータスをコマンドに置き換えればよいので、図示及び説明を省くこととする。
【図面の簡単な説明】
【００６１】
【図１】本発明の第１の実施例を実現する印刷装置の一構成例である。
【図２】本発明の第１の実施例を実現する共有メモリ式ＩＦの一構成例である。
【図３】本発明の第１の実施例を実現する印刷エンジンのコマンドデータ受信処理のフローチャートである。
【図４】本発明の第１の実施例を実現する印刷エンジンのステータスデータ送信処理のフローチャートである。
【符号の説明】
【００６２】
１  ＣＰＵ
２  表示部
３  入力部
４  画像処理部
５  メモリ
６  メモリ
７  エンジンＩＦ
８  ホストＩＦ
９  ホスト装置
１０  ＣＰＵ
１１  印刷部
１２  給紙部
１３  メモリ
１４  メモリ
１５  コントローラＩＦ
１６  共有メモリ式ＩＦ
【図１】
2006019831.tif 000003
【図２】
2006019831.tif 000004
【図３】
2006019831.tif 000005
【図４】
2006019831.tif 000006