(57)【要約】【課題】オペレーティングシステムが作動する前において動作可能でありかつ限られた機能を提供するスタートアップタイミング要求を満たす、低価格且つ容易に修正が可能な方法を提供すること。【解決手段】本発明によるコンピュータシステムにおけるタイミング要求を満たす方法では、該コンピュータシステムは、オペレーティングシステム、メモリ、および、少なくとも１つの周辺デバイスを含み、この方法は、該オペレーティングシステムのロード前において、該少なくとも１つの周辺デバイスのために、デバイスドライバをロードすることを含む。【選択図】図２
2006338664.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおけるタイミング要求を満たす方法であって、該コンピュータシステムは、オペレーティングシステム、メモリ、および、少なくとも１つの周辺デバイスを含み、該方法は、
該オペレーティングシステムのロード前において、該少なくとも１つの周辺デバイスのために、デバイスドライバをロードすること
を包含する、方法。
【請求項２】
前記オペレーティングシステムのロード後において、前記少なくとも１つの周辺デバイスのために、第２のデバイスドライバをロードすることをさらに包含する、請求項１に記載の方法。
【請求項３】
前記デバイスドライバの前記ロードが、前記周辺デバイスを初期化すること、および、前記少なくとも１つの周辺デバイスの割り込みを該デバイスドライバに関連付けること、を包含する、請求項２に記載の方法。
【請求項４】
前記デバイスドライバから前記第２のデバイスドライバへ、前記周辺デバイスのコントロールを移動することをさらに包含する、請求項２に記載の方法。
【請求項５】
前記デバイスドライバの前記ロードが、前記周辺デバイスを初期化すること、および、前記少なくとも１つの周辺デバイスの割り込みを該デバイスドライバに関連付けること、を包含する、請求項４に記載の方法。
【請求項６】
前記周辺デバイスのコントロールを、前記第２のデバイスドライバへ移動することが、
該第２のデバイスドライバを前記割り込みに付けること、
前記システムの割り込みを不能にすること、
該第２のデバイスドライバの場合、該システムの割り込みを再び動作可能にすること、
前記デバイスドライバから該第２のデバイスドライバへデータを転送すること
を包含する、請求項５に記載の方法。
【請求項７】
前記周辺デバイスのコントロールを、前記第２のデバイスドライバへ移動することが、前記転送されたデータと、該第２のデバイスドライバによって得られたデータとを同期することをさらに包含する、請求項６に記載の方法。
【請求項８】
前記デバイスドライバは、前記オペレーティングシステムのイメージが前記メモリへコピーされる前に、ロードされる、請求項１に記載の方法。
【請求項９】
命令を実行するように動作可能な中央演算処理ユニット（ＣＰＵ）と、
該ＣＰＵと通信状態にあり、該ＣＰＵによる実行の命令を格納するように動作可能な、メモリと、
該メモリに格納され、コンピュータシステムのリソースを管理するように動作可能であり、カーネルモジュールを含む、オペレーティングシステムと、
該ＣＰＵと通信状態にあり、入力／出力リクエストを生成するように動作可能な、少なくとも１つの周辺デバイスと、
該ＣＰＵおよびメモリと通信状態にあり、該メモリに該オペレーティングシステムをロードするように動作可能な、ブートモジュールと、
該メモリ内に格納され、該ブートモジュールが該メモリに該オペレーティングシステムをロードする前に、該生成された入力／出力リクエストを提供するように動作可能な、デバイスドライバと
を備えるコンピュータシステム。
【請求項１０】
前記ブートモジュールは、さらに、該ブートモジュールが前記メモリに前記オペレーティングシステムをロードする前に、前記少なくとも１つの周辺デバイスを部分的に初期化するように動作可能である、請求項９に記載のコンピュータシステム。
【請求項１１】
前記ブートモジュールが、
最初の電力オンコードを実行するように動作可能な初期化プログラムローダ（ＩＰＬ）と、
メモリ内に前記オペレーティングシステムをロードするように動作可能なスタートアッププログラムと、
前記カーネルモジュールを初期化するように動作可能なカーネル初期化モジュールと
を備える、請求項１０に記載のコンピュータシステム。
【請求項１２】
前記ＩＰＬが、さらに、前記デバイスドライバを初期化するように動作可能である、請求項１１に記載のコンピュータシステム。
【請求項１３】
前記メモリ内に格納され、前記カーネルモジュールの初期化後に、前記少なくとも１つの周辺デバイスからの入力／出力リクエストを提供するように動作可能な、第２のデバイスドライバをさらに備える、請求項１２に記載のコンピュータシステム。
【請求項１４】
前記スタートアッププログラムが、さらに、前記デバイスドライバを初期化するように動作可能である、請求項１１に記載のコンピュータシステム。
【請求項１５】
前記メモリ内に格納され、前記カーネルモジュールの初期化後に、前記少なくとも１つの周辺デバイスからの入力／出力リクエストを提供するように動作可能な、第２のデバイスドライバをさらに備える、請求項１４に記載のコンピュータシステム。
【請求項１６】
前記オペレーティングシステムが、さらに、前記メモリ内に格納される第２のデバイスドライバを初期化するように動作可能であり、前記生成された入力／出力リクエストを提供するように動作可能である、請求項９に記載のコンピュータシステム。
【請求項１７】
コンピュータシステムのブート処理中における、少なくとも１つの入力／出力リクエストを提供する方法であって、該コンピュータシステムが、カーネルモジュールおよび少なくとも１つの周辺デバイスを含むオペレーティングシステムを含み、該少なくとも１つの周辺デバイスが、バスを介して入力／出力リクエストを送信するように動作可能であり、該方法は、
該カーネルモジュールのロード前に、該少なくとも１つの周辺デバイスに関連するデバイスドライバをロードすることを包含し、
該デバイスドライバが、
該少なくとも１つの入力／出力リクエストを提供するためのハンドラーであって、該ブート処理を通して呼び出し可能である、ハンドラーと、
該ハンドラーと通信状態にあり、該少なくとも１つの入力／出力リクエストに関連するデータを操作するように動作可能である、データ操作構成要素とを含む、
方法。
【請求項１８】
前記カーネルモジュールのロード後において、前記少なくとも１つの周辺デバイスに同様に関連する第２のデバイスドライバをロードすることをさらに包含する、請求項１７に記載の方法。
【請求項１９】
前記第２のデバイスドライバへ、前記データ操作構成要素によって操作されたデータを移動することをさらに包含する、請求項１８に記載の方法。
【請求項２０】
前記デバイスドライバと共に前記入力／出力リクエストを提供するために、一時的な例外テーブルを作成することと、
前記第２のデバイスドライバと共に該入力／出力リクエストを提供するために、第２の例外テーブルを前記カーネルモジュールによって作成することと、
例外情報を、該一時的な例外テーブルから該第２の例外テーブルへ移動することと
をさらに包含する、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、リアルタイムオペレーティングシステムに関し、より特定には、システムのブートから限定されたインターバル内において、外部のイベントに対する応答を必要とするリアルタイムオペレーティングシステムに関する。
【背景技術】
【０００２】
システムがより複雑化すると、埋め込みシステム内において用いられるリアルタイムオペレーティングシステム（ＲＴＯＳ）のブート時間に対する要求は、増加し続ける。例えば、自動車、トラック、農作器機、採掘器機、ゴルフカート、モバイルロボット等の車両が、利便性のある様々な特性を提供するテレマティックシステムを利用し得る。ここにおいて、テレマティックシステムは、ＧＰＳナビゲーションシステム、無線通信、自動運転アシスタントシステム等である。これらのテレマティックシステムは、そのシステムの電源が入った後、非常に短時間内においてメッセージを伝達し得る、Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＣＡＮ）、およびＭｅｄｉａ  Ｏｒｉｅｎｔｅｄ  Ｓｙｓｔｅｍｓ  Ｔｒａｎｓｐｏｒｔ（ＭＯＳＴ（商標登録））バスによって動かされ得る。テレマティックスシステムは、通常、非常に短時間内において、メッセージを受信する性能、および、場合により、それらのメッセージへの応答をする性能を必要とする。これらのタイミング要求は、完全にブートし、標準デバイスドライバを作動し始めるために、ＲＴＯＳによって必要とされる時間よりも短くなり得る。
【０００３】
例えば、ＣＡＮバスマスターデバイスは、システムの電源が入った後の６５ｍｓ程にて、バス上の全デバイスへ「Ｐｏｗｅｒ  Ｕｐ」メッセージを送信可能であり、テレマティックシステムは、１００ｍｓ以内において、このメッセージに対して応答しなければならない。この始めのパワーオン応答確認シーケンスの後、テレマティックシステムは、ＣＡＮバス上において、１メッセージ当たり約１０ｍｓの割合にて受信される追加的なメッセージをバッファする（および、場合により、それらのメッセージに対して、返答する）必要性があり得る。第１のＣＰＵ命令が、パワーオン後から１０ｍｓ内に実行されない可能性があるという事実とあわせると、テレマティックシステムは、約５５ｍｓ内にメッセージに対して応答可能であらなければならない。これらの厳しいブート時間に対する要求が、最初の「Ｐｏｗｅｒ  Ｕｐ」ＣＡＮメッセージ以前のＲＴＯＳの完全な作動を、起こりそうもないものにする。これは、ＯＳイメージをＲＡＭへコピーしている等のブート処理におけるボトルネックに起因し得る。一般的な、パワーオンリセット（ＰＯＲ）から最初のユーザアプリケーションの開始までのＯＳブート時間は、１００ミリ秒台において測定され得る。
【０００４】
これらのタイミング要求を満たすために、補助通信プロセッサが、ＲＴＯＳの機能を補うために使用されている。例えば、ＣＡＮメッセージが届く場合、補助プロセッサはメッセージを受信し、任意の必要なデータを入手することが可能である。一旦、ＯＳがロードされると、これらのタスクは、デバイスドライバへ譲られ得る。これらの補助プロセッサが、タイミング要求を満たすために埋め込みシステムへ組み込まれる一方、それらは、価格に敏感な市場において、高価になり得る。さらに、ハードウェアにより解決法は困難になり得、また、修正の必要があれば、その修正に費用がかかり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従って、オペレーティングシステムが作動する前において動作可能でありかつ限られた機能を提供するスタートアップタイミング要求を満たす、低価格且つ容易に修正が可能な解決法に対するニーズがある。
【課題を解決するための手段】
【０００６】
車輌テレマティックシステムによって指示されるタイミング要求のような、厳しいブート時間要求を満たすための頑丈なシステムが記載される。現コンピュータシステムは、入力／出力リクエストのようなリクエストを提供するためにコプロセッサのような高価なハードウェアを使用する。ここにおいて、リクエストとは、メモリ内にオペレーティングシステムをロードするのに必要な時間よりも短いタイミング要求を有する。その代わり、ミニドライバは、これらのリクエストを提供するために、オペレーティングシステムがロードされる前に、ブート処理の早期の時点において初期化（ｉｎｉｔｉａｌｉｚｅ）され得る。例えば、ミニドライバは、入ってくるデータをバッファし得、および／または、入ってくるメッセージに対して返信し得る。ブート処理を通して呼び出し可能であり得るミニドライバは、ポーリングまたは割り込みを介して等、様々な様式においてトリガーされ得る。オペレーティングシステムがロードされた後、第２のデバイスドライバは初期化され得、ミニドライバの機能は、第２のドライバへ移動され得る。第２のデバイスドライバは、オペレーティングシステムのカーネルモジュールによって周知の方法を用いて初期化される典型的なデバイスドライバであり得る。
【０００７】
本発明の他のシステム、方法、特徴および有利な点は、添付の図面および後述の記載の考察と共に、当業者にとって明確になる。そのような全てのシステム、方法、特徴および有利な点が、本記載に含められ、本発明の範囲内であり、添付の特許請求の範囲によって保護されることを意図する。
【０００８】
本発明は、さらに以下の手段を提供する。
【０００９】
（項目１）  
コンピュータシステムにおけるタイミング要求を満たす方法であって、該コンピュータシステムは、オペレーティングシステム、メモリ、および、少なくとも１つの周辺デバイスを含み、該方法は、
該オペレーティングシステムのロード前において、該少なくとも１つの周辺デバイスのために、デバイスドライバをロードすること
を包含する、方法。
【００１０】
（項目２）
上記オペレーティングシステムのロード後において、上記少なくとも１つの周辺デバイスのために、第２のデバイスドライバをロードすることをさらに包含する、項目１に記載の方法。
【００１１】
（項目３）
上記デバイスドライバの上記ロードが、上記周辺デバイスを初期化すること、および、上記少なくとも１つの周辺デバイスの割り込みを該デバイスドライバに関連付けること、を包含する、項目２に記載の方法。
【００１２】
（項目４）
上記デバイスドライバから上記第２のデバイスドライバへ、上記周辺デバイスのコントロールを移動することをさらに包含する、項目２に記載の方法。
【００１３】
（項目５）
上記デバイスドライバの上記ロードが、上記周辺デバイスを初期化すること、および、上記少なくとも１つの周辺デバイスの割り込みを該デバイスドライバに関連付けること、を包含する、項目４に記載の方法。
【００１４】
（項目６）
上記周辺デバイスのコントロールを、上記第２のデバイスドライバへ移動することが、
該第２のデバイスドライバを上記割り込みに付けること、
上記システムの割り込みを不能にすること、
該第２のデバイスドライバの場合、該システムの割り込みを再び動作可能にすること、
上記デバイスドライバから該第２のデバイスドライバへデータを転送すること
を包含する、項目５に記載の方法。
【００１５】
（項目７）
上記周辺デバイスのコントロールを、上記第２のデバイスドライバへ移動することが、上記転送されたデータと、該第２のデバイスドライバによって得られたデータとを同期することをさらに包含する、項目６に記載の方法。
【００１６】
（項目８）
上記デバイスドライバは、上記オペレーティングシステムのイメージが上記メモリへコピーされる前に、ロードされる、項目１に記載の方法。
【００１７】
（項目９）
命令を実行するように動作可能な中央演算処理ユニット（ＣＰＵ）と、
該ＣＰＵと通信状態にあり、該ＣＰＵによる実行の命令を格納するように動作可能な、メモリと、
該メモリに格納され、コンピュータシステムのリソースを管理するように動作可能であり、カーネルモジュールを含む、オペレーティングシステムと、
該ＣＰＵと通信状態にあり、入力／出力リクエストを生成するように動作可能な、少なくとも１つの周辺デバイスと、
該ＣＰＵおよびメモリと通信状態にあり、該メモリに該オペレーティングシステムをロードするように動作可能な、ブートモジュールと、
該メモリ内に格納され、該ブートモジュールが該メモリに該オペレーティングシステムをロードする前に、該生成された入力／出力リクエストを提供するように動作可能な、デバイスドライバと
を備えるコンピュータシステム。
【００１８】
（項目１０）
上記ブートモジュールは、さらに、該ブートモジュールが上記メモリに上記オペレーティングシステムをロードする前に、上記少なくとも１つの周辺デバイスを部分的に初期化するように動作可能である、項目９に記載のコンピュータシステム。
【００１９】
（項目１１）
上記ブートモジュールが、
最初の電力オンコードを実行するように動作可能な初期化プログラムローダ（ＩＰＬ）と、
メモリ内に上記オペレーティングシステムをロードするように動作可能なスタートアッププログラムと、
上記カーネルモジュールを初期化するように動作可能なカーネル初期化モジュールと
を備える、項目１０に記載のコンピュータシステム。
【００２０】
（項目１２）
上記ＩＰＬが、さらに、上記デバイスドライバを初期化するように動作可能である、項目１１に記載のコンピュータシステム。
【００２１】
（項目１３）
上記メモリ内に格納され、上記カーネルモジュールの初期化後に、上記少なくとも１つの周辺デバイスからの入力／出力リクエストを提供するように動作可能な、第２のデバイスドライバをさらに備える、項目１２に記載のコンピュータシステム。
【００２２】
（項目１４）
上記スタートアッププログラムが、さらに、上記デバイスドライバを初期化するように動作可能である、項目１１に記載のコンピュータシステム。
【００２３】
（項目１５）
上記メモリ内に格納され、上記カーネルモジュールの初期化後に、上記少なくとも１つの周辺デバイスからの入力／出力リクエストを提供するように動作可能な、第２のデバイスドライバをさらに備える、項目１４に記載のコンピュータシステム。
【００２４】
（項目１６）
上記オペレーティングシステムが、さらに、上記メモリ内に格納される第２のデバイスドライバを初期化するように動作可能であり、上記生成された入力／出力リクエストを提供するように動作可能である、項目９に記載のコンピュータシステム。
【００２５】
（項目１７）
コンピュータシステムのブート処理中における、少なくとも１つの入力／出力リクエストを提供する方法であって、該コンピュータシステムが、カーネルモジュールおよび少なくとも１つの周辺デバイスを含むオペレーティングシステムを含み、該少なくとも１つの周辺デバイスが、バスを介して入力／出力リクエストを送信するように動作可能であり、該方法は、
該カーネルモジュールのロード前に、該少なくとも１つの周辺デバイスに関連するデバイスドライバをロードすることを包含し、
該デバイスドライバが、
該少なくとも１つの入力／出力リクエストを提供するためのハンドラーであって、該ブート処理を通して呼び出し可能である、ハンドラーと、
該ハンドラーと通信状態にあり、該少なくとも１つの入力／出力リクエストに関連するデータを操作するように動作可能である、データ操作構成要素とを含む、
方法。
【００２６】
（項目１８）
上記カーネルモジュールのロード後において、上記少なくとも１つの周辺デバイスに同様に関連する第２のデバイスドライバをロードすることをさらに包含する、項目１７に記載の方法。
【００２７】
（項目１９）
上記第２のデバイスドライバへ、上記データ操作構成要素によって操作されたデータを移動することをさらに包含する、項目１８に記載の方法。
【００２８】
（項目２０）
上記デバイスドライバと共に上記入力／出力リクエストを提供するために、一時的な例外テーブルを作成することと、
上記第２のデバイスドライバと共に該入力／出力リクエストを提供するために、第２の例外テーブルを上記カーネルモジュールによって作成することと、
例外情報を、該一時的な例外テーブルから該第２の例外テーブルへ移動することと
をさらに包含する、項目１９に記載の方法。
【発明の効果】
【００２９】
本発明により、オペレーティングシステムが作動する前において動作可能でありかつ限られた機能を提供するスタートアップタイミング要求を満たす、低価格且つ容易に修正が可能な解決法に対するニーズは満たされ得る。
【発明を実施するための最良の形態】
【００３０】
本発明は、添付の図面および後述の記載への参照と共により理解され得る。図面における構成要素は、正確に縮小された必要はなく、それらは、本発明の原理を示すことを強調する。さらに、図面において、異なった図面を通して、同様の参照番号は、それに対応する同様の部分を示す。
【００３１】
先ず、図１を参照し、ＣＡＮバスマスターデバイスを使用する車輌システムの例示的なブートタイミングシーケンスの図が示される。示されるように、ＣＰＵは、システムの電力がオン（１１０）になった後の約１０ｍｓ後において、始めの命令１２０を実行し得る。約５５ｍｓ後、または、システムの電力がオン（１１０）になった後の約６５ｍｓ後、ＣＡＮバスマスターデバイスは、バス上の全デバイスへ「Ｐｏｗｅｒ  Ｕｐ」メッセージを送信し得る（１３０）。テレマティックスシステムのようなバス上の任意のデバイスは、１００ｍｓ内にこのメッセージに応答しなければならない（１４０）。この最初の電力オンハンドシェーキングシーケンスの後、追加的なメッセージ１５０ａおよび１５０ｎが、１メッセージ当たり約１０ｍｓの割合にてＣＡＮバスに渡り、ブロードキャストされ得る。電力オンリセット（ＰＯＲ）から最初のユーザアプリケーションの開始までの典型的なブート時間が、１００ミリ秒台において測定され得る一方、上記されるように、これらの厳しいブート時間要求は、最初の「Ｐｏｗｅｒ  Ｕｐ」ＣＡＮメッセージ以前のＲＴＯＳの完全な作動を不確かなものにする。
【００３２】
図２において、これらのブート時間要求を満たす実施の例示的なシステム２００が示される。示されるように、システムは、メッセージを生成し、送信し得る周辺デバイス２４０は勿論、メモリ２１０に格納される処理命令のための中央演算処理ユニット（ＣＰＵ）２０２を含み得る。メモリ２１０は、システムハードウェアへのアクセスを様々なアプリケーションに提供するオペレーティングシステム２１２を含み得る。オペレーティングシステム２１２に含まれるものは、基本的なサービスを提供するカーネルモジュール２１４、システムのハードウェアリソースを記述するシステムページ２１６であり得る。オペレーティングシステム２１２はまた、例外テーブル２１８を含み得る。オペレーティングシステムに加え、メモリ２１０は、システム２００をブートするためのブートモジュール２２０をも含み得る。メモリはまた、オペレーティングシステム２１２のロード以前において、リクエストを提供するミニドライバ２３０を含み得る。一時的な例外テーブル２３２もまた、詳細に後述されるミニドライバの割り込みベースのトリガーを可能にするために、含まれ得る。
【００３３】
車輌テレマティックシステムにおける厳しいブート時間要求を満たすためのシステムの例示的なＲＴＯＳブート処理時間線図３００が、図３において示される。先ず、ＲＴＯＳは、電力オンにおいてブートを開始し得る（３１０）。この時点において、ＣＰＵはリセットされ、最初の電力オンコードが実行される。このコードは、初期化プログラムローダ（ＩＰＬ：Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）３１０を含み得る。ここにおいて、ＩＰＬは、システムリセットベクトル３１２に位置し得、コンピュータがオペレーティングシステムを開始することを可能にし得、また、システムにおける、ディスクドライバ、キーボード、モニタ、プリンタ、通信ポート等のような様々なデバイスと通信をするコードを提供し得る。例えば、リセットベクトル３１２は、パソコン上における基本入出力システム（ＢＩＯＳ）を含み得る。これらの命令はまた、例えば、スタートアッププログラム３２０のようなブートローダを初期化するための命令を含み得る。ブートローダが一旦、操作可能になると、ＯＳイメージのコピー、ＯＳのブート、および入力／出力（Ｉ／Ｏ）リクエストの処理等の多様なブートとラッピングに関するタスクを行い得る。最初の電力オンコードはまた、ミニドライバ２３０を初期化する命令を含み得る。
【００３４】
ミニドライバ２３０は、典型的なデバイスドライバの任意の機能、および／または全機能を提供し得る。示されるように、ミニドライバ２３０は、周辺デバイスを初期化する能力を提供し、それによって、周辺デバイスが、ブート処理３００を通して使用可能になる。一度初期化されると、ミニドライバ２３０は、例えば、周辺バス３４０上において受信されたメッセージ３４２を読むことによって、または、必要であれば、それに返信することによって、システム上にあるタイミング制約を満たすために用いられ得る。ブート処理３００が完了すると、システムは、ＩＰＬ３１０からスタートアッププログラム３２０へ推移し得、そしてその後、カーネルＩｎｉｔ段階３５０へ推移し得る。ここにおいて、スタートアッププログラム３２０は、ハードウェアの初期化、およびシステムページの確立等の追加的なブート処理に対して責任があり得、カーネルＩｎｉｔ段階３５０において、オペレーティングシステムカーネルは初期化される。この処理を通し、ミニドライバ２３０は、ポーリングし得（３３２）、または、必要に応じて、割り込みに応答し得る（３３４）。ポーリング３３２および割り込み３３４は、詳細に渡り後述される。選択的に、ミニドライバ２３０は、フルデバイスドライバ３７０へメッセージバッファ３３６を介して収集されたデータをパスし得、それによって、フルデバイスドライバ３７０は、操作可能になると、ミニドライバからコントロールを引き継ぎ得る。この時点において、フルドライバ割り込み３７２は使用され得る。ミニドライバ２３０はまた、ブート処理３００の後において、図４において示されるように、スタートアッププログラム３２０等によって初期化され得る。ＲＴＯＳがロードした後において、ＲＴＯＳによってロードされた典型的なデバイスドライバ３７０を区別するためにのみ、用語ミニドライバ２３０が用いられることは留意されるべきである。用語ミニドライバは、如何なる様式においても、限定する意図はない。追加的に、ミニドライバ２３０は、ブート処理３００の早期においてポーリング３３２として示され、後期において割り込みドライバ３３４として示されるが、図は、単に例示的なものであり、ミニドライバ２３０は、初期化の後の任意時において、直接的に関連はしないが、周期的な期間ベースの割り込みを含む任意の周知の様式を用いて、トリガーされ得る。
【００３５】
例示的なミニドライバ２３０の例示的な論理的なアーキテクチャが、図５において示される。論理的に、ミニドライバ２３０は、ハンドラー５１０およびデータ操作フィーチャ５２０の２つの構成要素を含み得る。ハンドラー５１０は、ブート処理３００に対する外部のインターフェースとして作用し、任意のタイプのデバイス特定型の機能を行うためのコードセグメントを含み得る。ハンドラー５１０は、ブート処理３００の任意の段階において呼び出し可能であり得る。ハンドラー５１０は、特定のアプリケーションのタイミング要求を満たすように設計されるカスタム機能であり得る。代替的に、または追加的に、基本的なハンドラー５１０または総称的なハンドラー５１０が実施され得る。
【００３６】
インターフェースとして、ハンドラー５１０は、データ操作フィーチャ５２０等の多様な機能へのアクセスを提供し得る。例えば、表１．０は、ＣＡＮまたはＭＯＳＴバスコントローラのような、周辺装置へのアクセスの読み取りおよび書き込みを可能にするような例示的なハンドラー５１０を示す。この場合において、データ操作フィーチャ５２０は、ハンドラー５１０へアクセス可能なメモリのブロックに、メッセージデータを格納するために使用され得る。例えば、データは、デバイスによって受信された、ＣＡＮバスマスターデバイスからのメッセージのようなメッセージをバッファするために格納され得る。代替的に、メッセージの変換、メッセージデータの抽出、追加的なデバイス／ソフトウェアへのメッセージの転送等の他のデータ操作機能５２０も、提供され得る。そのような機能は、タイミング要求、アプリケーション要求等によって指示され得る。
【００３７】
【表１】
2006338664.tif 000003
これらの機能を実施するために、ハンドラープログラム５１０は、多様な提供されたデータ操作機能５２０を使用し得る。これらの機能５２０は、デバイス特定型であり得、また、ミニドライバ２３０に備わっているものであり得る。代替的に、基本的な機能５２０または総称的な機能５２０は、提供され得、複数のデバイスを提供するために用いられ得る。追加的に、データ操作フィーチャは、ミニドライバ２３０に備わらない機能５２０によって提供され得る。例えば、３つの機能５２０は、デバイスがバス上においてメッセージを送受信することを可能にするために提供され得る。ここにおいてそれら３つの機能５２０は、デバイス初期化機能５２２、送信機能５２４、および受信機能５２６である。
【００３８】
デバイス初期化機能５２２は、必要であるならば、特定のデバイスを初期化し得る。典型的なハードウェアまたはデバイス初期化機能は、デバイス割り込み等を可能にする事を含み得ることに加え、ハードウェアレジスタ、デバイス特定型クロック、および／または待ち行列を構成する事を含み得る。デバイス初期化機能は、ミニドライバ２３０が初めて呼ばれる際に一度呼ばれ得、または、ミニドライブの有効期間（ｌｉｆｅ）を通して呼ばれ得る。本明細書中において用いる場合、ミニドライブ２３０の有効期間は、ミニドライバ２３０の初期化からミニドライバ２３０の機能無効までの期間として規定される。
【００３９】
送信機能５２４は、ミニドライバ２３０に関連するデバイスからデータを送信し得る。機能５２４は、提供される特定のデバイスによって変化し得る任意のサイズのデータを送信し得る。例えば、典型的なシリアルデバイスのデータの一部の送信が１バイトを含み得る一方、複数バイト数のメッセージが、ＣＡＮマスターデバイスドライバ用に、送信され得る。
【００４０】
受信機能５２６は、データがデバイスから読み取られることに対して利用可能か否かをチェックし得る。データが利用可能である場合、受信機能５２６は、ミニドライバ２３０データ領域に受信されたデータを格納し得る。受信機能５２６はまた、受信データの全バイト数を維持し得る。例えば、受信機能５２６は、ミニドライバデータが格納されるメモリ内の位置、および、ミニドライバデータバッファの現バイト数を与えられ得る。受信機能５２６は、新しいデータが利用可能でない場合、ゼロ、または、格納された新しいバイト数のいずれかを戻し得る。メモリ内の位置は、他のシステムソースと干渉しないように選ばれ得るプログラム中に固定される（ｈａｒｄ−ｃｏｄｅｄ）、予め規定される物理的メモリアドレスであり得る。
【００４１】
データ操作フィーチャ５２０の確立および提供に加え、ミニドライバ２３０はまた、他の機能を提供する追加的なロジックを含み得る。例えば、ハンドラー５１０は、ブート処理３００を通して呼び出され得、メッセージが失われていないことを確実にし得る。タイムアウト等のためにポールする機能は、ミニドライバ２３０の振舞いのユーザカスタム化を可能にするために提供され得る。ミニドライバハンドラー２３０を動かすための３つのトリガー機構は、１）ポーリング機構５３２、２）タイマー割り込みベースのポーリング５３４、および３）デバイス割り込み機構５３６であり得る。代替的に、ハンドラー５１０は、このような任意の周知の様式を用いてトリガーされ得る。各トリガー機構が別々に実施され得、または、トリガー機構の組み合わせがブート処理３００を通して用いられ得る。フラグは、特定の場合においてハンドラーを呼び出すために用いられる機構を示すハンドラー５１０へパスされ得る。例えば、ＭＩＮＩＤＲＶＲ＿ＦＬＡＧ＿ＰＯＬＬＥＤのフラグ値は、ハンドラーが直接呼び出されたことを示し得、ＭＩＮＩＤＲＶＲ＿ＦＬＡＧ＿ＴＩＭＥＲ＿ＩＲＱの値は、ハンドラー５１０がタイマー割り込みを介して呼び出されたことを示し得、ＭＩＮＩＤＲＶＲ＿ＦＬＡＧ＿ＤＥＶＩＣＥ＿ＩＲＱの値は、ハンドラー５１０がデバイス割り込みを介して呼び出されたことを示し得る。フラグを用い、ミニドライバ２３０の振舞いが、ブート処理３００の各段階に対して最適化され得る。
【００４２】
ポーリング機構５３２は、周辺デバイスがデータまたはメッセージを有するか否かを確かめるために周辺デバイスに継続的に呼び掛けし得る。例えば、システムは、データがデバイスから受信されたか否かを決定するために、ブートシーケンス３００を通して様々な場合においてハンドラー４１０を呼び出し得る。ブートコードは、計略上、ブート処理３００を通してハンドラー５２０に機能呼び出しを配置し得る。代替的に、または、追加的に、システムタイマーは、デバイスがいつポールされる（５３２）べきであるかを決定するための時間の感覚を起こすために用いられ得る。
【００４３】
タイマー割り込みベースのポーリング機構５３４は、ポーリング機構５３２と割り込みベースのシステム５３６との組み合わせであり得る。例えば、ミニドライバハンドラー５１０は、システムタイマーの類似割り込みハンドラーベースのオフとして、付け加えられ得る。そのような場合において、ミニドライバは、ポーリングモードにあり得、それは、ハンドラー５１０がブート処理３００を通して明示的に呼び出される必要がないという利点を伴なう。さらに、タイマー機構は、システムの要求によって特定される最大データ率において割り込みを生成するように構成され得る。代替的に、または追加的に、割り込みは、任意の率において生成され得る。
【００４４】
最後に、デバイス割り込みトリガー機構５３６は、直接、デバイス割り込み５３６ソースに、ミニドライバハンドラー５１０を付け加えられ得る。そのようなシナリオにおいて、システムは、全体的に、ポーリングを避け得る。割り込みベースのトリガー機構５３６は、ブート処理３００へポーリング、またはタイマーコードを加える必要性を削除し得、しかし、割り込みベースのトリガーは、全システムにおいて、または全ブート処理３００を通して、可能でない可能性もある。代替的に、または、追加的に、ミニドライバハンドラー５１０は、ブート処理３００を通して、または、ミニドライバ２３０の有効期間中において、トリガー機構の任意の組み合わせを使用し得る。
【００４５】
これらのトリガー機構は、様々な様式において提供され得る。例えば、機能は、割り込みを初期化し、割り込みハンドラーを付け加え、タイマーを初期化し、現タイマー値を取得し、そして、経過時間を決定するために、提供され得る。これらの機能は、特定のデバイス、および使用されたシステムに特定され得、もしくは、プラットフォームに依存しなくあり得る。割り込みを初期化するために、ミニドライバ２３０は、ＣＰＵタスクおよびボード特定型タスクを行う必要があり得る。これらのタスクは、割り込みを受け入れるためにＣＰＵを構成すること、ミニドライバ２３０に関連するデバイス用の割り込みを生成するために割り込みコントローラを構成すること、を含み得る。割り込みハンドラー４１０を付け加えるために、例外テーブル２３２は、ミニドライバ割り込みが出される際、ハンドラー５１０を呼び出すように生成され得、また、構成され得る。当該技術において周知であるように、例外テーブルは、基礎を為すプラットフォームに従って、メモリ内の特定の位置において格納されなければならない可能性もある。タイマーを初期化するために、所望のタイマー解決が確立され得る。タイマーは、ミニドライバ２３０によって通常、使用され得、または、割り込みタイマーとして構成され得る。選択的に、フラグは、タイマ割り込みを可能にするために、および／または不能にするために使用され得る。例えば、ＭＤＲＶＲ＿ＴＭＲ＿ＩＮＴＲ＿ＥＮＡＢＬＥのフラグ値がタイマ割り込みを可能にし得る一方、ＭＤＲＶＲ＿ＴＭＲ＿ＩＮＴＲ＿ＤＩＳＡＢＬＥの値は、タイマー割り込みを不能にし得る。
【００４６】
上記のように、ミニドライバ２３０は、受信されたデータをバッファするのに必要であり得るデータ格納機能を含み得る。このバッファされたデータは、次に、フルドライバ３７０が一度ロードされると、フルドライバ３７０へパスされ得る。バッファされたデータ量、およびバッファリングに割当てされるべきであるメモリ量は、ハードウェアおよび／またはソフトウェア要求によって変化し得る。ユーザは、データバッファリングのための、ＲＡＭ内の任意の位置等の任意のメモリ位置を特定し得、メモリの安全な領域、またはメモリの保護された領域が、ミニドライバ２３０バッファリングに対して確保され得る。この位置は、カーネル２１４に伝えられるべきであり、それによって、メモリは、上書きされず、または、システムもしくはユーザアプリケーションに割当てされない。ＲＡＭの領域が、ミニドライバデータ格納のために割当てられる場合、この割当て処理は、ＲＡＭが初期化された後において、行われるべきである。メモリが割当てられたミニドライバ２３０は、システムによって、内部において管理され得ない。さらに、ミニドライバ２３０自体は、メモリの完全さを確実にすること、および、システムメモリが上書きをされないことを確実にすること、に対して責任があり得る。代替的に、メモリが割当てられたミニドライバ２３０は、システムメモリと共に管理され得る。ミニドライバ２３０に割当てられたメモリは、ミニドライバ２３０がフルドライバ３７０に推移した後に、開放され得る。
【００４７】
図６を参照し、例示的なブート処理２００の段階と、ミニドライバ推移処理５１２、５２２、および５５２との間の関係を示す図６００が示される。示されるように、例示的なブート処理２００は、カナダ、オンタリオ州、ＫａｎａｔａのＱＮＸ  Ｓｏｆｔｗａｒｅ  Ｓｙｓｔｅｍｓ  Ｌｔｄ．より提供される配信オペレーションシステムである、ＱＮＸ  Ｎｅｕｔｒｉｎｏ  ＲＴＯＳのブート処理であり得る。ブート処理２００は、様々な段階を含み得る。例えば、ＱＮＸ  Ｎｅｕｔｒｉｎｏブート処理は、Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ（ＩＰＬ）段階６１０、スタートアップ段階６２０、およびカーネルＩｎｉｔ段階６３０の３つの段階に分けられる。これらの段階、および、これらの段階において行われたブート処理２００機能は、単に例示的なものであり、特許請求の範囲を限定するように意図されるものではない。
【００４８】
ミニドライバ２３０は、ブート処理２００の任意の段階中において初期化され得、それは、ブート時間要求によって必要とされ得る。例えば、ミニドライバ２３０は、より厳しいタイミング要求を有するシステムのために、ＩＰＬ段階６１０中において初期化され得る。厳しさが低いブーティング要求を有するシステムのために、ミニドライバ２３０は、スタートアップ段階６２０、またはカーネルＩｎｉｔ段階６３０中において初期化され得る。代替的に、ミニドライバは、特定のブート段階においてのみ、初期化され得る。例えば、ミニドライバ２３０の初期化は、スタートアップ段階６２０のようなブート処理３００の特定の段階に限られ得る。ブート処理３００のどの段階かによって、ミニドライバ２３０は初期化され、様々な推移アクションもまた、ミニドライバ２３０がブート処理３００を通して呼び出され得ることを確実にするために必要であり得る。
【００４９】
最初は、ブート処理３００が、システムのリセットベクトル６０２に位置する実行命令を含み得る。ブート処理３００のこの段階は、ＩＰＬ段階６１０として参照され得、ハードウェアクロックおよびメモリを初期化するための命令、およびＯＳイメージのＲＡＭへコピーするための命令を含み得る。図７は、典型的なＩＰＬ段階６１０の処理の流れを示す例示的なフローチャートを示す。示されるように、ＩＰＬ段階６１０は、ステップ７１０において、システムのリセットベクトルに位置する実行命令を含み得る。これらの命令は、システムクロックを構成するために、メモリコントローラ等を構成するために、アセンブリコードを含み得る。次に、メイン機能は、ステップ７２０において、実行を開始し得る。メイン機能は、ＩＰＬ段階６１０のリマインダーを管理することに対して責任があり得る。そのような機能は、ステップ７３０におけるＯＳイメージのためのシステムのスキャン、ステップ７４０におけるＲＡＭへのＯＳイメージのコピー、および、ステップ７５０におけるスタートアップブート段階への推移を含む。
【００５０】
ＩＰＬ段階６１０中においてミニドライバを初期化するために、追加的なステップが取られ得る。図８は、ミニドライバ２３０を初期化するＩＰＬ段階を示す例示的なフローチャートである。示されるように、ＩＰＬ段階６１０はまた、ステップ８１０において、リセットベクトル命令を実行することによって開始し、その後、ＩＰＬメイン機能は、ステップ８２０において開始し得る。この時点において、ミニドライバはステップ８３０において初期化され得る。ＩＰＬ段階６１０のこの時点においてミニドライバ２３０を初期化することは、最も極端なタイミング要求を満たし得る。ミニドライバが、ＩＰＬ段階６１０以前において、初期化されなければならないこのような極端な状況において、ミニドライバ２３０は、ブート処理において、早期に初期化され得る。次に、ＩＰＬ段階６１０は、ステップ８４０におけるＯＳイメージのためのスキャンすること、ステップ８５０におけるＲＡＭへのＯＳイメージのコピーすること、および、ステップ８６０におけるコントロールをスタートアッププログラムへの伝達すること等の基本的な処理を行い続け得る。ミニドライバ２３０が割り込みにより駆動されるものでない場合（図示せず）、ハンドラー５１０がまた、ＩＰＬ段階６１０のリマインダ−を通して、様々なステージにおいて呼び出されなければならなくあり得ることは、留意されるべきである。
【００５１】
ミニドライバ２３０を初期化するために、様々なアクションが行われ得る。これらのアクションは、データの送受信を可能にするためのデバイスハードウェアを初期化すること、システムリソースを初期化すること等を含み得る。示されるように、デバイスはステップ８３２において初期化され得、タイマー機構はステップ８３４において初期化され得、デバイスの例外はステップ８３６において生成され得、割り込みはステップ８３８において初期化され得る。代替的に、または追加的に、他のアクションが初期化するために行われ得る。これらのアクションは、初期化された特定のデバイス、利用されたハードウェアプラットフォーム、および／または他のシステム情報に依存し得る。ステップ８３２、８３４、８３６、および８３８は、上記された、デバイス初期化機能、タイマ初期化機能、例外生成機能、および割り込み初期化機能を用いて行われ得る。代替的に、または追加的に、他の機能は、ミニドライバ２３０を初期化するために使用され得る。
【００５２】
一度、ＩＰＬ段階６１０が完了すると、推移（５１２）が、スタートアッププログラム６２０へブート処理のコントロールをパスするために起こり得る。スタートアッププログラム６２０は、ハードウェアの初期化、およびシステムページの確立等の追加的なブート処理に対して、カーネルによって必要とされ、システムのハードウェアリソースを記載するデータ構造に対して責任があり得る。例示的なスタートアッププログラム６２０の処理フローチャート９００が図９において示される。示されるように、スタートアップ段階は、そのメイン機能がステップ９１０においてＩＰＬによって実施される際、開始され得る。次に、ＯＳイメージは、必要であるならば、ステップ９２０において圧縮されない。ボード特定型初期化タスクは、ステップ９３０において実行され得、システムページは、ステップ９４０において生成され得る。代替的に、または追加的に、スタートプログラム６２０は他のタスクを行い得る。
【００５３】
ミニドライバ２３０がＩＰＬ段階６１０中において初期化される場合、この推移６１２は、ＩＰＬ６１０からスタートアッププログラム６２０への情報のパスを含み得る。この情報は、トリガー方法に依存し得る。例えば、ミニドライバ２３０が割り込みにより駆動される場合、スタートアッププログラム６２０は、デバイスをポールするために周期的にハンドラー５１０を呼び出す必要があり得、従って、ハンドラー５１０に関する情報を必要とし得る。ミニドライバスタートアップ情報構造は、ＩＰＬ６１０からスタートアッププログラム５２０へ情報をパスするために用いられ得る。例示的なミニドライバスタートアップ情報構造は、表１．０において示される。示されるように、スタートアップ情報構造はデータ要素を含み得る。ここにおいて、それらデータ要素は、ハンドラー５１０のアドレス、ハンドラー５１０のサイズ、割当てられたＲＡＭの位置、ミニドライバデータのサイズ、ミニドライバ２３０によって格納された全バイト数を示すために用いられる整数のアドレス、最低ポーリング時間、割り込み情報、例外ハンドラーの位置、現ハンドル機能トリガーモードの情報等を規定する。代替的に、または、追加的に、他のデータは、スタートアップ情報構造に含まれ得る。ＩＰＬ機能コールは、スタートアッププログラム６２０へコントロールを移動する（６１２）以前に、スタートアップ情報構造を容易に配置する（ｐｏｐｕｌａｔｅ）ために規定され得る。
【００５４】
【表２】
2006338664.tif 000004
代替的に、ミニドライバ２３０は、ブート処理のスタートアップ段階６２０において初期化され得る。ミニドライバ初期化処理は、いつ初期化が起こるか否かに関らず、また、初期化がＩＰＬ６１０において、またはスタートアップ段階６２０において起こるかに関らず同様のステップを含み得る。上記されるように、ミニドライバ初期化処理は、デバイスの初期化、ハンドラーの供給は勿論、送受信機能の供給、ならびに、場合により、タイマーおよび割り込みの初期化等を含み得る。タイミング要求によって、ミニドライバ２３０は、スタートアップ段階６２０における任意の点において初期化され得る。
【００５５】
図６を再び参照し、スタートアッププログラム６２０が一度、完了すると、スタートアッププログラム６２０はカーネルＩｎｉｔ段階６３０へコントロールを移動し得る（６２２）。ここにおいて、カーネルＩｎｉｔ段階６３０は、カーネル２１４を初期化し得、基準デバイスドライバ３７０のようなユーザアプリケーション６３２を開始する。ミニドライバ２３０が、ＩＰＬ段階６１０またはスタートアップ段階６２０のいずれかにおいて、初期化される場合、ミニドライバ２３０に関する情報は、カーネルＩｎｉｔ段階６３０へパスされる必要性があり得る。例えば、この情報は、システムページ２１６において新しいエントリを生成することによってパスされ得る。この処理を単純化するために、任意の初期化したミニドライバの情報をカーネル２１４へ示すために、スタートアッププログラム６２０によって呼び出され得る機能が生成され得る。この機能はミニドライバ２３０毎に呼び出され得、または、その機能は全ミニドライバ２３０に対して一度のみ呼び出され得る。例えば、各コールは、システムページ２１６のミニドライバセクションにおいて、エントリを動的に生成し得、ハンドラー構造４１０へ必要な情報を格納し得、そして、ミニドライバデータに関するメモリを確保し得る。このメモリの内容が、受信メッセージ等の有効なミニドライバデータを既に含み得るため、取り除かれるべきではないことは、留意されるべきである。例示的なミニドライバシステムページ２１６のエントリ、およびハンドラー構造は、それぞれ表３．０および表４．０において示される。
【００５６】
【表３】
2006338664.tif 000005
【００５７】
【表４】
2006338664.tif 000006
カーネルＩｎｉｔ段階６３０は、標準デバイスドライバ３７０のようなユーザアプリケーション６３２を開始し得るカーネル２１４の初期化に対して、主として責任があり得る。しかしながら、ミニドライバタイミング要求は、それでも、ブート処理３００のこの段階を通して、満たされるべきである。ミニドライバのダーク期間は、システムの初期化の任意の段階中における、不能にされた割り込みを伴なうミニドライバハンドラーのポール間における時間である。ダーク期間中において、ミニドライバは、周辺デバイス上のハードウェアイベントに応答することができない。ダーク期間の長さは、如何なるハードウェアイベントも、周辺デバイスの予期される間隔率において、見逃されないことを確実にするために十分な短さでなければならない。カーネルＩｎｉｔ段階５３０を介する、最長のミニドライバ２３０のダーク期間は、ミニドライバ２３０がサポートし得る最大のデータ率を規定し得る。代替的に、最大のデータ率は、任意の周知の方法を用いて選択され得る。最大ダーク期間は勿論、ハンドラー５１０の現割り込み（これがある場合は）のようなミニドライバハンドラー５１０に関する情報は、維持され得る。例えば、ミニドライバ２３０が割り込みにより駆動されるものでない場合、または、カーネルＩｎｉｔ６３０が任意の時点において、割り込みを不能にしようとする場合、カーネル２１４は、ミニドライバタイミング要求はそれでも満たされていることを確実にするべきであり、それは、既に動作可能である割り込みに対する対処能力を必要とし得る。例えば、一時的な例外テーブルは、ＩＰＬ６１０中またはスタートアッププログラム６２０中のいずれかにおいて、ミニドライバ２３０のために作成され得る。次に、この情報は、一時的なテーブルから、カーネルＩｎｉｔ段階６３０中において作成されるリアル例外テーブルへと転送される。カーネルＩｎｉｔ段階６３０は、ミニドライバ２３０のタイミング要求を満たすために、この処理を通して様々な折に、ミニドライバハンドラー６３０を呼び出し得る。これは、新しい例外テーブルを作成する時間が、最長ダーク期間よりも短いことを想定する。一度、リアル例外テーブルが作成されると、カーネル２１４は、ミニドライバ２３０の割り込み（ミニドライバ２３０の割り込みがタイマー、またはドライバ割り込み駆動のどちらかであるに関らず）の継続的な動作を可能にし得る。例えば、ミニドライバハンドラー５１０は、リアル例外テーブル２１８へ転送され得る。次に、カーネルＩｎｉｔ段階６３０は、割り込みがリアル例外テーブルに移し変えられた後、全ての割り込みを動作可能にし得る。代替的に、または追加的に、割り込みは、任意の周知の方法を用いて対処され得る。追加的に、カーネルＩｎｉｔ段階６３０において、割り込みが不能にされ得る他の期間が存在し得る。
【００５８】
ＣＰＵが例外を対処するためにどのように構成されるかにより、ＩＰＬ６１０は、ＣＰＵのベクトルベースのレジスタ（ＶＢＲ）をプログラムすること等によって、ＳＨプラットホーム上のような、（リアル例外テーブル位置ではない）ＲＡＭにおける任意の選択された位置に、一時的な例外テーブルの位置を設定し得る。ＳＨプラットフォームは、Ｒｅｎｅｓａｓ製造の３２ビットＳＨマイクロプロセッサを使用する任意のコンピュータシステムである。次に、スタートアッププログラム６２０は、コントロールをカーネルＩｎｉｔ段階６３０へ転送する前に、ＶＢＲをリアル例外テーブルの位置に設定し得る。例えば、ミニドライバ２３０の一時的な例外テーブルは、カーネルＩｎｉｔ段階６３０への推移６２２前に不能にされ得る。
【００５９】
一度、カーネル２１４がブートされ、リアルデバイスドライバ３７０が操作可能になると、ミニドライバ２３０は、リアルデバイスドライバ３７０へコントロール６５２を移動し得る。例えば、ドライバ３７０は、コマンドラインオプションを含み得、そのコマンドラインオプションは、ミニドライバ２３０をドライバに通知し、コントロール６５２の移動に必要な様々なオペレーションをトリガーする。例示的な推移アクティビティは、少なくとも部分的には動作可能であるべきなハードウェアの初期化の変更、ハードウェアのＦＩＦＯまたはバッファからの有効なデータの回復、および、クライアントアプリケーションに対して利用可能にするために、ミニドライバのメモリストアからその内部データバッファへのデータの付け足し（ここにおいて、ミニドライバのメモリストアのアドレスは、システムページ２１６から取得され得る）を含み得る。リアルデバイスドライバ３７０はまた、ミニドライバ割り込みハンドラー４１０と、リアルデバイスドライバ自体の割り込みハンドラーとの間における円滑な推移を要求し得る。例えば、フラグは、カーネル２１４を、現存の割り込みハンドラーから新しい割り込みハンドラーに置き換えるために用いられ得る。一度、リアルデバイスドライバ３７０が、割り込みハンドラーを置き換え、ミニドライバデータを読み出すと、ミニドライバデータメモリは、開放され、そうでなければ、再割当てされ得る。
【００６０】
ミニドライバ２３０からリアルデバイスドライバ３７０への例示的な推移６５２が図１０において示される。示されるように、推移６５２は、ステップ１０１０において、完全に、または部分的に、のいずれかに、ハードウェアを初期化することによって開始され得る。次に、ドライバ３７０は、ステップ１０２０においてシステムページのミニドライバのエントリを位置し得、ステップ１０３０において割り込みに付けられ得る。ミニドライバ３３０は、次に、ステップ１０４０において、任意の必要なクリーンアップを行い得、デバイス割り込みを不能にし得る。フルドライバ３７０が割り込みに好結果に付けられることが可能であった場合、割り込みは、ステップ１０５０において、再び動作可能にされ得る。ミニドライバ２３０データは、ステップ１０６０において、リアルドライバ３７０の受信バッファに転送され得る。選択的に、ミニドライバ２３０データメモリは、ステップ１０７０において再割当てされ得る。最後に、ミニドライバデータは、リアルドライバ３７０が通常オペレーションを開始する前に、ステップ１０８０においてリアルドライバ２７０によって受信された新しい任意のデータと同期され得る。リアルドライバ３７０は、ミニドライバストレージバッファに格納されたミニドライバデータを、リアルドライバ３７０のデータバッファにコピーし得る。ミニドライバデータと新しいデータの同期は、絶え間なく行われ得、それによって、データが正しい順序にあるように見える。ここにおいて、データは、システム内の他のアプリケーションから受信される。例えば、ストレージバッファ３２０にあるミニドライバデータが、リアルドライバ３７０のデータバッファにコピーされる間、リアルドライバ３７０は、ハードウェアから割り込みを受信し得、それは、新しいデータが受信されたことを示す。リアルドライバ３７０がミニドライバストレージバッファ３２０のコピーを管理できなければならない一方、この新しいデータは、ハードウェアから受信される。リアルドライバ３７０はまた、データの同期を維持し得る。リアルドライバ３７０は、データの同期を維持し、絶え間のない推移を作成し得る。その絶え間のない推移は、リアルドライバ３７０データバッファの最初にミニドライバデータをコピーし、受信された新しいデータをリアルドライバ３７０データバッファの最後に付け加えることによって作成される。これは、他のアプリケーションが、リアルドライバ３７０によって受信された新しいデータへアクセスする前に、ミニドライバ２３０によって受信されたデータに先ずアクセスすることを可能にする。
【００６１】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。
【００６２】
車輌テレマティックシステムによって指示されるタイミング要求のような、厳しいブート時間要求を満たすための頑丈なシステムが記載される。現コンピュータシステムは、入力／出力リクエストのようなリクエストを提供するためにコプロセッサのような高価なハードウェアを使用する。ここにおいて、リクエストとは、メモリ内にオペレーティングシステムをロードするのに必要な時間よりも短いタイミング要求を有する。その代わり、ミニドライバは、これらのリクエストを提供するために、オペレーティングシステムがロードされる前に、ブート処理の早期の時点において初期化され得る。例えば、ミニドライバは、入ってくるデータをバッファし得、および／または、入ってくるメッセージに対して返信し得る。オペレーティングシステムがロードされた後、第２のデバイスドライバは初期化され得、ミニドライバは、第２のドライバへ推移され得る。
【図面の簡単な説明】
【００６３】
【図１】ＣＡＮバスマスターデバイスを用いるシステムのための例示的なブートタイミングシーケンスを示す。
【図２】リアルタイムオペレーティングシステムを用いる例示的な装置を示す。
【図３】ブートオペレーション中において一つ以上のデバイスミニドライバを用いる例示的なリアルタイムオペレーティングシステムを示す。
【図４】ブートオペレーション中において一つ以上のデバイスミニドライバを用いるさらなる例示的なリアルタイムオペレーティングシステムを示す。
【図５】ミニドライバの例示的な論理アーキテクチャを示す。
【図６】ブート処理の段階とミニドライバとの間に存在し得る例示的な関係を示す。
【図７】ブート処理の最初のプログラムローダ段階を実施するための例示的な処理を示すフローチャートである。
【図８】ミニドライバを初期化するブート処理の最初のプログラムローダ段階を実施するための例示的な処理を示すフローチャートである。
【図９】ブート処理のスタートアッププログラム段階を実施するための例示的な処理を示すフローチャートである。
【図１０】ミニドライバオペレーションから全機能搭載型デバイスドライバへのシステムの例示的な推移を示すフローチャートである。
【符号の説明】
【００６４】
２０２  中央演算処理ユニット（ＣＰＵ）
２１０  メモリ
２１２  オペレーティングシステム
２１４  カーネル
２１６  システムページ
２１８  例外テーブル
２２０  ブートモジュール
２３０  ミニドライバ
２３２  一時的な例外テーブル
２４０  周辺デバイス
【図１】
2006338664.tif 000007
【図２】
2006338664.tif 000008
【図３】
2006338664.tif 000009
【図４】
2006338664.tif 000010
【図５】
2006338664.tif 000011
【図６】
2006338664.tif 000012
【図７】
2006338664.tif 000013
【図８】
2006338664.tif 000014
【図９】
2006338664.tif 000015
【図１０】
2006338664.tif 000016