JP3598923B2 - データ転送制御装置、情報記憶媒体及び電子機器 - Google Patents
データ転送制御装置、情報記憶媒体及び電子機器 Download PDFInfo
- Publication number
- JP3598923B2 JP3598923B2 JP36110399A JP36110399A JP3598923B2 JP 3598923 B2 JP3598923 B2 JP 3598923B2 JP 36110399 A JP36110399 A JP 36110399A JP 36110399 A JP36110399 A JP 36110399A JP 3598923 B2 JP3598923 B2 JP 3598923B2
- Authority
- JP
- Japan
- Prior art keywords
- data transfer
- data
- reset
- control device
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40052—High-speed IEEE 1394 serial bus
- H04L12/40123—Interconnection of computers and peripherals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
Description
【発明の属する技術分野】
本発明は、データ転送制御装置、情報記憶媒体及び電子機器に関し、特に、バスに接続される複数のノード間でIEEE1394などの規格に準じたデータ転送を行うためのデータ転送制御装置、情報記憶媒体及び電子機器に関する。
【0002】
【背景技術及び発明が解決しようとする課題】
近年、IEEE1394と呼ばれるインターフェース規格が脚光を浴びている。このIEEE1394は、次世代のマルチメディアにも対応可能な高速シリアルバスインターフェースを規格化したものである。このIEEE1394によれば、動画像などのリアルタイム性が要求されるデータも扱うことができる。また、IEEE1394のバスには、プリンタ、スキャナ、CD−RWドライブ、ハードディスクドライブなどのコンピュータの周辺機器のみならず、ビデオカメラ、VTR、TVなどの家庭用電化製品も接続できる。このため、電子機器のデジタル化を飛躍的に促進できるものとして期待されている。
【0003】
さて、このIEEE1394においては、バスに電子機器が新たに接続されたり、バスから電子機器が取り外されたりして、バスに接続されるノードが増減すると、いわゆるバスリセットが発生する。そしてバスリセットが発生するとノードのトポロジ情報がクリアされ、その後、トポロジ情報が自動的に再設定される。即ち、バスリセットの発生後、ツリー識別(ルートノードの決定)、自己識別が行われ、その後、アイソクロナスリソースマネージャ等の管理ノードが決定される。そして通常のパケット転送が再開される。
【0004】
このようにIEEE1394では、バスリセット後にトポロジ情報が自動的に再設定されるため、いわゆるホット状態でのケーブルの抜き差し(ホットプラグ)が可能となる。このため、一般ユーザは、VTRなどの通常の家庭用電化製品と同じように、電子機器へのケーブルの抜き差を自由にできるようになり、いわゆるホームネットワークシステムの普及に役立つことができる。
【0005】
しかしながら、IEEE1394のバスに接続されたプリンタやスキャナなどのデバイスにおいて、このバスリセットの発生が要因となって以下のような問題が生じることが判明した。
【0006】
即ち、IEEE1394のバス上で印刷データの転送中にバスリセットが発生すると、パーソナルコンピュータなどのイニシエータは、印刷データの転送を最初から再度やり直す。従って、ターゲットであるプリンタに対して、印刷データの一部分だけが二重に送られてしまい、二重印刷などの誤印刷の問題が生じる。
【0007】
また、スキャナでは、一旦ヘッドが動き出すと、ヘッドを元に戻して再度同じデータを取得することはできない。従って、バスリセットの発生後、イニシエータがデータ転送を最初から再度やり直そうとしても、データ転送を継続することができないという問題がある。
【0008】
なお、バスリセットの発生により生じる不具合を解決する従来技術として、例えば特開平11−194902号公報に開示されるものがある。この従来技術では、バスリセットが発生すると、データ処理をホールドし、ネットワーク構成が再構築された後にデータ処理を再開する。
【0009】
しかしながら、この従来技術では、バスリセット発生後に転送データを単に再送するだけであり、再送される転送データがバスリセット発生前の転送データの続きか否かの判断については行っていない。従って、この従来技術によっては二重印刷の問題を解決できない。
【0010】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ノードのトポロジ情報をクリアするリセットが発生した場合に生じる不具合を解消できるデータ転送制御装置、情報記憶媒体及び電子機器を提供することにある。
【0011】
【課題を解決するための手段】
上記課題を解決するために本発明は、バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、相手ノードとの間でデータ転送が開始してから完了するまでの間のデータ転送期間中に、ノードのトポロジ情報をクリアするリセットが発生したか否かを判断する判断手段と、該リセットの発生前に相手ノードから転送されてきたデータ転送オペレーション要求のための第1のコマンドパケットの内容と、該リセットの発生後に相手ノードから転送されてきたデータ転送オペレーション要求のための第2のコマンドパケットの内容とを比較するコマンド比較手段と、ノードのトポロジ情報をクリアするリセットが前記データ転送期間中に発生したと判断され、且つ、前記第1、第2のコマンドパケットが同一内容であると判断された場合には、リセット発生時点のデータ転送の続きからデータ転送を再開する再開手段とを含むことを特徴とする。
【0012】
本発明によれば、ノードのトポロジ情報をクリアするリセットがデータ転送期間中に発生したか否かが判断される。また、リセット発生前に転送されてきた第1のコマンドパケットの内容と、リセット発生後に転送されてきた第2のコマンドパケットの内容が比較される。そして、データ転送期間中にリセットが発生したと判断され、且つ、第1、第2のコマンドパケットが同一内容であると判断されると、リセット発生時点の続きから(例えばリセット発生時点で転送を完了したデータの次のデータから)、データ転送が再開されるようになる。
【0013】
一方、例えば、第1、第2のコマンドパケットが同一内容でないと判断された場合等には、リセット発生後の第2のコマンドパケットは最初から処理されるようになる。
【0014】
従って本発明によれば、相手ノードが、リセット発生後にリセット発生前と同一内容のコマンドパケットを転送要求してきた場合には、リセット発生時点の続きからデータ転送を再開できるようになる。従って、例えばデータ転送制御装置の上層のデバイスにデータが重複して転送されてしまい、上層のデバイスが誤動作するなどの問題を解消できる。
【0015】
なお、前記判断手段は、ノードのトポロジ情報をクリアするリセットの発生時点においてデータ転送オペレーション要求のための前記第1のコマンドパケットを処理中であり、且つ、該第1のコマンドパケットによるデータ転送が既に行われておりデータ転送完了のステータスを相手ノードに転送してない場合に、該リセットが前記データ転送期間中に発生したと判断することが望ましい。
【0016】
また本発明は、前記判断手段が、ノードのトポロジ情報をクリアするリセットがデータ転送期間中に発生したと判断した場合に、データ転送が継続して再開される可能性があることを示す継続フラグをオンにセットすることを特徴とする。このようにすれば、継続フラグがオフの場合には、コマンドパケットの比較処理が行われないようにすることができる。従って、無用なコマンドパケットの内容比較処理が行われないようになり、処理負担の軽減化を図れる。
【0017】
また本発明は、データ転送を再開するアドレスを特定するための情報と、データ転送オペレーション要求のための前記第1のコマンドパケットの内容とを、該リセットの発生後、データ転送が再開されるまでの間に記憶するコマンド記憶手段を含むことを特徴とする。このような情報を記憶しておけば、データ転送の再開処理を簡素な処理で実現できるようになる。
【0018】
また本発明は、前記コマンド比較手段が、ノードのトポロジ情報をクリアするリセットの発生後に相手ノードから転送されてきたコマンドパケットの中で最初に転送されてきたデータ転送オペレーション要求のためのコマンドパケットを、前記第1のコマンドパケットの比較対象となる前記第2のコマンドパケットとして採用することを特徴とする。このようにすれば、最初のデータ転送オペレーション要求のためのコマンドパケットが転送されてくるまで、コマンドパケットの内容比較処理が実行されるのが、繰り越されるようになる。これにより、無用なコマンドパケットの内容比較処理が行われるのを防止でき、処理負担の軽減化を図れる。
【0019】
また本発明は、データ転送完了のステータスを相手ノードに転送したが、ノードのトポロジ情報をクリアするリセットの発生が要因となって相手ノードからアクノリッジメントが返って来なかった場合に、データ転送不可状態に状態遷移することを特徴とする。このように、相手ノードからアクノリッジメントが返って来なかった場合には、相手ノードがステータスを受け取ったか否かが不明となる。従って、このような場合にリセット発生時点の続きからデータ転送を開始してしまうと、誤ったデータ転送が行われてしまう可能性がある。本発明によれば、ノードのトポロジ情報をクリアするリセットが要因となって相手ノードからアクノリッジメントが返って来なかった場合には、データ転送不可状態に状態遷移するため、このような誤ったデータ転送が行われる事態を防止できる。
【0020】
また本発明は、上層のデバイスから転送されてきた転送データの中で、ノードのトポロジ情報をクリアするリセットの発生時点において相手ノードへ未だ転送していない転送データについては、破棄せずに保持しておくことを特徴とする。このようにすれば、スキャナ等により取り込んだデータが、リセットの発生により失われてしまう等の不具合を防止できる。
【0021】
なお本発明では、前記リセットが、IEEE1394の規格において定義されるバスリセットであることが望ましい。
【0022】
また本発明は、上記のいずれかのデータ転送制御装置との間でのデータ転送を制御するためのプログラムを含む情報記憶媒体であって、ノードのトポロジ情報をクリアするリセットがデータ転送期間中に発生した場合には、該リセットの発生前に転送されたデータ転送オペレーション要求のための第1のコマンドパケットと同一内容の第2のコマンドパケットを作成し、データ転送制御装置に転送要求するためのプログラムを含むことを特徴とする。このようにすれば、誤ったデータ転送再開処理が行われてしまう事態を防止でき、リセットの発生が要因となる不具合の発生を防止できる。
【0023】
また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して相手ノードから受信したデータに所与の処理を施す装置と、処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする。また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して相手ノードに送信するデータに所与の処理を施す装置と、処理が施されるデータを取り込むための装置とを含むことを特徴とする。
【0024】
本発明によれば、ノードのトポロジー情報をクリアするリセットの発生によりシステムに不具合が生じる事態を防止でき、電子機器が誤動作するのを防止できる。またデータ転送の高速化を図れ、電子機器の低コスト化、電子機器の処理の高速化なども図ることができる。
【0025】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【0026】
1.IEEE1394
まず、IEEE1394について簡単に説明する。
【0027】
1.1 概要
IEEE1394(IEEE1394−1995、P1394.a)では100〜400Mbpsの高速なデータ転送が可能となっている(P1394.bでは800〜3200Mbps)。また、転送速度が異なるノードをバスに接続することも許される。
【0028】
各ノードはツリー状に接続されており、1つのバスに最大で63個のノードが接続可能になっている。なお、バスブリッジを利用すれば約64000個のノードを接続することも可能である。
【0029】
IEEE1394では、パケットの転送方式として非同期転送とアイソクロナス転送が用意されている。ここで非同期転送は、信頼性が要求されるデータの転送に好適な転送方式であり、アイソクロナス転送は、リアルタイム性が要求される動画像や音声などのデータの転送に好適な転送方式である。
【0030】
1.2 層構造
IEEE1394の層構造(プロトコル構成)を図1に示す。
【0031】
IEEE1394のプロトコルは、トランザクション層、リンク層、物理層により構成される。また、シリアルバスマネージメントは、トランザクション層、リンク層、物理層をモニターしたり制御したりするものであり、ノードの制御やバスのリソース管理のための種々の機能を提供する。
【0032】
トランザクション層は、上位層にトランザクション単位のインターフェース(サービス)を提供し、下層のリンク層が提供するインターフェースを通して、リードトランザクション、ライトトランザクション、ロックトランザクション等のトランザクションを実施する。
【0033】
ここで、リードトランザクションでは、応答ノードから要求ノードにデータが転送される。一方、ライトトランザクションでは、要求ノードから応答ノードにデータが転送される。またロックトランザクションでは、要求ノードから応答ノードにデータが転送され、応答ノードがそのデータに処理を施して要求ノードに返信する。
【0034】
リンク層は、アドレッシング、データチェック、パケット送受信のためのデータフレーミング、アイソクロナス転送のためのサイクル制御などを提供する。
【0035】
物理層は、リンク層により使用されるロジカルシンボルの電気信号への変換や、バスの調停や、バスの物理的インターフェースを提供する。
【0036】
1.3 SBP−2
さて、図2に示すように、IEEE1394のトランザクション層の一部の機能を含む上位のプロトコルとして、SBP−2(Serial Bus Protocol−2)と呼ばれるプロトコルが提案されている。
【0037】
ここでSBP−2は、SCSIのコマンドセットをIEEE1394のプロトコル上で利用可能にするために提案されたものである。このSBP−2を用いれば、既存のSCSI規格の電子機器で使用されていたSCSIのコマンドセットに最小限の変更を加えて、IEEE1394規格の電子機器に使用できるようになる。従って、電子機器の設計や開発を容易化できる。また、SCSIのコマンドだけではなく、デバイス固有のコマンドもカプセル化して利用できるため、非常に汎用性が高い。
【0038】
図3に示すようにSBP−2では、まず、イニシエータ(例えばパーソナルコンピュータ)により作成されたログインORB(Operation Request Block)を用いてログイン処理が行われる(ステップT1)。次に、ダミーORBを用いてフェッチエージェントの初期化が行われる(ステップT2)。そして、コマンドブロックORB(ノーマルコマンドORB)を用いてコマンド処理が行われ(ステップT3)、最後に、ログアウトORBを用いてログアウト処理が行われる(ステップT4)。
【0039】
ここで、ステップT3のコマンド処理においては、図4のA1に示すように、イニシエータがライト要求パケットを転送して(ライト要求トランザクションを発行して)、ターゲットのドアベルレジスタをリングする。すると、A2に示すように、ターゲットがリード要求パケットを転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータが作成したORB(コマンドブロックORB)が、ターゲットのデータバッファにフェッチされる。そして、ターゲットは、フェッチされたORBに含まれるコマンドを解析する。
【0040】
そして、ORBに含まれるコマンドがSCSIのライトコマンドであった場合には、A3に示すように、ターゲットがリード要求パケットをイニシエータに転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータのデータバッファに格納されているデータがターゲットに転送される。そして、例えばターゲットがプリンタであった場合には、転送されたデータがプリンタエンジンにより印刷される。
【0041】
一方、ORBに含まれるコマンドがSCSIのリードコマンドであった場合には、図5のB1に示すように、ターゲットは、一連のライト要求パケットをイニシエータに転送する。これにより、例えばターゲットがスキャナであった場合には、スキャナエンジンにより取得されたスキャンデータが、イニシエータのデータバッファに転送されることになる。
【0042】
このSBP−2によれば、ターゲットは、自身が都合の良いときに要求パケットを転送して(トランザクションを発行して)、データを送受信できる。従って、イニシエータとターゲットが同期して動く必要がなくなるため、データ転送効率を高めることができる。
【0043】
なお、IEEE1394の上位プロトコルとしては、SBP−2以外にも、FCP(Function Control Protocol)と呼ばれるプロトコルなども提案されている。
【0044】
さて、ターゲット、イニシエータ間でデータ転送を行う場合、図6(A)のようにイニシエータ(相手ノード)のデータバッファ(記憶手段)にページテーブルが存在する場合と、存在しない場合がある。
【0045】
そして、ページテーブルが存在する場合には、図6(B)に示すように、イニシエータが作成したORBの中には、そのページテーブルのアドレスやエレメント数が含まれる。そして、転送データのアドレス(読み出しアドレス、書き込みアドレス)は、このページテーブルを用いて間接アドレス指定される。
【0046】
一方、ページテーブルが存在しない場合には、図6(C)に示すように、ORBの中にアドレスとデータ長が含まれ、転送データのアドレスが直接アドレス指定される。
【0047】
1.4 バスリセット
IEEE1394では、電源が投入されたり、途中でデバイスの抜き差しが発生すると、バスリセットが発生する。即ち、各ノードは、ポートの電圧変化を監視している。そして、バスに新たなノードが接続されるなどしてポートの電圧に変化が生じると、この変化を検知したノードは、バス上の他のノードに対して、バスリセットが発生したことを知らせる。また、各ノードの物理層は、バスリセットが発生したことをリンク層に伝える。
【0048】
そして、このようにバスリセットが発生すると、ノードIDなどのトポロジ情報がクリアされる。そして、その後、トポロジー情報が自動的に再設定される。即ち、バスリセット後、ツリー識別、自己識別が行われる。その後、アイソクロナスリソースマネージャ、サイクルマスタ、バスマネージャ等の管理ノードが決定される。そして、通常のパケット転送が再開される。
【0049】
このようにIEEE1394では、バスリセット後にトポロジ情報が自動的に再設定されるため、電子機器のケーブルを自由に抜き差しできるようになり、いわゆるホットプラグを実現できる。
【0050】
なお、トランザクションの途中でバスリセットが発生した場合には、そのトランザクションはキャンセルされる。そして、キャンセルされたトランザクションを発行した要求ノードは、トポロジー情報が再設定された後に、要求パケットを再度転送する。また、応答ノードは、バスリセットによりキャンセルされたトランザクションの応答パケットを要求ノードに返送してはならない。
【0051】
2.全体構成
次に、本実施形態のデータ転送制御装置の全体構成例について図7を用いて説明する。なお、以下では、イニシエータとの間でデータ転送を行うターゲットがプリンタである場合について例にとり説明するが、本発明はこれに限定されない。
【0052】
本実施形態のデータ転送制御装置10は、PHYデバイス12(物理層のデバイス)、リンクデバイス14(リンク層のデバイス)、CPU16(プロセッサ)、データバッファ18(記憶手段)、ファームウェア20(処理手段)を含む。なお、PHYデバイス12、リンクデバイス14、CPU16、データバッファ18は、任意の構成要素であり、本実施形態のデータ転送制御装置10は、これらの構成要素を全て含む必要はない。
【0053】
PHYデバイス12は、図1の物理層のプロトコルをハードウェアにより実現するための回路であり、リンクデバイス14により使用されるロジカルシンボルを電気信号に変換する機能を有する。
【0054】
リンクデバイス14は、図1のリンク層のプロトコルやトランザクション層のプロトコルの一部をハードウェアにより実現するための回路であり、ノード間でのパケット転送のための各種サービスを提供する。
【0055】
CPU16は、装置全体の制御やデータ転送の制御を行うものである。
【0056】
データバッファ18は、転送データ(パケット)を一時的に格納するバッファであり、SRAM、SDRAM、或いはDRAMなどのハードウェアにより構成される。なお、本実施形態では、データバッファ18は、ランダムアクセス可能なパケット記憶手段として機能する。
【0057】
ファームウェア20は、CPU16上で動作する種々の処理ルーチン(処理モジュール)を含むプログラムであり、トランザクション層のプロトコルは、このファームウェア20と、ハードウェアであるCPU16等により実現される。
【0058】
なお、イニシエータであるパーソナルコンピュータ100が含むデバイスドライバ102は、周辺機器を管理制御するための種々の処理ルーチンを含むプログラムである。このプログラムは、情報記憶媒体110(FD、CD−ROM、DVD、ROM)を利用してパーソナルコンピュータ100にインストールされる。
【0059】
ここで、デバイスドライバ102のプログラムは、ホストシステムが有する情報記憶媒体(ハードディスク、磁気テープ等)からインターネットなどのネットワークを介してダウンロードし、パーソナルコンピュータ100にインストールするようにしてもよい。このようなホストシステムが有する情報記憶媒体の使用も本発明の範囲内に含まれる。
【0060】
ファームウェア20(F/W)は、コミュニケーション部30(COM)、マネージメント部40(MNG)、プリントタスク部50(PRT)、フェッチ部60(FCH)を含む。
【0061】
ここで、コミュニケーション部30は、リンクデバイス14などのハードウェアとの間のインターフェースとして機能する処理モジュールである。
【0062】
マネージメント部40(マネージメントエージェント)は、ログイン、リコネクト、ログアウト、リセット等の管理を行う処理モジュールである。例えばイニシエータがターゲットにログインを要求した場合には、まず、このマネージメント部40が、このログイン要求を受け付けることになる。
【0063】
プリントタスク部50は、後段のアプリケーション層(上層)であるプリンタエンジンとの間のデータ転送処理を行う処理モジュールである。
【0064】
フェッチ部60(フェッチエージェント、コマンドブロックエージェント)は、コマンドブロックORBが含むコマンドを実行するための処理モジュールである。フェッチ部60は、単一の要求しか扱うことができないマネージメント部40と異なり、イニシエータからの要求により自身がフェッチしたORBのリンクリストも扱うことができる。
【0065】
フェッチ部60は、判断部62、コマンド記憶部64、コマンド比較部66、アドレス記憶部68、アドレス比較部70、データ転送再開部72を含む。
【0066】
ここで判断部62は、イニシエータ(相手ノード)との間で印刷データを転送するデータ転送期間中に、バスリセット(広義には、ノードのトポロジ情報をクリアするリセット)が発生したか否かを判断する処理を行う。
【0067】
コマンド記憶部64は、バスリセットの発生前にイニシエータから転送されてきたORB(コマンドブロックORB。広義には、データ転送オペレーション要求のためのコマンドパケット)の内容を、バスリセットが発生した時点やリコネクトが成功した時点などで記憶するための処理を行う。
【0068】
コマンド比較部66は、バスリセットの発生前にイニシエータから転送されてきたORB(コマンドブロックORB)の内容(コマンド記憶部64により記憶された内容)と、バスリセットの発生後にイニシエータから転送されてきたORBの内容とを比較する処理を行う。
【0069】
アドレス記憶部68は、イニシエータとの間で転送される転送データ(印刷データ)の先頭アドレス(第1のアドレス)を記憶するための処理を行う。
【0070】
アドレス比較部70は、バスリセットが発生した場合に、アドレス記憶部68により記憶された先頭アドレス(第1のアドレス)と、バスリセット発生後の転送データの先頭アドレス(第2のアドレス)とを比較する処理を行う。
【0071】
データ転送再開部72は、バスリセットがデータ転送期間中に発生したと判断され、且つ、ORB(コマンドブロックORB)の内容が一致したと判断された場合に、バスリセット発生時点のデータ転送の続き(バスリセット発生時点で転送したデータの次のデータ)からデータ転送を再開する処理を行う。
【0072】
3.処理の概要
次に、本実施形態の処理の概要について説明する。
【0073】
図8は、ターゲット側(ファームウェア)の処理の概要について示すフローチャートである。
【0074】
イニシエータから印刷要求があると、ターゲットは、イニシエータのデータバッファからORBをリードする(ステップS1)。そして、ページテーブルが存在する場合には、ORBに含まれるページテーブルアドレス(図6(B)参照)に基づいて、イニシエータのデータバッファからページテーブルをリードする(ステップS2)。次に、リードしたページテーブルに基づいてイニシエータのデータバッファから印刷データをリードする(ステップS3)。そして、ページテーブルにより指定される印刷データを全てリードすると、ステータスをライトして、データ転送が成功したか否かなどのステータスをイニシエータに伝える(ステップS4)。以上の処理を、全ての印刷データが転送されるまで繰り返す(ステップS5)。
【0075】
そして本実施形態では、印刷データの転送中(データ転送期間)にバスリセットが発生すると、リコネクト後の最初の印刷要求時に以下の処理を行う。
【0076】
即ち、まず、バスリセット前のORBの内容や印刷データの先頭アドレスと、バスリセット後のORBの内容や印刷データの先頭アドレスとが同一か否かを判断する(ステップS6)。そして、同一であると判断した場合には、バスリセット発生時点の続きからデータ転送を再開する(ステップS7)。一方、同一でないと判断した場合には、バスリセット後のORBを新規のORBとして最初から処理する(ステップS8)。
【0077】
図9は、イニシエータ側(デバイスドライバ)の処理の概要について示すフローチャートである。
【0078】
アプリケーションプログラムからの印刷ジョブが発生すると、イニシエータは、印刷のためのORBやページテーブルを作成し、データバッファに書き込む(ステップS10)。次に、作成したORBをリードするようにターゲットに対して指示する(ステップS11。図4のA1参照)。
【0079】
次に、バスリセットが発生したか否かを判断し(ステップS12)、発生しなかった場合には、ステータスがターゲットから送られてきたか否かを判断する(ステップS13)。そして、送られてきた場合には、全ての印刷データが転送されたか否かを判断し(ステップS14)、転送されていない場合には、ステップS10に戻り、転送された場合には印刷ジョブを終了する。
【0080】
そして本実施形態では、ステップS12でバスリセットが発生したと判断されると、イニシエータが、ORB、ページテーブルを再作成し(ステップS15)、再作成したORBをリードするようにターゲットに対して指示する(ステップS11)。この場合にイニシエータ(デバイスドライバ)は、バスリセット発生前のORBの内容や印刷データの先頭アドレスと、バスリセット発生後のORBの内容や印刷データの先頭アドレスとが同一になるように、ORBを再作成する。
【0081】
4.本実施形態の特徴
さて、印刷データの転送中にバスリセットが発生すると、以下のような問題が生じることが判明した。
【0082】
例えば図10(A)に示すように、C1に示す位置(アドレス)までデータを転送したところで、バスリセットが発生したとする。この場合には、バスリセット発生時点で処理中であったトランザクションは全てキャンセルされる。従って、バスリセット前に印刷データの転送を要求していたイニシエータは、図10(B)に示すように、バスリセット後に印刷のためのORBを再度作成して、印刷データの転送を最初からやり直すようにターゲットに指示する。このため、図10(B)のC2に示す位置からデータ転送が再開されてしまい、印刷データの一部分だけが二重に送られてしまう。この結果、図10(C)に示すような二重印刷の問題が発生する。
【0083】
このような問題を解決するために、本実施形態では、以下に説明するような手法を採用している。
【0084】
即ち本実施形態では、まず、図11のD1に示すように、データ転送期間中(イニシエータとの間で印刷データの転送が開始してから完了するまでの期間)にバスリセットが発生したか否かを判断する。より具体的には、バスリセットの発生時点において、D2に示すORB(コマンドブロックORB)を処理中であり、且つ、そのORBによるデータ転送が既に行われており、D3に示すデータ転送完了のステータスをイニシエータに転送していない場合に、バスリセットがデータ転送期間中に発生したと判断する。
【0085】
また本実施形態では、図11のD4に示すように、バスリセットの発生後にイニシエータがリコネクトに成功し、新たなORBを作成して転送要求してきた場合に、バスリセット前のORB(第1のコマンドパケット)の内容とバスリセット後のORB(第2のコマンドパケット)の内容を比較する。
【0086】
そして、データ転送期間中にバスリセットが発生したと判断され、且つ、バスリセット前のORBの内容とバスリセット後のORBの内容が同一内容と判断された場合には、D5に示すように、バスリセット発生時点のデータ転送の続きからデータ転送を再開する(図8のステップS7参照)。即ち、バスリセット発生時点で既に転送を完了していたデータの次のデータからデータ転送を再開する。
【0087】
一方、データ転送期間中にバスリセットが発生しなかった場合や、バスリセットの前と後でORBの内容が同一でない場合には、バスリセット後のORBを新規のものとして最初から処理する(図8のステップS8参照)。
【0088】
このようにすることで、図11のD6に示す部分の転送データが、図10(B)の場合と異なり、二重転送されないようになる。従って、図10(C)に示すような誤印刷が生じなくなる。また二重転送を避けることができるため、転送時間も短縮できる。
【0089】
例えば、データ転送期間以外の期間にバスリセットが発生した場合には、D5のようにバスリセット発生時点の続きからデータ転送を再開しなくても、転送データが二重転送されることはないため、問題はない。また、データ転送期間以外の期間にバスリセットが発生した場合には、データ転送の再開処理を行うよりも、ORBを最初から処理した方が、処理も簡素になり、処理負担も軽くなる。
【0090】
また、本実施形態と異なる手法として、ORBの内容の比較処理を行わずに、常に、バスリセット発生時点の続きからデータ転送を再開するという手法も考えられる。
【0091】
しかしながら、この手法によると、例えば、バスリセット後にイニシエータが印刷データの転送処理をキャンセルし、バスリセット前と全く異なるORBを作成した場合にも、図11のD5からデータ転送が再開されてしまうという不具合が生じる。
【0092】
これに対して本実施形態では、ORBの内容がバスリセットの前後で同一の場合には、図11のD5からデータ転送が再開するが、同一でない場合には、全く新規のORBとして処理されるため、上記のような不具合が生じない。
【0093】
なお本実施形態では、ORBの内容比較の際に種々の情報を比較している。例えば図12に示すように、本実施形態では、コマンドブロックORBが含むページテーブル存在フラグPや、データサイズや、コマンドブロック(コマンドセット)フィールドの中のオペレーションコード(印刷コマンド、リードコマンドなどを区別するコード)やデータ長を比較している。またORBが、ORBを識別するための識別情報(例えば順序番号)を含む場合には、この識別情報も比較している。このような情報を比較することで、バスリセット前後のORBが同一か否かを簡素な処理で確実に判断できるようになる。
【0094】
さて本実施形態では、図13のE1に示すように、バスリセットがデータ転送期間中に発生したと判断した場合には、データ転送が継続して再開される可能性があることを示す継続フラグをオンにセットするようにしている。例えば、バスリセットの発生後、リコネクトが成功した時などに、バスリセットがデータ転送期間中に発生したか否かが判断され、発生したと判断された場合に継続フラグがオンにセットされる。
【0095】
そして図13のE2に示すように、ORBの内容比較は、この継続ビットがオンであることを条件に行われる。即ち、継続フラグがオフの場合には、ORBの内容比較は行われない。これにより、無用なORBの内容比較処理が行われることが防止されるようになり、ファームウェアの処理負担を軽減化できる。
【0096】
また本実施形態では、データ転送を再開するアドレス(図11のD5)を特定するための情報や、バスリセット前のORBの内容などを、バスリセット発生時点やリコネクトが成功した時点(広義には、バスリセットの発生後、データ転送が再開されるまでの間)に記憶している。このような情報を記憶しておくことで、バスリセット後にイニシエータからORBが再度転送されてきた時に、バスリセット発生時点の続きからデータ転送を再開するか否かの判断を容易に行えるようになる。またデータ転送の再開処理も簡素化できるようになる。
【0097】
なお、データ転送を再開するアドレスを特定するための情報としては、具体的には次のような情報を考えることができる。
【0098】
例えば図14に示すように、バスリセット発生時点において、ページテーブルのN番目のセグメントSEGNが指定する転送データを転送していたとする。この場合には、データ転送を再開するアドレス(F1に示すアドレス)を特定するための情報としては、ページテーブルの先頭セグメントSEG1に格納されるアドレス(転送データの先頭アドレス)や、セグメントSEG1〜SEG(N−1)により転送されたデータのサイズDS1や、セグメントNのセグメント番号や、バスリセット発生時点までにセグメントNにより転送されたデータのサイズDS2などを考えることができる。
【0099】
また本実施形態では、バスリセット発生後にイニシエータから転送されてきたORBの中で、最初に転送されてきた印刷コマンドを含むORB(コマンドブロックORB)を、バスリセット前のORBの比較対象となるORBとして採用するようにしている。
【0100】
例えば図15に示すように、バスリセット後に、印刷コマンドを含むコマンドブロックORBが直ぐに転送されてくるとは限らない。即ち、イニシエータが、印刷コマンドを含むコマンドブロックORBを転送要求する前に、ダミーORBやマネージメントORBを転送要求してくる場合がある。或いは、プリンタのステータス等を調べるためにリードコマンドを含むコマンドブロックORBを転送要求してくる場合もある。
【0101】
本実施形態では図15のG1に示すように、ダミーORB等が転送されてきても、ORBの内容比較処理を行わず、印刷コマンドを含むコマンドブロックORBが転送されてきた時に初めてORBの内容比較処理を行う。即ち、印刷コマンドを含む最初のコマンドブロックORBが来るまで、ORBの内容比較処理の実行を繰り越す(順送りにする)。これにより、無用なORBの内容比較処理が行われるのが防止され、ファームウェアの処理負担を軽減化できる。
【0102】
さて、バスリセットの発生時期は全くの任意である。従って、例えば図16に示すように、ターゲットがデータ転送完了のステータスをイニシエータに転送したが、バスリセットの発生が要因となってイニシエーターからACK(ACKコンプリート)が返って来ず、ACKミッシングになる場合がある。
【0103】
このような場合には、バスリセットの発生が要因となってイニシエータがステータスを受け取れず、ACKミッシングになったという第1のケースと、イニシエータはステータスを受け取り、ACKを返したが、バスリセットの発生が要因となってACKミッシングになったという第2のケースが考えられる。
【0104】
そして、上記第1のケースでは、イニシエータはデータ転送が不成功であったと考え、バスリセット後に同一のORBを再度作成するという第1の処理を行う。一方、上記第2のケースでは、イニシエータはデータ転送が成功したと考え、バスリセット後に次のORBを作成するという第2の処理を行う。
【0105】
ところが、ターゲットにはACKミッシングであったという情報しか伝わらないため、ターゲットは、イニシエータが上記第1、第2の処理のいずれを行ったのかを知ることができない。従ってこのような場合にバスリセット発生時点の続きからデータ転送を開始してしまうと、誤ったデータ転送が行われてしまう可能性がある。
【0106】
そこで本実施形態では図16に示すように、バスリセットの発生が要因となってイニシエータからアクノリッジメントが返って来なかった場合には、デッド状態(データ転送不可状態)に遷移する。このようにすることで、誤ったデータ転送が行われる事態を防止できる。
【0107】
さて、以上では、ターゲットがプリンタである場合について主に説明したが、ターゲットがスキャナである場合には以下のような問題がある。
【0108】
即ち、スキャナでは、一旦ヘッドが動き出すと、ヘッドを元に戻して再度同じデータを取得(スキャン)することはできないという問題がある。
【0109】
そこで本実施形態では図17に示すように、スキャナエンジン(広義には上層のデバイス)からの転送データの中で、バスリセットの発生時点においてイニシエータに未だ転送していない転送データについては、破棄せずに保持するようにしている。即ち図17のH1に示すように、スキャナエンジンから取り込んでデータバッファに格納したが、IEEE1394のバスを介してイニシエータに未だ転送していないデータについては、データバッファをクリアしないようにして破棄せずに保持しておく。
【0110】
このようにすれば、バスリセット発生後に図11に示す手法でバスリセット発生時点の続きからデータ転送を再開した場合にも、バスリセット発生前に取り込んだ画像データが失われてしまう等の不具合を防止できる。
【0111】
5.詳細な処理例
次に本実施形態の詳細な処理例について図18〜図22のフローチャートを用いて説明する。
【0112】
図18〜図20は、バスリセット発生時(リコネクト時)の処理の詳細例を示すフローチャートである。
【0113】
バスリセットが発生すると、ターゲットは、まず、イニシエータがログインしているか否かを判断し(ステップS20)、ログインしている場合にはIEEE1394のバス上の全ての転送処理(トランザクション)をキャンセルする(ステップS21)。一方、ログインしていない場合には、バスリセットが発生しても特別な処理は不要であるため、何もしない(ステップS22)。
【0114】
次に、既にバスリセット処理に入っているか否かを判断する(ステップS23)。これにより、バスリセットが複数回発生した場合にそれに対応するバスリセット処理が無用に複数回繰り返される事態を防止できる。
【0115】
次に、バスリセット発生時点のACK(アクノリッジメント)の状態を記憶しておく(ステップS24)。これにより、その後に発生するトランザクション(例えばリコネクトのトランザクション)により、バスリセット直後のACKの内容が消されてしまう事態を防止できる。
【0116】
次に、IEEE1394のバス上で転送済みのデータのサイズ(バイト数)を記憶する(ステップS25)。即ち、バスリセット発生時点において処理中であったセグメントでの転送済みのデータのサイズ(図14のDS2)を記憶する。そして、ステップS23の判断のために、バスリセット処理中であることを示すフラグをオンにする(ステップS26)。即ち、このフラグがオンになると、その後に、バスリセットが発生しても、ステップS24〜S26の処理は行われない。
【0117】
次に、イニシエータからのリコネクト待ちになり(ステップS27)、イニシエータによりリコネクトされたか否かを判断する(ステップS28)。そして、リコネクトされなかった場合には、ログインORBのリコネクトフィールドで指定されたリコネクトタイムアウト時間が経過したか否かを判断する(ステップS29)。そして、経過した場合には、図13で説明した継続フラグ(データ転送が継続して再開される可能性があることを示すフラグ)をオフにして(ステップS30)、ログアウト状態に状態遷移する(ステップS31)。
【0118】
一方、リコネクトタイムアウト時間内にリコネクトされた場合には、リコネクトしてきたイニシエータが、バスリセット前にログインしていたイニシエータか否かを判断し(ステップS32)、バスリセット前と異なるイニシエータであった場合には、そのイニシエータのリコネクトを拒否し、リコネクト待ちに戻る。
【0119】
バスリセット前と同じイニシエータがログインしてきた場合には、印刷のためのコマンドブロックORB(印刷コマンドを含むORB)を、バスリセット発生時点において処理中だったか否かを判断する(図19のステップS33)。そして、処理中でなかった場合には、継続フラグをオフにして(ステップS36)、アイドル状態に状態遷移する(ステップS37)。
【0120】
一方、印刷のためのコマンドブロックORBを処理中であった場合には、ステータスのライト中(ステータスをライトしてからACKが返ってくるまでの期間)にバスリセットが発生したか否かを判断する(ステップS34)。そして、ステータスのライト中にバスリセットが発生した場合には、図18のステップS24で記憶したACKの情報に基づいて、ACKコンプリートか否かを判断する(ステップS35)。
【0121】
そして、ACKコンプリートの場合には、継続フラグをオフにして(ステップS36)、アイドル状態に状態遷移する(ステップS37)。一方、ACKコンプリートでない場合には、ACKミッシングか否かを判断する(ステップS38)。そして、ACKミッシングでなければ何もせず(ステップS39)、ACKミッシングの場合には、継続フラグをオフにして(ステップS40)、図16で説明したようにデッド状態(データ転送不可状態)に状態遷移する(ステップS41)。
【0122】
ステップS34でバスリセットの発生がステータスのライト中でないと判断された場合には、処理中のORBの転送(印刷)データを1バイトでも後段のプリンタエンジンに転送したか否かを判断する(ステップS42)。そして、1バイトも転送していなかった場合には継続フラグをオフにし(ステップS43)、アイドル状態に状態遷移する(ステップS49)。
【0123】
一方、1バイトでもプリンタエンジンに転送していた場合には、ORBの内容(データサイズ、ページテーブル存在フラグP、コマンドブロック)や、バスリセット発生時点までに転送できたデータのサイズを記憶する(ステップS44)。
このデータのサイズは、バスリセット発生時点で後段のプリンタエンジンに既に転送したデータのバイト数と、バスリセット発生時点でIEEE1394のバス上でのデータ転送は既に完了し、後段のプリンタエンジンに転送中又はこれから転送する予定のデータのバイト数の合計に相当する。即ち、例えば、プリンタで既に印刷したデータのバイト数と、プリンタで現在印刷中又はこれから印刷予定のデータのバイト数の合計に相当する。
【0124】
次に、ページテーブルが存在するか否かを判断し(ステップS45)、存在しない場合には、ORBのデータスクリプタの内容を記憶する(ステップS46)。即ち、ページテーブルが存在しない場合には、直接アドレス指定の場合の転送データのアドレス及びデータ長が記憶される(図6(C)参照)。
【0125】
一方、ページテーブルが存在する場合には、図14で説明したように、ページテーブルの先頭セグメントの内容(アドレス、データ長)と、バスリセット発生時点で処理中だったセグメントの内容(アドレス、データ長)及びセグメント番号を記憶する(ステップS47)。そして、図13で説明した継続フラグをオンにして(ステップS48)、アイドル状態に状態遷移する(ステップS49)。
【0126】
このように本実施形態では、データ転送期間中にバスリセットが発生したと判断した場合に(図19のステップS33、S34、図20のステップS42)、継続フラグがオンになる(ステップS48)。
【0127】
図21、図22は、通常時の処理の詳細例を示すフローチャートである。
【0128】
まず、イニシエータからORBのリードを指示されたか否か(ドアベルレジスタがリングされたか否か)を判断し(ステップS51)、指示されなかった場合にはアイドル状態にとどまる(ステップS50)。一方、指示された場合には、イニシエータが作成したORBをイニシエータからリードする(ステップS52)。そして、ORBが含むページテーブル存在フラグPに基づいて、ページテーブルが存在するか否かを判断する(ステップS53)。そして、ページテーブルが存在する場合には、ページテーブルのセグメントを例えば8セグメントずつリードする(ステップS54)。
【0129】
次に、ORBのコマンドブロックにあるオペレーションコードに基づいて、図15で説明したように、リードしたORBが印刷のためのコマンドブロックORBか否かを判断する(ステップS55)。そして、印刷のためのコマンドブロックORBであった場合には、ステップS54でリードした8セグメントが、ページテーブルの最初の8セグメント(先頭セグメントを含む8セグメント)か否かを判断し(ステップS56)、最初の8セグメントであった場合には、図22に示すコマンド・アドレス比較処理に移行する(ステップS57)。
【0130】
ステップS55で印刷のためのコマンドブロックORBではないと判断された場合、ステップS56で最初の8セグメントでないと判断された場合、及び、ステップS57のコマンド・アドレス比較処理が終了した場合には、データのリード/ライトを行う(ステップS58)。そして、1セグメント分のデータ、8セグメント分のデータをリード/ライトするまで繰り返す(ステップS59、S60)。
【0131】
次に、ページテーブルの全てのセグメントをリード/ライトしたか否かを判断し(ステップS61)、全てのセグメントをリード/ライトしていない場合には、ページテーブルの次の8セグメントをリードする(ステップS54)。一方、ページテーブルの全てのセグメントをリードした場合には、イニシエータに対してステータスをライトする(ステップS62)。そして、印刷物の印刷のための全てのORBをリードしたか否かを判断し(ステップS63)、次のORBがある場合にはステップS52に戻り、次のORBが無い場合にはアイドル状態に状態遷移する(ステップS50)。
【0132】
ステップS53でページテーブルが存在しないと判断した場合には、リードしたORBが印刷のためのコマンドブロックORBか否かを判断する(ステップS64)。そして、印刷のためのコマンドブロックORBであった場合には、図22に示すコマンド・アドレス比較処理に移行する(ステップS65)。
【0133】
一方、印刷のためのコマンドブロックORBではないと判断された場合、及び、コマンド・アドレス比較処理が終了した場合には、データをリード/ライトし(ステップS66)、全てのデータをリード/ライトするまで繰り返す(ステップS67)。そして、全てのデータをリード/ライトした場合には、ステップS62に移行し、イニシエータに対してステータスをライトする。
【0134】
図22のコマンド・アドレス比較処理においては、まず、継続フラグがオンか否かを判断する(ステップS70)。この継続フラグは、図20のステップS48においてオンにされるフラグである。そして、継続フラグがオフの場合にはステップS76に移行して、転送データの先頭アドレス(ページテーブルの先頭セグメントのアドレス)を記憶し、コマンド・アドレス比較処理を終了する。
【0135】
継続フラグがオンの場合には、図11、図12で説明したように、リードしたORBの内容がバスリセット前のORBの内容と同一か否かを判断する(ステップS71)。この場合に、比較対象となるバスリセット前のORBの内容は、図20のステップS44において記憶されている。また、本実施形態では、アドレス比較(ステップS72)に先立って、ORBの内容比較(ステップS71)を行っている。
【0136】
ORBの内容がバスリセット前と同一であった場合には、転送データの先頭アドレスがバスリセット前と同一か否かを判断する(ステップS72)。そして、同一の場合には、データ転送の設定をバスリセット発生前の状態に戻す(ステップS73)。即ち、図20のステップS44で記憶したバスリセット発生時点までの転送済みデータサイズや、ステップS47で記憶したセグメントの内容やセグメント番号などに基づいて、図11のD5に示す位置(バスリセット発生時点の続き)からデータ転送を再開できるように、データ転送の設定をバスリセット前の状態に戻す。そして、継続フラグをオフに戻す(ステップS74)。この場合に、図17で説明したように、バスリセット前に既に転送を完了していたデータが消失しないように、ターゲットのデータバッファ上のデータをクリアしないようにする。
【0137】
なお、ステップS74の後に、ステップS76のように転送データの先頭アドレスを記憶しておかないのは、バスリセット発生時点の続きからデータ転送を再開する場合には、バスリセット発生前に記憶しておいた先頭アドレスがそのまま使えるからである。
【0138】
ステップS71でORBの内容がバスリセット前と同一でないと判断した場合、或いはステップS72で先頭アドレスがバスリセット前と同一でないと判断した場合には、データ転送の再開処理を行わず、継続フラグをオフに戻すと共に転送データの先頭アドレスを記憶しておく(ステップS75、S76)、即ち、この場合には、リードしたORBを全くの新規のORBとして処理することになる。
【0139】
なお、ステップS75の場合には、リードしたORBを最初から処理することになるため、ステップS74と異なり、ターゲットのデータバッファのデータをクリアする。
【0140】
6.電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
【0141】
例えば図23(A)に電子機器の1つであるプリンタの内部ブロック図を示し、図24(A)にその外観図を示す。CPU(マイクロコンピュータ)510はシステム全体の制御などを行う。操作部511はプリンタをユーザが操作するためのものである。ROM516には、制御プログラム、フォントなどが格納され、RAM518はCPU510のワーク領域として機能する。表示パネル519はプリンタの動作状態をユーザに知らせるためのものである。
【0142】
PHYデバイス502、データ転送制御装置500を介して、パーソナルコンピュータなどの相手ノードから送られてきた印字データは、バス504を介して印字処理部(プリンタエンジン)512に直接送られる。そして、印字データは、印字処理部512にて所与の処理が施され、プリントヘッダなどからなる印字部(データを出力するための装置)514により紙に印字されて出力される。
【0143】
図23(B)に電子機器の1つであるスキャナの内部ブロック図を示し、図24(B)にその外観図を示す。CPU520はシステム全体の制御などを行う。操作部521はスキャナをユーザが操作するためのものである。ROM526には制御プログラムなどが格納され、RAM528はCPU520のワーク領域として機能する。
【0144】
光源、光電変換器などからなる画像読み取り部(データを取り込むための装置)522により原稿の画像が読み取られ、読み取られた画像のデータは画像処理部(スキャナエンジン)524により処理される。そして、処理後の画像データがバス505を介してデータ転送制御装置500に直接送られる。データ転送制御装置500は、この画像データにヘッダなどを付加することでパケットを生成し、PHYデバイス502を介してパーソナルコンピュータなどの相手ノードに送信する。
【0145】
図23(C)に電子機器の1つであるCD−RWドライブの内部ブロック図を示し、図24(C)にその外観図を示す。CPU530はシステム全体の制御などを行う。操作部531はCD−RWをユーザが操作するためのものである。ROM536には制御プログラムなどが格納され、RAM538はCPU530のワーク領域として機能する。
【0146】
レーザ、モータ、光学系などからなる読み取り&書き込み部(データを取り込むための装置又はデータを記憶するための装置)533によりCD−RW532から読み取られたデータは、信号処理部534に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、バス506を介してデータ転送制御装置500に直接送られる。データ転送制御装置500は、このデータにヘッダなどを付加することでパケットを生成し、PHYデバイス502を介してパーソナルコンピュータなどの相手ノードに送信する。
【0147】
一方、PHYデバイス502、データ転送制御装置500を介して、相手ノードから送られてきたデータは、バス506を介して信号処理部534に直接送られる。そして、信号処理部534によりこのデータに所与の信号処理が施され、読み取り&書き込み部533によりCD−RW532に記憶される。
【0148】
なお、図23(A)、(B)、(C)において、CPU510、520、530の他に、データ転送制御装置500でのデータ転送制御のためのCPUを別に設けるようにしてもよい。
【0149】
また、図23(A)、(B)、(C)ではRAM501(データバッファに相当)がデータ転送制御装置500の外部に設けられているが、RAM501をデータ転送制御装置500に内蔵させてもよい。
【0150】
本実施形態のデータ転送制御装置を電子機器に用いれば、バスに新たな電子機器が接続されてバスリセットが発生した場合にも、バスリセットを原因とする不具合の発生が防止される。これにより、電子機器の誤動作を防止できる。
【0151】
また本実施形態のデータ転送制御装置を電子機器に用いれば、高速なデータ転送が可能になる。従って、ユーザがパーソナルコンピュータなどによりプリントアウトの指示を行った場合に、少ないタイムラグで印字が完了するようになる。また、スキャナへの画像取り込みの指示の後に、少ないタイムラグで読み取り画像をユーザは見ることができるようになる。また、CD−RWからのデータの読み取りや、CD−RWへのデータの書き込みを高速に行うことができるようになる。
【0152】
また本実施形態のデータ転送制御装置を電子機器に用いることで、CPU上で動作するファームウェアの処理負担が軽減され、安価なCPUや低速のバスを用いることが可能になる。更に、データ転送制御装置の低コスト化、小規模化を図れるため、電子機器の低コスト化、小規模化も図れるようになる。
【0153】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ(CD−ROM、DVD)、光磁気ディスクドライブ(MO)、ハードディスクドライブ、TV、VTR、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
【0154】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【0155】
例えば、本発明のデータ転送制御装置の構成は、図7に示す構成が特に望ましいが、これに限定されるものではない。
【0156】
また、データ転送期間中にバスリセットが発生したか否かの判断手法、コマンドの比較手法、データ転送の再開の手法も、本実施形態で説明した手法が特に望ましいが、これに限定されるものではない。
【0157】
また、本発明はIEEE1394におけるバスリセットに特に有用だが、これ以外にも、少なくともノードのトポロジー情報をクリアするようなリセットであれば適用できる。
【0158】
また、本発明は、IEEE1394規格でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばIEEE1394と同様の思想に基づく規格やIEEE1394を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図1】IEEE1394の層構造について示す図である。
【図2】SBP−2について説明するための図である。
【図3】SBP−2のデータ転送処理の概略について説明するための図である。
【図4】データをイニシエータからターゲットに転送する場合のコマンド処理について説明するための図である。
【図5】データをターゲットからイニシエータに転送する場合のコマンド処理について説明するための図である。
【図6】図6(A)、(B)、(C)は、ページテーブルについて説明するための図である。
【図7】本実施形態のデータ転送制御装置の構成例を示す図である。
【図8】ターゲット側(ファームウェア)の処理の概要を示すフローチャートである。
【図9】イニシエータ側(デバイスドライバ)の処理の概要を示すフローチャートである。
【図10】図10(A)、(B)、(C)は、二重印刷の問題について説明するための図である。
【図11】データ転送期間中にバスリセットが発生し、且つ、バスリセットの前後でORBの内容が同一の場合に、データ転送を継続して再開する手法について説明するための図である。
【図12】ORBの内容比較について説明するための図である。
【図13】継続フラグについて説明するための図である。
【図14】データ転送を再開するアドレスを特定するための情報について説明するための図である。
【図15】印刷コマンドを含む最初のコマンドブロックORBが来るまで、コマンド比較処理を繰り越す手法について説明するための図である。
【図16】ステータスのライト中にバスリセットが発生し、ACKミッシングとなった場合に、デッド状態に移行する手法について説明するための図である。
【図17】バスリセット時にイニシエータに未だ転送してないデータを破棄せずに保持しておく手法について説明するための図である。
【図18】バスリセット発生時(リコネクト時)の本実施形態の詳細な処理例について示すフローチャートである。
【図19】バスリセット発生時(リコネクト時)の本実施形態の詳細な処理例について示すフローチャートである。
【図20】バスリセット発生時(リコネクト時)の本実施形態の詳細な処理例について示すフローチャートである。
【図21】通常時の本実施形態の詳細な処理例について示すフローチャートである。
【図22】通常時の本実施形態の詳細な処理例について示すフローチャートである。
【図23】図23(A)、(B)、(C)は、種々の電子機器の内部ブロック図の例である。
【図24】図24(A)、(B)、(C)は、種々の電子機器の外観図の例である。
【符号の説明】
10 データ転送制御装置
12 PHYデバイス
14 リンクデバイス
16 CPU
18 データバッファ
20 ファームウェア(F/W)
30 コミュニケーション部(COM)
40 マネージメント部(MNG)
50 プリントタスク部(PRT)
60 フェッチ部(FCH)
62 判断部
64 コマンド記憶部
66 コマンド比較部
68 アドレス記憶部
70 アドレス比較部
72 データ転送再開部
100 パーソナルコンピュータ
102 デバイスドライバ
104 データバッファ
110 情報記憶媒体
Claims (11)
- バスを介して接続される相手ノードと自ノードとの間でのデータ転送のためのデータ転送制御装置であって、
バスを介して接続される相手ノードとの間でデータ転送が開始してから完了するまでの間のデータ転送期間中に、ノードのトポロジ情報をクリアするリセットが発生したか否かを判断する判断手段と、
該リセットの発生前に相手ノードから転送されてきたデータ転送オペレーション要求のための第1のコマンドパケットの内容と、該リセットの発生後に相手ノードから転送されてきたデータ転送オペレーション要求のための第2のコマンドパケットの内容とを比較するコマンド比較手段と、
ノードのトポロジ情報をクリアしデータ転送を中断させるリセットが前記データ転送期間中に発生したと判断され、且つ、前記第1、第2のコマンドパケットが同一内容であると判断された場合には、リセットにより中断したデータ転送を該リセット発生時点のデータ転送の続きから再開する再開手段と、
を含むことを特徴とするデータ転送制御装置。 - 請求項1において、
前記判断手段が、
ノードのトポロジ情報をクリアするリセットの発生時点においてデータ転送オペレーション要求のための前記第1のコマンドパケットを処理中であり、且つ、該第1のコマンドパケットによるデータ転送が既に行われておりデータ転送完了のステータスを相手ノードに転送してない場合に、該リセットが前記データ転送期間中に発生したと判断することを特徴とするデータ転送制御装置。 - 請求項1又は2において、
前記判断手段が、
ノードのトポロジ情報をクリアするリセットがデータ転送期間中に発生したと判断した場合に、データ転送が継続して再開される可能性があることを示す継続フラグをオンにセットすることを特徴とするデータ転送制御装置。 - 請求項1乃至3のいずれかにおいて、
データ転送を再開するアドレスを特定するための情報と、データ転送オペレーション要求のための前記第1のコマンドパケットの内容とを、該リセットの発生後、データ転送が再開されるまでの間に記憶するコマンド記憶手段を含むことを特徴とするデータ転送制御装置。 - 請求項1乃至4のいずれかにおいて、
前記コマンド比較手段が、
ノードのトポロジ情報をクリアするリセットの発生後に相手ノードから転送されてきたコマンドパケットの中で最初に転送されてきたデータ転送オペレーション要求のためのコマンドパケットを、前記第1のコマンドパケットの比較対象となる前記第2のコマンドパケットとして採用することを特徴とするデータ転送制御装置。 - 請求項1乃至5のいずれかにおいて、
データ転送完了のステータスを相手ノードに転送したが、ノードのトポロジ情報をクリアするリセットの発生が要因となって相手ノードからアクノリッジメントが返って来なかった場合に、データ転送不可状態に状態遷移することを特徴とするデータ転送制御装置。 - 請求項1乃至6のいずれかにおいて、
上層のデバイスから転送されてきた転送データの中で、ノードのトポロジ情報をクリアするリセットの発生時点において相手ノードへ未だ転送していない転送データについては、破棄せずに保持しておくことを特徴とするデータ転送制御装置。 - 請求項1乃至7のいずれかにおいて、
前記リセットが、IEEE1394の規格において定義されるバスリセットであることを特徴とするデータ転送制御装置。 - 請求項1乃至8のいずれかのデータ転送制御装置との間でのデータ転送を制御するためのプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体であって、
ノードのトポロジ情報をクリアするリセットがデータ転送期間中に発生した場合には、該リセットの発生前に転送されたデータ転送オペレーション要求のための第1のコマンドパケットと同一内容の第2のコマンドパケットを作成し、データ転送制御装置に転送要求する手段としてコンピュータを機能させるためのプログラムを含むことを特徴とする情報記憶媒体。 - 請求項1乃至8のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びバスを介して相手ノードから受信したデータに所与の処理を施す装置と、
処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする電子機器。 - 請求項1乃至8のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びバスを介して相手ノードに転送するデータに所与の処理を施す装置と、
処理が施されるデータを取り込むための装置とを含むことを特徴とする電子機器。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP36110399A JP3598923B2 (ja) | 1999-12-20 | 1999-12-20 | データ転送制御装置、情報記憶媒体及び電子機器 |
TW089127261A TW508497B (en) | 1999-12-20 | 2000-12-19 | Data transmission controller, information memory medium and electronic machine |
CNB00806587XA CN1179521C (zh) | 1999-12-20 | 2000-12-19 | 数据传输控制装置和电子仪器 |
PCT/JP2000/008981 WO2001047195A1 (en) | 1999-12-20 | 2000-12-19 | Data transfer controller, information storage medium, and electronic apparatus |
KR10-2001-7010461A KR100431009B1 (ko) | 1999-12-20 | 2000-12-19 | 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기 |
US09/737,760 US6904022B2 (en) | 1999-12-20 | 2001-03-23 | Data transfer control device, information storage medium and electronic equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP36110399A JP3598923B2 (ja) | 1999-12-20 | 1999-12-20 | データ転送制御装置、情報記憶媒体及び電子機器 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2001177537A JP2001177537A (ja) | 2001-06-29 |
JP3598923B2 true JP3598923B2 (ja) | 2004-12-08 |
JP2001177537A5 JP2001177537A5 (ja) | 2005-03-03 |
Family
ID=18472218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP36110399A Expired - Fee Related JP3598923B2 (ja) | 1999-12-20 | 1999-12-20 | データ転送制御装置、情報記憶媒体及び電子機器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6904022B2 (ja) |
JP (1) | JP3598923B2 (ja) |
KR (1) | KR100431009B1 (ja) |
CN (1) | CN1179521C (ja) |
TW (1) | TW508497B (ja) |
WO (1) | WO2001047195A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001345827A (ja) * | 2000-06-02 | 2001-12-14 | Minolta Co Ltd | インターフェース装置、これを有するノード、インターフェースシステム、バスリセットの制御方法およびバスリセットの制御プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2002318777A (ja) * | 2001-04-19 | 2002-10-31 | Matsushita Electric Ind Co Ltd | 高速シリアルインターフェース用のコマンド発行装置 |
JP2004070570A (ja) * | 2002-08-05 | 2004-03-04 | Seiko Epson Corp | データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 |
KR100964657B1 (ko) * | 2002-12-07 | 2010-06-21 | 엘지전자 주식회사 | 홈 네트워크 시스템의 데이터 다운로드 방법 |
JP3599053B2 (ja) | 2003-02-25 | 2004-12-08 | セイコーエプソン株式会社 | データ転送制御システム、電子機器、及びデータ転送制御方法 |
JP3649226B2 (ja) * | 2003-05-20 | 2005-05-18 | セイコーエプソン株式会社 | データ転送制御装置、電子機器及びデータ転送制御方法 |
KR100758870B1 (ko) * | 2003-09-25 | 2007-09-14 | 도오꾜오까고오교 가부시끼가이샤 | 저가속 전자선용 포지티브형 레지스트 조성물, 레지스트적층체 및 패턴 형성 방법 |
JP2005115545A (ja) | 2003-10-06 | 2005-04-28 | Seiko Epson Corp | データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 |
CN1304974C (zh) * | 2004-02-10 | 2007-03-14 | 中国科学院计算技术研究所 | 基于互联网接口的智能磁盘设备新型控制方法 |
CN102216993A (zh) * | 2008-09-09 | 2011-10-12 | 维尔基逻辑公司 | 存储器控制器 |
CN103513733B (zh) * | 2013-10-12 | 2018-05-29 | 丁贤根 | 一种用于pcie电源可靠复位的方法 |
CN111464419B (zh) * | 2020-04-13 | 2021-08-27 | 中国人民解放军国防科技大学 | 一种基于总线网络通信的数据传输控制方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0859324B1 (en) | 1997-02-14 | 2007-01-03 | Canon Kabushiki Kaisha | Data transmission apparatus, system and method, and image processing apparatus |
JPH10322373A (ja) * | 1997-05-16 | 1998-12-04 | Canon Inc | データ転送装置、データ転送システムおよびその方法、画像処理装置、並びに、記録媒体 |
JPH10257080A (ja) * | 1997-03-10 | 1998-09-25 | Pioneer Electron Corp | データ転送方法及び装置 |
US6160796A (en) * | 1998-01-06 | 2000-12-12 | Sony Corporation Of Japan | Method and system for updating device identification and status information after a local bus reset within a home audio/video network |
JPH11194902A (ja) * | 1998-01-07 | 1999-07-21 | Canon Inc | 画像処理装置およびその方法 |
JP3277874B2 (ja) * | 1998-01-29 | 2002-04-22 | 日本電気株式会社 | Ieee1394ブリッジ |
JP3814407B2 (ja) | 1998-03-02 | 2006-08-30 | キヤノン株式会社 | データ通信システム、データ通信装置及びデータ通信方法 |
JPH11261608A (ja) | 1998-03-09 | 1999-09-24 | Canon Inc | データ通信システム、データ通信装置、データ通信方法及び記憶媒体 |
JP4428750B2 (ja) | 1998-03-12 | 2010-03-10 | キヤノン株式会社 | データ通信システム |
JP2001086132A (ja) | 1999-09-14 | 2001-03-30 | Canon Inc | 通信システム、印刷システム、及び通信方法、印刷制御方法 |
-
1999
- 1999-12-20 JP JP36110399A patent/JP3598923B2/ja not_active Expired - Fee Related
-
2000
- 2000-12-19 CN CNB00806587XA patent/CN1179521C/zh not_active Expired - Fee Related
- 2000-12-19 WO PCT/JP2000/008981 patent/WO2001047195A1/ja active Application Filing
- 2000-12-19 KR KR10-2001-7010461A patent/KR100431009B1/ko not_active IP Right Cessation
- 2000-12-19 TW TW089127261A patent/TW508497B/zh not_active IP Right Cessation
-
2001
- 2001-03-23 US US09/737,760 patent/US6904022B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20010042141A1 (en) | 2001-11-15 |
JP2001177537A (ja) | 2001-06-29 |
KR100431009B1 (ko) | 2004-05-12 |
US6904022B2 (en) | 2005-06-07 |
KR20010102221A (ko) | 2001-11-15 |
TW508497B (en) | 2002-11-01 |
CN1348648A (zh) | 2002-05-08 |
WO2001047195A1 (en) | 2001-06-28 |
CN1179521C (zh) | 2004-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3843667B2 (ja) | データ転送制御装置及び電子機器 | |
JP3598923B2 (ja) | データ転送制御装置、情報記憶媒体及び電子機器 | |
JP3780776B2 (ja) | データ転送制御装置及び電子機器 | |
US6937355B1 (en) | Data communications apparatus for resuming data transfer after interruption | |
JP4627456B2 (ja) | 通信システム、サイクルマスタノード及び通信方法 | |
JP3598922B2 (ja) | データ転送制御装置、情報記憶媒体及び電子機器 | |
EP1120936B1 (en) | Data transfer control device and electronic apparatus | |
JP2000134231A (ja) | データ転送制御装置及び電子機器 | |
EP1351459B1 (en) | Data transfer control device and electronic equipment | |
JP3598924B2 (ja) | データ転送制御装置、情報記憶媒体及び電子機器 | |
US20060017811A1 (en) | Communication system, electronic apparatus, control apparatus, and computer-readable storage medium | |
JP4040654B2 (ja) | 通信制御回路および通信制御方法 | |
JP3599053B2 (ja) | データ転送制御システム、電子機器、及びデータ転送制御方法 | |
JP3624767B2 (ja) | データ転送制御装置、情報記憶媒体及び電子機器 | |
JP4428750B2 (ja) | データ通信システム | |
JP3606145B2 (ja) | データ転送制御装置及び電子機器 | |
JP2000134232A (ja) | データ転送制御装置及び電子機器 | |
US8171185B2 (en) | Electronic device and communication method | |
JP2003309618A (ja) | 通信装置及び通信方法 | |
JP4065466B2 (ja) | データ通信システム | |
JP2000032010A (ja) | デ―タ通信システム、デ―タ通信方法、デ―タ通信装置、デジタルインタフェ―ス及び記憶媒体 | |
JPH11177589A (ja) | データ転送装置およびデータ転送装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体 | |
JP2003037596A (ja) | 通信装置及び通信方法 | |
JP2004173304A (ja) | データ転送制御装置及び電子機器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040331 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040331 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20040331 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20040421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040601 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040802 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040824 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040906 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080924 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080924 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090924 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090924 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100924 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |