(57)【要約】  例示的実施形態は、USBデバイスおよびUSBホストを含むUSBシステムにおけるデバイスの高速の数え上げ（エヌメレーション）に向けられている。前記USBデバイスは、２つのデバイス記述子と、前記USBデバイスの操作のためのファームウェアを保有するメモリと、前記ファームウェアを実行するコントローラとを含んでいる。第１のデバイス記述子は、ファームウェア・ロード・モードにおいて前記USBデバイスを数え上げるためのものであって、また第２のデバイス記述子は、操作モードにおいて前記USBデバイスを数え上げるためのものである。前記USBホストは、前記第１のデバイス記述子を使用して、前記USBデバイスの1回目の数え上げをコントロールする。前記1回目の数え上げの後、前記USBホストは、前記USBデバイスから、２回目の数え上げであることを示す表示子を受信し、前記第２のデバイス記述子を使用して、前記USBデバイスの２回目の数え上げをコントロールする。【選択図】図３
2012515400.tif 000002
【特許請求の範囲】
【請求項１】
USBデバイスであって、
前記USBデバイスの操作のためのファームウェアを保有するためのメモリと、
前記ファームウェアを実行するためのコントローラと
ファームウェア・ロード・モードにおいて前記USBデバイスを数え上げるための第１のデバイス記述子と、および；
操作モードにおいて前記USBデバイスを数え上げるための第２のデバイス記述子と
を具備するデバイスであって、
ここにおいて、前記ファームウェアは、
前記ファームウェア・ロード・モードをコントロールするための第１のファームウェアと、および
前記操作モードをコントロールするための第２のファームウェアと
具備する、USBデバイス。
【請求項２】
前記第１のファームウェアは、USBホスト上にあって、前記ファームウェア・ロード・モードの間に前記メモリにダウンロードを行うためのものである、請求項１のUSBデバイス。
【請求項３】
不揮発性メモリをさらに具備する請求項１のUSBデバイスであって、前記第１のファームウェアは、前記ファームウェア・ロード・モードの間に前記メモリに移動すること、または前記ファームウェア・ロード・モードの間に前記不揮発性メモリから前記コントローラによって実行することからなるグループから選択されるモードのためである、請求項１のUSBデバイス。
【請求項４】
前記第２のファームウェアは、USBホスト上にあって、前記ファームウェア・ロード・モードの間に前記メモリにダウンロードを行うためのものである、請求項１のUSBデバイス。
【請求項５】
不揮発性メモリをさらに具備する請求項１のUSBデバイスであって、前記第２のファームウェアは、前記ファームウェア・ロード・モードの間に前記メモリに移動すること、または前記操作モードの間に前記不揮発性メモリから前記コントローラによって実行をすることからなるグループから選択されるモードのためである、請求項１のUSBデバイス。
【請求項６】
前記第１のデバイス記述子は、第１のベンダー識別子および第１の製品識別子を具備する、請求項１のUSBデバイス。
【請求項７】
前記第２のデバイス記述子は、第２のベンダー識別子および第２の製品識別子を具備する、請求項６のUSBデバイス。
【請求項８】
前記第１のベンダー識別子および前記第２のベンダー識別子は、同じものである、請求項７のUSBデバイス。
【請求項９】
前記USBデバイスは、アンテナをさらに含み、かつ、前記USBデバイスは、広域ネットワークデバイスとしてワイヤレス操作のためのものである、請求項１のUSBデバイス。
【請求項１０】
USBデバイスとの操作可能な連結のためのUSBホストであって、以下のことをコンピュータによって実行するためのコンピュータ命令を具備するUSBホスト：
前記USBデバイスからの第１のデバイス記述子を使用して、前記USBデバイスの1回目の数え上げを実行することと、
前記USBデバイスから、２回目の数え上げであることを示す表示子を受信することと、および
前記USBデバイスからの第２のデバイス記述子を使用して、前記USBデバイスの２回目の数え上げを実行すること。
【請求項１１】
前記コンピュータによる実行のための前記コンピュータ命令は、前記1回目の数え上げの間に前記USBデバイス上の操作をコントロールするための第１のファームウェアを、前記1回目の数え上げの間に前記USBホストから前記USBデバイス上のメモリに移すための命令をさらに含む、請求項１０のUSBホスト。
【請求項１２】
前記コンピュータによる実行のための前記コンピュータ命令は、第２のファームウェアを、前記1回目の数え上げの間に前記USBホストから前記USBデバイス上のメモリに移すための命令をさらに含み、前記第２のファームウェアは、前記２回目の数え上げ後の操作モードの間に前記USBデバイス上の操作をコントロールするためのものである、請求項１０のUSBホスト。
【請求項１３】
USBデバイスであって、
前記USBデバイスの操作のためのファームウェアを保有するためのメモリと、
前記ファームウェアを実行するためのコントローラと、
ファームウェア・ロード・モードにおいて前記USBデバイスを数え上げるための第１のデバイス記述子と、および
操作モードにおいて前記USBデバイスを数え上げるための第２のデバイス記述子と
を具備するUSBデバイスと、および
前記USBデバイスに操作可能的に連結されているUSBホストであって、以下のことによって前記USBデバイスをコントロールするためのUSBホストと
を具備するシステム：
前記第１のデバイス記述子を使用して、前記USBデバイスの1回目の数え上げをコントロールすることと、および
前記1回目の数え上げの後に、
前記USBデバイスから２回目の数え上げであることを示す表示子を受信し、および
前記第２のデバイス記述子を使用して、前記USBデバイスの２回目の数え上げをコントロールすること。
【請求項１４】
第１のファームウェアは、前記USBホスト上にあって、前記ファームウェア・ロード・モードの間に前記メモリにダウンロードを行うためのものである、請求項１３のシステム。
【請求項１５】
前記USBデバイスは、不揮発性メモリをさらに具備し、前記不揮発性メモリ内の第１のファームウェアは、前記ファームウェア・ロード・モードの間に前記メモリに移動すること、または前記ファームウェア・ロード・モードの間に前記不揮発性メモリから前記コントローラによって実行をすることからなるグループから選択されるモードのためのものである、請求項１３のシステム。
【請求項１６】
前記操作モードをコントロールするための第２のファームウェアは、前記USBホスト上にあって、前記ファームウェア・ロード・モードの間に前記メモリにダウンロードを行うためのものである、請求項１３のシステム。
【請求項１７】
USBトポロジー上のUSBデバイスを検出することと、
第１のファームウェアおよび第１のデバイス記述子を用いて前記USBデバイスを数え上げることと、
ファームウェア・ロード・モードにおいて第１のクライアントソフトウェアによるアクセスのために前記USBデバイスを有効にすることと、
前記USBデバイスのメモリに第２のファームウェアをダウンロードすることと、
第２のデバイス記述子を用いて前記USBデバイスを数え上げることと、および
前記第２のファームウェアを使用して、操作モードにおいて第２のクライアントソフトウェアによるアクセスのために前記USBデバイスを有効にすることと
を具備する方法。
【請求項１８】
広域ネットワークデバイスにおいてワイヤレス通信を用いて前記USBデバイスを操作することをさらに具備する請求項１７の方法。
【請求項１９】
前記第２のファームウェアをダウンロードすることは、USBホストから前記メモリにダウンロードを行うことと、前記USBデバイス上の不揮発性メモリから前記メモリにダウンロードを行うこととからなるグループから選択される行為を具備する、請求項１７の方法。
【請求項２０】
前記第１のファームウェアを用いて前記USBデバイスを数え上げることは、前記メモリに前記第１のファームウェアをダウンロードすることをさらに具備する、請求項１７の方法。
【請求項２１】
前記第１のファームウェアをダウンロードすることは、USBホストから前記メモリにダウンロードを行うことと、前記USBデバイス上の不揮発性メモリから前記メモリにダウンロードを行うこととからなるグループから選択される行為を具備する、請求項２０の方法。
【請求項２２】
前記第１のデバイス記述子は、第１のベンダー識別子および第１の製品識別子を具備する、請求項１７の方法。
【請求項２３】
前記第２のデバイス記述子は、第２のベンダー識別子および第２の製品識別子を具備する、請求項２２の方法。
【請求項２４】
前記第１のベンダー識別子および前記第２のベンダー識別子は、同じものである、請求項２３の方法。
【請求項２５】
USBトポロジー上のUSBデバイスを検出するための手段と、
第１のファームウェアおよび第１のデバイス記述子を用いて前記USBデバイスを数え上げるための手段と、
ファームウェア・ロード・モードにおいて第１のクライアントソフトウェアによるアクセスのために前記USBデバイスを有効にするための手段と、
前記USBデバイスのメモリに第２のファームウェアをダウンロードするための手段と、
第２のデバイス記述子を用いて前記USBデバイスを数え上げるための手段と、および
前記第２のファームウェアを使用して、操作モードにおいて第２のクライアントソフトウェアによるアクセスのために前記USBデバイスを有効にするための手段と
を具備するシステム。
【請求項２６】
広域ネットワークデバイス中のワイヤレス通信を用いて前記USBデバイスを操作するための手段をさらに具備する請求項２５のシステム。
【請求項２７】
前記第２のファームウェアをダウンロードするための前記手段は、USBホストから前記メモリにダウンロードを行う手段と、および前記USBデバイス上の不揮発性メモリから前記メモリにダウンロードを行うための手段とからなるグループから選択される手段を具備する、請求項２５のシステム。
【請求項２８】
前記第１のファームウェアを用いて前記USBデバイスを数え上げるための前記手段は、前記第１のファームウェアを前記メモリにダウンロードするための手段をさらに具備する、請求項２５のシステム。
【請求項２９】
前記第１のファームウェアをダウンロードするための前記手段は、USBホストから前記メモリにダウンロードを行うための手段と、および前記USBデバイス上の不揮発性メモリから前記メモリにダウンロードを行うための手段とからなるグループから選択される手段を具備する、請求項２８のシステム。
【請求項３０】
前記第１のデバイス記述子は、第１のベンダー識別子および第１の製品識別子を具備する、請求項２５のシステム。
【請求項３１】
前記第２のデバイス記述子は、第２のベンダー識別子および第２の製品識別子を具備する、請求項３０のシステム。
【請求項３２】
前記第１のベンダー識別子および前記第２のベンダー識別子は、同じものである、請求項３１のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
USB(Universal Serial Bus)は、種々様々な周辺機器にコンピュータを取り付けるための周辺機器インターフェース標準である。これらの周辺機器は、一般にファンクション（function）と呼ばれており、キーボード、マウス、カメラ、モニタ、モデム、およびその他の周辺機器のようなハブおよびデバイスを含んでもよい。
【０００２】
USBシステムの諸デバイスは、各デバイスが１つまたは複数のハブを通じてUSBホストに接続される「層状星形トポロジー」（a tiered star topology）でUSBホストに接続されている。USBシステムは、ポーリングされるバス（a polled bus）であって、ここにおいては、ホストコンピュータが１つのUSBコントローラを含んでおり、このUSBコントローラがバス上のすべての通信を管理し、デバイスの取り付けまたは取り外しによる変化がないかバス・トポロジーをモニタする。
【０００３】
ほとんどのバス・トランザクションは、３つのパケットを含んでいる。ホストコントローラは、トランザクションのタイプおよび方向と、デバイスのアドレスと、エンドポイントの番号とを記述しているトークンパケットを送信する。アドレス付けされているUSBデバイスは、そのトークンパケットから自分のアドレスを認識する。トークンパケットの中で特定されている方向に基づいて、ホストからアドレス先デバイスへ、またはアドレス先デバイスからホストへのいずれかへ、データが転送される。たいていの場合、データの到達先は、転送データについての受信ステータスを示すハンドシェイクパケットを用いて応答をする。
【０００４】
USBシステムが多数のバス接続周辺機器をサポートするのに対し、USBプロトコルは、ポイント・ツー・ポイントのプロトコルである。言いかえれば、単一のホストが一度にデータを送れるのは、一義的にアドレス付けされている単一のデバイスに対してである。かくして、様々なデバイスへのデータは、時分割多重化されていて、そのことによって、各デバイスは、そのタイムスロットの間に、データを受信または送信することができるようになっている。
【０００５】
USBシステムは、一般に長さが１ミリ秒のフレームを定義し、そのフレーム中で、バス上の多くのデバイスまたはすべてのデバイスに異なるタイムスロットを割り当てることができる。各デバイスは、固有アドレスを持っており、そのことによって、各デバイスは、送信データが自分宛てのものであるかどうかわかる。あるいは、各デバイスは、送信データといっしょに当該固有アドレスをホストに供給し、そのことによって、ホストは、どのデバイスからそのデータが受信されているかわかる。
【０００６】
USBデバイスが最初プラグインされるとき、USBデバイスは、初期化、数え上げ（enumeration）および設定のプロセスを実行し、USBホストとその上のクライアントソフトウェアとによる使用のためにUSBデバイスを起動する。この起動プロセスは、大量のファームウェアまたは他の起動要求を備えた複雑なUSBデバイスの場合にあっては、時間的に相当長いものになる可能性がある。しかしながら、多くのオペレーティングシステムは、USBデバイスがオペレーティングシステムにとって利用可能となるまでの起動プロセスの実行に要する時間について認証要件を課している。
【０００７】
ここに、USBデバイスの複雑な構成をなお許容しながら、オペレーティングシステムの要求を充足するように高速起動プロセスを実行するシステム、装置および方法に対するニーズがある。
【図面の簡単な説明】
【０００８】
【図１】図１は、USBシステムについてのトポロジー図を示している。
【図２】図２は、本発明の例示的実施形態における論理的通信パイプの単純化されたブロック図を示している。
【図３】図３は、本発明の例示的実施形態の単純化されたブロック図を示している。
【図４】図４は、本発明の実施形態に準拠している初期化プロセスの状態ブロック図を示している。
【図５】図５は、本発明の実施形態に準拠している数え上げプロセスの単純化されたフローチャートである。
【図６Ａ】図６Ａは、1回目の数え上げプロセスの後にオペレーティングシステムによって表示される例示的コントロールパネルを示している。
【図６Ｂ】図６Ｂは、２回目の数え上げプロセスの後にオペレーティングシステムによって表示される例示的コントロールパネルを示している。
【発明の詳細な説明】
【０００９】
本件明細書において、「例示的」という語は「例、事例または実例として役立つ」ということを意味するために使用されている。本件明細書において説明されているいかなる実施形態も、必ずしも他の実施形態に比べて好ましいまたは有利であるとして解釈されるべきではない。
【００１０】
添付の図面に関連して以下において述べられる発明の詳細な説明は、本発明の例示的実施形態の説明として意図されているものであって、本発明が実行され得るただ一つの実施形態を表わすように意図されているものではない。本件明細書を通じて使用されている「例示的」という語は、「例、事例または実例として役立つ」ということを意味しているのであって、必ずしも他の例示的実施形態に比べて好ましいまたは有利であるとして解釈されるべきではない。発明の詳細な説明は、発明の例示的実施形態についての完全な理解を提供する目的で特定の詳細を含んでいる。これらの特定の詳細がなくても発明の例示的実施形態が実行可能であることは当業者にとって明白であろう。いくつかの事例においては、よく知られている構成やデバイスは、本件明細書提示の例示的実施形態の新規性をあいまいにしてしまうことを避けるために、ブロック図の形式で示されている。
【００１１】
本発明の例示的実施形態は、高速USB起動プロセスを実行することに向けられている。そのプロセスは、USBデバイスのための比較的長い設定プロセスをなお許容しつつ、USBデバイスの初期化、数え上げおよび設定を含んでもよい。
【００１２】
図１は、従来のUSBシステムのためのトポロジー図１００を示している。USBホスト１１０は、多数の接続ポイントを備えているルートハブを含んでいる。図１において、第１のファンクション１５０Ａは、１つの接続ポイントにおいて接続され、第１のハブ１２０Ａは、第２の接続ポイントに接続されている。第１のハブ１２０Ａは、多数の接続ポイントを含んでいる。第２のファンクション１５０Ｂ、第２のハブ１２０Ｂおよび第３のハブ１２０Ｃは、第１のハブ１２０Ａに接続されている。第２のハブ１２０Ｂは、多数の接続ポイントを含んでいてもよい。第３のファンクション１５０Ｃは、第２のハブ１２０Ｂに接続されている。第３のハブ１２０Ｃは、多数の接続ポイントを含んでいる。第４のファンクション１５０Ｄおよび第５のファンクション１５０Ｅは、第３のハブ１２０Ｃに接続されている。
【００１３】
ハブは、アップストリームポート上の受信データを各々のダウンストリームポートに送信すること、およびダウンストリームポートの１つからアップストリームポートへ情報を送信することにより中継器として機能する。与えられた任意の時間において、ただ１つのファンクションまたはホストのみがバス上に情報を置いているはずである。かくして、例えば、ホストは、第５のファンクション１５０Ｅ宛ての情報を送ることができる。情報は、第５のファンクション１５０Ｅへの途上、第１のハブ１２０Ａおよび第３のハブ１２０Ｃを通って流れる。
【００１４】
USBファンクションとは、一般に、ある能力をデバイスに与えるUSBデバイスである。例えば、USBファンクションは、USBデバイス、USBハブ、USBホストコントローラ、USBトランシーバ等であってよい。
【００１５】
USBハブは、ポート上でのUSBデバイスの取り付けおよび取り外しを報告するためのステータスビットを含んでいる。USBホストは、トポロジー中のすべてのデバイスについての接続ステータスを決定するために、およびすべての接続されているUSBデバイスのマップを維持するために、USBハブに質問をすることができる。USBデバイスがポートから取り外されるとき、USBハブは、ポートを無効（disable）にし、ステータスビットによって取り外しを報告する。取り外されたデバイスがUSBハブである場合、ホストコントローラソフトウェアは、取り外されたUSBハブに接続されていたすべてのUSBデバイスが今は未接続状態にあるということを示すためにマップを更新する。
【００１６】
ホストコンピュータとUSBデバイス上の特定のエンドポイントとの間でUSBデータ転送が起きる。ホストとエンドポイントとの間の関係は、一般にパイプと呼ばれる。一般に、ある１つのパイプ中のデータ移動は、他のパイプ中のデータ移動と独立である。かくして、与えられたUSBデバイスは、多数のパイプを含んでもよく、またUSBシステム全体の中に多数のパイプがあってもよい。
【００１７】
USBプロトコルは、４つの基本的タイプのデータ転送をサポートする；すなわち、コントロール転送、バルクデータ転送、インタラプトデータ転送および等時性データ転送の４つである。コントロール転送は、デバイスが取り付けられるときにデバイスを設定するために、および他のデバイス固有タスク（例えば、デバイス上の他のエンドポイントをコントロールすること）を管理するために使用される。
【００１８】
バルクデータ転送は、一般にバースト的なデータであってバンド幅要件またはレイテンシ要求に特に制約のないデータに対して使用される。
【００１９】
インタラプトデータ転送は、人間が感知可能なデータのような低いレイテンシ要求を有するデータに対して使用される。
【００２０】
等時性（アイソクロナス）データ転送は、実質的に一定のバンド幅および低いレイテンシを要求するデバイスに対して、USBバンド幅の事前にネゴシエートされた部分を使用する。そのようなデータの例は、ビデオおよびオーディオのストリーミングデータである。
【００２１】
図２は、本発明の例示的実施形態における論理的通信パイプの単純化されたブロック図を示している。USBホスト１１０は、多数のパイプ１９０のためにデータを供給または受信する多数のバッファ１７０を含んでいてもよい。各パイプは、USBデバイス２００の内部の異なるエンドポイント（２１０と２２０）に接続されてもよい。ホスト内のクライアントソフトウェア１６０は、様々なバッファ１７０から情報を受信する、または様々なバッファ１７０に情報を送信する。エンドポイント０ ２１０は、以下において説明されるように、コントロール転送のためのものである。USBデバイス２００は、その他の情報を受信および送信するために、またはその他のファンクションをコントロールするために、他のエンドポイント２２０を含んでいてもよい。
【００２２】
USBパイプ１９０は、USBデバイス２００上のエンドポイント（２１０と２２０）へのメモリバッファ１７０を介して、USBホスト１１０上のソフトウェアとソフトウェアとの間でデータを移す能力を表わす論理的構成物である。パイプ通信モードには２つのタイプがある。パイプを通って移動するストリームデータは、USB定義の構造を有していない。パイプを通って移動するメッセージデータは、USBアーキテクチャーによって定義されたあるタイプの構造を含んでいる。
【００２３】
図３は、本発明の例示的実施形態の単純化されたブロック図を示している。図３は、より機能的な表現によってUSBシステムを例示しているのに対し、図２は、データフロー的表現としてUSBシステムを例示している。
【００２４】
図３において、USBホスト１１０は、本発明の実施形態にしたがって、USBバス２０５を通ってUSBデバイス２００に接続されているものとして示されている。もちろん、図１のUSBトポロジー１００について、上で説明されたような様々なレベルにおいて接続されている多数のUSBデバイス２００があってもよい。USBデバイス２００は、アドレスレジスタ２３０およびエンドポイント０（Ep0）２１０（本件明細書ではデフォルトコントロールエンドポイント２１０とも呼ばれる）を含んでいる。USBデバイス２００はまた、他のエンドポイント２２０を含んでいてもよい。
【００２５】
エンドポイント（２１０と２２０）は、USBデバイス２００の一義的に識別可能な部分である。各USBデバイス２００は、独立したエンドポイントの集合を含んでいる。各USBデバイス２００は、システムによって割り当てられ、アドレスレジスタ２３０に含まれる一義的アドレスを含んでいる。さらに、USBデバイス２００の内の各エンドポイントには、固有のアドレスが与えられる。さらに、各エンドポイントは、ホスト方向のデータフローまたはエンドポイント方向のデータフローを備えた一方向性のものである。かくして、ホストは、与えられたエンドポイントをデバイスアドレスとエンドポイントアドレスとフロー方向との組み合わせとして認識する。デフォルトコントロールエンドポイント２１０は、エンドポイントアドレス０が割り当てられており、コントロール転送をサポートする。
【００２６】
USBデバイス２００はすべて、入力および出力の双方のためのデフォルトコントロールエンドポイント２１０を含む必要がある。USBシステムソフトウェアは、USBデバイス２００を初期化し、数え上げ、設定するためにデフォルトコントロールエンドポイント２１０を使用する。例えば、コントローラ２８０は、初期化、数え上げおよび設定のプロセスを実行する際にUSBホスト１１０と協力をしてもよい。さらに、コントローラ２８０は、USBデバイス２００が行うように設計されている当該タスクを行なうために、操作モードにおいて他の多くのファンクションを実行することも可能である。
【００２７】
非制限的一例として、USBデバイスは、広域ネットワーク（ＷＡＮ）デバイスとして構成され、当該技術分野において知られているように、ワイヤレス信号２９５による通信のためのアンテナを備えたＲＦモジュール２９０を含んでいてもよい。
【００２８】
USBデバイス２００は、メモリ２６０を含んでいてもよい。非制限的な例として、メモリは、コントローラによる実行のためのソフトウェアと、数え上げおよび設定に関係する情報と、USBデバイス２００の操作モードと関係する情報とを含んでいてもよい。
【００２９】
USBデバイス２００は、例えばフラッシュメモリおよびＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）メモリのような、不揮発性メモリ２７０をさらに含んでいてもよい。非制限的な例として、不揮発性メモリ２７０は、コントローラによる実行のためのソフトウェアと、数え上げおよび設定と関係する情報と、USBデバイス２００の操作モードに関係する情報とを含んでいてもよい。
【００３０】
本発明の例示的実施形態は、第１のデバイス記述子２４０および第２のデバイス記述子２５０を含んでいる。第１のデバイス記述子２４０は、第１のベンダー識別子２４２および第１の製品識別子２４４を含んでいる。第２のデバイス記述子２５０は、第２のベンダー識別子２５２および第２の製品識別子２５４を含んでいる。各デバイス記述子（２４０と２５０）について、ベンダー識別子および製品識別子は、いかなるタイプのデバイスがUSBバス２０５に接続されているか判断するために、USBホスト１１０が質問をすることができるように、固有の組み合わせを形成する。もちろん、第1および第2のベンダー識別子（２５２と２５４）は、第１のデバイス記述子２４０と第２のデバイス記述子２５０との間でベンダー識別子／製品識別子の組み合わせが異なっている限り、同じものであって差支えない。
【００３１】
オペレーティングシステムは、デバイスが素早く電力アップすることを必要とする。例えば、ウィンドウのビスタ（登録商標）の場合、すべてのデバイスは、ACPI （Advanced Configuration and Power Interface）のS３状態から２秒以内にシステム再開を行わなければならない。複雑なUSBデバイス２００の場合、この要求を満たすことは、難しいかもしれない。
【００３２】
多くのデバイスは、この問題を解決するために、デバイスに高速ハードウェアを付加したり、高速起動のためにソフトウェアイメージを制限もしくは最小化したり、または高速数え上げの達成のためにデバイス上の機能性を制限したりしている。かくして、ほとんどのUSBデバイス２００は、ベンダー識別子および製品識別子を備えた単一のデバイス記述子をただ含んでいる。
【００３３】
本発明の実施形態は、２回方式の数え上げプロセスを使用する。２回方式の数え上げが利用されると、デバイスは、素早く電力アップすることができる。というのは、１回目の数え上げは、短い時間（例えば、５００ミリ秒以下）で最小限の初期化が行われるように設計されることができるからである。このことは、高速起動というOSの要求を充足し、システム再開の完了を可能にする。１回目の数え上げの後、デバイスは、第１のモードで完全に機能的になり、次に２回目の数え上げプロセスを開始し、第２のモードで完全に機能的になる。
【００３４】
かくして、本発明の実施形態は、２つのデバイス記述子（２４０と２５０）を含んでおり、そのことによって、USBデバイス２００は、２つの異なるモードにおいて数え上げと設定を行うことができる。これら２つの異なるモードは、ファームウェア・ロード・モードおよび操作モードである。このことについては、図４-７Ｂを参照して以下においてさらに十分に説明される。結果として、USBホスト１１０は、２つのモードの各々について、別々のクライアントソフトウェア１６０モジュールを含んでいてもよい。かくして、USBホスト１１０は、ファームウェア・ロード・モードをコントロールするためのローダドライバ１６２と、操作モードをコントロールするための操作ドライバ１６４を含んでいてもよい。
【００３５】
図３は、デバイス記述子（２４０と２５０）を別々のブロックとして例示している。しかしながら、当業者は、デバイス記述子（２４０と２５０）が様々な形式で実装可能であることを認識するであろう。非制限的な例として、デバイス記述子（２４０と２５０）は、USBデバイス２００の内部の設定可能スイッチとして、不揮発性メモリ２７０に格納される値として、またはコントローラ２８０内の不揮発性メモリに格納される値として具体化されることができる。
【００３６】
図４は、本発明の実施形態に準拠している初期化および数え上げのプロセスの状態図を示している。初期化および数え上げのプロセスは、図３および図４の両方を参照して説明される。USBデバイス２００は、プラグインされると、使用される前にこの初期化および数え上げのプロセスを通過しなければならない。USBデバイス２００は、取り付けが行なわれると、「取り付け」状態５１０からスタートする。USBデバイス２００が取り付けられているハブが適切に設定されると、USBデバイス２００は、USBデバイス２００に電力が適用される「電力投入」状態５２０に移行する。USBホスト１１０は、USBデバイス２００のリセットを開始し、当該デバイスは、「デフォルト」状態５３０へ移行する。
【００３７】
デフォルト状態５３０において、USBデバイス２００は、デフォルトアドレス（一般に０）に応答をする。かくして、デフォルトコントロールエンドポイント２１０は、デフォルトアドレスにおいてアクセス可能であり、そのことによって、デバイス記述子の読解が可能となっており、かつ、USBデバイス２００の一般的起動を行なうことができるようになっている。次に、USBホスト１１０は、USBデバイス２００に固有アドレスを割り当てる。固有アドレスが割り当てられると、USBデバイス２００は、アドレス状態５４０に移行する。すべての設定が完了すると、USBデバイス２００は、それが本来行うように設計されているところの操作を行なう準備ができているという「設定ずみ」状態５６０に移行する。
【００３８】
本発明の例示的実施形態は、２つの初期化および数え上げのプロセスを通過する。かくして、USBデバイス２００は、USBデバイス２００のメモリ２６０の中にファームウェアをロードするために構成されている比較的単純なUSBデバイス２００として、最初に初期化および数え上げが行われる。結果として、USBデバイス２００は、最初に「設定ずみ」状態５６０に入るとき、ファームウェア・ロード・モードになる。ローダが完全に設定されると、USBデバイス２００は、２回目の数え上げであることを示す表示子に基づいてデフォルト状態に移行し、ロードされたファームウェアに基づいて操作モードにおいて作動する比較的複雑なUSBデバイス２００として再び初期化され数え上げられることになる。先に説明したように、USBデバイス２００は、デフォルト状態５３０、アドレス状態、および再び設定ずみ状態（ただし、今回はファームウェア・ロード・モードではなく操作モードのためであることを別として）に移行する。
【００３９】
操作モードの数え上げを始めるための、ファームウェア・ロード・モードの終わりにおける設定ずみ状態５６０から２回目の数え上げであることを示す表示子に基づくデフォルト状態５３０へのこの移行は、多くの方法で実行可能である。非制限的一例として、USBデバイス２００がデフォルト状態５３０に再入するにもかかわらず、それがファームウェア・ロード・モードにおいて以前に設定されたということ覚えておくように、USBデバイス２００が部分的にリセットされるという方法でもよい。他の非制限的一例として、ファームウェア・ロード・モードにある間に、USBデバイス２００が、USBホスト１１０を操作モードにおいて再設定せよというリクエストを送るという方法もある。
【００４０】
USBデバイス２００は、電力が中断されることがある。設定ずみ状態５６０、アドレス状態５４０およびデフォルト状態５３０のうちのいずれかから電力の中断が生じると、USBデバイス２００は、電力投入状態５２０に再移行し、リセットされてファームウェア・ロード・モードにおいて再設定されることになる。
【００４１】
USBデバイス２００は、USBホスト１１０からリセットを受信することがあるかもしれない。電力投入状態５２０、設定ずみ状態５６０およびアドレス状態５４０のうちのいずれかからリセットが生じると、USBデバイス２００は、デフォルト状態５３０へ再移行し、再設定されることになる。
【００４２】
図５は、本発明の実施形態に準拠している２回方式の数え上げプロセス６００の単純化された流れ図である。このプロセスの部分は、ＷＡＮデバイスの設定を基準として記述されることもできる。しかしながら、当業者は、上記プロセスが他の多くのUSBデバイスを用いて行なわれることも可能であることと、ＷＡＮデバイスに特有の当該部分を他のUSBデバイスに適合させることも容易に可能であることを認識するであろう。さらに、当業者にとって明白であるように、図５において説明されているプロセスのうちの多くのものは、図４の状態図の中に対応するもの（counterparts）を有している。２回方式の数え上げプロセス６００の実行は、USBホスト１１０とUSBデバイス２００の間の共同作業である。結果として、USBデバイス２００によって実行される操作もあれば、USBホスト１１０によって実行されるものもある。このことは当業者にとって明白であろう。
【００４３】
図３および図５は、２回方式の数え上げプロセス６００について説明する際に参照される。同プロセス６００は、操作ブロック６０２において始まり、有効化（enabling）信号の状態をテストすることになる。ＷＡＮデバイスにおいて、ワイヤレス通信を無効にするためにW_DISABLE_Nが使用されてもよく、アプリケーションがデバイスをリセットしてもよく、またはデバイスが接続されているシステムがデバイスへの電力を遮断してもよい。結果として、数え上げプロセスが進行する前に通信のためにデバイスが準備されていることを確かめるためにテストが行なわれる。もしUSBデバイス２００が通信のために準備されているとすると、操作ブロック６０４は、USBデバイス２００に電力を供給する。
【００４４】
操作ブロック６０６において、USBデバイス２００は、ブートイメージ（本件明細書においてはファームウェア・ロード・モードのための第１のファームウェアおよびソフトウェアとも呼ばれる）を用いて初期化をする。このブートイメージは、不揮発性メモリ２７０か、コントローラ２８０上の不揮発性メモリか、またはUSBデバイス２００上の他の不揮発性メモリの一部であってもよい。さらに、ブートイメージの部分は、ホスト上のハードドライブ上に常駐するものであって、設定プロセスの一部としてUSBデバイス２００に転送されるものであってもよい。実施形態に依存して、ブートイメージは、不揮発性メモリ２７０からコントローラ２８０によって実行されてもよく、または実行のためにメモリ２６０に移されてもよい。
【００４５】
決定ブロック６０８は、W_DISABLE_Nが１秒以上の間アクティブであるかどうか確かめるためにテストをする。言いかえれば、当該デバイスが無効化されてしまっているので、数え上げプロセスを終了させる必要がない。USBデバイス２００が無効化されると、操作ブロック６１０は、USBデバイス２００の電力を落とし、コントロールは、操作ブロック６０２に再移行し、USBデバイス２００が有効化されるのを待つことになる。操作ブロック６０８および６１０は、操作ブロック６０６の後に生じるものとして示されている。しかしながら、当業者は、無効化は、中断によって駆動されるイベントであってよく、それゆえ、プロセス中のほとんどの場所から生じ得るものであることを認識するであろう。
【００４６】
操作ブロック６１２は、とりわけ、第１のデバイス記述子２４０をホストに送ることによって、1回目の数え上げプロセスを継続する。
【００４７】
ファームウェア・ロード・モードにおいてデバイスが成功裡に数え上げられると、操作ブロック６１４は、ファームウェア（本件明細書においては第２のファームウェアまたは操作ファームウェアとも呼ばれる）をメモリ２６０に移す操作を実行する。操作ファームウェアは、ホスト上のハードドライブ上に常駐するものであって、かつメモリ２６０に転送されるものであってもよく、または、USBデバイス２００の不揮発性メモリ２７０上にあって、かつメモリ２６０に転送されるものであってよい。複雑なデバイスの場合、操作ファームウェアは、大きなものになるかもしれず、前記転送プロセスは、長いものになるかもしれない。しかしながら、USBデバイス２００は、ファームウェア・ロード・モードにおいてすでに数え上げられており、こうしていくつかのオペレーティングシステムの高速数え上げ要求をすでに満たしている。
【００４８】
操作ファームウェアがダウンロードされると、決定ブロック６１６は、操作ファームウェアがダウンロードを成功裏に行なったこと、および認証プロセスを通過したことを確認するためにテストをする。テストの結果そうでないことがわかると、コントロールは、操作ブロック６１４に戻って、再び操作ファームウェアをダウンロードすることになる。
【００４９】
認証が成功すると、操作ブロック６１８は、操作ファームウェアおよび第２のデバイス記述子２５０を使用して、２回目の数え上げプロセスを実行する。この２回目の数え上げプロセスにおいて、1回目の数え上げのためのUSBスタックが取り壊され、操作モードにおいて２回目の数え上げの一部として新しいUSBスタックが構築される。
【００５０】
２回目の数え上げが成功したかどうか確かめるために、判定ブロック６２０がテストを行なう。テストの結果そうでないことがわかると、コントロールは、操作ブロック６０６に再移行し、ここで1回目の数え上げが再び開始される。２回目の数え上げが成功すると、操作ブロック６２２は、USBデバイス２００がその操作モードにおいて機能的であることと、かつ２回方式の数え上げプロセス６００が完了していることとを表示する。
【００５１】
図６Ａは、1回目の数え上げプロセスの後にオペレーティングシステムによって表示される例示的コントロールパネルを示している。同様に、図６Ｂは、２回目の数え上げプロセスの後にオペレーティングシステムによって表示される例示的コントロールパネルを示している。非制限的一例として、数え上げが完了するとき、ウィンドウ（登録商標）は、コントロールパネル中のデバイスマネージャのディスプレイに新しいデバイスを追加する。デバイスがバスから取り除かれるとき、ウィンドウ（登録商標）は、デバイスマネージャからデバイスを取り除く。
【００５２】
かくして、図６Ａは、1回目の数え上げプロセスの後にウィンドウ（登録商標）によって表示される例示的コントロールパネルを示している。ローダ７１０のポートは、ローダドライバ１６２（図３）がオペレーティングシステムおよび他のクライアントソフトウェアにとって利用可能であることを例示するものとして示されている。正常なユーザ空間アプリケーションおよび操作ドライバ１６４（図３）は、ローダ７１０と異なるデバイスをさがしている。かくして、USBデバイス２００がファームウェア・ロード・モードにおいて数え上げられている間に、クライアントソフトウェアとの通信の目的のために、USBデバイス２００を認識したのは、ローダドライバ１６２のみである。
【００５３】
図６Ｂは、２回目の数え上げプロセスの後にウィンドウ(登録商標）によって表示される例示的コントロールパネルであって、多数のデバイスを備えている複合的数え上げを示している。今度は、診断ポート７５０およびNMEA（National Marine Electronics Association：全米海洋電子機器協会規格）ポート７４０は、クライアントソフトウェアとして示されている。
【００５４】
さらに、コントロールパネルは、USBモデム７２０およびUSBネットワークアダプタ７３０を示している。さらに、図６Ａに示されているローダ７１０ポートは、今は図６Ｂのコントロールパネルから去っている。もちろん、当業者は、ポート、アダプタおよびその他のファンクションが、本発明の例示的実施形態を使用するUSBデバイス２００のタイプに応じて異なったものであってもよいということを認識するであろう。
【００５５】
当業者であれば、情報と信号は、様々な異なる技術および技法のうちの何らかのものを使用して表わされることができることを理解するであろう。例えば、上記説明全体を通じて参照されることができるデータ、命令、コマンド、情報、信号、ビット、シンボルおよびチップは、電圧、電流、電磁波、磁場または磁粒子、光波動場または光粒子、またはこれらのものの任意の組み合わせによって表わされることができる。
【００５６】
当業者であれば、本件明細書における開示に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子的ハードウェア、コンピュータソフトウェアまたは両者の組み合わせとして実装されることができることをさらに認識するであろう。ハードウェアとソフトウェアの間のこの相互置換可能性を明白に例示するために、様々な例示的なコンポーネント、ブロック、モジュール、回路およびステップは、上記においてそれらの機能性の観点から一般的に説明されてきた。そのような機能性がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定のアプリケーション、およびシステム全体に課される設計上の制約に依存するところである。当業者は、各々の特定のアプリケーションに応じて、様々な方法で、説明された機能性を実装することができる。しかし、そのような実装の決定が、本件発明の例示的実施形態の範囲からの逸脱を引き起こすものとして解釈されてはならない。
【００５７】
本件明細書における開示に関連して説明された様々な例示的な論理ブロック、モジュール、および回路は、汎用目的プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向けのIC(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、離散的ゲートまたはトランジスタ論理、離散的ハードウェアコンポーネント、またはこれらのものの任意の組み合わせであって、本件明細書記載の機能を実現するように設計されたものによって実装または実行されることができる。汎用目的プロセッサは、マイクロプロセッサであってもよいが、代替的に、任意の通常のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサは、計算装置の組み合わせ、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと結合した１つまたは複数のマイクロプロセッサ、または他の任意の同様の機器構成として、実装されることもできる。
【００５８】
本件明細書に開示されている実施形態に関連して説明された方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはその2つの組み合わせにおいて直接具体化されることができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROMまたは本件技術分野において既知の他の任意の形式の記憶媒体の中に常駐することができる。一例としての記憶媒体は、プロセッサが記憶媒体から情報を読み取る、または記憶媒体に情報を書き込むことができるように、プロセッサと結合されている。代替的に、記憶媒体がプロセッサと一体化されていてもよい。その場合、プロセッサおよび記憶媒体がASICの中に常駐し、そのASICがユーザ端末中に常駐することができる。代替的に、プロセッサおよび記憶媒体は、ユーザ端末中の離散的コンポーネントとして常駐することもできる。
【００５９】
１つまたは複数の例示的実施形態において、説明された機能は、ハードウェア、ソフトウェア、ファームウェアまたはこれらのものの任意の組み合わせにおいて実装されることができる。ソフトウェアにおいて実装される場合、当該機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶またはその上で伝送されることができる。コンピュータ可読媒体とは、コンピュータ記憶媒体のみならず、コンピュータプログラムをある場所から他の場所へ転送することを支援する任意の媒体を含む通信媒体も含むものである。記憶媒体は、コンピュータによってアクセス可能な任意の利用可能な媒体であってよい。実例として、かつ非制限的なものとして、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、または、任意の他の媒体であって、命令もしくはデータ構造の形式において所望のプログラムコードを伝達または記憶するために使用可能でかつコンピュータによってアクセス可能な媒体を含むことができる。また、どのような接続もコンピュータ可読媒体と適切に名づけられる。例えば、もしソフトウェアがウェブサイト、サーバ、または他の離れた情報源から、同軸ケーブル、光ファイバケーブル、ツイストペアケーブル、ディジタル加入者線(DSL)またはワイヤレス技術（例えば、赤外線、無線およびマイクロ波など）を使用して送信されるのであれば、そうした同軸ケーブル、光ファイバケーブル、ツイストペアケーブル、DSLまたはワイヤレス技術（例えば、赤外線、無線およびマイクロ波など)もまた、媒体の定義に含まれる。本件明細書において使用されているようなディスク（disk and disc）は、コンパクトディスク（CD）、ディジタルバーサタイルディスク(DVD)、フレキシブルディスクおよびブルーレイ（登録商標）ディスクを含んでいる。なお、diskは、通常、データを磁気的に再生するものをいい、discは、レーザを用いてデータを光学的に再生するものをいう。上記のものの組み合わせもまた、コンピュータ可読媒体の範囲に含まれるべきである。
【００６０】
開示されている実施形態に関する上記説明は、いかなる当業者であっても、本件発明を製造または使用することができるように提供されている。これらの例示的実施形態に対する様々な修正は、当業者にとって直ちに明白であろう。また、本件明細書において定義されている一般原理は、発明の要旨または範囲から逸脱することなく、他の実施形態に対して適用可能である。かくして、本件発明は、本件明細書中に示されている実施形態に限定されるよう意図されているものではなく、本件明細書に開示されている原理および新規な特徴と一致する最も広い範囲が与えられるべきものである。
【図１】
2012515400.tif 000003
【図２】
2012515400.tif 000004
【図３】
2012515400.tif 000005
【図４】
2012515400.tif 000006
【図５】
2012515400.tif 000007
【図６Ａ】
2012515400.tif 000008
【図６Ｂ】
2012515400.tif 000009
【国際調査報告】
2012515400.tif 000010
2012515400.tif 000011
2012515400.tif 000012
2012515400.tif 000013