(57)【特許請求の範囲】
【請求項１】
バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、
相手ノードから転送されてきた第１のデータ転送要求に基づいてデータ転送処理を行うデータ転送処理手段と、
データ転送処理のステータスを相手ノードに対して転送するステータス転送手段とを含み、
前記ステータス転送手段が、
前記第１のデータ転送要求に対するステータスがデータ転送制御装置から返ってくるのを相手ノードが待つ時間であるタイムアウト時間Ｔ１を超えたときに、該相手ノードからリセット要求が送信される場合に、
前記第１のデータ転送要求がＤＭＡ転送要求であり、前記タイムアウト時間Ｔ１より短いタイムアウト時間Ｔ２内に前記ＤＭＡ転送要求に基づくＤＭＡ転送が完了したときには、転送完了ステータスを相手ノードに対して転送し、
前記第１のデータ転送要求がＤＭＡ転送要求であり、前記ＤＭＡ転送要求に基づくＤＭＡ転送の処理中において前記タイムアウト時間Ｔ１よりも短いタイムアウト時間Ｔ２が経過したときには、ダミーエラーステータスを相手ノードに対して転送し、
前記データ転送処理手段が、
前記ステータス転送手段により相手ノードに対して前記ダミーエラーステータスが転送された場合には、該相手ノードから再びＤＭＡ転送要求が転送されるのを待機し、
前記タイムアウト時間Ｔ１が経過するまでに前記第１のデータ転送要求に対するステータスを前記相手ノードに転送できなかった場合には、前記相手ノードから送信されるリセット要求に基づいて、前記第１のデータ転送要求についての内部情報をクリアすることを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
前記ステータス転送手段が、
アプリケーション層のデバイスとの間のデータ転送が完了していない場合には、前記タイムアウト時間Ｔ２が経過したことを条件に前記ダミーエラーステータスを相手ノードに対して転送し、前記アプリケーション層のデバイスとの間のデータ転送が完了した場合には、転送完了ステータスを相手ノードに対して転送することを特徴とすることを特徴とするデータ転送制御装置。
【請求項３】
請求項２において、
前記アプリケーション層のデバイスが印字処理デバイスであり、
前記ステータス転送手段が、
少なくとも前記タイムアウト時間Ｔ１より長い前記印字処理デバイスのヘッドクリーニング時間を待つために、前記タイムアウト時間Ｔ２が経過した場合には、前記ダミーエラーステータスを相手ノードに対して転送することを特徴とするデータ転送制御装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記ダミーエラーステータスを受けた相手ノードから前記第１のデータ転送要求と同一内容の第２のデータ転送要求が転送されてきた場合に、データ転送を継続して再開する再開手段を含むことを特徴とするデータ転送制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
ＩＥＥＥ１３９４の規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至５のいずれかのデータ転送制御装置との間でのデータ転送を制御するためのプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体であって、
前記タイムアウト時間Ｔ１の経過前に前記第１のデータ転送要求に対するステータスがデータ転送制御装置から返ってこなかった場合には、データ転送制御装置をリセットする処理を行い、前記タイムアウト時間Ｔ１の経過前に前記ダミーエラーステータスがデータ転送制御装置から返ってきた場合には、第１のデータ転送要求と同一内容の第２のデータ転送要求をデータ転送制御装置に対して行う手段としてコンピュータを機能させるためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項７】
請求項１乃至５のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びバスを介して相手ノードから受信したデータに所与の処理を施す装置と、
処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする電子機器。
【請求項８】
請求項１乃至５のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びバスを介して相手ノードに転送するデータに所与の処理を施す装置と、
処理が施されるデータを取り込むための装置とを含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置、情報記憶媒体及び電子機器に関し、特に、バスに接続される複数のノード間でＩＥＥＥ１３９４などの規格に準じたデータ転送を行うためのデータ転送制御装置、情報記憶媒体及び電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、ＩＥＥＥ１３９４と呼ばれるインターフェース規格が脚光を浴びている。このＩＥＥＥ１３９４は、次世代のマルチメディアにも対応可能な高速シリアルバスインターフェースを規格化したものである。このＩＥＥＥ１３９４によれば、動画像などのリアルタイム性が要求されるデータも扱うことができる。また、ＩＥＥＥ１３９４のバスには、プリンタ、スキャナ、ＣＤ−ＲＷドライブ、ハードディスクドライブなどのコンピュータの周辺機器のみならず、ビデオカメラ、ＶＴＲ、ＴＶなどの家庭用電化製品も接続できる。このため、電子機器のデジタル化を飛躍的に促進できるものとして期待されている。
【０００３】
さて、このようなＩＥＥＥ１３９４のバスにプリンタなどの電子機器を接続した場合に、以下のような問題が生じることが判明した。
【０００４】
即ち、インクジェット・プリンタなどにおいては、印刷の途中でヘッドクリーニングが行われると、数分間（最大５分程度）データの流れが止まる。
【０００５】
一方、イニシエータ（パーソナルコンピュータ）で動作するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は、例えば１００秒間データが流れないと、ターゲット（プリンタ、データ転送制御装置）のリセット処理を行った後、新たにデータ転送要求を行う。そして、リセット処理が行われると、ターゲットの内部情報もクリアされるため、ヘッドクリーニングの終了後にデータ転送を継続して再開できなくなる。
【０００６】
本発明は、以上のような技術的課題に鑑みてなされたものであり、上層のデバイスとの間でのデータ転送が何らかの理由で中断した場合にも、その理由の解消後にデータ転送を適正に継続して再開できるデータ転送制御装置、情報記憶媒体及び電子機器を提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために本発明は、バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、相手ノードから転送されてきた第１のデータ転送要求に基づいてデータ転送処理を行う手段と、データ転送処理のステータスを相手ノードに対して転送するステータス転送手段とを含み、前記ステータス転送手段が、前記第１のデータ転送要求に対するステータスがデータ転送制御装置から返ってくるのを相手ノードが待つ時間であるタイムアウト時間Ｔ１よりも短いタイムアウト時間Ｔ２が経過したところで、エラーステータスを相手ノードに対して転送することを特徴とする。
【０００８】
本発明によれば、相手ノードからの第１のデータ転送要求によりデータ転送処理が開始し、そのステータスが相手ノードに転送される。そして本発明では、ステータスの返送を相手ノードが待つ時間であるタイムアウト時間Ｔ１よりも短いタイムアウト時間Ｔ２が経過すると（タイムアウト時刻になると）、意図的にダミーのエラーステータスが相手ノードに転送される。従って、相手ノードは、リセット処理等を行うのをタイムアウト時間Ｔ１だけ再度待つようになる。この結果、上層のデバイスとの間でのデータ転送が何らかの理由（例えばヘッドクリーニング）で中断した場合などにも、その理由の解消後にデータ転送を適正に継続して再開できるようになる。
【０００９】
また本発明は、前記ステータス転送手段が、上層のデバイスとの間のデータ転送が完了していない場合には、前記タイムアウト時間Ｔ２が経過したことを条件にエラーステータスを相手ノードに対して転送し、上層のデバイスとの間のデータ転送が完了した場合には、転送完了ステータスを相手ノードに対して転送することを特徴とすることを特徴とする。このようにすれば、転送完了ステータスを受けた相手ノードが、例えば第１のデータ転送要求と同一内容の第２のデータ転送要求を行うことで、データ転送を適正に継続して再開できるようになる。
【００１０】
また本発明は、前記上層のデバイスが印字処理デバイスであり、前記ステータス転送手段が、前記印字処理デバイスのヘッドクリーニング時間を待つために、前記タイムアウト時間Ｔ２が経過したことを条件にエラーステータスを相手ノードに対して転送することを特徴とする。このようにすれば、印字処理デバイスのヘッドクリーニング時間を待つために、データ転送が長時間にわたり中断した場合にも、ヘッドクリーニングの終了後に、データ転送を適正に再開できるようになる。
【００１１】
また本発明は、前記エラーステータスを受けた相手ノードから前記第１のデータ転送要求と同一内容の第２のデータ転送要求が転送されてきた場合に、データ転送を継続して再開する再開手段を含むことを特徴とする。このようにすれば、データが二重転送されるなどの事態を防止でき、データ転送制御装置を含む電子機器の誤動作を防止できるようになる。
【００１２】
なお本発明では、ＩＥＥＥ１３９４の規格に準拠したデータ転送を行うことが望ましい。
【００１３】
また本発明は、上記のいずれかのデータ転送制御装置との間でのデータ転送を制御するためのプログラムを含む情報記憶媒体であって、前記タイムアウト時間Ｔ１の経過前に前記第１のデータ転送要求に対するステータスがデータ転送制御装置から返ってこなかった場合には、データ転送制御装置をリセットする処理を行い、前記タイムアウト時間Ｔ１の経過前にエラーステータスがデータ転送制御装置から返ってきた場合には、第１のデータ転送要求と同一内容の第２のデータ転送要求をデータ転送制御装置に対して行うためのプログラムを含むことを特徴とする。このようにすれば、誤ったデータ転送再開処理が行われてしまう事態を防止でき、データ転送の中断が要因となる不具合の発生を防止できる。
【００１４】
また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して相手ノードから受信したデータに所与の処理を施す装置と、処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする。また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して相手ノードに送信するデータに所与の処理を施す装置と、処理が施されるデータを取り込むための装置とを含むことを特徴とする。
【００１５】
本発明によれば、電子機器とデータ転送制御装置との間でのデータ転送が何らかの理由（例えばヘッドクリーニング）で中断した場合にも、その理由の解消後にデータ転送を適正に再開できるようになる。またデータ転送の高速化を図れ、電子機器の低コスト化、電子機器の処理の高速化なども図ることができる。
【００１６】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００１７】
１．ＩＥＥＥ１３９４
まず、ＩＥＥＥ１３９４について簡単に説明する。
【００１８】
１．１  概要
ＩＥＥＥ１３９４（ＩＥＥＥ１３９４−１９９５、Ｐ１３９４．ａ）では１００〜４００Ｍｂｐｓの高速なデータ転送が可能となっている（Ｐ１３９４．ｂでは８００〜３２００Ｍｂｐｓ）。また、転送速度が異なるノードをバスに接続することも許される。
【００１９】
各ノードはツリー状に接続されており、１つのバスに最大で６３個のノードが接続可能になっている。なお、バスブリッジを利用すれば約６４０００個のノードを接続することも可能である。
【００２０】
ＩＥＥＥ１３９４では、パケットの転送方式として非同期転送とアイソクロナス転送が用意されている。ここで非同期転送は、信頼性が要求されるデータの転送に好適な転送方式であり、アイソクロナス転送は、リアルタイム性が要求される動画像や音声などのデータの転送に好適な転送方式である。
【００２１】
１．２  層構造
ＩＥＥＥ１３９４の層構造（プロトコル構成）を図１に示す。
【００２２】
ＩＥＥＥ１３９４のプロトコルは、トランザクション層、リンク層、物理層により構成される。また、シリアルバスマネージメントは、トランザクション層、リンク層、物理層をモニターしたり制御したりするものであり、ノードの制御やバスのリソース管理のための種々の機能を提供する。
【００２３】
トランザクション層は、上位層にトランザクション単位のインターフェース（サービス）を提供し、下層のリンク層が提供するインターフェースを通して、リードトランザクション、ライトトランザクション、ロックトランザクション等のトランザクションを実施する。
【００２４】
ここで、リードトランザクションでは、応答ノードから要求ノードにデータが転送される。一方、ライトトランザクションでは、要求ノードから応答ノードにデータが転送される。またロックトランザクションでは、要求ノードから応答ノードにデータが転送され、応答ノードがそのデータに処理を施して要求ノードに返信する。
【００２５】
リンク層は、アドレッシング、データチェック、パケット送受信のためのデータフレーミング、アイソクロナス転送のためのサイクル制御などを提供する。
【００２６】
物理層は、リンク層により使用されるロジカルシンボルの電気信号への変換や、バスの調停や、バスの物理的インターフェースを提供する。
【００２７】
１．３  ＳＢＰ−２
さて、図２に示すように、ＩＥＥＥ１３９４のトランザクション層の一部の機能を含む上位のプロトコルとして、ＳＢＰ−２（Ｓｅｒｉａｌ  Ｂｕｓ  Ｐｒｏｔｏｃｏｌ−２）と呼ばれるプロトコルが提案されている。
【００２８】
ここでＳＢＰ−２は、ＳＣＳＩのコマンドセットをＩＥＥＥ１３９４のプロトコル上で利用可能にするために提案されたものである。このＳＢＰ−２を用いれば、既存のＳＣＳＩ規格の電子機器で使用されていたＳＣＳＩのコマンドセットに最小限の変更を加えて、ＩＥＥＥ１３９４規格の電子機器に使用できるようになる。従って、電子機器の設計や開発を容易化できる。また、ＳＣＳＩのコマンドだけではなく、デバイス固有のコマンドもカプセル化して利用できるため、非常に汎用性が高い。
【００２９】
図３に示すようにＳＢＰ−２では、まず、イニシエータ（例えばパーソナルコンピュータ）により作成されたログインＯＲＢ（Ｏｐｅｒａｔｉｏｎ  Ｒｅｑｕｅｓｔ  Ｂｌｏｃｋ）を用いてログイン処理が行われる（ステップＴ１）。次に、ダミーＯＲＢを用いてフェッチエージェントの初期化が行われる（ステップＴ２）。そして、コマンドブロックＯＲＢ（ノーマルコマンドＯＲＢ）を用いてコマンド処理が行われ（ステップＴ３）、最後に、ログアウトＯＲＢを用いてログアウト処理が行われる（ステップＴ４）。
【００３０】
ここで、ステップＴ３のコマンド処理においては、図４のＡ１に示すように、イニシエータがライト要求パケットを転送して（ライト要求トランザクションを発行して）、ターゲットのドアベルレジスタをリングする。すると、Ａ２に示すように、ターゲットがリード要求パケットを転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータが作成したＯＲＢ（コマンドブロックＯＲＢ）が、ターゲットのデータバッファにフェッチされる。そして、ターゲットは、フェッチされたＯＲＢに含まれるコマンドを解析する。
【００３１】
そして、ＯＲＢに含まれるコマンドがＳＣＳＩのライトコマンドであった場合には、Ａ３に示すように、ターゲットがリード要求パケットをイニシエータに転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータのデータバッファに格納されているデータがターゲットに転送される。そして、例えばターゲットがプリンタであった場合には、転送されたデータがプリンタエンジンにより印刷される。
【００３２】
一方、ＯＲＢに含まれるコマンドがＳＣＳＩのリードコマンドであった場合には、図５のＢ１に示すように、ターゲットは、一連のライト要求パケットをイニシエータに転送する。これにより、例えばターゲットがスキャナであった場合には、スキャナエンジンにより取得されたスキャンデータが、イニシエータのデータバッファに転送されることになる。
【００３３】
このＳＢＰ−２によれば、ターゲットは、自身が都合の良いときに要求パケットを転送して（トランザクションを発行して）、データを送受信できる。従って、イニシエータとターゲットが同期して動く必要がなくなるため、データ転送効率を高めることができる。
【００３４】
なお、ＩＥＥＥ１３９４の上位プロトコルとしては、ＳＢＰ−２以外にも、ＦＣＰ（Ｆｕｎｃｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）と呼ばれるプロトコルなども提案されている。
【００３５】
さて、ターゲット、イニシエータ間でデータ転送を行う場合、図６（Ａ）のようにイニシエータ（相手ノード）のデータバッファ（記憶手段）にページテーブルが存在する場合と、存在しない場合がある。
【００３６】
そして、ページテーブルが存在する場合には、図６（Ｂ）に示すように、イニシエータが作成したＯＲＢの中には、そのページテーブルのアドレスやエレメント数が含まれる。そして、転送データのアドレス（読み出しアドレス、書き込みアドレス）は、このページテーブルを用いて間接アドレス指定される。
【００３７】
一方、ページテーブルが存在しない場合には、図６（Ｃ）に示すように、ＯＲＢの中にアドレスとデータ長が含まれ、転送データのアドレスが直接アドレス指定される。
【００３８】
２．全体構成
次に、本実施形態のデータ転送制御装置の全体構成例について図７を用いて説明する。なお、以下では、イニシエータとの間でデータ転送を行うターゲットがプリンタである場合について例にとり説明するが、本発明はこれに限定されない。
【００３９】
本実施形態のデータ転送制御装置１０は、ＰＨＹデバイス１２（物理層のデバイス）、リンクデバイス１４（リンク層のデバイス）、ＣＰＵ１６（プロセッサ）、データバッファ１８（記憶手段）、ファームウェア２０（処理手段）を含む。なお、ＰＨＹデバイス１２、リンクデバイス１４、ＣＰＵ１６、データバッファ１８は、任意の構成要素であり、本実施形態のデータ転送制御装置１０は、これらの構成要素を全て含む必要はない。
【００４０】
ＰＨＹデバイス１２は、図１の物理層のプロトコルをハードウェアにより実現するための回路であり、リンクデバイス１４により使用されるロジカルシンボルを電気信号に変換する機能を有する。
【００４１】
リンクデバイス１４は、図１のリンク層のプロトコルやトランザクション層のプロトコルの一部をハードウェアにより実現するための回路であり、ノード間でのパケット転送のための各種サービスを提供する。
【００４２】
ＣＰＵ１６は、装置全体の制御やデータ転送の制御を行うものである。
【００４３】
データバッファ１８は、転送データ（パケット）を一時的に格納するバッファであり、ＳＲＡＭ、ＳＤＲＡＭ、或いはＤＲＡＭなどのハードウェアにより構成される。なお、本実施形態では、データバッファ１８は、ランダムアクセス可能なパケット記憶手段として機能する。
【００４４】
ファームウェア２０は、ＣＰＵ１６上で動作する種々の処理ルーチン（処理モジュール）を含むプログラムであり、トランザクション層のプロトコルは、このファームウェア２０と、ハードウェアであるＣＰＵ１６等により実現される。
【００４５】
なお、イニシエータであるパーソナルコンピュータ１００が含むデバイスドライバ１０２は、周辺機器を管理制御するための種々の処理ルーチンを含むプログラムである。このプログラムは、情報記憶媒体１１０（ＦＤ、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＯＭ）を利用してパーソナルコンピュータ１００にインストールされる。
【００４６】
ここで、デバイスドライバ１０２のプログラムは、ホストシステムが有する情報記憶媒体（ハードディスク、磁気テープ等）からインターネットなどのネットワークを介してダウンロードし、パーソナルコンピュータ１００にインストールするようにしてもよい。このようなホストシステムが有する情報記憶媒体の使用も本発明の範囲内に含まれる。
【００４７】
ファームウェア２０（Ｆ／Ｗ）は、コミュニケーション部３０（ＣＯＭ）、マネージメント部４０（ＭＮＧ）、プリントタスク部５０（ＰＲＴ）、フェッチ部６０（ＦＣＨ）を含む。
【００４８】
ここで、コミュニケーション部３０は、リンクデバイス１４などのハードウェアとの間のインターフェースとして機能する処理モジュールである。
【００４９】
マネージメント部４０（マネージメントエージェント）は、ログイン、リコネクト、ログアウト、リセット等の管理を行う処理モジュールである。例えばイニシエータがターゲットにログインを要求した場合には、まず、このマネージメント部４０が、このログイン要求を受け付けることになる。
【００５０】
プリントタスク部５０は、後段のアプリケーション層（上層）であるプリンタエンジンとの間のデータ転送処理を行う処理モジュールである。
【００５１】
フェッチ部６０（フェッチエージェント、コマンドブロックエージェント）は、コマンドブロックＯＲＢが含むコマンドを実行するための処理モジュールである。フェッチ部６０は、単一の要求しか扱うことができないマネージメント部４０と異なり、イニシエータからの要求により自身がフェッチしたＯＲＢのリンクリストも扱うことができる。
【００５２】
フェッチ部６０は、データ転送処理部６１、ステータス転送部６２、コマンド比較部６６、アドレス比較部７０、データ転送再開部７２を含む。
【００５３】
ここで、データ転送処理部６１は、イニシエータ（相手ノード）から転送されてきたＯＲＢ（コマンドブロックＯＲＢ。広義には、データ転送要求）に基づいて、データ転送に必要な種々の処理（ページテーブルのリード、印刷データのリード、データ転送の制御等）を行う。
【００５４】
ステータス転送部６２は、データ転送処理のステータス（転送完了ステータス、エラーステータス等）をイニシエーターに対して転送する処理を行う。
【００５５】
そして本実施形態では、ＯＲＢに対するステータスの返送をイニシエータが待つ時間であるタイムアウト時間Ｔ１よりも短いタイムアウト時間Ｔ２が経過したことを条件に、エラーステータスをイニシエータに対して転送するようにしている。
【００５６】
コマンド比較部６６は、エラーステータスを受けたイニシエータからＯＲＢが再度転送されてきた場合に、再転送されたＯＲＢ（第２のデータ転送要求）の内容と、その前に処理中であったＯＲＢ（第１のデータ転送要求）の内容とを比較する処理を行う。
【００５７】
アドレス比較部７０は、エラーステータスを受けたイニシエータからＯＲＢが再度転送されてきた場合に、再転送されたＯＲＢにより転送要求された転送データの先頭アドレス（第２のアドレス。ＩＥＥＥ１３９４のバスアドレス）と、その前に処理中であったＯＲＢにより転送要求された転送データの先頭アドレス（第１のアドレス）とを比較する処理を行う。
【００５８】
データ転送再開部７２は、ＯＲＢの内容が同一であり、先頭アドレスが同一である場合に、データ転送を継続して再開する処理を行う。
【００５９】
なお、処理の確実性の観点からは、ＯＲＢの内容が同一であり且つ先頭アドレスが同一である場合に、データ転送を再開することが望ましい。しかしながら、ＯＲＢの内容が一致しただけでデータ転送を再開するようにしたり、先頭アドレスが一致しただけでデータ転送を再開するようにしてもよい。このようにすれば、処理負担を軽減化できる。
【００６０】
３．本実施形態の処理
次に、本実施形態の処理例について説明する。
【００６１】
図８は、ターゲット側（ファームウェア）の処理例を示すフローチャートである。
【００６２】
イニシエータから印刷要求があると、ターゲットは、イニシエータのデータバッファからＯＲＢをリードする（ステップＳ１）。そして、ページテーブルが存在する場合には、ＯＲＢに含まれるページテーブルアドレス（図６（Ｂ）参照）に基づいて、イニシエータのデータバッファからページテーブルをリードする（ステップＳ２）。
【００６３】
次に、リードされたページテーブルに基づいて印刷データをリードする（ステップＳ３）。そして、リードされた印刷データをプリンタエンジン（印字処理デバイス）にＤＭＡ転送する（ステップＳ４）。
【００６４】
次に、プリンタエンジンへの印刷データのＤＭＡ転送が終了したか否かを判断する（ステップＳ５）。そして、終了した場合には転送完了ステータスをイニシエータに対して転送する（ステップＳ６）。
【００６５】
以上の処理を、全ての印刷データ（印刷物を印刷するのに必要な全ての印刷データ）が転送されるまで繰り返す（ステップＳ７）。
【００６６】
そして本実施形態では、ステップＳ５で印刷データのＤＭＡ転送が終了していないと判断した場合に、ターゲット側のタイムアウト時間Ｔ２が経過したか否か（タイムアウト時刻になったか否か）を判断する（ステップＳ８）。例えばヘッドクリーニングなどが理由でプリンタエンジンへのデータ転送が中断した場合には、ステップＳ５、ステップＳ８のループが繰り返され、タイムアウト時間Ｔ２が経過するまで待つことになる。この場合に、このタイムアウト時間Ｔ２が後述するイニシエータ側のタイムアウト時間Ｔ１よりも短い時間になっているところに本実施形態の特徴がある。そして本実施形態では、このタイムアウト時間Ｔ２が経過すると、意図的にダミーのエラースタータスをターゲットに対して転送する（ステップＳ９）。そして、その後アイドル状態に状態遷移する。
【００６７】
図９は、イニシエータ側（デバイスドライバ）の処理例を示すフロチャートである。
【００６８】
アプリケーションプログラムからの印刷ジョブが発生すると、イニシエータは、印刷のためのＯＲＢやページテーブルを作成し、データバッファに書き込む（ステップＳ２０）。次に、作成したＯＲＢをリードするようにターゲットに対して指示する（ステップＳ２１。図４のＡ１参照）。
【００６９】
次に、イニシエータ側のタイムアウト時間Ｔ１が経過したか否かを判断する（ステップＳ２２）。このタイムアウト時間Ｔ１は、前述のターゲット側のタイムアウト時間Ｔ２よりも長い時間になっている。そして、タイムアウト時間が経過してしまった場合には、ターゲットのリセット処理（アボートタスク、アボートタスクセット、ターゲットリセット等）を行い、その後、ＯＲＢを再作成する（ステップＳ２３）。そして、再作成したＯＲＢをリードするようにターゲットに対して指示する（ステップＳ２１）。
【００７０】
一方、ステップＳ２２でタイムアウト時間Ｔ１が経過していないと判断された場合には、ステータスがライトされたか否かを判断する（ステップＳ２４）。そして、タイムアウト時間Ｔ１が経過する前にステータスがライトされた場合には、そのステータスがエラーステータスか否かを判断する（ステップＳ２５）。例えば、図８のステップＳ９で、タイムアウト時間Ｔ１よりも短いＴ２で意図的にエラーステータスがライトされると、このステップＳ２５でエラーステータスがライトされたと判断されることになる。
【００７１】
ステップＳ２５でエラーステータスではないと判断されると、全ての印刷データが転送されたか否かを判断し（ステップＳ２６）、転送されていない場合には、ステップＳ２０に戻り、転送された場合には印刷ジョブを終了する。
【００７２】
そして本実施形態では、ステップＳ２５でエラーステータスであると判断されると、ステップＳ２７に移行し、待ち時間Ｔ（例えば３秒）が経過したか否かを判断する。そして、経過した場合には、イニシエータは、ＯＲＢ、ページテーブルを再作成し（ステップＳ２８）、再作成したＯＲＢをリードするようにターゲットに対して指示する（ステップＳ２１）。この場合にイニシエータ（デバイスドライバ）は、ＯＲＢの内容や印刷データの先頭アドレス及びデータ長が、ヘッドクリーニング発生前と発生後で同一になるように、ＯＲＢを再作成する。このようにすることで、データ転送を適正に継続して再開できるようになる。
【００７３】
４．本実施形態の特徴
さて、インクジェット・プリンタなどにおいては印刷の途中でヘッドクリーニングが行われることがある。そしてヘッドクリーニングが行われると、図１０のＤ１に示すようにデータ転送が数分間中断する。即ち、データ転送制御装置がプリンタエンジンに印刷データを転送しようとしても、その印刷データをプリンタエンジンが受け付けないため、ターゲットのデータバッファがフル状態になり、データ転送が中断する。従って、ターゲットはイニシエータに対して転送完了ステータスを返すことができない（図８のステップＳ５、Ｓ６参照）。
【００７４】
一方、イニシエータは、図１０のＤ２に示すように、タイムアウト時間Ｔ１が経過する前にターゲットからステータスが返ってこないと、ターゲットのリセット処理を行う（図９のステップＳ２２、Ｓ２３参照）。この場合、初めはアボートタスクやアボートタスクセットなどの緩やかなリセット処理を行い、それでもターゲットから応答が無いと、ターゲットリセットなどの強いリセット処理を行う。
【００７５】
そして、リセット処理が行われると、ターゲットがそれまで保持していた内部情報（ＯＲＢの内容、転送データの先頭アドレス等）もクリアされてしまう。従って、ターゲットは、ヘッドクリーニング終了後にデータ転送を再開できなくなる。この結果、プリンタのユーザは、自分の手で紙を排出し、再度印刷を行うしかなかった。
【００７６】
そこで本実施形態では、図１１のＥ１に示すように、イニシエータ側のタイムアウト時間Ｔ１よりも短いタイムアウト時間Ｔ２が経過したところで、意図的にダミーのエラースタータスをイニシエータに転送している（図８のステップＳ８、Ｓ９）。このようにすれば、図１１のＥ２に示すように、エラーステータスを受けたイニシエータはリセット処理を行わないようになる（図９でステップＳ２３に移行せず、ステップＳ２４に移行するようになる）。従って、ターゲットの内部情報がクリアされるのを防止できる。
【００７７】
そして、ヘッドクリーニング中にターゲットは、タイムアウト時間Ｔ１が経過する毎にダミーのエラーステータスをイニシエータに送り続ける。そして、ヘッドクリーニングが終了し、ＯＲＢによるデータ転送が完了すると、ターゲットは転送完了ステータスをイニシエータに転送する（図８のステップＳ５、Ｓ６）。その後、ヘッドクリーニング発生時点の続きからデータ転送を再開する。この場合、本実施形態では、イニシエータによるターゲットのリセット処理は行われておらず、ターゲットはヘッドクリーニング発生時点の内部情報を保持しているため、ヘッドクリーニング発生時点の続きからデータ転送を再開できることになる。
【００７８】
さて、ヘッドクリーニング発生時点の続きからデータ転送を適正に再開するためには、以下のような工夫も必要である。
【００７９】
例えば図１２（Ａ）に示すように、Ｃ１に示す位置（アドレス）までデータを転送したところで、ヘッドクリーニングが発生したとする。この場合に、イニシエータは、図１２（Ｂ）に示すように印刷のためのＯＲＢを再度作成して、印刷データの転送を最初からやり直すようにターゲットに指示する（図９のステップＳ２７、Ｓ２８、Ｓ２１）。このため、図１２（Ｂ）のＣ２に示す位置からデータ転送が再開されてしまい、印刷データの一部分だけが二重に送られてしまう。この結果、図１２（Ｃ）に示すような二重印刷の問題が発生する。
【００８０】
このような問題を解決するために、本実施形態では、以下に説明するような手法を採用している。
【００８１】
例えば図１３のＦ１に示すＯＲＢによるデータ転送中に、ヘッドクリーニングが発生したとする。すると、ターゲットはＦ２に示すようにイニシエータにエラーステータスを転送する。そして、このエラーステータスを受けたイニシエータにより、Ｆ３に示すＯＲＢが再度作成され、このＯＲＢがターゲットに転送される（ターゲットがリードする）。この場合に、本実施形態では、Ｆ１に示すヘッドクリーニング前のＯＲＢ（第１のコマンドパケット）の内容とＦ３に示すヘッドクリーニング後のＯＲＢ（第２のコマンドパケット）の内容を比較する。また、ヘッドクリーニング前のＯＲＢにより指定される転送データの先頭アドレスＡＤ１（第１のアドレス）と、ヘッドクリーニング後のＯＲＢにより指定される転送データの先頭アドレスＡＤ２（第２のアドレス）を比較する。
【００８２】
そして、ＯＲＢの内容が同一であり先頭アドレスが同一であると判断された場合には、Ｆ４に示すようにデータ転送を継続して再開する。即ちヘッドクリーニング発生時点のデータ転送の続きからデータ転送を再開する（ヘッドクリーニング発生時点で既に転送を完了していたデータの次のデータからデータ転送を再開する）。
【００８３】
一方、ＯＲＢの内容が同一でなかった場合や先頭アドレスが同一でなかった場合には、Ｆ３に示すヘッドクリーニング後のＯＲＢを新規のＯＲＢとして最初から処理する。
【００８４】
このようにすることで、図１３のＦ５に示す部分の転送データが、図１２（Ｂ）の場合と異なり、二重転送されないようになる。従って、図１２（Ｃ）に示すような誤印刷が生じなくなる。また二重転送を避けることができるため、転送時間も短縮できる。
【００８５】
例えば本実施形態と異なる手法として、ＯＲＢの内容や先頭アドレスの比較処理を行わずに、常に、ヘッドクリーニング発生時点の続きからデータ転送を再開するという手法も考えられる。
【００８６】
しかしながら、この手法によると、例えば、ヘッドクリーニング発生後にイニシエータが印刷データの転送処理をキャンセルし、ヘッドクリーニング発生前と全く異なるＯＲＢを作成した場合にも、図１３のＦ４からデータ転送が再開されてしまうという不具合が生じる。
【００８７】
これに対して本実施形態では、ＯＲＢの内容や先頭アドレスがヘッドクリーニングの前後で同一の場合には、図１３のＦ４からデータ転送が再開するが、同一でない場合には、全く新規のＯＲＢとして処理されるため、上記のような不具合が生じないようになる。
【００８８】
なお本実施形態では、ＯＲＢの内容比較の際に種々の情報を比較している。例えば図１４に示すように、本実施形態では、コマンドブロックＯＲＢが含むページテーブル存在フラグＰや、データサイズや、コマンドブロック（コマンドセット）フィールドの中のオペレーションコード（印刷コマンド、リードコマンドなどを区別するコード）やデータ長を比較している。またＯＲＢが、ＯＲＢを識別するための識別情報（例えば順序番号）を含む場合には、この識別情報も比較している。このような情報を比較することで、ヘッドクリーニング発生前後のＯＲＢが同一か否かを簡素な処理で確実に判断できるようになる。
【００８９】
なお、転送データの先頭アドレスＡＤ１、ＡＤ２の比較は、具体的には以下のようにして行う。即ち、ページテーブルを使用していない場合には、ＯＲＢのデータデスクリプタフィールドの値が同一か否かを比較する。一方、ページテーブルを使用している場合には、ページテーブルの最初のセグメントの内容が同一か否かを比較する。
【００９０】
５．電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
【００９１】
例えば図１５（Ａ）に電子機器の１つであるプリンタの内部ブロック図を示し、図１６（Ａ）にその外観図を示す。ＣＰＵ（マイクロコンピュータ）５１０はシステム全体の制御などを行う。操作部５１１はプリンタをユーザが操作するためのものである。ＲＯＭ５１６には、制御プログラム、フォントなどが格納され、ＲＡＭ５１８はＣＰＵ５１０のワーク領域として機能する。表示パネル５１９はプリンタの動作状態をユーザに知らせるためのものである。
【００９２】
ＰＨＹデバイス５０２、データ転送制御装置５００を介して、パーソナルコンピュータなどの相手ノードから送られてきた印字データは、バス５０４を介して印字処理部（プリンタエンジン）５１２に直接送られる。そして、印字データは、印字処理部５１２にて所与の処理が施され、プリントヘッダなどからなる印字部（データを出力するための装置）５１４により紙に印字されて出力される。
【００９３】
図１５（Ｂ）に電子機器の１つであるスキャナの内部ブロック図を示し、図１６（Ｂ）にその外観図を示す。ＣＰＵ５２０はシステム全体の制御などを行う。操作部５２１はスキャナをユーザが操作するためのものである。ＲＯＭ５２６には制御プログラムなどが格納され、ＲＡＭ５２８はＣＰＵ５２０のワーク領域として機能する。
【００９４】
光源、光電変換器などからなる画像読み取り部（データを取り込むための装置）５２２により原稿の画像が読み取られ、読み取られた画像のデータは画像処理部（スキャナエンジン）５２４により処理される。そして、処理後の画像データがバス５０５を介してデータ転送制御装置５００に直接送られる。データ転送制御装置５００は、この画像データにヘッダなどを付加することでパケットを生成し、ＰＨＹデバイス５０２を介してパーソナルコンピュータなどの相手ノードに送信する。
【００９５】
図１５（Ｃ）に電子機器の１つであるＣＤ−ＲＷドライブの内部ブロック図を示し、図１６（Ｃ）にその外観図を示す。ＣＰＵ５３０はシステム全体の制御などを行う。操作部５３１はＣＤ−ＲＷをユーザが操作するためのものである。ＲＯＭ５３６には制御プログラムなどが格納され、ＲＡＭ５３８はＣＰＵ５３０のワーク領域として機能する。
【００９６】
レーザ、モータ、光学系などからなる読み取り＆書き込み部（データを取り込むための装置又はデータを記憶するための装置）５３３によりＣＤ−ＲＷ５３２から読み取られたデータは、信号処理部５３４に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、バス５０６を介してデータ転送制御装置５００に直接送られる。データ転送制御装置５００は、このデータにヘッダなどを付加することでパケットを生成し、ＰＨＹデバイス５０２を介してパーソナルコンピュータなどの相手ノードに送信する。
【００９７】
一方、ＰＨＹデバイス５０２、データ転送制御装置５００を介して、相手ノードから送られてきたデータは、バス５０６を介して信号処理部５３４に直接送られる。そして、信号処理部５３４によりこのデータに所与の信号処理が施され、読み取り＆書き込み部５３３によりＣＤ−ＲＷ５３２に記憶される。
【００９８】
なお、図１５（Ａ）、（Ｂ）、（Ｃ）において、ＣＰＵ５１０、５２０、５３０の他に、データ転送制御装置５００でのデータ転送制御のためのＣＰＵを別に設けるようにしてもよい。
【００９９】
また、図１５（Ａ）、（Ｂ）、（Ｃ）ではＲＡＭ５０１（データバッファに相当）がデータ転送制御装置５００の外部に設けられているが、ＲＡＭ５０１をデータ転送制御装置５００に内蔵させてもよい。
【０１００】
本実施形態のデータ転送制御装置を電子機器に用いれば、ヘッドクリーニングなどの理由によりデータ転送が中断した場合にも、その理由の解消後にデータ転送を適正に再開できるようになる。
【０１０１】
また本実施形態のデータ転送制御装置を電子機器に用いれば、高速なデータ転送が可能になる。従って、ユーザがパーソナルコンピュータなどによりプリントアウトの指示を行った場合に、少ないタイムラグで印字が完了するようになる。また、スキャナへの画像取り込みの指示の後に、少ないタイムラグで読み取り画像をユーザは見ることができるようになる。また、ＣＤ−ＲＷからのデータの読み取りや、ＣＤ−ＲＷへのデータの書き込みを高速に行うことができるようになる。
【０１０２】
また本実施形態のデータ転送制御装置を電子機器に用いることで、ＣＰＵ上で動作するファームウェアの処理負担が軽減され、安価なＣＰＵや低速のバスを用いることが可能になる。更に、データ転送制御装置の低コスト化、小規模化を図れるため、電子機器の低コスト化、小規模化も図れるようになる。
【０１０３】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶ、ＶＴＲ、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
【０１０４】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１０５】
例えば、本発明のデータ転送制御装置の構成は、図７に示す構成が特に望ましいが、これに限定されるものではない。
【０１０６】
また、コマンドの比較手法、アドレスの比較手法、データ転送の再開手法は、本実施形態で説明した手法が特に望ましいが、これに限定されるものではない。
【０１０７】
また本発明は、ヘッドクリーニング時のデータ転送の中断の問題を解消するのに特に効果的であるが、これに限定されるものではない。例えばＣＤ−ＲＷドライブにおけるディスクのフォーマット時のデータ転送の中断の問題など、種々の問題を解消するのに本発明は効果的である。
【０１０８】
また、本発明は、ＩＥＥＥ１３９４規格でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばＩＥＥＥ１３９４と同様の思想に基づく規格やＩＥＥＥ１３９４を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図１】ＩＥＥＥ１３９４の層構造について示す図である。
【図２】ＳＢＰ−２について説明するための図である。
【図３】ＳＢＰ−２のデータ転送処理の概略について説明するための図である。
【図４】データをイニシエータからターゲットに転送する場合のコマンド処理について説明するための図である。
【図５】データをターゲットからイニシエータに転送する場合のコマンド処理について説明するための図である。
【図６】図６（Ａ）、（Ｂ）、（Ｃ）は、ページテーブルについて説明するための図である。
【図７】本実施形態のデータ転送制御装置の構成例を示す図である。
【図８】ターゲット側（ファームウェア）の処理の概要を示すフローチャートである。
【図９】イニシエータ側（デバイスドライバ）の処理の概要を示すフローチャートである。
【図１０】ヘッドクリーニング時のデータ転送の中断の問題について説明するための図である。
【図１１】イニシエータ側のタイムアウト時間Ｔ１よりも短いタイムアウト時間Ｔ２が経過したところで、イニシエータにエラーステータスを転送する手法について説明するための図である。
【図１２】図１２（Ａ）、（Ｂ）、（Ｃ）は、二重印刷の問題について説明するための図である。
【図１３】ヘッドクリーニング発生の前後でＯＲＢの内容や転送データの先頭アドレスが同一の場合に、データ転送を継続して再開する手法について説明するための図である。
【図１４】ＯＲＢの内容比較について説明するための図である。
【図１５】図１５（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図１６】図１６（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０    データ転送制御装置
１２    ＰＨＹデバイス
１４    リンクデバイス
１６    ＣＰＵ
１８    データバッファ
２０    ファームウェア（Ｆ／Ｗ）
３０    コミュニケーション部（ＣＯＭ）
４０    マネージメント部（ＭＮＧ）
５０    プリントタスク部（ＰＲＴ）
６０    フェッチ部（ＦＣＨ）
６１    データ転送処理部
６２    ステータス転送部
６６    コマンド比較部
７０    アドレス比較部
７２    データ転送再開部
１００  パーソナルコンピュータ
１０２  デバイスドライバ
１０４  データバッファ
１１０  情報記憶媒体
【図１】
0003624767.tif 000002
【図２】
0003624767.tif 000003
【図３】
0003624767.tif 000004
【図４】
0003624767.tif 000005
【図５】
0003624767.tif 000006
【図６】
0003624767.tif 000007
【図７】
0003624767.tif 000008
【図８】
0003624767.tif 000009
【図９】
0003624767.tif 000010
【図１０】
0003624767.tif 000011
【図１１】
0003624767.tif 000012
【図１２】
0003624767.tif 000013
【図１３】
0003624767.tif 000014
【図１４】
0003624767.tif 000015
【図１５】
0003624767.tif 000016
【図１６】
0003624767.tif 000017