説明

ユニバーサル・シリアル・バス機能のデリゲーション

USBホスト機能をインプリメントする方法であり、特に、安全で柔軟性のあるUSB On−The−Goのインプリメントを確実に行うように設計される。USBホストドライバは、周辺ドライバ又は機能ドライバのコントロールに転送されるべきUSBトポロジの一部分を指名することができるように構成される。この指名のプロセスは、指名された一部分に関連付けられたトークンを生成する。トークンは、ハブドライバによって周辺ドライバ又は機能ドライバに渡される。周辺ドライバ又は機能ドライバは、USBトポロジの指名された一部分のコントロールを要求するためにトークンを用いる。トークンは、その後、必要に応じて他のソフトウエア・エンティティに転送される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、USB On−The−Go(OTG)をインプリメントするために、ユニバーサル・シリアル・バス(USB)機能のデリゲーションを可能にする方法に関する。
【背景技術】
【0002】
USBは、周辺デバイスをパーソナル・コンピュータ(PC)に容易に接続する方法として、1990年代に広く用いられていた。そのようなデバイスを接続する従前の方法は、PCケースを物理的に開き、注文品のインタフェース・カードを物理的に挿入することを必要としていたか、若しくは、PC上の比較的低速なシリアル又はパラレルポートを用いていた。そのようなリソースの全ては、数が厳密に制限されていたので、比較的希少であった。その上、一般的に、それらは全て、構成するのに幾らかの技術的な専門的知識を要していた。
【0003】
USBは、本質的に、小さなローカル有線ネットワークの1つの形状であり、その中で、PCは、接続された周辺デバイスと通信でき、また、接続された周辺デバイスを制御することができるホストとしてふるまう。そのことにより、高速かつ拡張性がある。また提供された「USBネットワーク」は、PC上のUSBポートに差し込まれた周辺デバイスの一般的なタイプについて知っており、自動判別を行ってデバイスを利用するように構成するだろう。
【0004】
しかしながら、今日では、PCにリンクするためにUSBを利用するデバイスは、キーボード、マウス、スピーカ、プリンタ、スキャナ、モデムのような従来の周辺デバイスに制限されているわけではなく、極めて重要な演算能力を有する、より新しい携帯コンピューティング・デバイスにまで広がっている。そのようなデバイスとして、デジタル・カメラ、ミュージック・プレイヤ、携帯電話が含まれている。
【0005】
USBは、コンピュータが全ての周辺機器を制御する中央ホストとして常に動作する、PC中心の構成を元々想定しているため、PCが存在しないと、高度なUSB周辺機器が、相互に直接通信することは、元々不可能だった。従って、全ての通信は、中心のホストPCを通して送られなければならなかった。しかし、そのような「よりインテリジェント」な周辺機器が、他のUSB周辺機器と独立に通信する正当な必要があるような状況が明確に存在する。
例えば、デジタル・カメラにプリンタを直接接続し通信できるようにしたり、ミュージック・プレイヤにスピーカを直接接続し通信できるようにしたりすることを望むことは不合理ではない。一方で、高度な近代の携帯電話は、プリンタ、スピーカ、ディスプレイのような出力デバイスへの直接的なアクセスからだけでなく、マイクロフォン、キーボード、スキャナのようなUSB入力デバイスの種類からも恩恵を受けているだろう。また、PCだけでなく、ほとんど全ての高度な携帯コンピューティング・デバイスは、ペン・ドライブのような現代のUSBストレージ・デバイスへのアクセスからも恩恵を受けることができると考えても良い。
【0006】
このような高度なインテリジェント携帯周辺デバイスの発展は、元々のUSB仕様では予想されていなかった。USB仕様は、ホストUSB機能のより軽いインプリメンテーションを許可しておらず、また、ホストとしての機能と周辺デバイスとしての機能とを切り換えることができるデバイスを予想していなかった。
【0007】
この欠陥を修正し、また、携帯コンピューティング・デバイスがUSBデバイスをコントロールできるようにするために、USB開発者フォーラム(USB−IF:USB Implementers Forum,Inc.)は、USB用の追加仕様を発展させた。それは、「USB On−the−Go(USB−OTG)」として参照されている。この仕様は、高度な携帯コンピューティング・デバイスが、選択された他のUSB周辺機器に対して、ホストとして機能するための追加機能をインプリメントすることを可能としている。また、携帯デバイスの形状因子と限られたバッテリ寿命により適合した機械的、電気的特性(例えば、より小さなUSBコネクタと低減されたバス電圧)の集合を特定している。更なる情報は、非特許文献1から見つけることができる。
【0008】
USB−OTG用の完全な仕様は、非特許文献2において見ることができる。この仕様の特徴の幾つかについて、図1を参照して簡単に述べる。
【0009】
USB−OTGをサポートすることができる携帯コンピューティング・デバイスの要件は、2つの要素から成る。
・USBホストとしてふるまい、バス上のトラフィックをコントロールする能力。
・USBハブとしてふるまい、バスに取り付けられ、又は、取り外された機器を検出し識別する能力。
【0010】
図1は、USB−OTG仕様が、USBホスト・インプリメンテーションに要求するレイヤと機能ブロックを概略的に示している。図から分かるように、USBホスト・インプリメンテーションは、3つのブロックとして構成されている。その3つのブロックとは、USBクライアントと、USBシステムと、USBバス・インタフェースである。これらのブロック間のインタフェースは、上術の仕様の範囲内において程度を変更するように定義されている。
【0011】
USBシステムのホスト・コントローラ・ドライバとUSBバス・インタフェースのホスト・コントローラとの間で用いられるインタフェースは、ホスト・コントローラ・インタフェース(HCI)として知られている。一般的に、HCIは、オープン・ホスト・コントローラ・インタフェース仕様と、ユニバーサル・ホスト・コントローラ・インタフェース仕様と、拡張ホスト・コントローラ・インタフェース仕様(OHCI、UHCI、EHCIとして比較的それぞれ知られている)とのいずれか1つに従っている。
【0012】
ホスト・コントローラ・ドライバとUSBシステム機能ブロック内のUSBハブドライバとの間のインタフェースは、ホスト・コントローラ・ドライバ・インタフェース(HCDI)として知られている任意のインタフェースである。このインタフェースは、USBドライバ用のHCI仕様間の相違を抽象化するために用いられるオペレーティング・システム(OS)特有のインタフェースとなるように仕様において記述されている。
【0013】
USBドライバとUSBクライアント間のインタフェースは、USBドライバ・インタフェース(USBDI)として知られている。USBDIは、インタフェースとデバイス構成管理のレベルへUSBサービスを抽象化し、転送する。USBDIは、全てのUSBホスト・ソフトウエアがUSBと通信する上で通るインタフェースである。
【0014】
USBDIは、本発明の主焦点である。
【0015】
概念的には、USBDIの主要なクライアントは、ハブドライバである。ハブドライバは、USBトポロジの機能の中心であり、また、USB周辺機器をバスから除去し、順番に列挙することを確実にする役割を担っている。この役割には、USBトポロジにおける変更を監視することと、それらの変更を処理するようにシステム・ソフトウエアを構成する又は構成しないこととの両方が含まれている。この関係は、図2において概念的に示されている。
【0016】
ハブドライバは、USB管理を提供し、また、バスに取り付けられたUSB周辺機器を監視し操作するために使用可能なプリミティブを転送する。その列挙する役割の一部として、ハブドライバは、新たに取り付けられた任意のUSB周辺機器からの記述子を要求して構文分析する。これは、新たに取り付けられたUSB周辺機器の機能を利用するために、ソフトウエア・エンティティの位置を決め、ロードし活性化するために行われる。これらのソフトウエア・エンティティの位置決めとロードは、ハブドライバが、直接実行する必要はない。それは、図2にドライバ・ローダとして示されている、いくつかの他のエンティティにデリゲーション(委託)することができる。
【0017】
ドライバ・ローダによってロードされたソフトウエア・エンティティは、通常、ドライバとして単純には参照されない。なぜならば、これは、既にオーバロードされた期間であるからである。それらは、図2に示すように、例えば、オペレーティング・システム(OS)のカーネルの拡張として機能するような他のタイプのドライバから識別されるために、周辺ドライバか機能ドライバのいずれかとして共通に参照される。周辺ドライバと機能ドライバとは、エンティティの2つの明確に異なるクラスであり、USBトポロジの異なる部分を除いて、類似の役割を果たしているということも留意すべきである。
【0018】
USBトポロジの全ての部分への制限されないアクセスを許可されているハブドライバと異なり、周辺ドライバと機能ドライバは、USBDIの2次的なクライアントである。なぜならば、それらは、ハブドライバによって、選択されたバスの一部分へのアクセスを許可されているからである。即ち、USB周辺機器全体か、若しくは、特定のUSB周辺機器の範囲内での関連インタフェース(又は、ファンクション)の集合のいずれかである。
【0019】
システムにおいてUSBホスト機能を有する大きな理由は、システムがUSB周辺機器を利用することを可能にするということである。しかしながら、上述のUSB入力、出力、ストレージ周辺機器の種類から明確なこととして、USBホストシステムの範囲内において、図2で示されるような2次的なクライアントとしてでなく直接にUSBと相互作用する必要があろう広範で非常に多様なオペレーティング・システム・サービスとソフトウエア・エンティティが存在する。
【0020】
USBホストと直接に相互作用する必要があるソフトウエア・エンティティの多様性は、USBDIを設計する上で主要な考慮である。それは、オペレーティング・システム周りに、(特定の機能やデバイスに関する)所与のUSBトポロジの様々な部分のコントロールを分配する必要を生じる。
【0021】
しかしながら、USB仕様は、これをどのようにして実現すべきかについては、全く特定していない。期待される手法としては、単一の強力でユビキタスなUSBDIに対してアプリケーション・プログラミング・インタフェース(API)を提供することであろう。これによって、任意のデバイスの任意のインタフェースにおける任意のエンドポイントをアドレスすることが可能になり、また、それらが、どのデバイス、どのインタフェース、どのエンドポイントを制限すべきかを、様々なUSBDIクライアントに通知することができるであろう。
【0022】
あいにく、この手法は大きな欠点を有している。それは、USBサブシステム全体を悪意があり欠陥のあるUSBDIクライアントに公開してしまう。その結果、そのことは、USBトポロジの所望の部分に影響を与え、サブシステムと(おそらくは)コンピューティング・デバイスの他の部分との両方を使用できなくしてしまうであろう。
【0023】
もし、USB−OTGが設計されるための携帯型のバッテリ駆動コンピューティング・デバイスの開発が、PCシステムの市場の発展と同じ経緯でなされたならば、このことはそれ程懸念事項ではないだろう。後者の場合、複数のアーキテクチャでドライバを利用できるようにするという真の商業上の必要性がなかったため、USBは、主に、単一のコンピューティング・ハードウエア/ソフトウエア・アーキテクチャ(マイクロソフト(登録商標)OSとインテル(登録商標)CPU)用に、開発された。そのことは、USB周辺機器用のドライバを開発してテストする負担を軽くした。しかしながら、携帯デバイスにはその反対のことが当てはまっている。というのも、デバイスの様々なクラス(電話、カメラ、ミュージック・プレイヤを含む)においても、単一のデバイス・クラスにおける様々な製造業者においても、ソフトウエアとハードウエアのプラットフォームについて、共通の標準がないからである。
【0024】
例えば、このように広範な携帯デバイスのタイプと製造業者に渡ってUSB周辺機器をサポートするように記述される必要のあるドライバが非常に多数存在するために、USBドライバがPCデバイス・ドライバと同じくらい柔軟性のあるようなものになる見込みが極めて低くなっている。上述のモノリシックなアーキテクチャが根本的に安全でないことは、USB−OTG仕様と勧告において、明確な欠陥を際立たせている。また、OS周辺のUSBトポロジの様々な部分のコントロールの、より安全な分配を満足な形でどのように実現するかということは、即座には明らかとなっていない。
【非特許文献1】USB−IFのウェブサイト、インターネット〈http://www.usb.org/developers/onthego/〉
【非特許文献2】インターネット〈http://www.usb.org/developers/docs/usb 20.zip〉
【発明の開示】
【発明が解決しようとする課題】
【0025】
そこで、上記の点に鑑み、本発明の目的は、USB−OTG機能を組み込んだ、より安全なコンピューティング・デバイスの提供を可能とすることである。
【課題を解決するための手段】
【0026】
本発明の第1の態様によると、USBルートハブを有するUSBトポロジを備えたコンピューティング・デバイスに、少なくとも1つのUSB機器を接続する方法が提供される。その方法においては、USBトポロジの一部分のコントロールは、前記USBトポロジの一部分に関連付けられた電子トークンの提示に応じて、ソフトウエア・エンティティに許可されるのみである。
【0027】
本発明の第2の態様によると、USBルートハブを有するUSBトポロジを備え、USBトポロジの一部分のコントロールを、前記USBトポロジの一部分に関連付けられた電子トークンの提示に応じて、ソフトウエア・エンティティに許可されるように構成されたコンピューティング・デバイスが提供される。
【0028】
本発明の第3の態様によると、第1の態様の方法に従って、第2の態様についてのコンピューティング・デバイスを機能させるオペレーティング・システムが提供される。
【発明を実施するための最良の形態】
【0029】
本発明の実施形態が、更なる例によって、付随する図面を参照して、記述される。
【0030】
本発明の鍵となる目的は、USBトポロジの一部分のコントロールが、確実に、安全な方法でオペレーティング・システムにおいて動作している様々なソフトウエア・エンティティ間で分配されるようにすることである。その結果、コントロールされた方法で、正しいエンティティがUSBの正しい部分をコントロールする。
【0031】
このことを実現するためにハンドオーバのメカニズムが工夫されてきたこととして、USBトポロジの定義された部分が、中央コントロール・エンティティ(即ち、図1及び2に示されるハブドライバ)から個々の機器と機能ドライバにカスケードダウンされている。
【0032】
ハンドオーバのメカニズムの原理として、USBトポロジの一部分のコントロールを現在有しているソフトウエア・エンティティが、他方のプロセスにハンドオーバされる一部分を指名することができる。このことは、ハブドライバへの要求を開始することによって実現される。それに応じて、ハブドライバは、指名された一部分を識別するために用いられる電子トークンを提示する。他のソフトウエア・エンティティ(おそらくは、デバイス上の他のプロセスで動作することができる)は、USBトポロジの一部分のコントロールを要求するためにハブドライバに電子トークンを提示することができる。
【0033】
リソースの使用の権限を与えるための電子トークンの使用は、トークンリング・ネットワーキングにおいて用いられている。トークンリング・ネットワーキングは、元々、IBMによって設計され、IEEE802.5仕様において記述されている。また、http://standards.ieee.org/getieee802/802.5.htmlから参照することができる。トークンリング・ネットワーキングにおいて、コンピュータは、共有されたネットワーク媒体上でコリジョンを回避している。それは、単一の電子トークンを現在所有するコンピュータのみがネットワーク上でデータを伝送することを許可されるという制限を実行することで実現されている。
【0034】
本発明によると、トークンリング・ネットワーキングにおける単一のトークンの使用と対照的に、トークンを割り当ててコントロールを要求するという指名の原理は、システムの至るところに個別のインタフェースのコントロールを分配するための周辺ドライバのインプリメンテーションにより用いられる。このことは、単一のデバイス上での複数の機能を許可し、複合USB機器がサポートされることができる。
【0035】
従って、USBトポロジの一部分のコントロールを放棄することを望む所望のエンティティは、指名プロセスを繰り返して、その結果生じたトークンを他のエンティティに渡すことによって実行できる。その新しいエンティティは、元々エンティティを要求することが指名されていたものであるか、若しくは、USBルート・ハブドライバがなることができる。
【0036】
本質的に、それゆえ、ハブドライバは、周辺ドライバ又は機能ドライバのコントロールに転送されるべきUSBトポロジの一部分を指名する。各指名プロセスは、指名された一部分に関連した個別のトークンを生じる。トークンは、その後、ハブドライバによって、周辺ドライバ又は機能ドライバに渡される。周辺ドライバ又は機能ドライバは、その後、USBトポロジの指名された一部分のコントロールを要求するために、このトークンを用いることができる。
【0037】
周辺ドライバと機能ドライバは、それゆえ、周辺デバイス(周辺ドライバ)を表すトークン、又は、多くのインタフェース(機能ドライバ)を表す多くのトークンが、活性化されるべきドライバに順に渡されることを通して、ハブドライバに統一されたインタフェースを提供する。
【0038】
ドライバのインプリメンテーションが、ドライバのインプリメンテーションに委託されているUSBトポロジの一部分を要求できるようにするために、ハブドライバは、図2に示すUSBホストのドライバ・ローダを介してこれらのトークンをドライバ・インプリメンテーションに伝送することができなければならない。
【0039】
このポイントについて、トークンリング・ネットワークと対照的に、本発明において、予想される2つの明確なトークンのタイプが存在することに留意すべきである。それは、周辺トークンと機能トークンである。周辺トークンは、周辺ドライバのインプリメンテーションに、特定のUSB周辺機器のコントロールを要求することを許可する。機能トークンは、機能ドライバのインプリメンテーションに、特定のUSB周辺機器上の特定のインタフェースのコントロールを要求することを許可する。
【0040】
周辺ドライバは(活性化されている)、単一の有効な周辺トークンを備えていなければならない。この文脈における有効とは、ハブドライバが、転送するためのUSBトポロジの一部分を既に指名していたということを意味する。
【0041】
機能ドライバは(活性化されている)、少なくとも1つの有効な機能トークンを備えていなければならない。USB機能は、非常に多くの場合、少なくとも1つのインタフェースを含んでいる。そのような理由で、単一のトークンが常に用いられるわけではない。例えば、JAVA(登録商標)によって定義されているようなクラス定義のCDC(Connected Device Configuration)ファミリにおいて、常に、2つのインタフェースが存在している。1つは、コントロール・コミュニケーションにとってのインタフェースであり、1つは、データ転送にとってのインタフェースである。
【0042】
これらのトークンがドライバ・コントローラからドライバ・インプリメンテーションに転送されるメカニズムは、インプリメンテーションやデバイスに大きく依存している。また、そのメカニズムは、1つのコンピューティング・デバイスと他のコンピューティング・デバイスとの間で異なっているのと同様に、単一のデバイス上でドライバ・コントローラとドライバ・コントローラとの間でも異なっている。これらのメカニズムは、それゆえ、本発明の文脈においては記述されていない。特定の構成が当業者にとって明白であり、そのようなメカニズムをインプリメントすることを望んでいることが前提とされている。しかしながら、USBトポロジの指名された一部分を表す簡易なデータ構造を選択することが、ドライバ・コントローラからドライバ・インプリメンテーションにトークンを分配する手段を提供する好適な方法となる。
【0043】
USBのコントロールが、適切に権限を与えられたソフトウエア・エンティティに残っていることは重要である。それゆえ、例えば、GB2389747Aに開示された能力モデルのような追加のセキュリティ・チェックは、ドライバ・インプリメンテーションがトークンを用いてコントロールを要求することによる機能に含まれている。例えば、指名の一部として、ハブドライバは、TSecurityPolicyクラスのインスタンスを有するベース・ドライバを提供する。それは、ベース・ドライバによって要求プロセスに適用され得るポリシー・チェックを表している。もし、要求プロセスがポリシー・チェックにパスすることに失敗すると、トークンを介してコントロールを担う要求は失敗するであろう。
【0044】
それゆえ、上述の能力モデルの使用は、トークンの分配を実質的にリスク・フリーとするように考えられる。というのも、適切に権限が与えられたプロセスのみが、それらを利用することができるからである。それゆえ、比較的オープン型の分配メカニズムとして、例えば、「パブリッシュ・アンド・サブスクライブ(Publish and Subscribe)」は、システム周辺にトークンを分配するために好適に用いられる。
【0045】
本発明における好適な実施形態において、図3に示すように、ロウ(Raw)USBDIインタフェースは、3つの部分に分割される。それぞれは類似の機能を提供しているが、それぞれがUSBバス・トポロジのどの部分でアドレス指定することができるかという内蔵された制約も有している。図3に示すインプリメンテーションの例においては、シンビアンソフトウエア社製の携帯電話用のシンビアンOS(登録商標)用に設計されている。これらの3つのインタフェースの区分は、RRawUSBD、RRawUSBDPeripheral、RRawUSBDInterfaceとして参照される。
【0046】
これらの3つのインタフェースの区分の範囲を記述する。
【0047】
RRawUSBDは、ハブドライバによって単独で用いられる。それは、バス全体へのアクセスを提供するという理由で、全てのインタフェースのポーションの中で最も強力である。例えば、任意のUSB機器についてデバイス要求を実行する機能を含んでいる。ハブドライバの主要な役割の1つは、ソフトウエア構成である。それは、USBバス・トポロジの一部分のコントロールを、USBホスト上の他のソフトウエア・エンティティにハンドオーバすることを意味する。このことが行われることを許可するために、RRawUSBDは、どのソフトウエア・エンティティが特定の周辺機器をコントロールすべきかを指名するようにAPIコールを提供する。付随的に、このソフトウエア・エンティティは、ハブドライバ自身となるであろう。
【0048】
ハブドライバの他の主な役割として、USB機器のバスへの取り付けと取り外しを管理する。デバイス分離の管理を許可するために、ハブドライバは、特定の周辺機器に関連する全てのベースドライバのセッションを無効にするような、ベースドライバへのアクセス(RRawUSBDを介して)権限を与えられている。いくつかの他のエンティティに委任されたインタフェース又は特定の周辺デバイスのコントロールに関わらず、ハブドライバは、この能力を保有している。これは、特定の機器が、物理的又は電気的にUSBトポロジから分離される場合に必要である。特に、その機器が、取り付けられた他の下流の周辺機器を伴うハブである場合に必要である。ベースドライバのセッションの無効化が意味するところとして、そのセッション上で現在未処理の全ての要求がエラーとされ、また、そのセッション上で処理されたばかりの要求もエラーとされる。
【0049】
RRawUSBDPeripheralインタフェースは、ラッパークラスを通して、新しいデバイスが列挙される間、ハブドライバによって間接的に用いられる。また、例えば、USB周辺機器をコントロールするように指名された他のソフトウエア・エンティティによって(再度、間接的に)用いられる。それは、RRawUSBDと類似の機能を有しているが(デバイス要求を実行する能力を含む)、その使用は、特定のUSB機器に制限される。
【0050】
RRawUSBDPeripheralインタフェースは、どのソフトウエア・エンティティがRRawUSBDPeripheralの特定のインスタンスが表す周辺機器をコントロールすべきかを指名するための機能を提供する。それは、また、どのソフトウエア・エンティティが同じ周辺機器に属する特定のインタフェースをコントロールすべきかを指名するための機能も提供している。
【0051】
RRawUSBDInterfaceは、時折、新しいデバイスが列挙される間、ハブドライバによって、(ラッパークラスを通して間接的に)用いられる。また、USBインタフェースをコントロールするように指名された他のソフトウエア・エンティティによって、(再度、間接的に)用いられる。それは、RRawUSBDの機能の上位集合を有している。しかしながら、その使用は、特定のUSB機器上の特定のUSBインタフェースに制限される(インタフェース番号とUSB機器のアドレスとの組み合わせによって識別される)。
【0052】
このインタフェースが、RRawUSBDとRRawUSBDPeripheralインタフェースのほかに提供する特別な機能として以下のものがある。それは、リード及びライト要求(USBの専門用語では、そのような要求は、I/O要求パケット、即ち、「IRP」として知られている)をキューイングすることに関連している。また、それは、パイプポリシーの設定(転送の前処理において特定のパイプを初期化すること)に関連しており、また、様々なインタフェースとエンドポイント関連の状態コントロール・メカニズム(例えば、EPを停止する、若しくは、停止をクリアする)に関連している。
【0053】
幾つかの示唆されたファンクション名と共に図3に示されたUSBIデザインを用いて、図4は、ハブドライバから別個のプロセスにおいて動作している周辺ドライバのインプリメンテーションへのUSB周辺機器のコントロールのより簡易化されたハンドオーバを示す図である。最初に、USBホストのハブドライバは、(既に特定の周辺機器用のコントロールがどこに割り当てられるべきかということを決定している)、ファンクションコール「NominateDeviceControl()」によって、RRawIUSBDIへのデバイスコントロールを指名する。それに応じて、ハブドライバはトークンを受信する。ハブドライバは、その後、ハブドライバ・プロセスと周辺ドライバ・プロセスとの間のプロセス境界を横切るスタート(Start)コールを初期化する。周辺ドライバ・プロセスは、その後、トークンの使用を通して、周辺機器用の直接のコントロールを要求することができる。
【0054】
好ましくは、周辺ドライバ又は機能ドライバは、向上された機能を提供するためにコンピューティング・デバイスのOSの範囲内での様々なエリアにおいて動作する必要がある。同時に、周辺ドライバ又は機能ドライバは、それらが識別されロードされ活性化される中で、標準的なインタフェースをUSBのハブドライバに提供する必要がある。しかしながら、もし、ドライバが、単一のソフトウエア・エンティティと考えられる場合には、これらの要求を調整することは難しい。これら2つの要求を調整するために、ドライバは2つの部分に分割される。図5は、そのようなドライバをドライバ・コントローラとドライバ・インプリメンテーションとして参照される2つの部分に分割した例を示している。
【0055】
ドライバ・コントローラは、ロードされハブドライバによって直接に用いられるドライバ部分である。ドライバのこの部分は、ドライバ検索に含まれるように、デバイスドライバ・プラグイン・メカニズムに統合する必要がある。もし、最も適切なドライバとして選択された場合には、ロード及び活性化され、非活性化及びアンロードされることができる。
【0056】
ドライバ・インプリメンテーションは、幾つかの現存するOSフレームワークの範囲内で動作し、USB周辺機器の機能を全体としてOSに有効とするためにUSBトポロジの一部分をコントロールするドライバ部分である。
【0057】
図5は、ACM(Abstract Control Model)ドライバが、どのようにして、そのような2つの部分としてインプリメントされることができるかを示している。ACMドライバは、USB−OTG仕様のデータとファックス目的部分とフォーム部分との両方に用いられるデバイスクラスのプロトコルである。また、2つの部分とは、ハブドライバ・プロセスの範囲内で動作するドライバのACMホスト・ドライバ・コントローラと、C32プロセスの範囲内で動作するACMホスト・ドライバ・コントローラである。それは、シンビアンOSの範囲内におけるコミュニケーション・ドライバである。ACMホスト・ドライバ・コントローラがハブドライバによって直接に用いられることを図5から見出すことができる。しかしながら、ACMホスト・ドライバ・インプリメンテーションは、ACMホスト・ドライバ・コントローラによって活性化される。従って、ACMドライバの2つの部分は、2つのプロセス間を拡張するコントロールパスによって連結されている。というのも、ドライバ・コントローラ部分は、ドライバ・インプリメンテーション部分を活性化し、非活性化する幾つかの手段を必要とするからである。それは、インプリメンテーションによって要求されたトークンをドライバ・コントローラからドライバ・インプリメンテーションに伝達することを含んでいる。ドライバ・コントローラは、それゆえ、OSフレームワークの十分な知識を備えている。というのも、ドライバ・コントローラは、コントロール・パスが確立されるために、ドライバ・インプリメンテーションがどこに位置するかを知る必要があるからである。
【0058】
上記の記述から見出されることとして、本発明は、USB−OTGテクノロジをインプリメントする好適な方法を提供する。その理由として、システム周辺において、コントロールされた機能分配を許可するからである。特に、強調されることとして、USB−OTGは、従来、オープン型のオペレーティング・システムにおいてインプリメントされていなかった。しかしながら、本発明は、そのようなインプリメンテーションを安全かつ確実に達成することを可能とする。上述のトークン・パッシング・メカニズムは、オペレーティング・システムの範囲内におけるプロセス間のUSBトポロジの定義された一部分のコントロールを分配する手段を提供する。権限を与えられたプロセスのみが、コントロールを要求することを許可される。また、その場合においても、USBトポロジの定義された一部分についてのみである(おそらくは、単一のUSB周辺機器又は単一のUSB機能)。
【0059】
このことが、クローズ型組み込みオペレーティング・システムにとっての問題とならないであろう一方で、新しいドライバをインストールすることが可能なオープン型組み込みオペレーティング・システムにおいては、欠陥があり悪意のあるコードによるインパクトを最小限とすることは極めて重要である。USBトポロジへのコントロールを分割し、コントロールを分配することによって、単一のUSB周辺機器又は単一のUSB機能の操作に対して、欠陥があり悪意のあるコードの有害な影響を制限することが可能となる。
【0060】
本発明は、特定の実施形態を参照して記載されているが、付加された請求項により特定された本発明の範囲内において変更される場合も、本発明の範囲として考えられる。
【図面の簡単な説明】
【0061】
【図1】代表的なUSBホスト・インプリメンテーションの範囲内におけるレイヤと機能ブロックとを概略的に示す図である。
【図2】図1に示されるUSBハブドライバの役割を概略的に示す図である。
【図3】本発明の実施形態に係るUSBドライバ・インタフェースの機能区分を示す図である。
【図4】ハブドライバから、コンピューティング・デバイス上の別個のプロセスで動作し図3に示されるUSBドライバ・インタフェースの区分を用いる周辺ドライバに、USB周辺機器のコントロールをハンドオーバするインプリメンテーションを示す図である。
【図5】ドライバ・コントローラと、本発明に係るUSB用のドライバ・インプリメンテーションとの間の区分の一例を示す図である。

