(57)【要約】【課題】  データ通信システムにおいて、効率的な通信処理を実現する。【解決手段】  例えば、ホストと２台のデバイスから構成されるデータ通信システムにおいて、ホスト内に、この２台のデバイスに関連を持つデバイスドライバを設け、例えば、ホストに対して１台目のデバイスが接続された状態で、更に２台目のデバイスを接続した際に、このデバイスドライバを選択して使用する（Ｓ１０４ｂ）。また、ホストに対して１台目のデバイスが未接続の状態で、２台目のデバイスを接続した際は、２台目固有のデバイスドライバを選択して使用する（Ｓ１０３ｂ）。このように、デバイスの組み合わせに応じてデバイスドライバを選択することで効率的な通信処理が実現可能となる。なお、従来技術では、ホストが無条件に２台目固有のデバイスドライバを選択して使用していた（Ｓ１０２ａ）。【選択図】  図１
2006338615.tif 000002
【特許請求の範囲】
【請求項１】
プラグアンドプレイに対応した第１の下位装置および第２の下位装置と、
前記第１および前記第２の下位装置を接続可能な上位装置とを備えたデータ通信システムであって、
前記上位装置は、前記第１の下位装置と前記第２の下位装置との間の通信に特化した第３のデバイスドライバを有し、
前記上位装置に対して前記第１の下位装置が接続され使用可能な状態で、前記上位装置に対して前記第２の下位装置が接続された際に、前記上位装置は、前記第３のデバイスドライバを選択して使用することを特徴とするデータ通信システム。
【請求項２】
請求項１記載のデータ通信システムにおいて、
前記上位装置は、前記第１および前記第２の下位装置にそれぞれ対応した第１および第２のデバイスドライバを有し、
前記上位装置は、前記上位装置に対して前記第１および前記第２の下位装置がどのような組み合わせで接続されているかに応じて、前記第１および前記第２ならびに前記第３のデバイスドライバの中から所望のデバイスドライバを選択して使用することを特徴とするデータ通信システム。
【請求項３】
請求項１記載のデータ通信システムにおいて、
前記上位装置は、ＣＰＵを備え、
前記第３のデバイスドライバは、前記上位装置のＣＰＵを介さずに前記第１の下位装置と前記第２の下位装置との間の直接的なデータ転送を可能にする機能を備えていることを特徴とするデータ通信システム。
【請求項４】
請求項１記載のデータ通信システムにおいて、
前記第１および前記第２の下位装置は、ＵＳＢデバイスであり、
前記上位装置は、パーソナルコンピュータであることを特徴とするデータ通信システム。
【請求項５】
請求項１記載のデータ通信システムにおいて、
前記第１および前記第２の下位装置は、メモリカードデバイスであり、
前記上位装置は、メモリカードリーダライタであることを特徴とするデータ通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信システムに関し、特に、ホストと２台以上のデバイスからなるプラグアンドプレイ対応のデータ通信システムに適用して有効な技術に関するものである。
【背景技術】
【０００２】
本発明者が検討したところによれば、データ通信システムの技術に関しては、以下のようなものが考えられる。
【０００３】
例えば、パーソナルコンピュータ（ＰＣ）などのホストに対して、ＵＳＢデバイスなどを２台接続し、２台のデバイス間でデータ通信を行うようなデータ通信システムが知られている。この場合、ホストは、各ＵＳＢデバイスに対応するデバイスドライバをそれぞれ個別にロードして、２台のデバイス間のデータ通信を制御する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、前記のようなデータ通信システムの技術について、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００５】
近年、ＵＳＢやＩＥＥＥ１３９４などのプラグアンドプレイデバイス（以下、デバイス）が広く普及している。一方、デバイスを制御するホスト製品の高機能化も進み、ＰＣや携帯端末などは、複数のデバイスを制御するのが普通である。それらホスト製品において、デバイスが接続されたときにロードされ使用されるデバイスドライバは、前述したようにデバイス毎に固定となっており、例えば図７に示すような方法で用いられる。
【０００６】
図７は、本発明の前提として検討したデータ通信システムにおいて、２台のプラグアンドプレイデバイス間で通信する際の動作の一例を示す説明図である。
【０００７】
まず、Ｓ７０１において、１台目のデバイス（デバイス［Ａ］とする）７０ａをホスト７１に接続すると、デバイス［Ａ］７０ａは、ホスト７１にデバイスを識別するデバイスＩＤ（ＩＤ＝Ａとする）を送信する。ホスト７１のホスト制御部７１２のＣＰＵは、デバイスＩＤを受信すると、ドライバテーブル部７１３からデバイス［Ａ］７０ａに対応するドライバ［Ａ］を、デバイスＩＤを参照し検索する。検索の結果、ドライバ［Ａ］が存在すれば、それをデバイス制御部７１１にロードする。また、存在しなければ、デバイス［Ａ］に付属するＣＤ−ＲＯＭなどからドライバ［Ａ］をインストールし、ドライバテーブル部７１３に登録後、ロードすることになる。
【０００８】
次いで、Ｓ７０２において、ホスト７１はドライバ［Ａ］を起動する。また、ユーザがドライバ［Ａ］に対応するアプリケーション［Ａ］を起動する。その後、デバイス［Ａ］７０ａとホスト７１間でデータ送受信が可能となる。
【０００９】
次いで、Ｓ７０３において、２台目のデバイス（デバイス［Ｂ］とする）７０ｂをホスト７１に接続すると、デバイス［Ｂ］７０ｂは、ホスト７１にデバイスを識別するデバイスＩＤ（ＩＤ＝Ｂとする）を送信する。そして、デバイス［Ａ］７０ａの場合と同様に、デバイス［Ｂ］７０ｂに対応するドライバ［Ｂ］をデバイス制御部７１１にロードすることになる。
【００１０】
その後、Ｓ７０４において、ホスト７１は、ドライバ［Ｂ］を起動する。また、ユーザがドライバ［Ｂ］に対応するアプリケーション［Ｂ］を起動する。起動が完了すると、アプリケーションとＣＰＵ経由でデバイス［Ａ］７０ａとデバイス［Ｂ］７０ｂ間でデータ送受信が可能になる。
【００１１】
しかしながら、このようにして２台のデバイス間で通信する場合、それぞれのデバイスに固有なデバイスドライバとアプリケーションをロードし使用する必要があり、通信処理に無駄が多く、通信速度の低下、メモリの浪費、消費電力の増加が発生する。そこで、本発明の目的は、このような問題を鑑み、効率的な通信処理を備えたデータ通信システムを提供することにある。
【００１２】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１４】
本発明によるデータ通信システムは、プラグアンドプレイに対応した少なくとも２台以上の下位装置と、これらの下位装置を接続可能な上位装置とを備えたものとなっている。そして、この上位装置は、例えば１台目の下位装置と２台目の下位装置との間の通信に特化したデバイスドライバを備え、この１台目の下位装置が接続された状態で２台目の下位装置が接続された際に、このデバイスドライバを選択して使用するものとなっている。
【００１５】
これによって、２台の下位装置間の通信処理が効率化され、通信の高速化や消費電力の低減、および使用するメモリ量の低減などが実現可能となる。なお、このようなデバイスドライバとしては、例えば、２台の下位装置のデータバッファ間で直接的にデータ転送を行わせるような機能を備えたものが挙げられる。
【００１６】
また、本発明によるデータ通信システムは、前述したようなデバイスドライバに加えて、１台目の下位装置や２台目の下位装置にそれぞれ固有のデバイスドライバを備えたものとなっている。そして、上位装置は、自身に対してどのような組み合わせで下位装置が接続されているかを判断して、適切なデバイスドライバを選択および使用するものとなっている。これによって、接続される下位装置の組み合わせに応じて上位装置を柔軟に対応させることができ、効率的な通信処理が実現可能となる。
【００１７】
なお、前記下位装置としては、例えば、ＵＳＢやＩＥＥＥ１３９４などに対応したデバイスが挙げられ、前記上位装置としては、例えば、パーソナルコンピュータなどが挙げられる。また、例えば、下位装置としてメモリカードを用い、上位装置として、メモリカードリーダライタを用いることもできる。
【発明の効果】
【００１８】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、データ通信システムにおける通信処理の効率を向上させることが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２０】
まず、本発明によるデータ通信システムの主要な特徴について説明する。図１は、本発明の一実施の形態によるデータ通信システムにおいて、その処理の一例を従来技術と比較して示した説明図であり、（ａ）は従来技術による処理フロー図、（ｂ）は本発明による処理フロー図である。
【００２１】
図１（ａ）に示すように、従来技術のデータ通信システムでは、２台のプラグアンドプレイに対応したデバイスを制御するホスト機器に対して２台目のデバイスを接続した際に（Ｓ１０１ａ）、ホスト機器は、無条件に２台目固有のドライバを選択し使用するものとなっている（Ｓ１０２ａ）。一方、図１（ｂ）に示すように、本発明によるデータ通信システムでは、前述したホスト機器に対して２台目のデバイスを接続した場合に（Ｓ１０１ｂ）、ホスト機器は、１台目のデバイスとの組み合わせ条件に応じてそれぞれ異なるドライバを選択することが可能となっている。
【００２２】
すなわち、１台目のデバイスが未接続の場合は、２台目固有のドライバが選択されるが（Ｓ１０３ｂ）、１台目のデバイスが接続済みの場合は、１台目と２台目で関連を持つドライバを選択し使用することが可能となっている（Ｓ１０４ｂ）。これによって、通信処理の効率化を図ることが可能となる。以下、このような特徴を備えたデータ通信システムの詳細な構成および動作の一例について説明する。
【００２３】
図２は、本発明の一実施の形態によるデータ通信システムにおいて、その構成の一例を示す概略図である。図２に示すデータ通信システムは、例えば、プラグアンドプレイ対応デバイスであるデバイス［Ａ］２０ａ、プラグアンドプレイ対応デバイスであるデバイス［Ｂ］２０ｂ、及びそれらを制御するホスト２１などから構成される。なお、本発明はデバイスが３台以上でも実現可能であるが、簡略化のためデバイスが２台のシステムで説明する。ホスト２１は、アプリケーション部２１０、ホスト制御部２１２、デバイス制御部２１１、及びドライバテーブル部２１３などを含んでいる。
【００２４】
アプリケーション部２１０は、デバイス［Ａ］に対応するアプリケーションソフトウエア（アプリケーション）［Ａ］、及びデバイス［Ｂ］に対応するアプリケーション［Ｂ］で構成される。アプリケーションの一例としては、例えば、エクスプローラやオーディオプレーヤなどが挙げられる。なお、システムによってはデバイス［Ａ］とデバイス［Ｂ］で共通のアプリケーションが使用される場合もある。ホスト制御部２１２は、アプリケーションの実行や接続されたデバイスに対応するドライバの検索などをするＣＰＵ（中央演算装置）などで構成される。
【００２５】
デバイス制御部２１１は、ドライバ［Ａ］（ドライバ［Ｂ］）及びデバイス［Ａ］ホストコントローラ（デバイス［Ｂ］ホストコントローラ）に加えて、特別に設けたドライバ［ＡＢ］から構成される。ドライバ［Ａ］（ドライバ［Ｂ］）は、デバイス［Ａ］（デバイス［Ｂ］）に固有のプロトコルに従ったトランザクションやコマンドシーケンスの管理、及びデバイス［Ａ］ホストコントローラ（デバイス［Ｂ］ホストコントローラ）の制御などを担うソフトウエアである。
【００２６】
ドライバ［ＡＢ］は、デバイス［Ａ］とデバイス［Ｂ］間でのデータ転送に特化したドライバとなっている。このドライバ［ＡＢ］は、ドライバ［Ａ］とドライバ［Ｂ］の機能の一部に加え、例えばデバイス［Ａ］ホストコントローラとデバイス［Ｂ］ホストコントローラのデータバッファ間のＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送機能などを持つソフトウエアである。すなわち、ホスト２１のＣＰＵを介さずにデータ転送を行わせる機能を備えたものである。
【００２７】
なお、ドライバ［Ａ］（ドライバ［Ｂ］）は、デバイス［Ａ］接続時に、ドライバ［ＡＢ］は、デバイス［Ａ］とデバイス［Ｂ］接続時に、ドライバテーブル部２１３からデバイス制御部２１１にロードされ、デバイスが削除されるとデバイス制御部２１１からアンロードされる。デバイス［Ａ］ホストコントローラ（デバイス［Ｂ］ホストコントローラ）は、デバイス［Ａ］（デバイス［Ｂ］）との間で固有のプロトコルに従ったコマンドやデータの送受信を行うハードウエアである。
【００２８】
ドライバテーブル部２１３は、ドライバ［Ａ］、ドライバ［Ｂ］、及びドライバ［ＡＢ］を格納するハードディスク等に割り当てられた領域である。ドライバ［Ａ］（ドライバ［Ｂ］）は、最初にデバイス［Ａ］（デバイス［Ｂ］）を接続した時、デバイス［Ａ］（デバイス［Ｂ］）に付属するＣＤ−ＲＯＭなどからインストールされる。また、ドライバ［ＡＢ］は、最初にデバイス［Ａ］とデバイス［Ｂ］を共に接続した時、デバイス［Ａ］またはデバイス［Ｂ］に付属するＣＤ−ＲＯＭなどからインストールされる。
【００２９】
なお、デバイス［Ａ］とデバイス［Ｂ］は同じ構成であり、例えば、ＵＳＢやＩＥＥＥ１３９４などのプラグアンドプレイに対応したデバイスとなっている。その一例として、ＵＳＢインタフェースを持つオーディオプレーヤやメモリカードリーダライタなどが挙げられる。なお、図２のデータ通信システムでは、一般的なデバイスに対して、特に何らかの変更を加える必要はない。
【００３０】
図３は、図２のデータ通信システムにおいて、その通信手順の一例を説明する概略図である。
【００３１】
まず、Ｓ３０１において、１台目のデバイス（デバイス［Ａ］とする）２０ａをホスト２１に接続すると、デバイス［Ａ］２０ａはホスト２１にデバイスを識別するデバイスＩＤ（ＩＤ＝Ａとする）を送信する。ホスト２１のホスト制御部２１２のＣＰＵは、このデバイスＩＤを受信すると、ドライバテーブル部２１３からデバイス［Ａ］に対応するドライバ［Ａ］を、デバイスＩＤを参照し検索する。検索の結果、ドライバ［Ａ］が存在すれば、それをデバイス制御部２１１にロードする。また、存在しなければ、デバイス［Ａ］に付属するＣＤ−ＲＯＭなどからドライバ［Ａ］をインストールし、ドライバテーブル部２１３に登録後、ロードすることになる。
【００３２】
次に、Ｓ３０２において、ホスト２１は、ドライバ［Ａ］を起動する。また、ユーザがドライバ［Ａ］に対応するアプリケーション［Ａ］を起動する。その後、デバイス［Ａ］２０ａとホスト２１間でデータ送受信が可能となる。
【００３３】
続いて、Ｓ３０３において、デバイス［Ｂ］２０ｂをホスト２１に接続すると、デバイス［Ｂ］２０ｂは、ホスト２１にデバイスを識別するデバイスＩＤ（ＩＤ＝Ｂとする）を送信する。ホスト２１のＣＰＵは、デバイスＩＤを受信すると、デバイス［Ａ］２０ａが接続されているかを検索する。この場合、デバイス［Ａ］２０ａが接続されているので、デバイス［Ａ］２０ａとデバイス［Ｂ］２０ｂ間でのデータ転送に特化したドライバ［ＡＢ］をドライバテーブル部２１３から検索する。検索の結果、ドライバ［ＡＢ］が存在すれば、それをロードする。また、存在しなければ、デバイス［Ｂ］（または、デバイス［Ａ］）に付属するＣＤ−ＲＯＭなどからドライバ［ＡＢ］をインストールし、ドライバテーブル部２１３に登録後、デバイス制御部２１１にロードすることになる。なお、ドライバ［ＡＢ］をロード後、ドライバ［Ａ］を停止し、これをデバイス制御部２１１からアンロードすることにより、メモリの浪費を軽減することも可能である。また、ユーザは、アプリケーション［Ａ］を停止することもできる。
【００３４】
次いで、Ｓ３０４において、ホスト２１は、ドライバ［ＡＢ］を起動する。起動完了後、デバイス［Ａ］２０ａとデバイス［Ｂ］２０ｂ間で、例えばデバイス［Ａ］ホストコントローラとデバイス［Ｂ］ホストコントローラのデータバッファ間のＤＭＡ転送機能などを使用した、効率の良いデータ送受信が可能になる。また、従来技術のようにアプリケーションとＣＰＵを経由する必要もなくなる。
【００３５】
図４および図５は、図２のデータ通信システムにおいて、そのホストの詳細な処理の一例を示すフロー図である。なお、図５は、図４に続く処理フローとなっている。
【００３６】
まず、図４のＳ４０１において、ホスト２１の起動後、ホスト２１が、デバイス［Ａ］２０ａとデバイス［Ｂ］２０ｂの接続、及び削除の検出準備をする。具体的には、例えば、デバイス［Ａ］２０ａ（デバイス［Ｂ］２０ｂ）が接続されているかを管理する目的で、ＣＯＮ＿ＦＬＧ＿Ａ（ＣＯＮ＿ＦＬＧ＿Ｂ）というフラグを定義する。そして、デバイス［Ａ］２０ａ（デバイス［Ｂ］２０ｂ）が接続されていればＣＯＮ＿ＦＬＧ＿Ａ＝１（ＣＯＮ＿ＦＬＧ＿Ｂ＝１）、未接続であればＣＯＮ＿ＦＬＧ＿Ａ＝０（ＣＯＮ＿ＦＬＧ＿Ｂ＝０）とする。初期状態は接続されていないので、ＣＯＮ＿ＦＬＧ＿ＡとＣＯＮ＿ＦＬＧ＿Ｂの初期値は０とする。その後、Ｓ４０２に移行する。
【００３７】
Ｓ４０２において、ホスト２１は、デバイス［Ａ］２０ａ（またはデバイス［Ｂ］２０ｂ）に対応するデバイス接続割り込みの発生有無を判定する。デバイス接続割り込みが有った場合は、Ｓ４０３へ移行し、無い場合は図５のＳ４１２へ移行する。なお、デバイス接続割り込みは、ホスト２１のデバイス［Ａ］２０ａ（またはデバイス［Ｂ］２０ｂ）が接続された際に、ホスト２１のデバイス［Ａ］ホストコントローラ（またはデバイス［Ｂ］ホストコントローラ）から出力される。
【００３８】
Ｓ４０３において、ホスト２１のＣＰＵがデバイス接続割り込みを検出すると、デバイス［Ａ］２０ａとデバイス［Ｂ］２０ｂのうち、どちらのデバイスが接続されたかを判定する。デバイス［Ａ］２０ａの場合は、ＣＯＮ＿ＦＬＧ＿Ａ＝１に設定後、Ｓ４０４に移行し、デバイス［Ｂ］２０ｂの場合は、ＣＯＮ＿ＦＬＧ＿Ｂ＝１に設定後、Ｓ４０８に移行する。なお、このデバイス接続割り込みの判定は、例えばデバイス［Ａ］ホストコントローラとデバイス［Ｂ］ホストコントローラのレジスタ等を参照することで行う。
【００３９】
Ｓ４０４において、Ｓ４０３でデバイス［Ａ］２０ａが接続された場合に、加えてデバイス［Ｂ］２０ｂが既に接続状態であるか否かを判定する。この判定は、例えば、ＣＯＮ＿ＦＬＧ＿Ｂを参照することで行う。デバイス［Ｂ］２０ｂが接続状態の場合は、Ｓ４０５へ移行し、未接続状態の場合は、Ｓ４０７へ移行する。
【００４０】
Ｓ４０５およびＳ４０６において、Ｓ４０４でデバイス［Ｂ］２０ｂが接続状態（ＣＯＮ＿ＦＬＧ＿Ｂ＝１）である場合、ホスト２１は、ドライバテーブル部２１３からデバイス［Ａ］２０ａとデバイス［Ｂ］２０ｂ間でのデータ転送に特化したドライバ［ＡＢ］をロードする（Ｓ４０５）。その後、デバイス［Ａ］２０ａとデバイス［Ｂ］２０ｂ間でデータ転送が可能になる。更に、ホスト２１は、ドライバ［ＡＢ］をロードしたので、アプリケーション［Ｂ］を使用する必要がなければ、ドライバ［Ｂ］をアンロードする（Ｓ４０６）。そして、図５のＳ４１２へ移行する。
【００４１】
Ｓ４０７において、Ｓ４０４でデバイス［Ｂ］２０ｂが未接続状態（ＣＯＮ＿ＦＬＧ＿Ｂ＝０）である場合、ホスト２１は、ドライバ［Ａ］をロードする。その後、ユーザは、アプリケーション［Ａ］を起動することでドライバ［Ａ］を使用できる。そして、図５のＳ４１２へ移行する。
【００４２】
Ｓ４０８において、Ｓ４０３でデバイス［Ｂ］２０ｂが接続された場合に、加えてデバイス［Ａ］２０ａが既に接続状態であるか否かを判定する。この判定は、例えば、ＣＯＮ＿ＦＬＧ＿Ａを参照することで行う。デバイス［Ａ］２０ａが接続状態の場合は、Ｓ４０９へ移行し、未接続状態の場合は、Ｓ４１１へ移行する。
【００４３】
Ｓ４０９およびＳ４１０において、Ｓ４０８でデバイス［Ａ］２０ａが接続状態（ＣＯＮ＿ＦＬＧ＿Ａ＝１）である場合、ホスト２１は、ドライバ［ＡＢ］をロードする（Ｓ４０９）。その後、デバイス［Ａ］２０ａとデバイス［Ｂ］２０ｂ間でデータ転送が可能になる。更に、ホスト２１は、ドライバ［ＡＢ］をロードしたので、アプリケーション［Ａ］を使用する必要がなければ、ドライバ［Ａ］をアンロードする（Ｓ４１０）。そして、図５のＳ４１２へ移行する。
【００４４】
Ｓ４１１において、Ｓ４０８でデバイス［Ａ］２０ａが未接続状態（ＣＯＮ＿ＦＬＧ＿Ａ＝０）である場合、ホスト２１は、ドライバ［Ｂ］をロードする。その後、ユーザは、アプリケーション［Ｂ］を起動することでドライバ［Ｂ］を使用できる。そして、図５のＳ４１２へ移行する。
【００４５】
次に、図５のＳ４１２において、ホスト２１は、デバイス［Ａ］２０ａ（またはデバイス［Ｂ］２０ｂ）に対応するデバイス削除割り込みの発生有無を判定する。デバイス削除割り込みが有った場合は、Ｓ４１３へ移行し、無い場合はＳ４２２へ移行する。なお、デバイス削除割り込みは、ホスト２１のデバイス［Ａ］２０ａ（またはデバイス［Ｂ］２０ｂ）が削除された場合に、ホスト２１のデバイス［Ａ］ホストコントローラ（またはデバイス［Ｂ］ホストコントローラ）から出力される。
【００４６】
Ｓ４１３において、ホスト２１のＣＰＵがデバイス削除割り込みを検出すると、デバイス［Ａ］２０ａとデバイス［Ｂ］２０ｂのうち、どちらのデバイスが削除されたかを判定する。デバイス［Ａ］２０ａの場合は、ＣＯＮ＿ＦＬＧ＿Ａ＝０に設定後、Ｓ４１４に移行し、デバイス［Ｂ］２０ｂの場合は、ＣＯＮ＿ＦＬＧ＿Ｂ＝０に設定後、Ｓ４１８に移行する。なお、このデバイス削除割り込みの判定は、例えばデバイス［Ａ］ホストコントローラとデバイス［Ｂ］ホストコントローラのレジスタ等を参照することで行う。
【００４７】
Ｓ４１４において、Ｓ４１３でデバイス［Ａ］２０ａが削除された場合に、加えてデバイス［Ｂ］２０ｂが接続状態であるか否かを判定する。この判定は、例えば、ＣＯＮ＿ＦＬＧ＿Ｂを参照することで行う。デバイス［Ｂ］２０ｂが接続状態の場合は、Ｓ４１５へ移行し、未接続状態の場合は、Ｓ４１７へ移行する。
【００４８】
Ｓ４１５およびＳ４１６において、Ｓ４１４でデバイス［Ｂ］２０ｂが接続状態（ＣＯＮ＿ＦＬＧ＿Ｂ＝１）である場合、ホスト２１は、ドライバテーブル部２１３からドライバ［ＡＢ］をアンロードする（Ｓ４１５）。更に、ホスト２１は、ドライバ［ＡＢ］をアンロードしたので、アプリケーション［Ｂ］を使用する必要があれば、ドライバ［Ｂ］をロードする（Ｓ４１６）。そして、Ｓ４２２へ移行する。
【００４９】
Ｓ４１７において、Ｓ４１４でデバイス［Ｂ］２０ｂが未接続状態（ＣＯＮ＿ＦＬＧ＿Ｂ＝０）である場合、ホスト２１は、ドライバ［Ａ］をアンロードする。そして、Ｓ４２２へ移行する。
【００５０】
Ｓ４１８において、Ｓ４１３でデバイス［Ｂ］２０ｂが削除された場合に、加えてデバイス［Ａ］２０ａが接続状態であるか否かを判定する。この判定は、例えば、ＣＯＮ＿ＦＬＧ＿Ａを参照することで行う。デバイス［Ａ］２０ａが接続状態の場合は、Ｓ４１９へ移行し、未接続状態の場合は、Ｓ４２１へ移行する。
【００５１】
Ｓ４１９およびＳ４２０において、Ｓ４１８でデバイス［Ａ］２０ａが接続状態（ＣＯＮ＿ＦＬＧ＿Ａ＝１）である場合、ホスト２１は、ドライバ［ＡＢ］をアンロードする（Ｓ４１９）。更に、ホスト２１は、ドライバ［ＡＢ］をアンロードしたので、アプリケーション［Ａ］を使用する必要があれば、ドライバ［Ａ］をロードする（Ｓ４２０）。そして、Ｓ４２２へ移行する。
【００５２】
Ｓ４２１において、Ｓ４１８でデバイス［Ａ］２０ａが未接続状態（ＣＯＮ＿ＦＬＧ＿Ａ＝０）である場合、ホスト２１は、ドライバ［Ｂ］をアンロードする。そして、Ｓ４２２へ移行する。
【００５３】
Ｓ４２２において、ホスト２１の起動を終了しないのであれば、図４のＳ４０２に戻りデバイスの接続や削除を待つ。
【００５４】
以上、これまでに述べたような構成および動作を用いることで、例えば下記（１），（２）のような効果を得ることが可能になる。
【００５５】
（１）２台以上のプラグアンドプレイデバイス間で通信する場合に、通信速度の向上、消費するメモリ量や電力の削減が得られる。すなわち、本発明によるデータ通信システムでは、１台目に加えて２台目のデバイスをホストに接続した場合に、２台のデバイス間でのデータ転送に特化した機能（例えばホストコントローラ間のＤＭＡ転送機能など）を持つドライバをロードし使用することが可能となっている。したがって、２台のデバイス間の転送効率が高くなり、通信速度の向上が得られる。また、ホストの処理が低減され、消費電力の削減が得られる。
【００５６】
さらに、ホストにおいて、１台目のデバイス用のドライバをメモリからアンロードすることにより、使用するメモリ量の削減も可能となる。また、この特化したドライバに加えて通常の各デバイス毎のドライバを準備しておき、これらの中から実際に使用するドライバを、接続されたデバイスの組み合わせに応じて柔軟に使い分けることで、処理の効率化が図れる。
【００５７】
（２）２台のプラグアンドプレイデバイスを制御可能である従来技術のホストに対して、前述したような２台のデバイス間でのデータ転送に特化した機能を追加することで、少ない開発コストで高性能な通信機能を容易に実現可能となる。すなわち、従来のドライバと全く独立したドライバを開発することになるので、従来技術のドライバに悪影響を与える懸念がなく、容易又は低コストで開発および実装が可能となる。
【００５８】
このようなことから、本発明によるデータ通信システムは、特に、省電力を要求されるバッテリ駆動のノートＰＣおよび携帯端末などに適用して有益なものとなる。また、ホストが対応するデバイスは、前述したＵＳＢやＩＥＥＥ１３９４などに限らず、無線によるプラグアンドプレイ機能に対応したＢｌｕｅｔｏｏｔｈ（Ｒ）インタフェースなどにも適用可能である。
【００５９】
図６は、本発明の一実施の形態のデータ通信システムにおいて、その他の構成および動作の一例を示す説明図である。前述した図２では、プラグアンドプレイ対応のデバイスと、それらを制御するホストとを備えたデータ通信システムにおいて、そのホストに機能を追加する例を示したが、例えば図６に示すようなプラグアンドプレイ対応のデバイスに対して同様の機能を追加することも可能である。このようなプラグアンドプレイ対応のデバイスとしては、例えば、ＵＳＢインタフェースを持つ、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）カードとＣＦ（Ｃｏｍｐａｃｔ  Ｆｌａｓｈ（Ｒ））カードに対応したＵＳＢメモリカードリーダライタなどが挙げられる。
【００６０】
このようなＵＳＢメモリカードリーダライタ６０は、例えば図６に示すような構成となっている。まず、ＵＳＢコントローラ６００は、ホスト６３に接続可能で、ＵＳＢを制御するハードウエアとなっており、ＵＳＢドライバ６０１は、ＵＳＢを制御するソフトウエアとなっている。ＳＤホストコントローラ６０２は、ＳＤカード６１に接続可能で、それを制御するハードウエアとなっており、ＳＤドライバ６０３は、ＳＤカード６１を制御するソフトウエアとなっている。ＣＦホストコントローラ６０４は、ＣＦカード６２に接続可能で、それを制御するハードウエアとなっており、ＣＦドライバ６０５は、ＣＦカード６２を制御するソフトウエアとなっている。そして、このような構成に加えて、更にＳＤ・ＣＦダイレクトドライバ６０６を備えている。
【００６１】
ＳＤ・ＣＦダイレクトドライバ６０６は、ＳＤホストコントローラ６０２とＣＦホストコントローラ６０４間での直接のＤＭＡ転送などを制御する機能を備えたソフトウエアである。これは、図２等のシステムが備えている２台間のデータ転送に特化したドライバと等価な機能を有している。なお、リーダライタ制御部６０７は、これらの各ドライバの制御などを行うものである。
【００６２】
次に、ＵＳＢメモリカードリーダライタ６０の動作の一例について、下記３通りの場合を想定して説明する。
【００６３】
［１］まず、ＳＤカード６１を接続し、ホスト６３とＳＤカード６１間でデータ転送を行う場合は、リーダライタ制御部６０７が、ＳＤドライバ６０３とＵＳＢドライバ６０１のみを起動する。そして、これによって、ホスト６３とＳＤカード６１間でデータ転送を行う。
【００６４】
［２］次に、ＣＦカード６２を接続し、ホスト６３とＣＦカード６２間でデータ転送を行う場合は、リーダライタ制御部６０７が、ＣＦドライバ６０５とＵＳＢドライバ６０１のみを起動する。そして、これによって、ホスト６３とＣＦカード６２間でデータ転送を行う。
【００６５】
［３］最後に、ＳＤカード６１とＣＦカード６２を接続し、ＳＤカード６１とＣＦカード６２間でデータ転送を行う場合は、リーダライタ制御部６０７が、ＳＤカード６１とＣＦカード６２が共に接続されているという組み合わせ条件に基づいて、ＳＤ・ＣＦダイレクトドライバ６０６を選択する。そして、リーダライタ制御部６０７がＳＤ・ＣＦダイレクトドライバ６０６とＵＳＢドライバ６０１を起動することで、ＳＤカード６１とＣＦカード６２間でのデータ転送が行われる。
【００６６】
このように、ＳＤ・ＣＦダイレクトドライバ６０６の使用により、ＳＤホストコントローラ６０２とＣＦホストコントローラ６０４間での直接のＤＭＡ転送など、効率の良いデータ転送が可能となる。なお、ＳＤドライバ６０３とＣＦドライバ６０５の起動は必要なくなるが、ＵＳＢドライバ６０１の起動は、ホスト６３に転送状態などを通知するため必要となる。
【００６７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００６８】
本発明のデータ通信システムは、ホストと複数のデバイスからなるＵＳＢやＩＥＥＥ１３９４などのシステムに適用して特に有益なものであり、これに限らず、メモリカードリーダライタと複数のメモリカードからなるシステムや、ホストに対して有線または無線で複数のデバイスを接続可能なシステムなどを含めて広く適用可能である。
【図面の簡単な説明】
【００６９】
【図１】本発明の一実施の形態によるデータ通信システムにおいて、その処理の一例を従来技術と比較して示した説明図であり、（ａ）は従来技術による処理フロー図、（ｂ）は本発明による処理フロー図である。
【図２】本発明の一実施の形態によるデータ通信システムにおいて、その構成の一例を示す概略図である。
【図３】図２のデータ通信システムにおいて、その通信手順の一例を説明する概略図である。
【図４】図２のデータ通信システムにおいて、そのホストの詳細な処理の一例を示すフロー図である。
【図５】図２のデータ通信システムにおいて、そのホストの詳細な処理の一例を示すフロー図であり、図４に続く処理フローである。
【図６】本発明の一実施の形態のデータ通信システムにおいて、その他の構成および動作の一例を示す説明図である。
【図７】本発明の前提として検討したデータ通信システムにおいて、２台のプラグアンドプレイデバイス間で通信する際の動作の一例を示す説明図である。
【符号の説明】
【００７０】
２０ａ，２０ｂ，７０ａ，７０ｂ  デバイス
２１，６３，７１  ホスト
２１０，７１０  アプリケーション部
２１１，７１１  デバイス制御部
２１２，７１２  ホスト制御部
２１３，７１３  ドライバテーブル部
６０  ＵＳＢメモリカードリーダライタ
６１  ＳＤカード
６２  ＣＦカード
６００  ＵＳＢコントローラ
６０１  ＵＳＢドライバ
６０２  ＳＤホストコントローラ
６０３  ＳＤドライバ
６０４  ＣＦホストコントローラ
６０５  ＣＦドライバ
６０６  ＳＤ・ＣＦダイレクトドライバ
６０７  リーダライタ制御部
【図１】
2006338615.tif 000003
【図２】
2006338615.tif 000004
【図３】
2006338615.tif 000005
【図４】
2006338615.tif 000006
【図５】
2006338615.tif 000007
【図６】
2006338615.tif 000008
【図７】
2006338615.tif 000009