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

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

Info

Publication number
JP2008539484A
JP2008539484A JP2008508285A JP2008508285A JP2008539484A JP 2008539484 A JP2008539484 A JP 2008539484A JP 2008508285 A JP2008508285 A JP 2008508285A JP 2008508285 A JP2008508285 A JP 2008508285A JP 2008539484 A JP2008539484 A JP 2008539484A
Authority
JP
Japan
Prior art keywords
usb
driver
topology
token
entity
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.)
Withdrawn
Application number
JP2008508285A
Other languages
English (en)
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.)
Symbian Software Ltd
Original Assignee
Symbian Software Ltd
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 Symbian Software Ltd filed Critical Symbian Software Ltd
Publication of JP2008539484A publication Critical patent/JP2008539484A/ja
Withdrawn legal-status Critical Current

Links

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/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/44Star or tree networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Systems (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Escalators And Moving Walkways (AREA)
  • Power Steering Mechanism (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Laminated Bodies (AREA)
  • Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
  • Hydrogenated Pyridines (AREA)

Abstract

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

Description

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

Claims (22)

  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項に記載の方法に従って、コンピューティング・デバイスを動作させるオペレーティング・システム。
JP2008508285A 2005-04-27 2006-04-26 ユニバーサル・シリアル・バス機能のデリゲーション Withdrawn JP2008539484A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0508576.6A GB0508576D0 (en) 2005-04-27 2005-04-27 Delegating universal serial bus functionality
PCT/GB2006/001495 WO2006114598A1 (en) 2005-04-27 2006-04-26 Delegating universal serial bus functionality

Publications (1)

Publication Number Publication Date
JP2008539484A true JP2008539484A (ja) 2008-11-13

Family

ID=34640267

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008508285A Withdrawn JP2008539484A (ja) 2005-04-27 2006-04-26 ユニバーサル・シリアル・バス機能のデリゲーション

Country Status (8)

Country Link
US (1) US20080195790A1 (ja)
EP (1) EP1877910B1 (ja)
JP (1) JP2008539484A (ja)
CN (1) CN101171577B (ja)
AT (1) ATE499650T1 (ja)
DE (1) DE602006020263D1 (ja)
GB (2) GB0508576D0 (ja)
WO (1) WO2006114598A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4398386B2 (ja) * 2005-01-28 2010-01-13 富士通株式会社 複数の処理ノードをシリアルバスにより相互接続する装置
US7921231B2 (en) 2008-01-04 2011-04-05 Silicon Image, Inc. Discovery of electronic devices utilizing a control bus
US8090030B2 (en) 2008-01-04 2012-01-03 Silicon Image, Inc. Method, apparatus and system for generating and facilitating mobile high-definition multimedia interface
US7856520B2 (en) * 2008-01-04 2010-12-21 Silicon Image, Inc. Control bus for connection of electronic devices
US9208118B2 (en) * 2008-06-10 2015-12-08 Lg Electronics Inc. Communication device, a method of processing signal in the communication device and a system having the communication device
KR101761126B1 (ko) * 2011-08-12 2017-07-25 삼성전자 주식회사 Usb 장치, 및 그것을 포함하는 usb 시스템
US9720852B2 (en) 2013-03-29 2017-08-01 International Business Machines Corporation Universal serial bus (USB) key functioning as multiple USB keys so as to efficiently configure different types of hardware
US9245130B2 (en) 2013-03-29 2016-01-26 International Business Machines Corporation Multi-user universal serial bus (USB) key with customizable file sharing permissions
US9009359B2 (en) 2013-03-29 2015-04-14 International Business Machines Corporation Emulating multiple universal serial bus (USB) keys so as to efficiently configure different types of hardware
WO2018224455A1 (en) 2017-06-07 2018-12-13 Basf Se Substituted cyclopropyl derivatives
BR112019025191B1 (pt) 2017-06-19 2023-11-28 Basf Se Compostos de pirimidínio substituídos, composição, método para proteger culturas, semente revestida, uso dos compostos e uso de um composto
WO2019137995A1 (en) 2018-01-11 2019-07-18 Basf Se Novel pyridazine compounds for controlling invertebrate pests
WO2019175713A1 (en) 2018-03-14 2019-09-19 Basf Corporation New catechol molecules and their use as inhibitors to p450 related metabolic pathways
WO2019175712A1 (en) 2018-03-14 2019-09-19 Basf Corporation New uses for catechol molecules as inhibitors to glutathione s-transferase metabolic pathways
EP3628157A1 (en) 2018-09-28 2020-04-01 Basf Se Method of controlling insecticide resistant insects and virus transmission to plants

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185641B1 (en) * 1997-05-01 2001-02-06 Standard Microsystems Corp. Dynamically allocating space in RAM shared between multiple USB endpoints and USB host
IL137504A0 (en) * 1999-07-27 2001-07-24 Inline Connection Corp Media adapter
US6658512B1 (en) * 2000-09-28 2003-12-02 Intel Corporation Admission control method for data communications over peripheral buses
US7076536B2 (en) * 2000-12-21 2006-07-11 Microsoft Corporation Method and system to access software pertinent to an electronic peripheral device at an address based on a peripheral device identifier
GB2373884B8 (en) * 2001-03-28 2006-05-04 Nokia Corp Method of configuring electronic devices
EP1248179A1 (en) * 2001-04-03 2002-10-09 Hewlett-Packard Company Selective activation and deactivation of peripheral devices connected to a USB system
US6842902B2 (en) * 2001-08-15 2005-01-11 Sun Microsystems, Inc. Robust device driver token management for upgraded computers using legacy device cards
US7406698B2 (en) * 2003-12-30 2008-07-29 Microsoft Corporation Driver framework component for synchronizing interactions between a multi-threaded environment and a driver operating in a less-threaded software environment

Also Published As

Publication number Publication date
WO2006114598A1 (en) 2006-11-02
ATE499650T1 (de) 2011-03-15
EP1877910B1 (en) 2011-02-23
GB0608287D0 (en) 2006-06-07
EP1877910A1 (en) 2008-01-16
US20080195790A1 (en) 2008-08-14
GB2425696A (en) 2006-11-01
CN101171577B (zh) 2010-09-08
GB0508576D0 (en) 2005-06-01
CN101171577A (zh) 2008-04-30
DE602006020263D1 (de) 2011-04-07

Similar Documents

Publication Publication Date Title
JP2008539484A (ja) ユニバーサル・シリアル・バス機能のデリゲーション
JP4579547B2 (ja) 優れたセキュリティのためのセキュリティデバイスの直接接続により埋め込まれたプロセッサ
US8478982B2 (en) Media access control security management in physical layer
US8806502B2 (en) Batching resource requests in a portable computing device
US8631414B2 (en) Distributed resource management in a portable computing device
US8082551B2 (en) System and method for sharing a trusted platform module
JP2002222110A (ja) ストレージシステム及び仮想プライベートボリューム制御方法
US8589954B2 (en) Method and program for selective suspension of USB network device
US7657684B2 (en) USB interrupt endpoint sharing
US20100169069A1 (en) Composite device emulation
US10824486B1 (en) Two-way clipboard exchange in virtual console
US9087031B2 (en) Method and program for selective suspension of USB device
US20060242258A1 (en) File sharing system, file sharing program, management server and client terminal
JP4785870B2 (ja) 非正規な読み込みオペレーションを介する周辺機器への信号通信
KR20000035025A (ko) 클라이언트 전원이 오프되어 있는 동안에 클라이언트 컴퓨터 시스템의 개개의 초기화 셋팅에 원격으로 억세스하기 위한 데이터 처리 시스템 및 방법
US11934289B2 (en) Graph-based data multi-operation system
US11829466B2 (en) Device access control system
US11301259B1 (en) System control processor (SCP) cloning system
US11601515B2 (en) System and method to offload point to multipoint transmissions
Kwon et al. Design and implementation of peripheral sharing mechanism on pervasive computing with heterogeneous environment
CN117294697A (zh) 一种usb设备重定向的方法、装置、网络设备及介质
McEwan et al. A process oriented approach to USB driver development
JP2001256168A (ja) Usbデバイス
Barnes et al. Process‐oriented device driver development
Waschke Storage Standards: Progress in the Datacenter

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090309

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090319

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090319

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090410

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20110523