JP2005100326A - 制御プログラムおよび制御方法 - Google Patents

制御プログラムおよび制御方法 Download PDF

Info

Publication number
JP2005100326A
JP2005100326A JP2004088317A JP2004088317A JP2005100326A JP 2005100326 A JP2005100326 A JP 2005100326A JP 2004088317 A JP2004088317 A JP 2004088317A JP 2004088317 A JP2004088317 A JP 2004088317A JP 2005100326 A JP2005100326 A JP 2005100326A
Authority
JP
Japan
Prior art keywords
hardware
interrupt
pseudo
usb
control program
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.)
Abandoned
Application number
JP2004088317A
Other languages
English (en)
Inventor
Seiji Tawara
誠二 田原
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2004088317A priority Critical patent/JP2005100326A/ja
Publication of JP2005100326A publication Critical patent/JP2005100326A/ja
Abandoned legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

【課題】 ハードウェアへの依存部分が少なく、移植性が良い制御プログラムを提供する。
【解決手段】 ハードウェア依存のドライバ層31Bは、USBハードウェア1の割り込みを擬似割り込み40に変換するハンドラ41と、割り込みが用意されていないパラメータを周期的に検出して擬似割り込み40を発生する周期関数42Aと、他のハードウェアのパラメータ変化を周期的に検出して擬似割り込み40を発生する周期関数42Bとを有する。擬似割り込み40は、ハードウェア非依存のドライバ層31Aを介してさらに上位のアプリケーションに渡される。USBハードウェア1の割り込み、割り込みが用意されていないパラメータ、他のハードウェアのパラメータが擬似割り込み40に変換されるので、ドライバ層31Bの変更だけでUSBドライバ本体を他のUSBハードウェアに移植でき、移植性が向上する。
【選択図】 図8

Description

