(57)【要約】      （修正有）【課題】コプロセッサが無い場合のメイン・プロセッサの負荷を低減する非同期シリアル通信技術を提供する。【解決手段】メイン・プロセッサ１１は、シリアル通信に必要不可欠な各タスクを設定することによって、１つ以上の外部装置とのシリアル通信を管理する。これらのタスクには、（１）シリアル装置を取り扱う、（２）プロトコルをカプセル化する、および、（３）外部装置との低レベル通信を行う、を含める。各タイミング条件が満たされ、且つ、メイン・プロセッサのプロセッサ効率が最大限になるように、各タスクに優先度が割り当てられる。低優先度のタスクが完了すると、次に高い優先度のタスクの実行が開始され、データ処理とデータ通信とが同期化される。【選択図】図１
2011048844.tif 000002
【特許請求の範囲】
【請求項１】
メイン・プロセッサによる、少なくとも１つの外部通信装置との非同期シリアル通信を実現する方法であって、
前記メイン・プロセッサに於いて一組の命令及び関連データを設定するステップであって、各前記一組の命令及び関連データには、シリアル通信を行うために前記メイン・プロセッサが実行すべき少なくとも１つの命令が含まれており、また、各前記命令及び関連データが、所定の優先度でランする少なくとも１つの動作を有し、且つ、相異なる各前記命令及び関連データの動作が階層型優先度を有する、前記ステップと、
各前記命令及び関連データに含まれる少なくとも１つの動作が、それぞれの優先度レベルでランするように各前記命令及び関連データを実行するステップと、
低優先度のタスクが完了すると各高優先度のタスクをトリガするステップと、
を含む方法。
【請求項２】
前記一組の命令及び関連データには、外部装置との通信を確立するデバイス・マネージャの命令及び関連データが含まれている、請求項１記載の方法。
【請求項３】
前記デバイス・マネージャの命令及び関連データが、更新目的でシリアル通信が実行されるシリアル・ポートに対応するシリアル・アドレスへのポーリングを起動するデバイス・マネージャの動作を起動する、請求項２記載の方法。
【請求項４】
前記一組の命令及び関連データには、外部装置との通信を行うのに使用される各シリアル・プロトコルの詳細を組み込んだシリアル・プロトコルの命令及び関連データが含まれている、請求項１記載の方法。
【請求項５】
前記シリアル・プロトコルの命令及び関連データが、外部装置との間でのデータの書き込みと読み出しとを制御するシリアル・プロトコルの動作を起動する、請求項４記載の方法。
【請求項６】
前記一組の命令及び関連データには、シリアル・ポートとの低レベル通信をカプセル化するシリアル・ポートの命令及び関連データが含まれている、請求項１記載の方法。
【請求項７】
前記シリアル・ポートの命令及び関連データが、外部装置からデータを読み出すシリアル・リードの動作を起動する、請求項６記載の方法。
【請求項８】
メイン・プロセッサによる、少なくとも１つの外部通信装置との非同期シリアル通信を実現する方法であって、
前記メイン・プロセッサに於いて、シリアル装置を管理する第１の一組の命令及び関連データと、シリアル・データ・プロトコルを含める第２の一組の命令及び関連データと、外部装置との低レベル通信を行う第３の一組の命令及び関連データとを設定するステップであって、各前記一組の命令及び関連データには、前記メイン・プロセッサが実行すべき少なくとも１つの命令が含まれており、また、各前記一組の命令及び関連データが、所定の優先度でランする少なくとも１つの動作を有し、且つ、相異なる各前記一組の命令及び関連データの動作が階層型優先度を有する、前記ステップと、
各前記一組の命令及び関連データに含まれる少なくとも１つの動作がそれぞれの優先度レベルでランするように、前記第１、第２および第３の一組の命令及び関連データを実行するステップと、
対応する低優先度の動作が完了すると各高優先度の動作をトリガするステップと、
を含む方法。
【請求項９】
前記第１の一組の命令及び関連データには、シリアル通信が要求されるシリアル装置に対応するシリアル・アドレスへのシリアル・アドレス・ポーリングを起動する第１の動作が含まれる、請求項８記載の方法。
【請求項１０】
前記第２の一組の命令及び関連データが、外部装置との間でのデータの書き込みと読み出しとを制御する第２の動作を起動する、請求項８記載の方法。
【請求項１１】
前記第３の一組の命令及び関連データが、外部装置からデータを呼び出す第３の動作を起動する、請求項８記載の方法。
【請求項１２】
メイン・プロセッサを含み、少なくとも１つの外部通信装置との非同期シリアル通信を実現するシステムであって、
シリアル装置を管理するための、前記メイン・プロセッサによって実行される第１の一組の命令及び関連データと、
シリアル・プロトコルを含めるための、前記メイン・プロセッサによって実行される第２の一組の命令及び関連データと、
少なくとも１つの外部装置との低レベル通信のための、前記メイン・プロセッサによって実行される第３の一組の命令及び関連データと、
を含み、
各前記一組の命令及び関連データが、所定の優先度でランする少なくとも１つの動作を有し、且つ、相異なる各前記一組の命令及び関連データの動作が階層型優先度を有し、
前記メイン・プロセッサが、各前記一組の命令及び関連データに含まれる少なくとも１つの動作がそれぞれの優先度レベルでランするように、前記第１、第２および第３の一組の命令及び関連データを実行し、
各高優先度の動作が、対応する低優先度の動作が完了すると、トリガされる、
システム。
【請求項１３】
前記第１の命令及び関連データには、シリアル通信が要求されるシリアル装置に対応するシリアル・アドレスへのアドレス・ポーリングを起動する第１の動作が含まれる、請求項１２記載のシステム。
【請求項１４】
前記第２の命令及び関連データが、外部装置との間でのデータの書き込みと読み出しとを制御する第２の動作を起動する、請求項１２記載のシステム。
【請求項１５】
前記第３の命令及び関連データが、外部装置からデータを読み出す第３の動作を起動する、請求項１２記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置相互間で非同期シリアル通信を行う技術に関する。
【背景技術】
【０００２】
埋込みシステムは、その他の装置との間で、何らかの形態の非同期シリアル通信を使用することがよくある。通常、コプロセッサ（ｃｏｐｒｏｃｅｓｓｏｒ）が、通信に使用されるシリアル・プロトコルの複雑な細部を管理する。コプロセッサが無い場合、各シリアル装置に対するサービスを行うタスクは、メイン（主）プロセッサが担うことになり、従って、貴重なリソース（資源）が消費され、煩わしいプライオリティ（優先度）条件およびタイミング条件が課せられることになる。殆どのシリアル・プロトコルには、一般的に、厳密なタイミング条件が含まれている。コプロセッサが無い場合、シリアル通信タスクを取り扱うメイン・プロセッサには、それ自身の能力を発揮するために、システム・ハードウェアの詳細な知識が必要になる。このシステム・ハードウェアの知識は、必然的に、低レベル装置のドライバのルーチンについての知識を必要とし、このルーチンには、エラーが多く紛れ込む傾向がある。この点で、メイン・プロセッサは、自身のコンプライアンス（ｃｏｍｐｌｉａｎｃｅ）を確実に行うと共に、シリアル装置のコンプライアンスを検査（ｖｅｒｉｆｙ）する必要がある。プロセッサの優先度について、一般的な方法を採用すると、プロセッサの資源を浪費してしまうことがある。あるタスクの優先度を過度に低く設定すると、その他のタスクがそれより高い優先度でラン（ｒｕｎ）する結果、タスク強制排除によりデッドライン（締切時間）を逃してしまうことがある。逆に、あるタスクの優先度の設定が高すぎると、重要なその他のタスクが阻止（ｂｌｏｃｋ）され、プロセッサの処理時間が浪費されることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、コプロセッサが無い場合に、上述の欠点を克服する非同期シリアル通信を行う技術が必要である。
【課題を解決するための手段】
【０００４】
（発明の概要）
本発明の原理の推奨実施形態に従えば、メイン・プロセッサによってシリアル通信を管理する方法が提供される。この方法は、シリアル通信に必要不可欠なタスクを設定することによって、開始される。例えば、これらのタスクには、（１）シリアル装置を取り扱うこと、（２）プロトコルをカプセル化すること、および、（３）外部装置との低レベル通信を行うことを含めることが出来る。各タイミング条件が満たされ、且つ、メイン・プロセッサのプロセッサ効率が最大限になるように、各タスクに優先度が割り当てられる。低優先度のタスクが完了すると、次に高い優先度のタスクの実行が開始され、データ処理とデータ通信とが同期化される。
【図面の簡単な説明】
【０００５】
【図１】図１は、シリアル通信に関連する相異なる各タスクに対応する、一組の論理ブロック（オブジェクト）の各々を示す概略図である。
【図２】図２は、図１の各タスクによって実行される各イベントのシーケンスを示すタイミング図である。
【発明を実施するための形態】
【０００６】
図１には、専用コプロセッサを必要とせず、１つ以上の周辺装置（図示せず）とのシリアル通信を効果的に管理する、本発明の原理に従うシステム１０のブロック図が示されている。システム１０にはメイン・プロセッサ１１が含まれており、このメイン・プロセッサ１１は、一組の各命令とそれらに対応するデータ・ファイルの形態を取る第１のブロック１２を有する。この第１のブロック１２（以下、「デバイス・マネージャ（ＤｅｖｉｃｅＭａｎａｇｅｒ）」という）は、シリアル通信に関連する第１の組の動作を行う。この第１の組の動作には、メイン・プロセッサ１１がシリアル・ポート１３を介して通信を行おうとするシリアル装置（図示せず）を含むアドレス・スペースのポーリングが含まれている。シリアル装置の各々は、シリアル・ポート１３を介してメイン・プロセッサ１１に接続されると、応答して、デバイス・マネージャ１２が、通信に必要なデータをそのシリアル装置に要求することを許可する。識別された各シリアル装置について、デバイス・マネージャ１２は、データ更新目的で、その識別された各シリアル装置のポーリングを起動するタスク（図１では、デバイス・マネージャ・タスク（ＤｅｖｉｃｅＭａｎａｇｅｒＴａｓｋ）１４として示す）を作成する。このデバイス・マネージャ・タスク１４は、少なくともその他のシステム・タスクに比べて低い優先度でランする。尚、以下の説明に於いて、「タスク」（例えば、デバイス・マネージャ・タスク１４）は、「アクション（動作）のパフォーマンス（実行）」として定義されるのに対して、「オブジェクト」（例えば、デバイス・マネージャ１２）は、「タスクに用いられるファンクション（機能）および／またはデータを提供するもの」である。
【０００７】
メイン・プロセッサ１１内には、第２のブロック１５（以下、シリアル・プロトコル・ブロック（Ｓｅｒｉａｌ  Ｐｒｏｔｏｃｏｌ  ｂｌｏｃｋ）１５という）が含まれている。このシリアル・プロトコル・ブロック１５は、シリアル・ポート１３を介する外部装置との通信に使用される各シリアル・プロトコルの詳細をカプセル化（ｅｎｃａｐｓｕｌａｔｅ）する。このようなシリアル・プロトコルの一例としては、イー・エス・トリビュタリ・プロトコル（ｅｓＴｒｉｂｕｔａｒｙ  ｐｒｏｔｏｃｏｌ）があるが、その他のプロトコルもあり、容易に使用できる。シリアル・プロトコル・ブロック１５は、プロトコルの規格に従って、アウトバウンド（ｏｕｔｂｏｕｎｄ）の各メッセージをフォーマットするのに使用される各機能を提供し、アウトバウンドの各メッセージがプロトコルのタイミング条件を確実に満たすようにする。また、シリアル・プロトコル・ブロック１５には、インバウンド（ｉｎｂｏｕｎｄ）の各メッセージがプロトコルの規格に従っていること、および、プロトコルのタイミング条件を満たしていることを検査する機能も含まれている。シリアル・プロトコル・ブロック１５は、個々のプロトコルの条件に従って、シリアル・ポート１３を介する各外部装置との間でのデータの書き込みと読み出しを制御するタスク１６（以下、シリアル・プロトコル・タスク（ＳｅｒｉａｌＰｒｏｔｏｃｏｌＴａｓｋ）１６という）を作成する。このシリアル・プロトコル・タスク１６は、割り当てられたタイミング・デッドラインを確実に満たすように、十分に高い優先度でランする。
【０００８】
図１のメイン・プロセッサ１１には、更に、シリアル・ポート１３との低レベル通信をカプセル化する第３のブロック１７（以下、シリアル・ポート・ブロック（ＳｅｒｉａｌＰｏｒｔ  ｂｌｏｃｋ）１７という）が含まれている。このシリアル・ポート・ブロック１７は、このブロックのアーキテクチャの移植性を高めて再使用を可能にするシリアル・ポート１３のアブストラクト（ａｂｓｔｒａｃｔ）（即ち、モデル）を作成する。シリアル・ポート・ブロック１７は、シリアル・ポート１３との間でデータの読み出しと書き込みを行う機能を提供し、また、読み出し動作についてのタイムアウト（ｔｉｍｅｏｕｔ）を実施する役割も担っている。シリアル・ポート・ブロック１７は、シリアル・ポート１３を介してメイン・プロセッサ１１に送信された全てシリアル・データを読み取るタスク１８（以下、シリアル・リード・タスク（ＳｅｒｉａｌＲｅａｄＴａｓｋ）１８という）を作成する。従って、このシリアル・リード・タスク１８は、シリアル・ポートを使用する全てのプロトコルによって要求されるタイミング・デッドラインを確実に満たすのに十分な高さの優先度でランする必要がある。
【０００９】
図２には、シリアル通信の開始に対応する各イベント（事象）のシーケンスを例示して、本発明の原理に従うシリアル通信技術の利点を説明するためのタイミング図が示されている。図１のデバイス・マネージャ・タスク１４が、デバイス・マネージャ１２のポーリング９０の機能を呼び出すことによって、図１のシリアル・ポート１３に対応するアドレスのポーリングを起動すると、シリアル通信のプロセスが始まる。次に、ポーリング９０は、シリアル・プロトコル・ブロック１５のポーリング１００の機能を呼び出す。次に、ポーリング１００は、シリアル・プロトコル・ブロック１５への宛先アドレスをコピーするセット・データ（ＳｅｔＤａｔａ）１１０の機能を呼び出し、次に、シリアル・ポート・ブロック１７のセマフォー付与（ｓｅｍＧｉｖｅ）１２０の機能を呼び出す。
【００１０】
シリアル・プロトコル・タスク１６は、開始時点、または、幾つかのポーリング・イベント後に、セマフォー取得（ｓｅｍＴａｋｅ）１３０に於いて、ブロックして（ランを停止して）、セマフォー（ｓｅｍａｐｈｏｒｅ）を待っていた。セマフォー付与（ｓｅｍＧｉｖｅ）１２０の機能によって、シリアル・プロトコル・タスク１６がトリガされ、有効データを持ち、ラン可能になる。その結果、書き込み（Ｗｒｉｔｅ）１４０の機能が呼び出され、ポーリング・データを図１のシリアル・ポート１３に書き込む。これに続き、読み出し（Ｒｅａｄ）１５０の機能が呼び出される。次に、読み出し１５０は、セマフォー取得（ｓｅｍＴａｋｅ）１６０の機能を読み出し、この機能によって、シリアル・プロトコル・タスク１６は、１７０に於いてトリガされるまで、ブロックする（ランを停止する）。
【００１１】
シリアル・リード・タスク１８は、その読み出し１８０の機能に於いて、図１のシリアル・ポート１３からの入来データを継続的に探す。何れかのデータが利用可能であると、そのデータは、シリアル・ポート・ブロック１７内にコピーされる。読み出し１５０に於いて要求されたデータが利用可能であると、或いは、指定時間が過ぎると、セマフォー取得（ｓｅｍＴａｋｅ）１６０の機能は１７０に戻る。これによって、シリアル・プロトコル・タスク１６がトリガされてランし、読み出しが成功した場合、ポーリング・データをデバイス・マネージャ・タスク１４に戻し、或いは、制限時間が過ぎた場合、エラー表示をデバイス・マネージャ・タスク１４に戻す。
【００１２】
シリアル・リード・タスク１８は、高いシステム優先度でランするので、そのタイミング・デッドラインを満たすことが保証される。しかし、シリアル・リード・タスク１８は、データが図１のシリアル・ポート１３から得られる場合のみ、ランするので、システム資源を無駄に消費することはない。
【００１３】
同様に、シリアル・プロトコル・タスク１６も、高いシステム優先度でランするので、そのタイミング・デッドラインを満たすことが保証される。シリアル・プロトコル・タスク１６は、ポーリング機能が必要な場合のみ、トリガされてランする。従って、シリアル・プロトコル・タスク１６も、ポーリング機能が必要でないとき、システム資源を無駄に消費することはない。また、シリアル・プロトコル・タスク１６は、アクティブ状態でシリアル装置からの応答を待っているとき、シリアル・プロトコル・タスク１６をトリガして再度ランさせるシリアル・ポート・ブロック１７上でブロックする（停止して待機する）ので、通信サイクルのこのフェーズの期間、システム資源を無駄に消費することはない。ポーリングは、一群のシリアル装置と通信を行う１つの方法である。別の方法として、データが利用可能である場合に、シリアル・ポートがプロセッサに割り込みをかけるように構成してもよい。仮に接続されたシリアル装置が１つだけの場合、プロセッサは、ポーリングする、或いは、アドレスすることなく、そのシリアル装置と通信を行うことが出来る。本発明の技術は、これらの全てメカニズムに適用可能である。
【００１４】
シリアル通信サイクル全体は、低い優先度のデバイス・マネージャ・タスク１４によって、ゲート制御される。これによって、システムは、シリアル通信サイクルの期間中、シリアル・プロトコルのタイミング条件を満たすことが出来る。しかし、これらのシリアル通信サイクルのランが許されるのは、システム内のその他の高優先度タスクがデバイス・マネージャ・タスク１４のランを許可する場合のみである。
【００１５】
以上、各通信タスクを管理するための専用コプロセッサを必要とせず、シリアル通信を行い得る技術を説明した。
【００１６】
（関連出願の説明）
本出願は、米国特許法（３５Ｕ．Ｓ．Ｃ）第１１９条の（ｅ）に基づいて、２００３年２月１１日に出願された米国仮特許出願第６０／４４６，５２４号、および、２００３年３月１４日に出願された米国仮特許出願第６０／４５４，７３４号の優先権を主張し、それらの開示事項をここに組み入れる。
【符号の説明】
【００１７】
１０  システム
１１  メイン・プロセッサ
１２  デバイス・マネージャ
１３  シリアル・ポート
１４  デバイス・マネージャ・タスク
１５  シリアル・プロトコル・ブロック
１６  シリアル・プロトコル・タスク
１７  シリアル・ポート・ブロック
１８  シリアル・リード・タスク
【図１】
2011048844.tif 000003
【図２】
2011048844.tif 000004