(57)【特許請求の範囲】
【請求項１】
最大パケットサイズ以下に分割されたパケットを外部のコンピュータから受信してメモリに格納し、前記メモリに格納されたパケットが所定のデータ量となったとき又は前記メモリに最大パケットサイズ未満のパケットが格納されたときに前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とする画像形成装置のデータ転送方法であって、
前記メモリに格納されるパケットを監視する監視段階と、
前記監視の結果、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定し、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするアクセス段階とを有し、
前記監視段階は、前記メモリにパケットが格納されているかを第１の監視時間ごとに監視する第１の監視段階と、
前記監視の結果、前記メモリにパケットが格納されていれば前記第１の監視時間より短い第２の監視時間ごとに前記メモリへのパケットの格納を監視する第２の監視段階と
を有することを特徴とするデータ転送方法。
【請求項２】
前記第１の監視段階は、前記画像形成装置のパケット入力手段に設けられたレジスタから前記メモリに格納されたパケットのデータ量を取得し、取得したデータ量に応じて前記メモリにパケットが格納されているかを第１の監視時間ごとに監視し、
前記第２の監視段階は、前記第２の監視時間ごとに前記レジスタから前記メモリに格納されたパケットのデータ量を取得し、取得したデータ量の変化に応じて前記メモリへのパケットの格納を監視することを特徴とする請求項１記載のデータ転送方法。
【請求項３】
前記アクセス段階は、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定する判定段階と、
前記判定の結果、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするためのパケット情報を前記メモリに格納する格納段階と
を有することを特徴とする請求項１又は２記載のデータ転送方法。
【請求項４】
前記パケット入力手段は、デバイス制御素子およびインターフェース制御素子を有することを特徴とする請求項２記載のデータ転送方法。
【請求項５】
前記デバイス制御素子はＵＳＢのデバイス制御素子であり、前記インターフェース制御素子はＵＳＢとＰＣＩバスとのインターフェース制御素子であることを特徴とする請求項４記載のデータ転送方法。
【請求項６】
前記パケット情報は、前記データが格納されているメモリ上のアドレスと、前記メモリに格納されているデータのデータ量とを有することを特徴とする請求項３記載のデータ転送方法。
【請求項７】
最大パケットサイズ以下に分割されたパケットを外部のコンピュータから受信してメモリに格納し、前記メモリに格納されたパケットが所定のデータ量となったとき又は前記メモリに最大パケットサイズ未満のパケットが格納されたときに前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とする画像形成装置のデバイス制御モジュールであって、
前記メモリに格納されるパケットを監視する監視手段と、
前記監視の結果、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定し、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするアクセス手段とを有し、
前記監視手段は、前記メモリにパケットが格納されているかを第１の監視時間ごとに監視する第１の監視手段と、
前記監視の結果、前記メモリにパケットが格納されていれば前記第１の監視時間より短い第２の監視時間ごとに前記メモリへのパケットの格納を監視する第２の監視手段と
を有することを特徴とするデバイス制御モジュール。
【請求項８】
前記第１の監視手段は、前記画像形成装置のパケット入力手段に設けられたレジスタから前記メモリに格納されたパケットのデータ量を取得し、取得したデータ量に応じて前記メモリにパケットが格納されているかを第１の監視時間ごとに監視し、
前記第２の監視手段は、前記第２の監視時間ごとに前記レジスタから前記メモリに格納されたパケットのデータ量を取得し、取得したデータ量の変化に応じて前記メモリへのパケットの格納を監視することを特徴とする請求項７記載のデバイス制御モジュール。
【請求項９】
前記アクセス手段は、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定する判定手段と、
前記判定の結果、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするためのパケット情報を前記メモリに格納する格納手段と
を有することを特徴とする請求項７又は８記載のデバイス制御モジュール。
【請求項１０】
前記デバイス制御モジュールは、ＵＳＢのデバイスドライバであることを特徴とする請求項７乃至９何れか一項記載のデバイス制御モジュール。
【請求項１１】
プリンタ部またはスキャナ部の少なくとも一方を含む画像処理ハードウェアと、前記画像処理ハードウェアを利用して画像処理を行う１つ以上の画像処理アプリケーションと、オペレーティングシステムと、前記オペレーティングシステム上で動作し、前記１つ以上の画像処理アプリケーションからアクセスされて共通に利用されるプログラムとを有する画像形成装置であって、
外部のコンピュータから受信した最大パケットサイズ以下に分割されたパケットを格納するメモリと、
前記メモリに格納されるパケットを監視し、前記メモリに格納されたパケットが所定のデータ量となったとき，前記メモリに最大パケットサイズ未満のパケットが格納されたとき又は前記メモリへのパケットの格納が所定時間無かったときに前記メモリへのデータの格納が完了したと判定し、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするデバイス制御モジュールとを有し、
前記デバイス制御モジュールは、前記メモリにパケットが格納されているかを第１の監視時間ごとに監視し、前記メモリにパケットが格納されていれば前記第１の監視時間より短い第２の監視時間ごとに前記メモリへのパケットの格納を監視することを特徴とする画像形成装置。
【請求項１２】
外部のコンピュータから受信したパケットをメモリに転送すると共に、前記メモリに転送したパケットのデータ量を記憶する転送手段を更に有することを特徴とする請求項１１記載の画像形成装置。
【請求項１３】
前記転送手段は、ＤＭＡ転送を制御する転送制御部と、前記メモリに転送したパケットのデータ量を記憶するレジスタとを有することを特徴とする請求項１２記載の画像形成装置。
【請求項１４】
前記デバイス制御モジュールは、前記メモリに格納されたパケットのデータ量を前記レジスタから取得し、取得したデータ量に応じて前記メモリにパケットが格納されているかを第１の監視時間ごとに監視し、
前記メモリにパケットが格納されていれば、前記第２の監視時間ごとに前記メモリに格納されたパケットのデータ量を前記レジスタから取得し、取得したデータ量の変化に応じて前記メモリへのパケットの格納を監視することを特徴とする請求項１３記載の画像形成装置。
【請求項１５】
前記デバイス制御モジュールは、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定し、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするためのパケット情報を前記メモリに格納することを特徴とする請求項１１乃至１４何れか一項記載の画像形成装置。
【請求項１６】
前記パケット情報は、前記データが格納されているメモリ上のアドレスと、前記メモリに格納されているデータのデータ量とを有することを特徴とする請求項１５記載の画像形成装置。
【請求項１７】
前記デバイス制御モジュールは、ＵＳＢのデバイスドライバであることを特徴とする請求項１１乃至１６何れか一項記載の画像形成装置。
【請求項１８】
前記デバイス制御モジュールは、処理内容が記述された関数を呼び出して前記処理を行うことを特徴とする請求項１１乃至１７何れか一項記載の画像形成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送方法およびそのデータ転送方法を利用するデバイス制御モジュール，画像形成装置に係り、特に最大パケットサイズ以下に分割されたパケットのデータ転送方法およびそのデータ転送方法を利用するデバイス制御モジュール，画像形成装置に関する。
【０００２】
【従来の技術】
近年、プリンタ，コピー，ファクシミリおよびスキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、融合機という）が知られるようになった。この融合機は、１つの筐体内に表示部，印刷部および撮像部などを設けると共に、プリンタ，コピー，ファクシミリおよびスキャナにそれぞれ対応する４種類のソフトウェアを設け、そのソフトウェアを切り替えることより、プリンタ，コピー，ファクシミリおよびスキャナとして動作させるものである。
【０００３】
このような融合機は、例えばＵＳＢ（Universal Serial Bus）を介して接続されたコンピュータからパケットを受信して画像形成に関する処理を行う。ＵＳＢの転送方法には、バルクアウト転送，バルクイン転送，コントロール転送，アイソクロナス転送，インタラプト転送などがある。
【０００４】
ＵＳＢのバルクアウト転送は、ホストとしてのコンピュータから周辺機器としての融合機に転送するデータを最大パケットサイズに分割して転送する。図９は、ＵＳＢのバルクアウト転送について説明する一例の図を示す。図９（Ａ）は、フルスピードモードのバルクアウト転送の例である。図９（Ｂ）は、ハイスピードモードのバルクアウト転送の例である。
【０００５】
ＵＳＢのバルクアウト転送では、コンピュータから融合機に転送されるデータが最大パケットサイズ（６４バイト，５１２バイト）のパケットに分割されて転送される。したがって、コンピュータから融合機に転送されるデータが最大パケットサイズの整数倍であれば、最後のパケットは最大パケットサイズのパケットとなる。また、コンピュータから融合機に転送されるデータが最大パケットサイズの整数倍以外であれば、最後のパケットは最大パケットサイズ未満のショートパケットとなる。
【０００６】
融合機は、受信したパケットをメモリ上のブロックと呼ばれる領域（以下、単にブロックという）に順次格納していく。そして、融合機は１つのブロックを満たすデータを受信したとき又はショートパケットを受信したときに割り込みを発生し、メモリ上のディスクリプタ（Descriptor）と呼ばれる領域（以下、単にディスクリプタという）に受信したデータの情報を書き戻すことにより、受信したデータへのソフトウェアによるアクセスを可能としていた。
【０００７】
【発明が解決しようとする課題】
ところで、受信側の融合機は１つのブロックを満たすデータを受信したとき又はショートパケットを受信したときに割り込みを発生する。したがって、融合機は１つのブロックを満たしていない状態で最大パケットサイズのパケットを最後に受信してもデータの最後を識別できず、割り込みを発生しない。この結果、融合機は１つのブロックを満たしていない状態で最大パケットサイズのパケットを最後に受信してもディスクリプタに受信したデータの情報を書き戻すことができず、受信したデータへのソフトウェアによるアクセスができないという問題があった。
【０００８】
そこで、送信側のコンピュータは最後のパケットが最大パケットサイズであるときに０バイトのＮＵＬＬパケットを続けて転送することでデータの最後を融合機に識別させる必要があったが、ＮＵＬＬパケットを転送しないものもあり問題であった。
【０００９】
本発明は、上記の点に鑑みなされたもので、送信側から受信側に転送されるデータの最後を受信側で正確かつ迅速に識別することができるパケットのデータ転送方法およびそのデータ転送方法を利用するデバイス制御モジュール，画像形成装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
そこで、上記課題を解決するため、請求項１にかかる発明は、最大パケットサイズ以下に分割されたパケットを外部のコンピュータから受信してメモリに格納し、前記メモリに格納されたパケットが所定のデータ量となったとき又は前記メモリに最大パケットサイズ未満のパケットが格納されたときに前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とする画像形成装置のデータ転送方法であって、前記メモリに格納されるパケットを監視する監視段階と、前記監視の結果、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定し、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするアクセス段階とを有し、前記監視段階は、前記メモリにパケットが格納されているかを第１の監視時間ごとに監視する第１の監視段階と、前記監視の結果、前記メモリにパケットが格納されていれば前記第１の監視時間より短い第２の監視時間ごとに前記メモリへのパケットの格納を監視する第２の監視段階とを有することを特徴とする。
【００１１】
このようなデータ転送方法では、メモリに格納されるパケットを監視し、そのメモリへのパケットの格納が所定時間無かったときにメモリへの格納が終了したと判定する。したがって、転送されるデータが最大パケットサイズの整数倍であって、最後のパケットが最大パケットサイズであってもデータの最後を正確に識別できる。
【００１３】
また、このようなデータ転送方法では、メモリにパケットが格納されていることを確認したあと、第１の監視時間より短い第２の監視時間ごとにメモリへのパケットの格納を監視することにより、最後のパケットが最大パケットサイズであってもデータの最後を迅速に識別できる。
【００１４】
また、請求項２にかかる発明は、前記第１の監視段階が、前記画像形成装置のパケット入力手段に設けられたレジスタから前記メモリに格納されたパケットのデータ量を取得し、取得したデータ量に応じて前記メモリにパケットが格納されているかを第１の監視時間ごとに監視し、前記第２の監視段階が、前記第２の監視時間ごとに前記レジスタから前記メモリに格納されたパケットのデータ量を取得し、取得したデータ量の変化に応じて前記メモリへのパケットの格納を監視することを特徴とする。
【００１５】
このようなデータ転送方法では、メモリに格納されたパケットのデータ量をパケット入力手段に設けられたレジスタから取得できるので、取得したデータ量の変化に応じてメモリへのパケットの格納を監視できる。
【００１６】
また、請求項３にかかる発明は、前記アクセス段階が、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定する判定段階と、前記判定の結果、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするためのパケット情報を前記メモリに格納する格納段階とを有することを特徴とする。
【００１７】
このようなデータ転送方法では、メモリへのパケットの格納が所定時間無かったらメモリへのデータの格納が完了したと判定して、メモリに格納されたデータへのソフトウェアによるアクセスを可能とすることができる。
【００１８】
また、請求項４にかかる発明は、前記パケット入力手段が、デバイス制御素子およびインターフェース制御素子を有することを特徴とする。
【００１９】
このようなデータ転送方法では、パケット入力手段をデバイス制御素子とインターフェース制御素子とで構成することができる。
【００２０】
また、請求項５にかかる発明は、前記デバイス制御素子がＵＳＢのデバイス制御素子であり、前記インターフェース制御素子がＵＳＢとＰＣＩバスとのインターフェース制御素子であることを特徴とする。
【００２１】
このようなデータ転送方法では、デバイス制御素子をＵＳＢのデバイス制御素子で構成し、インターフェース制御素子をＵＳＢとＰＣＩバスとのインターフェース制御素子で構成することができる。
【００２２】
また、請求項６にかかる発明は、前記パケット情報が、前記データが格納されているメモリ上のアドレスと、前記メモリに格納されているデータのデータ量とを有することを特徴とする。
【００２３】
このようなデータ転送方法では、データが格納されているメモリ上のアドレスとメモリに格納されているデータのデータ量とでパケット情報を構成することができる。
【００３０】
また、上記課題を解決するため、請求項７にかかる発明は、最大パケットサイズ以下に分割されたパケットを外部のコンピュータから受信してメモリに格納し、前記メモリに格納されたパケットが所定のデータ量となったとき又は前記メモリに最大パケットサイズ未満のパケットが格納されたときに前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とする画像形成装置のデバイス制御モジュールであって、前記メモリに格納されるパケットを監視する監視手段と、前記監視の結果、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定し、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするアクセス手段とを有し、前記監視手段は、前記メモリにパケットが格納されているかを第１の監視時間ごとに監視する第１の監視手段と、前記監視の結果、前記メモリにパケットが格納されていれば前記第１の監視時間より短い第２の監視時間ごとに前記メモリへのパケットの格納を監視する第２の監視手段とを有することを特徴とする。
【００３１】
このようなデバイス制御モジュールでは、メモリに格納されるパケットを監視し、そのメモリへのパケットの格納が所定時間無かったときにメモリへの格納が終了したと判定する。したがって、転送されるデータが最大パケットサイズの整数倍であって、最後のパケットが最大パケットサイズであってもデータの最後を正確に識別できる。
【００３３】
また、このようなデバイス制御モジュールでは、メモリにパケットが格納されていることを確認したあと、第１の監視時間より短い第２の監視時間ごとにメモリへのパケットの格納を監視することにより、最後のパケットが最大パケットサイズであってもデータの最後を迅速に識別できる。
【００３４】
また、請求項８にかかる発明は、前記第１の監視手段が、前記画像形成装置のパケット入力手段に設けられたレジスタから前記メモリに格納されたパケットのデータ量を取得し、取得したデータ量に応じて前記メモリにパケットが格納されているかを第１の監視時間ごとに監視し、前記第２の監視手段は、前記第２の監視時間ごとに前記レジスタから前記メモリに格納されたパケットのデータ量を取得し、取得したデータ量の変化に応じて前記メモリへのパケットの格納を監視することを特徴とする。
【００３５】
このようなデバイス制御モジュールでは、メモリに格納されたパケットのデータ量をパケット入力手段に設けられたレジスタから取得できるので、取得したデータ量の変化に応じてメモリへのパケットの格納を監視できる。
【００３６】
また、請求項９にかかる発明は、前記アクセス手段が、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定する判定手段と、前記判定の結果、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするためのパケット情報を前記メモリに格納する格納手段とを有することを特徴とする。
【００３７】
このようなデバイス制御モジュールでは、アクセス手段を判定手段と格納手段とで構成することができる。
【００３８】
また、請求項１０にかかる発明は、前記デバイス制御モジュールが、ＵＳＢのデバイスドライバであることを特徴とする。
【００３９】
このようなデバイス制御モジュールでは、デバイス制御モジュールをＵＳＢのデバイスドライバで構成することができる。
【００４０】
また、上記課題を解決するため、請求項１１にかかる発明は、プリンタ部またはスキャナ部の少なくとも一方を含む画像処理ハードウェアと、前記画像処理ハードウェアを利用して画像処理を行う１つ以上の画像処理アプリケーションと、オペレーティングシステムと、前記オペレーティングシステム上で動作し、前記１つ以上の画像処理アプリケーションからアクセスされて共通に利用されるプログラムとを有する画像形成装置であって、外部のコンピュータから受信した最大パケットサイズ以下に分割されたパケットを格納するメモリと、前記メモリに格納されるパケットを監視し、前記メモリに格納されたパケットが所定のデータ量となったとき，前記メモリに最大パケットサイズ未満のパケットが格納されたとき又は前記メモリへのパケットの格納が所定時間無かったときに前記メモリへのデータの格納が完了したと判定し、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするデバイス制御モジュールとを有し、前記デバイス制御モジュールは、前記メモリにパケットが格納されているかを第１の監視時間ごとに監視し、前記メモリにパケットが格納されていれば前記第１の監視時間より短い第２の監視時間ごとに前記メモリへのパケットの格納を監視することを特徴とする。
【００４１】
このような画像形成装置では、メモリに格納されるパケットを監視し、そのメモリへのパケットの格納が所定時間無かったときにメモリへの格納が終了したと判定する。したがって、転送されるデータが最大パケットサイズの整数倍であって、最後のパケットが最大パケットサイズであってもデータの最後を正確に識別できる。
また、このような画像形成装置では、メモリにパケットが格納されていることを確認したあと、第１の監視時間より短い第２の監視時間ごとにメモリへのパケットの格納を監視することにより、最後のパケットが最大パケットサイズであってもデータの最後を迅速に識別できる。
【００４２】
また、請求項１２にかかる発明は、外部のコンピュータから受信したパケットをメモリに転送すると共に、前記メモリに転送したパケットのデータ量を記憶する転送手段を更に有することを特徴とする。
【００４３】
このような画像形成装置では、メモリに転送されたパケットのデータ量を記憶しておくことができるので、記憶したデータ量の変化に応じてメモリへのパケットの転送を監視できる。
【００４４】
また、請求項１３にかかる発明は、前記転送手段が、ＤＭＡ転送を制御する転送制御部と、前記メモリに転送したパケットのデータ量を記憶するレジスタとを有することを特徴とする。
【００４５】
このような画像形成装置では、転送手段を転送制御部とレジスタとで構成することができる。
【００４８】
また、請求項１４にかかる発明は、前記デバイス制御モジュールが、前記メモリに格納されたパケットのデータ量を前記レジスタから取得し、取得したデータ量に応じて前記メモリにパケットが格納されているかを第１の監視時間ごとに監視し、前記メモリにパケットが格納されていれば、前記第２の監視時間ごとに前記メモリに格納されたパケットのデータ量を前記レジスタから取得し、取得したデータ量の変化に応じて前記メモリへのパケットの格納を監視することを特徴とする。
【００４９】
このような画像形成装置では、メモリに転送されたパケットのデータ量をレジスタから取得できるので、取得したデータ量の変化に応じてメモリへのパケットの転送を監視できる。
【００５０】
また、請求項１５にかかる発明は、前記デバイス制御モジュールが、前記メモリへのパケットの格納が所定時間無かったら前記メモリへのデータの格納が完了したと判定し、前記メモリに格納されたデータへのソフトウェアによるアクセスを可能とするためのパケット情報を前記メモリに格納することを特徴とする。
【００５１】
このような画像形成装置では、メモリへのパケットの格納が所定時間無かったらメモリへのデータの格納が完了したと判定して、メモリに格納されたデータへのソフトウェアによるアクセスを可能とすることができる。
【００５２】
また、請求項１６にかかる発明は、前記パケット情報が、前記データが格納されているメモリ上のアドレスと、前記メモリに格納されているデータのデータ量とを有することを特徴とする。
【００５３】
このような画像形成装置では、データが格納されているメモリ上のアドレスとメモリに格納されているデータのデータ量とでパケット情報を構成することができる。
【００５４】
また、請求項１７にかかる発明は、前記デバイス制御モジュールが、ＵＳＢのデバイスドライバであることを特徴とする。
【００５５】
このような画像形成装置では、デバイス制御モジュールをＵＳＢのデバイスドライバで構成することができる。
【００５６】
また、請求項１８にかかる発明は、前記デバイス制御モジュールが、処理内容が記述された関数を呼び出して前記処理を行うことを特徴とする。
【００５７】
このような画像形成装置では、デバイス制御モジュールが関数を呼び出して処理を行うことができる。
【００５８】
【発明の実施の形態】
次に、本発明の実施の形態について図面に基づいて説明する。
【００５９】
図１は、本発明による融合機の一実施例の構成図を示す。融合機１は、白黒ラインプリンタ１１と，カラーラインプリンタ１２と，スキャナやファクシミリなどのハードウェアリソース１３と，ソフトウェア群２０と，融合機起動部５０とを有するように構成される。また、ソフトウェア群２０はアプリケーション３０とプラットフォーム４０とを有するように構成される。
【００６０】
プラットフォーム４０は、アプリケーション３０からの処理要求を解釈してハードウェア資源の獲得要求を発生するコントロールサービスと、１つ以上のハードウェア資源の管理を行ってコントロールサービスからの獲得要求を調停するシステムリソースマネージャ（以下、ＳＲＭという）４３と、オペレーティングシステム（以下、ＯＳという）４１とを有するように構成されている。
【００６１】
コントロールサービスは、システムコントロールサービス（以下、ＳＣＳという）４２，エンジンコントロールサービス（以下、ＥＣＳという）４４，メモリコントロールサービス（以下、ＭＣＳという）４５，オペレーションパネルコントロールサービス（以下、ＯＣＳという）４６，ファックスコントロールサービス（以下、ＦＣＳという）４７，ネットワークコントロールサービス（以下、ＮＣＳという）４８など一つ以上のサービスモジュールを有するように構成されている。
【００６２】
なお、プラットフォーム４０は予め定義されている関数によりアプリケーション３０からの処理要求を受信可能とするアプリケーションプログラムインターフェース（以下、ＡＰＩという）を有するように構成されている。
【００６３】
ＯＳ４１は、ユニックス（ＵＮＩＸ（登録商標））などのオペレーティングシステムであって、プラットフォーム４０およびアプリケーション３０の各ソフトウェアをプロセスとして並列実行する。
【００６４】
ＳＲＭ４３のプロセスは、ＳＣＳ４２と共にシステムの制御およびリソースの管理を行うものである。例えばＳＲＭ４３のプロセスは、スキャナ部やプリンタ部などのエンジン，メモリ，ハードディスク装置（ＨＤＤ）ファイル，ホストＩ／Ｏ（セントロインターフェース，ネットワークインターフェース，ＩＥＥＥ１３９４インターフェース，ＲＳ２３２Ｃインターフェースなど）のハードウェア資源を利用する上位層からの要求に従って調停を行い、実行制御する。
【００６５】
具体的に、ＳＲＭ４３は要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判定し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に通知する。また、ＳＲＭ４３は上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、例えばプリンタエンジンによる紙搬送と作像動作，メモリ確保，ファイル生成などの要求内容を直接実施している。
【００６６】
ＳＣＳ４２のプロセスは、アプリケーション管理，操作部制御，システム画面表示，ＬＥＤ表示，リソース管理，割り込みアプリケーション制御を行う。ＥＣＳ４４のプロセスは、白黒ラインプリンタ１１，カラーラインプリンタ１２，ハードウェアリソース１３のエンジンの制御を行う。
【００６７】
ＭＣＳ４５のプロセスは、画像メモリの取得および解放，ハードディスク装置（ＨＤＤ）の利用，画像データの圧縮および伸張などを行う。ＯＣＳ４６のプロセスは、オペレータと本体制御との間の情報伝達手段となるオペレーションパネルの制御を行う。
【００６８】
ＦＣＳ４７のプロセスは、システムコントローラの各アプリケーション層からＰＳＴＮまたはＩＳＤＮ網を利用したファクシミリ送受信，ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用，ファクシミリ読み取り，ファクシミリ受信印刷，融合送受信を行うためのアプリケーションを提供する。
【００６９】
ＮＣＳ４８のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対し、共通に利用できるサービスを提供するものであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからのデータをネットワーク側に送信する際の仲介を行う。
【００７０】
また、アプリケーション３０は、プリンタ，コピー，ファクシミリ，スキャナなどの画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うものである。アプリケーション３０は、ページ記述言語（ＰＤＬ，ＰＣＬ）およびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ３１と，コピー用アプリケーションであるコピーアプリ３２と，ファクシミリ用アプリケーションであるファックスアプリ３３と，スキャナ用アプリケーションであるスキャナアプリ３４と，ネットワークファイル用アプリケーションであるネットファイルアプリ３５と，工程検査用アプリケーションである工程検査アプリ３６とを有している。
【００７１】
融合機起動部５０は、融合機１の電源投入時に最初に実行され、アプリケーション３０やプラットフォーム４０を起動するものである。例えば融合機起動部５０は、コントロールサービスやアプリケーションのプログラムをフラッシュメモリから読み出し、読み出した各プログラムをＳＲＡＭまたはＳＤＲＡＭ上に確保したメモリ領域に転送して起動するものである。
【００７２】
図２は、本発明による融合機の一実施例のハードウェア構成図を示す。図２の融合機１は、コントローラボード６０と，オペレーションパネル７０と，ファックスコントロールユニット（以下、ＦＣＵという）８０と，ＵＳＢデバイス９０と，ＩＥＥＥ１３９４デバイス１００と，エンジン部１１０とを有するように構成される。
【００７３】
オペレーションパネル７０は、コントローラボード６０のＡＳＩＣ６２に直接接続されている。また、ＦＣＵ８０，ＵＳＢデバイス９０，ＩＥＥＥ１３９４デバイス１００およびエンジン部１１０は、コントローラボード６０のＡＳＩＣ６２にＰＣＩバス（Peripheral Component Interconnect bus）などで接続されている。
【００７４】
また、コントローラボード６０は、ＣＰＵ６１と，ＡＳＩＣ６２と，ＳＲＡＭ（Static RAM）６３と，ＳＤＲＡＭ（Synchronous DRAM）６４と，フラッシュメモリ６５と，ＨＤＤ６６とを有するように構成される。コントローラボード６０は、ＣＰＵ６１，ＳＲＡＭ６３，ＳＤＲＡＭ６４，フラッシュメモリ６５，ＨＤＤ６６などをＡＳＩＣ６２に接続するように構成されている。
【００７５】
ＣＰＵ６１は、融合機１の全体制御を行うものである。ＣＰＵ６１は、ＯＳ４１上でプラットフォーム４０を形成するＳＣＳ４２，ＳＲＭ４３，ＥＣＳ４４，ＭＣＳ４５，ＯＣＳ４６，ＦＣＳ４７およびＮＣＳ４８をそれぞれプロセスとして起動して実行させると共に、アプリケーション３０を形成するプリンタアプリ３１，コピーアプリ３２，ファックスアプリ３３，スキャナアプリ３４，ネットファイルアプリ３５および工程検査アプリ３６を起動して実行させる。
【００７６】
ＡＳＩＣ６２は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。ＳＲＡＭ６３およびＳＤＲＡＭ６４は、本発明におけるメモリを構成する。ＳＲＡＭ６３およびＳＤＲＡＭ６４の物理メモリ領域には、カーネルやプロセスなどの仮想メモリ領域がマッピングされる。
【００７７】
フラッシュメモリ６５は、アプリケーション３０またはプラットフォーム４０を構成する各アプリやコントロールサービス，ＳＲＭ４３などの各プログラムが格納されている。ＨＤＤ６６は、画像データの蓄積，プログラムの蓄積，フォントデータの蓄積，フォームの蓄積を行うためのストレージである。オペレーションパネル７０はオペレータからの入力操作を受け付けると共に、オペレータに向けた表示を行う操作部である。
【００７８】
このような融合機１は、例えばＵＳＢを介して接続されたホストとしてのコンピュータからデータを受信して画像形成に関する処理を行う。以下、ＵＳＢを介して接続されたコンピュータから融合機１にデータが転送される例について説明する。コンピュータから融合機１へのデータ転送では、例えばＵＳＢのバルクアウト転送が利用される。ＵＳＢのバルクアウト転送は、トークンフェーズ，データフェーズおよびハンドシェイクフェーズの繰り返しによりパケットに分割したデータを転送するものである。
【００７９】
ここで、ＵＳＢのバルクアウト転送によりパケットを受信したときの融合機１の処理について図３を参照しつつ説明する。図３は、データ受信処理の一例について説明するための図を示す。
【００８０】
ＵＳＢデバイス制御部９１は、最大パケットサイズに分割されたパケットを受信し、受信したパケットをＵＳＢ−ＰＣＩインターフェース制御部９２のシリアルインターフェースエンジン９３に送信する。シリアルインターフェースエンジン９３は、受信したパケットを受信バッファ９４に格納する。
【００８１】
なお、ＵＳＢを介して接続されたコンピュータにデータを送信する場合、シリアルインターフェースエンジン９３は送信バッファ９５に格納されたパケットを受信してコンピュータに送信する。
【００８２】
ＰＣＩインターフェース９６の内部に設けられたダイレクトメモリアクセスコントローラ（以下、ＤＭＡＣという）９７は、受信バッファ９４に格納されたパケットを受信し、受信したパケットをＰＣＩバスおよびＡＳＩＣ６２を介してＳＤＲＡＭ６４上の１つ以上のブロック１２０に格納する。また、ＰＣＩインターフェース９６の内部に設けられた転送データカウントレジスタ９８は、ＰＣＩインターフェース９６を介してＰＣＩバスに転送されたパケットのデータ量をカウントする。
【００８３】
例えば転送データカウントレジスタ９８は、ＰＣＩインターフェース９６を介してＰＣＩバスに転送されたパケットのデータ量を、パケットがＰＣＩバスに転送される度に更新する。１つのブロック１２０を満たすデータを受信したとき又はショートパケットを受信したとき割り込みが発生し、カーネル内部のＵＳＢデバイスドライバはＳＤＲＡＭ６４上の１つ以上のディスクリプタ１２１に、受信したデータの情報を書き戻す。受信したデータの情報は、例えば１つのブロック１２０に格納されているデータのデータ量と、そのデータが格納されているアドレスとを含んでいる。なお、ブロック１２０とディスクリプタ１２１とは一対一に対応している。
【００８４】
ディスクリプタ１２１に受信したデータの情報が書き戻されると、ブロック１２０に格納されたデータへのソフトウェアによるアクセスが可能となる。ディスクリプタ１２１に受信したデータの情報が書き戻されるとき、転送データカウントレジスタ９８のカウントがクリアされる。つまり、転送データカウントレジスタ９８は、１つのブロックに格納されたデータのデータ量をカウントするものである。
【００８５】
一方、図４に表すように、コンピュータから融合機１に転送されるデータが最大パケットサイズの整数倍であれば、最後のパケットは最大パケットサイズのパケットとなる。図４は、最大パケットサイズのパケットを最後に受信する例について説明する図を示す。
【００８６】
例えばＵＳＢのバルクアウト転送を利用してコンピュータから融合機１に６４０バイトのデータを転送する場合、コンピュータは６４０バイトのデータを最大パケットサイズの６４バイトごとに分割し、１０個のパケットを生成する。この場合、コンピュータから融合機１に転送されるデータが最大パケットサイズ６４バイトの整数倍となり、最後のパケットは最大パケットサイズ（６４バイト）のパケットとなる。生成されたパケットは、１パケットずつコンピュータから融合機１へ転送される。
【００８７】
融合機１は受信したパケットをＳＤＲＡＭ６４の１つのブロック１２０に順次格納していく。ここでは、ブロック１２０が４ｋバイトの領域を有するものとして説明する。ところで、割り込みは１つのブロック１２０を満たすデータを受信したとき又はショートパケットを受信したときに割り込みが発生する。
【００８８】
言い替えれば、１つのブロック１２０を満たしていない状態で最大パケットサイズのパケットを最後に受信しても割り込みが発生しない。図４の場合、１つのブロック１２０を満たしていない状態で最後に最大パケットサイズのパケットを受信しているために割り込みが発生せず、データの最後が識別できない。
【００８９】
そこで、本発明による融合機１では、カーネル内部のＵＳＢデバイスドライバが図５のような処理を行うことで、１つのブロック１２０を満たしていない状態で最後に最大パケットサイズのパケットを受信してもデータの最後を識別できるようにする。
【００９０】
図５は、バルクアウト転送におけるタイムアウト処理の一例のフローチャートを示す。図５中、ステップＳ１０では、ＵＳＢデバイスドライバが監視時間間隔とタイムアウト時間とを初期化する。例えば監視時間間隔が１００ｍｓ，タイムアウト時間が５００ｍｓに設定される。また、ステップＳ１０の処理は融合機１の起動時に行われる。
【００９１】
ステップＳ１０に続いてステップＳ１１に進み、ＵＳＢデバイスドライバはタイマを起動する。ステップＳ１１に続いてステップＳ１２に進み、ＵＳＢデバイスドライバはステップＳ１１で起動したタイマを参照して監視時間になったか否かを判定する。
【００９２】
監視時間になっていないと判定すると（Ｓ１２においてＮＯ）、ＵＳＢデバイスドライバはステップＳ１２の処理を繰り返す。一方、監視時間になっていると判定すると（Ｓ１２においてＹＥＳ）、ＵＳＢデバイスドライバはステップＳ１３に進み、監視対象として転送データカウントレジスタ９８のカウント値を読み出す。即ち、ＵＳＢデバイスドライバはＰＣＩインターフェース９６を介してＰＣＩバスに転送されたパケットのデータ量を読み出している。
【００９３】
ステップＳ１３に続いてステップＳ１４に進み、ＵＳＢデバイスドライバは監視対象として転送データカウントレジスタ９８のカウント値に変化があったか否かを判定する。即ち、ＵＳＢデバイスドライバは１つのブロック１２０へのパケットの転送が開始されたか否かを判定している。
【００９４】
転送データカウントレジスタ９８のカウント値に変化がないと判定すると（Ｓ１４においてＮＯ）、ＵＳＢデバイスドライバはステップＳ１２に進み、ステップＳ１２〜Ｓ１４の処理を繰り返す。一方、転送データカウントレジスタ９８のカウント値に変化があると判定すると（Ｓ１４においてＹＥＳ）、ＵＳＢデバイスドライバはステップＳ１５に進む。
【００９５】
ステップＳ１５では、ＵＳＢデバイスドライバが監視時間間隔とタイムアウト時間とを再設定する。ステップＳ１５で設定される監視時間間隔は、ステップＳ１０で設定された監視時間より短いものとする。この理由は、監視時間間隔を短くすることでデータの最後を迅速に識別するためである。例えばステップＳ１０で設定される監視時間間隔が１００ｍｓのとき、ステップＳ１５では監視時間間隔を１０ｍｓに設定する。
【００９６】
ステップＳ１５に続いてステップＳ１６に進み、ＵＳＢデバイスドライバはステップＳ１１で起動したタイマを参照して監視時間になったか否かを判定する。監視時間になっていないと判定すると（Ｓ１６においてＮＯ）、ＵＳＢデバイスドライバはステップＳ１６の処理を繰り返す。一方、監視時間になっていると判定すると（Ｓ１６においてＹＥＳ）、ＵＳＢデバイスドライバはステップＳ１７に進み、監視対象として転送データカウントレジスタ９８のカウント値を読み出す。
【００９７】
ステップＳ１７に続いてステップＳ１８に進み、ＵＳＢデバイスドライバは監視対象として転送データカウントレジスタ９８のカウント値に変化があったか否かを判定する。即ち、ＵＳＢデバイスドライバは１つのブロック１２０へのパケットの転送が継続されているか否かを判定している。
【００９８】
転送データカウントレジスタ９８のカウント値に変化があると判定すると（Ｓ１８においてＹＥＳ）、ＵＳＢデバイスドライバはステップＳ１５に進み、ステップＳ１５〜Ｓ１８の処理を繰り返す。一方、転送データカウントレジスタ９８のカウント値に変化がないと判定すると（Ｓ１８においてＮＯ）、ＵＳＢデバイスドライバはステップＳ１９に進む。
【００９９】
ステップＳ１９では、ＵＳＢデバイスドライバが、ステップＳ１１で起動したタイマを参照してタイムアウト時間に達したか否かを判定する。即ち、ＵＳＢデバイスドライバは１つのブロック１２０へのパケットの転送が所定時間無かったか否かを判定している。
【０１００】
タイムアウト時間に達していないと判定すると（Ｓ１９においてＮＯ）、ＵＳＢデバイスドライバはステップＳ１６に進み、ステップＳ１６〜Ｓ１９の処理を繰り返す。一方、タイムアウト時間に達したと判定すると（Ｓ１９においてＹＥＳ）、ＵＳＢデバイスドライバはステップＳ２０に進み、ステップＳ１１で起動したタイマを停止する。
【０１０１】
ステップＳ２０に続いてステップＳ２１に進み、ＵＳＢデバイスドライバは１つのブロック１２０に格納されたデータのデータ量と、そのデータが格納されているアドレスとを取得するためのデータ終端取得処理を行う。ステップＳ２１に続いてステップＳ２２に進み、ＵＳＢデバイスドライバは図６（Ｂ）に表すようにディスクリプタ１２１を更新する。
【０１０２】
図６は、ディスクリプタ更新処理の一例について説明するための図を示す。割り込みが発生するとき、ディスクリプタ更新処理は図６（Ａ）に表した手順で行われる。ステップＳ３０では、ＳＤＲＡＭ６４上の１つのブロック１２０にパケットが順次格納される。
【０１０３】
ステップＳ３１では、１つのブロック１２０を満たすデータが格納されるか又はショートパケットを格納したため割り込みが発生し、ＵＳＢデバイスドライバが１つのブロック１２０に格納されたデータのデータ量とそのデータが格納されているアドレスとをディスクリプタ１２１に格納する。
【０１０４】
したがって、ステップＳ３２では、ディスクリプタに１つのブロック１２０に格納されたデータのデータ量とそのデータが格納されているアドレスとが書き戻されてブロック１２０へのソフトウェアによるアクセスが可能となる。
【０１０５】
一方、割り込みが発生しないとき、ディスクリプタ更新処理は図６（Ｂ）に表した手順で行われる。ステップＳ４０では、ＳＤＲＡＭ６４上の１つのブロック１２０にパケットが順次格納される。しかし、１つのブロック１２０を満たしていない状態で最後に最大パケットサイズのパケットを受信したため、割り込みが発生しない。
【０１０６】
ステップＳ４１では、図５のタイムアウト処理により１つのブロック１２０へのパケットが所定時間（図５のタイムアウト時間）の間なかったときにデータの転送が完了したと判定され、ソフトウェアにより１つのブロック１２０に格納されたデータのデータ量とそのデータが格納されているアドレスとがディスクリプタ１２１に格納される。
【０１０７】
したがって、ステップＳ４２では、ディスクリプタに１つのブロック１２０に格納されたデータのデータ量とそのデータが格納されているアドレスとが書き戻されてブロック１２０へのソフトウェアによるアクセスが可能となる。
【０１０８】
図５のフローチャートは、例えば図７および図８のような関数により実現される。図７は、タイムアウト処理を実現する関数（メイン関数）の記述例について説明する図を示す。また、図８は、タイムアウト処理を実現する関数（サブルーチン）の記述例について説明する図を示す。なお、図７および図８の処理は、図５のフローチャートの処理と同様であるため、図５のフローチャートと同一符号を付すことで説明を省略する。
【０１０９】
したがって、本発明のデータ転送方法を利用すれば、最後のパケットが最大パケットサイズであるときに０バイトのＮＵＬＬパケットが送信側から転送されなくても、データの最後を正確かつ迅速に識別することが可能である。
【０１１０】
【発明の効果】
上述の如く、本発明によれば、メモリに格納されるパケットを監視し、そのメモリへのパケットの格納が所定時間無かったときにメモリへの格納が終了したと判定することにより、最後のパケットが最大パケットサイズであってもデータの最後を正確かつ迅速に識別できる。
【０１１１】
【図面の簡単な説明】
【図１】本発明による融合機の一実施例の構成図である。
【図２】本発明による融合機の一実施例のハードウェア構成図である。
【図３】データ受信処理の一例について説明するための図である。
【図４】最大パケットサイズのパケットを最後に受信する例について説明する図である。
【図５】バルクアウト転送におけるタイムアウト処理の一例のフローチャートである。
【図６】ディスクリプタ更新処理の一例について説明するための図である。
【図７】タイムアウト処理を実現する関数（メイン関数）の記述例について説明する図である。
【図８】タイムアウト処理を実現する関数（サブルーチン）の記述例について説明する図である。
【図９】ＵＳＢのバルクアウト転送について説明する一例の図である。
【符号の説明】
１    融合機
１１    白黒ラインプリンタ
１２    カラーラインプリンタ
１３    ハードウェアリソース
２０    ソフトウェア群
３０    アプリケーション
４０    プラットフォーム
４１    オペレーティングシステム（ＯＳ）
４２    システムコントロールサービス（ＳＣＳ）
４３    システムリソースマネージャ（ＳＲＭ）
４４    エンジンコントロールサービス（ＥＣＳ）
４５    メモリコントロールサービス（ＭＣＳ）
４６    オペレーションパネルコントロールサービス（ＯＣＳ）
４７    ファックスコントロールサービス（ＦＣＳ）
４８    ネットワークコントロールサービス（ＮＣＳ）
５０    融合機起動部
６０    コントローラボード
６１    ＣＰＵ
６２    ＡＳＩＣ（Application Specific Integrated Circuit）
６３    ＳＲＡＭ（Static RAM）
６４    ＳＤＲＡＭ（Synchronous DRAM）
６５    フラッシュメモリ
６６    ハードディスク装置（ＨＤＤ）
７０    オペレーションパネル
８０    ファックスコントロールユニット（ＦＣＵ）
９０    ＵＳＢデバイス
９１    ＵＳＢデバイス制御部
９２    ＵＳＢ−ＰＣＩインターフェース制御部
９３    シリアルインターフェースエンジン
９４    受信バッファ
９５    送信バッファ
９６    ＰＣＩインターフェース
９７    ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）
９８    転送データカウントレジスタ
１００    ＩＥＥＥ１３９４デバイス
１１０    エンジン部
１２０    ブロック（Block）
１２１    ディスクリプタ（Descriptor）
【図１】
0003857598.tif 000002
【図２】
0003857598.tif 000003
【図３】
0003857598.tif 000004
【図４】
0003857598.tif 000005
【図５】
0003857598.tif 000006
【図６】
0003857598.tif 000007
【図７】
0003857598.tif 000008
【図８】
0003857598.tif 000009
【図９】
0003857598.tif 000010