(57)【要約】  【課題】  ハードウェアへの依存部分が少なく、移植性が良い制御プログラムを提供する。  【解決手段】  ハードウェア依存のドライバ層３１Ｂは、ＵＳＢハードウェア１の割り込みを擬似割り込み４０に変換するハンドラ４１と、割り込みが用意されていないパラメータを周期的に検出して擬似割り込み４０を発生する周期関数４２Ａと、他のハードウェアのパラメータ変化を周期的に検出して擬似割り込み４０を発生する周期関数４２Ｂとを有する。擬似割り込み４０は、ハードウェア非依存のドライバ層３１Ａを介してさらに上位のアプリケーションに渡される。ＵＳＢハードウェア１の割り込み、割り込みが用意されていないパラメータ、他のハードウェアのパラメータが擬似割り込み４０に変換されるので、ドライバ層３１Ｂの変更だけでＵＳＢドライバ本体を他のＵＳＢハードウェアに移植でき、移植性が向上する。【選択図】  図８
2005100326.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、
上記制御プログラムは、
上記ハードウェアからの割り込みを擬似割り込みに変換するステップと、上記ハードウェアに対してアクセスして取得したパラメータに基づき上記擬似割り込みを発生するステップとを有する上記ハードウェアに依存する第１の階層と、
上記擬似割り込みを上位のソフトウェアに渡すステップを有する上記ハードウェアに非依存の第２の階層と
からなることを特徴とする制御プログラム。
【請求項２】
請求項１に記載の制御プログラムにおいて、
上記擬似割り込みを発生するステップは、周期的に実行されることを特徴とする制御プログラム。
【請求項３】
請求項１に記載の制御プログラムにおいて、
上記擬似割り込みを発生するステップは、上記ハードウェアからの割り込みが用意されていない上記パラメータに対して実行されることを特徴とする制御プログラム。
【請求項４】
ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、
上記制御プログラムは、
ハードウェアからの割り込みを擬似割り込みに変換するステップと、
上記ハードウェアに対してアクセスして取得したパラメータに基づき上記擬似割り込みを発生するステップと、
上記擬似割り込みを上位のソフトウェアに渡すステップと
を有することを特徴とする制御プログラム。
【請求項５】
請求項４に記載の制御プログラムにおいて、
上記擬似割り込みを発生するステップは、周期的に実行されることを特徴とする制御プログラム。
【請求項６】
請求項４に記載の制御プログラムにおいて、
上記擬似割り込みを発生するステップは、上記ハードウェアからの割り込みが用意されていない上記パラメータに対して実行されることを特徴とする制御プログラム。
【請求項７】
ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法において、
ハードウェアからの割り込みを擬似割り込みに変換するステップと、
上記ハードウェアに対してアクセスして取得したパラメータに基づき上記擬似割り込みを発生するステップと、
上記擬似割り込みを上位のソフトウェアに渡すステップと
を有することを特徴とする制御方法。
【請求項８】
他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、
上記制御プログラムは、
上記他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生すステップを有するハードウェアに依存する第１の階層と、
上記擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第２の階層と
からなることを特徴とする制御プログラム。
【請求項９】
請求項８に記載の制御プログラムにおいて、
上記擬似割り込みを発生するステップは、周期的に実行されることを特徴とする制御プログラム。
【請求項１０】
他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、
上記制御方法は、
上記他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させるステップと、
上記擬似割り込みを上位のソフトウェアに渡すステップと
を有することを特徴とする制御プログラム。
【請求項１１】
請求項１０に記載の制御プログラムにおいて、
上記擬似割り込みを発生するステップは、周期的に実行されることを特徴とする制御プログラム。
【請求項１２】
他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法において、
上記他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させる第１の擬似割り込み発生のステップと、
上記擬似割り込みを上位のソフトウェアに渡すステップと
を有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータ装置などに接続して用いられる周辺機器を制御する制御プログラムおよび制御方法に関する。
【背景技術】
【０００２】
近年では、パーソナルコンピュータといったコンピュータ装置と周辺機器とを接続するためのインターフェイスとして、ＵＳＢ(Universal Serial Bus)が広く用いられている。ＵＳＢは、機器の電源を投入したまま挿抜可能なホットプラグ機能を有する、各種の機器を同時に接続することができるなどの特徴があり、急速に普及を遂げた。特許文献１には、複数のＵＳＢポートにそれぞれ接続された機器の切り替えを容易に行うようにした切替装置が記載されている。
【特許文献１】特開２００２−１４０２８１
【０００３】
ＵＳＢ通信においては、一般的には、命令を送信する側の機器と、命令を受信する側の機器とが予め決まっている。命令を送信する側の機器をホストと称し、命令を受信する側の機器を、ペリフェラルまたはデバイスと称する。近年では、１台の機器でホストとペリフェラルとを切り替えて用いることができるような規格も提案されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、従来では、ＵＳＢ通信を行うためのドライバソフトウェアは、ホスト側およびペリフェラル側の双方において、ＵＳＢ通信制御にハードウェア割り込みを直接的に使用していた。そのため、ハードウェアにより得られるパラメータは、当該ハードウェアの仕様に依存していると共に、ドライバソフトウェア（以下、適宜、ドライバと呼ぶ）自身の仕様も当該ハードウェアの仕様に依存したものとなっていた。したがって、従来は、他のハードウェアに対してドライバを移植する際に、移植先のハードウェアの仕様に合わせてドライバソフトウェア自身に対して大きな変更を加える必要があり、移植性が悪いという問題点があった。
【０００５】
図９を用いて模式的に説明する。必要な割り込みがハードウェア割り込みにより全て取得できる場合、図９Ａに示されるように、ハードウェア１１０を制御するためのドライバ１００は、ハードウェア１１０に対して同一階層でアクセスしてパラメータを得ることができる。一方、ハードウェア割り込みにより取得できない割り込みを有するハードウェア１１０’を用いる場合、図９Ｂに部分１２０として示されるように、当該パラメータを得るために、他の部分よりハードウェア的に深い層までアクセスする必要がある。そのため、他のハードウェアに対してこのドライバ１００’を移植する際に、この部分１２０を大きく変更する必要がある。
【０００６】
また、ハードウェア割り込みの際にチャタリングなどが発生していると、誤動作の原因となるおそれがある。ハードウェア的に実現されている割り込みの場合、このチャタリングに対する対策もハードウェア的になされている場合が多い。しかしながら、チャタリング対策がハードウェア的になされていない場合、従来では、別途ソフトウェア処理を行ってこのチャタリングを除去したり、他のパラメータと共に判断して、状態の変化が確定したことを知るなどの追加処理が必要であるという問題点があった。またそのため、ハードウェアのパラメータなどの変化に対して柔軟に対応することが難しいという問題点があった。
【０００７】
さらに、このような追加処理を行うようにすることにより、ドライバの階層構造におけるハードウェア依存部分（例えば図９Ｂの部分１２０）の層構造が入り組んだ構造になってしまうという問題点があった。さらにそのため、上述のように、ドライバを他のハードウェアに移植する場合など、この入り組んだ層構造に対する大きな変更と、ドライバの階層の切り直しの作業とが必要となるという問題点があった。
【０００８】
ところで、ＵＳＢでは、接続された機器に対して、バスを介して電源を供給することができるようにされている。ＵＳＢホストからＵＳＢペリフェラルへ供給される電流を、Ｖバス（Ｖｂｕｓ）電流と称する。ＵＳＢペリフェラルは、このＶｂｕｓ電流による電源供給により、ＵＳＢホストとの接続を知ることができ、駆動電流を得ることができる。なお、ＵＳＢ規格においては、駆動電流を必要としないセルフパワーのペリフェラルも存在する。
【０００９】
Ｖｂｕｓ電流は、ハードウェアを駆動するための電流が流れるため、別途、電源ハードウェアを用意して供給や受信を行う場合が多い。そのため、Ｖｂｕｓ電流の過電流検出は、ＵＳＢハードウェアからのハードウェア割り込みではなく、電源ハードウェアからの外部割り込みとなっている場合が多い。また、過電流が検出された際は、即時に回路切断を行う必要があるため、電源ハードウェアでハード的に切断するような仕組みを持つのが一般的である。
【００１０】
このように、Ｖｂｕｓ電流に過電流が検出された場合、電源ハードウェアに対して割り込みが発生するが、その割り込みは、ＵＳＢハードウェアからの割り込みではなく、電源ハードウェアからの割り込みとなる。電源ハードウェアから過電流検出による割り込みがあった場合、ＵＳＢドライバソフトウェアは、例えば通信を終了させるなど、所定の処理を行う。
【００１１】
従来では、ＵＳＢ通信を行うためのドライバソフトウェアは、ＵＳＢハードウェア割り込みを受け付けるソフトウェアは持つが、他のハードウェアからの割り込みを受け付けるソフトウェアや仕組みを持っていなかった。そのため、ドライバソフトウェアがＶｂｕｓ電流の過電流検出を行うには、ドライバソフトウェアに対して他のハードウェアからの割り込みを受け付けるソフトウェアを追加するか、その他の仕組みを追加する必要があり、ドライバソフトウェアに大きな改造を加える必要があるという問題点があった。
【００１２】
ＵＳＢドライバソフトウェアは、ハードウェア１１０’からのハードウェア割り込みをハンドラを用いて取得する。図９Ｃに一例が示されるように、ＵＳＢハードウェアとは別の、電源ハードウェア１３０からのハードウェア割り込みを取得するためには、電源ハードウェア１３０に対応するハンドラ１４０をＵＳＢドライバソフトウェア１００’が持つ必要がある。ＵＳＢドライバソフトウェア１００’は、上位のソフトウェアとやりとりを行うために、ハードウェア非依存の層１００’Ａを有する。ＵＳＢハードウェア以外の他のハードウェアである電源ハードウェア１３０の割り込みを取得するような場合、ハードウェア非依存層１００’Ａに対してハードウェアの違いを隠蔽するための層１００’Ｂを新たに設け、さらに、上述したハンドラ１４０を設ける必要がある。
【００１３】
このように、従来のＵＳＢドライバソフトウェアは、ＵＳＢハードウェア以外の他のハードウェアのパラメータの変化を検出しようとすると、大きな改造を行わなくてはならず、異なるハードウェアに移植する際の移植性が非常に悪いという問題点があった。
【００１４】
したがって、この発明の目的は、ハードウェアへの依存部分が少なく、移植性に優れた制御プログラムおよび制御方法を提供することにある。
【００１５】
したがって、この発明の他の目的は、ハードウェアへの依存部分が少なく、移植性に優れ、さらに、他のハードウェアからの割り込みを受け付けることができるような制御プログラムおよび制御方法を提供することにある。
【課題を解決するための手段】
【００１６】
上述した課題を解決するために、第１の発明は、ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、制御プログラムは、ハードウェアからの割り込みを擬似割り込みに変換するステップと、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生するステップとを有するハードウェアに依存する第１の階層と、擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第２の階層とからなることを特徴とする制御プログラムである。
【００１７】
また、第２の発明は、ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、制御プログラムは、ハードウェアからの割り込みを擬似割り込みに変換するステップと、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生するステップと、擬似割り込みを上位のソフトウェアに渡すステップとを有することを特徴とする制御プログラムである。
【００１８】
また、第３の発明は、ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法において、ハードウェアからの割り込みを擬似割り込みに変換するステップと、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生するステップと、擬似割り込みを上位のソフトウェアに渡すステップとを有することを特徴とする制御方法である。
【００１９】
また、第４の発明は、他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、制御プログラムは、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生すステップを有するハードウェアに依存する第１の階層と、擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第２の階層とからなることを特徴とする制御プログラムである。
【００２０】
また、第５の発明は、他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、制御方法は、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させるステップと、擬似割り込みを上位のソフトウェアに渡すステップとを有することを特徴とする制御プログラムである。
【００２１】
また、第６の発明は、他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法において、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させる第１の擬似割り込み発生のステップと、擬似割り込みを上位のソフトウェアに渡すステップとを有することを特徴とする制御方法である。
【００２２】
上述したように、第１の発明は、ハードウェアからの割り込みを擬似割り込みに変換するステップと、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生するステップとを有するハードウェアに依存する第１の階層と、擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第２の階層とからなるため、異なるハードウェアに移植する際に、ハードウェアに依存する第１の階層を変更するだけで済むと共に、ハードウェアからの割り込みが用意されていない場合にも、発生された擬似割り込みに対して処理を行うことで、より詳細な設定が可能となる。
【００２３】
また、第２および第３の発明は、ハードウェアからの割り込みを擬似割り込みに変換して上位のソフトウェアに渡し、ハードウェアからの割り込みが用意されていない場合は、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生して上位のソフトウェアに渡すようにしているため、ハードウェアからの割り込みが用意されていない場合にも、発生された擬似割り込みに対して処理を行うことで、より詳細な設定が可能となると共に、異なるハードウェアに移植する際に、最小限の変更で済む。
【００２４】
また、第４の発明は、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生すステップを有するハードウェアに依存する第１の階層と、擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第２の階層とからなるため、異なるハードウェアに移植する際に、ハードウェアに依存する第１の階層を変更するだけで済むと共に、他のハードウェアのパラメータの変化に応じて擬似割り込みを発生するため、発生された擬似割り込みに対して処理を行うことで、他のハードウェアのパラメータ変化に対してより詳細な設定が可能となる。
【００２５】
また、第５および第６の発明は、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させ、発生された擬似割り込みを上位のソフトウェアに渡すようにしているため、他のハードウェアのパラメータの変化に応じて擬似割り込みを発生するため、発生された擬似割り込みに対して処理を行うことで、他のハードウェアのパラメータ変化に対してより詳細な設定が可能となると共に、他のハードウェアのパラメータ変化に対する処理が擬似割り込みを介しているため、異なるハードウェアに移植する際に最小限の変更で済む。
【発明の効果】
【００２６】
この発明は、ハードウェア割り込みが用意されている場合には、ハードウェア割り込みを擬似割り込みに変換し、ハードウェア割り込みが用意されていない場合にはパラメータ検出の結果に基づき擬似割り込みを発生させて上位に渡すようにしている。そのため、ドライバソフトウェアの構成をハードウェア依存部の階層とハードウェア非依存部の階層とに明確に階層化でき、ドライバソフトウェアの異なるハードウェアに対する移植が容易になるという効果がある。
【００２７】
また、この発明は、ハードウェア割り込みが用意されてい無い場合に、ソフトウェアによって擬似割り込みを発生させているため、ハードウェア割り込みと区別無く扱うことができるという効果がある。
【００２８】
さらに、ハードウェア割り込みが用意されていない場合の擬似割り込み発生をソフトウェアにより行っているので、擬似割り込みの発生条件を詳細に設定することが容易にできるという効果がある。
【００２９】
さらにまた、第４、第５および第６の発明は、ＵＳＢハードウェア以外の他のハードウェアに対して周期関数を用いた擬似割り込み発生の仕組みを適用することにより、ＵＳＢドライバソフトウェアのハードウェア非依存部分をそのまま使用することができるという効果がある。そのため、ＵＳＢドライバソフトウェアを異なるハードウェアに移植することが容易な、ＵＳＢドライバソフトウェア構造を提供するとができるという効果がある。
【００３０】
また、第５および第６の発明は、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生して上位のソフトウェアに渡すようにしているため、他のハードウェアからの割り込みが使用できない場合でも、発生された擬似割り込みに対して処理を行うことで、より詳細な設定が可能になると共に、ＵＳＢドライバソフトウェアを異なるハードウェアに移植する際に、最小限の変更で済むという効果がある。
【００３１】
さらに、第４、第５および第６の発明は、電源ハードウェアのような、ＵＳＢハードウェア以外の他のハードウェアのパラメータの変化の検出を、周期関数を用いて擬似割り込みを発生させソフトウェア的に実現しているので、より詳細な条件設定が容易に実現できるという効果がある。
【発明を実施するための最良の形態】
【００３２】
以下、この発明の実施の第１の形態を、図面を参照しながら説明する。図１は、この発明に適用可能なＵＳＢ(Universal Serial Bus)ハードウェア１の一例の構成を示す。このＵＳＢハードウェア１は、ＵＳＢ２．０の規格に対応するもので、最大データ転送速度が４８０Ｍｂｐｓ(Mega bit per second)のＨＳ(High Speed)モード、１．５ＭｂｐｓのＬＳ(Low Speed)モードおよび１２ＭｂｐｓのＦＳ(Full Speed)モードをサポート可能である。また、ＵＳＢハードウェア１は、ホスト動作モードとペリフェラル動作モードとを切り替えて動作させることができるＵＳＢ  ＯＴＧ(On-The-Go)規格に対応している。
【００３３】
ＵＳＢハードウェア１は、バス２１を介してＣＰＵ(Central Processing Unit)２０と接続され、ＣＰＵ２０上で動作するドライバソフトウェアの制御に基づきＵＳＢケーブル２とＣＰＵ２０との間の通信制御を行う。
【００３４】
ＵＳＢケーブル２がＵＳＢコネクタ３に挿入され、通信制御を行うトランシーバ１０に接続される。トランシーバ１０は、受信時には、ＵＳＢケーブル２を介して送信されてきた信号を受信し、受信された信号を電気的な信号からディジタル的な信号へと変換する。送信時は、セレクタ１１から供給されたディジタル信号を、ＵＳＢの規格を満たしてＵＳＢケーブル２に送信可能なように駆動する。
【００３５】
プルアップコントローラ１４からトランシーバ１０に対して制御信号が供給され、ペリフェラル動作時の接続／切断が制御される。ＵＳＢハードウェア１がＦＳモードおよびＬＳモードの何れの通信速度モードで動作するかに応じて、プルアップコントローラ１４によりＵＳＢのプルアップ接続が制御される。
【００３６】
セレクタ１１は、コネクト部１５から供給される制御信号に基づき、ＵＳＢハードウェア１をホスト動作させるか、ペリフェラル動作させるかを選択する。すなわち、セレクタ１１は、ホスト動作させる場合、ホストチャンネル部１２を介して信号のやり取りができるように信号経路を選択し、ペリフェラル動作させる場合、ペリフェラルチャンネル部１３を介して信号のやりとりができるように信号経路を選択する。ホストチャンネル部１２およびペリフェラルチャンネル部１３は、それぞれバス２１を介してＣＰＵ２０に接続される。
【００３７】
なお、ＵＳＢハードウェア１がＨＳモードで動作されるときは、ＵＳＢハードウェア１がホスト動作およびペリフェラル動作の何れで動作しているかに応じて、ホストチャンネル部１２およびペリフェラルチャンネル部１３の動作モードに対応する側が終端抵抗（エンドポイント）として用いられるように制御される。
【００３８】
コネクト部１５により、ＵＳＢのソケット（図示しない）にＵＳＢケーブル２が物理的に挿入されたか否かが検出される。また、コネクト部１５は、セレクタ１１に対してチャンネル選択を指示する制御信号を供給すると共に、ホストチャンネル部１２およびペリフェラルチャンネル部１３に対するリセットクロック制御を行う。さらに、コネクト部１５は、Ｖｂｕｓと称されるＵＳＢケーブル２を介してなされる電源供給を制御し、例えば５Ｖの電源電圧をＵＳＢケーブル２に対して供給する。
【００３９】
インタラプト部１６は、割り込みを制御するためのコントローラであって、トランシーバ１０から出力される信号を検出し、ＵＳＢコネクタ３とＵＳＢケーブル２とが物理的に接続／切断されたか否か、通信相手においてＵＳＢによる通信が接続／切断されたか否か、リクエストを受信したか否か、データを受信したか否か、相手機器に対して電流を過供給していないか否かなどが検知される。検知結果は、バス２１を介してＣＰＵ２０に伝えられる。
【００４０】
上述したホストチャンネル部１２およびペリフェラルチャンネル部１３、ならびに、プルアップコントローラ１４、コネクト部１５およびインタラプト部１６は、バス２１を介してＣＰＵ２０と接続され、ＣＰＵ２０上で動作するＵＳＢドライバソフトウェアと諸信号のやり取りを行う。ＵＳＢドライバソフトウェアは、ＵＳＢハードウェア１とＣＰＵ２０上で動作するＯＳ(Operating System)との間でなされるやり取りを仲介する。
【００４１】
理解を容易とするために、図２を用いて、ＵＳＢのドライバソフトウェア３０の一般的な構成について概略的に説明する。ＵＳＢドライバソフトウェア３０は、ＵＳＢドライバ本体３１と、１または複数のクラスドライバ３３、３４、３５、・・・、３６と、ＵＳＢマネージャ３２とからなる。ＵＳＢドライバ本体３１は、実際にＵＳＢハードウェア１との間でのやり取りを行う。クラスドライバは、ＵＳＢハードウェア１に接続される機器の種類（クラス）に応じて単一のドライバを提供するもので、この図２の例では、ビデオクラスドライバ３３、マスストレージクラスドライバ３４、イメージングクラスドライバ３５およびセンサクラスドライバ３６が設けられている。ＵＳＢマネージャ３２は、各クラスドライバ３３〜３６やＵＳＢドライバ本体３１を管理する。
【００４２】
図３は、この発明の実施の第１の形態によるＵＳＢドライバソフトウェア３０の一例の構成を概略的に示す。なお、図３において、上述の図２と共通する部分については同一の符号を付して詳細な説明を省略する。この発明の実施の第１の形態では、ＵＳＢドライバ本体３１は、概略的にはプロトコルドライバ層３１Ａとコントロールドライバ層３１Ｂの２層からなる。コントロールドライバ層３１Ｂは、内部にアクセスライブラリ層３１Ｃを有する。プロトコルドライバ層３１Ａは、ＵＳＢハードウェア１に非依存とされる階層である。また、コントロールドライバ層３１Ｂは、ＵＳＢハードウェア１に依存する階層である。
【００４３】
コントロールドライバ層３１Ｂは、ＵＳＢハードウェア１からのハードウェア割り込みを、割り込みハンドラを用いて擬似割り込みに変換してプロトコルドライバ層３１Ａに渡す。また、コントロールドライバ層３１Ｂは、ＵＳＢハードウェア１の所定のパラメータを周期関数を用いて所定の周期で監視し、そのパラメータの変化に基づき擬似割り込みを発生させプロトコルドライバ層３１Ａに渡す。プロトコルドライバ層３１Ａは、割り込みハンドラおよび／または周期関数から渡された擬似割り込みを所定に処理して、ＣＰＵ２０上で動作する上位のアプリケーションなどに渡す。なお、割り込みハンドラによる擬似割り込みと、周期関数による擬似割り込みとは、プロトコルドライバ層３１Ａに対する仕様を共通とする。
【００４４】
図４を用いて、割り込みハンドラ４１および周期関数４２について概略的に説明する。図４Ａに示されるように、割り込みハンドラ４１および周期関数４２は、擬似割り込み４０に対して下位の構成とされる。図４Ｂに示されるように、割り込みハンドラ４１は、ＵＳＢハードウェア１においてハードウェア割り込みとして用意されている割り込みを受け取り、擬似割り込み４０に変換してプロトコルドライバ層３１Ａに渡す。例えば、割り込みハンドラ４１は、ＵＳＢハードウェア１のインタラプト部１６における検知結果をハードウェア割り込みとして受け取り、擬似割り込み４０に変換する。
【００４５】
一方、周期関数４２は、所定の周期で実行され、図４Ｂに示されるように、ＵＳＢハードウェア１においてハードウェア割り込みとして用意されていないパラメータの変化を検出する。例えば、ＵＳＢハードウェア１のプルアップコントローラ部１４やコネクト部１５におけるパラメータの変化を周期的に監視する。監視の結果、当該パラメータが所定の条件を満たして変化したことが検出されたら、その旨を示す擬似割り込み４０を発生させ、プロトコルドライバ層３１Ａに渡す。すなわち、図４に模式的に示されるように、周期関数４２は、割り込みハンドラ４１よりも、よりＵＳＢハードウェア１に対する依存性の高い部分の変化を検出する。
【００４６】
この発明の実施の第１の形態では、このように、割り込みハンドラ４１と周期関数４２とを用いて、ハードウェア割り込みと、ハードウェア割り込みとして用意されていない、よりＵＳＢハードウェア１に対する依存性の高い変化とを、共に、ＵＳＢドライバ本体３１が必要としている擬似割り込み４０に変換してプロトコルドライバ層３１Ａに渡すようにしている。
【００４７】
換言すれば、プロトコルドライバ層３１Ａは、割り込みハンドラ４１と周期関数４２とにより、ハードウェア割り込みと、ハードウェア割り込みとして用意されていない、よりＵＳＢハードウェア１に対する依存性の高い変化とを、共通の擬似割り込み４０により処理することができる。そのため、ＵＳＢドライバ本体３１を他のＵＳＢハードウェアに移植する場合でも、コントロールドライバ層３１Ｂのみを変更すればよく、移植性が向上する。
【００４８】
より具体的な例を用いて説明する。一例として、ＵＳＢハードウェア１にＵＳＢケーブル２を介して接続されている相手機器がホストとして動作するか、ペリフェラルとして動作するかを認識するためのパラメータであるＣＩＤ(Connector ID or Contact number #4 pin.)値の検出が、ハードウェア割り込みとして用意されていない場合について考える。この場合、ＣＩＤ値の変化を周期関数４２を用いて検出する。ＣＩＤ値は、図５に一例が示されるように、ＯＮ状態かＯＦＦ状態かを示す値であって、ＵＳＢケーブル２のうち１本の信号線を用いて伝えられる。
【００４９】
ＣＩＤ値の検出のため、周期関数４２は、ＵＳＢドライバソフトウェア３０の起動時、若しくは、ＵＳＢの規格に定められる状態遷移におけるデバイス待ち状態（ＩＤＬＥ）までに起動される。起動された周期関数４２は、例えばＵＳＢドライバソフトウェア３０が動作しているＯＳ(Operating System)の機能を用いて所定周期（例えば１０ｍｓｅｃ周期）で周期起動され、ＣＩＤ値を監視する。例えばコネクト部１５の所定のパラメータを監視することで、ＣＩＤ値の変化を検出できる。
【００５０】
このとき、ＵＳＢドライバソフトウェア３０が起動される以前からＵＳＢケーブル２がＵＳＢコネクタ３に挿入されている場合のことを考慮に入れ、周期関数４２の初期状態は、ＣＩＤ値がＯＦＦ状態を示す値であるとする。
【００５１】
ＵＳＢコネクタ３にＵＳＢケーブル２が挿入されていない状態で周期関数４２が起動され、その後、ＵＳＢコネクタ３にＵＳＢケーブル２が挿入されると、ＣＩＤ値がＯＮ状態とされる。このとき、ＣＩＤ値がＯＮ状態の検出は、ＵＳＢコネクタ３への物理的な挿入により発生されるため、チャタリングが発生する可能性がある。このチャタリングに対して適切な対策をとらなければ、ＣＩＤ値がＯＮ状態およびＯＦＦ状態の何れであるかが確定できない期間が生じ、ＵＳＢドライバソフトウェア３０の動作が不安定になるおそれがある。
【００５２】
そのため、この発明の実施の第１の形態では、ソフトウェア的にこのチャタリングを除去し、ＣＩＤ値がＯＮ状態である旨を示す擬似割り込み４０を発生させる。
【００５３】
例えば、所定の周期毎に起動されてＣＩＤ値を検出する周期関数４２を用い、周期関数４２は、何回か（例えば３回）連続してＣＩＤ値のＯＮ状態を検出した場合にのみ、ＣＩＤ値に変化があり、且つ、チャタリングが収束したと認識し、ＣＩＤ値がＯＮ状態になった旨を通知する擬似割り込み４０を発生するようにする。この発明では、ＣＩＤ値といったハードウェア割り込みが用意されていないパラメータ値の検出を、周期関数４２を用いて擬似割り込みを発生させソフトウェア的に実現しているので、このチャタリング除去の例のように、より詳細な条件設定が容易に実現できる。
【００５４】
一方、ＣＩＤ値のＯＦＦ状態の検出の際には、周期関数４２は、ＣＩＤ値がＯＦＦ状態になったことを検出した時点で、ＣＩＤ値がＯＦＦ状態になった旨を通知する擬似割り込み４０を発生する。なお、最初のＣＩＤ値のＯＦＦ状態の検出後にチャタリングが発生している可能性があるが、これはコネクタ抜去後であるため、問題にはならないと考えられる。
【００５５】
また、周期関数４２が起動される以前からＵＳＢケーブル２がＵＳＢコネクタ３に挿入されている場合については、例えば、上述のように周期関数４２の初期状態をＣＩＤ値がＯＦＦ状態を示す値としておくと共に、周期関数４２の起動直後にＣＩＤ値がＯＮ状態の擬似割り込み４０を発生する仕様とすることで、対応可能である。
【００５６】
なお、ＵＳＢハードウェアがＣＩＤ値検出およびその際のチャタリング処理の機能を有する場合は、割り込みハンドラ４１がＣＩＤ値ＯＮおよびＣＩＤ値ＯＦＦの割り込みによりそれぞれ擬似割り込み４０を発生させるように、コントロールドライバ層３１Ｂを変更すればよい。すなわち、割り込みハンドラ４１が、ＣＩＤ値ＯＮのハードウェア割り込みにより上述の周期関数４２と同様のＣＩＤ値がＯＮ状態の擬似割り込み４０を発生させ、ＣＩＤ値ＯＦＦの割り込みでＣＩＤ値がＯＦＦ状態の擬似割り込み４０を発生させるように、コントロールドライバ層３１Ｂを変更する。
【００５７】
プロトコルドライバ層３１Ａは、周期関数４２でＣＩＤ値の状態を検出した場合と同じ擬似割り込み４０で、割り込みハンドラ４１からＣＩＤ値の状態を渡される。そのため、変更が必要なのはコントロールドライバ層３１Ｂ（周期関数４２および割り込みハンドラ４１）のみであって、プロトコルドライバ層３１Ａを変更する必要が無い。
【００５８】
別の例として、Ｖｂｕｓの変化を検出する例について説明する。Ｖｂｕｓは、上述した接続先のＵＳＢ機器に電源を供給する役割の他に、ＵＳＢの通信速度モードを変更する際や、ＯＴＧにおいてホスト動作とペリフェラル動作が接続先の機器と入れ替わる際の状態検出にも用いられる。
【００５９】
通信速度モードの検出の例では、上述したように、通信速度モードのうちＬＳモードおよびＦＳモードは、データ線がプルアップ接続されているか否かで判別することができる。一方、ＦＳモードからＨＳモードへ移行する際には、接続先の機器との間で所定のプロトコルのやり取りが行われる。ＯＴＧにおける動作切替の例でも同様に、切り替え時に接続先の機器と所定のプロトコルのやり取りが行われる。その際に、Ｖｂｕｓの電圧が３段階に変化し、これを細かく検出する必要がある。このＶｂｕｓの変化の検知がハードウェア割り込みとして用意されていない場合、上述したように、周期関数４２を用いてＶｂｕｓの変化を検出し、変化が検出されたら、その旨示す擬似割り込み４０を発生させプロトコルドライバ層３１Ａに渡す。
【００６０】
次に、この発明の実施の第２の形態について説明する。この発明の実施の第２の形態によるドライバソフトウェアでは、ＵＳＢハードウェア以外の他のハードウェアからの割り込みが発生しており、ＵＳＢハードウェアへの割り込みが発生していないような場合に、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させる。このようにすることで、ＵＳＢハードウェア以外の他のハードウェアのパラメータ変化を検出する場合でも、ドライバソフトウェアの構成をハードウェア依存部の階層と、ハードウェア非依存部の階層とに明確に分離でき、ＵＳＢドライバソフトウェアの異なるハードウェアに対する移植が容易となる。
【００６１】
以下では、ＵＳＢハードウェア以外の他のハードウェアとして、ＵＳＢにおけるＶｂｕｓ電流を供給するための電源ハードウェアを考える。図６は、ＵＳＢケーブル２およびＵＳＢコネクタ３の構造を概略的に示す。図６Ａは、主にペリフェラル側に用いられるプラグであるＡプラグの正面図および上面図である。図６Ｂは、主にホスト側に用いられるプラグであるＢプラグの正面図および上面図である。また、図６Ｃは、ＵＳＢケーブル２の構造を概略的に示す。ＵＳＢケーブル２は、Ｖｂｕｓ電流供給用、グランド用、プラスおよびマイナスで一組のデータラインの４本のラインを含み、周囲がシールドで覆われる。ＡプラグおよびＢプラグは、図６Ａおよび図６Ｂの正面図にそれぞれ示されるように、シールド６０の内側に４個の端子が配置され、そのうち１個がＶｂｕｓ電流を供給するためのＶｂｕｓ端子６１である。
【００６２】
図７は、上述した図１のＵＳＢハードウェア１の構成と、Ｖｂｕｓ電流を供給する電源供給ハードウェア５０との一例の関係を示す。なお、図７において、図１と共通する部分には同一の符号を付し、詳細な説明を省略する。電源供給ハードウェア５０は、ＵＳＢケーブル２に対してＶｂｕｓ電流を供給する。電源供給ハードウェア５０は、Ｖｂｕｓ電流の過電流を検出すると、自身の制御によりＶｂｕｓ電流の供給を停止し、割り込み線に対して電源の供給を停止したことを示す信号を出力する。
【００６３】
インタラプト部５１は、電源供給ハードウェア５０による割り込みを制御するためのコントローラである。インタラプト部５１は、電源供給ハードウェア５０の割り込み線の信号を監視し、過電流が検出されたことによりＶｂｕｓ電流の供給が停止されたか否かを検知する。検知結果は、電源供給ハードウェア５０のハードウェア割り込みとして、バス２１を介してＣＰＵ２０に伝えられる。
【００６４】
また、過電流検出によりＶｂｕｓ電流の供給が停止されると、電源供給ハードウェア５０の内部的なパラメータである切断フラグが立てられる。切断フラグは、例えば電源供給ハードウェア５０のステータスレジスタにおける所定のアドレスの値で表される。
【００６５】
図８は、この発明の実施の第２の形態によるＵＳＢドライバソフトウェアの一例の構造を概略的に示す。この発明の実施の第２の形態によるＵＳＢドライバソフトウェアは、図８Ａに示されるように、上述した実施の第１の形態によるＵＳＢドライバソフトウェアの構造を拡張し、ＵＳＢハードウェア以外の他のハードウェアのパラメータの変化を検出するための周期関数４２Ｂが用意される。
【００６６】
周期関数４２Ｂは、上述した実施の第１の形態による周期関数４２（図８の例では周期関数４２Ａ）と同一の層に属し、擬似割り込み４０の下位の構成とされる。周期関数４２Ｂにより擬似割り込みは、上述した割り込みハンドラ４１による擬似割り込みおよび周期関数４２Ａによる擬似割り込みと、プロトコルドライバ層３１Ａに対する使用を共通とする。このＵＳＢドライバソフトウェアは、電源供給ハードウェア５０のような、ＵＳＢハードウェア以外の他のハードウェアに用意されているハードウェア割り込みを用いずに、周期関数４２Ｂを用いて電源供給ハードウェア５０のパラメータの変化を検出し、擬似割り込み４０に変換する。
【００６７】
より具体的に説明する。周期関数４２Ｂは、所定の周期で実行され、図８Ｂに示されるように、ＵＳＢハードウェア１以外の他のハードウェアである電源供給ハードウェア５０のパラメータの変化を検出する。周期関数４２Ｂは、例えば電源供給ハードウェア５０のステータスレジスタにおける所定のアドレスにアクセスして切断フラグの値を取得し、Ｖｂｕｓ電流の供給が過電流が検出されたことにより停止されたか否かを判断する。周期関数４２Ｂの実行の周期は、例えば３ｍｓｅｃ程度とする。周期関数４２Ｂは、取得した切断フラグの値に基づき擬似割り込み４０を発生してプロトコルドライバ層３１Ａに渡す。
【００６８】
このように、この発明の実施の第２の形態では、ＵＳＢハードウェア１以外の他のハードウェアに対して周期関数を用いた擬似割り込み発生の仕組みを適用することにより、ＵＳＢドライバソフトウェアのハードウェア非依存部分をそのまま使用することができる。そのため、ＵＳＢドライバソフトウェアを異なるハードウェアに移植することが容易な、ＵＳＢドライバソフトウェア構造を提供するとができる。
【００６９】
また、電源供給ハードウェア５０のような、ＵＳＢハードウェア１以外の他のハードウェアのパラメータの変化の検出を、周期関数４２Ｂを用いて擬似割り込みを発生させソフトウェア的に実現しているので、より詳細な条件設定が容易に実現できる。
【００７０】
なお、上述では、この発明がＵＳＢによる通信制御を行うＵＳＢドライバソフトウェアに適用されるように説明したが、これはこの例に限定されない。この発明は、ハードウェア割り込みやハードウェアの所定のパラメータの検出を行い、当該ハードウェアを制御するための他のドライバソフトウェアにも適用可能なものである。
【００７１】
また、上述では、ＵＳＢドライバソフトウェアがコンピュータ装置上で動作するように説明したが、これはこの例に限定されない。すなわち、ＣＰＵを有して動作する情報機器に、この発明によるＵＳＢドライバソフトウェアを組み込むこともできる。このような情報機器の例としては、ディジタルカメラ、ディジタルビデオカメラ、プリンタ装置などが考えられる。このような情報機器は、ＣＰＵとメモリを有し、プログラムに従いＣＰＵにより動作が制御されるので、広義にはコンピュータ装置と考えることができる。
【図面の簡単な説明】
【００７２】
【図１】この発明に適用可能なＵＳＢハードウェアの一例の構成を示すブロック図である。
【図２】ＵＳＢのドライバソフトウェアの一般的な構成を概略的に示す略線図である。
【図３】この発明の実施の第１の形態によるＵＳＢドライバソフトウェアの一例の構成を概略的に示す略線図である。
【図４】割り込みハンドラおよび周期関数について説明するための図である。
【図５】ＣＩＤ値を説明するための図である。
【図６】ＵＳＢケーブルおよびＵＳＢコネクタの構造を示す略線図である。
【図７】ＵＳＢハードウェアの構成とＶｂｕｓ電流を供給する電源供給ハードウェアとの一例の関係を示すブロック図である。
【図８】この発明の実施の第２の形態によるＵＳＢドライバソフトウェアの一例の構造を概略的に示す略線図である。
【図９】従来技術によるドライバソフトウェアを説明するための図である。
【符号の説明】
【００７３】
１  ＵＳＢハードウェア
２  ＵＳＢケーブル
３  ＵＳＢコネクタ
１０  トランシーバ
１１  セレクタ
１２  ホストチャンネル部
１３  ペリフェラルチャンネル部
１４  プルアップコントローラ
１５  コネクト部
１６  インタラプト部
２０  ＣＰＵ
２１  バス
３０  ＵＳＢドライバソフトウェア
３１  ＵＳＢドライバ本体
４０  擬似割り込み
４１  割り込みハンドラ
４２Ａ，４２Ｂ  周期関数
５０  電源供給ハードウェア
【図１】
2005100326.tif 000003
【図２】
2005100326.tif 000004
【図３】
2005100326.tif 000005
【図４】
2005100326.tif 000006
【図５】
2005100326.tif 000007
【図６】
2005100326.tif 000008
【図７】
2005100326.tif 000009
【図８】
2005100326.tif 000010
【図９】
2005100326.tif 000011