(57)【要約】【課題】ハードウェアとオペレーティングシステム（ＯＳ）の組み合わせに依存せず、ユーザモードで動作するアプリケーションから各ハードウェアを制御すること。【解決手段】カーネルモードとユーザモードとを有するＯＳを実行するものであり、複数のハードウェア処理部と、カーネルモードで動作し、複数のハードウェア処理部のそれぞれと対応するインタフェースと、複数のハードウェア処理部のそれぞれと対応するデバイスドライバに対する共通のインタフェースと、を有するハードウェア抽象化層と、ハードウェア抽象化層を制御するハードウェア抽象化層制御部とを備える。ハードウェア抽象化層制御部は、ユーザモードで動作するプログラムから、複数のハードウェア処理部のいずれかに対する制御要求を受け付け、ハードウェア抽象化層において、共通のインタフェースを用いて、制御要求により特定されるハードウェア処理部に関する制御を行う。【選択図】図４
2009252194.tif 000002
【特許請求の範囲】
【請求項１】
カーネルモードとユーザモードとを有するオペレーティングシステムを実行するデータ処理装置であって、
複数のハードウェア処理部と、
前記カーネルモードで動作し、前記複数のハードウェア処理部のそれぞれと対応するインタフェースと、前記複数のハードウェア処理部のそれぞれと対応するデバイスドライバに対する共通のインタフェースと、を有するハードウェア抽象化層と、
前記ハードウェア抽象化層を制御するハードウェア抽象化層制御部とを備え、
前記ハードウェア抽象化層制御部は、
前記ユーザモードで動作するプログラムから、前記複数のハードウェア処理部のいずれかに対する制御要求を受け付け、前記ハードウェア抽象化層において、前記共通のインタフェースを用いて、前記制御要求により特定されるハードウェア処理部に関する制御を行う、データ処理装置。
【請求項２】
前記ハードウェア抽象化層制御部は、
前記制御要求を前記オペレーティングシステムのインタフェースを介して受け付け、当該制御要求に基づき、前記ハードウェア抽象化層を呼び出す、請求項１に記載のデータ処理装置。
【請求項３】
前記ハードウェア抽象化層制御部は、
前記ハードウェア処理部を識別するデバイス識別情報と、前記ハードウェア処理部に関する処理を行うハードウェア処理関数を識別する関数識別情報と、前記ハードウェア処理関数に用いるパラメータ値とが格納されたリクエストデータを前記制御要求に含めて前記ハードウェア抽象化層を呼び出す、請求項２に記載のデータ処理装置。
【請求項４】
前記ユーザモードで動作するプログラムは、
前記デバイス識別情報と、前記関数識別情報と、前記パラメータ値とを前記リクエストデータに格納し、当該リクエストデータを前記制御要求に含め、当該制御要求を前記オペレーティングシステムのインタフェースへ変換する、請求項３に記載のデータ処理装置。
【請求項５】
前記ユーザモードで動作するプログラムは、前記複数のハードウェア処理部に対応する複数のデバイスドライバであり、
前記ハードウェア抽象化層制御部は、前記複数のデバイスドライバから前記ハードウェア処理部への制御要求を受け付ける、請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記ハードウェア抽象化層は、前記ハードウェア処理部を制御するための処理関数を備え、
前記デバイスドライバ及び前記ユーザモードで動作するプログラムは、前記処理関数を呼び出すための処理関数呼び出し部を備える請求項１に記載のデータ処理装置。
【請求項７】
前記ハードウェア抽象化層制御部は、前記ユーザモードで動作するプログラムの処理関数呼び出しを、前記カーネルモードで動作する処理関数呼び出しに変換することで、前記処理関数を呼び出す請求項６に記載のデータ処理装置。
【請求項８】
カーネルモードとユーザモードとを有するオペレーティングシステムと、前記カーネルモードで動作し、複数のハードウェア処理部のそれぞれと対応するインタフェースと、前記複数のハードウェア処理部のそれぞれと対応するデバイスドライバに対する共通のインタフェースを有するハードウェア抽象化層とを備えるコンピュータに前記複数のハードウェア処理部へのアクセス処理を実行させるハードウェアアクセス方法であって、
前記ユーザモードで動作するプログラムから、前記複数のハードウェア処理部のいずれかに対する制御要求を受け付ける制御要求受付ステップと、
前記ハードウェア抽象化層に対して、前記共通インタフェースを介して、前記制御要求により特定されるハードウェア処理部に関する制御を実行させるハードウェア抽象化層呼び出しステップとを備える、ハードウェアアクセス方法。
【請求項９】
前記制御要求受付ステップは、前記制御要求を前記オペレーティングシステムのインタフェースを介して受け付けることを特徴とする、請求項８に記載のハードウェアアクセス方法。
【請求項１０】
前記ハードウェア抽象化層呼び出しステップは、前記ハードウェア処理部を識別するデバイス識別情報と、前記ハードウェア処理部に関する処理を行うハードウェア処理関数を識別する関数識別情報と、前記ハードウェア処理関数に用いるパラメータ値とが格納されたリクエストデータを前記制御要求に含めて前記ハードウェア抽象化層を呼び出す、請求項８又は９に記載のハードウェアアクセス方法。
【請求項１１】
前記制御要求受付ステップは、前記複数のハードウェア処理部に対応する複数のデバイスドライバから前記ハードウェア処理部への制御要求を更に受け付ける、請求項８乃至１０のいずれか１項に記載のハードウェアアクセス方法。
【請求項１２】
前記デバイスドライバを動作させるステップと、
前記デバイスドライバの動作中に、前記ユーザモードで動作するプログラムから、前記ハードウェア抽象化層を介して、前記ハードウェア処理部の情報を取得するハードウェア情報取得ステップとをさらに備える請求項８乃至１１のいずれか１項に記載のハードウェアアクセス方法。
【請求項１３】
前記デバイスドライバ及び前記ユーザモードで動作するプログラムから、前記ハードウェア処理部を制御するために前記ハードウェア抽象化層が備える処理関数を呼び出すための処理関数呼び出しステップを備える請求項８に記載のハードウェアアクセス方法。
【請求項１４】
前記ハードウェア抽象化層呼び出しステップは、前記ユーザモードで動作するプログラムの処理関数呼び出しを、前記カーネルモードで動作する処理関数呼び出しに変換することで、前記処理関数を呼び出す請求項１３に記載のハードウェアアクセス方法。
【請求項１５】
カーネルモードとユーザモードとを有するオペレーティングシステムと、前記カーネルモードで動作し、複数のハードウェア処理部のそれぞれと対応するインタフェースと、前記複数のハードウェア処理部のそれぞれと対応するデバイスドライバに対する共通のインタフェースを有するハードウェア抽象化層とを備えるコンピュータに前記複数のハードウェア処理部へのアクセス処理を実行させるハードウェアアクセスプログラムであって、
前記ユーザモードで動作するプログラムから、前記複数のハードウェア処理部のいずれかに対する制御要求を受け付ける制御要求受付手段と、
前記ハードウェア抽象化層に対して、前記共通インタフェースを介して、前記制御要求により特定されるハードウェア処理部に関する制御を実行させるハードウェア抽象化層呼び出し手段とを備える、ハードウェアアクセスプログラム。
【請求項１６】
前記制御要求受付手段は、前記制御要求を前記オペレーティングシステムのインタフェースを介して受け付けることを特徴とする、請求項１５に記載のハードウェアアクセスプログラム。
【請求項１７】
前記ハードウェア抽象化層呼び出し手段は、前記ハードウェア処理部を識別するデバイス識別情報と、前記ハードウェア処理部に関する処理を行うハードウェア処理関数を識別する関数識別情報と、前記ハードウェア処理関数に用いるパラメータ値とが格納されたリクエストデータを前記制御要求に含めて前記ハードウェア抽象化層を呼び出す、請求項１５又は１６に記載のハードウェアアクセスプログラム。
【請求項１８】
前記制御要求受付手段は、前記複数のハードウェア処理部に対応する複数のデバイスドライバから前記ハードウェア処理部への制御要求を更に受け付ける、請求項１５乃至１７のいずれか１項に記載のハードウェアアクセスプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラムに関し、特にハードウェアとＯＳ（Operating System）の組み合わせに依存せず、ユーザモードで動作するアプリケーションから各ハードウェアを制御するデータ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラムに関する。
【背景技術】
【０００２】
近年、組み込みシステムの分野において、機器の複合機能化が進行している。それに伴い、機器、及び周辺機器（以降、デバイスと呼ぶ）と、ＯＳとの組み合わせが多様化している。
【０００３】
また、デバイスとＯＳとを仲介し、ＯＳがデバイスを制御することを橋渡しするソフトウェアとしてデバイスドライバがある。組み込みシステムにおいては、デバイスドライバは、ＯＳ等と同じく、予めＲＯＭ（Read Only Memory）に焼き付ける必要がある。また、組み込みシステムに新しいデバイスを導入するためには、当該デバイスに対応するアプリケーション及びデバイスドライバを開発する必要がある。その際、デバイスを制御するためのパラメータ値を調整し、都度、アプリケーションとデバイスドライバとの整合性を取って修正する必要がある。
【０００４】
しかし、通常のアプリケーションを修正し、再インストールすることは容易であるが、ＯＳとの結びつきが強いデバイスドライバを、再インストールする手順は煩雑である。また、通常のアプリケーションは、ＣＰＵ（Central Processing Unit）の動作に制限があるユーザモードで動作するため、ＣＰＵの動作に制限がないカーネルモードで動作するデバイスドライバを、直接操作することができない。そのため、アプリケーションとデバイスドライバとの整合性を取って修正することが困難である。そこで、デバイスドライバを、ユーザモードにおいてアプリケーションとのインタフェースを行うＤＬＬ（Dynamic Link Library）の内部に埋め込む、という技術が特許文献１に開示されている。
【特許文献１】特開２００１−２２２４１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、ハードウェア（デバイス）ごとにＤＬＬを作成しなければならない。そのため、開発、テストの効率が悪い、という問題点がある。それは、デバイスドライバがハードウェアに依存した処理をそれぞれ備えているため、ハードウェアの仕様変更に影響を受け、都度、デバイスドライバを修正する必要があるためである。さらに、組み込みシステムにおけるデバイスドライバの修正は、ＲＯＭの焼き直し作業が発生するため、テストの作業効率が下がる。
【課題を解決するための手段】
【０００６】
本発明にかかるデータ処理装置は、カーネルモードとユーザモードとを有するオペレーティングシステムを実行するものであり、複数のハードウェア処理部と、前記カーネルモードで動作し、前記複数のハードウェア処理部のそれぞれと対応するインタフェースと、前記複数のハードウェア処理部のそれぞれと対応するデバイスドライバに対する共通のインタフェースと、を有するハードウェア抽象化層と、前記ハードウェア抽象化層を制御するハードウェア抽象化層制御部とを備える。前記ハードウェア抽象化層制御部は、前記ユーザモードで動作するプログラムから、前記複数のハードウェア処理部のいずれかに対する制御要求を受け付け、前記ハードウェア抽象化層において、前記共通のインタフェースを用いて、前記制御要求により特定されるハードウェア処理部に関する制御を行う。
【０００７】
これにより、ハードウェアとＯＳの組み合わせに依存せず、ハードウェア抽象化層制御部により、ユーザモードで動作するアプリケーションから各ハードウェアを制御する仕組みを提供することができる。そのため、組み込みシステムの開発、デバッグ、評価の作業効率を向上させることができる。
【０００８】
本発明にかかるハードウェアアクセス方法は、カーネルモードとユーザモードとを有するオペレーティングシステムと、前記カーネルモードで動作し、複数のハードウェア処理部のそれぞれと対応するインタフェースと、前記複数のハードウェア処理部のそれぞれと対応するデバイスドライバに対する共通のインタフェースを有するハードウェア抽象化層とを備えるコンピュータに前記複数のハードウェア処理部へのアクセス処理を実行させるものである。前記ユーザモードで動作するプログラムから、前記複数のハードウェア処理部のいずれかに対する制御要求を受け付ける制御要求受付ステップと、前記ハードウェア抽象化層に対して、前記共通インタフェースを介して、前記制御要求により特定されるハードウェア処理部に関する制御を実行させるハードウェア抽象化層呼び出しステップとを備える。
【０００９】
これにより、制御要求を一括して受け付けて、カーネルモードで動作するハードウェア抽象化層を呼び出す方法を提供することができる。
【００１０】
本発明にかかるハードウェアアクセスプログラムは、カーネルモードとユーザモードとを有するオペレーティングシステムと、前記カーネルモードで動作し、複数のハードウェア処理部のそれぞれと対応するインタフェースと、前記複数のハードウェア処理部のそれぞれと対応するデバイスドライバに対する共通のインタフェースを有するハードウェア抽象化層とを備えるコンピュータに前記複数のハードウェア処理部へのアクセス処理を実行させるものである。前記ユーザモードで動作するプログラムから、前記複数のハードウェア処理部のいずれかに対する制御要求を受け付ける制御要求受付手段と、前記ハードウェア抽象化層に対して、前記共通インタフェースを介して、前記制御要求により特定されるハードウェア処理部に関する制御を実行させるハードウェア抽象化層呼び出し手段とを備える。
【００１１】
これにより、ユーザモードで動作するプログラムからの制御要求をカーネルモードで動作するハードウェア抽象化層を呼び出すプログラムを提供することができる。
【発明の効果】
【００１２】
本発明により、ハードウェアとＯＳの組み合わせに依存せず、ユーザモードで動作するアプリケーションから各ハードウェアを制御するデータ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
発明の実施の形態１．
【００１４】
本発明の実施の形態１では、組み込みシステムにおけるハードウェア、及びデバイスの設定パラメータを評価する作業を対象とする。
【００１５】
図１は、本発明の実施の形態１にかかるハードウェア設定パラメータ評価システム１００による評価作業の機器構成図の例を示すブロック図である。ハードウェア設定パラメータ評価システム１００は、ハードウェア２の設定パラメータが定義された評価プログラムを評価ボード１上で実行し、評価ボード１に接続されたハードウェア２を操作することにより当該設定パラメータの評価を行うものである。ハードウェア設定パラメータ評価システム１００は、評価ボード１と、ハードウェア２と、端末３と、デバッガ装置４とを備える。
【００１６】
ハードウェア２は、組み込みシステムに用いられる各種ハードウェア装置であり、例えば、ディスプレイ、ＵＳＢ（Universal Serial Bus）ハードディスク装置等である。
【００１７】
評価ボード１は、組み込みシステムを構成する各種ハードウェア部品が配置された基盤であり、具体的には、ハードウェア２と、端末３と、デバッガ装置４とに接続され、ハードウェア２を操作するためのＯＳ等のソフトウェアがインストールされている。評価ボード１は、ＣＰＵ１１と、デバイス１２と、端子１３と、メモリ１４と、ＲＯＭ（ＯＳ）１５と、ＲＯＭ（ＨＡＬ）１６と、端子１７と、検査端子１８とを備える。
【００１８】
ＣＰＵ１１は、メモリ１４と、ＲＯＭ（ＯＳ）１５と、ＲＯＭ（ＨＡＬ）１６とに格納されたソフトウェアを実行する制御装置である。具体的には、ＣＰＵ１１は、デバイス１２へアクセスし、端子１３を介してハードウェア２を操作する。
【００１９】
デバイス１２は、ＣＰＵ１１からの命令を受け付け、端子１３を介してハードウェア２を操作するコントローラである。デバイス１２は、ハードウェア２ごとに存在する。また、端子１３は、ハードウェア２と接続され、デバイス１２とハードウェア２との通信を行うための端子である。例えば、ハードウェア２がディスプレイ装置である場合、端子１３は、Ｄ３端子であればよい。
【００２０】
メモリ１４は、揮発性の記憶装置であるＲＡＭ（Random Access Memory）であり、例えば、ＤＲＡＭ（Dynamic Random Access Memory）等であればよい。メモリ１４は、ＲＯＭ（ＯＳ）１５、ＲＯＭ（ＨＡＬ）１６、又は、外部からインストールされる評価プログラムを格納する。
【００２１】
ＲＯＭ（ＯＳ）１５は、読み出し専用の記憶装置であり、カーネルモードとユーザモードとを有し、複数の組み込みシステムに用いられる汎用的なオペレーティングシステム（ＯＳ）が格納されている。ＲＯＭ（ＯＳ）１５には、当該ＯＳが予め焼き付けられている。汎用的なＯＳとは、例えば、Ｗｉｎｄｏｗｓ（登録商標）  ＣＥ、又は、Ｌｉｎｕｘ（登録商標）等である。
【００２２】
ＲＯＭ（ＨＡＬ）１６は、読み出し専用の記憶装置であり、ハードウェア２を含む各種ハードウェアの操作を隠ぺいしたソフトウェアモジュールであるＨＡＬ（Hardware Abstraction Layer）、及び、アプリケーションからＨＡＬへのアクセスを共通化して受け付けるＨＡＬドライバが格納されている。ＲＯＭ（ＨＡＬ）１６には、当該ＨＡＬ、及び、ＨＡＬドライバが予め記憶されている。尚、ＨＡＬについては、図２で後述する。また、ＨＡＬ、及びＨＡＬドライバについては、図４で後述する。
【００２３】
また、端子１７は、端末３と接続され、例えば、ＲＳ−２３２Ｃの通信規格に用いられるシリアル端子である。検査端子１８は、デバッガ装置４と接続され、ＣＰＵ１１、及びメモリ１４の状態、並びに、レジスタの値を検出し、デバッガ装置４へ出力する端子である。検査端子１８は、例えば、ＪＴＡＧ（Joint Test Action Group）規格に用いられる端子である。
【００２４】
端末３は、評価ボード１と、デバッガ装置４とに接続された汎用的なコンピュータシステムである。端末３は、図示しない構成として、ＣＰＵ、ＲＡＭ、ＲＯＭ、及び不揮発性記憶装置を備える。端末３は、ＣＰＵがＲＡＭ、ＲＯＭ，又は不揮発性記憶装置に格納されたＯＳ、端末エミュレータプログラム等を読み込み、実行する。これにより、端末３は、評価ボード１に接続し、評価プログラムの実行を行う。また、端末３は、デバッガ装置４からのデバッグ情報を受信し、表示する。これにより、端末３を操作するユーザが評価プログラムの実行結果を確認することができる。
【００２５】
デバッガ装置４は、組み込みシステムを開発する際に使うデバッガである。デバッガ装置４は、検査端子１８からのＣＰＵ１１、及びメモリ１４の状態、並びに、レジスタの値を受信し、デバッグ情報として端末３へ送信する。
【００２６】
このように、評価ボード１は、ＣＰＵ１１により、メモリ１４に読み込まれたＯＳ、ＨＡＬ、ＨＡＬドライバ、及び評価プログラムを実行することにより、設定パラメータに基づいて、デバイス１２に処理を行わせてハードウェア２を操作し、その際のＣＰＵ１１、メモリ１４等の状態をデバッガ装置４により取得することで、当該設定パラメータの評価を行うことができる。
【００２７】
次に、本発明の実施の形態１にかかるＨＡＬについて説明する。図２は、本発明の実施の形態１にかかるＨＡＬのモジュール構成を示すブロック図である。図２に示すＨＡＬのモジュール構成は、ＨＡＬ５と、デバイス１２１乃至１２３とからなる。デバイス１２１乃至１２３は、図１のデバイス１２と同等のものであり、それぞれ異なるハードウェアに対応するデバイスである。
【００２８】
ＨＡＬ５は、デバイス１２１乃至１２３のいずれかに対する制御要求を、上述したＨＡＬドライバや、デバイス１２１乃至１２３のいずれかに対応するデバイスドライバから受け付け、該当するデバイス１２１乃至１２３のいずれかにアクセスを行うことで、デバイス１２１乃至１２３のいずれかに対応するハードウェア（例えば、図１のハードウェア２）の操作を行うものである。ＨＡＬ５は、Ａｎｃｈｏｒ  Ｐｏｉｎｔｅｒ５００と、共通管理領域５３と、ＨＡＬ  Ｄｅｖｉｃｅ固有部５４１乃至５４３とを備える。
【００２９】
Ａｎｃｈｏｒ  Ｐｏｉｎｔｅｒ５００は、ＨＡＬの初期化時に、ＣＰＵ１１によりＲＯＭ（ＨＡＬ）１６からメモリ１４上に読み込まれる際の開始アドレスの値である。そのため、以降の処理は、Ａｎｃｈｏｒ  Ｐｏｉｎｔｅｒ５００を起点にしてメモリ１４内を参照することができる。
【００３０】
ＨＡＬ５は、各種デバイスへのインデクス情報を格納する共通管理領域５３と、デバイスごとの固有の定義情報を格納するＨＡＬ  Ｄｅｖｉｃｅ固有部５４１乃至５４３とを備える。
【００３１】
共通管理領域５３は、ＨＡＬ  Ｄｅｖｉｃｅ固有部５４１へのインデクス情報であるデバイスエントリ５３１と、ＨＡＬ  Ｄｅｖｉｃｅ固有部５４２へのインデクス情報であるデバイスエントリ５３２と、ＨＡＬ  Ｄｅｖｉｃｅ固有部５４３へのインデクス情報であるデバイスエントリ５３３とを備える。
【００３２】
ＨＡＬ  Ｄｅｖｉｃｅ固有部５４１乃至５４３は、それぞれデバイス１２１乃至１２３に対応する。以下では、例として、ＨＡＬ  Ｄｅｖｉｃｅ固有部５４１について説明し、ＨＡＬ  Ｄｅｖｉｃｅ固有部５４２、及びＨＡＬ  Ｄｅｖｉｃｅ固有部５４３については、ＨＡＬ  Ｄｅｖｉｃｅ固有部５４１と同様であるため、説明を省略する。
【００３３】
ＨＡＬ  Ｄｅｖｉｃｅ固有部５４１は、デバイスブロック（ＤＢ）５５と、関数テーブル（ＦＴ）５６と、ＨＡＬ関数５７とを備える。デバイスブロック５５は、ＨＡＬ内部で利用するＨＡＬ操作情報を格納する構造体である。ＨＡＬ操作情報とは、例えば、デバイスの識別情報であるデバイスＩＤ、当該デバイスのＲｅｖｉｓｉｏｎ、図３の後述するＲｅｑｕｅｓｔ  Ｄａｔａの長さ、デバイスの状態情報、ポートアドレス等である。関数テーブル５６は、ＨＡＬ５から各種デバイスへアクセスするため処理が定義されたＨＡＬ関数のポインタテーブルである構造体である。また、ＨＡＬ関数５７は、上述したようにＨＡＬ５からデバイス１２１へアクセスし操作するための処理が定義された各種関数（機能）である。
【００３４】
ここで、デバイスエントリ５３１は、デバイスブロック５５へのポインタであるＤＢ  Ｐｏｉｎｔｅｒ５３４と、関数テーブル５６へのポインタであるＦＴ  Ｐｏｉｎｔｅｒ５３５が格納されるＨＡＬ  Ｄｅｖｉｃｅ固有部５４１へのインデクス情報である。同様に、デバイスエントリ５３２、及びデバイスエントリ５３３は、それぞれＨＡＬ  Ｄｅｖｉｃｅ固有部５４２、及びＨＡＬ  Ｄｅｖｉｃｅ固有部５４３へのインデクス情報であるため、図示、及び説明は省略する。
【００３５】
また、共通管理領域５３、デバイスブロック５５、関数テーブル５６、及び図３に例示するＲｅｑｕｅｓｔ  Ｄａｔａは、初期化時に、メモリ１４に領域を確保される。また、ＨＡＬ関数５７には、全てのデバイスに共通する関数と、デバイス固有の関数とが存在する。尚、メモリ１４の領域に余裕がある場合、ＨＡＬ関数５７についても、初期化時に、メモリ１４に領域を確保されるようにしても構わない。それにより、実行速度がより速くなる。
【００３６】
また、ＨＡＬ５は、図２に示した他に、ＨＡＬへアクセスするプログラムに対して、デバイス検索関数とデバイス実行関数とを備える。デバイス検索関数は、Ｒｅｑｕｅｓｔ  Ｄａｔａで指定されたデバイスＩＤにより、各ＨＡＬ  Ｄｅｖｉｃｅ固有部内のデバイスブロック５５を検索して、デバイスとそのデバイスが有する関数テーブルを特定する。デバイス実行関数は、Ｒｅｑｕｅｓｔ  Ｄａｔａで指定されたＨＡＬ関数Ｎｏ（ナンバー）を、特定された関数テーブル５６に基づいて、ＨＡＬ関数に変換する。ＨＡＬ５は、変換されたＨＡＬ関数により、デバイスへのアクセスを行うことになる。ＨＡＬ関数Ｎｏとは、ＨＡＬ関数それぞれに付与されている番号である。これらにより、Ｒｅｑｕｅｓｔ  Ｄａｔａに基づいた制御対象のデバイスの特定と、ＨＡＬ関数の実行が可能となる。図９は、ＨＡＬ関数とＨＡＬ関数Ｎｏの一例である。
【００３７】
Ｒｅｑｕｅｓｔ  Ｄａｔａは、ＨＡＬへアクセスするあらゆるプログラム、及びＨＡＬで共通して利用するデータ構造を定義した構造体である。図３は、本発明の実施の形態１にかかるＲｅｑｕｅｓｔ  Ｄａｔａ８の構成例を示す図である。Ｒｅｑｕｅｓｔ  Ｄａｔａ８は、ＨＡＬ操作情報８１と、パラメータ情報８２とを備える。
【００３８】
ＨＡＬ操作情報８１は、各種デバイスに共通する固定長のパラメータデータの領域である。ＨＡＬ操作情報８１は、処理対象のデバイスを識別するデバイスＩＤ８１１と、実行対象のＨＡＬ関数５７を識別するＨＡＬ関数Ｎｏ８１２と、実行されるＨＡＬ関数の戻り値であるＲｅｔｕｒｎ  Ｃｏｄｅ８１３等とを備える。また、パラメータ情報８２は、各種デバイスに固有のパラメータデータの領域である。例えば、ディスプレイに関するデバイスの場合、パラメータ情報８２は、表示開始位置のＸ座標、及びＹ座標、画面の縦サイズ、横サイズ等であればよい。
【００３９】
以上のことにより、ＨＡＬへアクセスするあらゆるプログラムからＨＡＬ５の提供する全ての関数にアクセスすることが可能となる。
【００４０】
図４は、本発明の実施の形態１にかかるＨＡＬ評価プログラム、ＨＡＬドライバ、ＨＡＬ、及びデバイスの関係を示すブロック図である。尚、図４に示す、デバイスドライバ６２１乃至６２３は、図２に示したデバイス１２１乃至１２３にそれぞれ対応するデバイスドライバプログラムである。但し、デバイスドライバ６２１乃至６２３は、ハードウェア設定パラメータ評価システム１００においては、必ずしも必要としない。
【００４１】
図４では、まず、ユーザモードで動作するＨＡＬ評価プログラム７は、ユーザモード、及びカーネルモードで動作するＨＡＬドライバ６に対して、デバイス１２１乃至１２３のいずれかのデバイスへの設定パラメータをＲｅｑｕｅｓｔ  Ｄａｔａ８に格納し、当該デバイスを対象とする制御要求を送信する。次に、ＨＡＬドライバ６は、ＨＡＬ評価プログラム７からの様々な制御要求を一括して受信し、当該制御要求をＨＡＬ５へ送信する。その後、ＨＡＬ５は、ＨＡＬドライバ６からの制御要求、及びＲｅｑｕｅｓｔ  Ｄａｔａ８に基づき、デバイス１２１乃至１２３のいずれかのＨＡＬ関数を特定し、該当するデバイスへ特定されたＨＡＬ関数を実行する。そして、ＨＡＬ５は、デバイスからの実行結果を受信し、Ｒｅｑｕｅｓｔ  Ｄａｔａ８に格納し、戻り値をＨＡＬドライバ６へ返す。また、ＨＡＬドライバ６は、ＨＡＬ５からの戻り値に基づき、ＨＡＬ評価プログラム７へ処理を戻す。
【００４２】
ここでは、ＨＡＬ５は、共通インタフェース５０と、上述した図２の関数テーブル５６に相当する関数テーブル５１１乃至５１３と、上述した図２のＨＡＬ関数５７に相当するＨＡＬ関数５２１乃至５２３とを備えるものとする。共通インタフェース５０は、ＨＡＬドライバ６、及び、デバイスドライバ６２１乃至６２３からの制御要求を共通的に受け付けるインタフェースである。また、共通インタフェース５０は、Ｒｅｑｕｅｓｔ  Ｄａｔａ８に含まれるデバイスＩＤ８１１とＨＡＬ関数Ｎｏ８１２とから、共通管理領域５３を検索し、該当するデバイスエントリに含まれるＦＴ  Ｐｏｉｎｔｅｒ５３５から、例えば、関数テーブル５１１へアクセスし、関数テーブル５１１からＨＡＬ関数５２１を特定し、特定されたＨＡＬ関数５２１から、デバイス１２１へアクセスを行う。
【００４３】
図５は、本発明の実施の形態１にかかるＨＡＬ評価プログラム、ＨＡＬドライバ、及びＨＡＬの呼び出し関係の概念を示す図である。ＨＡＬ評価プログラム７には、ＨＡＬ関数呼び出し７１と、ＯＳ  Ｉ／Ｆ呼び出し７２とがプログラミングされている。ＨＡＬ関数呼び出し７１は、ＨＡＬ関数を呼び出すためのデバイスＩＤ、ＨＡＬ関数Ｎｏ、及びパラメータの設定をＲｅｑｕｅｓｔ  Ｄａｔａ８を用いて行った上で、ＨＡＬドライバに対して制御要求を行う形式で構成される。また、ＯＳ  Ｉ／Ｆ呼び出し７２は、ＨＡＬ関数呼び出し７１で設定されたＲｅｑｕｅｓｔ  Ｄａｔａ８と制御要求を、後述するＨＡＬドライバが有するＯＳ  Ｉ／Ｆ呼び出し処理部６１を呼び出すように変換するものである。ＯＳ  Ｉ／Ｆ呼び出し７２は、各ＯＳが提供するアプリケーションプログラミングインタフェース（ＡＰＩ）を利用して実現する。
【００４４】
ＨＡＬドライバ６は、ＯＳ  Ｉ／Ｆ呼び出し処理部６１と、ＨＡＬ関数呼び出し処理部６２とで構成される。ＯＳ  Ｉ／Ｆ呼び出し処理部６１は、ＡＰＩを介して、ＨＡＬ評価プログラム７からＲｅｑｕｅｓｔ  Ｄａｔａ８と制御要求を受け取る処理を行うものであり、ＨＡＬ関数呼び出し処理部６２は、受け取ったＲｅｑｕｅｓｔ  Ｄａｔａ８と制御要求に基づいて、ＨＡＬ５のデバイス実行関数を呼び出し、ＨＡＬ５にＨＡＬ関数の実行を行わせるものである。
【００４５】
ＨＡＬ５は、ＨＡＬ管理部（ＲＡＭ）５１によりデバイス実行関数を受け付け、Ｒｅｑｕｅｓｔ  Ｄａｔａ８、及びデバイス実行関数に基づき、ＨＡＬ関数（ＲＯＭ）５２を用いてデバイスへのアクセスを行う。
【００４６】
すなわち、ＨＡＬ評価プログラム７、及びＨＡＬドライバ６には、各ＯＳが提供するデバイスドライバに対するアプリケーションプログラミングインタフェース（ＡＰＩ）を隠ぺいした処理が実装されている。
【００４７】
ＨＡＬ評価プログラム７は、ユーザモードで動作するプログラムであるため、本来は、デバイスドライバのように、デバイス実行関数を直接呼び出すかのような処理をプログラミングすることはできない。そこで、本発明の実施の形態１では、ユーザモード、及びカーネルモードで動作するＨＡＬドライバ６を導入し、ＨＡＬドライバ６がＯＳ  Ｉ／Ｆ呼び出し処理部６１とＨＡＬ関数呼び出し処理部６２を実装することにより、ユーザモードで動作する評価プログラムの制御要求から、カーネルモードで動作するＨＡＬ５のデバイス実行関数を呼び出すことができるようにした。これにより、ＨＡＬ評価プログラム７において、デバイス実行関数を直接呼び出すかのようなＨＡＬ関数呼び出し７１のプログラミングを実装することができる。
【００４８】
これにより、ＨＡＬ評価プログラム７からきめ細かなパラメータ設定を行って、デバイスを操作し、ハードウェアへアクセスすることが可能となる。
【００４９】
従来、デバイスの操作を行うための処理は、デバイスドライバのプログラム内に、設定パラメータと、デバイス実行関数を呼び出す処理を記載する必要があった。デバイスドライバは、ＨＡＬ５と同じく、ＲＯＭ（ＨＡＬ）１６に予め記憶させておく必要があるため、修正を行うためには、再度、ＲＯＭ（ＨＡＬ）１６を作成し直す必要があった。
【００５０】
しかし、カーネルモードによるデバイス実行関数を呼び出す処理を実装したＨＡＬドライバ６の導入により、ＨＡＬ５、及びＨＡＬドライバ６をＲＯＭ（ＨＡＬ）１６に記憶させ、設定パラメータの記載は、ユーザモードで動作するＨＡＬ評価プログラム７に外出しすることが可能となる。そのため、ＨＡＬ評価プログラム７に記載されたパラメータ設定を変更する場合は、例えば、端末３上で、ＨＡＬ評価プログラム７を修正し、コンパイルし、端子１７を介してメモリ１４へロードすることにより、パラメータ設定の変更を確認することが可能となる。よって、ハードウェアの設定パラメータの評価作業の効率が向上する。または、評価ボード１がＵＳＢ端子を備え、ＨＡＬ評価プログラム７が外付けのハードウェアであるＵＳＢメモリ装置に格納されている場合、当該ＵＳＢメモリ装置をＵＳＢ端子に接続することにより、評価ボード１は、ＨＡＬ評価プログラム７を実行することができる。この場合、端末３から端子１７を介してＨＡＬ評価プログラム７をロードする必要がなくなり、ハードウェアの設定パラメータの評価作業の効率がさらに向上する。
【００５１】
また、ＯＳに依存するような部分は、ＯＳ  Ｉ／Ｆ呼び出し７２で吸収することができるため、ＨＡＬ関数呼び出し７１は、ＯＳに依存しないように構成することが可能となる。ＨＡＬ関数呼び出し７１と同様の記載を、別のＯＳや、他のカーネルモードで実行されるプログラムに流用することで、様々なデバイスへの操作を行うためのプログラムの作成、及びテストが容易となる。また、予め、ＨＡＬ評価プログラム７により動作確認が行われた処理が、他のプログラムへ実装されることになるので、ソフトウェアの品質が向上する。
【００５２】
続いて、図６乃至図８を用いて、本発明の実施の形態１にかかるＨＡＬ評価プログラム７、ＨＡＬドライバ６、及びＨＡＬ５の処理の流れを説明する。図６は、ＨＡＬ評価プログラム７のＨＡＬ評価処理の流れを示すフローチャート図である。また、ＨＡＬ評価プログラム７とＨＡＬドライバ６のプログラミング例を図１０で示す。なお、図１０は説明のための例に過ぎず、必ずしも正確なものではないことを予め断っておく。
【００５３】
まず、ＨＡＬ評価プログラム７は、Ｒｅｑｕｅｓｔ  Ｄａｔａ８の設定を行う（Ｓ１０１）。具体的には、ＨＡＬ評価プログラム７のＨＡＬ関数呼び出し７１において、処理対象のデバイスについてのデバイスＩＤ、及び各種パラメータ値をＲｅｑｕｅｓｔ  Ｄａｔａ８に格納する。図１０ではｐＲＥＱがＲｅｑｕｅｓｔ  Ｄａｔａ８に相当する構造体である。
【００５４】
次に、ＨＡＬ評価プログラム７は、ＨＡＬ関数の設定を行う（Ｓ１０２）。具体的には、ＨＡＬ関数呼び出し７１において、処理対象のデバイスに対して処理したいＨＡＬ関数ＮｏをＲｅｑｕｅｓｔ  Ｄａｔａ８に格納する。図１０ではｐＲＥＱのｆｕｎｃｔｉｏｎを設定しているコード群、例えば、コード７１１がこれに相当する。
【００５５】
その後、ＨＡＬ評価プログラム７は、ＨＡＬ関数の呼び出しを行う（Ｓ１０３）。具体的には、ＨＡＬ関数呼び出し７１において、デバイス実行関数を呼び出す。図１０では、＿ＤｅｖＨｅｌｐをコールしているコード７１２がこれに相当する。
【００５６】
そして、ＨＡＬ評価プログラム７は、ＨＡＬドライバ６を呼び出す（Ｓ１０４）。具体的には、ＨＡＬ関数呼び出し７１の呼び出しを受けて、ＯＳ  Ｉ／Ｆ呼び出し７２により、ＯＳのＡＰＩに変換して、ＯＳ  Ｉ／Ｆを呼び出し、ＯＳにより、ＨＡＬドライバ６が呼び出される。このとき、Ｒｅｑｕｅｓｔ  Ｄａｔａ８への参照もＨＡＬドライバ６へ渡される。
【００５７】
その後、ＨＡＬ評価プログラム７は、ＲｅｔｕｒｎＣｏｄｅがＳｕｃｃｅｓｓであるか否かを判定する（Ｓ１０５）。具体的には、ＯＳ  Ｉ／Ｆ呼び出し７２を経由してＨＡＬ関数呼び出し７１によりＨＡＬドライバ６からの実行結果を含むＲｅｑｕｅｓｔ  Ｄａｔａ８を受信し、Ｒｅｑｕｅｓｔ  Ｄａｔａ８に含まれるＲｅｔｕｒｎＣｏｄｅの内容を判定する。
【００５８】
ＲｅｔｕｒｎＣｏｄｅがＳｕｃｃｅｓｓである場合、ＨＡＬ評価プログラム７は、事後処理を行う（Ｓ１０６）。また、ＲｅｔｕｒｎＣｏｄｅがＳｕｃｃｅｓｓ以外である場合、ＨＡＬ評価プログラム７は、エラー処理を行う（Ｓ１０７）。これにより、ＨＡＬ評価プログラム７によるＨＡＬ評価処理を終了する。
【００５９】
次に、図７のフローチャート図を用いて、ＨＡＬドライバ６の処理の流れを説明する。まず、ＨＡＬドライバ６は、Ｒｅｑｕｅｓｔ  Ｄａｔａ８を取得する（Ｓ１１１）。具体的には、ＨＡＬドライバ６のＯＳ  Ｉ／Ｆ呼び出し処理部６１により、上述したＡＰＩからの呼び出しを受け、Ｒｅｑｕｅｓｔ  Ｄａｔａ８への参照を受け取る。
【００６０】
次に、ＨＡＬドライバ６は、ＨＡＬ関数を呼び出す（Ｓ１１２）。具体的には、ＯＳ  Ｉ／Ｆ呼び出し処理部６１により受け取ったＲｅｑｕｅｓｔ  Ｄａｔａ８に基づいて、デバイス実行関数を呼び出すことによりＨＡＬ５のＨＡＬ関数を呼び出す。図１０において、ＤｅｖＨｅｌｐをコールしているコード６２０がこれに相当する。
【００６１】
その後、ＨＡＬドライバ６は、ＨＡＬ５からの実行結果と、ＲｅｔｕｒｎＣｏｄｅとを受信する（Ｓ１１３）。具体的には、ＨＡＬ関数呼び出し処理部６２により、Ｒｅｑｕｅｓｔ  Ｄａｔａ８への参照を受け取る。
【００６２】
そして、ＨＡＬドライバ６は、受け取ったＲｅｑｕｅｓｔ  Ｄａｔａ８をＨＡＬ評価プログラム７へ返信して、処理を終了する。
【００６３】
続いて、図８のフローチャート図を用いて、ＨＡＬ５の処理の流れを説明する。まず、ＨＡＬ５は、Ｒｅｑｕｅｓｔ  Ｄａｔａ８を取得する（Ｓ１２１）。具体的には、ＨＡＬ管理部（ＲＡＭ）５１により、Ｒｅｑｕｅｓｔ  Ｄａｔａ８への参照を受け取る。
【００６４】
次に、ＨＡＬ５は、デバイスＩＤ、及びＨＡＬ関数Ｎｏに基づき、ＨＡＬ関数を特定する（Ｓ１２２）。具体的には、ＨＡＬ管理部（ＲＡＭ）５１により、Ｒｅｑｕｅｓｔ  Ｄａｔａ８に格納されたデバイスＩＤ、及びＨＡＬ関数Ｎｏから共通管理領域５３を参照し、対象となるＨＡＬ関数を特定する。
【００６５】
そして、ＨＡＬ５は、特定されたＨＡＬ関数を実行する（Ｓ１２３）。続いて、ＨＡＬ５は、実行結果、及び、戻り値であるＲｅｔｕｒｎＣｏｄｅをＲｅｑｕｅｓｔ  Ｄａｔａ８へ格納（Ｓ１２４）し、ＨＡＬドライバ６へ戻す。尚、このとき、デバイスの処理が完了しない場合、その旨をＲｅｔｕｒｎＣｏｄｅとしてＲｅｑｕｅｓｔ  Ｄａｔａ８へ格納し、ＨＡＬ５は処理を終了する。例えば、割り込み待ちのような場合、ＨＡＬ５、及びＨＡＬドライバ６は、ＲｅｔｕｒｎＣｏｄｅに格納された「割り込み待ち」をそのまま返し、ＨＡＬ評価プログラム７は、受け取ったＲｅｔｕｒｎＣｏｄｅを確認し、再度、処理要求を行うようにすればよい。
【００６６】
このように、本発明の実施の形態１では、複数のハードウェアに対応するそれぞれのデバイスに対して、ＨＡＬ５というハードウェア抽象化層と、ＨＡＬドライバ６というハードウェア抽象化層を制御する手段を設けた。また、ＨＡＬドライバ６においてＯＳのＡＰＩを変換する処理を実装することにより、ＯＳに依存する処理をＨＡＬ評価プログラム７から隠ぺいし、本来、ユーザモードで動作するＨＡＬ評価プログラム７からは、呼び出すことのできないＨＡＬ５を呼び出すための処理を、ＨＡＬ評価プログラム７に実装することができるようになり、当該ハードウェアの操作を行うためのパラメータを設定することができる。
【００６７】
そのため、ハードウェアとＯＳの組み合わせに依存せず、ユーザモードで動作するアプリケーションから各ハードウェアを制御するデータ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラムを提供することができる。
その他の発明の実施の形態．
【００６８】
尚、本発明の実施の形態１にかかるＨＡＬドライバ６は、図４に示すデバイスドライバ６２１乃至６２３が実行中であっても、動作可能である。それは、ＨＡＬ５において、デバイスドライバ６２１乃至６２３、及びＨＡＬドライバ６は、それぞれのＲｅｑｕｅｓｔ  Ｄａｔａ８が異なる領域に確保されることにより、独立したドライバとして扱われるためである。そのため、実際に動作中の組み込みシステムに対しても、ＨＡＬ評価プログラム７によりハードウェアの評価を行うことが可能となり、動的な設定パラメータの評価、又はデバッグが可能となる。また、通常動作時に、意図的にＨＡＬ評価プログラム７によりエラー情報を送り、異常系の検証を行うことも可能である。一例として、ディスプレイに画像表示を行いながら、画像表示位置の微調整を行うといったことが可能となる。微調整に関するパラメータが、ディスプレイ・ドライバに設定されていたとしても、ディスプレイドライバを動作させながら、ＨＡＬ評価プログラム７からパラメータを変更して微調整が可能となる。図１０のｐＲＥＱに対してディスプレイ用パラメータを設定しているコード群７１３がこの例である。
【００６９】
本発明の実施の形態１にかかるＨＡＬドライバ６により、ＨＡＬ５に対応するデバイスにおける全てのＨＡＬ関数を一元的にＨＡＬ評価プログラム７から呼び出すことが可能であり、デバイスごと、ハードウェアごとにデバイスドライバを変更する必要がなくなる。
【００７０】
本発明の実施の形態１により、パラメータの評価作業において、個々のハードウェアに対応するデバイスドライバ、又はブートローダ等に、パラメータ評価用のデバッグ出力処理等を挿入する必要がなくなる。また、当該デバッグ出力処理等を除去することに伴う、デグレードの危険性がなくなる。
【００７１】
また、本発明の実施の形態１により、デバイスドライバ６２１乃至６２３に相当する処理を、複数のＨＡＬ評価プログラム７に相当するプログラムにより実現可能となる。
【００７２】
本発明の実施の形態１にかかるＨＡＬドライバ６では、全てのＨＡＬ関数の呼び出しを一つの関数で行うため、汎用性が高く、軽動作である。それは、ＨＡＬ評価プログラム７からＨＡＬ５への受け渡し時に、余計な計算処理が発生しないためである。また、Ｒｅｑｕｅｓｔ  Ｄａｔａ８のＨＡＬ操作情報８１を固定長とすることにより、ＨＡＬドライバ６、及びＨＡＬ５において、ＨＡＬ操作情報８１部分のみを確認するだけで良くなり、処理が簡略化されるためである。
【００７３】
尚、本発明の実施の形態１では、ハードウェアの設定パラメータの評価作業を対象としたが、これに限定されない。例えば、本発明の実施の形態１のＨＡＬ５、及びＨＡＬドライバ６を搭載した携帯型情報端末において、外部からＨＡＬ評価プログラム７相当のプログラムをインストールし、実行することで、当該携帯型情報端末が使用するハードウェアの動作を制御することができ、設定パラメータの調整や、各種検証作業等を行うことができる。
【００７４】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施の形態１にかかるハードウェア設定パラメータ評価システムによる評価作業の機器構成図の例を示すブロック図である。
【図２】本発明の実施の形態１にかかるＨＡＬのモジュール構成を示すブロック図である。
【図３】本発明の実施の形態１にかかるＲｅｑｕｅｓｔ  Ｄａｔａの構成例を示す図である。
【図４】本発明の実施の形態１にかかるＨＡＬ評価プログラム、ＨＡＬドライバ、ＨＡＬ、及びデバイスの関係を示すブロック図である。
【図５】本発明の実施の形態１にかかるＨＡＬ評価プログラム、ＨＡＬドライバ、及びＨＡＬの呼び出し関係の概念を示す図である。
【図６】本発明の実施の形態１にかかるＨＡＬ評価プログラムのＨＡＬ評価処理の流れを示すフローチャート図である。
【図７】本発明の実施の形態１にかかるＨＡＬドライバの処理の流れを示すフローチャート図である。
【図８】本発明の実施の形態１にかかるＨＡＬの処理の流れを示すフローチャート図である。
【図９】本発明の実施の形態１にかかるＨＡＬ関数とＨＡＬ関数Ｎｏの例を示す図である。
【図１０】本発明の実施の形態１にかかる評価プログラムとＨＡＬドライバの例を示す図である。
【符号の説明】
【００７６】
１００  ハードウェア設定パラメータ評価システム
１  評価ボード
１１  ＣＰＵ
１２  デバイス
１３  端子
１４  メモリ
１５  ＲＯＭ（ＯＳ）
１６  ＲＯＭ（ＨＡＬ）
１７  端子
１８  検査端子
２  ハードウェア
３  端末
４  デバッガ装置
５  ＨＡＬ
５００  Ａｎｃｈｏｒ  Ｐｏｉｎｔｅｒ
５３  共通管理領域
５３１  デバイスエントリ
５３２  デバイスエントリ
５３３  デバイスエントリ
５３４  ＤＢ  Ｐｏｉｎｔｅｒ
５３５  ＦＴ  Ｐｏｉｎｔｅｒ
５４１  ＨＡＬ  Ｄｅｖｉｃｅ固有部
５４２  ＨＡＬ  Ｄｅｖｉｃｅ固有部
５４３  ＨＡＬ  Ｄｅｖｉｃｅ固有部
５５  デバイスブロック
５６  関数テーブル
５７  ＨＡＬ関数
１２１  デバイス
１２２  デバイス
１２３  デバイス
８  Ｒｅｑｕｅｓｔ  Ｄａｔａ
８１  ＨＡＬ操作情報
８１１  デバイスＩＤ
８１２  ＨＡＬ関数Ｎｏ
８１３  Ｒｅｔｕｒｎ  Ｃｏｄｅ
８２  パラメータ情報
５０  共通インタフェース
５１１  関数テーブル
５１２  関数テーブル
５１３  関数テーブル
５２１  ＨＡＬ関数
５２２  ＨＡＬ関数
５２３  ＨＡＬ関数
６  ＨＡＬドライバ
６２１  デバイスドライバ
６２２  デバイスドライバ
６２３  デバイスドライバ
７  ＨＡＬ評価プログラム
７１  ＨＡＬ関数呼び出し
７２  ＯＳ  Ｉ／Ｆ呼び出し
６１  ＯＳ  Ｉ／Ｆ呼び出し処理部
６２  ＨＡＬ関数呼び出し処理部
５１  ＨＡＬ管理部（ＲＡＭ）
５２  ＨＡＬ関数（ＲＯＭ）
７１１、７１２、６２０  コード
７１３  コード群
【図１】
2009252194.tif 000003
【図２】
2009252194.tif 000004
【図３】
2009252194.tif 000005
【図４】
2009252194.tif 000006
【図５】
2009252194.tif 000007
【図６】
2009252194.tif 000008
【図７】
2009252194.tif 000009
【図８】
2009252194.tif 000010
【図９】
2009252194.tif 000011
【図１０】
2009252194.tif 000012