(57)【要約】【課題】ＰＣとその周辺装置間のデータ通信などにおいて、バッファメモリ・周辺装置側メインメモリ間のデータ転送経路に異常が生じても、その転送経路を切り換えずにデータの連続性を保証できるようにして転送済みデータファイルをすべて破棄しなくて済むデータ通信システムを提供する。【解決手段】受信バッファ１４に格納されたデータ数の初期値を記憶するレジスタＡ、前記バッファメモリ１４に格納されているデータ数の現在値を記憶するレジスタＢ、ＤＭＡコントローラ４・プリンタメインメモリ３間の転送データ数を記憶するレジスタＣ、ＤＭＡコントローラ４を介したデータ転送を一時的に中断させるための値を書き込むレジスタＤ、データ転送中断時にＤＭＡコントローラ４を初期化させるための値を書き込むレジスタＥ、前記中断時にバッファメモリ１４の読み出しアドレスを格納されているデータの先頭に戻すための値を記憶するレジスタＦを備えた。【選択図】　　　図２
2004056312.tif 000002
【特許請求の範囲】
【請求項１】
外部から受信したデータまたは外部へ送信するデータを一時的に記憶する当該装置のバッファメモリとその装置内のメインメモリとの間のデータ転送をＤＭＡコントローラを介して実行するデータ通信システムにおいて、前記バッファメモリ内に格納されたパケットデータ数の初期値を記憶する初期データ数記憶手段と、前記バッファメモリに格納されているデータ数の現在値を記憶する現在データ数記憶手段と、前記ＤＭＡコントローラと前記メインメモリとの間の転送データ数を記憶する転送データ数記憶手段と、前記ＤＭＡコントローラを介したデータ転送を一時的に中断させる中断手段と、該中断手段がデータ転送を中断させたときに前記ＤＭＡコントローラを初期化する初期化手段と、前記中断手段がデータ転送を中断させたときに前記バッファメモリの読み出しアドレスを格納されているパケットデータの先頭に戻すための値を記憶するアドレス用記憶手段と、を備えたことを特徴とするデータ通信システム。
【請求項２】
請求項１記載のデータ通信システムにおいて、前記バッファメモリがＵＳＢデバイスコントローラを構成するアウト転送用エンドポイントバッファメモリであることを特徴とするデータ通信システム。
【請求項３】
請求項１または請求項２記載のデータ通信システムにおいて、前記アドレス用記憶手段への書き込み処理に連動して、現在データ数記憶手段の値を自動的にデータ読み出し前の値に変更するデータ数変更手段を備えたことを特徴とするデータ通信システム。
【請求項４】
請求項２記載のデータ通信システムにおいて、アウト転送用エンドポイントバッファメモリを、それぞれがＵＳＢ仕様書に記載された最大パケットデータ数と同じ容量を持つ２つのバッファメモリから構成され、前記２つのバッファメモリを切り替える度に前記初期データ数記憶手段、現在データ記憶手段、および転送データ数記憶手段に記憶されている値を更新するように構成にしたことを特徴とするデータ通信システム。
【請求項５】
当該装置のＵＳＢデバイスコントローラのアウト転送用エンドポイントバッファメモリと前記装置内のメインメモリとの間のデータ転送をＤＭＡコントローラを介して実行するデータ通信システムにおいて、アウト転送用エンドポイントバッファメモリと前記メインメモリとの間のデータ転送経路に異常が発生した場合、ＤＭＡコントローラを介したデータ転送を一時的に中断させ、所定の処理を実行した後、ＤＭＡコントローラを介したデータ転送を再開するように構成にしたことを特徴とするデータ通信システム。
【請求項６】
請求項２乃至請求項５のいずれか１項に記載のデータ通信システムにおいて、当該装置がプリンタであり、アウト転送用エンドポイントバッファメモリはＵＳＢ規格で定められたバルク転送エンドポイントＦＩＦＯメモリであることを特徴とするデータ通信システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばパーソナルコンピュータとプリンタとの間など複数の装置間で、ＵＳＢ、ＩＥＥＥ１３９４ａ、ＩＥＥＥ１２８４規格などによったデータ通信をおこなうデータ通信システムに係わり、特に、ＵＳＢ規格によったデータ通信をおこなうデータ通信システムに関する。
【０００２】
【従来の技術】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ）規格は、パーソナルコンピュータ（以下、ＰＣと称す）と複数のＰＣ周辺装置とを接続し、データ通信を行うために策定されたシリアルバスインタフェース規格である。従来のインタフェース規格にはない簡便な接続性および拡張性などを特徴としており、近年、マウス、キーボード、プリンタ、スキャナ、モデムなど、ＰＣ周辺装置の多くがＵＳＢ規格に対応するようになってきている。このＵＳＢ規格には、ＰＣ周辺装置（ＵＳＢデバイス）の種類に応じてＵＳＢデバイスクラス仕様が定められており、プリンタはプリンタクラス仕様、ハードディスク記憶装置（ＨＤＤ）や光ディスク記憶装置などはマスストレージクラス仕様に準拠することにより共通のデバイスドライバソフトウェアを使用することが可能となる。
このようなプリンタクラス仕様またはマスストレージクラス仕様のＵＳＢ規格に準拠したデータ通信システムを実現するためには、ＵＳＢデバイスコントローラ内にバルク転送用のエンドポイントバッファを備えることが必要であり、そのようなバッファメモリを備えることによりＰＣとＵＳＢデバイス間でエラーのない大容量データ転送をおこなうことができる。また、データ転送速度向上の目的で、エンドポイントバッファと、プリンタ側メインメモリまたはストレージデバイスの記憶媒体との間のデータ転送はＤＭＡ転送方式を採用するのが一般的である。
なお、特開２００１−１４７８９０公報に示された従来技術ではＰＣとプリンタ間のデータ転送にＩＥＥＥ１２８４規格を使用しているが、このＩＥＥＥ１２８４インタフェース部を２個以上備え、複数のＰＣからのデータを切り換えて使用する。また、特開平７−１２９５０４号公報に示された従来技術ではホスト装置と周辺装置間とのデータ通信用に２つのバッファを備え、データ転送容量に応じて大容量バッファと小容量バッファを切り換えてデータ通信をおこなう。
【０００３】
【発明が解決しようとする課題】
しかしながら、前記した特開２００１−１４７８９０公報および特開平７−１２９５０４号公報に示された従来技術を含むこれまでに示された従来技術では、バッファメモリは複数個備えているが、プリンタなど周辺装置のメインメモリにつながる切替回路の先のデータ転送経路は一系統になっているので、何らかの原因でこのデータ転送経路が使えない状態になった場合に、データ転送経路に関連した部分を初期化する必要があった。また、その際、転送途中のデータおよび転送済みのデータに関しても、あるまとまったファイル全体を破棄しなければならなかった。破棄したファイルのデータは初期化完了後に再度最初から転送する必要があり、特に転送データファイルが大きい場合はＰＣ−デバイス間のデータ通信性能に大きな影響を及ぼしてしまう。
本発明の目的は、このような従来技術の問題を解決することであり、具体的には、例えばＰＣとＰＣ周辺装置（デバイス）間のデータ通信において、バッファメモリとデバイス側メインメモリなど記憶媒体との間の一つの転送経路が使用不能になった場合であっても、転送済みデータファイルが無駄に破棄されてしまうことを防止することができるとともに、データ転送経路に異常が生じた場合であっても、データ転送インタフェースを切り換えずに連続データの転送を保証することができるデータ通信システムを提供することにある。
【０００４】
【課題を解決するための手段】
前記の課題を解決するために、請求項１記載の発明では、外部から受信したデータまたは外部へ送信するデータを一時的に記憶する当該装置のバッファメモリとその装置内のメインメモリとの間のデータ転送をＤＭＡコントローラを介して実行するデータ通信システムにおいて、前記バッファメモリ内に格納されたパケットデータ数の初期値を記憶する初期データ数記憶手段と、前記バッファメモリに格納されているデータ数の現在値を記憶する現在データ数記憶手段と、前記ＤＭＡコントローラと前記メインメモリとの間の転送データ数を記憶する転送データ数記憶手段と、前記ＤＭＡコントローラを介したデータ転送を一時的に中断させる中断手段と、その中断手段がデータ転送を中断させたときに前記ＤＭＡコントローラを初期化する初期化手段と、前記中断手段がデータ転送を中断させたときに前記バッファメモリの読み出しアドレスを格納されているパケットデータの先頭に戻すための値を記憶するアドレス用記憶手段とを備えたことを特徴とする。
また、請求項２記載の発明では、請求項１記載の発明において、前記バッファメモリがＵＳＢデバイスコントローラを構成するアウト転送用エンドポイントバッファメモリであることを特徴とする。
また、請求項３記載の発明では、請求項１または請求項２記載の発明において、前記アドレス用記憶手段への書き込み処理に連動して、現在データ数記憶手段の値を自動的にデータ読み出し前の値に変更するデータ数変更手段を備えたことを特徴とする。
また、請求項４記載の発明では、請求項２記載の発明において、アウト転送用エンドポイントバッファメモリを、それぞれがＵＳＢ仕様書に記載された最大パケットデータ数と同じ容量を持つ２つのバッファメモリから構成し、その２つのバッファメモリを切り替える度に前記初期データ数記憶手段、現在データ記憶手段、および転送データ数記憶手段に記憶されている値を更新するように構成にしたことを特徴とする。
また、請求項５記載の発明では、当該装置のＵＳＢデバイスコントローラのアウト転送用エンドポイントバッファメモリと前記装置内のメインメモリとの間のデータ転送をＤＭＡコントローラを介して実行するデータ通信システムにおいて、アウト転送用エンドポイントバッファメモリと前記メインメモリとの間のデータ転送経路に異常が発生した場合、ＤＭＡコントローラを介したデータ転送を一時的に中断させ、所定の処理を実行した後、ＤＭＡコントローラを介したデータ転送を再開するように構成にしたことを特徴とする。
また、請求項６記載の発明では、請求項２乃至請求項５のいずれか１項に記載の発明において、当該装置がプリンタであり、アウト転送用エンドポイントバッファメモリはＵＳＢ規格で定められたバルク転送エンドポイントＦＩＦＯメモリであることを特徴とする。
【０００５】
【発明の実施の形態】
この実施例のデータ通信システムは、ＰＣ周辺装置（以下、デバイスと称す）内のバッファメモリとメインメモリなど記憶手段との間のデータ通信経路を複数系統設けたことを特徴としている。例えば経路は２系統とし、そのうち１系統はＤＭＡ転送用、もう１系統はＰＩＯ（Ｐｒｏｇｒａｍｅｄ　Ｉ／Ｏ）転送である。２系統共にＤＭＡ転送可能な経路にすることも可能であるが、この場合、ＤＭＡコントローラも２個必要になり、回路規模が増大する。その点ＰＩＯ転送経路は、内部回路制御に使われる経路と共通にすることが可能であり、回路規模の増大なしにデータ転送用経路を追加することができる。
また、この実施例のデータ通信システムでは、アウト転送用エンドポイントバッファメモリであるＦＩＦＯ（Ｆｉｒｓｔ　Ｉｎ　Ｆｉｒｓｔ　Ｏｕｔ）メモリ内に格納されたパケットデータ数の初期値を記憶する初期データ数記憶手段としてレジスタＡ、ＦＩＦＯ内データの現在値を記憶する現在データ数記憶手段としてレジスタＢ、ＤＭＡコントローラ（以下、ＤＭＡＣと称す）と当該装置のメインメモリとの間の転送データ数を記憶する転送データ数記憶手段としてレジスタＣ、ＤＭＡＣを介したデータ転送を一時的に中断させる中断手段、ＤＭＡＣを初期化する初期化手段、アウト転送用エンドポイントＦＩＦＯメモリの読み出しアドレスをパケットデータ先頭に戻すための値を記憶するアドレス用記憶手段を備える。このような構成により、この実施例のデータ通信システムでは、データ転送経路に異常が生じた場合であっても、データ転送インタフェースを切り換えることなしに連続データの転送を保証するＵＳＢ通信システムを実現することが可能となる。
【０００６】
以下、ＵＳＢ規格のプリンタを例に、本発明の実施の形態を図面により詳細に説明する。
図１は本発明の一実施例を示すプリンタ要部の構成ブロック図である。なお、図１では送受信データおよび制御データの経路のみ示しており、それ以外の信号線は省略している。
図示したように、この実施例のプリンタは、ＵＳＢ規格に従ったデータ通信制御を行うＵＳＢデバイスコントローラ１、プリンタ全体を制御するＣＰＵ２、プリンタメインメモリ３を備え、ＵＳＢデバイスコントローラ１内にはＤＭＡコントローラ（以下、ＤＭＡＣと称す）４を備え、ＣＰＵ２、プリンタメインメモリ３、およびＤＭＡＣ４はシステムバス５に接続されている。
また、ＵＳＢデバイスコントローラ１は、トランシーバ（送信回路）／レシーバ（受信回路）を含み、データ送受信／パラレル−シリアル変換などをおこなう物理層回路ブロック（以下、ＰＨＹと称す。ＰＨＹはＰｈｙｓｉｃａｌの略）１１、プロトコル（伝送制御手順）処理／入出力信号処理などをおこなう論理層回路ブロック（以下、ＳＩＥ（Ｓｅｒｉａｌ　Ｉｎｔｅｒｆａｃｅ　Ｅｎｇｉｎｅ）と称す）１２、ＦＩＦＯ（Ｆｉｒｓｔ　Ｉｎ　Ｆｉｒｓｔ　Ｏｕｔ）メモリとして実現した、送受信データを格納する３種類の送受信バッファメモリ（ＵＳＢのプリンタクラス仕様におけるエンドポイントバッファ）であるＥＰ０送受信バッファ１３、ＥＰ１受信バッファ１４、ＥＰ２送信バッファ１５、ＵＳＢデバイスコントローラ１の制御およびＵＳＢデバイスコントローラ１内各ブロックの状態確認をおこなうための情報が書き込まれ、ＣＰＵ２からアクセス（読み書き）される内部レジスタ１６、エンドポイントバッファ（３種類の送受信バッファメモリ）１３，１４，１５とプリンタメインメモリ３との間のＤＭＡ転送をおこなうためのインタフェースであるＤＭＡ−Ｉ／Ｆ（ＤＭＡインタフェース）１７、ＰＩＯ転送用のインタフェースであるＰＩＯ−Ｉ／Ｆ１８などを備える。
【０００７】
なお、前記ＥＰ０送受信バッファ１３はＵＳＢのプリンタクラス仕様で言うＵＳＢデバイスエナメレーション（Ｅｎｕｍｅｒａｔｉｏｎ：ＵＳＢデバイスから取得したデータをもとにＰＣで行われる）／デバイス制御データ転送用のコントロール転送用エンドポイントバッファであり、ＥＰ１受信バッファ１４はプリントデータ転送用のバルクアウト転送用エンドポイントバッファであり、ＥＰ２送信バッファ１５はプリンタステータス（例えば紙なし，紙詰まりといったエラー状態など）データ転送用バルクイン転送用エンドポイントバッファである。また、前記したＤＭＡＣ４によるＤＭＡ転送はＣＰＵ処理を必要とするＰＩＯ転送に比べて高いデータ転送性能を持っている。また、ＤＭＡＣ内部には転送データを一時的に格納するバッファが設けられている。
一方、この実施例では以下に示す２種類のデータ転送がＰＩＯ−Ｉ／Ｆ１８を介して実行可能である。
（ａ）内部レジスタアクセス（図中の破線矢印）
（ｂ）ＥＰ０送受信バッファ１３とプリンタメインメモリ３との間のデータ転送（図中の点線矢印）
前記内部レジスタアクセスはＣＰＵ２のコマンドにより適宜アクセスされ、ＵＳＢコントローラ１内の各ブロックの状態確認およびＰＩＯ−Ｉ／Ｆ１８を介したデータ転送処理が行われる。また、ＥＰ０送受信バッファ１３とプリンタメインメモリ３との間のデータ転送では、ＵＳＢ制御データを転送する。それほど高い転送性能は必要ないので、ＰＩＯ転送が使用されるのである。
一方、ＥＰ１受信バッファ１４とプリンタメインメモリ３との間のデータ転送およびＥＰ２送信バッファ１５とプリンタメインメモリ３との間のデータ転送には通常ＤＭＡ−Ｉ／Ｆ１７を介したＤＭＡ転送が使用される。
【０００８】
図３に、この実施例の受信時の動作フローを示す。以下、図３に従って、受信時の動作フローを説明する。
まず、ＰＨＹ１１がＵＳＢケーブルを介して入力されるシリアルデータを受信し（Ｓ１）、パラレルデータに変換する（Ｓ２）。そして、このパラレルデータを受け取ったＳＩＥ１２はそのデータがＵＳＢデバイスエナメレーション／デバイス制御データか否かを判定し（Ｓ３）、ＵＳＢデバイスエナメレーション／デバイス制御データであれば（Ｓ３でＹｅｓ）、そのデータをＥＰ０送受信バッファ１３に格納して（Ｓ４）、ステップＳ６へ進む。それに対して、データがプリントデータであれば（Ｓ３でＮｏ）、そのデータをＥＰ１受信バッファ１４に格納して（Ｓ５）、ステップＳ６へ進む。
そして、ステップＳ６では、ＵＳＢデバイスコントローラ１からの割り込みによりＥＰ０送受信バッファ１３またはＥＰ１受信バッファ１４にデータが格納されたことを知ったＣＰＵ２が内部レジスタ１６の内容を参照し、ＥＰ０送受信バッファ１３への格納であれば（Ｓ６でＹｅｓ）、ＰＩＯ−Ｉ／Ｆ１８を介してＥＰ０送受信バッファ１３からプリンタメインメモリ３へのデータ転送をおこなう（Ｓ７）。それに対して、ＥＰ１受信バッファ１４への格納であれば（Ｓ６でＮｏ）、後述のようにしてＤＭＡ−Ｉ／Ｆ１７を介してＥＰ１受信バッファ１４からプリンタメインメモリ３へのデータ転送をおこなう（Ｓ８）。
また、この実施例では、ＥＰ１受信バッファ１４からプリンタメインメモリ３へのデータ転送において、ＤＭＡ−Ｉ／Ｆ１７経由のＤＭＡ転送に異常が発生した場合、転送データの連続性を保証する制御方法を実現するために、図２に示した、以下の６種類のレジスタを内部レジスタ１６内に備えている（図２はＥＰ１受信バッファ１４に関連したブロックのみ抜き出した図面である）。
【０００９】
（１）ＥＰ１受信バッファ１４に格納されたパケットデータ数の初期値を格納するレジスタＡ：ＥＰ１受信バッファ１４はそれぞれＵＳＢ仕様に規定された最大パケットサイズと同じ容量を持つ２つのＦＩＦＯメモリで、例えばＨＳバルクアウト転送の場合、最大パケットサイズは５１２バイトであり、各５１２バイトのＦＩＦＯメモリを交互に使用する。レジスタＡの値は２つのＦＩＦＯメモリのうちプリンタ側にアクセス権のあるＦＩＦＯメモリ（このＦＩＦＯメモリは切り替えによって変わる）に格納されたデータ数を示し、最大パケットサイズのパケットデータが格納されている場合の値は５１２となる。最大パケットサイズ未満のパケットデータが格納されている場合はそのバイト数がレジスタＡに格納される。レジスタＡの値は、ＥＰ１受信バッファ１４内のデータがＤＭＡデータ転送により減少しても変化しない。ＤＭＡデータ転送が完了し、ＦＩＦＯメモリが切り替わった時点で値が更新される。
（２）ＥＰ１受信バッファ１４に格納されたパケットデータ数の現在値を格納するレジスタＢ：ＥＰ１受信バッファ１４内のデータを読み出す前はレジスタＡと同じ値を示すが、ＤＭＡデータ転送によりＤＭＡＣ４内のバッファに転送したデータ数分だけ値が減少する。ＤＭＡデータ転送が完了時に値がゼロになり、そのとき、前記２つのＦＩＦＯメモリのうちアクセス権がＳＩＥ１２側のＦＩＦＯメモリに確定したデータが存在する場合にＦＩＦＯメモリが切り替わり、レジスタＡと同じ値に更新される。
（３）ＤＭＡＣ４内のバッファからプリンタメインメモリ３へ転送されたデータ数を格納するレジスタＣ：ＤＭＡＣ４内のバッファからプリンタメインメモリ３へ転送される度にその転送データ分だけ値がカウントアップされる。ＦＩＦＯメモリの切り替え時またはＤＭＡＣ４の初期化時にレジスタＣの値はゼロに初期化される。
前記（１）から（３）に記載したように、ＦＩＦＯメモリが切り替わる際にレジスタＡ、レジスタＢ、レジスタＣの値は次のパケットに対応した値に更新される構成にすることが制御上必要である。
【００１０】
（４）ＤＭＡＣ４を介したデータ転送を一時的に中断させるためのレジスタＤ：レジスタＤに値１を書き込むことにより、ＤＭＡＣ４を介したＤＭＡデータ転送が一時的に中断される。値０を書き込むことでＤＭＡ転送は再開される。
（５）ＤＭＡＣ４の初期化を制御するためのレジスタＥ：レジスタＥに値１を書き込むことにより、ＤＭＡＣ４の内部ステートマシン初期化およびＤＭＡＣ４内のバッファデータがクリアされる。
（６）ＦＩＦＯメモリの読み出しアドレスをパケットデータ先頭に戻すためのレジスタＦ：例えばＦＩＦＯメモリの容量が５１２バイトの場合、読み出しアドレスは０から５１１の範囲の値を取る。データ転送毎に読み出しアドレス値を更新することでＦＩＦＯメモリのデータを連続して読み出すことが可能となる。ＦＩＦＯメモリ内のデータ転送が完了し、ＦＩＦＯメモリが切り替わった時点で読み出しアドレス値は０に戻る。この実施例では、さらに、レジスタＦに値１を書き込むことによりＦＩＦＯメモリ内のデータ転送完了前であっても読み出しアドレス値を０に戻す機能を備えている。また、レジスタＦへの書き込み処理と連動させてレジスタＢの値をデータ読み出し前の初期値に自動的に戻すデータ数変更手段を設けておく。
【００１１】
次に、前記したようなレジスタを使用して行われる受信時における転送データの保証処理の動作フローを図４に示す。以下、図４に従って、この動作フローを説明する。
まず、ＣＰＵ２が、ＤＭＡＣ４を制御して、ＥＰ１受信バッファ（ＦＩＦＯメモリ）１４からプリンタメインメモリ３へデータを転送させるＤＭＡ転送を開始させる（Ｓ１１）。そして、そのＤＭＡ転送実行中、ＣＰＵ２は異常監視を行い、ＤＭＡデータ転送経路における異常を検出すると（Ｓ１２でＹｅｓ）、レジスタＤに１を書き込むことによりＤＭＡ転送を一時中断させる（Ｓ１３）。なお、ＤＭＡＣ４自体に異常が起きた場合、レジスタＤへの書き込みを行わなくてもＤＭＡ転送が中断する場合もあるが、そのような場合であっても、以下の処理中に意図せずＤＭＡ転送が再開することを防ぐ目的でレジスタＤへの書き込みを行う。
続いて、ＣＰＵ２は、レジスタＣの値からプリンタメインメモリ３へ転送されたデータ数を読み込み、そのデータ数分のデータをプリンタメインメモリ３から消去する（Ｓ１４）。そして、レジスタＥに値１を書き込むことにより、ＤＭＡＣ４内のバッファのデータを消去する。このようなＤＭＡＣ初期化処理は転送データの連続性を保証するために必要である。さらに、レジスタＦに値１を書き込むことにより、ＦＩＦＯメモリの読み出しアドレスをパケットデータ先頭に戻す（Ｓ１５）。なお、レジスタＦへの書き込み処理に連動してレジスタＢの値がデータ読み出し前の値に自動的に戻るようにＵＳＢデバイスコントローラ１を構成しておく。または、レジスタＢの値をＣＰＵ２から書き換え可能な構成にしておき、レジスタＦへの書き込み後にレジスタＡと同じ値に書き換える方法も可能である。
この後、ＣＰＵ２はレジスタＤに０を書き込んでＤＭＡ転送を再開させる（Ｓ１６）。
こうして、この実施例によれば、途中まで転送したプリンタメインメモリ３内のデータが消去され、ＤＭＡＣ４内のバッファ中のデータが消去され、ＦＩＦＯメモリの読み出しアドレスがパケットデータの先頭に戻されるので、パケットデータ先頭からのデータ転送が再開され、プリンタメインメモリ３へ転送されるデータの連続性が保証される。また、転送済みデータファイルが無駄に破棄されてしまうことを防止することができる。
以上、請求項１記載の当該装置がプリンタである場合について説明したが、その装置はプリンタに制限されない。例えばプリンタの代わりに光ディスク記憶装置のような大容量記憶装置であってもよいし、それ以外であってもよい。
また、前記においては、装置間のデータ通信がＵＳＢ規格によった場合で説明したが、本発明の一部についてはＩＥＥＥ１３９４ａ、またはＩＥＥＥ１２８４規格によったデータ通信でもよい。
【００１２】
【発明の効果】
以上説明したように、本発明によれば、請求項１記載の発明では、外部から受信したデータまたは外部へ送信するデータを一時的に記憶する当該装置のバッファメモリとその装置内のメインメモリとの間のデータ転送をＤＭＡコントローラを介して実行する際、そのバッファメモリ内に格納されたパケットデータ数の初期値が記憶され、そのバッファメモリに格納されているデータ数の現在値が記憶され、そのＤＭＡコントローラとそのメインメモリとの間の転送データ数が記憶され、また、ＤＭＡコントローラを介したデータ転送を一時的に中断させることができ、その中断時にはそのＤＭＡコントローラが初期化され、前記バッファメモリの読み出しアドレスは格納されているパケットデータの先頭に戻されるので、バッファメモリと当該装置内のメインメモリとの間のＤＭＡ転送経路に異常が生じても、転送済みデータファイルが丸ごと破棄されてしまうことを防止することができるし、データ転送経路を切り換えずに連続データの転送を保証することができる。
また、請求項２記載の発明では、請求項１記載の発明において、バッファメモリがＵＳＢデバイスコントローラを構成するアウト転送用エンドポイントバッファメモリであるので、アウト転送用エンドポイントバッファメモリと当該装置内のメインメモリとの間のＤＭＡ転送経路に異常が生じても、転送済みデータファイルが丸ごと破棄されてしまうことを防止することができるし、データ転送経路を切り換えずに連続データの転送を保証することができる。
また、請求項３記載の発明では、請求項１または請求項２記載の発明において、アドレス用記憶手段への書き込み処理に連動して、現在データ数記憶手段の値が自動的にデータ読み出し前の値に変更されるので、当該装置のＣＰＵ側は現在データ数記憶手段の値をデータ読み出し前の値に変更しなくて済む。
【００１３】
また、請求項４記載の発明では、請求項２記載の発明において、アウト転送用エンドポイントバッファメモリがそれぞれＵＳＢ仕様書に記載された最大パケットデータ数と同じ容量を持つ２つのバッファメモリから構成され、その２つのバッファメモリが切り替えられる度に初期データ数記憶手段、現在データ記憶手段、および転送データ数記憶手段に記憶されている値が更新されるので、請求項１記載の効果に加えて、転送速度が向上する。
また、請求項５記載の発明では、当該装置のＵＳＢデバイスコントローラのアウト転送用エンドポイントバッファメモリと当該装置内のメインメモリとの間のデータ転送をＤＭＡコントローラを介して実行するデータ通信システムにおいて、アウト転送用エンドポイントバッファメモリとメインメモリとの間のデータ転送経路に異常が発生した場合、ＤＭＡコントローラを介したデータ転送が一時的に中断され、所定の処理が実行され、その後再び、ＤＭＡコントローラを介したデータ転送が再開されるので、そのような異常が発生しても、転送済みデータファイルが丸ごと破棄されてしまうことを防止することができるし、データ転送経路を切り換えずに連続データの転送を保証することができる。
また、請求項６記載の発明では、請求項２乃至請求項５のいずれか１項に記載の発明において、当該装置がプリンタであり、アウト転送用エンドポイントバッファメモリはＵＳＢ規格で定められたバルク転送エンドポイントＦＩＦＯメモリであるので、そのような構成の場合で請求項２乃至請求項５のいずれか１項に記載の発明の効果を得ることができる。
【図面の簡単な説明】
【図１】本発明の一実施例を示すプリンタ要部の構成ブロック図である。
【図２】本発明の一実施例を示すプリンタ要部の詳細構成図である。
【図３】本発明の一実施例を示すプリンタ要部の動作フロー図である。
【図４】本発明の一実施例を示すプリンタ要部の他の動作フロー図である。
【符号の説明】
１　ＵＳＢデバイスコントローラ、２　ＣＰＵ、３　プリンタメインメモリ、４　ＤＭＡコントローラ、５　システムバス、１１　物理層回路ブロック、１２論理層回路ブロック、１３　ＥＰ０送受信バッファ、１４　ＥＰ１受信バッファ、１５　ＥＰ２送信バッファ、１６　内部レジスタ、１７　ＤＭＡ−Ｉ／Ｆ、１８　ＰＩＯ−Ｉ／Ｆ
【図１】
2004056312.tif 000003
【図２】
2004056312.tif 000004
【図３】
2004056312.tif 000005
【図４】
2004056312.tif 000006