この発明は、コンピュータ装置などに接続して用いられる周辺機器を制御する制御プログラムおよび制御方法に関する。
近年では、パーソナルコンピュータといったコンピュータ装置と周辺機器とを接続するためのインターフェイスとして、USB(Universal Serial Bus)が広く用いられている。USBは、機器の電源を投入したまま挿抜可能なホットプラグ機能を有する、各種の機器を同時に接続することができるなどの特徴があり、急速に普及を遂げた。特許文献1には、複数のUSBポートにそれぞれ接続された機器の切り替えを容易に行うようにした切替装置が記載されている。
特開2002−140281
USB通信においては、一般的には、命令を送信する側の機器と、命令を受信する側の機器とが予め決まっている。命令を送信する側の機器をホストと称し、命令を受信する側の機器を、ペリフェラルまたはデバイスと称する。近年では、1台の機器でホストとペリフェラルとを切り替えて用いることができるような規格も提案されている。
ところで、従来では、USB通信を行うためのドライバソフトウェアは、ホスト側およびペリフェラル側の双方において、USB通信制御にハードウェア割り込みを直接的に使用していた。そのため、ハードウェアにより得られるパラメータは、当該ハードウェアの仕様に依存していると共に、ドライバソフトウェア(以下、適宜、ドライバと呼ぶ)自身の仕様も当該ハードウェアの仕様に依存したものとなっていた。したがって、従来は、他のハードウェアに対してドライバを移植する際に、移植先のハードウェアの仕様に合わせてドライバソフトウェア自身に対して大きな変更を加える必要があり、移植性が悪いという問題点があった。
図9を用いて模式的に説明する。必要な割り込みがハードウェア割り込みにより全て取得できる場合、図9Aに示されるように、ハードウェア110を制御するためのドライバ100は、ハードウェア110に対して同一階層でアクセスしてパラメータを得ることができる。一方、ハードウェア割り込みにより取得できない割り込みを有するハードウェア110’を用いる場合、図9Bに部分120として示されるように、当該パラメータを得るために、他の部分よりハードウェア的に深い層までアクセスする必要がある。そのため、他のハードウェアに対してこのドライバ100’を移植する際に、この部分120を大きく変更する必要がある。
また、ハードウェア割り込みの際にチャタリングなどが発生していると、誤動作の原因となるおそれがある。ハードウェア的に実現されている割り込みの場合、このチャタリングに対する対策もハードウェア的になされている場合が多い。しかしながら、チャタリング対策がハードウェア的になされていない場合、従来では、別途ソフトウェア処理を行ってこのチャタリングを除去したり、他のパラメータと共に判断して、状態の変化が確定したことを知るなどの追加処理が必要であるという問題点があった。またそのため、ハードウェアのパラメータなどの変化に対して柔軟に対応することが難しいという問題点があった。
さらに、このような追加処理を行うようにすることにより、ドライバの階層構造におけるハードウェア依存部分(例えば図9Bの部分120)の層構造が入り組んだ構造になってしまうという問題点があった。さらにそのため、上述のように、ドライバを他のハードウェアに移植する場合など、この入り組んだ層構造に対する大きな変更と、ドライバの階層の切り直しの作業とが必要となるという問題点があった。
ところで、USBでは、接続された機器に対して、バスを介して電源を供給することができるようにされている。USBホストからUSBペリフェラルへ供給される電流を、Vバス(Vbus)電流と称する。USBペリフェラルは、このVbus電流による電源供給により、USBホストとの接続を知ることができ、駆動電流を得ることができる。なお、USB規格においては、駆動電流を必要としないセルフパワーのペリフェラルも存在する。
Vbus電流は、ハードウェアを駆動するための電流が流れるため、別途、電源ハードウェアを用意して供給や受信を行う場合が多い。そのため、Vbus電流の過電流検出は、USBハードウェアからのハードウェア割り込みではなく、電源ハードウェアからの外部割り込みとなっている場合が多い。また、過電流が検出された際は、即時に回路切断を行う必要があるため、電源ハードウェアでハード的に切断するような仕組みを持つのが一般的である。
このように、Vbus電流に過電流が検出された場合、電源ハードウェアに対して割り込みが発生するが、その割り込みは、USBハードウェアからの割り込みではなく、電源ハードウェアからの割り込みとなる。電源ハードウェアから過電流検出による割り込みがあった場合、USBドライバソフトウェアは、例えば通信を終了させるなど、所定の処理を行う。
従来では、USB通信を行うためのドライバソフトウェアは、USBハードウェア割り込みを受け付けるソフトウェアは持つが、他のハードウェアからの割り込みを受け付けるソフトウェアや仕組みを持っていなかった。そのため、ドライバソフトウェアがVbus電流の過電流検出を行うには、ドライバソフトウェアに対して他のハードウェアからの割り込みを受け付けるソフトウェアを追加するか、その他の仕組みを追加する必要があり、ドライバソフトウェアに大きな改造を加える必要があるという問題点があった。
USBドライバソフトウェアは、ハードウェア110’からのハードウェア割り込みをハンドラを用いて取得する。図9Cに一例が示されるように、USBハードウェアとは別の、電源ハードウェア130からのハードウェア割り込みを取得するためには、電源ハードウェア130に対応するハンドラ140をUSBドライバソフトウェア100’が持つ必要がある。USBドライバソフトウェア100’は、上位のソフトウェアとやりとりを行うために、ハードウェア非依存の層100’Aを有する。USBハードウェア以外の他のハードウェアである電源ハードウェア130の割り込みを取得するような場合、ハードウェア非依存層100’Aに対してハードウェアの違いを隠蔽するための層100’Bを新たに設け、さらに、上述したハンドラ140を設ける必要がある。
このように、従来のUSBドライバソフトウェアは、USBハードウェア以外の他のハードウェアのパラメータの変化を検出しようとすると、大きな改造を行わなくてはならず、異なるハードウェアに移植する際の移植性が非常に悪いという問題点があった。
したがって、この発明の目的は、ハードウェアへの依存部分が少なく、移植性に優れた制御プログラムおよび制御方法を提供することにある。
したがって、この発明の他の目的は、ハードウェアへの依存部分が少なく、移植性に優れ、さらに、他のハードウェアからの割り込みを受け付けることができるような制御プログラムおよび制御方法を提供することにある。
上述した課題を解決するために、第1の発明は、ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、制御プログラムは、ハードウェアからの割り込みを擬似割り込みに変換するステップと、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生するステップとを有するハードウェアに依存する第1の階層と、擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第2の階層とからなることを特徴とする制御プログラムである。
また、第2の発明は、ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、制御プログラムは、ハードウェアからの割り込みを擬似割り込みに変換するステップと、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生するステップと、擬似割り込みを上位のソフトウェアに渡すステップとを有することを特徴とする制御プログラムである。
また、第3の発明は、ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法において、ハードウェアからの割り込みを擬似割り込みに変換するステップと、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生するステップと、擬似割り込みを上位のソフトウェアに渡すステップとを有することを特徴とする制御方法である。
また、第4の発明は、他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、制御プログラムは、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生すステップを有するハードウェアに依存する第1の階層と、擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第2の階層とからなることを特徴とする制御プログラムである。
また、第5の発明は、他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、制御方法は、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させるステップと、擬似割り込みを上位のソフトウェアに渡すステップとを有することを特徴とする制御プログラムである。
また、第6の発明は、他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法において、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させる第1の擬似割り込み発生のステップと、擬似割り込みを上位のソフトウェアに渡すステップとを有することを特徴とする制御方法である。
上述したように、第1の発明は、ハードウェアからの割り込みを擬似割り込みに変換するステップと、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生するステップとを有するハードウェアに依存する第1の階層と、擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第2の階層とからなるため、異なるハードウェアに移植する際に、ハードウェアに依存する第1の階層を変更するだけで済むと共に、ハードウェアからの割り込みが用意されていない場合にも、発生された擬似割り込みに対して処理を行うことで、より詳細な設定が可能となる。
また、第2および第3の発明は、ハードウェアからの割り込みを擬似割り込みに変換して上位のソフトウェアに渡し、ハードウェアからの割り込みが用意されていない場合は、ハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生して上位のソフトウェアに渡すようにしているため、ハードウェアからの割り込みが用意されていない場合にも、発生された擬似割り込みに対して処理を行うことで、より詳細な設定が可能となると共に、異なるハードウェアに移植する際に、最小限の変更で済む。
また、第4の発明は、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生すステップを有するハードウェアに依存する第1の階層と、擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第2の階層とからなるため、異なるハードウェアに移植する際に、ハードウェアに依存する第1の階層を変更するだけで済むと共に、他のハードウェアのパラメータの変化に応じて擬似割り込みを発生するため、発生された擬似割り込みに対して処理を行うことで、他のハードウェアのパラメータ変化に対してより詳細な設定が可能となる。
また、第5および第6の発明は、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させ、発生された擬似割り込みを上位のソフトウェアに渡すようにしているため、他のハードウェアのパラメータの変化に応じて擬似割り込みを発生するため、発生された擬似割り込みに対して処理を行うことで、他のハードウェアのパラメータ変化に対してより詳細な設定が可能となると共に、他のハードウェアのパラメータ変化に対する処理が擬似割り込みを介しているため、異なるハードウェアに移植する際に最小限の変更で済む。
この発明は、ハードウェア割り込みが用意されている場合には、ハードウェア割り込みを擬似割り込みに変換し、ハードウェア割り込みが用意されていない場合にはパラメータ検出の結果に基づき擬似割り込みを発生させて上位に渡すようにしている。そのため、ドライバソフトウェアの構成をハードウェア依存部の階層とハードウェア非依存部の階層とに明確に階層化でき、ドライバソフトウェアの異なるハードウェアに対する移植が容易になるという効果がある。
また、この発明は、ハードウェア割り込みが用意されてい無い場合に、ソフトウェアによって擬似割り込みを発生させているため、ハードウェア割り込みと区別無く扱うことができるという効果がある。
さらに、ハードウェア割り込みが用意されていない場合の擬似割り込み発生をソフトウェアにより行っているので、擬似割り込みの発生条件を詳細に設定することが容易にできるという効果がある。
さらにまた、第4、第5および第6の発明は、USBハードウェア以外の他のハードウェアに対して周期関数を用いた擬似割り込み発生の仕組みを適用することにより、USBドライバソフトウェアのハードウェア非依存部分をそのまま使用することができるという効果がある。そのため、USBドライバソフトウェアを異なるハードウェアに移植することが容易な、USBドライバソフトウェア構造を提供するとができるという効果がある。
また、第5および第6の発明は、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生して上位のソフトウェアに渡すようにしているため、他のハードウェアからの割り込みが使用できない場合でも、発生された擬似割り込みに対して処理を行うことで、より詳細な設定が可能になると共に、USBドライバソフトウェアを異なるハードウェアに移植する際に、最小限の変更で済むという効果がある。
さらに、第4、第5および第6の発明は、電源ハードウェアのような、USBハードウェア以外の他のハードウェアのパラメータの変化の検出を、周期関数を用いて擬似割り込みを発生させソフトウェア的に実現しているので、より詳細な条件設定が容易に実現できるという効果がある。
以下、この発明の実施の第1の形態を、図面を参照しながら説明する。図1は、この発明に適用可能なUSB(Universal Serial Bus)ハードウェア1の一例の構成を示す。このUSBハードウェア1は、USB2.0の規格に対応するもので、最大データ転送速度が480Mbps(Mega bit per second)のHS(High Speed)モード、1.5MbpsのLS(Low Speed)モードおよび12MbpsのFS(Full Speed)モードをサポート可能である。また、USBハードウェア1は、ホスト動作モードとペリフェラル動作モードとを切り替えて動作させることができるUSB OTG(On-The-Go)規格に対応している。
USBハードウェア1は、バス21を介してCPU(Central Processing Unit)20と接続され、CPU20上で動作するドライバソフトウェアの制御に基づきUSBケーブル2とCPU20との間の通信制御を行う。
USBケーブル2がUSBコネクタ3に挿入され、通信制御を行うトランシーバ10に接続される。トランシーバ10は、受信時には、USBケーブル2を介して送信されてきた信号を受信し、受信された信号を電気的な信号からディジタル的な信号へと変換する。送信時は、セレクタ11から供給されたディジタル信号を、USBの規格を満たしてUSBケーブル2に送信可能なように駆動する。
プルアップコントローラ14からトランシーバ10に対して制御信号が供給され、ペリフェラル動作時の接続/切断が制御される。USBハードウェア1がFSモードおよびLSモードの何れの通信速度モードで動作するかに応じて、プルアップコントローラ14によりUSBのプルアップ接続が制御される。
セレクタ11は、コネクト部15から供給される制御信号に基づき、USBハードウェア1をホスト動作させるか、ペリフェラル動作させるかを選択する。すなわち、セレクタ11は、ホスト動作させる場合、ホストチャンネル部12を介して信号のやり取りができるように信号経路を選択し、ペリフェラル動作させる場合、ペリフェラルチャンネル部13を介して信号のやりとりができるように信号経路を選択する。ホストチャンネル部12およびペリフェラルチャンネル部13は、それぞれバス21を介してCPU20に接続される。
なお、USBハードウェア1がHSモードで動作されるときは、USBハードウェア1がホスト動作およびペリフェラル動作の何れで動作しているかに応じて、ホストチャンネル部12およびペリフェラルチャンネル部13の動作モードに対応する側が終端抵抗(エンドポイント)として用いられるように制御される。
コネクト部15により、USBのソケット(図示しない)にUSBケーブル2が物理的に挿入されたか否かが検出される。また、コネクト部15は、セレクタ11に対してチャンネル選択を指示する制御信号を供給すると共に、ホストチャンネル部12およびペリフェラルチャンネル部13に対するリセットクロック制御を行う。さらに、コネクト部15は、Vbusと称されるUSBケーブル2を介してなされる電源供給を制御し、例えば5Vの電源電圧をUSBケーブル2に対して供給する。
インタラプト部16は、割り込みを制御するためのコントローラであって、トランシーバ10から出力される信号を検出し、USBコネクタ3とUSBケーブル2とが物理的に接続/切断されたか否か、通信相手においてUSBによる通信が接続/切断されたか否か、リクエストを受信したか否か、データを受信したか否か、相手機器に対して電流を過供給していないか否かなどが検知される。検知結果は、バス21を介してCPU20に伝えられる。
上述したホストチャンネル部12およびペリフェラルチャンネル部13、ならびに、プルアップコントローラ14、コネクト部15およびインタラプト部16は、バス21を介してCPU20と接続され、CPU20上で動作するUSBドライバソフトウェアと諸信号のやり取りを行う。USBドライバソフトウェアは、USBハードウェア1とCPU20上で動作するOS(Operating System)との間でなされるやり取りを仲介する。
理解を容易とするために、図2を用いて、USBのドライバソフトウェア30の一般的な構成について概略的に説明する。USBドライバソフトウェア30は、USBドライバ本体31と、1または複数のクラスドライバ33、34、35、・・・、36と、USBマネージャ32とからなる。USBドライバ本体31は、実際にUSBハードウェア1との間でのやり取りを行う。クラスドライバは、USBハードウェア1に接続される機器の種類(クラス)に応じて単一のドライバを提供するもので、この図2の例では、ビデオクラスドライバ33、マスストレージクラスドライバ34、イメージングクラスドライバ35およびセンサクラスドライバ36が設けられている。USBマネージャ32は、各クラスドライバ33〜36やUSBドライバ本体31を管理する。
図3は、この発明の実施の第1の形態によるUSBドライバソフトウェア30の一例の構成を概略的に示す。なお、図3において、上述の図2と共通する部分については同一の符号を付して詳細な説明を省略する。この発明の実施の第1の形態では、USBドライバ本体31は、概略的にはプロトコルドライバ層31Aとコントロールドライバ層31Bの2層からなる。コントロールドライバ層31Bは、内部にアクセスライブラリ層31Cを有する。プロトコルドライバ層31Aは、USBハードウェア1に非依存とされる階層である。また、コントロールドライバ層31Bは、USBハードウェア1に依存する階層である。
コントロールドライバ層31Bは、USBハードウェア1からのハードウェア割り込みを、割り込みハンドラを用いて擬似割り込みに変換してプロトコルドライバ層31Aに渡す。また、コントロールドライバ層31Bは、USBハードウェア1の所定のパラメータを周期関数を用いて所定の周期で監視し、そのパラメータの変化に基づき擬似割り込みを発生させプロトコルドライバ層31Aに渡す。プロトコルドライバ層31Aは、割り込みハンドラおよび/または周期関数から渡された擬似割り込みを所定に処理して、CPU20上で動作する上位のアプリケーションなどに渡す。なお、割り込みハンドラによる擬似割り込みと、周期関数による擬似割り込みとは、プロトコルドライバ層31Aに対する仕様を共通とする。
図4を用いて、割り込みハンドラ41および周期関数42について概略的に説明する。図4Aに示されるように、割り込みハンドラ41および周期関数42は、擬似割り込み40に対して下位の構成とされる。図4Bに示されるように、割り込みハンドラ41は、USBハードウェア1においてハードウェア割り込みとして用意されている割り込みを受け取り、擬似割り込み40に変換してプロトコルドライバ層31Aに渡す。例えば、割り込みハンドラ41は、USBハードウェア1のインタラプト部16における検知結果をハードウェア割り込みとして受け取り、擬似割り込み40に変換する。
一方、周期関数42は、所定の周期で実行され、図4Bに示されるように、USBハードウェア1においてハードウェア割り込みとして用意されていないパラメータの変化を検出する。例えば、USBハードウェア1のプルアップコントローラ部14やコネクト部15におけるパラメータの変化を周期的に監視する。監視の結果、当該パラメータが所定の条件を満たして変化したことが検出されたら、その旨を示す擬似割り込み40を発生させ、プロトコルドライバ層31Aに渡す。すなわち、図4に模式的に示されるように、周期関数42は、割り込みハンドラ41よりも、よりUSBハードウェア1に対する依存性の高い部分の変化を検出する。
この発明の実施の第1の形態では、このように、割り込みハンドラ41と周期関数42とを用いて、ハードウェア割り込みと、ハードウェア割り込みとして用意されていない、よりUSBハードウェア1に対する依存性の高い変化とを、共に、USBドライバ本体31が必要としている擬似割り込み40に変換してプロトコルドライバ層31Aに渡すようにしている。
換言すれば、プロトコルドライバ層31Aは、割り込みハンドラ41と周期関数42とにより、ハードウェア割り込みと、ハードウェア割り込みとして用意されていない、よりUSBハードウェア1に対する依存性の高い変化とを、共通の擬似割り込み40により処理することができる。そのため、USBドライバ本体31を他のUSBハードウェアに移植する場合でも、コントロールドライバ層31Bのみを変更すればよく、移植性が向上する。
より具体的な例を用いて説明する。一例として、USBハードウェア1にUSBケーブル2を介して接続されている相手機器がホストとして動作するか、ペリフェラルとして動作するかを認識するためのパラメータであるCID(Connector ID or Contact number #4 pin.)値の検出が、ハードウェア割り込みとして用意されていない場合について考える。この場合、CID値の変化を周期関数42を用いて検出する。CID値は、図5に一例が示されるように、ON状態かOFF状態かを示す値であって、USBケーブル2のうち1本の信号線を用いて伝えられる。
CID値の検出のため、周期関数42は、USBドライバソフトウェア30の起動時、若しくは、USBの規格に定められる状態遷移におけるデバイス待ち状態(IDLE)までに起動される。起動された周期関数42は、例えばUSBドライバソフトウェア30が動作しているOS(Operating System)の機能を用いて所定周期(例えば10msec周期)で周期起動され、CID値を監視する。例えばコネクト部15の所定のパラメータを監視することで、CID値の変化を検出できる。
このとき、USBドライバソフトウェア30が起動される以前からUSBケーブル2がUSBコネクタ3に挿入されている場合のことを考慮に入れ、周期関数42の初期状態は、CID値がOFF状態を示す値であるとする。
USBコネクタ3にUSBケーブル2が挿入されていない状態で周期関数42が起動され、その後、USBコネクタ3にUSBケーブル2が挿入されると、CID値がON状態とされる。このとき、CID値がON状態の検出は、USBコネクタ3への物理的な挿入により発生されるため、チャタリングが発生する可能性がある。このチャタリングに対して適切な対策をとらなければ、CID値がON状態およびOFF状態の何れであるかが確定できない期間が生じ、USBドライバソフトウェア30の動作が不安定になるおそれがある。
そのため、この発明の実施の第1の形態では、ソフトウェア的にこのチャタリングを除去し、CID値がON状態である旨を示す擬似割り込み40を発生させる。
例えば、所定の周期毎に起動されてCID値を検出する周期関数42を用い、周期関数42は、何回か(例えば3回)連続してCID値のON状態を検出した場合にのみ、CID値に変化があり、且つ、チャタリングが収束したと認識し、CID値がON状態になった旨を通知する擬似割り込み40を発生するようにする。この発明では、CID値といったハードウェア割り込みが用意されていないパラメータ値の検出を、周期関数42を用いて擬似割り込みを発生させソフトウェア的に実現しているので、このチャタリング除去の例のように、より詳細な条件設定が容易に実現できる。
一方、CID値のOFF状態の検出の際には、周期関数42は、CID値がOFF状態になったことを検出した時点で、CID値がOFF状態になった旨を通知する擬似割り込み40を発生する。なお、最初のCID値のOFF状態の検出後にチャタリングが発生している可能性があるが、これはコネクタ抜去後であるため、問題にはならないと考えられる。
また、周期関数42が起動される以前からUSBケーブル2がUSBコネクタ3に挿入されている場合については、例えば、上述のように周期関数42の初期状態をCID値がOFF状態を示す値としておくと共に、周期関数42の起動直後にCID値がON状態の擬似割り込み40を発生する仕様とすることで、対応可能である。
なお、USBハードウェアがCID値検出およびその際のチャタリング処理の機能を有する場合は、割り込みハンドラ41がCID値ONおよびCID値OFFの割り込みによりそれぞれ擬似割り込み40を発生させるように、コントロールドライバ層31Bを変更すればよい。すなわち、割り込みハンドラ41が、CID値ONのハードウェア割り込みにより上述の周期関数42と同様のCID値がON状態の擬似割り込み40を発生させ、CID値OFFの割り込みでCID値がOFF状態の擬似割り込み40を発生させるように、コントロールドライバ層31Bを変更する。
プロトコルドライバ層31Aは、周期関数42でCID値の状態を検出した場合と同じ擬似割り込み40で、割り込みハンドラ41からCID値の状態を渡される。そのため、変更が必要なのはコントロールドライバ層31B(周期関数42および割り込みハンドラ41)のみであって、プロトコルドライバ層31Aを変更する必要が無い。
別の例として、Vbusの変化を検出する例について説明する。Vbusは、上述した接続先のUSB機器に電源を供給する役割の他に、USBの通信速度モードを変更する際や、OTGにおいてホスト動作とペリフェラル動作が接続先の機器と入れ替わる際の状態検出にも用いられる。
通信速度モードの検出の例では、上述したように、通信速度モードのうちLSモードおよびFSモードは、データ線がプルアップ接続されているか否かで判別することができる。一方、FSモードからHSモードへ移行する際には、接続先の機器との間で所定のプロトコルのやり取りが行われる。OTGにおける動作切替の例でも同様に、切り替え時に接続先の機器と所定のプロトコルのやり取りが行われる。その際に、Vbusの電圧が3段階に変化し、これを細かく検出する必要がある。このVbusの変化の検知がハードウェア割り込みとして用意されていない場合、上述したように、周期関数42を用いてVbusの変化を検出し、変化が検出されたら、その旨示す擬似割り込み40を発生させプロトコルドライバ層31Aに渡す。
次に、この発明の実施の第2の形態について説明する。この発明の実施の第2の形態によるドライバソフトウェアでは、USBハードウェア以外の他のハードウェアからの割り込みが発生しており、USBハードウェアへの割り込みが発生していないような場合に、他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させる。このようにすることで、USBハードウェア以外の他のハードウェアのパラメータ変化を検出する場合でも、ドライバソフトウェアの構成をハードウェア依存部の階層と、ハードウェア非依存部の階層とに明確に分離でき、USBドライバソフトウェアの異なるハードウェアに対する移植が容易となる。
以下では、USBハードウェア以外の他のハードウェアとして、USBにおけるVbus電流を供給するための電源ハードウェアを考える。図6は、USBケーブル2およびUSBコネクタ3の構造を概略的に示す。図6Aは、主にペリフェラル側に用いられるプラグであるAプラグの正面図および上面図である。図6Bは、主にホスト側に用いられるプラグであるBプラグの正面図および上面図である。また、図6Cは、USBケーブル2の構造を概略的に示す。USBケーブル2は、Vbus電流供給用、グランド用、プラスおよびマイナスで一組のデータラインの4本のラインを含み、周囲がシールドで覆われる。AプラグおよびBプラグは、図6Aおよび図6Bの正面図にそれぞれ示されるように、シールド60の内側に4個の端子が配置され、そのうち1個がVbus電流を供給するためのVbus端子61である。
図7は、上述した図1のUSBハードウェア1の構成と、Vbus電流を供給する電源供給ハードウェア50との一例の関係を示す。なお、図7において、図1と共通する部分には同一の符号を付し、詳細な説明を省略する。電源供給ハードウェア50は、USBケーブル2に対してVbus電流を供給する。電源供給ハードウェア50は、Vbus電流の過電流を検出すると、自身の制御によりVbus電流の供給を停止し、割り込み線に対して電源の供給を停止したことを示す信号を出力する。
インタラプト部51は、電源供給ハードウェア50による割り込みを制御するためのコントローラである。インタラプト部51は、電源供給ハードウェア50の割り込み線の信号を監視し、過電流が検出されたことによりVbus電流の供給が停止されたか否かを検知する。検知結果は、電源供給ハードウェア50のハードウェア割り込みとして、バス21を介してCPU20に伝えられる。
また、過電流検出によりVbus電流の供給が停止されると、電源供給ハードウェア50の内部的なパラメータである切断フラグが立てられる。切断フラグは、例えば電源供給ハードウェア50のステータスレジスタにおける所定のアドレスの値で表される。
図8は、この発明の実施の第2の形態によるUSBドライバソフトウェアの一例の構造を概略的に示す。この発明の実施の第2の形態によるUSBドライバソフトウェアは、図8Aに示されるように、上述した実施の第1の形態によるUSBドライバソフトウェアの構造を拡張し、USBハードウェア以外の他のハードウェアのパラメータの変化を検出するための周期関数42Bが用意される。
周期関数42Bは、上述した実施の第1の形態による周期関数42(図8の例では周期関数42A)と同一の層に属し、擬似割り込み40の下位の構成とされる。周期関数42Bにより擬似割り込みは、上述した割り込みハンドラ41による擬似割り込みおよび周期関数42Aによる擬似割り込みと、プロトコルドライバ層31Aに対する使用を共通とする。このUSBドライバソフトウェアは、電源供給ハードウェア50のような、USBハードウェア以外の他のハードウェアに用意されているハードウェア割り込みを用いずに、周期関数42Bを用いて電源供給ハードウェア50のパラメータの変化を検出し、擬似割り込み40に変換する。
より具体的に説明する。周期関数42Bは、所定の周期で実行され、図8Bに示されるように、USBハードウェア1以外の他のハードウェアである電源供給ハードウェア50のパラメータの変化を検出する。周期関数42Bは、例えば電源供給ハードウェア50のステータスレジスタにおける所定のアドレスにアクセスして切断フラグの値を取得し、Vbus電流の供給が過電流が検出されたことにより停止されたか否かを判断する。周期関数42Bの実行の周期は、例えば3msec程度とする。周期関数42Bは、取得した切断フラグの値に基づき擬似割り込み40を発生してプロトコルドライバ層31Aに渡す。
このように、この発明の実施の第2の形態では、USBハードウェア1以外の他のハードウェアに対して周期関数を用いた擬似割り込み発生の仕組みを適用することにより、USBドライバソフトウェアのハードウェア非依存部分をそのまま使用することができる。そのため、USBドライバソフトウェアを異なるハードウェアに移植することが容易な、USBドライバソフトウェア構造を提供するとができる。
また、電源供給ハードウェア50のような、USBハードウェア1以外の他のハードウェアのパラメータの変化の検出を、周期関数42Bを用いて擬似割り込みを発生させソフトウェア的に実現しているので、より詳細な条件設定が容易に実現できる。
なお、上述では、この発明がUSBによる通信制御を行うUSBドライバソフトウェアに適用されるように説明したが、これはこの例に限定されない。この発明は、ハードウェア割り込みやハードウェアの所定のパラメータの検出を行い、当該ハードウェアを制御するための他のドライバソフトウェアにも適用可能なものである。
また、上述では、USBドライバソフトウェアがコンピュータ装置上で動作するように説明したが、これはこの例に限定されない。すなわち、CPUを有して動作する情報機器に、この発明によるUSBドライバソフトウェアを組み込むこともできる。このような情報機器の例としては、ディジタルカメラ、ディジタルビデオカメラ、プリンタ装置などが考えられる。このような情報機器は、CPUとメモリを有し、プログラムに従いCPUにより動作が制御されるので、広義にはコンピュータ装置と考えることができる。
この発明に適用可能なUSBハードウェアの一例の構成を示すブロック図である。 USBのドライバソフトウェアの一般的な構成を概略的に示す略線図である。 この発明の実施の第1の形態によるUSBドライバソフトウェアの一例の構成を概略的に示す略線図である。 割り込みハンドラおよび周期関数について説明するための図である。 CID値を説明するための図である。 USBケーブルおよびUSBコネクタの構造を示す略線図である。 USBハードウェアの構成とVbus電流を供給する電源供給ハードウェアとの一例の関係を示すブロック図である。 この発明の実施の第2の形態によるUSBドライバソフトウェアの一例の構造を概略的に示す略線図である。 従来技術によるドライバソフトウェアを説明するための図である。
符号の説明
1 USBハードウェア
2 USBケーブル
3 USBコネクタ
10 トランシーバ
11 セレクタ
12 ホストチャンネル部
13 ペリフェラルチャンネル部
14 プルアップコントローラ
15 コネクト部
16 インタラプト部
20 CPU
21 バス
30 USBドライバソフトウェア
31 USBドライバ本体
40 擬似割り込み
41 割り込みハンドラ
42A,42B 周期関数
50 電源供給ハードウェア

Claims (12)

  1. ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、
    上記制御プログラムは、
    上記ハードウェアからの割り込みを擬似割り込みに変換するステップと、上記ハードウェアに対してアクセスして取得したパラメータに基づき上記擬似割り込みを発生するステップとを有する上記ハードウェアに依存する第1の階層と、
    上記擬似割り込みを上位のソフトウェアに渡すステップを有する上記ハードウェアに非依存の第2の階層と
    からなることを特徴とする制御プログラム。
  2. 請求項1に記載の制御プログラムにおいて、
    上記擬似割り込みを発生するステップは、周期的に実行されることを特徴とする制御プログラム。
  3. 請求項1に記載の制御プログラムにおいて、
    上記擬似割り込みを発生するステップは、上記ハードウェアからの割り込みが用意されていない上記パラメータに対して実行されることを特徴とする制御プログラム。
  4. ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、
    上記制御プログラムは、
    ハードウェアからの割り込みを擬似割り込みに変換するステップと、
    上記ハードウェアに対してアクセスして取得したパラメータに基づき上記擬似割り込みを発生するステップと、
    上記擬似割り込みを上位のソフトウェアに渡すステップと
    を有することを特徴とする制御プログラム。
  5. 請求項4に記載の制御プログラムにおいて、
    上記擬似割り込みを発生するステップは、周期的に実行されることを特徴とする制御プログラム。
  6. 請求項4に記載の制御プログラムにおいて、
    上記擬似割り込みを発生するステップは、上記ハードウェアからの割り込みが用意されていない上記パラメータに対して実行されることを特徴とする制御プログラム。
  7. ハードウェアのパラメータや割り込みを取得し、当該ハードウェアを制御するようにした制御方法において、
    ハードウェアからの割り込みを擬似割り込みに変換するステップと、
    上記ハードウェアに対してアクセスして取得したパラメータに基づき上記擬似割り込みを発生するステップと、
    上記擬似割り込みを上位のソフトウェアに渡すステップと
    を有することを特徴とする制御方法。
  8. 他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、
    上記制御プログラムは、
    上記他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生すステップを有するハードウェアに依存する第1の階層と、
    上記擬似割り込みを上位のソフトウェアに渡すステップを有するハードウェアに非依存の第2の階層と
    からなることを特徴とする制御プログラム。
  9. 請求項8に記載の制御プログラムにおいて、
    上記擬似割り込みを発生するステップは、周期的に実行されることを特徴とする制御プログラム。
  10. 他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法をコンピュータ装置に実行させる制御プログラムにおいて、
    上記制御方法は、
    上記他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させるステップと、
    上記擬似割り込みを上位のソフトウェアに渡すステップと
    を有することを特徴とする制御プログラム。
  11. 請求項10に記載の制御プログラムにおいて、
    上記擬似割り込みを発生するステップは、周期的に実行されることを特徴とする制御プログラム。
  12. 他のハードウェアのパラメータを取得し、ハードウェアを制御するようにした制御方法において、
    上記他のハードウェアに対してアクセスして取得したパラメータに基づき擬似割り込みを発生させる第1の擬似割り込み発生のステップと、
    上記擬似割り込みを上位のソフトウェアに渡すステップと
    を有することを特徴とする制御方法。
JP2004088317A 2003-09-02 2004-03-25 制御プログラムおよび制御方法 Abandoned JP2005100326A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004088317A JP2005100326A (ja) 2003-09-02 2004-03-25 制御プログラムおよび制御方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003309493 2003-09-02
JP2004088317A JP2005100326A (ja) 2003-09-02 2004-03-25 制御プログラムおよび制御方法

Publications (1)

Publication Number Publication Date
JP2005100326A true JP2005100326A (ja) 2005-04-14

Family

ID=34467492

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004088317A Abandoned JP2005100326A (ja) 2003-09-02 2004-03-25 制御プログラムおよび制御方法

Country Status (1)

Country Link
JP (1) JP2005100326A (ja)

Similar Documents

Publication Publication Date Title
US8832329B2 (en) USB peripheral device comprising limited function USB host controller
TWI782919B (zh) 通用串列匯流排多主機端點反射器集線器
US6600739B1 (en) Method and apparatus for switching among a plurality of universal serial bus host devices
JP5597104B2 (ja) データ転送装置及びその制御方法
US8683085B1 (en) USB interface configurable for host or device mode
JP2004157604A (ja) Usb機器制御方法および装置
TWI778063B (zh) 通用串列匯流排之主機對主機自動切換
US10042800B2 (en) Active USB device and switching method for operating mode thereof
US20060041611A1 (en) Data transfer control system, electronic apparatus, and program
US20150253842A1 (en) Semiconductor device, and power control method for usbotg
JP2009176152A (ja) 情報処理装置
US7149906B2 (en) Communication device
KR20060114270A (ko) 마스터디바이스, 그 제어방법과 마스터디바이스를 갖는전자장치
JP5699756B2 (ja) 情報処理装置及び情報処理装置制御方法
JP2008065364A (ja) 拡張システム、アドインカード及び外部装置
US20120036294A1 (en) Computer integrated display integrated display and control method of the same
JP4954023B2 (ja) 画像形成装置および接続通知方法
US7506082B2 (en) Data transferring system using USB and method thereof
JP2005100326A (ja) 制御プログラムおよび制御方法
JP2001184296A (ja) Usb通信インターフェース、コンピュータ、ハブ、電子機器、電子機器における機能切換方法
JP2006227867A (ja) Usbデバイスおよびusbホスト
JP2012063851A (ja) 周辺装置制御回路およびそれを備えた情報処理装置
JP4775146B2 (ja) 画像出力装置および画像出力装置における消費電力削減方法
TWI447589B (zh) 電子支付終端與維護工具間經由usb連結之資料交換
JP6958110B2 (ja) 情報処理装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061113

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20080225