【特許請求の範囲】
【請求項1】
USBルートハブを有するUSBトポロジを備えたコンピューティング・デバイスに少なくとも1つのUSB機器を接続する方法であって、
前記USBトポロジの一部分のコントロールは、前記USBトポロジの一部分に関連付けられた電子トークンの提示に応じて、ソフトウエア・エンティティに許可されるのみである方法。
【請求項2】
前記電子トークンは、前記USBトポロジの前記USBルートハブから発行される、請求項1に記載の方法。
【請求項3】
電子トークンの所有権は、
前記電子トークンを第2のソフトウエア・エンティティに提供する第1のソフトウエア・エンティティと、前記USBルートハブに前記トークンを提示する前記第2のソフトウエア・エンティティとを用いて、
前記第1のソフトウエア・エンティティから前記第2のソフトウエア・エンティティに転送される、請求項1又は2記載の方法。
【請求項4】
前記少なくとも1つのソフトウエア・エンティティは、プロセスと、スレッドと、クラスとを含む、請求項3に記載の方法。
【請求項5】
第1のトークン・タイプが、USB周辺ドライバ用に用いられ、第2のトークン・タイプが、USB機能ドライバ用に用いられる、請求項1乃至4のいずれか1項に記載の方法。
【請求項6】
エンティティは、元々指名されていた前記エンティティと、前記USBルートハブとのいずれかに対して、前記電子トークンをハンドオーバすることにより、前記USBトポロジの一部分のコントロールを放棄する、請求項1乃至5のいずれか1項に記載の方法。
【請求項7】
更に、電子トークンを提示するエンティティは前記USBトポロジの一部分のコントロールを許可されるべきということを、チェックするための能力モデルを用いる工程を備える、請求項1乃至6のいずれか1項に記載の方法。
【請求項8】
前記電子トークンは、オープン型の分配メカニズムを使用して分配される、請求項7に記載の方法。
【請求項9】
前記オープン型の分配メカニズムは、パブリッシュ・アンド・サブスクライブのメカニズムを含む、請求項8に記載の方法。
【請求項10】
前記USBトポロジは、USB−OTG仕様に従ってインプリメントされる、請求項1乃至9のいずれか1項に記載の方法。
【請求項11】
USBルートハブを有するUSBトポロジを備え、前記USBトポロジの一部に関連付けられた電子トークンの提示に応じて、ソフトウエア・エンティティに許可されるように、前記USBトポロジの一部分のコントロールを可能とするように構成されたコンピューティング・デバイス。
【請求項12】
前記電子トークンは、前記USBトポロジの前記USBルートハブから発行される、請求項11に記載のコンピューティング・デバイス。
【請求項13】
電子トークンの所有権は、
前記電子トークンを第2のソフトウエア・エンティティに提供する第1のソフトウエア・エンティティと、前記USBルートハブに前記トークンを提示する前記第2のソフトウエア・エンティティとを用いて、
前記第1のソフトウエア・エンティティから前記第2のソフトウエア・エンティティに転送される、請求項11又は12記載のコンピューティング・デバイス。
【請求項14】
前記少なくとも1つのソフトウエア・エンティティは、プロセスと、スレッドと、クラスとを含む、請求項13に記載のコンピューティング・デバイス。
【請求項15】
第1のトークン・タイプが、USB周辺ドライバ用に用いられ、第2のトークン・タイプが、USB機能ドライバ用に用いられる、請求項11乃至14のいずれか1項に記載のコンピューティング・デバイス。
【請求項16】
エンティティは、元々指名されていた前記エンティティと、前記USBルートハブとのいずれかに対して、前記電子トークンをハンドオーバすることにより、前記USBトポロジの一部分のコントロールを放棄する、請求項11乃至15のいずれか1項に記載のコンピューティング・デバイス。
【請求項17】
電子トークンを提示するエンティティは前記USBトポロジの一部分のコントロールを許可されるべきということをチェックするために、能力モデルが用いられる、請求項11乃至16のいずれか1項に記載のコンピューティング・デバイス。
【請求項18】
前記電子トークンは、オープン型の分配メカニズムの使用を通して分配される、請求項17に記載のコンピューティング・デバイス。
【請求項19】
前記オープン型の分配メカニズムは、パブリッシュ・アンド・サブスクライブのメカニズムを含む、請求項18に記載のコンピューティング・デバイス。
【請求項20】
前記USBトポロジは、USB−OTG仕様に従ってインプリメントされる、請求項11乃至19のいずれか1項に記載のコンピューティング・デバイス。
【請求項21】
携帯電話を備えた請求項11乃至20のいずれか1項に記載のコンピューティング・デバイス。
【請求項22】
請求項1乃至10のいずれか1項に記載の方法に従って、コンピューティング・デバイスを動作させるオペレーティング・システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2008−539484(P2008−539484A)
【公表日】平成20年11月13日(2008.11.13)
【国際特許分類】
【出願番号】特願2008−508285(P2008−508285)
【出願日】平成18年4月26日(2006.4.26)
【国際出願番号】PCT/GB2006/001495
【国際公開番号】WO2006/114598
【国際公開日】平成18年11月2日(2006.11.2)
【出願人】(505458762)シンビアン ソフトウェア リミテッド (45)
【氏名又は名称原語表記】SYMBIAN SOFTWARE LIMITED
【住所又は居所原語表記】2−6 Boundary Row,Southwark, London,SE1 8HP, United Kingdom
【Fターム(参考)】