(57)【特許請求の範囲】
【請求項１】
高レベルおよび低レベルからなる保護されたオペレーティングシステムを有するコンピュータにおけるシリアル通信データを処理するためのバーチャル装置用ドライバであって、
前記コンピュータに連結可能な少なくとも１つの通信ポートを識別するポート識別器と、
前記少なくとも１つの通信ポートに対するタイムスタンプ状態を決定するためのタイムスタンプフラグと、
前記少なくとも１つの通信ポートを介して少なくとも１つのキャラクタを読み取るためのキャラクタリーダと、
前記高レベルで受信した少なくとも１つのキャラクタを記憶するための受け入れキューと、
前記高レベル内で受信した少なくとも１つのキャラクタにタイムスタンプ値を付加するためのリアルタイムクロックと、
前記少なくとも1つのキャラクタに対する所定の最大受入れ可能な時間間隔と、
前記少なくとも１つのキャラクタの有効性を決定するための有効モジュールと、
を備えていることを特徴とするバーチャル装置用ドライバ。
【請求項２】
タイムスタンプフラグは、コンピュータのシステムレジストリー内に記憶されることを特徴とする請求項１記載のバーチャル装置用ドライバ。
【請求項３】
有効モジュールは、受信したキャラクタが有効であるかどうかを決定するために、タイムスタンプ値と所定の最大受入れ可能な時間間隔を比較することを特徴する請求項１記載のバーチャル装置用ドライバ。
【請求項４】
リアルタイムクロックは、少なくとも０．８マイクロ秒に等しいクロック単位の周波数により分割されたものに等しいタイミング精度を有することを特徴とする請求項１記載のバーチャル装置用ドライバ。
【請求項５】
少なくとも１つの通信ポートは、自動車構成部品に連結されることを特徴とする請求項１記載のバーチャル装置用ドライバ。
【請求項６】
低レベルは、リング３であり、高レベルは、リング０であることを特徴とする請求項１記載の温度バーチャル装置用ドライバ。
【請求項７】
高レベルおよび低レベルを有するコンピュータの保護されたオペレーティングシステムにおけるシリアル通信データを処理するための方法であって、
前記コンピュータの少なくとも１つの通信ポートを識別し、
前記少なくとも１つの通信ポートに対するタイムスタンプ状態を決定し、
前記少なくとも１つの通信ポートを介して少なくとも１つのキャラクタを読み取り、
この受信した少なくとも１つのキャラクタを記憶し、
前記高レベルにおいて、前記受信した少なくとも１つのキャラクタにタイムスタンプ値を付加し、
前記受信したキャラクタが有効であるかどうかを判定するために、前記タイムスタンプ値と所定の標準キャラクタ伝送時間と比較する、各ステップを含むことを特徴とする方法。
【請求項８】
タイムスタンプ状態は、前記コンピュータに配置したメモリに記憶されたタイムスタンプフラグによって決定されることを特徴とする請求項７記載の方法。
【請求項９】
リアルタイムクロックは、０．８マイクロ秒に等しいクロック単位の周波数により分割されたものに等しいタイミング精度を有することを特徴とする請求項７記載の方法。
【請求項１０】
少なくとも１つの通信ポートは、自動車構成部品に連結されることを特徴とする請求項７記載の方法。
【請求項１１】
低レベルは、リング３であり、高レベルは、リング０であることを特徴とする請求項７記載の方法。
【請求項１２】
高レベルおよび低レベルからなる保護されたオペレーティングシステムを有するコンピュータにおけるシリアル通信データを処理するためのバーチャル装置用ドライバであって、
前記コンピュータに連結可能でかつ自動車構成部品に連結されている少なくとも１つの通信ポートを識別するポート識別器と、
前記少なくとも１つの通信ポートに対するタイムスタンプ状態を決定するためのタイムスタンプフラグと、
前記少なくとも１つの通信ポートを介して少なくとも１つのキャラクタを読み取るためのキャラクタリーダと、
前記高レベルで受信した少なくとも１つのキャラクタを記憶するための受け入れキューと、
前記高レベル内で受信した少なくとも１つのキャラクタにタイムスタンプ値を付加するためのリアルタイムクロックと、
前記少なくとも1つのキャラクタに対する所定の最大受入れ可能な時間間隔と、
前記少なくとも１つのキャラクタの有効性を判定するための有効モジュールと、
を備えていることを特徴とするバーチャル装置用ドライバ。
【請求項１３】
タイムスタンプフラグは、コンピュータのシステムレジストリー内に記憶されることを特徴とする請求項１２記載のバーチャル装置用ドライバ。
【請求項１４】
有効モジュールは、受信したキャラクタが有効であるかどうかを判定するために、タイムスタンプ値と所定の最大受入れ可能な時間間隔を比較することを特徴する請求項１２記載のバーチャル装置用ドライバ。
【請求項１５】
リアルタイムクロックは、少なくとも０．８マイクロ秒に等しいクロック単位の周波数により分割されたものに等しいタイミング精度を有することを特徴とする請求項１２記載のバーチャル装置用ドライバ。
【請求項１６】
低レベルは、リング３であり、高レベルは、リング０であることを特徴とする請求項１２記載の温度バーチャル装置用ドライバ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的に保護されたオペレーティングシステムにおけるシリアル通信に関する。さらに特定すると、本発明は、ウインドウズ(登録商標）形式のオペレーティングシステム仕様のシリアル通信ドライバで、特定されたアーキテクチャレベル(リング‐０）で受信されたデータの各キャラクタをタイムスタンプする装置に関する。
【０００２】
【従来の技術】
バーチャル装置は、ハードウエア装置またはこれにインストールされたソフトウエア等のシステムリソースを取り扱うために実行可能な装置であり、同時に、１つ以上のアプリケーションをシステムリソースに使用することができる。
【０００３】
多くのオペレーティングシステムは、マイクロソフト社のウインドウズの下に販売されており、ウインドウズ９５／９８／ＮＴ／2000等も含めて、オペレーティングシステムのもとで実行されるアプリケーションに対してバーチャル装置を用いてマルチタスクを行なうことができる。
【０００４】
このバーチャル装置は、オペレーティングシステムと連携して作動し、他のアプリケーションの実行を妨げることなく、所定のアプリケーションに対して処理を中断したり、またＩ／Ｏ動作を実行する。バーチャル装置は、バーチャル装置ドライバ（ＶｘＤｓ）を必要とする。バーチャル装置ドライバはオペレーティングシステムを起動して、ハードウエアに接続されたアブストラクトインターフェースを用いてアプリケーションを与える。装置と相互に作用する標準化方法を提供することにより、オペレーティングシステムは、ローレベルのハードウエアからアプリケーションプログラマーを保護する。これは、アプリケーションの開発を容易にし、より有益なアプリケーション及びより良いオペレーティングシステムの土台を導く。
【０００５】
ウインドウズのオペレーティングシステム(ＯＳとも云う）のもとで、例えば、バーチャル装置ドライバは、アプリケーションコードがＰＣハードウエアと相互に作用できる環境を実現する責任がある。ウインドウズのオペレーティングシステムを使用するユーザが、多重のアプリケーションを同時に実行できるようにするために、システムの設計者は、バーチャルマシンを用いた。バーチャルマシンは、アプリケーションを実行する個別の環境がある。それは、アプリケーションのアドレス空間、レジスタ状態、スタック、ローカルディスクリプターテーブル(lacal descriptor table)、および実行優先度を有する。
【０００６】
図１を参照すると、ウインドウズのオペレーティングシステム等の保護されたオペレーティングシステム１０の一般的なダイアグラムが示されている。現代のマイクロプロセッサは、信頼されたシステムコード及びアプリケーションコードを各々実行のための別個の複数の作業モードを有する。
【０００７】
保護されたオペレーティングシステム１０は、複数の階層で構成されている。ソフトウエアアプリケーション１２は、リング‐３で実行され、リング‐１およびリング‐２は、一般的に使用されない。装置ドライバ(それらは、拡張子「.DRV 」を有する。−図示略）として参照されるウインドウズの構成要素は、ポートドライバＶｘＤ１４等のバーチャル装置ドライバＶｘＤｓとは異なる。装置ドライバは、リング‐３で実行される１６ビット構成部品である。
【０００８】
ＶｘＤｓは、バーチャルマシンマネージャー(ＶＭＭ‐図示略）の一部としてロードされ、保護されたオペレーティングシステム１０の最低レベル(リング‐０）を構成する。このＶＭＭは、特殊のＶｘＤであり、システムリソースの調整使用における実行部としての役割を果たすものである。ＶＭＭの第１の仕事は、バーチャルマシンを作り出し、スケジュールを与え、そして無効にすることである。更に、ＶＭＭは、ソフトウエアアプリケーション１２と自動車構成部品２０等のハードウエアとの間に他のＶｘＤｓを介在させることができる働きを備えている。
【０００９】
単一プログラム環境に対して原理的に書き込めるＤＯＳアプリケーションは、インターラプトコントローラ及びＤＭＡコントローラ等の敏感なハードウエアリソースを直接アクセスするように試みる。ソフトウエアアプリケーション１２に従って、このようなアプリケーションを多重に実行するために、保護されたオペレーティングシステム１０は、各バーチャルマシンに対するバーチャル装置の道具となるに違いない。
【００１０】
ＶｘＤの仕事は、各顧客のバーチャルマシンに対するバーチャル装置の状態を管理することであり、顧客のバーチャルマシンは、対応する物理的装置にアクセスすることが必要である。ＶｘＤｓは、下層にある物理的階層(リング‐０）に透過的に自由にアクセスすることにより、顧客アプリケーション用のバーチャルマシン環境を集合的に与える。これは、バーチャライゼーション(virtualization)と呼ばれる。
【００１１】
ＶｘＤｓは、バーチャライゼーションの目的で原理的に設計されてきたが、これらの使用は、付加的な特徴を包含するように発展してきた。ますます、システム設計者は、最高のパーフォーマンスと微細な制御のためにＶｘＤｓを選択する。例えば、低位の割り込み待ち時間を要求する装置をサポートするために、ＶｘＤが、しばしば重要となる。多くの場合、設計者は、ＶｘＤにおける全ての実際のハードウエアのインターラクションを取り扱い、ＶｘＤは、単純化されたアプリケーションプログラミングインターフェース（ＡＰＩ）をアプリケーションに提示する。
【００１２】
バーチャル通信ドライバ（ＶＣＯＭＭ）１６は、シリアル及びパラレル通信用の現在のウインドウズのアーキテクチャの中心に位置している。図１は、また、ソフトウエアアプリケーション１２用の保護されたオペレーティングシステム１０における他の構成要素とＶＣＯＭＭ１６の間の相互関係を示している。アプリケーションプログラムインターフェース（ＡＰＩ）は、従来インターフェースと呼ばれており、これにより、アプリケーションプログラムがオペレーティングシステム及び他のサービスをアクセスする。
【００１３】
ＡＰＩは、ソースコードレベル(リング‐０）で定められ、かつコードポータビリティー(code portability)を確実にするために、アプリケーションとカーネル(または特別のユーティリティ）間の抽出レベルを与える。ＶＣＯＭＭ１６は、ソフトウエアアプリケーション１２からのシリアルＩ／Ｏの要求を与え、またウインドウズのオペレーティングシステム内のシリアル.vxd等のポートドライバＶｘＤ１４を呼び出すことによってエントリーポイントのＶｘＤ呼び出し器からのシリアルＩ／Ｏの要求を与える。
【００１４】
シリアル通信ポートを介して通信するとき、多くのアプリケーションでは特別のタイミング精度が要求される。例えば、自動車産業において、コンピュータ１８は、しばしば自動車構成部品２０に接続されて、その作動状態を監視する。自動車構成部品における状態変化を適切に監視するために、あるタイミング解像度が必要である。例えば、アメリカ合衆国自動車技術会（ＳＡＥ）は、シリアル通信バス上で完全なパケットを見つけるために、１ミリ秒（10-3秒）のタイミング解像度を必要とするＳＡＥＪ170 8およびＪ1587を規定している。
【００１５】
ウインドウズのオペレーティングシステムによって与えられるタイミング解像度は、約５５ミリ秒である。それゆえ、リアルタイムで検出するために、各キャラクタは、シリアル通信ドライバによって与えられた内部バッファ内に受け入れられ、高精度のタイムスタンプがリング‐０レベルで受信された各キャラクタに付与されなければならない。マイクロソフトネットワークは、標準ウインドウズのオペレーティングシステム構成要素の１つとしてシリアル.vxdを供給しているが、このシリアルポートドライバは、受信した各キャラクタ用のタイムスタンプを備えていない。それゆえ、リアルタイムでのバーチャルシリアル装置ドライバが、この目的のために開発されなければならない。
【００１６】
【発明が解決しようとする課題】
このような事情に鑑みて、本発明は、リアルタイムクロックを用いて、リング‐０レベルで受信された各キャラクタにタイムスタンプを付与する、リアルタイムバーチャル装置用ドライバとそのデータ処理方法を提供することを目的としている。
【００１７】
【課題を解決するための手段】
上記目的及び他の目的を達成するために、本発明は各請求項に記載の構成を備えている。本発明は、リアルタイムクロックを用いて、リング‐０レベルで受信された各キャラクタにタイムスタンプを付与する、リアルタイムバーチャルシリアル装置ドライバである。特に、本発明は、バーチャルタイマードライバ（ＶＴＤ）によって与えられたＶＴＤ−ゲット−リアルタイム  サービスを用いて、マイクロ秒でのタイミング精度を達成する。
【００１８】
保護されたオペレーティングシステムは、オペレーティングシステムが開始されたとき、どんなハードウエアが取り付けられ、どんなシステムオプションが選択され、どのようにコンピュータのメモリをセットアップし、どんなアプリケーションプログラムが提供されるか等の情報を保有するための単一の場所であるシステムレジストリーを含む。
【００１９】
本発明は、ポートドライバＶｘＤがロードされているときシステムレジストリーからのコンフィギュレーション（形状）設定を読み取る。全てのシリアル通信ポートはポートドライバＶｘＤを分配できる。Ｊ1587ネットワークは、通信標準に付随するシリアル通信ネットワークである。以下で詳述するＪ1587およびＪ1708通信標準」は、ＳＡＥにより規定されている。しかし、タイムスタンプは、Ｊ1 587ネットワークが接続されるシリアル通信ポートによって受信されたキャラクタに付随するのみである。
【００２０】
他のポートを正常に機能させるために、ポートドライバＶｘＤの外側からの指示により、受信されたキャラクタをタイムスタンプするためにポートドライバＶｘＤに信号を送る必要がある。この要求は、システムレジストリー２４で規定されるタイムスタンプフラグを用いて行なわれる。
【００２１】
次に図４において、選択されたシリアル通信ポートを形成する論理フローを表す流れ図が示されている。先ず、ソフトウエアアプリケーションまたはユーザ(図示略）は、適当なシリアル通信ポートを選択する。ポート識別器２５は、ポートが選択されたポートドライバＶｘＤを指定する。初期化時に、ポートドライバＶｘＤは、システムレジストリーからのタイムスタンプ値を含む初期化されたポートの形状データを読み取る。このポートドライバＶｘＤは、タイムスタンプ操作が本発明に従って適当であるかどうかを示す変数としてタイムスタンプフラグを含んでいる。
【００２２】
システムレジストリー内のタイムスタンプ値が１である場合、ポートドライバＶｘＤのタイムスタンプフラグは１にセットされ、タイムスタンプが受信した各キャラクタに付随することを示す。さもなければ、タイムスタンプフラグが０にセットされ、タイムスタンプが受信した各キャラクタに付随しないことを示し、選択されたポートが正常に機能することができる。
【００２３】
本発明は、従来の保護されたオペレーティングシステム仕様のシリアル通信に固有のタイミングを導くデータ流れのエラーを相当量減少させることができる。本発明の特徴は、以下の詳細な説明および図面から明らかとなろう。
【００２４】
【発明の実施の形態】
本発明の実施形態を図面に基づいて説明する。本発明のバーチャル装置用ドライバ１４は、コンピュータ１８に連結可能な少なくとも１つの通信ポートを識別するポート識別器２５と、少なくとも１つの通信ポートに対するタイムスタンプ状態を決定するためのタイムスタンプフラグと、少なくとも１つの通信ポートを介して少なくとも１つのキャラクタを読み取るためのキャラクタリーダ２３と、高レベルで受信した少なくとも１つのキャラクタを記憶するための受け入れキュー２１と、高レベル内で受信した少なくとも１つのキャラクタにタイムスタンプ値を付加するためのリアルタイムクロック２２と、少なくとも1つのキャラクタに対する所定の最大受入れ可能な時間間隔と、少なくとも１つのキャラクタの有効性を決定するための有効モジュールとを備えている。
【００２５】
またリアル通信データを処理するための方法は、次のステップを有している。コンピュータの少なくとも１つの通信ポートを識別し、少なくとも１つの通信ポートに対するタイムスタンプ状態を決定し、少なくとも１つの通信ポートを介して少なくとも１つのキャラクタを読み取り、この受信した少なくとも１つのキャラクタを記憶し、高レベルにおいて、前記受信した少なくとも１つのキャラクタにタイムスタンプ値を付加し、受信したキャラクタが有効であるかどうかを判定するために、前記タイムスタンプ値と所定の標準キャラクタ伝送時間と比較する。
【００２６】
図１を参照すると、複数のシリアルポートが、自動車構成部品２０等の非同期装置をコンピュータ１８に物理的に接続するのに使用される。シリアルポートは、自動車構成部品２０にキャラクタデータを送るために単一のピン、即ちワイヤのみを必要とする。これを達成するために，データは、パラレル形式(コンピュータで送られる）からシーケンシャル形式に変換される。ここで、図２に示すように、データは、ビット形式で一列に順次並んでいる。このデータは、最初に、自動車構成部品２０に最小のビット(即ち、ゼロビット）が伝送される。自動車構成部品２０に受信されると、データは、再び、パラレル形式に変換される。
【００２７】
単一のキャラクタのシリアル伝送は、単純かつ確実である。しかし、多数のキャラクタが図２に示すように一列で伝送される時、複雑な問題が起こる。受信システムは、１つのキャラクタの終了と他のキャラクタの開始がどこなのかわからない。
【００２８】
この問題を解決するために、通信リンクの両端を同期化または時限化しなければならない。非同期通信は、伝送されたデータをスタートビットとストップビットにエンコードし、各キャラクタの開始と終了を特定する方法である。スタートビットは、１ワードのデータがまさに送られ、そして、受信器内のクロックを送信器内のクロックに同期化させるように受信器を変更するのに使用される。
【００２９】
スタートビットの後で、ワードデータの個々のビットが伝送される。伝送における各ビットは、他のビットの全てと同一の時間で正確に伝送される。受信器は、各ビットに割り当てられた時間間隔のほぼ中間でワイヤを調べて、ビットが１または０であるかを決定する。たとえば、各ビットを伝送するのに２秒かかる場合に、その時、受信器は、２秒待って、次のビットの値を順次調べる。
【００３０】
送り手は、受信器がビットの値をいつ調べたかがわからない。送り手は、クロックによってワードの次のビットがいつ送り始めたかを知るのみである。ワードデータの全体が送られた時、送信器がパリティービットを発生するように付加することもできる。このパリティービットは、受信器によって単純なエラーをチェックできるように使用することもできる。最後に、送信器は、少なくとも１つのストップビットを送る。
【００３１】
このような付加的ビットは、タイミングおよび同期化を与え、完全なキャラクタが送信または受信した時、各キャラクタが、スタートビットで開始するか、またはストップビットで終了するかのタイミングを示す。
【００３２】
非同期通信は、送り手が受信器にクロック信号を送ることなく、データを伝送することができる。送信器と受信器が前もってタイミングパラメータを一致させる代わりに、特別のビットを各ワードに付け加えて、送信及び受信ユニットを同期化するのに用いる。これらのタイミングパラメータは、ボーレート(baud rate)として知られる固定のデータ伝送速度を含む。このボーレートは、１秒当りの伝送されたビットの数である。送信器及び受信器は、それぞれ内部システムクロックに基づく選択されたボーレートでそれぞれの信号を発生する。この送信器と受信器のボーレートは、約3.0％だけ異なり、最大で約5.0％の範囲で異なることが可能である。
【００３３】
保護されたオペレーティングシステムのアーキテクチャの記述
図1をより詳細に見ると、ウインドウズ用オペレーティングシステム等の保護されたオペレーティングシステム（ＯＳ）１０が示されている。このＯＳ１０の特徴の１つは、所定のプログラムが特定レベルの保護のもとに、または特別のレベルで作動することである。このマイクロプロセッサは、特別レベルの数とそれらの間の相違を規定し、かつ最小から最大までの特別レベルをランク付けする。
【００３４】
8086(主としてＤＯＳアプリケーションで実行される）のような初期のプロセッサは、１つの特別レベルしか備えていなかった。現代のプロセッサは、一般的に、管理者モードと使用者モードと呼ばれる２つのレベルを可能にする。しかし、80ｘ86および最近のコンピュータ用プロセッサは、４つの特別レベルを可能にし、インテルでは、これをリングと称している。リング０は、最も高位のレベルであり、リング３は、最も低位のレベルである。保護されたオペレーティングシステム１０は，リング０を管理者モードに割り当て、リング３を使用者モードに割り当てている。リング２(図示略）は、特別の使用者モードとして使用され、本発明の目的のために、あたかもリング３を一般的に使用することができる。リング１(図示略）は、保護されたオペレーティングシステム１０では使用されない。
【００３５】
それゆえ、ソフトウエアコードの特定部分が、リング０またはリング3のいずれかで実行される。例えば、ポートドライバＶｘＤｔ等のバーチャル装置ドライバ（ＶｘＤｓ）は、リング０で実行され、全てのソフトウエアアプリケーション１２は、リング３で実行される。プログラム実行のためのルールは、２つのリング間で大いに変化する。２つのリング間の第１の相違点は、特定リングにおけるコードが実行可能となる命令の形式である。それは、これらのリングが特別のレベルと称されるからであり、リング０で実行するコードは、リング３で実行されるコードよりもより高位のレベルあり、それゆえ、より多くの命令形式を実行することができる。例えば、バーチャル装置ドライバ（ＶｘＤ）の形式で通常存在するリング０のコードは、Ｉ／Ｏ命令を実行でき、ハードウエアインターラプト２６を受信でき、さらに、全てのシステムメモリにアクセスすることができる。
【００３６】
ハードウエアインターラプトの記述
全ての産業標準アーキテクチャ(ＩＳＡ、例えば、ＩＢＭ  ＰＣ／ＡＴと両立できる）のコンピュータシステムは，リング０レベルでインターラプト要求ゼロ(ＩＲＱ０）18 .2Ｈｚでハードウエアインターラプト２６を発生する。インターラプトは、通常処理を中断し、そして、インターラプトハンドラー(interrupt handler)のルーチンを介して一時的に制御の流れを変える、非同期イベントである。インターラプトは、ハードウエア（Ｉ／Ｏ、タイマー、マシンクロック）とソフトウエア(管理者、システムコールまたはトラップ命令）の両方によって引き起こされる。
【００３７】
ハードウエアインターラプト２６は、インターラプト８（ＩＮＴ８）にマップ付けされ、それに関連付けることを望むソフトウエアアプリケーション１２によってインターセプトされる。18.2Ｈｚ(Ｈｚ＝１サイクル／秒）でハードウエアインターラプト２６は、５５ミリ秒(１ミリ秒＝10-3秒または103マイクロ秒；18.2Ｈｚ＝18.2秒＝５５×10-3秒）毎に１回起こる。標準ウインドウズ用オペレーティングシステムのシリアル通信ドライバ(シリアル.ｖｘｄ）は、たとえば、ＩＮＴ８をフックで留め、ゲットティックカウント(GetTickCount)機能によって復帰した値を維持する。このゲットティックカウントＡＰＩは、ウインドウズオペレーティングシステムが開始した時からずっとミリ秒の単位で応答する。しかし、このＡＰＩの精度は、わずかに５５ミリ秒で、18.2Ｈｚで（リアルモードのシステムクロックのように）毎秒18.2回更新される。それゆえ、これは非常に粗い測定にのみ使用されるべきである。
【００３８】
多くのアプリケーションプは、５５ミリ秒よりも正確な微小のタイミングを必要とし、５５ミリ秒のタイミング精度では、データ流れにエラーを伴うタイミングを作り出す。アメリカ合衆国自動車技術会（ＳＡＥ）は、例えば、少なくとも２つの標準規格（Ｊ158 7とＪ1708）を発展させて、コンピュータ１８と自動車構成部品２０の間のシリアル通信のタイミング精度を規定している。この２つのＪ1587とＪ1708標準規格は、１ミリ秒のタイミング精度を必要とする。通常の保護されたオペレーティングシステム、例えばウインドウズシステムにおけるアプリケーションレベル（リング３）からのタイミング解像度は、ＳＡＥ標準規格のタイミング精度条件に合わない。
【００３９】
本発明は、リング０レベルで受け入れキュー２１に受信されて配置された各キャラクタ用のタイムスタンプを付加することによって所望のタイミング精度を達成する。
【００４０】
バーチャルタイマードライバ（ＶＴＤ）は、リアルタイムクロック２２であり、これは、保護されたオペレーティングシステム１０が1.196  ＭＨｚクロック（１ＭＨｚ＝106Ｈｚ）に基づいて実行することを示す。この値は、ＡＸを0100ｈにセットすることによりＶＴＤを呼び出すことによって得られる。この時間値は、ＥＤＸ：ＥＡＸに戻される。この復帰時間は、正確に０．８マイクロ秒（１マイクロ秒＝10-6秒、即ち、10-3ミリ秒；（1.196ＭＨｚ）-1＝0.8×10-6秒）である。
【００４１】
ＶＴＤゲットリアルタイム（）（図示略）は、高精度のタイムスタンプを得るために呼び出され、このタイムスタンプは、リング０でハードウエアのインタラプトハンドラー内に受け入れられた各キャラクタに付与される。１バイトのリアルデータに加えて、リードスレッドは、各キャラクタに対して８バイトのタイムスタンプを読み込む。しかし、ＶＴＤゲットリアルタイム（）、例えば、約0.8マイクロ秒に等しいタイミング精度を有するリアルタイムクロックが、ＶＴＤゲットリアルタイムサービスの代わりに用いることができる。
【００４２】
ＳＡＥ標準規格の記述
ＳＡＥの分科会である上級移動体（陸海空）インターナショナルのトラックおよびバス・データフォーマット診断小委員会では、トラック及びバス用電子部品間で伝送される電子信号および情報のフォーマットに関する標準規格を広めてきた。この標準規格は、メッセージと、データ通信リンク上のモジュールに対して一般値を有するデータのフォーマットを規定している。メッセージの中には、フィールドの説明、サイズ、寸法、内部データ表示、及び位置を含んでいる。さらに、この標準規格は、メッセージが伝送される周波数とその環境のためのガイドラインを含む。
【００４３】
この標準規格の目的は、重積載車両の利用に用いられるマイクロプロセッサ間で通信されるメッセージとデータのフォーマットを定めることである。特に、ＳＡＥは、ＳＡＥＪ1708及びＪ1587で使用される改定標準規格を有する。
【００４４】
ＳＡＥのsurface Vehicle Recommended Practice(SAE1587）の写しを、ペンシルバニア15 096−0001  ワォレンデイル  コモンウエルス  ドライブ  400にある上記ＳＡＥの分科会から得ることができる。
【００４５】
さらに、ＳＡＥは、マイクロコンピュータを含むモジュール間での双方向、シリアル通信を実現するための推奨プラクティスを定める。また、ＳＡＥは、第１にハードウエアと基本的なソフトウエアの相互に関係する、インターフェース要求、システムプロトコル、およびメッセージフォーマット等に関係するシリアルアルリンクのそれぞれのパラメータを定める。
【００４６】
ＳＡＥで規定されたビット時間は、通信リンク間を通る情報の１ユニットにかかる持続時間、即ち時間間隔である。このＳＡＥは、ビット時間が104.17マイクロ秒±0.5％（±500ナノ秒）になることを決めている。これは、１秒当り9600ビットのボーレートに等しい。さらに、ＳＡＥは、伝送されたデータ内に含まれるCHECKSUM  変数を必要とする。単純なメッセージのエラー検出は、以前の全てのメッセージキャラクタの合計にCHECKSUMを加えることによって実行することができる。８ビットの和は、正しく受信されたメッセージに対して、CARRY を無視するとゼロになる。
【００４７】
しかし、CHEC KSUM  変数は、受信されたキャラクタを有効にする信頼できる手段ではない。しばしば、CHECKSUM  変数は、受信データが有効であり、キャラクタが正しく命令されていないことを示すであろう。キャラクタが正しく命令されていないと、通常のCHECKSUM  の有効方法だけで適切に決定することができない。本発明のタイムスタンプ有効方法は、従来の有効方法における欠陥を克服する。しかし、それらの通信ポートに対して、本発明によって与えられるより精密なタイミング精度を必要としていないことを理解すべきである。CHE CKSUMの有効方法は、適切であると云える。
ＳＡＥのsurface Vehicle Recommended Practice(SAE1708）の写しも、上述したＳＡＥの分科会から得ることができる。
【００４８】
好ましい実施形態の記述
図３ないし図６において、ソフトウエアアプリケーション１２または使用者（図示略）は、有効シリアル通信ポートを選択する（ステップ99）。本発明は、選択された通信ポートを初期化する（ステップ100）。上述したように、ポートドライバＶｘＤ１４は、いくつかのシリアル通信ポートを同時に接続することができる。しかし、本発明の好ましい実施形態では、ポートドライバＶｘＤ１４は、コンピュータ１８と自動車構成部品２０との間の通信を制御するために用いられる。
【００４９】
ポートドライバＶｘＤ１４は、システムレジストリー２４を読み出し、選択された通信ポートの形状を決定する（ステップ102）。システムレジストリー２４は、どんなハードウエアが取り付けられ、どんなシステムオプションが選択されたか、どのようなコンピュータメモリがセットアップされたか、そして、オペレーティングシステムが開始される時、どんなアプリケーションプログラムが与えるかというような情報を保存するための単一の場所である。ここで、ポートドライバＶｘＤ１４は、本発明のタイムスタンプ機能を実行する必要がある選択された通信ポートがあるかないかを判定しなければならない（ステップ104）。
【００５０】
本発明によって与えられるより精密なタイミング精度が全てのアプリケーションに対して必要ではないことも理解すべきである。より精密なタイミング精度が特定のアプリケーションにとって必要でない場合、その時、本発明のタイムスタンプ機能も必要ではない。
【００５１】
システムレジストリー２４に記憶された形状データは、選択されたポートが精密なタイミング精度を必要とするか否かを示す。それゆえ、タイムスタンプが行なわれる。例えば、シリアルデータ通信用のＳＡＥＪ1587およびＪ1708標準規格に従って、全てのポート自動車構成部品２０に接続され、ＳＡＥ標準規格（例えば、Ｊ1587ネットワーク）がタイムスタンプ操作に必要となるように自動車構成部品に付けられる。しかし、本発明は、保護されたオペレーティングシステム環境においてリアルタイムのタイミング精度を必要とするどの通信ネットワークをも満たすものであることを理解すべきである。
【００５２】
好ましくは、タイムスタンプ値は、システムレジストリー２４に記憶され、そして、選択された通信ポートが、これを通過して受信された各キャラクタに付け加えられるタイムスタンプを必要とするかどうか示す。選択されたポートにおいてタイミングスタンプ操作が必要であると、システムレジストリー２４におけるタイムスタンプ値が示す場合、その時、ポートドライバＶｘＤ１４がそのタイムスタンプフラグを「１」に等しくなるようにセットする（ステップ106）。
【００５３】
しかし、選択されたポートが通常機能するようにタイムスタンプ操作を必要としない場合、その時、ポートドライバＶｘＤ１４がタイムスタンプフラグを「０」値に割り当てる（ステップ108）。
【００５４】
図５において、選択されたポートが一旦初期化され、タイムスタンプフラグがセットされると、ポートドライバＶｘＤ１４は、選択されたポートからキャラクタを読み出し（ステップ110）、リング０でコンピュータ１８のメモリにおける受け入れキュー２１での受信キャラクタを一時的に記憶する（ステップ111）。キャラクタが受け入れキュー２１において読み取られて記憶されると、ポートドライバＶｘＤ１４は、タイムスタンプフラグをチェックし、現在受信されたキャラクタがタイムスタンプを必要とするかを判定する（ステップ112）。タイムスタンプが受信されたキャラクタのために必要とされることをタイムスタンプフラグが示す場合、ＶＴＤゲットリアルタイム機能が呼び出され（ステップ113）、タイムスタンプ値受け入れキュー２１において受信されたキャラクタに割り当てられる（ステップ114）。好ましくは、タイムスタンプ値は、リング０レベルでコンピュータ１８のメモリにおける受け入れキュー２１において、受信したキャラクタに付加される。
【００５５】
図６において、受信したキャラクタにタイムスタンプが必要でない場合、ポートドライバＶｘＤ１４は、受け入れキュー２１において受信したキャラクタを記憶し、そして、受信したキャラクタを有効にするように進める。この時点で、ポートドライバＶｘＤ１４は、使用者またはソフトウエアアプリケーション１２に役立つ受信したキャラクタを有効にするための少なくとも３つの評価オプションを生じさせる。即ち、３つの評価は、（1）通常の有効方法を用いる評価（ステップ116、188）、（2）タイムスタンプ値の比較方法を用いる評価（ステップ120、122）、（3）上記両方の方法を用いる評価（ステップ116〜122）である。
【００５６】
通常の評価方法は、受信したワード（またはキャラクタのグループ）と所定のチェックサム(checksum)値との比較を含んでいる。このチェックサム値は、正しいキャラクタの数が受信されたかどうかを判定するために、実際に受信されたキャラクタ全数の合計と通常比較される。しかし、上述したように、チェックサムの評価方法は、伝送されたワードの個々のキャラクタが適切な順序で受け入れられたかを判定するのに使用することができない。
【００５７】
受信されたキャラクタを含むタイムスタンプがあることをタイムスタンプフラグが示す場合、タイムスタンプ値は、好ましくは、特定形式のキャラクタを受信するための受入れ可能な時間間隔を示す最大受入れ可能な時間間隔と比較される（ステップ122）。タイムスタンプ値が、受入れ可能な時間間隔よりも大きい場合、その時、キャラクタの伝送において起こった可能なエラーにより、このキャラクタは、無効とされ、そして、送り手を変更しなければならない。受信されたキャラクタ間の最大受入れ可能な時間間隔が、本発明の特定のアプリケーションによるものであることを理解すべきである。好ましくは、メッセージにおけるキャラクタ間の時間間隔は、２０８マイクロ秒よりも小さい。
【００５８】
タイムスタンプが最大受入れ可能な時間間隔を越える場合、または、通常の評価方法が受信されたキャラクタまたはワードが無効であると判定した場合、その時、エラーメッセージが送り手に送られて、最後に受信されたキャラクタまたはワードが適切に受入れられなかったことを示し、そして、ポートドライバＶｘＤ１４がそのキャラクタまたはワードを再提出する要求を送る（ステップ126）。
【００５９】
ポートドライバＶｘＤ１４は、その時，上述したルーチンを繰り返し、送り手によって伝送された新しいキャラクタを読み出し、そして、上述の受信したキャラクタを処理する手順を行なう（ステップ110〜124）。
【００６０】
最後に、いずれかの筋書きにおいて、有効キャラクタがパケット内にはめ込められるように受入れられたかが判定されると（ステップ124）、ポートドライバＶｘＤ１４は、伝送の終了に到達したかどうかをチェックする（ステップ128）。送り手が通信リンク間でキャラクタをまだ送っている場合、ポートドライバＶｘＤ１４は、それらの受信したキャラクタを処理し続ける（ステップ110〜124）。しかし、送り手から受信するキャラクタがない場合、ポートドライバＶｘＤ１４は、選択された通信ポートを閉鎖し、別のアプリケーションにより使用されるユーティリティに開放される。
【００６１】
本発明の好ましい実施形態を説明してきたが、当業者であれば、本発明の技術範囲の中で変更が可能である。それゆえ、本発明の技術範囲および内容を決定するのは、ここで添付された特許請求の範囲に記載の構成に限定される。
【図面の簡単な説明】
【図１】保護されたオペレーティングシステムのアーキテクチャにおけるブロック図である。
【図２】キャラクタ[ a]の通常の非同期伝送をグラフで示す図である。
【図３】シリアル通信リンクを介してキャラクタデータの従来のシリアル通信の論理フローを示す流れ図である。
【図４】本発明に従ってキャラクタを受信するために通信ポートを用意する論理フローを示す流れ図である。
【図５】本発明に従って、通信リンク間でキャラクタを取り出し、受信されたキャラクタにタイムスタンプをつける論理フローを示す流れ図である。
【図６】本発明に従って、受信されたキャラクタを有効にする論理フローを示す流れ図である。
【符号の説明】
１２    ソフトウエアアプリケーション
１４    ポートドライバ
１６    ＶＣＯＭＭ
１８    コンピュータ
２０    自動車構成部品
２１    受入れキュー
２２    リアルタイムクロック
２３    キャラクタリーダ
２４    システムレジストリー
２５    ポート識別器
２６    ハードウエアインターラプト
【図１】
0004329090.tif 000002
【図２】
0004329090.tif 000003
【図３】
0004329090.tif 000004
【図４】
0004329090.tif 000005
【図５】
0004329090.tif 000006
【図６】
0004329090.tif 000007