(57)【要約】【課題】  簡単な構成で、装置の状態によらず必ずドライバソフトウェアを自動インストールすることができる情報処理システムの制御方法を提供する【解決手段】  ＰＣ１０において、コンフィギュレーション処理する装置をキーボード装置３１又は記憶装置３２から選択するステップと、コンフィギュレーション処理する装置の装置情報をＵＳＢ装置３０に要求する際に、装置情報の要求回数をキーボード装置３１と記憶装置３２とで変更するステップと、ＵＳＢ装置３０において、ＰＣ１０から要求される、コンフィギュレーション処理する装置の装置情報の要求回数をカウントして、キーボード装置３１又は記憶装置３２のコンフィギュレーション処理を判定するステップと、判定に従ってキーボード装置３１又は記憶装置３２をＰＣ１０とコンフィギュレーション処理する装置として設定するステップと、を有している。【選択図】    図１
2010198624.tif 000002
【特許請求の範囲】
【請求項１】
第１の装置と、該第１の装置のドライバを格納する第２の装置とを有する電子装置と、該電子装置と外部接続用の共通インタフェースで接続する情報処理装置とを有する情報処理システムの制御方法であって、
前記情報処理装置において、コンフィギュレーション処理する装置を前記第１の装置と前記第２の装置との中から選択するステップと、
前記コンフィギュレーション処理する装置の装置情報を前記電子装置に要求する際に、前記装置情報の要求回数を前記第１の装置と前記第２の装置とで変更するステップと、
前記電子装置において、前記情報処理装置から要求される、前記コンフィギュレーション処理する装置の装置情報の要求回数をカウントして、コンフィギュレーション処理する装置を判定するステップと、
前記判定に従って前記第１の装置又は前記第２の装置を前記情報処理装置にコンフィギュレーション処理させる装置として設定するステップと、
を有することを特徴とする情報処理システムの制御方法。
【請求項２】
第１の装置と、該第１の装置のドライバを格納する第２の装置とを有する電子装置と、該電子装置と外部接続用の共通インタフェースで接続する情報処理装置とを有する情報処理システムの制御方法であって、
前記情報処理装置において、コンフィギュレーション処理する装置を前記第１の装置と前記第２の装置との中から選択するステップと、
前記第１の装置をコンフィギュレーション処理すると選択した場合に、ベンダーリクエスト信号を含ませた制御信号を生成して前記電子装置に送信し、前記第２の装置をコンフィギュレーション処理すると選択した場合に、前記ベンダーリクエスト信号を含まない制御信号を生成して前記電子装置に送信するステップとを有し、
前記電子装置において、前記コンフィギュレーション処理中に、前記情報処理装置から前記ベンダーリクエスト信号を含まない制御信号を受信した場合に、前記第２の装置をコンフィギュレーション処理を行う装置として選択するステップと、
前記情報処理装置から前記ベンダーリクエスト信号を含む制御信号を受信した場合に、前記第１の装置をコンフィギュレーション処理を行う装置として選択するステップと、を有することを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器を周辺装置として情報処理装置に接続する場合に、電子機器のドライバを情報処理装置に自動インストールする技術に関する。
【背景技術】
【０００２】
周辺機器をパーソナルコンピュータ等の情報処理装置に接続する時に、特に何の操作も行なわずにすぐ周辺装置が使用可能になる、いわゆるプラグアンドプレイ（ＰｎＰ）機構が普及している。
【０００３】
本出願人は、特許文献１に電子装置に格納された電子装置のドライバを情報処理装置に自動的にインストールする技術を開示している。この特許文献１に開示した電子装置は、第１の装置と、この第１の装置のドライバを格納する第２の装置を内蔵した電子装置であって、電子装置は、第１の装置よりも先に第２の装置の動作を開始させ、第２の装置からインタフェースを介してドライバを読み出し可能状態にしている。
【０００４】
また特許文献２は、主デバイスと、この主デバイスをホスト装置で動作させるためのドライバプログラムを記録したサブデバイスと、ホスト装置に接続された時にホスト装置にサブデバイスを認識させる第１のデータを出力し、その後、ホスト装置に主デバイスを認識させる第２のデータを出力するインターフェース制御部とを設けている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２５６３４９号公報
【特許文献２】特開２００３−１５０５３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら特許文献１では、電子装置は一度情報処理装置に接続し、ドライバソフトウェアのインストールを行うと、別の情報処理装置に接続した時に第２の装置がイネーブル状態にならなず、ドライバソフトウェアをインストールすることができない問題が生じる。
【０００７】
また特許文献２では、ホスト装置に接続された時に、ホスト装置にまずサブデバイスを認識させ、次に主デバイスを認識させる制御を行うインタフェース制御部が必要となり、装置の構成が複雑になるという問題を有している。
【０００８】
本発明は上記事情に鑑みてなされたものであり、簡単な構成で、装置の状態によらず必ずドライバソフトウェアを自動インストールすることができる情報処理システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明の情報処理システムの制御方法は、第１の装置と、該第１の装置のドライバを格納する第２の装置とを有する電子装置と、該電子装置と外部接続用の共通インタフェースで接続する情報処理装置とを有する情報処理システムの制御方法であって、前記情報処理装置において、コンフィギュレーション処理する装置を前記第１の装置と前記第２の装置との中から選択するステップと、前記コンフィギュレーション処理する装置の装置情報を前記電子装置に要求する際に、前記装置情報の要求回数を前記第１の装置と前記第２の装置とで変更するステップと、前記電子装置において、前記情報処理装置から要求される、前記コンフィギュレーション処理する装置の装置情報の要求回数をカウントして、コンフィギュレーション処理する装置を判定するステップと、前記判定に従って前記第１の装置又は前記第２の装置を前記情報処理装置にコンフィギュレーション処理させる装置として設定するステップとを有している。
本発明によれば、電子装置は、情報処理装置から要求される装置情報の要求回数をカウントすることで、コンフィギュレーション処理を行う装置が第１の装置であるのか、第２の装置であるのかを判定することができる。従って、電子装置は、情報処理装置からの要求に従って、コンフィギュレーション処理を行う装置を設定することができる。このため、第２の装置に記憶された第１の装置のドライバを情報処理装置にインストールさせてから、第１の装置を情報処理装置上で動作させることができる。
【００１０】
本発明の情報処理システムの制御方法は、第１の装置と、該第１の装置のドライバを格納する第２の装置とを有する電子装置と、該電子装置と外部接続用の共通インタフェースで接続する情報処理装置とを有する情報処理システムの制御方法であって、前記情報処理装置において、コンフィギュレーション処理する装置を前記第１の装置と前記第２の装置との中から選択するステップと、前記第１の装置をコンフィギュレーション処理すると選択した場合に、ベンダーリクエスト信号を含ませた制御信号を生成して前記電子装置に送信し、前記第２の装置をコンフィギュレーション処理すると選択した場合に、前記ベンダーリクエスト信号を含まない制御信号を生成して前記電子装置に送信するステップとを有し、前記電子装置において、前記コンフィギュレーション処理中に、前記情報処理装置から前記ベンダーリクエスト信号を含まない制御信号を受信した場合に、前記第２の装置をコンフィギュレーション処理を行う装置として選択するステップと、前記情報処理装置から前記ベンダーリクエスト信号を含む制御信号を受信した場合に、前記第１の装置をコンフィギュレーション処理を行う装置として選択するステップと、を有している。
本発明によれば、電子装置は、情報処理装置から送られる制御信号にベンダーリクエスト信号が含まれるか否かを判定して、コンフィギュレーション処理を行う装置が第１の装置であるのか、第２の装置であるのかを判定することができる。従って、電子装置は、情報処理装置からの要求に従って、コンフィギュレーション処理を行う装置を設定することができる。このため、第２の装置に記憶された第１の装置のドライバを情報処理装置にインストールさせてから、第１の装置を情報処理装置上で動作させることができる。
【発明の効果】
【００１１】
本発明は、簡単な構成で、装置の状態によらず必ずドライバソフトウェアを自動インストールすることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１実施例を示すブロック図である。
【図２】第１実施例の動作手順を示すフローチャートである。
【図３】記憶装置のコンフィギュレーションの手順を示すフローチャートである。
【図４】キーボード装置のコンフィギュレーションの手順を示すフローチャートである。
【図５】キーボード装置の一構成例を示すブロック図である。
【図６】記憶装置の一構成例を示すブロック図である。
【図７】ＵＳＢ／ＨＵＢコントローラのうちのＨＵＢコントローラの一構成例を示すブロック図である。
【図８】ＰＣ上のアプリケーションソフトウェアからキーボード装置を制御する時の制御信号の流れ示す図である。
【図９】ＲＦＩＤ５０によりキーボード装置のイネーブル／ディスエーブルを設定する構成を示す図である。
【図１０】イネーブル／ディスエーブル設定装置によりキーボード装置のイネーブル／ディスエーブルを設定する構成を示す図である。
【図１１】イネーブル／ディスエーブル設定装置によりキーボード装置のイネーブル／ディスエーブルを設定する構成を示す図である。
【図１２】外部接続された記憶装置を設けた電子装置の構成を示す図である。
【図１３】本発明の第２実施例の構成を示すブロック図である。
【図１４】図１２に示すキーボード装置の一構成例のブロック図である。
【図１５】図１２に示す記憶装置の一構成例のブロック図である。
【図１６】マルチ機能コントローラを搭載したＵＳＢ装置において、ＲＦＩＤによってキーボード装置のイネーブル／ディスエーブルを設定する構成を示す図である。
【図１７】本発明の第３実施例の構成を示すブロック図である。
【図１８】第３実施例の動作手順を示すフローチャートである。
【図１９】記憶装置のコンフィギュレーションの手順を示すフローチャートである。
【図２０】キーボード装置のコンフィギュレーションの手順を示すフローチャートである。
【図２１】本発明の第４実施例の構成を示すブロック図である。
【図２２】マルチ機能コントローラと記憶装置の構成と、これら装置間で送受信される信号を示す図である。
【図２３】第４実施例の動作手順を示すフローチャートである。
【図２４】ＵＳＢ装置の一般的なコンフィギュレーションの手順を示すフローチャートである。
【図２５】ＵＳＢ装置の一般的なコンフィギュレーションの手順を示すフローチャートである。
【図２６】本発明のコンフィギュレーションの手順を示すフローチャートである。
【図２７】Descriptorの要求と送出の手順を示すフローチャートである。
【図２８】Descriptorの要求と送出の手順を示すフローチャートである。
【図２９】コンフィギュレーション中のベンダーリクエストによって有効にする装置を切り換え、コンフィギュレーションを行う手順を示すフローチャートである。
【図３０】実施例５の情報処理システム１の構成を示す図である。
【図３１】実施例５の動作手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
添付図面を参照しながら本発明の好適な実施例を説明する。
【実施例１】
【００１４】
図１は、本発明の第１実施例による情報処理システム１の構成を示すブロック図である。情報処理システム１は、情報処理装置１０と電子装置３０とを有する。情報処理装置１０は例えば、パーソナルコンピュータである。電子装置３０は情報処理装置１０に接続可能な周辺装置であり、図１の例ではキーボードである。情報処理装置１０と電子装置３０とはＵＳＢケーブル２０で接続されている。以下、電子装置３０をＵＳＢ装置という。また、情報処理装置１０をＰＣ１０という。
【００１５】
ＰＣ１０のＯＳ１１は例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）である。図１は、キーボードドライバ１２、記憶装置ドライバ１３及びＨＵＢ（ハブ）ドライバ１４がＯＳ１１上にインストールされている状態を示す。これらのドライバのうち、記憶装置ドライバ１３とＨＵＢドライバ１４はＯＳ１１に最初から組み込まれている標準のデバイスドライバである。キーボードドライバ１２は、後述する手順に従ってインストールされるものである。図示していないが、ＯＳ１１にはＯＳを構成する様々なプログラムやその他の各種ドライバ、更には各種ユーティリティが組み込まれている。ＯＳ１１は内部バス１６を介してＵＳＢホストコントローラ１５に接続されている。なお、ＰＣ１０のハードウェア構成はＣＰＵ、ＲＡＭ、ＲＯＭなどを含む一般的なものである。ＵＳＢホストコントローラ１５はＵＳＢをサポートするもので、ＰＣ１０に接続される周辺装置の各装置（ファンクション）を結び付けてＯＳ１１上に周辺装置の各機能を提供する。
【００１６】
ＵＳＢ装置３０は、キーボード装置３１、記憶装置３２及びＵＳＢ／ＨＵＢコントローラ３３内に設けられたＨＵＢ装置３４、スイッチ３７を有する。キーボード装置３１、記憶装置３２及びＨＵＢ装置３４は、ＰＣ１０に対するファンクション（周辺機器）である。つまり、ＵＳＢインタフェース上にトランザクションを発生させることができる。キーボード装置３１と記憶装置３２はそれぞれ、ＵＳＢバスであるＨＵＢポート３５と３６を介してＵＳＢ／ＨＵＢコントローラ３３に接続されている。スイッチ３７は、キーボード・イネーブル制御信号３８を出力し、キーボード装置３１をイネーブル状態とディスエーブル状態に設定する。
【００１７】
キーボード装置３１は、キーボードを構成するハードウェアとソフトウェアを有する。キーボード装置３１は、スイッチ３７の出力するキーボード・イネーブル制御信号３８でイネーブル状態とディスエーブル状態に設定される。イネーブル状態とは、キーボード装置３１が動作可能な状態を意味する。また、ディスエーブル状態とは、少なくともキーボード装置３１の接続がＵＳＢインタフェース上で認識されない状態となることを意味する。キーボード装置３１のディスエーブル状態の一例は後述する。このキーボード・イネーブル制御信号３８は、専用の信号線であり、キーボード装置３１の汎用入出力端子や外部割り込み端子に接続される。キーボード・イネーブル制御信号３８がハイレベルの時はイネーブル状態、ローレベルの時はディスエーブル状態である。キーボード装置３１がイネーブル状態に設定されると、ＵＳＢ仕様に従って、接続状態をＨＵＢポート３５に出力する。キーボード装置３１のより詳細な構成については後述する。
【００１８】
記憶装置３２は、記憶機能を提供するためのハードウェアとソフトフェアを有する。記憶装置３２はキーボードドライバを格納している。後述するシーケンスに従い、記憶装置３２からキーボードドライバが読み出され、ＯＳ１１上にキーボードドライバ１２として組み込まれる。記憶装置３２のデバイスドライバは、予め記憶装置ドライバ１３としてＯＳ１１に組み込まれている。なお、記憶装置３２の一構成例は後述する。
【００１９】
ＵＳＢ／ＨＵＢコントローラ３３はＵＳＢ及びＨＵＢをサポートするハードウェア及びソフトウェアを有する。ＵＳＢ／ＨＵＢコントローラ３３はＨＵＢ装置３４有する。ＨＵＢ装置３４はＨＵＢを制御するプログラム上で動作する内部プログラムであり、本実施の形態ではＵＳＢとしてのファンクションである。ＨＵＢ装置３４は、ＵＳＢケーブル２０の状態を監視して、キーボード・イネーブル制御信号３８をキーボード装置３１に出力する機能を有する。なお、ＨＵＢとはＵＳＢ規程の集線装置であり、図１の構成ではキーボード装置３１及び記憶装置３２とＵＳＢケーブル（ＵＳＢバス、ＵＳＢインタフェースといってもよい）との間でトランザクションを制御するものである。ＵＳＢ／ＨＵＢコントローラ３３は、ＵＳＢ装置であるキーボード装置３１と記憶装置３２とをＵＳＢ規程に則って接続している。なお、ＵＳＢ／ＨＵＢコントローラ３３の一構成例は後述する。
【００２０】
次に、図２を参照しながら第１実施例の動作を説明する。なお、図２（ａ）にはＵＳＢ装置３０の動作シーケンスを示し、図２（ｂ）にはＰＣ１０の動作シーケンスを示す。
【００２１】
まず、ＵＳＢ装置３０のスイッチ３７をキーボード装置・ディスエーブル側に設定しておき、ＵＳＢ装置３０をＰＣ１０に接続する。ＰＣ１０にＵＳＢ装置３０が接続されると、まずキーボード装置３１がスイッチ３７からのキーボード・イネーブル制御信号３８の信号状態をチェックする（ステップＳ１１）。信号がローレベルであれば（ステップＳ１１／ＮＯ）、キーボード装置３１をディスエーブル状態に制御し（ステップＳ１２）、ハイレベルであれば（ステップＳ１１／ＹＥＳ）、キーボード装置３１をイネーブル状態に制御する（ステップＳ１３）。ここでのスイッチ設定は、ディスエーブルに設定される。
【００２２】
ＰＣ１０側では、ＯＳ１１上に組み込まれているＨＵＢドライバ１４が動作を開始し、ＨＵＢコンフィギュレーションが設定される（ステップＳ３１）。他方、ＵＳＢ装置３０でもＨＵＢコンフィギュレーションが設定される（ステップＳ１４）。これにより、ＵＳＢ／ＨＵＢコントローラ３３のＨＵＢ装置３４が機能し始める。
【００２３】
ここで、スイッチ３７からのキーボード・イネーブル制御信号３８をキーボード装置３１により再度チェックする。キーボード・イネーブル制御信号３８に変化がなかった場合には（ステップＳ１５／ＮＯ）、再度キーボード・イネーブル制御信号３８をチェックする（ステップＳ１９）。また、キーボード・イネーブル制御信号３８に変化があった場合には（ステップＳ１６／ＹＥＳ）、キーボード・イネーブル制御信号がハイレベルであるか否かを判定する（ステップＳ１６）。キーボード・イネーブル制御信号がハイレベルの場合には（ステップＳ１６／ＹＥＳ）、キーボード装置３１をイネーブル状態に制御し（ステップＳ１８）、ローレベルの場合には（ステップＳ１６／ＮＯ）、キーボード装置３１をディスエーブル状態に制御する（ステップＳ１７）。
【００２４】
再度スイッチ３７からのキーボード・イネーブル制御信号３８の信号状態をチェックし、信号状態がローレベルであったならば（ステップＳ１９／ＮＯ）、記憶装置３２の稼動チェックに進み（ステップＳ２０）、ハイレベルであったならば（ステップＳ１９／ＹＥＳ）、キーボード装置処理へ進む（ステップＳ２１）。ここでのスイッチ設定は、ローレベルであるので、記憶装置３２の稼動チェックへ進む（ステップＳ２０）。
【００２５】
記憶装置３２は、未コンフィギュレーション状態であるのため（ステップＳ２０／ＮＯ、ステップＳ３４／ＹＥＳ））、記憶装置処理へ進む（ステップＳ２２、ステップＳ３５）。記憶装置処理のシーケンスを図３に示す。図３（ａ）にはＵＳＢ装置３０の動作シーケンスを示し、図３（ｂ）にはＰＣ１０の動作シーケンスを示す。記憶装置３２が動作を開始し、ＰＣ１０側は、記憶装置３２を検出する（ステップＳ５１）。すると、ＯＳ１１上に組み込まれている記憶装置ドライバ１３によって、記憶装置３２がコンフィギュレーションされる（ステップＳ５２）。そして、記憶装置３２がディスクドライブとして稼動する（ステップＳ５３）。
【００２６】
図２のフローに戻って、スイッチ３７の変化を監視し、スイッチ設定に変化が起きるまで、ステップＳ１５〜ステップＳ２０のシーケンスを繰り返す。
【００２７】
ここで、スイッチの設定がキーボード装置３１をイネーブル状態にする設定に変更される。すると、スイッチ３７からの信号状態の変化をキーボード装置３１で検出し（ステップＳ１５）、信号状態がハイレベルであればキーボード装置３１をイネーブル状態に制御する（ステップＳ１８）。次に、信号がハイレベルであるので（ステップＳ１９、ステップＳ３２／ＹＥＳ）、キーボード装置処理へ進む（ステップＳ２１、ステップＳ３３）。キーボード装置処理の詳細を図４に示す。図４（ａ）にはＵＳＢ装置３０の動作シーケンスを示し、図４（ｂ）にはＰＣ１０の動作シーケンスを示す。キーボード装置３１は、キーボード・イネーブル制御信号３８を受けて動作を開始しているので、ＰＣ１０は、未知のキーボード装置を検出する（ステップＳ７１）。ＰＣ１０は、該当するドライバがＰＣ１０内部のＨＤＤなどの記憶装置に格納されているかどうかを調べる。本例では、ＰＣ１０内部にキーボードドライバを具備していない。従って、ＯＳ１１は、外部ディスクドライブとして認識されている記憶装置３２にアクセスする。すると、記憶装置３２内に記録されているキーボードドライバを読み出し（ステップＳ７２）、キーボード装置３１をコンフィギュレーションする（ステップＳ７３）。
【００２８】
このようにして、自動的にキーボードドライバをＯＳに組み込むことができる。従って、ユーザはドライバをインストールする際、ドライバが格納されている記憶手段の心配をすることなくＵＳＢ装置をＰＣ１０に接続しただけでＵＳＢ装置の利用を開始することができ、プラグアンドプレイを体感することができる。
【００２９】
なお、図示していないが、記憶装置３２に予め書き込まれているキーボードドライバをＲｅａｄＯｎｌｙ属性としておくことで、記憶装置３２からキーボードドライバを誤って消去してしまう不具合を防止することができる。すなわち、ＵＳＢ装置３０を接続した際には必ずキーボードドライバが読み込まれ、キーボード装置３１が動作することを保証することができる。また、キーボードドライバを記憶装置３２の書き込み不可領域に書き込んでおくこともできる。この場合もキーボードドライバが記憶装置３２から消去されてしまうことがない。
【００３０】
図５にキーボード装置３１の詳細な構成を示す。キーボード装置３１はＵＳＢインタフェース上のファンクション（周辺機器）であって、ＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）３１３、キーボードマトリクス３１１及びこれらを接続するポート３１２を有する。ＭＣＵ３１３はマトリクススキャン３１４、ＲＡＭ３１５、インタフェースエンジン（ＩＦエンジン）３１６、周辺エンジン３１７、ＲＯＭ３１８及びデータ解析エンジン３１９を具備する。
【００３１】
キーボードマトリクス３１１は複数のキーがマトリクス状に配列された機構的部分である。マトリクススキャン３１４はキーボードマトリクス３１１をスキャンしてキーのＯＮ／ＯＦＦを調査する部分であり、キーボードに必要なスキャンロジックである。キーボードマトリクス３１１は周辺エンジン３１７に対してポート３１２経由で接続されている。周辺エンジン３１７には、汎用入出力ポートや割り込み端子を介して、スイッチ３７からのキーボード・イネーブル制御信号３８が与えられる。キーボード・イネーブル制御信号３８は、ＭＣＵ３１３がそのハイレベルとローレベルレベルを検出できる信号であるならば、任意の仕様を持つことができる。前述したように、キーボード・イネーブル制御信号３８がハイレベルであればキーボード装置３１は動作可能なイネーブル状態であり、ローレベルであれば動作してはならないディスエーブル状態である。データ解析エンジン３１９は、マトリクススキャン３１４と周辺エンジン３１７からキーデータを取得し、またキーボード・イネーブル制御信号３８のレベルをチェックして動作が許可されているかどうかを判断するなど、ＭＣＵ３１３全体を制御する部分である。
【００３２】
インタフェースエンジン（ＩＦエンジン）３１６はキーボード装置３１を外部に接続するためのインタフェースを提供するもので、接続状態を監視・制御し、外部バスインタフェース（ＵＳＢケーブル２０に相当する）を通じてあらゆるトランザクションを制御する。データ解析エンジン３１９は、キーボード・イネーブル制御信号３８の状態がハイレベルであれば、インタフェースエンジン（ＩＦエンジン）３１６とマトリクススキャン３１４の動作を許可し、ローレベルであれば、インタフェースエンジン（ＩＦエンジン）３１６とマトリクススキャン３１４の動作を禁止する。周辺エンジン３１７は、キーボード・イネーブル制御信号３８の状態を検出するために、ディスエーブル状態であっても動作している。データ解析エンジン３１９は、インタフェースエンジン（ＩＦエンジン）３１６の動作を許可している間、マトリクススキャン３１３からキー状態を受けとり、必要ならばインタフェースエンジン（ＩＦエンジン）３１６を通じて外部にデータを出力させる。また、データ解析エンジン３１９は、インタフェースエンジン（ＩＦエンジン）３１６を通して外部から入力されたデータを受け取り、データ内容に応じた適切な処理を施す。マトリクススキャン３１４、データ解析エンジン３１９及びインタフェースエンジン（ＩＦエンジン）３１６はＭＣＵ３１３上のＲＯＭ３１８もしくはＲＡＭ３１５上、又はＭＣＵ３１３に外付けされたＲＯＭやＲＡＭ上で動作する。また、マトリクススキャン３１４、周辺エンジン３１７及びデータ解析エンジン３１９が必要とする各種データも、ＭＣＵ３１３上のＲＯＭ３１８もしくはＲＡＭ３１５、又はＭＣＵ３１３に外付けされたＲＯＭやＲＡＭに格納されている。
【００３３】
図６は、記憶装置３２の一構成例を示すブロック図である。記憶装置３２はＵＳＢインタフェース上のファンクション（周辺機器）であって、ＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）３２０、不揮発性記憶装置３２１及びこれらを接続するポート３２２を有する。ＭＣＵ３２０はファイルシステムエンジン３２４、ＲＡＭ３２５、インタフェースエンジン（ＩＦエンジン）３２６、周辺エンジン３２７、ＲＯＭ３２８及びデータ解析エンジン３２９を具備する。
【００３４】
不揮発性記憶装置３２１は、フラッシュＲＯＭやＦｅＲＡＭなどの不揮発性メモリで構成され、ＭＣＵ３２０で制御される。この不揮発性記憶装置３２１内に、キーボード装置３１のドライバが格納されている。不揮発性記憶装置３２１は、ポート３２２を介してＭＣＵ３２０上の周辺エンジン３２７に接続され、ＭＣＵ３２０から見ると、外部接続された又は内部のＲＡＭ／ＲＯＭとして見える。ＭＣＵ３２０上に内蔵されるＲＡＭ３２５やＲＯＭ３２８の存在の有無にかかわらず、不揮発性記憶装置３２１は外部バスインタフェース（ＵＳＢケーブル２０に相当する）にとって有効なディスクドライブとして動作する。そのため、不揮発性記憶装置３２１上の内容をファイルとして管理するファイルシステムエンジン３２４がＭＣＵ３２０に搭載されている。ファイルシステムエンジン３２４は、不揮発性記憶装置３２１上に展開されるメモリ内容をファイルとして管理する。管理方法には種々の方法があるが、例えばＰＣ１０側にあるファイルを記憶装置３２に保存する場合を考えると、そのファイルの内容に一致するメモリ内容が、記憶装置３２上のメモリのどの位置に記録され、それとファイル名やタイムスタンプの情報など、前記記録された内容がファイルであることを示す情報が同じく記憶装置３２上のメモリのどの位置に記録されているか、またはその記録手段などの情報を管理する。ＨＵＢポート３６からは、ファイルの読み書き要求がＭＣＵ３２０のインタフェースエンジン（ＩＦエンジン）３２６に対して発行される。データ解析エンジン３２９は、上記要求の内容を調査してファイルシステムエンジン３２４や周辺エンジン３２７を制御する。
【００３５】
図７は、ＵＳＢ／ＨＵＢコントローラ３３のうちのＨＵＢコントローラ３４０の一構成例を示すブロック図である。ＨＵＢコントローラ３４０はインタフェースエンジン（ＩＦエンジン）３４１、ＲＡＭ３４２、データ解析エンジン３４３、ＲＯＭ３４４，周辺エンジン３４５、ＨＵＢインタフェースエンジン（ＩＦエンジン）３４６を有する。図１に示すＨＵＢ装置３４は、周辺エンジン３４５で実現される。
【００３６】
ＨＵＢポート３５及び３６は、ＨＵＢインタフェースエンジン（ＩＦエンジン）３４６に接続されている。ＨＵＢインタフェースエンジン（ＩＦエンジン）３４６は図２に示すステップＳ１４、Ｓ３１のＨＵＢコンフィギュレーションの確立処理を行う。ＵＳＢケーブル２０はインタフェースエンジン（ＩＦエンジン）３４１に接続されている。データ解析エンジン３４３は、ＨＵＢポート３５や３６、及びＵＳＢケーブル２０を介して受信したデータや信号を解析し、ＨＵＢコントローラ３４０全体を制御する。ＲＡＭ３４２は各エンジンの作業用メモリとして機能する。ＲＯＭ３４４には、各エンジンの動作を記述したプログラムやデータが格納されている。
【００３７】
［実施例１の変形例］
キーボード装置３１０のイネーブル状態とディスエーブル状態とを切り替える他の例として、次のものが挙げられる。図８に示す情報処理システム１は、ＰＣ１０上で動作するアプリケーションソフトウェア１７から上述したキーボード・イネーブル制御信号３８をキーボード装置３１に入力する。アプリケーションソフトウェア１７からベンダーリクエストとしてキーボードドライバ１２に送信し、キーボードドライバ１２から図８の矢印の順でキーボード装置３１に到達する。キーボード装置３１はＵＳＢ／ＨＵＢコントローラ３３から出力されるキーボード・イネーブル制御信号３８を入力して、この信号によりイネーブル状態とディスエーブル状態とを切り替える。
【００３８】
また、図９に示す情報処理システム１は、ＵＳＢ装置３０内にＲＦＩＤ（Radio Frequency-Identification）装置５０を組み込んでいる。外部のＲＦＩＤ書き込み装置５１により、ＵＳＢ装置３０内のＲＦＩＤ装置５０にキーボード装置３１のイネーブル状態とディスエーブル状態を設定する。ＲＦＩＤ装置５０は外部のＲＦＩＤ書き込み装置５１からの設定により、キーボード・イネーブル制御信号３８をキーボード装置３１に出力する。キーボード装置３１は、キーボード・イネーブル制御信号３８によりイネーブル状態とディスエーブル状態に設定される。なお、ＲＦＩＤを用いることで、特定のユーザだけがＲＦＩＤ装置５０に書き込みを行うことができる。本実施例では、キーボード装置３１を搭載したＵＳＢ装置３０を例に説明しているが、このキーボード装置３１を他の周辺装置とした場合に、ＵＳＢ装置３０にＲＦＩＤ装置５０を搭載することによって、特定のユーザだけに周辺装置の使用が許可されるように構成することもできる。
【００３９】
また、図１０に示す情報処理システム１は、専用に設けたイネーブル／ディスエーブル設定装置６０によりキーボード装置３１のイネーブルとディスエーブルとを設定する。イネーブル／ディスエーブル設定装置６０は、ＵＳＢ装置３０に接続されると、インタフェースエンジン（ＩＦエンジン）６２を通じてＵＳＢ装置３０にキーボード・イネーブル制御信号の状態を変更させる信号を送信する。ＵＳＢ装置３０は、この信号をＵＳＢ／ＨＵＢコントローラ３３で受信し、受信した信号に基づいてキーボード・イネーブル制御信号を設定する。
【００４０】
イネーブル／ディスエーブル設定装置６０のインタフェースエンジン（ＩＦエンジン）６２がＵＳＢホストコントローラであったならば、キーボード・イネーブル制御信号の状態を変更させる信号をＵＳＢ仕様に基づいたベンダーリクエストコマンドとして送信することができる。インタフェースエンジン（ＩＦエンジン）６２をＵＳＢ仕様で定められている信号特性のみに準拠した装置とすれば、例えば、前記インタフェースエンジン（ＩＦエンジン）６２より接続から一定期間内に一定の間隔でリセット信号状態とＩＤＬＥ信号状態を交互に送信するようにする。ＵＳＢ装置３０は、この一定期間内のリセット信号のリセット回数をカウントすることで、キーボードイネーブル制御信号をイネーブル状態とディスエーブル状態のどちらに制御すればよいか判定可能となり、安価にイネーブル／ディスエーブル設定装置６０を安価に提供することができる。
【００４１】
図１１は、イネーブル／ディスエーブル設定装置６０とＵＳＢ装置３０との間に専用の信号線７１を設け、その接続を行う専用のインタフェース７０を持たせた構成である。イネーブル／ディスエーブル設定装置６０によりＵＳＢ装置３０内のキーボード装置３１に直接キーボードイネーブル制御信号を送信することを特徴としている。
【００４２】
これらの構成の情報処理システム１により、キーボード装置３１のドライバがインストールされていないＰＣ１０へ接続する場合に、キーボード装置３１がディスエーブルされた初期状態に戻すことが可能となる。逆に、キーボード装置３１のドライバがインストールされているＰＣ１０へＵＳＢ装置３０を接続する場合には、事前にキーボード装置３１をイネーブル状態として接続することができる。
【００４３】
また、図１２に示すように記憶装置３２は、ＵＳＢ装置３０の外部に外部記憶装置７０として設けてもよい。図１２に示すようにＵＳＢ装置３０に接続インタフェース７１を設けて、ＵＳＢ装置３０と外部記憶装置７０とを接続する。
【００４４】
またＵＳＢ装置３０と外部記憶装置７０とはネットワーク接続する構成であってもよい。外部記憶装置７０とＵＳＢ装置３０とが離れた場所にあり、ネットワークを介して外部記憶装置７０から取得したドライバを、ＰＣ１０側に組み込む。
【００４５】
このように記憶装置を外部記憶装置７０又はネットワーク接続としたことで、ドライバが更新されたときの処理が非常に簡単になる。また外部記憶装置とすることで、ドライバの保存先を共通化することもできる。
【００４６】
また、ＵＳＢ装置３０内の記憶装置３２の他に、外部記憶装置７０を設ける構成であってもよい。この場合、ＵＳＢ装置３０にスイッチを設けて、ＵＳＢ装置３０内の記憶装置３２を優先するのか、外部記憶装置７０を優先するのかを設定してもよい。また、外部記憶装置７０の接続をトリガとして、外部記憶装置７０を優先させるようにしてもよい。
【００４７】
また、外部記憶装置７０をリムーバブルディスクとして認識させておけば、取り外してもシステムに影響はなく、使い勝手を向上させることができる。この場合、ＵＳＢ／ＨＵＢコントローラ３３にスイッチを設けて、リムーバブルディスクとキーボード装置３１とを切り換える構成、またはＵＳＢ／ＨＵＢコントローラ３３に、リムーバブルディスクとキーボード装置３１とを複合装置として認識させる構成を取る。
【実施例２】
【００４８】
次に、本発明の第２実施例について説明する。本実施例のＵＳＢ装置３０は、図１３に示すようにマルチ機能コントローラ４０を備えている。マルチ機能コントローラ４０は、キーボード装置４１と記憶装置４２とを有する。キーボード装置４１と記憶装置４２とは、マルチ機能コントローラ４０上で一つの物理デバイスとして存在する。キーボード装置４１と記憶装置４２は、ＵＳＢケーブル２０を介してＵＳＢホストコントローラ１５に接続されている。
【００４９】
また、マルチ機能コントローラ４０とスイッチ３７との間は、専用の信号線によって接続され、マルチ機能コントローラ４０の汎用入出力端子や外部割り込み端子に接続される。スイッチ３７からのキーボード・イネーブル制御信号３８は、マルチ機能コントローラ４０のＲＡＭ４４上のメモリ・ステータスに格納される。キーボード装置４１は、ＲＡＭ４４に格納されたキーボード・イネーブル制御信号３８をデータ解析エンジン４１３で解析し、イネーブル状態とディスエーブル状態に切り替える。
【００５０】
図１４は、キーボード装置４１の一構成例を示すブロック図である。キーボード装置４１はキーボードマトリクス４１１、マトリクススキャン４１２及びデータ解析エンジン４１３を有する。マルチ機能コントローラ４０は、ＲＡＭ４４、インタフェースエンジン（ＩＦエンジン）４３、周辺エンジン４６及びＲＯＭ４５を有する。これらの構成要素は、キーボード装置４１の構成要素でもあり、全体として図５に示すキーボード装置３１と同一の構成及び作用が実現されている。キーボード装置４１は、ＲＡＭ４４に格納されたキーボード・イネーブル制御信号３８をデータ解析エンジン４１３で解析し、イネーブル状態とディスエーブル状態に切り替える。
【００５１】
図１５は、記憶装置４２の一構成例を示すブロック図である。記憶装置４２は、不揮発性記憶装置４２１、ファイルシステム・エンジン４２２及びデータ解析エンジン４２３を有する。マルチ機能コントローラ４０のＲＡＭ４４、インタフェースエンジン（ＩＦエンジン）４３、周辺エンジン４６及びＲＯＭ４５は、記憶装置４２の構成要素でもある。つまり、構成要素４４〜４６はキーボード装置４１と記憶装置４２とで共用されている。記憶装置４２の機能は、図６に示す記憶装置３２の機能と同様である。
【００５２】
本実施例でも上述したようにスイッチ３７がキーボード装置４１へキーボード・イネーブル制御信号３８を出力する。まず、ＵＳＢ装置３０のスイッチ３７をキーボード装置４１がディスエーブルになるように設定しておき、ＵＳＢ装置３０をＰＣ１０へ接続する。記憶装置３２がディスクドライブとして動作を開始した後、スイッチ３７をキーボード・イネーブル状態へ切替えると、キーボード装置３１が動作を開始し、スイッチ３７からキーボード・イネーブル制御信号３８が出力される。この信号をマルチ機能コントローラ４０に入力し、図１４に示すＲＡＭ４４上のメモリ・ステータスに格納する。その後は、上述した手順によりキーボード装置３１を使用可能とする。
【００５３】
これにより、自動的にキーボードドライバをＯＳに組み込むことができる。従って、ユーザはドライバをインストールする際、ドライバが格納されている記憶手段の心配をすることなくＵＳＢ装置３０をＰＣ１０に接続しただけでＵＳＢ装置３０の利用を開始することができ、プラグアンドプレイを体感することができる。
【００５４】
なお、マルチ機能コントローラ４０を有するＵＳＢ装置３０においても、上述した第１実施例の図８から図１１に示す変形例を適用することができる。図１６には、マルチ機能コントローラ４０を有するＵＳＢ装置３０において、ＲＦＩＤ装置５０によりキーボード装置３１のイネーブル状態とディスエーブル状態とを切り替える構成を示す。
【実施例３】
【００５５】
次に本発明の第３実施例について説明する。本実施例の構成を図１７に示す。本実施例も、スイッチ３７からのキーボード・イネーブル制御信号３８をＲＡＭ４４に格納する。キーボード装置４１は、ＲＡＭ４４に格納されたキーボード・イネーブル制御信号３８をデータ解析エンジン４１３で解析し、イネーブル状態とディスエーブル状態とに切り替える。同様に記憶装置４２もＲＡＭ４４に格納されたキーボード・イネーブル制御信号３８をデータ解析エンジン４２３で解析し、イネーブル状態とディスエーブル状態とに切り替える。すなわち、キーボード装置４１がキーボード・イネーブル制御信号３８によってイネーブル状態となると、記憶装置４２は、記憶装置・ディスエーブル制御信号４７によってディスエーブル状態に設定される。
【００５６】
本実施例の動作手順を図１８〜図２０のフローチャートを参照しながら説明する。なお、図１８〜図２０のフローチャートにおいて、（ａ）にはＵＳＢ装置３０の動作シーケンスを示し、（ｂ）にはＰＣ１０の動作シーケンスを示す。ＵＳＢ装置３０のスイッチ３７を、キーボード装置４１をディスエーブル状態とする設定にしておき、ＵＳＢ装置３０をＰＣ１０へ接続する。すると、マルチ機能コントローラ４０は、まず、キーボード・イネーブル制御信号３８の信号レベルをチェックし（ステップＳ８２）、信号レベルがローレベルであれば、キーボード装置４１をディスエーブル状態に制御し（ステップＳ８３）、記憶装置４２をイネーブル状態に制御する（ステップＳ８４）。そして、記憶装置４２の装置情報をＲＯＭ４５から読み出してＲＡＭ４４に書き込み、ＰＣ１０への送出準備を行う（ステップＳ８５）。このとき、記憶装置４２の装置情報には、記憶装置４２がＰＣ１０にコンフィギュレーションされる時に、記憶装置４２が、動作の開始とともに起動するＣＤ−ＲＯＭとしてコンフィギュレーションされるように記述されている。
【００５７】
次にスイッチ３７からのキーボード・イネーブル制御信号３８のレベルに変化があるかどうかをチェックする（ステップＳ８９）。ここでは、変化が無いので（ステップＳ８９／ＮＯ）、スイッチ３７の信号レベルをチェックする（ステップＳ９７）。スイッチ３７のキーボード・イネーブル制御信号３８はローレベルにあるので（ステップＳ９７／ＮＯ）、記憶装置４２が稼働しているか否かを確認する（ステップＳ９８）。記憶装置４２は未コンフィギュレーションであるので記憶装置処理へと進む（ステップＳ９９）。記憶装置処理のシーケンスを図１９に示す。ここでは、記憶装置４２が検出されると（ステップＳ１３１）、ＯＳ上に組み込まれている記憶装置ドライバ１３によって記憶装置４２がコンフィギュレーションされる（ステップＳ１３２）。その際、記憶装置情報にＣＤ−ＲＯＭとの記述があるので、ＰＣ１０は、記憶装置４２をＣＤ−ＲＯＭとしてコンフィギュレーションする。
【００５８】
ＵＳＢ装置３０には、あらかじめ記憶装置４２がＣＤ−ＲＯＭとして稼動し始めた場合に、キーボードドライバのインストーラが起動するように記憶装置４２に記録しておく。そして、記憶装置４２がＣＤ−ＲＯＭとして稼動すると（ステップＳ１２２、Ｓ１３３）、キーボード装置ドライバのインストーラが自動的に実行される（ステップＳ１３３、１３４）。このインストーラによってキーボード装置ドライバが記憶装置４２から読み出され、ＰＣ１０にコピーされる（ステップＳ１３５）。その後は、スイッチ３７からのキーボード・イネーブル制御信号３８のレベルチェックを繰り返す（ステップＳ８９）。
【００５９】
そして、スイッチ３７からのキーボード・イネーブル制御信号３８が、キーボード・イネーブル、すなわち記憶装置ディスエーブル状態に切替えられると、次のスイッチ３７の信号レベルチェックで信号レベルの変化を検出する（ステップＳ８９／ＹＥＳ）。そして、スイッチ３７の信号レベルチェックを実施し（ステップＳ９０）、キーボード・イネーブル制御信号３８がハイレベルであれば（ステップＳ９０／ＹＥＳ）、キーボード装置４１をイネーブルに制御し（ステップＳ９４）、記憶装置４２をディスエーブル状態に制御する（ステップＳ９５）。また、キーボード装置４１の装置情報をＲＯＭ４５からＲＡＭ４４にコピーし、装置情報の送信準備を行う。次のスイッチ３７の信号レベルチェックでは、キーボード・イネーブル制御信号３８がハイレベルになっているので（ステップＳ９７／ＹＥＳ）、キーボード処理へと進む（ステップＳ１００、Ｓ１１３）。キーボード処理のシーケンスを図２０に示す。
【００６０】
図２０に示すキーボード処理のシーケンスでは、キーボード装置４１は、スイッチ３７からのキーボード・イネーブル制御信号３８を受けて動作を開始しており、送信する装置情報がキーボード装置のものに書き換えられている。従ってＰＣ１０側は、未知のキーボード装置４１を検出する（ステップＳ１５１）。すると、ＰＣ１０内部の記憶装置（図示せず）に前記ドライバ・コピーステート（図１９に示すステップＳ１３５）にてコピーされたキーボードドライバを読み出し、キーボード装置４１をコンフィギュレーションする（ステップＳ１５３）。
【００６１】
このようにして、自動的にキーボードドライバをＯＳに組み込むことができる。従って、ユーザはドライバをインストールする際、ドライバが格納されている記憶手段の心配をすることなくＵＳＢ装置３０をＰＣ１０に接続しただけでＵＳＢ装置３０の利用を開始することができ、プラグアンドプレイを体感することができる。
【実施例４】
【００６２】
次に本発明の第４実施例について説明する。本実施例は、図２１に示すようにマルチ機能コントローラ４０にキーボード装置４１と記憶装置４２とが組み込まれた構成において、スイッチ３７ではなく、記憶装置４２によってキーボード装置４１と記憶装置４２のイネーブル／ディスエーブルを制御する。
【００６３】
本実施例の動作手順を図２３に示すフローチャートを参照しながら説明する。図２３（ａ）にはＵＳＢ装置３０の動作シーケンスを示し、図２３（ｂ）にはＰＣ１０の動作シーケンスを示す。初期状態において、ＵＳＢ装置３０のキーボード装置４１をディスエーブルに設定し、記憶装置４２をイネーブルに設定しておく。ＵＳＢ装置３０をＰＣ１０へ接続すると（ステップＳ１６１）、マルチ機能コントローラ４０によって、周辺エンジン４６を経由して記憶装置４２内の不揮発性記憶装置４２１（図２２に示す）からキーボード・イネーブル制御信号３８が読み出され、ＲＡＭ４４にセットされる。この信号状態に基づき、キーボード装置４１と記憶装置４２がイネーブル状態もしくはディスエーブル状態に制御される。図１４にＲＡＭ４４に格納されたキーボード・イネーブル制御信号３８をデータ解析エンジン４１３で解析し、キーボード装置４１の状態を設定する様子を示す。また図２２にＲＡＭ４４に格納されたキーボード・イネーブル制御信号３８をデータ解析エンジン４２３で解析し、記憶装置４２の状態を設定する様子を示す。
【００６４】
ここでは、初期状態であるので、キーボード・イネーブル制御信号３８はローレベルに設定されており（ステップＳ１６２／ＮＯ）、キーボード装置４１がディスエーブル状態に制御され、記憶装置４２がイネーブル状態に制御される。そして、記憶装置４２の装置情報がＲＯＭ４５から読み出され、ＲＡＭ４４にコピーされ、ＰＣ１０からの読み出しに備える（ステップＳ１６３）。装置情報のコピーが完了した段階で記憶装置４２が動作を開始し、ＰＣ１０が記憶装置４２を検出する（ステップＳ１８２）。ここでは、上述した第１実施例と同様に、ＯＳ上に組み込まれている記憶装置ドライバ１３によって、記憶装置４２がコンフィギュレーションされる（ステップＳ１８３）。そして、記憶装置４２がディスクドライブとして稼動する（ステップＳ１８４）。ここで、記憶装置４２は、第３実施例と同様にＣＤ−ＲＯＭとしてコンフィギュレーションされており、記憶装置４２がＣＤ−ＲＯＭとして稼動すると、キーボードドライバのインストーラが自動的に実行される（ステップＳ１６６、Ｓ１８５）。このインストーラによってキーボードドライバが記憶装置４２から読み出され（ステップＳ１６７）、ＰＣ１０にコピーされる（ステップＳ１８６）。記憶装置４２は、キーボードドライバのコピーが完了したことを検出し（ステップＳ１６８／ＹＥＳ）、マルチ機能コントローラ４０へ記憶装置ディスエーブル制御信号とキーボード・イネーブル制御信号を出力する（ステップＳ１６９）。
【００６５】
マルチ機能コントローラ４０は、記憶装置ディスエーブル制御信号４７とキーボード・イネーブル制御信号３８を受けて、記憶装置４２をディスエーブル状態に制御し、キーボード装置４１の装置情報をＲＯＭ４５から読み出しＲＡＭ４４へコピーする（ステップＳ１７０）。そしてキーボード装置４１をイネーブル状態に制御する（ステップＳ１７１）。すると、ＰＣ１０側は、未知のキーボード装置４１を検出する（ステップＳ１７２、Ｓ１８７）。ＰＣ１０内部の記憶装置（図示せず）に前記ドライバ・コピーステートにてコピーされたキーボードドライバを読み出し（ステップＳ１８８）、キーボード装置４１をコンフィギュレーションする（ステップＳ１８９）。コンフィギュレーションされたキーボード装置４１が動作を開始する（ステップＳ１７３、Ｓ１９０）。
【００６６】
このようにして、自動的にキーボードドライバをＯＳに組み込むことができる。従って、ユーザはドライバをインストールする際、ドライバが格納されている記憶手段の心配をすることなくＵＳＢ装置をＰＣに接続しただけでＵＳＢ装置の利用を開始することができ、プラグアンドプレイを体感することができる。
【００６７】
またキーボード・イネーブル制御信号３８の信号レベルをチェックする時に（ステップＳ１６２）、この信号のハイレベルを検出した場合は、既に１回以上ＰＣ１０へ接続されていたものとみなし、キーボード装置４１がイネーブル状態に制御され、記憶装置４２がディスエーブル状態に制御される。そして、キーボード装置４１の装置情報がＲＯＭ４５から読み出され、ＲＡＭ４４にコピーされる。その後、キーボード接続の手順となり、キーボード装置４１がコンフィギュレーションされる。
【００６８】
上述した図２３のフローでは、ＵＳＢ装置３０が１度でもＰＣ１０に接続されると、次回からはキーボード装置４１として動作することとなり、記憶装置４２が動作しない。つまり、ＵＳＢ装置３０が接続された経験のないＰＣ１０へ、１度以上ＰＣ１０に接続した経験のあるＵＳＢ装置３０を接続すると、未知のキーボード装置として検出される。この場合、ＰＣ１０内部の記憶装置には、ドライバが存在しないので、ドライバのインストールを要求され、自動的にインストールすることが出来ない。この場合において、自動的にインストールを行うためには、ＵＳＢ装置３０を初期化する手順が発生する。
【００６９】
この問題を解決し、ＵＳＢ装置３０を初期化する手順を無くすため、記憶装置４２をコンフィギュレーションするＯＳに組み込まれた記憶装置ドライバ１３と、キーボード装置４１をコンフィギュレーションするキーボードドライバ１２とに、ＵＳＢ仕様によって定められたコンフィギュレーションに影響を与えない範囲で、コンフィギュレーション手順に違いを持たせる。これによって、記憶装置ドライバ１３によってＵＳＢ装置３０がコンフィギュレーションされているのか、キーボードドライバ１２によってＵＳＢ装置３０がコンフィギュレーションされているのかを検出する。さらに、ＵＳＢ仕様のコンフィギュレーションに影響を与えないタイミングで、検出した装置の装置情報をＲＯＭ４５から読み出し、ＲＡＭ４４にコピーしてＰＣ１０へ送信する。これにより、ＵＳＢ装置３０が接続された経験のないＰＣ１０では、キーボード装置４１のドライバが自動的にインストールされ、ＵＳＢ装置３０が接続された経験のあるＰＣ１０では、キーボードとして動作させることが可能となる。
【００７０】
本実施例は、スイッチ３７等によってＵＳＢ装置３０を初期化する手順をなくすため、記憶装置３２をコンフィギュレーションするＯＳ１１に組み込まれた記憶装置ドライバ１３と、キーボード装置３１をコンフィギュレーションするキーボードドライバ１２とに、ＵＳＢ仕様によって定められたコンフィギュレーションに影響を与えない範囲内で、コンフィギュレーション手順に違いを持たせる。
【００７１】
記憶装置ドライバ１３によって記憶装置３２がコンフィギュレーションされているのか、キーボードドライバ１２によってＵＳＢ装置３０がコンフィギュレーションされているのかを検出し、さらに、ＵＳＢ仕様のコンフィギュレーションに影響を与えないタイミングで、検出した装置の装置情報をＲＯＭ４５から読み出し、ＲＡＭ４４にコピーしてＰＣ１０へ送信する。これにより、ＵＳＢ装置３０が接続された経験のないＰＣ１０では、キーボード装置４１のドライバが自動的にインストールされ、ＵＳＢ装置３０が接続された経験のあるＰＣ１０では、キーボード装置３１として動作させることが可能となる。
【００７２】
まず図２４、２５を参照しながらＵＳＢ装置３０の一般的なコンフィギュレーションの手順を説明する。図２４には、ＵＳＢ装置３０とＰＣ１０との一般的なコンフィギュレーションの手順が示されている。ＰＣ１０は、ＵＳＢ装置３０を検出すると（ステップＳ２１１）、Device DescriptorをＵＳＢ装置３０に要求する（ステップＳ２１２）。ＵＳＢ通信での最大パケットサイズを取得するため、グローバルアドレスに対してDevice Descriptorの要求を行う。ＵＳＢ装置３０は、この要求に答えてDevice DescriptorをＰＣ１０に送出する（ステップＳ２０２）。Device Descriptorを取得したＰＣ１０では、ポートのリセットが行われ（ステップＳ２１３）、ＵＳＢ装置３０ではＵＳＢ装置３０のリセットが行われる（ステップＳ２０３）。
【００７３】
次に、ＰＣ１０は、ＵＳＢ装置３０に対してDescriptorの要求を出力する（ステップＳ２１４）。この要求は、ＯＳがドライバを検索するために全てのDescriptorを読み出すために行われる。ＵＳＢ装置３０は、この要求に応答してDescriptorをＰＣ１０に送出する（ステップＳ２０４）。Descriptorの送受信のフローについは後述する。
【００７４】
Descriptorを取得したＰＣ１０は、ドライバの検索（ステップＳ２１５）と、ドライバのロードとを行い（ステップＳ２１６）、ロードされたドライバによって再度Descriptorの要求がＵＳＢ装置３０に出力される（ステップＳ２１７）。この要求に応答したＵＳＢ装置３０は、Descriptorを送出し（ステップＳ２０５）、コンフィギュレーションが完了する（ステップＳ２１８）。ここでのDescriptorの送受信のフローは、ステップＳ２０４、Ｓ２１４のフローと同様であり詳細は後述する。
【００７５】
このようにDevice Descriptorの要求は、ＵＳＢ通信での最大パケットサイズを取得するため、グローバルアドレスに対して１回要求し、次に、ＯＳがドライバを検索するために全てのDescriptorを読み出す際に１回要求され、最後に、ドライバによって１回要求されるという３回が一般的である。ただし、ＨＵＢクラスのように、Class DescriptorとDevice Descriptorが同じ場合には、Class Descriptorの要求の際に、もう１回要求される場合もある。
【００７６】
図２５を参照しながらDescriptorの要求開始から受信までのフローを説明する。ＰＣ１０は、Descriptorの要求を開始すると（ステップＳ２３１）、まずDevice Descriptorの送出要求（ステップＳ２３２）をＵＳＢ装置３０に出力する。この要求に答えてＵＳＢ装置３０は、Device DescriptorをＰＣ１０に送出する（ステップＳ２２２）。次に、ＰＣ１０は、Configuration Descriptorの送信要求をＵＳＢ装置３０に出力する（ステップＳ２３３）。この要求に答えてＵＳＢ装置３０は、Configuration DescriptorをＰＣ１０に送出する（ステップＳ２２３）。次に、ＰＣ１０は、Configuration-Endpoint Descriptorの送信要求をＵＳＢ装置３０に出力する（ステップＳ２３４）。なお、Configuration-Endpoint Descriptorの要求は、Configuration Descriptor，Interface Descriptor，Class Descriptor，Endpoint Descriptorを一括して要求するものである。この要求に答えてＵＳＢ装置３０は、上記のDescriptorをＰＣ１０に送出する（ステップＳ２２４）。最後に、ＰＣ１０は、String Descriptorの送信要求をＵＳＢ装置３０に出力する（ステップＳ２３５）。この要求に答えてＵＳＢ装置３０は、String DescriptorをＰＣ１０に送出して（ステップＳ２２５）、Descriptorの送出手順を終了する。なお、本フローでは、String Descriptorの要求回数を１回としているが、String Descriptorの要求回数は装置の構成によって異なる。
【００７７】
次に、本実施例の手順を説明する。本実施例は、Device Descriptorの要求回数が一定となることに着目し、キーボードドライバで意図的にDevice Descriptorを複数回要求し、ＵＳＢ装置３０内部では、Device Descriptorが読み出された回数をカウントすることで、ＯＳに組み込まれている記憶装置ドライバ１３によるコンフィギュレーションか、キーボードドライバ１２によるコンフィギュレーションかを判別する。
【００７８】
図２６に本実施例のコンフィギュレーションの手順を示し、図２７に、図２６のステップＳ２４５とＳ２５４のDescriptorの要求と送出の手順を示し、図２８に、図２６のステップＳ２４６とＳ２５７のキーボードドライバ１２によるDescriptorの要求と送出の手順を示す。
【００７９】
本実施例のコンフィギュレーションの手順は、図２６に示すようにＰＣ１０は、ＵＳＢ装置を検出すると（ステップＳ２５１）、ＵＳＢ装置３０にDevice Descriptorを要求する（ステップＳ２５２）。ＵＳＢ装置３０は、ＰＣ１０からの要求（ステップＳ２５２）に従ってDevice Descriptorを送出すると（ステップＳ２４２）、Device Descriptorの送出回数をカウントする（ステップＳ２４３）。Device Descriptorを取得したＰＣ１０では、ポートのリセットが行われ（ステップＳ２５３）、ＵＳＢ装置３０ではＵＳＢ装置３０のリセットが行われる（ステップＳ２４４）。
【００８０】
次に、ＰＣ１０は、ＵＳＢ装置３０に対してDescriptorの要求を出力する（ステップＳ２５４）。この要求は、ＯＳがドライバを検索するために全てのDescriptorを読み出すために行われる。ＵＳＢ装置３０は、この要求に応答してDescriptorをＰＣ１０に送出する（ステップＳ２４５）。Descriptorの送受信のフローについては後述する。
【００８１】
Descriptorを取得したＰＣ１０は、ドライバの検索（ステップＳ２５５）と、ドライバのロードとを行い（ステップＳ２５６）、ロードされたドライバによって再度Descriptorの要求がＵＳＢ装置３０に出力される（ステップＳ２５７）。この要求に応答したＵＳＢ装置３０は、Descriptorを送出し（ステップＳ２４６）、コンフィギュレーションが完了する（ステップＳ２５８）。ステップＳ２４６、２５７のDescriptorの送受信のフローについても後述する。
【００８２】
次に、上述したステップＳ２５４とＳ２４５のDescriptorの送受信のフローについて図２７を参照しながら説明する。ＰＣ１０は、Descriptorの要求を開始すると（ステップＳ２７１）、まずDevice DescriptorをＵＳＢ装置３０に要求する（ステップＳ２７２）。ＵＳＢ装置３０は、Device DescriptorをＰＣ１０に送出し（ステップＳ２６２）、Device Descriptorの送出回数をカウントする（ステップＳ２６３）。
【００８３】
Device Descriptorを受信したＰＣ１０は、次に、Configuration DescriptorをＵＳＢ装置３０に要求する（ステップＳ２７３）。この要求に答えてＵＳＢ装置３０は、Configuration DescriptorをＰＣ１０に送出する（ステップＳ２６４）。次に、ＰＣ１０は、Configuration-Endpoint Descriptorの送信要求をＵＳＢ装置３０に出力する（ステップＳ２７４）。なお、Configuration-Endpoint Descriptorの要求は、Configuration Descriptor，Interface Descriptor，Class Descriptor，Endpoint Descriptorを一括して要求するものである。この要求に答えてＵＳＢ装置３０は、上記のDescriptorをＰＣ１０に送出する（ステップＳ２６５）。最後に、ＰＣ１０は、String Descriptorの送信要求をＵＳＢ装置３０に出力する（ステップＳ２７５）。この要求に答えてＵＳＢ装置３０は、String DescriptorをＰＣ１０に送出して（ステップＳ２６６）、Descriptorの送出手順を終了する。なお、本フローでも、String Descriptorの要求回数を１回としているが、String Descriptorの要求回数は装置の構成によって異なる。
【００８４】
次に、図２６のステップＳ２４６とＳ２５７のキーボードドライバ１２によるDescriptorの要求と送出の手順を図２８を参照しながら説明する。ＰＣ１０は、Descriptorの要求を開始すると（ステップＳ３０１）、まずDevice Descriptorの要求を３回連続して行う（ステップＳ３０２、Ｓ３０３）。ＵＳＢ装置３０では、ＰＣ１０からDevice Descriptorの要求があると、Device DescriptorをＰＣ１０に送出し（ステップＳ２８２、２８４、２８６）、Device Descriptorを送出する毎に送出回数をカウントする（ステップＳ２８３、２８５、２８７）。ＵＳＢ装置３０は、Device Descriptorのカウント数が５回以上となると（ステップＳ２８８／ＹＥＳ）、キーボードドライバ１２によるコンフィギュレーションと判断し、キーボード装置３１の装置情報をＲＯＭ４５から読み出しＲＡＭ４４にコピーする。図２６に示すステップＳ２４２で１回、Ｓ２４５で１回、Ｓ２４６で３回Device Descriptorが送出されるため、合計の送出回数が５回以上となる。
【００８５】
またDevice Descriptorの送出回数５回をチェックするシーケンス（ステップＳ２８８）で、送出回数が５回に満たない場合には、記憶装置ドライバ１３によるコンフィギュレーションと判断し、記憶装置４２の装置情報をＲＯＭ４５から読み出しＲＡＭ４４へコピーする（ステップＳ２９０）。その後に、装置を構成するために必要なConfiguration Descriptor（ステップＳ３０４）、Configuration-Endpoint Descriptor（ステップＳ３０５）、String Descriptor（ステップＳ３０６）がＰＣ１０からの要求に従って順次ＵＳＢ装置３０からＰＣ１０に送出される（ステップＳ２９１、ステップＳ２９２、ステップＳ２９３）。従って、ＵＳＢ仕様のコンフィギュレーションに影響を与えることなく、記憶装置とキーボード装置の切り替えを行うことが可能である。なお、本フローでは、Device Descriptorの送出回数をカウントしているが、Configuration Descriptorの送出回数をカウントしてもよい。
【００８６】
また、上述した手順の変形例として、ＵＳＢ装置３０がＰＣ１０からのベンダーリクエストに応じて、キーボード装置３１と記憶装置３２の有効、無効を切り換えるようにしてもよい。この手順を図２９に示すフローチャートを参照しながら説明する。ＰＣ１０は、Descriptorの要求を開始すると、まず、Device DescriptorをＵＳＢ装置３０に要求する（ステップＳ３２１）。ＵＳＢ装置３０は、Device DescriptorをＰＣ１０に送出する（ステップＳ３１１）。次に、ＰＣ１０は、コンフィグレーション中にベンダーリクエストをＵＳＢ装置３０に対して要求する（ステップＳ３２２）。ＵＳＢ装置３０は、ＰＣ１０からベンダーリクエストの要求を受け付けた場合（ステップＳ３１２／ＹＥＳ）、既にドライバがインストール済みと判定し第１の装置としてのキーボード装置３１を有効する（ステップＳＳ３１５）。
【００８７】
また、ＰＣ１０側で、コンフィグレーション中にベンダーリクエストの要求がなかった場合（ステップＳ３１２／ＮＯ）、記憶装置３２を有効化して（ステップＳ３１４）、記憶装置３２からドライバを読み出し、ＰＣ１０にインストールを行う。
【００８８】
次に、ＰＣ１０は、Configuration DescriptorをＵＳＢ装置３０に要求する（ステップＳ３２３）。この要求に答えてＵＳＢ装置３０は、Configuration DescriptorをＰＣ１０に送出する（ステップＳ３１６）。次に、ＰＣ１０は、Configuration-Endpoint Descriptorの送信要求をＵＳＢ装置３０に出力する（ステップＳ３２４）。なお、Configuration-Endpoint Descriptorの要求は、Configuration Descriptor，Interface Descriptor，Class Descriptor，Endpoint Descriptorを一括して要求するものである。この要求に答えてＵＳＢ装置３０は、上記のDescriptorをＰＣ１０に送出する（ステップＳ３１７）。最後に、ＰＣ１０は、String Descriptorの送信要求をＵＳＢ装置３０に出力する（ステップＳ３２５）。この要求に答えてＵＳＢ装置３０は、String DescriptorをＰＣ１０に送出して（ステップＳ３１８）、Descriptorの送出手順を終了する。
【００８９】
このようにして本実施例では、コンフィギュレーションのシーケンスを変更することなく、キーボード装置３１と記憶装置３２をイネーブル状態とディスエーブル状態とに切り替えることができる。
【実施例５】
【００９０】
ＵＳＢ装置３０をＰＣ１０に接続したときに、正しくコンフィグレーションが行われなかった場合（例えば、ドライバ不在）、不明なデバイスとして認識される。そのような状況になったときに、認識している装置がキーボード装置３１であるのか、記憶装置３２であるのかが判定できない場合がある。そこで、本実施例では、スイッチ７２を設けて、このスイッチ７２の押したによりＵＳＢ装置３０を一旦ディセーブル状態にする。スイッチ７２の出力は、図３０に示すＵＳＢ／ＨＵＢコントローラ３３に接続されており、このＵＳＢ／ＨＵＢコントローラ３３でＵＳＢ装置３０をディセーブル状態に設定する。初期状態にリセットされたことでＵＳＢ装置３０は、通常の手順を行い、記憶装置３２をイネーブル状態にしてドライバを読み出す。ドライバのインストール後は、キーボード装置３１がイネーブルにされ、インストール済みのドライバによってキーボード装置３１がコンフィグレーションされ動作を開始する。
【００９１】
本実施例の動作手順を図３１に示すフローチャートを参照しながら説明する。
まず、図３１（ａ）に示すＰＣ１０側の手順を説明する。ＵＳＢ装置３０の接続を検出すると、ＰＣ１０は、ディスクリプタをＵＳＢ装置３０に要求する（ステップＳ３３１）。次にＰＣ１０は、ドライバをＵＳＢ装置３０から取得することができた場には（ステップＳ３３２／ＹＥＳ）、通常通りエニュメレーションを行う（ステップＳ３３３）。またＵＳＢ装置３０からドライバを取得することができなかった場合には（ステップＳ３３２／ＮＯ）、不明なデバイスとして認識する（ステップＳ３３５）。
【００９２】
次に、不明な装置として認識されたＵＳＢ装置３０側の手順を図３１（ｂ）を参照しながら説明する。ＰＣ１０から不明な装置として認識されると、スイッチ７２の操作により（ステップＳ３４２）、ＵＳＢ装置３０は、一旦ディセーブル状態となる（ステップＳ３４３）。その後、記憶装置３２の有効化と（ステップＳ３４４）と、キーボード装置３１の無効化（ステップＳ３４５）とが行われ、記憶装置３２としてイネーブル状態となってＰＣ１０に認識される（ステップＳ３４６）。そして、ＰＣ１０からのディスクリプタ要求に応答してディスクリプタを送出し（ステップＳ３４７）、ＰＣ１０からのエニュメレーション処理に応答してディスクリプタを送出する（ステップＳ３４８）。
【００９３】
以上説明した方法によれば、ＵＳＢ装置が接続された経験のないＰＣ１０へ、１度以上ＰＣ１０に接続した経験のあるＵＳＢ装置を接続すると、未知のキーボードとして検出され、ＰＣ１０内部の記憶装置には、ドライバが存在しないためにドライバのインストールを要求され、自動的にインストールすることが出来ないという問題点を解決し、自動的にインストールを行うためのＵＳＢ装置を初期化する手順を発生させることなく、ＵＳＢ装置のドライバがインストールされていないＰＣ１０に接続された場合に、常にドライバが自動的にインストールされる。
【００９４】
なお、上述した実施例は本発明の好適な実施例である。但しこれに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【符号の説明】
【００９５】
１  情報処理装置                  １０  ＰＣ
１１  ＯＳ                        １２  キーボードドライバ
１３  記憶装置ドライバ            １４  ＨＵＢドライバ
１５  ＵＳＢホストコントローラ    １６  内部バス
１７  アプリケーションソフトウェア
２０  ＵＳＢケーブル              ３０  ＵＳＢ装置
３１  キーボード装置              ３２  記憶装置
３３  ＵＳＢ／ＨＵＢコントローラ
３４  ＨＵＢ装置                  ３５、３６  ＨＵＢポート
３７  スイッチ                    ３８  キーボード・イネーブル制御信号
４０  マルチ機能コントローラ      ４１  キーボード装置
４２  記憶装置                    ５０  ＲＦＩＤ装置
５１  ＲＦＩＤ書き込み装置
６０  イネーブル／ディスエーブル設定装置
６１  ＭＣＵ                    ６２  ＩＦエンジン
６３  ＲＯＭ                    ６４  ＲＡＭ
７０  外部記憶装置              ７１  接続インタフェース
７２  スイッチ
【図１】
2010198624.tif 000003
【図２】
2010198624.tif 000004
【図３】
2010198624.tif 000005
【図４】
2010198624.tif 000006
【図５】
2010198624.tif 000007
【図６】
2010198624.tif 000008
【図７】
2010198624.tif 000009
【図８】
2010198624.tif 000010
【図９】
2010198624.tif 000011
【図１０】
2010198624.tif 000012
【図１１】
2010198624.tif 000013
【図１２】
2010198624.tif 000014
【図１３】
2010198624.tif 000015
【図１４】
2010198624.tif 000016
【図１５】
2010198624.tif 000017
【図１６】
2010198624.tif 000018
【図１７】
2010198624.tif 000019
【図１８】
2010198624.tif 000020
【図１９】
2010198624.tif 000021
【図２０】
2010198624.tif 000022
【図２１】
2010198624.tif 000023
【図２２】
2010198624.tif 000024
【図２３】
2010198624.tif 000025
【図２４】
2010198624.tif 000026
【図２５】
2010198624.tif 000027
【図２６】
2010198624.tif 000028
【図２７】
2010198624.tif 000029
【図２８】
2010198624.tif 000030
【図２９】
2010198624.tif 000031
【図３０】
2010198624.tif 000032
【図３１】
2010198624.tif 000033