JP4412191B2 - データ転送制御装置及び電子機器 - Google Patents

データ転送制御装置及び電子機器 Download PDF

Info

Publication number
JP4412191B2
JP4412191B2 JP2005029225A JP2005029225A JP4412191B2 JP 4412191 B2 JP4412191 B2 JP 4412191B2 JP 2005029225 A JP2005029225 A JP 2005029225A JP 2005029225 A JP2005029225 A JP 2005029225A JP 4412191 B2 JP4412191 B2 JP 4412191B2
Authority
JP
Japan
Prior art keywords
data
transfer
transport
bulk
transaction
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
Application number
JP2005029225A
Other languages
English (en)
Other versions
JP2006215891A (ja
Inventor
謙陽 長尾
俊 大下
周一 柳原
裕司 三上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2005029225A priority Critical patent/JP4412191B2/ja
Priority to US11/338,733 priority patent/US7590765B2/en
Publication of JP2006215891A publication Critical patent/JP2006215891A/ja
Application granted granted Critical
Publication of JP4412191B2 publication Critical patent/JP4412191B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/426Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、データ転送制御装置及び電子機器に関する。
USB(Universal serial Bus)のデバイスは種々のクラスに分類される。そしてハードディスクドライブ(HDD)や光ディスクドライブ(DVD)などの大容量記憶装置はマスストレージと呼ばれるクラスに属し、このマスストレージクラスには、バルクオンリートランスポートと呼ばれるプロトコルが規格化されている。特開2002−344537号公報には、このバルクオンリートランスポートのデータ転送制御を効率化する従来技術が開示されている。
しかしながら、上記従来技術は、USBのデバイス側のデータ転送制御の効率化を図るものであり、ホスト側のデータ転送制御の効率化手法については開示されていない。
また、近年、携帯電話機や携帯型オーディオ機器などのペリフェラル機器に対して、ホスト機能を持たせる事への要望が強くなっている。従って、ホスト側のバルクオンリートランスポートのデータ転送制御についても、如何にして効率化するかが課題となる。
特開2002−344537号公報
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、効率的なデータ転送制御を実現できるデータ転送制御装置及び電子機器を提供することにある。
本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、コマンドブロック領域とデータ領域とステータスブロック領域とが確保されるデータバッファのアクセス制御を行うバッファコントローラと、データ転送制御を行う転送コントローラとを含み、前記転送コントローラは、自動バルク転送の実行が指示された場合に、コマンドトランスポートのバルクOUT転送のトランザクションを実行して、前記コマンドブロック領域に書き込まれたコマンドブロックデータを含むパケットを自動送信し、次に、データトランスポートのバルクOUT転送又はバルクIN転送のトランザクションを実行して、前記データ領域に書き込まれた送信データを含むパケットの自動送信又は前記データ領域に書き込むべき受信データを含むパケットの自動受信を行い、次に、ステータストランスポートのバルクIN転送のトランザクションを実行して、前記ステータスブロック領域に書き込むべきステータスブロックデータを含むパケットの自動受信を行うデータ転送制御装置に関係する。
本発明によれば処理部(ファームウェア)等により自動バルク転送の実行が指示されると、コマンドトランスポート、データトランスポート(データトランスポート有りの場合)、ステータストランスポートのトランザクションが自動的に実行されて、各トランスポートのトランザクションに必要なパケットの自動送信又は自動受信(ファームウェアの介在無しの送信又は受信)が行われる。このように本発明では、自動バルク転送の実行の指示等を行うだけで、コマンドトランスポートの開始からステータストランスポートの完了までの一連の処理が転送コントローラにより自動的に行われる。従ってトランスポート単位で処理部が実行の開始指示等を行う手法に比べて、処理部等の処理負荷を軽減できる。
また本発明では、前記転送コントローラは、前記コマンドブロック領域に書き込まれた前記コマンドブロックデータに基づいて、前記データトランスポートのトランザクションを制御するようにしてもよい。
このようにすれば、データトランスポートについての個別的な設定を行わなくても、コマンドブロックデータに基づいてデータトランスポートのトランザクションを制御できるようになるため、処理部等の処理負荷を更に軽減できる。
また本発明では、前記転送コントローラは、前記コマンドブロックデータのデータ転送長が0に設定されていた場合には、前記データトランスポートのトランザクションの実行を省略して、前記ステータストランスポートのトランザクションを実行するようにしてもよい。
このようにすれば、データトランスポートの有無を簡素な処理で判断できるようになる。
また本発明では、前記転送コントローラは、前記コマンドブロックデータに基づいて、前記データトランスポートにおいてバルクOUT転送のトランザクションとバルクIN転送のトランザクションのいずれを実行するかを決定するようにしてもよい。
このようにすればデータトランスポートでのトランザクション制御を簡素化できる。
また本発明では、前記データバッファに確保されるチャネル領域のチャネル情報が設定されるチャネル情報レジスタを含み、前記チャネル情報レジスタには、マックスパケットサイズとデバイスのファンクションアドレスとが前記チャネル情報として設定され、前記データバッファには、前記データ領域が前記チャネル領域として確保され、前記転送コントローラは、前記チャネル情報レジスタに設定されるチャネル情報に基づいて、前記自動バルク転送を実行するようにしてもよい。
このようにすれば、例えばバルクOUT転送とバルクIN転送とでチャネル情報を共用化することが可能になり、処理の効率化や装置の小規模化を図れる。
また本発明では、バルクOUT転送のエンドポイントを指定するOUTエンドポイント番号と、バルクIN転送のエンドポイントを指定するINエンドポイント番号とが、自動バルク転送情報として設定される自動バルク転送情報レジスタを含み、前記転送コントローラは、前記データトランスポートにおいてバルクOUT転送のトランザクションを実行する場合には、前記OUTエンドポイント番号で指定されるエンドポイントに対して、前記送信データを含むパケットを自動送信し、前記データトランスポートにおいてバルクIN転送のトランザクションを実行する場合には、前記INエンドポイント番号で指定されるエンドポイントから、前記受信データを含むパケットを自動受信するようにしてもよい。
このようにすればデータトランスポートでのトランザクション制御を簡素化できる。
また本発明では、前記ステータストランスポートにおいて受信されたステータスブロックデータを解析し、前記ステータスブロックデータのエラーを検出する解析回路を含むようにしてもよい。
このようにすれば、処理部等によるステータスブロックデータの解析、エラー検出の処理負荷を軽減できる。
また本発明では、前記解析回路は、前記ステータスブロックデータの複数のフィールドのうちのいずれかのフィールドにエラーが検出された場合に、前記ステータスブロックデータのエラーを処理部に通知するようにしてもよい。
このようにすれば、簡素で小規模な構成の解析回路でステータスブロックデータのエラー検出処理を実現できるようになる。
また本発明では、前記ステータスブロックデータのエラーが通知された場合に、前記ステータスブロック領域に書き込まれた前記ステータスブロックデータを解析する前記処理部を含むようにしてもよい。
このようにすれば、ステータスブロックデータの解析、エラー検出の処理を、転送コントローラと処理部とで効率良く分担できるようになる。
また本発明では、前記転送コントローラは、コマンドトランスポート、データトランスポート、ステータストランスポートの各トランスポートにおいてトランザクションエラーを検出した場合には、前記自動バルク転送の実行を停止し、エラーが発生したトランスポートを処理部に通知するようにしてもよい。
このようにすれば、各トランスポートで発生するトランザクションエラーに対して、適正に対応できるようになる。
また本発明では、前記コマンドブロック領域として第1、第2のコマンドブロック領域が前記データバッファに確保され、前記転送コントローラは、前記第1、第2のコマンドブロック領域のいずれか一方のコマンドブロック領域に対して処理部がコマンドブロックデータを書き込んでいる際に、他方のコマンドブロック領域に書き込まれたコマンドブロックデータに基づいて、前記自動バルク転送を実行するようにしてもよい。
このようにすれば、データ転送の効率化や処理部等の処理負荷の軽減化を図れる。
また本発明では、前記転送コントローラは、自動バルク転送の実行が指示された場合に、コマンドトランスポートのバルクOUT転送のトランザクションの開始を指示する回路と、開始したコマンドトランスポートのバルクOUT転送のトランザクションが完了した場合に、データトランスポートの転送方向とデータトランスポートの有無の情報に基づいて、データトランスポートのバルクOUT転送のトランザクションの実行、データトランスポートのバルクIN転送のトランザクションの実行、或いはデータトランスポート無しのいずれかを選択する回路と、データトランスポートのバルクOUT転送のトランザクションの実行が選択された場合には、データトランスポートのバルクOUT転送のトランザクションの開始を指示し、データトランスポートのバルクIN転送のトランザクションの実行が選択された場合には、データトランスポートのバルクIN転送のトランザクションの開始を指示する回路と、開始したデータトランスポートのバルクOUT転送のトランザクション又はバルクIN転送のトランザクションが完了した場合には、コマンドトランスポートのバルクIN転送のトランザクションの開始を指示する回路とを含むようにしてもよい。
また本発明では、前記バスはUSB(Universal serial Bus)であり、前記コマンドトランスポート、データトランスポート、ステータストランスポートは、マスストレージクラスのバルクオンリートランスポート規格のトランスポートであってもよい。
また本発明は、上記のいずれかに記載のデータ転送制御装置と、前記データ転送制御装置により転送されるデータを記憶するストレージとを含む電子機器に関係する。
以下、本発明の実施形態について詳細に説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
1.USB
まずUSBのデータ転送について説明する。USBでは、図1(A)に示すようなエンドポイント(EP0〜15)がデバイス(USBデバイス)側に用意される。ホストは、デバイスのファンクションアドレスとエンドポイント番号を指定することで、所望のエンドポイントへのデータ送信や、所望のエンドポイントからのデータ受信を自由に行うことができる。
USBでは、転送(transfer)のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送などが定義されている。コントロール転送は、ホストとデバイス(ターゲット)との間でエンドポイント0を介して行われる制御用の転送モードである。アイソクロナス転送は、画像や音声のデータを定期的に転送するために用意された転送モードである。インタラプト転送は、比較的低い転送速度で少量のデータを定期的に転送するために用意された転送モードである。バルク転送は、不定期に発生する大量のデータを転送するために用意された転送モードである。
これらの各転送(transfer)は一連のトランザクションにより構成される。そしてトランザクションは図1(B)に示すように、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
OUTトランザクション(ホストがデバイスにデータを出力するトランザクション)では、図1(C)に示すように、まず、ホストがデバイスに対してOUTトークン(トークンパケット)を発行する。次に、ホストはデバイスに対してOUTデータ(データパケット)を送信する。そして、デバイスは、OUTデータの受信に成功すれば、ホストに対してACK(ハンドシェークパケット)を送信する。このようにすることで、ホストがデバイスにデータを出力する処理が実現される。
一方、INトランザクション(ホストがデバイスからデータを入力するトランザクション)では、図1(D)に示すように、まず、ホストがデバイスに対してINトークンを発行する。そしてINトークンを受信したデバイスは、ホストに対してINデータを送信する。そしてホストは、INデータの受信に成功すると、デバイスに対してACKを送信する。このようにすることで、ホストがデバイスからデータを入力する処理が実現される。
なお図1(C)、(D)において、”D←H”は、ホストからデバイスに対して情報が転送されることを意味し、”D→H”は、デバイスからホストに対して情報が転送されることを意味する。
2.バルクオンリートランスポート
次に、USBのバルクオンリートランスポートのプロトコルについて説明する。ハードディスクドライブや光ディスクドライブなどの大容量記憶装置は、マスストレージと呼ばれるクラスに属する。このマスストレージクラスには、バルクオンリートランスポートというプロトコルが規格化されている。
バルクオンリートランスポートでは、バルクIN、バルクOUTの2つのエンドポイントを用いてパケット転送が行われる。即ち、コマンドには、CBW(Command Block Wrapper)と呼ばれる31バイトのデータが使用され、バルクOUTのエンドポイントを用いて転送される。データ転送には、転送方向に応じてバルクIN、バルクOUTのエンドポイントが使用される。コマンドに対するステータスには、CSW(Command Status Wrapper)と呼ばれる13バイトのデータが使用され、バルクINのエンドポイントを用いて転送される。具体的には図2(A)に示すように、デバイス(USBデバイス)は、コントロール、バルクOUT、バルクINのエンドポイントEP0、1、2を用意する。エンドポイントEP0ではコントロール転送が行われる。エンドポイントEP1では、コマンドトランスポートのCBWデータ(広義にはコマンドブロックデータ)と、データトランスポートのバルクOUTデータの転送が行われる。エンドポイントEP2では、ステータストランスポートのCSWデータ(広義にはステータスブロックデータ)と、データトランスポートのバルクINデータの転送が行われる。
図2(B)にCBWのフォーマットを示す。ホストは、コマンドトランスポートのCBWを用いてホストの意図(読み込み要求、書き込み要求など)をデバイスに伝える。CBWはバルクOUTのエンドポイントを使用して転送される31バイトのデータである。
図2(B)において、dCBWSignatureはCBWであることを示す識別子である。dCBWTagはCBWのタグとして使用される。このタグはCBWとCSWを結びつけるために使用される。dCBWDataTransferLengthは、CBWの後に続くデータの転送長を示す。転送すべきデータが無い場合には、dCBWDataTransferLengthは0x00000000の値に設定される。bmCBWFlagsはデータの転送方向を示す。bmCBWFlagsではビット7のみが使用され、ビット7が0ならば転送方向はOUT方向になり、ビット7が1ならばIN方向になる。dCBWLUNには、CBWの送り先を示すデバイスの論理ユニット番号が設定される。bCBWCBLengthは、CBWCBのフィールドに格納する有効なコマンドパケット長を示す。CBWCBには、ストレージデバイスを制御する時に使用するコマンドが設定される。
図2(C)にCSWのフォーマットを示す。デバイスは、ステータストランスポートのCSWを用いてコマンドトランスポートに対する結果(ステータス)をホストに返す。CSWはバルクINのエンドポイントを使用して転送される13バイトのデータである。
図2(C)において、dCSWSignatureはCSWであることを示す識別子である。dCSWTagはCSWのタグとして使用される。具体的にはdCSWTagにはCBWのdCBWTagと同じ値が設定される。dCSWDataResidueは、CBWのdCBWDataTransferLengthで指定されたデータ転送長(転送数)と、実際にデバイスが転送した有効なデータ長との差分が設定される。bCSWStatusには、コマンドトランスポートに対する処理結果を示す値が設定される。正常終了時にはbCSWStatusに0x00の値が設定され、エラー終了時には0x01の値が設定される。またデータ転送長が合わなかったり、転送方向が違っているなどのエラー(フェーズエラー)の場合には、0x02の値が設定される。
次に、バルクオンリートランスポートの送受信処理について、図3(A)、(B)を用いて説明する。図3(A)に示すように、ホストがデバイスにデータを送信(出力)する場合には、まずホストがCBWをデバイスに送信するコマンドトランスポートが行われる。具体的には、ホストが、エンドポイントEP1を指定するトークンパケットをデバイスに送信し、次に、CBWをデバイスのエンドポイントEP1に送信する。このCBWはライトコマンドを含む。そして、デバイスからホストにACKのハンドシェークパケットが返却されると、コマンドトランスポートが終了する。
コマンドトランスポートが終了するとデータトランスポートに移行する。このデータトランスポートでは、まずホストが、エンドポイントEP1を指定するトークンパケットをデバイスに送信し、次に、OUTデータをデバイスのエンドポイントEP1に送信する。そして、デバイスからホストにACKのハンドシェークパケットが返却されると、1つのトランザクションが終了する。そして、このようなトランザクションが繰り返され、CBWのdCBWDataTransferLength(図2(B)参照)で指定されるデータ長の分だけデータが送信されると、データトランスポートが終了する。
データトランスポートが終了するとステータストランスポートに移行する。このステータストランスポートでは、まず、ホストが、エンドポイントEP2を指定するトークンパケットをデバイスに送信する。すると、デバイスが、エンドポイントEP2にあるCSWをホストに送信する。そして、ホストからデバイスにACKのハンドシェークパケットが返却されると、ステータストランスポートが終了する。
一方、図3(B)に示すように、ホストがデバイスからデータを受信(入力)する場合は、まずホストがエンドポイントEP1を指定するトークンパケットをデバイスに送信し、次に、CBWをデバイスのエンドポイントEP1に送信する。このCBWはリードコマンドを含む。そして、デバイスからホストにACKのハンドシェークパケットが返却されると、コマンドトランスポートが終了する。
コマンドトランスポートが終了するとデータトランスポートに移行する。このデータトランスポートでは、まず、ホストが、エンドポイントEP2を指定するトークンパケットをデバイスに送信する。そしてホストは、デバイスのエンドポイントEP2にあるINデータを受信し、ホストがデバイスにACKのハンドシェークパケットを返却すると、1つのトランザクションが終了する。そして、このようなトランザクションが繰り返され、CBWのdCBWDataTransferLengthで指定されるデータ長の分だけデータが受信されると、データトランスポートが終了する。
データトランスポートが終了するとステータストランスポートに移行する。このステータストランスポートの処理は図3(A)のデータの送信処理の場合と同様である。
以上のようにバルクオンリートランスポートは、コマンド、データ、ステータスという複数のトランスポートにより構成されている。従って、CPU上で動作するファームウェアは、各トランスポート毎に情報設定や実行指示を行う必要があり、ファームウェアの処理負荷が増加する。特に、携帯電話や携帯型オーディオ機器(HDDプレーヤ)などに組み込まれるCPUは、PC(パーソナルコンピュータ)に組み込まれるCPUに比べて処理能力が一般的に低い。従って、バルクオンリートランスポートに対するファームウェアの処理負荷が増加すると、データ転送の高速化の妨げとなり、機器全体のパフォーマンスの低下を招く。
3.データ転送制御装置の構成
図4に、以上のような課題を解決できる本実施形態のデータ転送制御装置の構成例を示す。このデータ転送制御装置120は、トランシーバ10、転送コントローラ40、レジスタ部80、バッファコントローラ90、データバッファ100、ストレージI/F(インターフェース)コントローラ110、CPUI/Fコントローラ112、DMA(Direct Memory Access)コントローラ114を含む。なお本実施形態のデータ転送制御装置120は、これらの一部を省略する構成としてもよく、例えばトランシーバ10やデータバッファ100などを含まない構成としてもよい。或いはCPU140を含む構成としてもよい。
トランシーバ10(デュアルトランシーバ)は、差動信号(DP、DM)を用いてUSB(広義にはバス或いはシリアルバス)のデータを送受信するための回路であり、ホストトランシーバ20、デバイストランシーバ30を含む。
ホストトランシーバ20は、アナログフロントエンド回路(物理層回路)及び高速ロジック回路を有し、USBのHSモード(480Mbps)、FSモード(12Mbps)、LSモード(1.5Mbps)をサポートする。
デバイストランシーバ30は、アナログフロントエンド回路(物理層回路)及び高速ロジック回路を有し、USBのHSモード、FSモードをサポートする。このデバイストランシーバ30としてはUTMI(USB2.0 Transceiver Macrocell Interface)仕様に準拠した回路を用いることができる。
転送コントローラ40は、USBを介したデータ転送を制御するためのコントローラであり、トランザクション層やリンク層などのデータ転送制御を行う。この転送コントローラ40は、ホストコントローラ50、デバイスコントローラ60、ポートセレクタ70を含む。なおこれらの一部を省略する構成としてもよい。
ホストコントローラ50(ホストSerial Interface Engine)は、ホストモード時のデータ転送を制御する。具体的にはホストコントローラ50は、トランザクションのスケジューリング(発行)やトランザクションの管理やパケットの生成&解析などを行う。またサスペンド、レジューム、リセット等のバスイベントを生成する。更にバスの接続・切断状態の検出やVBUSの制御などを行う。
ホストコントローラ50(広義には転送コントローラ)は解析回路52を含む。この解析回路52(CBW解析回路、CSW解析回路)は、CBW領域(コマンドブロック領域)に書き込まれたCBWデータ(コマンドブロックデータ)を解析する。このCBWデータの解析結果に基づいて、データトランスポートのトランザクションが制御される。また解析回路52は、ステータストランスポートにおいて受信されたCSWデータ(ステータスブロックデータ)を解析し、CSWデータのエラーを検出する。具体的には解析回路52は、CSWデータの複数のフィールド(図2(C)のdCSWSignature、dCSWTag、bCSWStatus)のいずれかのフィールドにエラーが検出された場合に、CSWデータのエラーをCPU140(ファームウェア)に割り込み等で通知する。するとCPU140は、CSW領域に書き込まれたCSWデータを更に詳細に解析する。
デバイスコントローラ60(デバイスSerial Interface Engine)は、デバイスモード時のデータ転送を制御する。具体的にはデバイスコントローラ60は、トランザクションの管理やパケットの生成&解析などを行う。またサスペンド、レジューム、リセット等のバスイベントを制御する。
ポートセレクタ70は、ホストモードとデバイスモードのいずれかを選択して有効にするためのセレクタである。即ち図4のデータ転送制御装置120は、アップストリームポートUPPT(広義には第1のポート)とダウンストリームポートDWPT(広義には第2のポート)の両方を備えている。そしてレジスタ等の設定によりホストモードが選択されると、ポートセレクタ70はホストコントローラ50、ホストトランシーバ20を選択(イネーブル)する。そしてホストコントローラ50、ホストトランシーバ20により、ダウンストリームポートDWPTに接続されたデバイス(他の電子機器)との間でのデータの送受信が実現される。
一方、レジスタ等の設定によりデバイスモードが選択されると、ポートセレクタ70はデバイスコントローラ60、デバイストランシーバ30を選択(イネーブル)する。そしてデバイスコントローラ60、デバイストランシーバ30により、アップストリームポートUPPTに接続されたホスト(他の電子機器)との間でのデータの送受信が実現される。
レジスタ部80は、チャネル情報レジスタ82、バルクオンリーサポート情報レジスタ84、ステータスレジスタ86を含む。これらのレジスタはRAMなどのメモリにより構成してもよいし、フリップフロップなどにより構成してもよい。
チャネル情報レジスタ82には、データバッファ100に確保されるチャネル領域(複数のチャネル領域)のチャネル情報(各チャネル情報)が設定される。このチャネル情報(転送設定情報)としては、マックスパケットサイズや、USBに接続されるデバイスのファンクションアドレス(USBアドレス)や、転送速度や、トグルシーケンスビットや、データバッファ100での各チャネル領域のスタートドレス、エンドアドレスなどがある。
バルクオンリーサポート情報レジスタ84には、バルクオンリーサポート転送のために必要なバルクオンリーサポート情報(広義には自動バルク転送情報)が設定される。このバルクオンリーサポート情報としては、バルクOUT転送のエンドポイントを指定するOUTエンドポイント番号や、バルクIN転送のエンドポイントを指定するINエンドポイント番号や、OUTエンドポイントトグルシーケンスや、INエンドポイントトグルシーケンスなどがある。
ステータスレジスタ86には、データ転送制御装置120やデータ転送の各種ステータス情報が表示(indicate)される。このステータス情報としては、バルクオンリーサポート完了の割り込みステータス(割り込み要因)や、バルクオンリーサポート停止の割り込みステータスや、エラーが発生したトランスポートを示す情報や、コンディションコードや、チェンジコンディションの割り込みステータスなどがある。
バッファコントローラ90は、データバッファ100への領域(チャネル領域、エンドポイント領域等)の確保(allocate)処理や、データバッファ100へのアクセス制御(ライト、リード制御)を行う。具体的には、データバッファ100に、CBW領域(コマンドブロック領域)やチャネル領域(データ領域)やCSW領域(ステータスブロック領域)を確保するための処理(スタートアドレス、エンドアドレスの設定等)を行う。またデータバッファ100に確保される各領域のポインタ制御、FIFO制御などを行う。
データバッファ100(FIFO、パケットバッファ)は、USB(シリアルバス)を介して転送されるデータ(送信データ、受信データ)を一時的に格納(バッファリング)するためのバッファである。このデータバッファ100は、RAMなどのメモリにより実現できる。
ストレージI/Fコントローラ110は、HDDなどのマスストレージクラスのストレージ130とのI/F(インターフェース)制御を行う。具体的にはIDE(ATA/ATAPI)のI/F制御を行う。またCPUI/Fコントローラ112は、CPU140(広義には処理部)とのI/F制御を行う。これによりCPU140によるレジスタアクセスなどが可能になる。DMAコントローラ114は、CPUI/FでのDMA制御を行う。これによりCPU140によるデータバッファ100へのアクセスが可能になる。
4.チャネル
図5、図6にデータバッファ100に確保される領域(area)の例を示す。図5に示すようにホストモード時には、SETUP、CBW0(第1のコマンドブロック)、CBW1(第2のコマンドブロック)、CSW(ステータスブロック)、CH0〜CHh(チャネル)の領域がデータバッファ100に確保される。ここでSETUP、CBW0、CBW1、CSWは固定サイズの領域である。またCH0〜CHhは、スタートアドレスとエンドアドレスによりその領域サイズが可変に設定され、FIFOとして制御される領域である。そしてCH0はコントロール転送にのみ使用される領域である。またCHa〜CHcはバルク転送に使用される領域であり、CHd〜CHfはバルク及びインタラプト転送に使用される領域であり、CHg、CHhはバルク、インタラプト及びアイソクロナス転送に使用される領域である。
図6に示すようにデバイスモード時には、EP0〜EPc(エンドポイント)、ディスクリプタ、CBW、CSWの領域がデータバッファ100に確保される。
本明細書では、パイプと1対1に対応するホスト側のチャネル領域(バッファ領域、パイプ領域)と、そのチャネル領域を介して行われる転送のための各種設定レジスタ(チャネル情報レジスタ)を、まとめて「チャネル」と呼ぶことにする。このチャネルには、IRP(I/O Request Packet)単位で転送情報(チャネル情報)が設定される。そして設定された転送情報に基づいて、IRP分のデータの転送が自動的に複数のトランザクションに分割されて実行される。チャネルは、IRP単位で切り替えることができるため、1本のチャネルで複数のエンドポイントに対応することが可能になる。
具体的にはファームウェア(F/W)は、チャネル領域の確保及び転送情報(チャネル情報)の設定を行った後、転送実行を指示する。そしてファームウェアは、転送実行を指示した後は、IRP分のデータの転送が完了するまで、チャネル領域にデータを書き込んだり(OUT転送時)、チャネル領域からデータを読み出す(IN転送時)といった処理を繰り返す。
一方、ハードウェア(H/W)は、IRP分のデータ転送を自動的に複数のトランザクションに分割して実行する。そしてハードウェア(チャネル)は、転送が完了すると、割り込みによってファームウェアに対して通知する。
図7に、USBのバルクオンリートランスポートに対応したストレージデバイスであるHDDを1台だけデータ転送制御装置に接続した場合のチャネルの使用例を示す。コントロール転送は、コントロール転送に専用のチャネルCH0を使用して行われる。一方、バルクオンリートランスポート転送は、バルク転送用(汎用)のチャネルCHaを使用して行われる。即ちチャネルCHaを使用して、HDDのバルクIN、バルクOUTのエンドポイントとの間でバルクIN転送、バルクOUT転送が行われる。
なお図7では1台のストレージ(HDD)をデータ転送制御装置に接続した場合を示しているが、複数台のストレージを接続することも可能である。この場合には、複数台のストレージでチャネルCH0を共用(時分割)して、コントロール転送を行う。また複数台のストレージでチャネルCHaを共用(時分割)して、バルクオンリートランスポートのデータ転送を行う。即ちチャネルCHaを用いて第1のストレージのバルクINエンドポイント、バルクOUTエンドポイントとの間のバルクIN転送、バルクOUT転送を行うと共に、チャネルCHaを用いて第2のストレージのバルクINエンドポイント、バルクOUTエンドポイントとの間のバルクIN転送、バルクOUT転送を行うようにする。
また、図8には、USBのコミュニケーションデバイスのクラスに対応したコミュニケーションデバイスCD(無線LANアダプタ等)をデータ転送制御装置に接続した場合のチャネルの使用例を示す。この場合には、チャネルCHb、CHを用いてバルクIN転送、バルクOUT転送を行い、チャネルCHdを用いてインタラプト転送を行う。
5.バルクオンリーサポート転送(自動バルク転送)
本実施形態のデータ転送制御装置は、図9に示すように、USBのバルクオンリートランスポートの一連のコマンドトランスポート、データトランスポート、ステータストランスポートの実行、管理を自動的に行う機能を有している。
具体的には本実施形態では、データバッファ100にCBW(コマンドブロック)領域、CHa(チャネル、データ)領域、CSW(ステータスブロック)領域が確保される。そして図9に示すようにファームウェア(F/W)により、チャネル情報やバルクオンリーサポート情報が設定され、バルクオンリーサポート転送(自動バルク転送)の実行(開始)が指示されると、ホストコントローラ50(転送コントローラ)は、コマンドトランスポートのバルクOUT転送のトランザクションを実行(発行)して、CBW(CBW0、CBW1)領域に書き込まれたCBWデータを含むパケットを送信する。次にホストコントローラ50は、データトランスポートのバルクOUT転送又はバルクIN転送のトランザクションを実行して、CHa領域に書き込まれた送信データを含むパケットの送信又はCHa領域に書き込むべき受信データを含むパケットの受信を行う。次にホストコントローラ50は、ステータストランスポートのバルクIN転送のトランザクションを実行して、CSW領域に書き込むべきCSWデータを含むパケットの受信を行う。
図10に本実施形態の比較例の手法を示す。この比較例では、コマンドトランスポート、データトランスポート、ステータストランスポートの各トランスポート毎に、ファームウェアが、情報設定や実行指示を行う必要がある。このため、ファームウェアの処理負荷が重くなる。
これに対して図9の本実施形態によれば、各トランスポートの情報設定や実行指示をファームウェアが個別に行う必要がなくなるため、ファームウエアの処理負荷を軽減できる。従って、CPU能力が低い携帯電話機や携帯型オーディオ機器などのペリフェラル機器にホスト機能を持たせようとした場合に、これらのペリフェラル機器に組み込むのに最適なデータ転送制御装置を提供できるようになる。
6.処理、動作の詳細
次に本実施形態の処理、動作の詳細を説明する。図11は、バルクオンリーサポート機能をオンにした場合のファームウェアの処理例を示すフローチャートである。
まずファームウェアは、チャネル領域を既に確保している場合には、チャネル領域のデータのクリア[FIFOClr]を指示し、未だ確保していない場合には、チャネル領域の確保[StartAdrs,EndAdrs]を指示する(ステップS1、S2、S3)。即ち各チャネル領域のスタートアドレスやエンドアドレスを指示し、これらのスタートアドレスやエンドアドレスでその領域が指定されるチャネル領域の確保を指示する。
次にファームウェアは、チャネル情報レジスタ82にチャネル情報(転送設定情報)を設定する(ステップS4)。即ち、USBデバイスのアドレスであるファンクションアドレス[FuncAdrs]や、チャネルを介して転送されるパケットのマックスパケットサイズ[MaxPktSize]や、トグルシーケンスビット[Toggle]などのチャネル情報を設定する。
次にファームウェアは、バルクオンリーサポート情報(自動バルク転送情報)を設定する(ステップS5)。即ち、転送相手となるデバイスのOUTエンドポイントを指定するOUTエンドポイント番号[OUT_EP_Number]や、OUTエンドポイントトグルシーケンス[OUT_Toggle]や、転送相手となるデバイスのINエンドポイントを指定するINエンドポイント番号[IN_EP_Number]や、INエンドポイントトグルシーケンス[IN_Toggle]などのバルクオンリーサポート情報を設定する。
次にファームウェアは、CBW0又はCBW1の領域にCBWデータ(31バイト)を設定する(ステップS6)。即ち図2(B)に示すCBWデータを書き込む。そして、CBW0、CBW1の領域のうち、CBWデータを設定した方のCBWイネーブルをセットする[CBW0/1_Enb](ステップS7)。
次にファームウェアは、DMA転送を用いる場合にはDMAバスの接続[JoinDMA]を指示する(ステップS8、S9)。そして、バルクオンリーサポート転送の実行[BO_SupportGo]を指示する(ステップS10)。そしてホストコントローラ50(データ転送制御装置)によりバルクオンリーサポート完了の割込みが発行されるのをウェイトする(ステップS11)。
図12は、バルクオンリーサポート機能をオフにした場合のファームウェアの処理例を示すフローチャートである。
まずファームウェアは、チャネル領域を既に確保している場合には、チャネル領域のデータのクリアを指示し、未だ確保していない場合には、チャネル領域の確保を指示する(ステップS21、S22、S23)。次に、ファンクションアドレス、エンドポイント番号、PID、トータルサイズ、マックスパケットサイズ、トグルシーケンスビットなどのチャネル情報を設定する(ステップS24)。そしてDMA転送を用いる場合にはDMAバスの接続を指示し、トランザクションの実行を指示する(ステップS25、S26、S27)。そして全トランザクション完了の割り込みが発行されるのをウェイトし、割り込みが発行され、ステータストランスポートの転送が行われた場合には、CSWデータをチェックする(ステップS28、S29、S30)。
図12の比較例では、ファームウェアは、コマンド、データ、ステータスの全てのトランスポートにおいて、ステップS21〜ステップS28等の処理を行う必要があるため、ファームウェアの処理負荷が過大になる。
これに対して図11の本実施形態では、ファームウェアがチャネル情報やバルクオンリーサポート情報やCBWデータを設定して(ステップS4、S5、S6)、バルクオンリーサポート転送の実行を指示すると、コマンド、データ、ステータスのトランスポートが自動的に順次実行される。そして最後のステータストランスポートが終了すると、ホストコントローラ50がバルクオンリーサポート完了の割り込みを発生して、ファームウェアに通知する。
このようにすれば、ファームウェアは、情報設定や実行指示を行った後、バルクオンリーサポート完了の割り込みが発生するまでの期間を、他の処理に使用できるようになる。これによりファームウェア処理やデータ転送処理の効率化を図れる。
なお図13に本実施形態で使用されるレジスタとその機能を例示する。バルクオンリーサポート実行レジスタは、バルクオンリーサポート転送の実行指示を行うためのレジスタである(図11のステップS10参照)。CBWイネーブルレジスタは、CBW領域の設定が有効であることを示すためのレジスタである。CBWイネーブルセット、CBWイネーブルクリアのレジスタは、CBWイネーブルをセット、クリアするためのレジスタである(ステップS7参照)。OUTエンドポイントトグルシーケンス、OUTエンドポイント番号のレジスタは、OUTエンドポイントのトグルシーケンスの初期値、OUTエンドポイント番号を設定するためのレジスタであり、INエンドポイントトグルシーケンス、INエンドポイント番号のレジスタは、INエンドポイントのトグルシーケンスの初期値、INエンドポイント番号を設定するためのレジスタである(ステップS5参照)。バルクオンリーサポート実行結果レジスタは、バルクオンリーサポート転送の実行結果を示すためのレジスタである。トランザクションステータス、トランザクションコンディションコードのレジスタは、トランザクション結果、トランザクション結果の詳細を示すためのレジスタである。トランスポートステータスレジスタは、実行中のトランスポートを示したり、トランスポートがエラーで中止された場合にエラーが発生したトランスポートを示すためのレジスタである。
図14、図15、図16は、本実施形態の動作を説明するためのフローチャートである。図11のステップS10に示すようにファームウェア(処理部)によりバルクオンリーサポート転送の実行指示が行われると、ホストコントローラ50は、コマンドトランスポートのトランザクションを実行(発行)する(ステップS31)。具体的には、OUTエンドポイント番号で指定されるエンドポイント(デバイスのバルクOUTエンドポイント)に対して、バルクOUT転送のトランザクションを発行し、CBW領域に書き込まれたCBWデータを送信する(ステップS32)。更に具体的には、OUTエンドポイント番号で指定されるエンドポイントに対してOUTトークンのパケットを送信し、その後、図2(B)のCBWデータを含むパケットを送信する。そしてACKのハンドシェークパケットの受信をウェイトする。
コマンドトランスポートが終了すると、ホストコントローラ50はデータトランスポートのトランザクションを実行する(ステップS33)。具体的には、CBWデータのdCBWDataTransferLengthが0x00000000である場合には、図15のステップS39に移行する(ステップS34)。一方、dCBWDataTransferLengthが0x00000000ではない場合には、ホストコントローラ50はCBWデータのbmCBWFlagsのビット7をチェックする(ステップS35)。そしてbmCBWFlagsのビット7が0である場合には、OUTエンドポイント番号で指定されるエンドポイントに対しバルクOUT転送のトランザクションを発行し、CHa領域(データ領域)に書き込まれた送信データを送信する(ステップS36)。具体的には、OUTエンドポイント番号で指定されるエンドポイントに対してOUTトークンのパケットを送信し、その後、送信データを含むパケットを送信する。そしてACKのハンドシェークパケットの受信をウェイトする。
一方、bmCBWFlagsのビット7が1である場合には、ホストコントローラ50はINエンドポイント番号で指定されるエンドポイントに対しバルクINトランザクションを発行し、受信したデータをCHa領域に書き込む(ステップS37)。具体的には、INエンドポイント番号で指定されるエンドポイントに対してINトークンのパケットを送信する。そして、その後、受信データを含むパケットを受信すると、ACKのハンドシェークパケットをデバイスに送信すると共に受信データをCHa領域に書き込む。
次にホストコントローラ50は、dCBWDataTransferLength分のデータ転送が完了したか否かを判断し(ステップS38)、完了していない場合にはステップS35に戻る。一方、完了した場合には、データトランスポートが終了したと判断し、ステータストランスポートのトランザクションを実行する(図15のステップS39)。具体的には、INエンドポイント番号で指定されるエンドポイントに対しバルクINトランザクションを発行し、受信したCSWデータをCSW領域に書き込む(ステップS40)。更に具体的には、INエンドポイント番号で指定されるエンドポイントに対してINトークンのパケットを送信する。そして、その後、CSWデータを含むパケットを受信すると、ACKのハンドシェークパケットをデバイスに送信すると共にCSWデータをCSW領域に書き込む。
次にホストコントローラ50(解析回路52)はCSWデータを解析し、CSWデータのエラーを検出する(ステップS41)。具体的には、CSWデータのデータ長が13バイトか否か、CSWのdCSWSignatureが0x53425355か否か、CSWのdCSWTagがCBWのdCBWTagと一致したか否か、CSWのbCSWStatusが0x00か否かをチェックする(ステップS42〜S45)。
そしてステップS42〜S45の全てにおいてエラーが検出されなかった場合には、CBWイネーブルを自動クリアし、バルクオンリーサポート完了割り込みを発行して、ファームウェアに通知する(ステップS46)。
一方、ステップS42〜S45のいずれかにおいてエラーが検出された場合には、バルクオンリーサポート実行(レジスタのビット)を自動クリアして、バルクオンリーサポート転送を停止し、バルクオンリーサポート停止割り込みを発行して、ファームウェアに通知する(ステップS47)。
なお本実施形態では、各トランスポートにおいてトランザクションエラーが検出された場合には(図16のステップS51)、ホストコントローラ50は、バルクオンリーサポート実行を自動クリアして、バルクオンリーサポート転送を停止し、バルクオンリーサポート停止割り込みを発行して、ファームウェアに通知する(ステップS52)。またトランスポートステータスレジスタを用いて、エラーが発生したトランスポートを表示する(ステップS53)。またコンディションコードのレジスタの値を適切な値に設定し、チェンジコンディション割り込みを発行して、ファームウェアに通知する(ステップS54)。
以上のように本実施形態では、CBW(コマンドブロック)領域に書き込まれたCBWデータに基づいて、データトランスポートのトランザクションを制御(管理、実行)している。
即ち図14のステップS34や図17のA1に示すように、CBWデータのデータ転送長dCBWDataTransferLengthが0である場合には、データトランスポートのトランザクションの実行を省略して、ステータストランスポートのトランザクションを実行する。
また図14のステップS36、S37、図17のA2に示すように、CBWデータのbmCBWFlagsのビット7に基づいて、データトランスポートにおいてバルクOUT転送のトランザクションとバルクIN転送のトランザクションのいずれを実行するかを決定している。
例えば図10の比較例では、データトランスポートのトランザクション制御は、データトランスポートの実行前に設定される情報に基づいて行うことになる。即ちコマンドトランスポートの実行終了後、データトランスポートの実行前に、データトランスポートの有無の情報やデータトランスポートでの転送方向(OUT、IN)を設定する必要がある。このためファームウェアの処理負荷が大きくなる。
これに対して本実施形態では、CBWデータを解析すれば、データトランスポートの有無の情報やデータトランスポートでの転送方向(OUT、IN)を知ることができる点に着目している。即ちCBWデータの解析処理を行い、CBWデータのdCBWDataTransferLengthが0である場合にはデータトランスポートが無いと自動判別し、dCBWDataTransferLengthが0以外である場合にはデータトランスポートが有ると自動判別する。またCBWデータのbmCBWFlagsのビット7が0である場合には、データトランスポートの転送方向がOUT方向(バルクOUT)であると自動判別し、bmCBWFlagsのビット7が1である場合には、データトランスポートの転送方向がIN方向(バルクIN)であると自動判別する。
このようにすれば、コマンドトランスポートの実行前に設定されたCBWデータに基づいて、データトランスポートのトランザクションが制御されるようになるため、ファームウェアの処理負荷を軽減できる。またファームウェアはデータトランスポートの制御のための情報を個別に設定する必要がなくなるため、ファームウェアの処理負荷を更に軽減できる。即ちファームウェアは図11のステップS5においてデータトランスポートの有無の情報や転送方向を設定する必要がない。そしてファームウェアが図11のステップS6においてCBWデータを設定すれば、設定されたCBWデータに基づいてハードウェア(ホストコントローラ)がデータトランスポートの有無の情報や転送方向を自動判別するため、ファームウェアの処理負荷を軽減できる。
また本実施形態では図11のステップS4に示すように、マックスパケットサイズ、デバイスのファンクションアドレス等が、チャネル情報としてチャネル情報レジスタ82に設定される。また図11のステップS5に示すように、バルクOUT転送のエンドポイントを指定するOUTエンドポイント番号、バルクIN転送のエンドポイントを指定するINエンドポイント番号等が、バルクオンリーサポート情報としてバルクオンリーサポート情報レジスタ84に設定される。
そして本実施形態では図11のステップS4でチャネル情報レジスタ82に設定されたチャネル情報に基づいて、バルクオンリートランスポート(自動バルク転送)が実行される。即ちチャネル情報のファンクションアドレスで指定されるデバイスとの間でバルクIN転送、バルクOUT転送などが行われる。またファンクションアドレスで指定されるデバイスとの間でコントロール転送なども行われる。そしてこれらのデータ転送の際に、チャネル情報のマックスパケットサイズに基づいてデータが複数のパケットに分割されて転送されるようになる。
また本実施形態では図14のステップS36に示すように、データトランスポートにおいてバルクOUT転送のトランザクションを実行する場合には、図11のステップS5で設定されたOUTエンドポイント番号で指定されるエンドポイントに対して、送信データを含むパケットを自動送信する。具体的にはチャネル情報のファンクションアドレスによりデバイスが指定され、バルクオンリートランスポート情報のOUTエンドポイント番号によりそのデバイスのエンドポイントが指定される。そして指定されたエンドポイントに対してOUTトークンが発行されて、そのエンドポイントにデータパケットが送信される。
また本実施形態では図14のステップS37に示すように、データトランスポートにおいてバルクIN転送のトランザクションを実行する場合には、設定されたINエンドポイント番号で指定されるエンドポイントから、受信データを含むパケットを自動受信する。具体的にはチャネル情報のファンクションアドレスによりデバイスが指定され、バルクオンリートランスポート情報のINエンドポイント番号によりそのデバイスのエンドポイントが指定される。そして指定されたエンドポイントに対してINトークンが発行されて、そのエンドポイントからデータパケットが受信される。
このようにチャネル情報、バルクオンリーサポート情報を設定してバルクオンリートランスポートを実行すれば、ファームウェアの処理負荷を最小限に抑えながら、効率的なデータ転送を実現できる。即ちチャネル転送に必要な情報(ファンクションアドレス、マックスパケットサイズ)はチャネル情報として共通に設定でき、バルクオンリーサポート転送に必要な情報(OUTエンドポイント番号、INエンドポイント番号)は、バルクオンリーサポート情報として個別に設定できるため、処理を効率化できる。また図7においてデータ転送制御装置に複数台のストレージを接続する場合や、バルクオンリーサポートのオン・オフの切り替え機能を実現する場合にも、これに容易に対応できるようになる。
また本実施形態では図15のステップS41に示すように、ステータストランスポートにおいて受信されたCSWデータが、解析回路52(ホストコントローラ50)のH/Wにより自動解析される。そして図15のステップS42〜S45、図18に示すように、CSWデータの複数のフィールド(dCSWSignature、dCSWTag、bCSWStatus)のうちのいずれかのフィールドにエラーが検出されると、図15のステップS47に示すように、CSWデータのエラーがファームウェア(処理部)に対して割り込み等を用いて通知される。すると、通知を受けたファームウェアは、CSW領域に書き込まれたCSWデータを更に詳細に解析する。
即ちCSWデータのエラーには複数レベルのエラーがあり、これらの全てのレベルのエラーの解析をファームウェア(F/W)に担当させると、ファームウェアの処理負荷が重くなってしまう。この点、本実施形態では、図15のステップS42〜S45に示す低レベルのエラーについては、ファームウェアに代わって、H/Wである解析回路52が解析するため、ファームウェアの処理負荷を軽減できる。またステップS42〜S45に示す低レベルのエラーの解析は、データの一致検出回路や比較回路を含む解析回路52で実現できるため、回路規模の増加も最小限に抑えることができる。
一方、図15のステップS42〜S45の低レベルのエラーとは異なる高レベルのエラーを、解析回路52に解析させようとすると、回路規模が大幅に増加する。即ちバルクオンリートランスポートでは図2(A)に示すように、コマンドトランスポートのCBWとデータトランスポートのバルクOUTデータとが同一のエンドポイント(EP1)を用いて転送される。またステータストランスポートのCSWとデータトランスポートのバルクINデータも同一のエンドポイントを用いて転送される。このため、ホスト側とデバイス側とで、コマンド、データ、ステータスのトランスポートのフェーズがずれる可能性があり、このフェーズのずれを解消するためのリセットリカバリーの処理が必要になる。このようなリセットリカバリーのための高レベルのエラー検出・回復処理は複雑であり、H/Wである解析回路52の解析には適さない。
本実施形態によれば低レベルのエラー検出だけが解析回路52により行われ、エラーが検出された場合には図15のステップS47に示すようにエラーの検出がファームウェアに通知される。そして、エラーが通知されたファームウェアは、CSW領域のCSWデータをRAMモニタ機能などを用いて読み出して詳細に解析して、リセットリカバリーなどの処理を行うことが可能になる。これによりファームウェアの処理負荷の増加、解析回路52の回路規模の増加等を最小限に抑えながら、適切なエラー検出・回復処理を実現できるようになる。
また本実施形態では図16のステップS51〜S54に示すように、コマンド、データト、ステータスの各トランスポートにおいてトランザクションエラーを検出した場合には、バルクオンリーサポート転送の実行を停止し、エラーが発生したトランスポート(トランザクション)をファームウェアに通知している。このようにすれば、バルクオンリートランスポートを構成する一連のコマンド、データ、ステータスのトランスポートのいずれにトランザクションエラーが発生したのかを、ファームウェアは容易に知ることが可能になる。これにより、トランザクションエラー発生時のファームウェアの処理負荷を軽減できる。
また本実施形態では図5に示すように、CBW領域としてCBW0、CBW1領域(第1、第2のコマンドブロック領域)がデータバッファ100に確保される。即ち2面のCBW領域が確保される。そしてCBW0、CBW1領域のいずれか一方の領域に対してファームウェアがCBWデータを書き込んでいる際に、他方の領域に書き込まれたCBWデータに基づいて図9のバルクオンリートサポート転送を実行する。即ち図19(A)では、ファームウェアがCBW0領域にCBWデータを書き込んでいる際に、CBW1領域のCBWデータに基づきバルクオンリートサポート転送を実行している。また図19(B)では、ファームウェアがCBW1領域にCBWデータを書き込んでいる際に、CBW0領域のCBWデータに基づきバルクオンリートサポート転送を実行している。なお図11のステップS6、S7に示すようにファームウェアは、CBWデータを書き込んだ方のCBW領域のCBWイネーブルをセットして、そのCBW領域についてのバルクオンリートサポート転送の実行をホストコントローラ50に指示する。
本実施形態の手法によれば、例えば図19(A)においてファームウェアがCBW0領域のCBWデータを用意して間に、CBW1領域のCBWデータのバルクオンリーサポート転送を実行できるため、データ転送の効率化を図れる。またファームウェアは、CBW1領域のバルクオンリートサポート転送が完了するのを待つことなく、所望のタイミングで、CBW0領域のCBWデータの用意や書き込みを行うことができるため、ファームウェア処理の効率化を図ることもできる。
7.詳細な構成例
図20に、バルクオンリーサポート転送を実現する回路の詳細例を示す。チャネル情報管理回路240は、ターゲットとなるチャネルの情報を管理する回路である。このチャネル情報管理回路240は、転送実行のターゲットとなるチャネルが指示された場合に、レジスタ部80のチャネル情報レジスタ82から、対応するチャネル情報を選択して、図示しないトランザクション管理回路などに渡す処理を行う。
パケット解析&生成回路250(パケットハンドラ回路)は、受信パケットに含まれる
INデータを解析したり、OUTデータを含む送信パケットを生成する。そしてバルクIN転送の場合には、パケット解析&生成回路250が、受信パケットに含まれるINデータをバッファコントローラ90に出力すると共にライトリクエストを出力する。そしてINデータがデータトランスポートの受信データである場合には、バッファコントローラ90はINデータをデータバッファ100のCHa領域(データ領域)に書き込む。一方、INデータがステータストランスポートのCSWデータである場合には、CSWデータであるINデータをデータバッファ100のCSW領域に書き込む。そしてバッファコントローラ90はライトACK(Acknowledgement)をパケット解析&生成回路250に出力する。
一方、バルクOUT転送の場合には、バッファコントローラ90がデータバッファ100から読み出されたOUTデータをパケット解析&生成回路250に出力する。そしてOUTデータがデータトランスポートの送信データである場合には、バッファコントローラ90はCHa領域からOUTデータを読み出してパケット解析&生成回路250に出力すると共にリードACKを出力する。一方、OUTデータがコマンドトランスポートのCBWデータである場合には、バッファコントローラ90はCBW0又はCBW1領域からCBWデータであるOUTデータを読み出して、パケット解析&生成回路250に出力すると共にリードACKを出力する。
バルクオンリーサポート転送シーケンサ200は、バルクオンリーサポート転送のシーケンスを管理する回路である。このバルクオンリーサポート転送シーケンサ200は、バルクオンリーサポート転送判断回路202、コマンドトランスポートモニタ回路204、データトランスポート選択回路210、データトランスポートモニタ回路220、ステータストランスポートモニタ回路230、CBW解析回路234、CSW解析回路236を含む。なお、バルクオンリーサポート転送シーケンサ200はこれらの全ての回路ブロックを含む必要はなく、その一部を省略してもよい。
バルクオンリーサポート転送判断回路202は、バルクオンリーサポート実行信号を受け、バルクオンリーサポート転送を行うか否かを判断する。そしてバルクオンリーサポート実行信号がアクティブになると、バルクオンリーサポート転送を行うと判断し、バルクオンリーサポートイネーブル信号をアクティブにする。これによりバルクオンリーサポート転送の開始が指示される。
コマンドトランスポートモニタ回路204は、バルクオンリーサポート転送の開始が指示された場合に、コマンドトランスポートのバルクOUT転送のトランザクションの開始を指示する回路である。即ちコマンドトランスポートモニタ回路204は、バルクオンリーサポートイネーブル信号がアクティブになると、CBW0イネーブル信号又はCBW1イネーブル信号をアクティブにして、コマンドトランスポートのトランザクションの開始を指示する。そしてコマンドトランスポートが完了すると、コマンドトランスポート完了信号をアクティブにする。
データトランスポート選択回路210は、コマンドトランスポートのバルクOUT転送のトランザクションが完了した場合(コマンドトランスポート完了信号がアクティブになった場合)に、データトランスポートの転送方向とデータトランスポートの有無の情報に基づいて、データトランスポートのバルクOUT転送のトランザクションの実行、データトランスポートのバルクIN転送のトランザクションの実行、或いはデータトランスポート無しのいずれかを選択する回路である。
即ちデータトランスポート選択回路210は、転送方向が「OUT」であり、「データトランスポート有り」の場合には、OUTデータ・スタートトリガをアクティブにして、バルクOUT転送のトランザクションの実行を選択する。また、転送方向が「IN」であり、「データトランスポート有り」の場合には、INデータ・スタートトリガをアクティブにして、バルクIN転送のトランザクションの実行を選択する。一方、「データトランスポート無し」の場合は、ステータス・スタートトリガをアクティブにして、データトランスポートをバイパスし、コマンドトランスポートの実行を開始させる。この場合に、転送方向が「IN」か「OUT」かは、CBW解析回路234からのデータトランスポート転送方向信号に基づいて判断する。またデータトランスポートが有るか無いかは、CBW解析回路234からのデータトランスポート有無信号に基づいて判断する。
データトランスポートモニタ回路220は、データトランスポートのバルクOUT転送のトランザクションの実行が選択された場合には、バルクOUT転送のトランザクションの開始を指示し、データトランスポートのバルクIN転送のトランザクションの実行が選択された場合には、バルクIN転送のトランザクションの開始を指示する回路である。このデータトランスポートモニタ回路220は、OUTデータトランスポートモニタ回路222とINデータトランスポートモニタ回路224を含む。
ここで、OUTデータトランスポートモニタ回路222は、OUTデータ・スタートトリガがアクティブになると、OUTデータトランスポートイネーブル信号をアクティブにして、バルクOUT転送のトランザクションの開始をチャネル情報管理回路240に指示する。そして、データトランスポートが完了すると、ステータス・スタートトリガをアクティブにする。
また、INデータトランスポートモニタ回路224は、INデータ・スタートトリガがアクティブになると、INデータトランスポートイネーブル信号をアクティブにして、バルクIN転送のトランザクションの開始をチャネル情報管理回路240に指示する。そして、データトランスポートが完了すると、ステータス・スタートトリガをアクティブにする。
ステータストランスポートモニタ回路230は、データトランスポートのバルクOUT転送のトランザクション又はバルクIN転送のトランザクションが完了した場合に、コマンドトランスポートのバルクIN転送のトランザクションの開始を指示する回路である。具体的には、ステータス・スタートトリガがアクティブになると、ステータストランスポートイネーブル信号をアクティブにして、ステータストランスポートのトランザクションの開始をチャネル情報管理回路240に指示する。
CBW解析回路234は、CBW0領域又はCBW1領域に書き込まれたCBWデータの解析(デコード)を行う。具体的にはCBW解析回路234は、バッファコントローラ90からOUTデータを受ける。そしてコマンドトランスポートモニタ回路204からのCBW0イネーブル信号がアクティブである場合には、データバッファ100のCBW0領域から読み出されたOUTデータを、CBWデータとして解析する。一方、CBW1イネーブル信号がアクティブである場合には、CBW1領域から読み出されたOUTデータを、CBWデータとして解析する。そして図17で説明したように、CBWデータの解析結果に基づいてデータトランスポートの転送方向とデータトランスポートの有無を判断し、データトランスポート転送方向信号とデータトランスポート有無信号をデータトランスポート選択回路210に出力する。
CSW解析回路236は、ステータストランスポートにおいて受信されたCSWデータの解析(デコード)を行う。具体的にはCSW解析回路236は、パケット解析&生成回路250からINデータであるCSWデータを受ける。そしてステータストランスポートモニタ回路230からのステータストランスポートイネーブル信号(CSWモニタ開始トリガ)がアクティブになると、CSWデータを解析する。そして図18で説明したようにCSWデータのエラー検出処理を行い、エラーが検出された場合には、ステータス判定結果信号をアクティブにして、ファームウェアに対して割り込み等を発生する。
図20に示すような回路構成を採用することで、コマンド、データ、ステータスの一連のトランスポートを構成するトランザクションを、ファームウェアの介在無しに、自動的に実行できるようになる。
8.電子機器の構成
図21(A)(B)に、本実施形態のデータ転送制御装置を含む電子機器の構成例を示す。電子機器110は、図2等で説明したデータ転送制御装置120、ストレージ130、CPU140(処理部)、操作部150、表示部160、音出力部170を含む。またアップストリームポートUPPTとダウンストリームポートDWPTを含む。なおこれらの一部を省略する構成としてもよい。
図21(A)(B)では、アップストリームポートUPPTが電子機器110の側面SF1(第1の側面、第1の辺)に設けられている。一方、ダウンストリームポートDWPTが電子機器110の側面SF2(第2の側面、第2の辺)に設けられている。ここで側面SF2は、側面DF1の反対側の面(対面)である。より具体的には、ダウンストリームポートDWPTは、アップストリームポートUPPTが設けられている位置(側面SF1上の位置)に対応する位置(側面SF2上の位置)に設けられている。更に具体的には、UPPTとDWPTは、側面SF1に沿って長手方向に延びる線(SF1の中心線)と、側面SF2に沿って長手方向に延びる線(SF2の中心線)の中心線を基準として、線対称の位置に設けられている。
データ転送制御装置120は、アップストリームポートUPPT、ダウンストリームポートDWPTに接続され、UPPTを介したデータ転送(アップストリーム方向でのデータ転送)と、DWPTを介したデータ転送(ダウンストリーム方向でのデータ転送)を制御する。具体的には、データ転送制御装置120は、デバイスモードではUPPTを介したデータ転送を制御し、ホストモードではDWPTを介したデータ転送を制御する。
ストレージ130は、音データ(音楽データ、音声データ)や画像データ(静止画データ、映像データ)を記憶するものである。このストレージ130としては、ハードディスク(HDD)や大容量のメモリ(RAM)や光ディスクなどを用いることができる。
CPU140は、電子機器110の全体の制御等を行うものである。操作部150は、ユーザが電子機器110を操作するためのものである。表示部160(液晶ディスプレイ、有機ELディスプレイ)は、各種画像(静止画、動画)をユーザに表示するためのものである。音出力部10(スピーカ、ヘッドホン端子)は、音楽や音声などの音を出力するためのものである。
例えば電子機器110が携帯型音楽プレーヤ(オーディオ機器)である場合には、音楽データが、UPPTやDWPTを介して外部の電子機器(PC等)からストレージ130にダウンロードされて記憶される。そして記憶された音楽データがストレージ130から読み出されて再生され、音出力部170によりユーザに出力される。また電子機器110が携帯型映像プレーヤである場合には、映像データが、UPPTやDWPTを介して外部の電子機器からストレージ130にダウンロードされて記憶される。そして記憶された映像データがストレージ130から読み出されて、表示部160を用いてユーザに表示される。
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語(コマンドブロック、ステータスブロック、バス・シリアルバス、転送コントローラ、自動バルク転送等)として引用された用語(CBW、CSW、USB、ホストコントローラ、バルクオンリーサポート転送等)は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
また本発明のデータ転送制御装置、電子機器の構成は、図2、図20、図21(A)(B)等に示した構成に限定されず、これらの図の構成要素の一部を省略したり、その接続関係を変更してもよい。
また本発明は種々の電子機器(携帯型音楽プレーヤ、携帯型映像プレーヤ、携帯電話機、携帯情報端末、PDA、電子辞書、又は電子手帳等)に適用できる。
また本実施形態では、USBのバルクオンリートランスポート規格のデータ転送に本発明を適用した場合について説明したが、これと同様の思想に基づく規格やこれを発展させた規格等のデータ転送にも本発明は適用できる。
図1(A)〜図1(D)はUSBのデータ転送の説明図。 図2(A)(B)(C)はバルクオンリートランスポートの説明図。 図3(A)(B)もバルクオンリートランスポートの説明図。 本実施形態のデータ転送制御装置の構成例。 ホストモード時にデータバッファに確保される領域の例。 デバイスモード時にデータバッファに確保される領域の例。 チャネル転送の説明図。 チャネル転送の説明図。 本実施形態のバルクオンリートランスポート転送手法の説明図。 比較例の転送手法の説明図。 本実施形態のファームウェア処理のフローチャート。 比較例のファームウェア処理のフローチャート。 本実施形態で使用されるレジスタとその機能の説明図。 本実施形態の詳細な動作を説明するためのフローチャート。 本実施形態の詳細な動作を説明するためのフローチャート。 本実施形態の詳細な動作を説明するためのフローチャート。 CBWデータに基づくデータトランスポートの制御手法の説明図。 CSWのエラー検出手法の説明図。 図19(A)(B)はCBW0、CBW1領域を使用する手法の説明図。 バルクオンリーサポート転送を実現する回路の詳細例。 図21(A)(B)は本実施形態の電子機器の構成例。
符号の説明
UPPT アップストリームポート、DWPT ダウンストリームポート、
CBW コマンドブロックデータ、CSW ステータスブロックデータ、
10 トランシーバ、20 ホストトランシーバ、30 デバイストランシーバ、
40 転送コントローラ、50 ホストコントローラ、52 解析回路、
60 デバイスコントローラ、70 ポートセレクタ、80 レジスタ部、
82 チャネル情報レジスタ、84 バルクオンリーサポート情報レジスタ、
86 ステータスレジスタ、90 バッファコントローラ、100 データバッファ、
110 ストレージI/Fコントローラ、112 CPUI/Fコントローラ、
114 DMAコントローラ、120 データ転送制御装置、130 ストレージ、
140 CPU(処理部)

Claims (11)

  1. USB(Universal serial Bus)を介したデータ転送のためのデータ転送制御装置であって、
    コマンドブロック領域とデータ領域とステータスブロック領域とが確保されるデータバッファのアクセス制御を行うバッファコントローラと、
    処理部と、
    前記処理部により前記コマンドブロック領域に書き込まれたコマンドブロックデータを解析する解析回路を有し、データ転送制御を行う転送コントローラとを含み、
    前記転送コントローラは、
    前記処理部により自動バルク転送の実行が指示された場合に、コマンドトランスポートのバルクOUT転送のトランザクションを実行して、前記コマンドブロック領域に書き込まれた前記コマンドブロックデータを含むパケットを自動送信し、
    前記コマンドトランスポートのバルクOUT転送が完了したと判断された場合に、前記解析回路による前記コマンドブロックデータの解析結果に基づいて、データトランスポートの転送方向と前記データトランスポートの有無を判断し、前記データトランスポートのバルクOUT転送又はバルクIN転送のトランザクションを実行して、前記データ領域に書き込まれた送信データを含むパケットの自動送信又は前記データ領域に書き込むべき受信データを含むパケットの自動受信を行い、
    前記データトランスポートが完了したと判断された場合に、ステータストランスポートのバルクIN転送のトランザクションを実行して、前記ステータスブロック領域に書き込むべきステータスブロックデータを含むパケットの自動受信を行い、
    前記ステータスブロックデータは、
    前記ステータスブロックデータの識別子が設定される第1のフィールドと、前記コマンドブロックデータのタグと同じ値のタグが設定される第2のフィールドと、前記コマンドトランスポートの処理結果を示す値が設定される第3のフィールドを有し、
    前記解析回路は、
    前記ステータストランスポートにおいて受信された前記ステータスブロックデータを解析し、前記ステータスブロックデータのエラーを検出し、前記第1のフィールド、前記第2のフィールド、前記第3のフィールドのうちのいずれかのフィールドにエラーが検出された場合には、前記ステータスブロックデータのエラーを前記処理部に通知し、
    前記処理部は、
    前記ステータスブロック領域に書き込まれた前記ステータスブロックデータを解析し、ホスト側とデバイス側とで、前記コマンドトランスポート、前記データトランスポート、前記ステータストランスポートのフェーズがずれたことが検出された場合には、フェーズのずれをリカバリーするリセットリカバリー処理を行うことを特徴とするデータ転送制御装置。
  2. 請求項1において、
    前記コマンドブロックデータは、前記データトランスポートで転送されるデータの転送方向の情報が設定されるフィールドと、前記データトランスポートで転送されるデータのデータ転送長の情報が設定されるフィールドを有し、
    前記転送コントローラは、
    前記コマンドブロック領域に書き込まれた前記コマンドブロックデータの前記解析結果に基づいて、前記データトランスポートの転送方向と前記データトランスポートの有無を判断して、前記データトランスポートのトランザクションを制御することを特徴とするデータ転送制御装置。
  3. 請求項2において、
    前記転送コントローラは、
    前記コマンドブロックデータの前記データ転送長が0に設定されていた場合には、前記データトランスポートのトランザクションの実行を省略して、前記ステータストランスポートのトランザクションを実行することを特徴とするデータ転送制御装置。
  4. 請求項2又は3において、
    前記転送コントローラは、
    前記コマンドブロックデータの前記転送方向の情報に基づいて、前記データトランスポートにおいてバルクOUT転送のトランザクションとバルクIN転送のトランザクションのいずれを実行するかを決定することを特徴とするデータ転送制御装置。
  5. 請求項1乃至4のいずれかにおいて、
    前記データバッファに確保されるチャネル領域のチャネル情報が設定されるチャネル情報レジスタを含み、
    前記チャネル情報レジスタには、マックスパケットサイズとデバイスのファンクションアドレスとが前記チャネル情報として設定され、
    前記データバッファには、前記データ領域が前記チャネル領域として確保され、
    前記転送コントローラは、
    前記チャネル情報レジスタに設定されるチャネル情報に基づいて、前記自動バルク転送を実行することを特徴とするデータ転送制御装置。
  6. 請求項1乃至5のいずれかにおいて、
    バルクOUT転送のエンドポイントを指定するOUTエンドポイント番号と、バルクIN転送のエンドポイントを指定するINエンドポイント番号とが、自動バルク転送情報として設定される自動バルク転送情報レジスタを含み、
    前記転送コントローラは、
    前記データトランスポートにおいてバルクOUT転送のトランザクションを実行する場合には、前記OUTエンドポイント番号で指定されるエンドポイントに対して、前記送信データを含むパケットを自動送信し、前記データトランスポートにおいてバルクIN転送のトランザクションを実行する場合には、前記INエンドポイント番号で指定されるエンドポイントから、前記受信データを含むパケットを自動受信することを特徴とするデータ転送制御装置。
  7. 請求項1乃至のいずれかおいて、
    前記転送コントローラは、
    コマンドトランスポート、データトランスポート、ステータストランスポートの各トランスポートにおいてトランザクションエラーを検出した場合には、前記自動バルク転送の実行を停止し、エラーが発生したトランスポートを前記処理部に通知することを特徴とするデータ転送制御装置。
  8. 請求項1乃至のいずれかおいて、
    前記コマンドブロック領域として第1、第2のコマンドブロック領域が前記データバッファに確保され、
    前記転送コントローラは、
    前記第1、第2のコマンドブロック領域のいずれか一方のコマンドブロック領域に対して前記処理部がコマンドブロックデータを書き込んでいる際に、他方のコマンドブロック領域に書き込まれたコマンドブロックデータに基づいて、前記自動バルク転送を実行することを特徴とするデータ転送制御装置。
  9. 請求項1乃至のいずれかおいて、
    前記転送コントローラは、
    自動バルク転送の実行が指示された場合に、コマンドトランスポートのバルクOUT転送のトランザクションの開始を指示する回路と、
    開始したコマンドトランスポートのバルクOUT転送のトランザクションが完了した場合に、データトランスポートの転送方向とデータトランスポートの有無の情報に基づいて、データトランスポートのバルクOUT転送のトランザクションの実行、データトランスポートのバルクIN転送のトランザクションの実行、或いはデータトランスポート無しのいずれかを選択する回路と、
    データトランスポートのバルクOUT転送のトランザクションの実行が選択された場合には、データトランスポートのバルクOUT転送のトランザクションの開始を指示し、データトランスポートのバルクIN転送のトランザクションの実行が選択された場合には、データトランスポートのバルクIN転送のトランザクションの開始を指示する回路と、
    開始したデータトランスポートのバルクOUT転送のトランザクション又はバルクIN転送のトランザクションが完了した場合には、コマンドトランスポートのバルクIN転送のトランザクションの開始を指示する回路とを含むことを特徴とするデータ転送制御装置。
  10. 請求項1乃至のいずれかおいて、
    前記コマンドトランスポート、データトランスポート、ステータストランスポートは、マスストレージクラスのバルクオンリートランスポート規格のトランスポートであることを特徴とするデータ転送制御装置。
  11. 請求項1乃至10のいずれかに記載のデータ転送制御装置と、
    前記データ転送制御装置により転送されるデータを記憶するストレージと、
    を含むことを特徴とする電子機器。
JP2005029225A 2005-02-04 2005-02-04 データ転送制御装置及び電子機器 Expired - Fee Related JP4412191B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005029225A JP4412191B2 (ja) 2005-02-04 2005-02-04 データ転送制御装置及び電子機器
US11/338,733 US7590765B2 (en) 2005-02-04 2006-01-25 Bulk data transfer and buffer control device and electronic instrument

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005029225A JP4412191B2 (ja) 2005-02-04 2005-02-04 データ転送制御装置及び電子機器

Publications (2)

Publication Number Publication Date
JP2006215891A JP2006215891A (ja) 2006-08-17
JP4412191B2 true JP4412191B2 (ja) 2010-02-10

Family

ID=36781203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005029225A Expired - Fee Related JP4412191B2 (ja) 2005-02-04 2005-02-04 データ転送制御装置及び電子機器

Country Status (2)

Country Link
US (1) US7590765B2 (ja)
JP (1) JP4412191B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4391548B2 (ja) 2007-04-20 2009-12-24 株式会社メディアロジック デバイスドライバ
US20080276012A1 (en) * 2007-05-04 2008-11-06 Joe Mesa Driver Loading via a PnP Device
TW200844841A (en) * 2007-05-10 2008-11-16 Realtek Semiconductor Corp Method for expediting data access of universal serial bus stoarage device
JP2008299747A (ja) * 2007-06-01 2008-12-11 Panasonic Corp Usbホストシステム及び転送データの転送方法
TW200945052A (en) * 2008-04-21 2009-11-01 Ralink Technology Corp Method for increasing USB transmission rate
TWI456508B (zh) * 2009-11-20 2014-10-11 Realtek Semiconductor Corp 一種具有模擬多媒體設備的非多媒體設備以及其模擬方法
US8402180B2 (en) * 2010-03-26 2013-03-19 Atmel Corporation Autonomous multi-packet transfer for universal serial bus
JP5867206B2 (ja) * 2012-03-16 2016-02-24 富士通株式会社 移動制御装置,プログラム及びストレージ装置
US20160232112A1 (en) * 2015-02-06 2016-08-11 Futurewei Technologies, Inc. Unified Memory Bus and Method to Operate the Unified Memory Bus

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3680762B2 (ja) 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3870717B2 (ja) * 2001-05-14 2007-01-24 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3680763B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP2003323391A (ja) 2003-02-18 2003-11-14 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法

Also Published As

Publication number Publication date
US7590765B2 (en) 2009-09-15
US20060179202A1 (en) 2006-08-10
JP2006215891A (ja) 2006-08-17

Similar Documents

Publication Publication Date Title
JP4412191B2 (ja) データ転送制御装置及び電子機器
EP1389760B1 (en) Data transfer control system, program and data transfer control method
JP3636157B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP3632695B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
US7739419B2 (en) Data transfer control device and electronic instrument
KR20020087861A (ko) 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법
US7716395B2 (en) Low latency mechanism for data transfers between a media controller and a communication device
EP2214103B1 (en) I/O controller and descriptor transfer method
JP2002344538A (ja) データ転送制御装置及び電子機器
US7359996B2 (en) Data transfer control device, electronic equipment, and data transfer control method
JP3636158B2 (ja) データ転送制御装置及び電子機器
JP4434218B2 (ja) データ転送制御装置及び電子機器
US7562166B2 (en) Data transfer control device with state transition control and electronic equipment
US7428600B2 (en) Data transfer control device, electronic equipment, and data transfer control method
US20070005847A1 (en) Data transfer control device and electronic instrument
JP2009048444A (ja) Usbデバイスの制御方法、コントローラ及び電子機器
JP3829851B2 (ja) データ転送制御装置及び電子機器
US8473665B2 (en) Universal serial bus (USB) transaction translator and a universal serial bus (USB) isochronous-in transaction method
JP2009026165A (ja) コントローラ、電子機器及び電子機器の制御方法
TWI452471B (zh) 用於通用序列匯流排裝置的全雙工控制器與其方法
JP4127071B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2003316734A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2009032011A (ja) データ転送制御装置及び電子機器
JP2008204048A (ja) データ転送制御装置及び電子機器
JP2003323391A (ja) データ転送制御装置、電子機器及びデータ転送制御方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070629

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081020

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090916

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20091002

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: 20091027

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091109

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121127

Year of fee payment: 3

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: 20121127

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131127

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees