(57)【特許請求の範囲】
【請求項１】
ポータブルデバイスであって、
当該ポータブルデバイスのドライバを格納する記憶媒体と、
当該ポータブルデバイスとホストシステムとを接続するのに利用される接続技術に互換的なインタフェース機能を提供するインタフェースと、
当該ポータブルデバイスが前記ホストシステムにより認識されているか判断し、当該ポータブルデバイスが前記ホストシステムにより認識されていない場合、前記ホストシステムに対して当該ポータブルデバイスをフラッシュドライブとして見えるようにし、前記記憶媒体に格納されているドライバを前記ホストシステムにインストールすべきか判断し、インストールすべきである場合、前記ドライバを前記ホストシステムにインストールするデバイスコントローラと、
を有し、
前記デバイスコントローラは、前記記憶媒体に格納されているドライバより最近にアップデートされた当該ポータブルデバイスのドライバをインターネットにおいて検索し、検出された場合、前記より最近にアップデートされた当該ポータブルデバイスのドライバがウイルスに感染しているかウイルスチェックし、前記ウイルスが検出されない場合、前記より最近にアップデートされたドライバをインターネットからダウンロードし、前記より最近にアップデートされたドライバを前記ホストシステムにインストールすると共に、前記記憶媒体に格納するポータブルデバイス。
【請求項２】
前記接続技術は、標準的なＵＳＢ技術、標準的な無線ＵＳＢ技術、ＩＥＥＥ１９３４インタフェース又は無線ＩＥＥＥ１９３４インタフェースの１つからなる、請求項１記載のポータブルデバイス。
【請求項３】
前記ホストシステムは、パーソナルコンピュータ、スマートフォン、タブレットコンピュータ又はネットブックコンピュータの１つを有する、請求項１記載のポータブルデバイス。
【請求項４】
前記記憶媒体は、不揮発性メモリを有する、請求項１記載のポータブルデバイス。
【請求項５】
前記デバイスコントローラは、当該ポータブルデバイスのドライバについて前記ホストシステムをチェックし、
前記ホストシステムにドライバが検出されない場合、前記デバイスコントローラは、前記記憶媒体に格納されているドライバを前記ホストシステムにインストールし、
前記ホストシステムが当該ポータブルデバイスのドライバを有していることが検出された場合、前記デバイスコントローラは、前記ホストシステムに検出されたドライバと前記記憶媒体に格納されているドライバとを比較し、
前記ホストシステムに検出されたドライバが前記記憶媒体に格納されているドライバより古い場合、前記デバイスコントローラは、前記記憶媒体に格納されているドライバを前記ホストシステムにインストールする、請求項１記載のポータブルデバイス。
【請求項６】
前記デバイスコントローラは、前記より最近にアップデートされたドライバ又は前記アップデートをインターネットからダウンロードする前、及び前記より最近にアップデートされたドライバ又は前記アップデートを前記記憶媒体に格納する前、ユーザにパーミッションを照会する、請求項１記載のポータブルデバイス。
【請求項７】
前記デバイスコントローラは、必要に応じて、前記記憶媒体のドライバを前記ホストシステムに自動的にインストールするためのモジュールを有する、請求項１記載のポータブルデバイス。
【請求項８】
前記デバイスコントローラは、前記ホストシステムに外部のストレージドライブとして見えるように当該ポータブルデバイスを設定する、請求項１記載のポータブルデバイス。
【請求項９】
前記デバイスコントローラは、当該ポータブルデバイスが前記ホストシステムに接続されるとき、前記記憶媒体のコンテンツをプロテクトする、請求項１記載のポータブルデバイス。
【請求項１０】
ポータブルデバイスがホストシステムに接続されると、前記ポータブルデバイスが前記ホストシステムにより認識されるか判断するステップであって、前記ポータブルデバイスは、前記ポータブルデバイス内の記憶媒体に格納されているドライバを有する、前記判断するステップと、
前記ポータブルデバイスが前記ホストシステムにより認識されない場合、前記ホストシステムに対して前記ポータブルデバイスをフラッシュデバイスとして見えるように設定するステップと、
前記ポータブルデバイスが前記ホストシステムにより認識される場合、前記ポータブルデバイスのドライバの最新バージョンを決定するステップと、
前記ホストシステムが前記ポータブルデバイスのドライバの最新バージョンを有していない場合、前記ポータブルデバイス又はインターネットから前記ドライバの最新バージョンを前記ホストシステムにインストールするステップと、
を有する方法であって、
前記インストールするステップは、前記記憶媒体に格納されているドライバより最近にアップデートされた当該ポータブルデバイスのドライバをインターネットにおいて検索し、検出された場合、前記より最近にアップデートされた当該ポータブルデバイスのドライバがウイルスに感染しているかウイルスチェックし、前記ウイルスが検出されない場合、前記より最近にアップデートされたドライバをインターネットからダウンロードし、前記より最近にアップデートされたドライバを前記ホストシステムにインストールすると共に、前記記憶媒体に格納することを含む方法。
【請求項１１】
前記ポータブルデバイスのドライバの最新バージョンを決定するステップは、
インターネット接続がある場合、前記ポータブルデバイスのドライブの最新バージョンをインターネットから検索するステップと、
インターネット接続がある場合、インターネットから検出されたドライバの最新バージョンと前記記憶媒体に格納されているドライバとの間でドライバのアップデートされたバージョンを選択するステップと、
前記ホストシステムが前記ポータブルデバイスのドライバを有しない場合、前記ドライバの最新バージョンとして前記ドライバのアップデートされたバージョンを利用するステップと、
前記ホストシステムがドライバの最新バージョンとしてドライバを有する場合、前記ホストシステムにおいて前記ドライバの更新されたバージョンと前記ポータブルデバイスのドライバとの間でドライバのより最近にアップデートされたバージョンを選択するステップと、
を有する、請求項１０記載の方法。
【請求項１２】
インターネットが前記ポータブルデバイスのドライバの最新のバージョンを有している場合、前記ドライバの最新のバージョンを前記ホストシステムにダウンロードするステップをさらに有する、請求項１１記載の方法。
【請求項１３】
前記ドライバの最新のバージョンの前記ホストシステムへのインストールが成功し、前記記憶媒体に格納されているドライバが前記ドライバの最新のバージョンでない場合、前記記憶媒体に格納されているドライバを前記ドライバの最新のバージョンによりアップデートするステップをさらに有し、
前記アップデートするステップは、前記記憶媒体に格納されているドライバの最新のアップデートを格納することを含む、請求項１０記載の方法。
【請求項１４】
前記記憶媒体のコンテンツが危険にさらされることからプロテクトするステップをさらに有する、請求項１０記載の方法。
【請求項１５】
前記ポータブルデバイスが最初に前記ホストシステムに接続されるとき、前記ポータブルデバイスが前記ホストシステムにより認識されない場合、前記ホストシステムに外部のストレージドライブとして見えるように前記ポータブルデバイスを設定するステップをさらに有する、請求項１０記載の方法。
【請求項１６】
前記ポータブルデバイスは、標準的なＵＳＢ技術、標準的な無線ＵＳＢ技術、ＩＥＥＥ１９３４インタフェース又は無線ＩＥＥＥ１９３４インタフェースの１つ以上を利用して、前記ホストシステムに接続する、請求項１０記載の方法。
【請求項１７】
ポータブルデバイスがホストシステムに接続されると、前記ポータブルデバイスが前記ホストシステムより認識されない場合、前記ポータブルデバイスを外部の記憶デバイスとして認識するステップと、
前記ポータブルデバイスが前記ポータブルデバイスのドライバの最近にアップデートされたバージョンを決定することを可能にするため、前記ポータブルデバイスと通信するステップと、
前記ホストシステムが前記ポータブルデバイスのドライバの最近にアップデートされたバージョンを有しない場合、前記ポータブルデバイスが前記ポータブルデバイス又はインターネットから前記ドライバの最近にアップデートされたバージョンを前記ホストシステムにインストールすることを可能にするステップと、
を有する方法であって、
前記可能にするステップは、前記ポータブルデバイスに格納されているドライバより最近にアップデートされた当該ポータブルデバイスのドライバをインターネットにおいて検索し、検出された場合、前記より最近にアップデートされた当該ポータブルデバイスのドライバがウイルスに感染しているかウイルスチェックし、前記ウイルスが検出されない場合、前記より最近にアップデートされたドライバをインターネットからダウンロードし、前記より最近にアップデートされたドライバを前記ホストシステムにインストールすると共に、前記ポータブルデバイスに格納することを含む方法。
【請求項１８】
前記ポータブルデバイスが、前記ポータブルデバイスのドライバの最新バージョンをインターネットから検索するよう実行するステップをさらに有する、請求項１７記載の方法。
【請求項１９】
前記ポータブルデバイスは、標準的なＵＳＢ技術、標準的な無線ＵＳＢ技術、ＩＥＥＥ１９３４インタフェース又は無線ＩＥＥＥ１９３４インタフェースの１つ以上を利用して、前記ホストシステムに接続する、請求項１７記載の方法。
【請求項２０】
請求項１０乃至１６何れか一項記載の方法を実行時にマシーンに実行させる命令を格納したマシーン可読記憶媒体。
【請求項２１】
請求項１７乃至１９何れか一項記載の方法を実行時にマシーンに実行させる命令を格納したマシーン可読記憶媒体。
【請求項２２】
前記デバイスコントローラに接続されるクロック生成手段を更に有する、請求項１記載のポータブルデバイス。
【請求項２３】
前記デバイスコントローラは、前記ホストシステムに前記ドライバを送信する前、前記ドライバを暗号化するロジックを有する、請求項１記載のポータブルデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に電子デバイスに接続されるポータブルデバイスに関し、より詳細には、ポータブルデバイスがホスト電子デバイスに接続されると、ドライバを自動的にインストールする統合ドライバを備えたポータブルデバイスに関する。
【背景技術】
【０００２】
ポータブルデバイスがホスト電子デバイスに接続することを支援する多数の接続技術がある。ポータブルデバイスは、カメラ、マウス、キーボード、プリンタ、フラッシュドライブ、外部ハードドライブ、メディアプレーヤー、ネットワークアダプタなどのコンピュータ周辺デバイスを含む。ホスト電子デバイスは、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、ネットブックコンピュータ、スマートフォンなどを含むものであってもよい。ホストデバイスはまた、周辺デバイスなどの他のホスト電子デバイスに接続されてもよい。接続技術は、限定することなく、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＩＥＥＥ１９３４インタフェース及びｅＳＡＴＡを含む。
【０００３】
ＵＳＢは、パーソナルコンピュータ（ＰＣ）などのホストとデバイスとの間の通信を確立するためのシリアルバスインタフェースのための工業規格である。ＵＳＢは、一方向又は双方向パイプのセットとしてＵＳＢホストとＵＳＢデバイスとの間の機能データ及び制御交換をサポートする。ＵＳＢデータの伝送は、ＵＳＢデバイスのエンドポイントとホストソフトウェアとの間で行われる。ＵＳＢホストは、ＵＳＢホストコントローラ（ＨＣ）を介しＵＳＢデバイスとやりとりする。ホスト上のＵＳＢシステムのソフトウェアは、ＵＳＢデバイスとホストベースのデバイスソフトウェアとの間のやりとりを管理する。ＵＳＢ規格は、プラグ・アンド・プレイ及びホットスワッピングをサポートする。
【０００４】
ＩＥＥＥ１９３４インタフェースは、高帯域幅通信及びアイソクロナスリアルタイムデータ伝送のためのシリアルバスインタフェース規格である。それは、ＰＣ、デジタルオーディオ／ビデオアプリケーションにより利用される。このインタフェースはまた、ＦｉｒｅＷｉｒｅ、ｉ．ＬＩＮＫ又はＬｙｎｘと呼ばれてもよい。ＩＥＥＥ１３９４は、ツリーチェーントポロジーにおいて多数の周辺装置（６３など）を接続する。それは、多くのアプリケーションにおいてパラレルＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）接続を置換するのに利用される。それは、スキャナとプリンタとの間の通信などのピア・ツー・ピアデバイス通信がシステムメモリやＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いることなく行われることを可能にする。それは、プラグ・アンド・プレイ及びホットスワッピングをサポートするよう設計される。
【０００５】
ｅｘｔｅｒｎａｌ  Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）を表すｅＳＡＴＡは、ＳＴＡＴインタフェース規格の変形である。ＳＡＴＡインタフェースは、ハードディスクドライバや光ドライブなどのマスストレージデバイスとホストバスアダプタとを接続するためのバスインタフェースである。ｅＳＡＴＡは、例えば、ＰＣと外部のハードディスクドライブとを接続する外部接続のため設計される。
【０００６】
何れの接続技術が利用されても、ユーザがポータブルデバイスを用いてホストとやりとりするため、ポータブルデバイスのデバイスドライバをホストにインストールすることが通常必要である。例えば、ＵＳＢポートを備えたデジタルカメラには、通常はデジタルカメラのドライバを含むインストール用のＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）が同梱されている。ＵＳＢ接続を介しＰＣとデジタルカメラとの間でデジタルピクチャを伝送するため、ドライバは、ＰＣにまずインストールされることが必要とされる。同様に、それは、ＩＥＥＥ１９３４を介しＰＣとＩＥＥＥ１９３４ポートを備えたカムコーダとの間でビデオデータを伝送するため、ドライバをＰＣにインストールすることが必要である。
【０００７】
典型的には、各ポータブルデバイスは、他のデバイスが同一タイプを有しているが、異なるメーカーにより製造されている場合でさえ、他のデバイスと通常は共有できない自らのドライバを有する。従って、ユーザは、以降の利用のためポータブルデバイスのためのインストール用のＣＤを保存する必要がある。例えば、ＰＣがクラッシュし、以降に再構築される必要がある場合、ユーザは、ポータブルデバイスのドライバを再インストールするためＣＤを見つける必要がある。このとき、ユーザは、もはやインストール用のＣＤを見つけることができないかもしれない。従って、ポータブルデバイスのドライバＣＤを有することは、あまり便利でない。
【図面の簡単な説明】
【０００８】
開示された主題の特徴及び効果は、当該主題の以下の詳細な説明から明らかになるであろう。
【図１】図１は、本発明の一実施例によるＵＳＢインタフェースを利用してポータブルデバイスがホストデバイスに接続される一例となるシステムを示す。
【図２】図２は、本発明の一実施例によるポータブルデバイスが無線ＵＳＢインタフェースを利用してホストデバイスに接続される他の一例となるシステムを示す。
【図３】図３は、本発明の一実施例によるＵＳＢデバイスのブロック機能図である。
【図４】図４は、本発明の一実施例による無線ＵＳＢ接続を利用してデバイスのブロック機能図である。
【図５】図５は、本発明の一実施例による接続トポロジーを利用してホストデバイスに接続されるポータブルデバイスのブロック機能図を示す。
【図６】図６は、本発明の一実施例によるＵＳＢデバイスがホストに接続されるとき、ＵＳＢ処理を開始するプロセスを示すフローチャートである。
【発明を実施するための形態】
【０００９】
本出願において開示される主題の実施例によると、ポータブルデバイスのドライバが、ポータブルデバイス自体に統合される。ドライバは、ポータブルデバイス内の不揮発性メモリに格納されてもよい。ポータブルデバイスが有線又は無線によりホストデバイスに接続されると、ポータブルデバイスは、ホストデバイスのオペレーティングシステム（ＯＳ）により認識される。ホストデバイスが以前にインストールされたポータブルデバイスのドライバを有している場合、ポータブルデバイスは、ホストデバイスとの通信を開始し、ユーザにより直接利用されてもよい。ホストデバイスがポータブルデバイスを認識しない場合、又はポータブルデバイスのためにホストデバイスにインストールされたワーキングドライバを有していない場合、ポータブルデバイスは、フラッシュドライブとしてホストのＯＳには見える可能性がある。本発明の一実施例によると、ポータブルデバイスの不揮発性メモリに格納されている自動実行プログラムが、ポータブルデバイスの不揮発性メモリに格納されているドライバをホストデバイスにインストールするため実行される。ホストデバイスがインターネットに接続される場合、自動実行プログラムは、インターネットを介しドライバの最近のアップデートを抽出し、ポータブルデバイスの不揮発性メモリに格納されているドライバをアップデートしてもよい。一実施例では、自動実行プログラムは、ドライバのためのアップデートを定期的にチェックし、ポータブルデバイスにローカルに格納されているドライバを更新してもよい。
【００１０】
いくつかのデバイスは、ホストとやりとりするため複数のドライバを必要とするかもしれない。説明の簡単化及び便宜上、“ドライバ”という単一の用語のみが、当該用語が以下の明細書、図面、請求項及び概要を通じて“ある”又は“１つの”などの数値的用語に従う場合であっても、１以上のドライバを参照するのに利用される。
【００１１】
開示される主題の“一実施例”又は“実施例”の明細書における参照は、当該実施例に関して説明される特徴、構成又は特性が、開示される主題の少なくとも１つの実施例に含まれることを意味する。従って、明細書を通じて各所に現れる“一実施例では”というフレーズの出現は、必ずしもすべてが同一の実施例を参照しているとは限らない。
【００１２】
図１は、ＵＳＢインタフェースを利用してポータブルデバイスがホストデバイスに接続される一例となるシステム１００を示す。システム１００は、プロセッサ１１０、Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ（ＭＣＨ）１２０及びＩｎｐｕｔ／Ｏｕｔｐｕｔ（Ｉ／Ｏ）  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ（ＩＣＨ）１４０を有する。図面では１ついのプロセッサが示されているが、システム１００には複数のプロセッサがあってもよい。プロセッサ１１０などの各プロセッサは、１以上の処理コアを有してもよく、システムインターコネクト１１５に接続される。
【００１３】
システムインターコネクト１１５は、プロセッサ１１０がＭＣＨ１２０などの他のプロセッサ又はデバイスと通信することを可能にするインタフェース信号を提供する。システムインターコネクト１１５は、ユニプロセッサ又はマルチプロセッサコンフィギュレーションをサポートしてもよい。システムインターコネクト１１５は、Ｆｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ（ＦＳＢ）、リンクベースポイント・ツー・ポイントインターコネクト、又は他の何れかのタイプのインターコネクトであってもよく、パラレル、シーケンシャル、パイプライン、非同期、同期又はこれらの何れかの組み合わせであってもよい。
【００１４】
ＭＣＨ１２０は、システムインターコネクト１１５に接続されてもよい。ＭＣＨ１２０は、システムメモリ１３０及びＩＣＨ１４０などのメモリ及び入出力デバイスの制御及び設定を提供する。ＭＣＨ１２０は、絶縁分離された実行モード、ホストと周辺装置とのバスインタフェース、メモリ制御などの複数の機能を統合したチップセットに統合されてもよい。チップセットはまた、ＩＣＨ１４０の各機能を統合してもよい。簡単化のため、すべての周辺バスが示されているとは限らない。システム１００はまた、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バスなどの周辺バスを有してもよい。ＭＣＨ１２０は、プロセッサ１１０とメモリ１３０との間の通信を制御するメモリコントローラ１２５を有する。プロセッサ１１０とＭＣＨ１２０とは、システムインターコネクト１１５を介し通信する。他の実施例では、ＭＣＨ１２０の機能はプロセッサ１１０に統合され、プロセッサ１００はＩＣＨ１４０に直接接続されてもよい。
【００１５】
メインメモリ１３０は、プロセッサ１１０又はシステムに含まれる他の何れかのデバイスにより実行される命令シーケンス及びデータを格納する。メモリコントローラ１２５は、プロセッサ１１０及び計算システム１００の他のデバイスに関連するメモリトランザクションに応答して、メインメモリ１３０にアクセスしてもよい。メインメモリ１３０は、メモリコントローラ１２５がデータを読み／書きするアドレス指定可能な記憶位置を提供する各種メモリデバイスを有してもよい。メインメモリ１３０は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）デバイス、Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ（ＳＤＲＡＭ）デバイス、Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ（ＤＤＲ）  ＳＤＲＡＭデバイス又は他のメモリデバイスなどの１以上の異なるタイプのメモリデバイスを有してもよい。
【００１６】
Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ（ＩＣＨ）１４０は、Ｄｉｒｅｃｔ  Ｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ（ＤＭＩ）た他の何れかのタイプのチップ間インタフェースなどの高速チップ間インタフェース１３５を利用して、ＭＣＨ１２０に接続されてもよい。ＤＭＩは、２つの双方向レーンを介した２ギガビット／秒のコンカレント伝送レートをサポートする。ＩＣＨ１３０は、Ｉ／Ｏ機能をサポートするよう設計されるいくつかの機能を有する。ＩＣＨ１４０はまた、Ｉ／Ｏ機能を実行するため、ＭＣＨ１２０と一緒に又は別々にチップセットに統合されてもよい。ＩＣＨ１４０は、ＰＣＩバス、プロセッサインタフェース、インタラプトコントローラ、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ、電力管理ロジック、タイマー、ＵＳＢインタフェース、マスストレージインタフェース、ＬＰＣ（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）インタフェースなどのいくつかのインタフェース及びＩ／Ｏ機能を有してもよい。Ｉ／Ｏデバイス１７５及び／又はＩ／Ｏデバイス１８０は、ＰＣＩバスインタフェース又は他の何れかのタイプのインタフェースを介しＩＣＨ１４０に接続されてもよい。
【００１７】
特に、ＩＣＨ１４０は、ＵＳＢバス１５０に接続されるＵＳＢホストコントローラ（ＨＣ）１４５を有する。図面には図示されていないが、ＩＣＨ１４０は、ＵＳＢホストコントローラより多く有してもよい。ＵＳＢホストコントローラ１４５は、１以上のＵＳＢポートを提供してもよい。ＵＳＢホストコントローラ１４５は、ＵＳＢ規格（ＵＳＢ２．０、ＵＳＢ３．０など）に規定されるようないくつかのホストコントローラレジスタを有する。これらのレジスタの具体例として、ＵＳＢコマンドレジスタ、ＵＳＢステータスレジスタ、ＵＳＢインタラプトイネーブルレジスタ、ＵＳＢフレームナンバーレジスタ、ＵＳＢフレームリストベースアドレスレジスタ、ＵＳＢ  ＳＯＦ（Ｓｔａｒｔ  Ｏｆ  Ｆｒａｍｅ）レジスタ、ＵＳＢ  Ｐｏｒｔ  ０ステータス及び制御レジスタ、及びＵＳＢ  Ｐｏｒｔ  １ステータス及び制御レジスタがあげられる。ＵＳＢバス１５０は、ＵＳＢキーボード１５５、ＵＳＢマウス１６０、ＵＳＢカメラ１６５及び他のＵＳＢデバイス１７０などのいくつかのＵＳＢデバイスに接続される。
【００１８】
ホストコントローラがデータ伝送のタイプ及び方向、ＵＳＢデバイスのアドレス及びデバイスのエンドポイントナンバーを特定するＵＳＢパケットを送信すると、ＵＳＢホストコントローラとＵＳＢデバイスとの間のデータ伝送（トランザクション）が開始される。エンドポイントは、ＵＳＢホストとＵＳＢデバイスとの間の通信フローの終端であるＵＳＢデバイスの一意的な特定可能な部分である。エンドポイントの方向は、ＩＮ（ホストへ）又はＯＵＴ（ホストから）であってもよい。
【００１９】
ＵＳＢホストとＵＳＢデバイスとの間のデータ及び制御の交換は、一方向又は双方向の論理パイプのセットとしてサポートされる。論理パイプは、ＵＳＢホストとＵＳＢデバイスとの間でデータ及び制御パケットをやりとりするため、ＵＳＢホストとＵＳＢデバイスのエンドポイントとの間の論理的抽象化である。ＵＳＢデバイスは、複数の論理パイプ（パイプバンドル）を介しホストにデータを伝送してもよく、例えば、ＵＳＢデバイスのＯＵＴエンドポイントにデータを転送するための独立した一方向論理パイプと、ＵＳＢデバイスのＩＮエンドポイントからＵＳＢホストにデータを転送するための他の一方向論理パイプとがあってもよい。
【００２０】
ＵＳＢデバイス（ＵＳＢカメラ１６５など）がまず、ＵＳＢポートを介しＵＳＢホスト（図１のシステム１００など）に接続されると、ＵＳＢホストコントローラ１４５は、デバイスがサポートされているか判断する。それがサポートされている場合、ホストとデバイスとの間で通信するのに必要とされるデバイスドライバがロードされる。ＵＳＢデバイスがかなり一般的であるとき（ＵＳＢキーボード１５５など）、ホストは、デバイスのためのドライバを有しているかもしれない。この場合、ドライバは、ホスト自体からロード可能である。デバイスドライバがホストに検出できなかった場合、ホストは、デバイスドライバを検出するため、インターネットをサーチしてもよい（それがインターネットに接続されている場合）。デバイスドライバがインターネット上で検出可能である場合、それらはホストにダウンロードできる。ＵＳＢデバイスには、それに格納されているデバイスドライバを備えたインストール用媒体（ＣＤなど）がしばしば同梱されている。デバイスドライバは、インストール用媒体からロード可能である。デバイスドライバがホストにロードされると、それらは、デバイスがホストに再接続される次のとき、再ロードされる必要がない。
【００２１】
現実には、ホストのＵＳＢデバイスのデバイスドライバは、損傷又は損失されているかもしれない（再構築などにより）。このような問題が発生すると、デバイスドライバは、ホストにおいて修復又は再インストールされる必要がある。しかしながら、インストール用の媒体が見つけることができず、又は損傷している可能性がある。インターネット上のデバイスのドライバを検出することが常に可能であるとは限らない。明らかに、これはユーザにとって問題となりうる。
【００２２】
本発明の一実施例によると、ＵＳＢデバイスのドライバは、デバイスの内部に格納されてもよい。例えば、図１のＵＳＢカメラ１６５は、内部のフラッシュメモリに格納されているそれのドライバを有してもよい。ＵＳＢカメラ１６５が最初にシステム１００に接続されると、ＵＳＢカメラ１６５のドライバは、システム１００に自動的にインストールされてもよい。定期的に、ＵＳＢカメラ１６５は、ドライバのアップデートをインターネットにおいてサーチし、ＵＳＢカメラ１６５内のフラッシュメモリにアップデートをダウンロードしてもよい。このようにして、ドライバの再インストールが必要になると、アップデートされたドライバが、オリジナルのインストール用媒体を検出する負担なく、ＵＳＢカメラ１６５から再インストールされてもよい。ユーザは、他のアイテムを保持する必要はない。
【００２３】
図２は、無線ＵＳＢインタフェースを利用してポータブルデバイスがホストデバイスに接続される他の一例となるシステム２００を示す。システム２００は、ＵＳＢインタフェースに関連する点を除き、図１のシステム１００と同様のコンポーネントを有するよう示される。特に、システム２００は、無線ＵＳＢカメラ２２０、無線ＵＳＢマウス２３０、無線ＵＳＢキーボード２５０及び他の無線ＵＳＢデバイス２４０などの無線ＵＳＢデバイスとシステム２００との間の無線接続を実現する無線ＵＳＢホストコントローラ２１０を有する。さらに、無線ＵＳＢホストコントローラ２１０はまた、ＵＳＢホストコントローラ１４５などの有線ＵＳＢホストコントローラの機能を実行してもよい。同様に、無線ＵＳＢデバイス（２２０など）は、内部のフラッシュメモリに格納されているそれのドライバを有してもよい。無線ＵＳＢがシステム２００に最初に無線接続されると、格納されているドライバがシステム２００にインストールされ、無線ＵＳＢデバイスがシステム２００と通信することが可能になる。無線ＵＳＢデバイスはまた、ドライバのアップデートをインターネットにおいて検索し、内部のフラッシュメモリにアップデートを定期的にダウンロードしてもよい。
【００２４】
図１及び２はＵＳＢ接続を利用した具体例を示しているが、他の接続技術がまた利用されてもよい。一実施例では、ＩＥＥＥ１９３４インタフェースが利用されてもよい。ポータブルＩＥＥＥ１９３４デバイスが、有線又は無線によりホスト（１００など）に接続されてもよい。ポータブルデバイスは、デバイス内のフラッシュメモリ又は他の不揮発性メモリに格納されているそれのドライバを有してもよい。デバイスが最初にホストに接続されると、ドライバがホストにインストールされてもよい。デバイスは、それのドライバのアップデートをインターネットにおいて検索値、デバイス内の不揮発性メモリにアップデートを定期的に格納してもよい。他の実施例では、ｅＳＡＴＡインタフェースが、有線又は無線を介しポータブルデバイスとホストとを接続するのに利用されてもよい。ポータブルｅＳＡＴＡデバイスのドライバは、デバイス内の不揮発性メモリに格納されてもよく、ポータブルｅＳＡＴＡデバイスが最初にホストに接続されると、ホストにインストールされてもよい。そこに格納されているドライバは、インターネットからアップデートをダウンロードすることによって、定期的にアップデートされてもよい。
【００２５】
図３は、本発明の一実施例によるＵＳＢデバイス３００のブロック機能図である。ＵＳＢデバイス３００は、記憶媒体３１０、クロック生成手段３２０、ＵＳＢデバイスコントローラ３３０、ＵＳＢコネクタ及びＵＳＢインタフェース３５０を有する。記憶媒体３１０は、ＵＳＢデバイス３００のドライバを格納するため、フラッシュメモリ又は他のタイプの不揮発性メモリを有してもよい。記憶媒体３１０はまた、ＵＳＢデバイス３００の動作を制御するため、ＵＳＢデバイスコントローラ３３０により利用される命令など、ＵＳＢデバイス３１０の他のデータを格納してもよい。クロック生成手段３２０は、ＵＳＢデバイス３００のためのメインクロック信号を生成するため、オシレータを有してもよい。クロック生成手段３２０はまた、位相同期ループ（ＰＬＬ）を介しＵＳＢデバイス３００のデータ出力を制御してもよい。
【００２６】
ＵＳＢコネクタ３４０は、ＰＣなどのホストデバイスとの物理的インタフェースを提供する。ＵＳＢ規格は、複数タイプのコネクタを規定する。例えば、規格タイプＡのコネクタは、ＵＳＢホスト又はハブ上のレセプタクルに挿入する平らな矩形であり、電力とデータとの双方を搬送する。規格タイプＡのコネクタは、ＵＳＢキーボード、マウス又はフラッシュドライブ上で頻繁に見つけられる。他の具体例では、規格タイプＢのコネクタは、斜めの外部コーナーを備えた正方形の形状を有し、典型的には、着脱可能なケーブルを利用したデバイス（プリンタなど）上のアップストリームレセプタクルにプラグインする。携帯電話やデジタルカメラなどの小型デバイスに典型的には利用されるＵＳＢ  ｍｉｎｉやマイクロコネクタなどの他のタイプのコネクタがある。
【００２７】
ＵＳＢインタフェース３５０は、ホストとＵＳＢデバイス３００との間のインタフェース機能を提供する。例えば、ＵＳＢインタフェース３５０は、ＵＳＢデバイス３００からホストにデータを送信する送信機と、ホストからＵＳＢデバイス３００へのデータを受信する受信機とを有してもよい。送信機及び受信機は、送受信機能を実行する送受信機として合成されてもよい。ＵＳＢインタフェース３５０はまた、データをホストに送信する前にＵＳＢ規格に従ってデータをフォーマット処理し、データを処理する前にホストから受信したデータを前処理（例えば、ＵＳＢフォーマットデータストリームから要求される情報を抽出するなど）するモジュールを有してもよい。データのフォーマット処理はデータを圧縮することを含み、前処理はデータを伸長することを含むものであってもよい。さらに、ＵＳＢインタフェース３５０は、ＵＳＢ規格により要求されるプロトコル機能の一部又はすべてを実行してもよい。
【００２８】
ＵＳＢデバイスコントローラ３３０は、ＵＳＢデバイス３００における他のコンポーネントの動作を制御する。一実施例では、ＵＳＢデバイスコントローラ３３０は、サイズの小さなオンチップメモリを備えた小型マイクロコントローラを有してもよい。マイクロコントローラは、ＣＰＵを有してもよい。一実施例では、ＵＳＢデバイスコントローラ３３０は、ホストに接続されると、ＵＳＢデバイス３００をホストにとってフラッシュドライブであると見えるようにするＵＳＢフラッシュドライブの機能をシミュレートしてもよい。ＵＳＢデバイスコントローラは、自動インストール及びセキュリティ問題を処理するモジュール３３５を有してもよい。モジュール３３５は、ソフトウェア、ファームウェア、ハードウェア又はこれらの何れかの組み合わせにより実現されてもよい。ＵＳＢデバイス３００がホストに接続されると、ホストは、デバイスコントローラ３３０のシミュレートされたＵＳＢフラッシュドライブの機能のため、フラッシュドライブとして当該デバイス３００を認識することになる。モジュール３３５はまず、ＵＳＢデバイス３３０がホストと適切にやりとりするのに必要なドライバをホストが有しているかチェックする。有していない場合、モジュール３３５は、記憶媒体３１０に格納されているドライバとホストのドライバとをさらに比較する。記憶媒体３１０に格納されているドライバがホストのドライバからアップデートされている場合、モジュール３３０は、記憶媒体３１０に格納されているドライバによりホストのドライバをアップデートしてもよい。モジュール３３５は、ユーザがアップデート処理の実行前にホストのドライバをアップデートすることを所望しているかの選択をユーザに提供してもよい。
【００２９】
一実施例では、モジュール３３５はさらに、記憶媒体３１０に格納されているドライバの何れかのアップデート又はより最近にアップデートされたドライバをインターネットにおいて検索してもよい（ホストがインターネットに接続されている場合）。より最近にアップデートされたドライバ又はアップデートが検出された場合、モジュール３３５は、アップデートのより最近にアップデートされたドライバがウイルスに感染しているかチェックしてもよい。モジュール３３５は、このようなウイルスチェックを実行するため、ホストのＯＳを呼び出してもよい。ウイルスが検出されない場合、モジュール３３５は、ユーザがアップデートのより最近にアップデートされたドライバをダウンロードすることを所望しているかユーザに問い合わせてもよい。可能である場合、モジュール３３５は、より最近にアップデートされたドライバ又はアップデートをダウンロードし、それらをホストにインストールしてもよい。インストールが成功した場合、より最近にアップデートされたドライバ又はアップデートが、記憶媒体３１０に格納されてもよい。ダウンロードされたアップデートが機能する方法に依存して、ダウンロードされたアップデートは、記憶媒体に格納されているドライバをアップデートするか、又は単に記憶媒体３１０にアップデートを別に格納してもよい。アップデートが記憶媒体に別に格納される場合、モジュール３３５は、ＵＳＢデバイスが次回にホストに接続されるとき、それがドライバをインストールするか、又はホストのドライバをアップデートすると決定しているか否かに関係なく、当初に格納されたドライバと記憶媒体３１０の何れかアップデートとの双方を検討する。他の実施例では、モジュール３３５は、ＵＳＢデバイスがホストに接続される毎に、ドライバのアップデートをインターネットにおいて検索しなくてもよい。モジュール３３５は、ドライバのアップデートを定期的に（２ヶ月毎など）チェックすることを選択してもよい。同様に、モジュール３３５はまた、インターネット上でドライバ又はドライバのアップデートを検索している間、デバイス３００の何れかの修正版又はファームウェアアップデートをインターネットにおいて検索してもよい。これらの何れかが検出された場合、モジュール３３５は、デバイスが有するバグを修正するため、及び／又はデバイスのファームウェアをアップデートするため、ホストシステムを介しデバイス３００にそれをダウンロードしてもよい。修正版及び／又はファームウェアアップデートはウイルススキャンされ、それらがダウンロードされる前にユーザはパーミッションについて照会される。
【００３０】
さらに、モジュール３３５は、データがホストに送信される前にデータを暗号化し、データがホストから受信された後にデータを解読する。一実施例では、暗号化及び解読機能は、ＵＳＢインタフェース３５０により実行されてもよい。
【００３１】
図４は、無線ＵＳＢ接続を利用したデバイス４００のブロック機能図である。デバイス４００は、記憶媒体４１０、クロック生成手段４２０、ＵＳＢデバイスコントローラ４３０、ＵＳＢコネクタ４４０及びＵＳＢインタフェース４５０を有する。記憶媒体４１０、クロック生成手段４２０及びＵＳＢコネクタ４４０は、ＵＳＢデバイス３００の記憶媒体３１０、クロック生成手段３２０及びＵＳＢコネクタ３４０とそれぞれ同様であってもよい。ＵＳＢコネクタ４４０は、有線又は物理コネクタを介しデバイス４００がホストに接続することを可能にするものであってもよい。無線ＵＳＢインタフェース４５０は、有線ＵＳＢデバイスのインタフェース（図３のＵＳＢインタフェース３５０など）が典型的に提供する機能を実行するのに加えて、デバイス４００とホストとの間の無線インタフェースを提供する。無線ＵＳＢインタフェース４５０は、無線信号送信機と無線信号受信機とを提供してもよい。
【００３２】
ＵＳＢデバイスコントローラ４３０は、図３に示されるようなＵＳＢデバイス３３０と同様のものであってもよい。それは、上述されたようなＵＳＢデバイスコントローラ３３５と同様の機能を実行してもよい。さらに、ＵＳＢデバイスコントローラ４３０は、デバイス４００がホストに無線接続されるとき、ＵＳＢデバイスコントローラ３３５について説明されたように、チェック、比較、インストール／アップデート、アップデートの検索及びダウンロードを実行する。
【００３３】
図５は、本発明の一実施例による接続技術を利用してホストデバイスに接続されるポータブルデバイス５００のブロック機能図を示す。図４に示されるデバイス４００と同様に、ポータブルデバイス５００は、記憶媒体５１０、クロック生成手段５２０、デバイスコントローラ５３０、デバイスコネクタ５４０及びデバイスインタフェース５５０を有してもよい。しかしながら、ポータブルデバイス５００は、ホストに接続するため、ＵＳＢ技術と異なる接続技術を利用してもよい。例えば、ポータブルデバイス５００は、ＩＥＥＥ１９３４又はｅＳＡＴＡインタフェースを利用して、有線又は無線を介しホストに接続してもよい。接続技術を除き、記憶媒体５１０、クロック生成手段５２０、デバイスコントローラ５３０、デバイスコネクタ５４０及びデバイスインタフェース５５０はそれぞれ、上述された図４に示されるような記憶媒体４１０、クロック生成手段４２０、デバイスコントローラ４３０、デバイスコネクタ４４０及び無線デバイスインタフェース４５０の同様であってもよく、また同様の機能を実行してもよい。
【００３４】
図６は、本発明の一実施例によるＵＳＢデバイスがホストに接続されるとき、ＵＳＢ処理を開始するプロセス６００を示すフローチャートである。ブロック６０５において、デバイスが、ＵＳＢインタフェース又は他の何れかのタイプのインタフェース（ＩＥＥＥ１９３４、ｅＳＡＴＡなど）などの接続技術を介しホストに接続される。当該接続は、有線又は無線を介することが可能である。ブロック６１０において、デバイスがホストにより認識されているか判断される。認識されていない場合、ブロック６１５において、デバイスは、ＵＳＢフラッシュドライブなどの外部のストレージドライブとしてホストに見えるように自らを設定してもよい。ブロック６２５において、デバイスがホストにより認識されているかさらに決定されてもよい。認識されていない場合、ブロック６３０において、ユーザはデバイス又はホストをチェックすることが推奨されてもよい。これは、デバイスの不具合に起因するか、又はホストが外部ストレージドライブを単にサポートしていないという事実に起因する可能性がある。ユーザは、ホスト及び／又はデバイスのメーカーからのヘルプを要求する必要があるかもしれない。
【００３５】
ブロック６１０又は６２５において、デバイスがホストにより認識されている場合、ブロック６２０において、デバイスがホストと適切にやりとりするのに必要なドライバをホストが有しているかさらに判断される。有している場合、ブロック６３５において、ホストのドライバはデバイスの記憶媒体（フラッシュメモリなど）に格納されているドライバより古いかさらに判断されてもよい。古くない場合、デバイスはホストにより利用される。ブロック６５０において、デバイスの記憶媒体は、そこに格納されているコンテンツ（デバイスドライバなど）が障害が起きないように（例えば、ユーザにより偶然に上書きされるなど）、プロテクトされてもよい。一実施例では、デバイスの記憶媒体は、ホストで実行されているアプリケーションから隠蔽されてもよい。他の実施例では、ユーザには、デバイスの記憶媒体にアクセスするためのオプションが与えられ、そこに格納されているコンテンツに障害が起こる可能性があるときはいつでも、促されることになる。
【００３６】
ブロック６２０において、ホストがデバイスのドライバを有しないと判断される場合、又はブロック６３５において、ホストのドライバがデバイスのドライバより古いと判断された場合、ブロック６４０において、デバイスの最新のドライバがホストにインストールされてもよい。インターネット接続がある場合、インターネットの検索が、デバイスの最新のドライバについて実行されてもよい。デバイスの記憶媒体に格納されているドライバがインターネットにおいて検出された最新のドライバより古い場合、インターネットにおいて検出された最新のドライバがホストにダウンロード及びインストールされてもよい。一実施例では、ドライバの最新のアップデートがインターネットにおいて検出されてもよい。これらのアップデートは、デバイスに格納されているドライバと共にダウンロード及びインストールされてもよい。最新のドライバ又はドライバの最新のアップデートをインターネットにおいて検索している間、デバイスの何れかの修正版又はファームウェアアップデートがまた検索されてもよい。何れかが検出された場合、それは、デバイスが有するバグを修正し、及び／又はデバイスのファームウェアをアップデートするためダウンロードされる。修正版又はファームウェアアップデートは、デバイスの記憶媒体に格納されてもよいし、そうでなくてもよい。インターネット接続がない場合、インターネット上で検出された最新のドライバがデバイスに格納されているドライバより最近のものでない場合、又は最新のドライバ又はインターネットから検出されたドライバのアップデートのインストールが成功しなかった場合、デバイスのドライバがホストにインストールされる。ブロック６４５において、デバイスに格納されているドライバが、必要に応じてアップデートされてもよい。最新機のドライバ又はインターネットにおいて検出されたドライバのアップデートが、デバイスに格納されているドライバより最新のものであり、ホストへのインストールが成功した場合、最新のドライバ又はインターネットにおいて検出されるドライバのアップデートが、デバイスに格納されているドライバをアップデートするのに利用されてもよい。一実施例では、インターネットにおいて検出されたアップデートされたドライバは、既存のドライバと共に、デバイスに格納されてもよい。デバイスのドライバがアップデートされた後、デバイスの記憶媒体は、上述されたように、６５０においてプロテクトされてもよい。
【００３７】
セキュリティのため、データファイルがインターネットからダウンロードされる場合、当該ファイルがウイルススキャンされる。ウイルスが検出されない場合、ユーザはさらに、ファイルのダウンロード前にパーミッションについて照会される。
【００３８】
開示された主題の実施例が図１〜６のブロック図及びフロー図を参照して説明されたが、当業者は、開示された主題を実現する他の多数の方法が代わりに利用されてもよいことを容易に理解するであろう。例えば、フロー図のブロックの実行順序は変更されてもよく、及び／又は説明されたブロック／フロー図のブロックの一部は変更、削除又は合成されてもよい。
【００３９】
上記説明では、開示された主題の各種態様が説明された。説明のため、具体的な数字、システム及び構成が、主題の完全な理解を提供するため与えられた。しかしながら、主題がこれらの具体的な詳細なしに実現されてもよいことは、本開示の利益を有する当業者に明らかである。他の例では、開示された主題を不明りょうにしないように、周知の特徴、コンポーネント又はモジュールは、省略、簡単化、合成又は分割された。
【００４０】
開示された主題が例示的な実施例を参照して説明されたが、本説明は、限定的な意味で解釈されることを意図していない。例示的な実施例の各種改良は、開示された主題が属する分野の当業者に明らかである主題の他の実施例と共に、開示された主題の範囲内に属するものとみなされる。
【図１】
0005852130.tif 000002
【図２】
0005852130.tif 000003
【図３】
0005852130.tif 000004
【図４】
0005852130.tif 000005
【図５】
0005852130.tif 000006
【図６】
0005852130.tif 000007