(57)【要約】【課題】プログラミングの労力を大幅に減少させる、組込み制御環境で入出力デバイスにアクセスするための方法を提供すること。【解決手段】組込み制御環境で、組込みマイクロプロセッサにリモート接続された入出力デバイスにアクセスする方法を提供する。前記入出力デバイスのリソースを前記マイクロプロセッサのアドレス空間またはメモリ・アドレス空間にマッピングすることによって、既存のデバイス・ドライバを再利用でき、タイム・トゥー・マーケットが大幅に改善される。
2004528656.tif 000002
【特許請求の範囲】
【請求項１】
組込み制御環境で入出力デバイスにアクセスする方法であって、前記入出力デバイスが、組込みマイクロプロセッサにリモート接続され、
前記入出力デバイスのリソースを、前記マイクロプロセッサのアドレス空間またはメモリ・アドレス空間にマッピングするステップ
を特徴とする方法。
【請求項２】
前記入出力デバイスが、汎用非同期送受信器（ＵＡＲＴ）、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）、Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ（ＪＴＡＧ）、およびＩＣ  Ｂｕｓ（Ｉ２Ｃ）からなる群から選択されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記マッピングするステップが、デバイス抽象化レイヤー（ＤＡＬ）によって実行されることを特徴とする、請求項１または２に記載の方法。
【請求項４】
前記ＤＡＬが、特別の組込み制御ハードウェアを介して実施されることを特徴とする、請求項３に記載の方法。
【請求項５】
前記ＤＡＬが、ソフトウェアを通じて実施されることを特徴とする、請求項３に記載の方法。
【請求項６】
前記特別の組込み制御ハードウェアが、リモート・デバイスへの接続を通じてリクエストおよび応答をリダイレクトすることを特徴とする、請求項４に記載の方法。
【請求項７】
前記ＤＡＬが、エクセプション・ハンドラによるプログラム・エクセプションを引き起こすために、前記マイクロプロセッサのメモリ管理ユニットを使用することを特徴とする、請求項５に記載の方法。
【請求項８】
前記エクセプション・ハンドラのコンテキストで実行されるシン・レイヤー・デバイスが提供されることを特徴とする、請求項７に記載の方法。
【請求項９】
エクセプションが、仮想リソース・ユニットへのアクセス時の命令実行中に生成されることを特徴とする、請求項７または８に記載の方法。
【請求項１０】
前記マイクロプロセッサの管理ユニットが、特権命令の実行時にエクセプションを生成するのに使用されることを特徴とする、請求項９に記載の方法。
【請求項１１】
組込み制御環境で入出力デバイスにアクセスするコンピュータ・システムであって、
前記入出力デバイスが、組込みマイクロプロセッサにリモート接続され、
前記システムが、前記入出力デバイスのリソースを前記マイクロプロセッサのアドレス空間またはメモリ・アドレス空間にマッピングする手段を含むこと
を特徴とするコンピュータ・システム。
【請求項１２】
前記手段が、デバイス抽象化レイヤー（ＤＡＬ）であることを特徴とする、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記ＤＡＬが、特別の組込み制御ハードウェアを介して実施されることを特徴とする、請求項１２に記載のコンピュータ・システム。
【請求項１４】
前記ＤＡＬが、ソフトウェアを通じて実施されることを特徴とする、請求項１２に記載のコンピュータ・システム。
【請求項１５】
前記ソフトウェアが、前記ＤＡＬのリソースがアクセスされるとすぐにプログラム・エクセプションを引き起こすように適合されていることを特徴とする、請求項１４に記載のコンピュータ・システム。
【請求項１６】
シン・レイヤーのデバイス抽象化が、前記プログラム・エクセプションを引き起こすために調整されて提供されることを特徴とする、請求項１５に記載のコンピュータ・システム。
【請求項１７】
コンピュータに、請求項１ないし１０のいずれか一項に記載の方法を実行させるコンピュータ可読プログラム手段を含む、コンピュータ使用可能媒体に記録されたコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、入出力機能へのアクセスに関する。具体的には、本発明は、マイクロコントローラにリモート接続された入出力機能へのアクセスに関する。さらに具体的には、本発明は、組込み制御環境でのそのようなリモート接続された入出力機能へのアクセスに関する。
【背景技術】
【０００２】
分散組込み制御環境では、入出力エンジンは、シリアル接続を通じて組込みコントローラにリモート接続されることが多い。通常、これらのデバイスへのアクセスは、シリアル接続制御ハードウェアを直接プログラミングすることによって容易になる。
【０００３】
図１に、組込みコントローラが、接続のリモート端に接続された一連の入出力デバイスを操作する必要がある環境が示される。
【０００４】
マイクロプロセッサは、最下位のレベルでは、Ｉｎｔｅｌ  ｘ８６などのアーキテクチャに関してその入出力アドレス空間を介するか、ＩＢＭ  ＰｏｗｅｒＰＣなどのアーキテクチャでそのメモリ・アドレス空間を介するかのいずれかで、入出力リソースにアクセスする。このレベルでハードウェアを制御するソフトウェア・エンティティは、通常はデバイス・ドライバと呼ばれる。より上位レベルのソフトウェア・アプリケーションに対しては、デバイス・ドライバは、デバイスの総称的な視点（ｇｅｎｅｒｉｃ  ｖｉｅｗ）を提供する。通常、ＵＮＩＸ（Ｒ）システムでは、デバイス・ドライバは、／ｄｅｖツリーの階層ファイルシステム名前空間で可視である。デバイス・ドライバへのアクセスは、下記のような通常のファイルシステムのセマンティクスおよびインターフェースを使用して促進される。
−  ｏｐｅｎ（）
−  ｃｌｏｓｅ（）
−  ｒｅａｄ（）
−  ｗｒｉｔｅ（）
−  ｉｏｃｔｌ（）
【０００５】
組み込み制御アプリケーションでは、入出力デバイスが、図２に示されたマイクロプロセッサ・バス・レベルで直接アドレッシングできるようにすべての入出力デバイスを接続することが、常に可能であるとは限らない。しばしば、入出力機能は、独立のＡＳＩＣで実装される。このＡＳＩＣは、ある接続ハードウェアを通じて組込みコントローラのマイクロプロセッサに接続することができる。その結果、入出力デバイスのリソースは、マイクロプロセッサの入出力アドレス空間またはメモリ・アドレス空間で直接可視ではない。マイクロプロセッサから可視であるものは、入出力ＡＳＩＣを組込みコントローラに接続する接続ハードウェアのリソースである。
【０００６】
このような状況で使用できる既存のデバイス・ドライバが存在しないので、入出力デバイスへのフル・ソフトウェア・パスが、カスタム・デバイス・インターフェース・ソフトウェアを通じて、容易となるようにする必要がある。このカスタム・デバイス・インターフェース・ソフトウェアが必要となることは、近時の組込み制御市場でしばしばキーとなっている、製品を市場に投入するまでの期間（タイム・トゥー・マーケット）の制限要因となってしまっている。
【０００７】
さらに、デバイス・ドライバ・レイヤーがカスタム実装されることによって、簡単には回復できないフィールドにソフトウェア・バグが出荷される確率が高まる。以前にバグが存在したアプリケーションの新しいバージョンをインターネットを介してダウンロードすることが比較的単純である通常のＰＣアプリケーションとは異なり、組込み制御アプリケーションでは、不完全なソフトウェアを置き換えることを簡単に行うことはできない。
【０００８】
組込み制御アプリケーションでは、従来、カスタム・オペレーティング・システム、カスタム・デバイス・ドライバ、およびカスタム・ハードウェアが使用されていたので、最近までこの問題は存在していなかった。そして、この問題は、比較的新しいものであるので、標準的なソリューションは用意されていない。しかし、組込み制御環境での標準化に対する新興の圧力（ｅｍｅｒｇｉｎｇ  ｐｕｓｈ）によって、新しいソリューションがより普及していっている。
【０００９】
つまり、この標準化に向かう主要な原動力は、Ｌｉｎｕｘ（Ｒ）およびオープンソース・ムーブメント全般である。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、本発明の目的は、プログラミングの労力を大幅に減少させる、組込み制御環境で入出力デバイスにアクセスするための方法を提供することである。
【課題を解決するための手段】
【００１１】
上記および他の目的および長所は、請求項１で開示される方法、すなわち、組込み制御環境で入出力デバイスにアクセスする方法であって、前記入出力デバイスが、組込みマイクロプロセッサにリモート接続され、前記入出力デバイスのリソースを、前記マイクロプロセッサのアドレス空間またはメモリ・アドレス空間にマッピングするステップを特徴とする方法、によって達成される。
【００１２】
有利な実施形態が、従属請求項で主張される。
【００１３】
本発明を、図面に関して以下に詳細に説明する。
【発明を実施するための最良の形態】
【００１４】
本発明によって、周知のロケーションにあり周知のレイアウトを有する、プロセッサの入出力アドレス空間またはメモリ・アドレス空間に、一般的な入出力デバイスについて使用可能である既存のデバイス・ドライバをマッピングしさえすれば、そのデバイス・ドライバの再利用が可能となる。既存のデバイス・ドライバ・コードの再利用によって、タイム・トゥー・マーケットが大幅に改善され、ソフトウェア・テストの労力も減少することとなる。
【００１５】
本発明は、既存のデバイス・ドライバが変更するのではなく、既存のデバイス・ドライバを架空のデバイス（ｆｉｃｔｉｔｉｏｕｓ  ｄｅｖｉｃｅ）に適合（ａｄａｐｔ）させることに言及しなければならない。
【００１６】
ほぼすべてのオペレーティング・システムおよびリアル・タイム制御プログラム（ＲＴＯＳ）のデバイス・ドライバが存在する、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ、汎用非同期送受信器）と呼ばれるシリアル・ポートのようなリモートではあるが周知のデバイス・タイプについて、デバイス抽象化レイヤー（Ｄｅｖｉｃｅ  Ａｂｓｔｒａｃｔｉｏｎ  Ｌａｙｅｒ、以下ではＤＡＬと呼称する）が設けられる。このＤＡＬによって、デバイスのリソースが、リモート・デバイスがローカルにマイクロプロセッサから使用可能であるかのように、マイクロプロセッサの入出力アドレス空間またはメモリ・アドレス空間にマッピングされる。
【００１７】
表１に、入出力アドレス空間またはメモリ・アドレス空間のいずれかのレジスタとしてマイクロプロセッサに可視であるＵＡＲＴリソースの例が示される。そうすることによって、膨大な量の複雑なコードを書きなおす必要なしに、既存のデバイス・ドライバ、およびそれを使用するすべての既存のアプリケーション・ソフトウェアを瞬時に再利用することが可能となる。
【００１８】
【表１】
2004528656.tif 000003
【００１９】
ＤＡＬの実装は、下記の形のいずれかで行われる。
１．デバイス抽象化を維持するために、リクエストおよび応答を接続を通じてリモート・デバイスにリダイレクトする制御ハードウェアを組み込む。
２．ＤＡＬのリソースがアクセスされるとすぐにプログラム・エクセプション（例外）を引き起こすマイクロプロセッサのメモリ管理ユニットを使用する。それは、シン・レイヤー（Ｔｈｉｎ  Ｌａｙｅｒ）のデバイス抽象化を提供することによって行われ、エクセプション（例外）ハンドラのコンテキストで実行する。
【００２０】
ハードウェア・ソリューションに関して、図３に、ＡＳＩＣデバイスを有するマイクロコントローラ２または同等のプロセッサ・コアが、システムバス４によって、状態マシンと組み合わされたローカル・レジスタ・セット８を通じて接続ロジック６にどのようにアクセスするかが示されている。接続ロジック６は、たとえば接続１６を介して適当な適切なプロトコルを使用することによって、リモート・デバイスの各接続ロジック１０と通信することができる。接続ロジック１０は、第２の状態マシンを含むリモート・レジスタ・セット１２に接続され、リモート・レジスタ・セット１２は、バス１８を介してリモート・デバイス１４に接続される。接続ロジック６を、２つのステーションＡとＢの間の任意の種類のデータ交換（データ接続）とすることができることに言及しなければならない。これは、単純なシリアル・インターフェース、ＬＡＮ、プライベート・ネットワーク、またはグローバル・ネットワークなどによって実現することができるが、これらに制限はされない。
【００２１】
マイクロコントローラ２は、ローカル・レジスタ・セット８に書き込むことによって、リモート・デバイス１４への、たとえば読取動作または書込動作を開始させる。これによって、８の状態マシンが活動化され、接続ロジック６へのデータの転送が制御される。接続ロジック・ユニット６および１０によって、８でポストされたリクエストがレジスタ・セット１２に転送され、その後、各状態マシンが活動化されて、１４でリクエストされた動作、すなわちリモート・デバイス１４へのデータの書込または読取が実行される。
【００２２】
動作の完了の後に、状態マシン１２によって、応答の接続１６を介する送出およびユニット８のレジスタへの保管が開始される。この処理によって、マイクロ・コントローラへの通知、たとえば割込みも引き起こされる場合がある。ユニット２、６、および８は、すべての機能が統合される１つの単独のＡＳＩＣデバイスとして、またはディスクリート・モジュールとして相互接続される標準のベンダ・コンポーネントの使用によって、設計することができる。
【００２３】
同一の手法が、ユニット１０、１２、および１４について有効である。接続ハードウェア６、１０、１２、および１６は、ユニット２と１４の間の物理的な距離を克服するのに必要であるが、ユニット８は、ＤＡＬより下のソフトウェア・レイヤーに部分的にまたは完全に変換することができる。これによって、ハードウェアとソフトウェアの間のコスト・トレードオフが可能になる。
【００２４】
上で言及した第１のソリューションは、ハードウェア設計労力を与えることができ、性能要件からそれが指示される、比較的単純な入出力コントローラに使用される。
【００２５】
第２のソリューションは、ソフトウェア・ソリューションであり、ハードウェア・コストを減少させることはできないが、エクセプション・ハンドラ・コンテキストに入って戻ってくるオーバーヘッドを受容可能である場合に使用される。このソリューションを、以下に詳細に説明する。
【００２６】
図４は、本発明によるデバイス抽象化レイヤー（ＤＡＬ）を有するソフトウェア構造を概略的に示す図である。
【００２７】
ＤＡＬの実施形態によって使用される一般的な機構は、物理的に存在しない仮想リソースへのアクセスの際の命令実行中にエクセプションを生成する手段である。
【００２８】
下記の２つの方法が、ＤＡＬのトリガに使用される。
１）マイクロプロセッサの管理ユニットの機能を使用して、実際のメモリがマッピングされないメモリ・ロケーションへのアクセスの際にエクセプションを生成すること。
２）マイクロプロセッサのエクセプション・ユニットの機能を使用して、特権命令の実行時にエクセプションを生成すること。
【００２９】
ＤＡＬ動作の下記の説明は、第１の方法に基づくものであるが、第２の方法にも適用可能である。
【００３０】
デバイス抽象化レイヤー「ＤＡＬ」によって、リモート接続されたデバイスの仮想化が容易になり、まるでそのデバイスがマイクロプロセッサ・バスにローカルに接続されているかのようにデバイス・ドライバ・ソフトウェアに明らかになる。
【００３１】
図５に示されたイベントの下記のシーケンスによって、本明細書に記載のソフトウェアソリューションによるＤＡＬの動作を説明し、それがシステムの他の部分とどのように相互作用するかを明らかにされる。
【００３２】
定常状態で動作している最中のある時点で、仮想デバイスのデバイス・ドライバによって、リモート・デバイスに入出力動作の発行が望まれる場合がある。デバイス・ドライバによって、マイクロプロセッサのメモリ・アドレス範囲内の適当なメモリ領域に書き込む（ステップ１）。
【００３３】
マイクロプロセッサのメモリ管理ユニットは、関連するアドレス範囲への読取／書込アクセスによってページフォルト・エクセプション（Ｐａｇｅ−Ｆａｕｌｔ  Ｅｘｃｅｐｔｉｏｎ）が引き起こされるようにプログラムされている（ステップ２）。
【００３４】
その後、ページフォルト・エクセプション・ハンドラが呼び出され、そのエクセプションをＤＡＬによって処理する必要があるか、またはそのエクセプションが通常のページ・フォルトであるかのどちらであるかが判断される。
【００３５】
エクセプション・ハンドラからＤＡＬに制御が渡される（ステップ３）。エクセプション・ハンドラによって、デバイス・ドライバによってデバイスに対して実行されることが実際に求められた動作をＤＡＬによってデコードするのに十分な情報が供給される。
【００３６】
ＤＡＬは、それに応じて内部状態マシンを更新し、必要に応じて接続ドライバを介して実際のデバイスに入出力開始動作を発行する（ステップ４）。
【００３７】
入出力動作がリモート・デバイスで完了した場合、入出力完了割込みの信号が、マイクロプロセッサに送信される（ステップ５）。
【００３８】
ここで、割込みハンドラによって、割込みソースがデコードされ、制御が、接続ドライバの入出力完了ハンドラに渡される（ステップ６）。
【００３９】
入出力完了ハンドラによって、イベントがデコードされ、ＤＡＬ関連イベントがＤＡＬに渡される（ステップ７）。
【００４０】
ＤＡＬによって、接続ドライバを介してデバイスから入出力情報が検索され、ＤＡＬの内部有限状態マシンのテーブルが更新され、入出力完了イベントの信号がデバイス・ドライバに送信される（ステップ８）。
【００４１】
デバイス・ドライバによって、入出力動作の状況を得るために、デバイスのメモリ・マップに対する読取／書込動作が発行される。これらのメモリ・ロケーションへのアクセスによって、やはり、ページフォルト・エクセプションが引き起こされる。このエクセプションが、ＤＡＬに供給される。ＤＡＬは、既に入出力デバイスからの関連情報を知っているので、割り込まれたメモリ読取／書込動作を完了することによって、その情報をデバイス・ドライバから使用可能にすることができる。
【図面の簡単な説明】
【００４２】
【図１】現行技術による、マイクロプロセッサにリモート接続される入出力カードを概略的に示す図である。
【図２】マイクロプロセッサ・バスに接続された入出力を概略的に示す図である。
【図３】本発明によるハードウェア・ソリューションを概略的に示す図である。
【図４】本発明によるデバイス抽象化レイヤー（ＤＡＬ）を有するソフトウェア構造を概略的に示す図である。
【図５】本発明によるＤＡＬ動作を記述するイベントのシーケンスを概略的に示す図である。
【図１】
2004528656.tif 000004
【図２】
2004528656.tif 000005
【図３】
2004528656.tif 000006
【図４】
2004528656.tif 000007
【図５】
2004528656.tif 000008
【国際公開パンフレット】
2004528656.tif 000009
2004528656.tif 000010
2004528656.tif 000011
2004528656.tif 000012
2004528656.tif 000013
2004528656.tif 000014
2004528656.tif 000015
2004528656.tif 000016
2004528656.tif 000017
2004528656.tif 000018
2004528656.tif 000019
2004528656.tif 000020
2004528656.tif 000021
2004528656.tif 000022
2004528656.tif 000023
2004528656.tif 000024
2004528656.tif 000025
2004528656.tif 000026
【国際公開パンフレット（コレクトバージョン）】
2004528656.tif 000027
2004528656.tif 000028
【国際調査報告】
2004528656.tif 000029
2004528656.tif 000030