JP2010039644A - 周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム - Google Patents

周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム Download PDF

Info

Publication number
JP2010039644A
JP2010039644A JP2008200047A JP2008200047A JP2010039644A JP 2010039644 A JP2010039644 A JP 2010039644A JP 2008200047 A JP2008200047 A JP 2008200047A JP 2008200047 A JP2008200047 A JP 2008200047A JP 2010039644 A JP2010039644 A JP 2010039644A
Authority
JP
Japan
Prior art keywords
device driver
program
physical address
application program
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008200047A
Other languages
English (en)
Inventor
Hiroshi Ashizawa
博 芦沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2008200047A priority Critical patent/JP2010039644A/ja
Publication of JP2010039644A publication Critical patent/JP2010039644A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】アプリケーション・プログラムからメモリマップドI/O(MMIO)領域を具体的に指定すること、当該領域の書き換え指示及び参照指示をアプリケーション・プログラムからデバイスドライバに対して直接的に行うことを可能とする。
【解決手段】デバイスドライバ21からアプリケーション22にMMIOの物理アドレスを通知させる。アプリケーション22は、MMIOの物理アドレスの指定を含むMMIOに対するWrite要求(又はRead要求)をデバイスドライバ21に行なう。デバイスドライバ21は、Write要求(又はRead要求)に応じて、指定された物理アドレスに対する書込み(又は読み出し)を行なった結果をアプリケーション22に通知する。
【選択図】図3

Description

本発明は、コンピュータに接続される周辺デバイスの動作検証方法、及び周辺デバイスの動作検証に使用されるデバイスドライバ・プログラム及びアプリケーション・プログラムに関する。
Windows XP(登録商標)、UNIX(登録商標)等のメモリ保護機能を有するOSは、アプリケーション・プログラムの実行を開始するに際して、実行中のプログラムがアクセス可能な仮想メモリ空間をユーザー空間に制限し、カーネル空間へのアクセスを禁止する。本明細書では、アクセス可能な仮想メモリ空間がユーザー空間に制限されたプログラム実行モードは、"ユーザーモード"と呼ぶ。一方、カーネル空間へのアクセスが可能なプログラム実行モードを"カーネルモード"と呼ぶ。
ここで、カーネル空間とは、OSや、周辺デバイスのメモリマップドI/O領域等が配置されるメモリ空間である。周辺デバイスとは、PCI(Peripheral Components Interconnect)バス等を介してコンピュータシステムに接続されるハードディスクドライブ、DVDプレーヤ等の装置である。また、メモリマップドI/Oとは、周辺デバイスが有するデータレジスタ及び制御レジスタ等をコンピュータが有する物理メモリ(つまりRAM)上にマッピングし、物理メモリへの書込み処理及び読み出し処理によって、周辺デバイスへのアクセスを可能とする方式である。
メモリ保護機能を有するOS(Operating System)を使用しているコンピュータシステムでは、ユーザーモードで実行されるアプリケーション・プログラムは、カーネルに対して周辺デバイスへのアクセスを要求する。通常、アプリケーション・プログラムによる周辺デバイスへのアクセス要求は、周辺デバイスへのアクセスのために用意された汎用的なAPI(Application Program Interface)関数を使用して行なわれる。汎用的なAPI関数は、例えばライブラリとしてアプリケーション・プログラムに提供される。アプリケーション・プログラムから周辺デバイスへのアクセス要求がAPI関数を利用して行なわれると、OS(具体的には、Windows XP(登録商標)であればI/Oマネージャ)がそれをカーネルモードで実行されるデバイスドライバに送信する。そして、デバイスドライバによって周辺デバイスの制御が実行される。なお、上述したように、メモリマップドI/O方式での周辺デバイスの制御は、周辺デバイスがマッピングされている物理メモリへのアクセスによって実現される。
特許文献1には、ユーザーモードで実行されるアプリケーション・プログラムがカーネルモードで行われるべき処理を記述したスクリプトを生成し、カーネルモードで実行されるデバイスドライバが当該スクリプトを解読して周辺デバイスの制御を実行する技術が開示されている。この技術によって、アプリケーション・プログラムは、ユーザーモードで許可されていない処理をカーネルモードで動作するデバイスドライバに実行させることができる。また、デバイスドライバの更新を行なうことなく複数の周辺デバイス制御をデバイスドライバに実行させることができる。
上述したように、デバイスドライバは、カーネルモードで実行されることが一般的である。しかしながら、コンピュータシステムの信頼性向上のために、周辺デバイス制御に関する処理の中からユーザーモードで実行可能な処理を分離し、これらの処理をユーザーモードで実行されるデバイスドライバ(ユーザーモード・ドライバと呼ばれる)に行なわせる技術も知られている(例えば、非特許文献1を参照)。
特開2006−185387号公報 "Introduction to the WDF User-Mode Driver Framework"、[online]、平成20年6月25日検索、インターネット<http://www.microsoft.com/whdc/driver/wdf/UMDF_intro.mspx>
従来のコンピュータシステムでは、デバイスドライバによる周辺デバイスの制御内容をアプリケーション・プログラムから詳細に指定することが困難である。よって、従来のデバイスドライバを用いた周辺デバイスの制御は、周辺デバイスの動作を検証する用途に適していないという問題がある。当該問題について以下に詳しく述べる。
周辺デバイスの開発段階においては、コンピュータシステムに接続された周辺デバイスがOSによって正常に認識されていることや、周辺デバイスの動作が正常に行われていることを、アプリケーション・プログラムを使用して詳細に検証することが求められる。そのためには、アプリケーション・プログラムが、周辺デバイスの入出力用に物理メモリ上に確保されているメモリマップドI/O領域を具体的に指定でき、当該領域の書き換え指示及び参照指示をアプリケーション・プログラムからデバイスドライバに対して直接的に行えることが望ましい。しかしながら、メモリマップドI/O領域は、カーネル空間に存在し、アプリケーション・プログラムがアクセスできる仮想アドレス空間からは隠蔽されている。このため、従来のアプリケーション・プログラムは、メモリマップドI/O領域を具体的に指定し、メモリマップドI/O領域の書き換え指示及び参照指示を直接的に行うことは困難である。
本発明の第1の態様は、コンピュータに接続された周辺デバイスの動作検証方法である。当該方法は、以下に示す(a)〜(e)の処理ステップを含む。
(a)前記コンピュータに、前記周辺デバイスのメモリマップドI/O領域に対するアクセスが許可された第1のプログラム実行モードにてデバイスドライバ・プログラムを実行させることによって、前記メモリマップドI/O領域へのアクセスが禁止された第2のプログラム実行モードで実行されるアプリケーション・プログラムに対して、前記メモリマップドI/O領域を示す物理アドレスを通知すること、
(b)前記コンピュータに前記アプリケーション・プログラムを実行させることによって、前記物理アドレスの指定を含むライト要求又はリード要求を前記デバイスドライバ・プログラムに供給すること、
(c)前記コンピュータに前記デバイスドライバ・プログラムを実行させることによって、前記ライト要求又はリード要求にて指定された物理アドレスに対応する前記メモリマップドI/O領域へのライト処理又はリード処理を実行すること、
(d)前記コンピュータに前記デバイスドライバ・プログラムを実行させることによって、前記ライト処理又はリード処理の処理結果を前記アプリケーション・プログラムに通知すること、及び
(e)前記コンピュータに前記アプリケーション・プログラムを実行させることによって、前記処理結果を前記デバイスドライバ・プログラムから受信すること。
このような検証方法によって、アプリケーション・プログラムからメモリマップドI/O領域を具体的に指定でき、当該領域の書き換え指示及び参照指示をアプリケーション・プログラムからデバイスドライバに対して直接的に行うことができる。
本発明の第2の態様にかかるデバイスドライバ・プログラムは、コンピュータに接続された周辺デバイスのメモリマップドI/O領域に対するアクセスが許可された第1のプログラム実行モードで実行され、前記周辺デバイスの動作検証のために使用される。当該プログラムは、以下に示す処理(a)〜(c)をコンピュータに実行させる。
(a)前記メモリマップドI/O領域へのアクセスが禁止された第2のプログラム実行モードで実行されるアプリケーション・プログラムに対して、前記メモリマップドI/O領域を示す物理アドレスを通知する処理、
(b)前記アプリケーション・プログラムからなされるとともに前記物理アドレスの指定を含むライト要求又はリード要求に基づいて、指定された物理アドレスに対応する前記メモリマップドI/O領域へのライト処理又はリード処理を実行する処理、及び
(c)前記ライト処理又はリード処理の処理結果を前記アプリケーション・プログラムに通知する処理。
本発明の第3の態様にかかるアプリケーション・プログラムは、コンピュータに接続された周辺デバイスのメモリマップドI/O領域に対するアクセスが禁止されたユーザーモードで実行され、前記周辺デバイスの動作検証のために使用される。当該プログラムは、以下に示す処理(a)〜(c)をコンピュータに実行させる。
(a)前記メモリマップドI/O領域へのアクセスが許可されたカーネルモードで実行されるデバイスドライバ・プログラムに対して、前記メモリマップドI/O領域を示す物理アドレスを要求する処理、
(b)前記デバイスドライバ・プログラムから通知された前記物理アドレスを参照し、前記物理アドレスの指定を含むライト要求又はリード要求を前記デバイスドライバ・プログラムに供給する処理、及び
(c)前記ライト要求又はリード要求に応じて前記デバイスドライバ・プログラムが実行されることにより発生した前記メモリマップドI/O領域へのライト処理又はリード処理の結果を、前記デバイスドライバ・プログラムから受信する処理。
本発明の第2及び第3の態様にかかるデバイスドライバ・プログラム及びアプリケーション・プログラムを使用することによって、アプリケーション・プログラムからメモリマップドI/O領域を具体的に指定でき、当該領域の書き換え指示及び参照指示をアプリケーション・プログラムからデバイスドライバ・プログラムに対して直接的に行うことができる。
本発明の第1の態様にかかる方法によって、デバイスドライバによる周辺デバイスの制御内容をアプリケーション・プログラムから詳細に指定することが可能となる。また、本発明の第2及び第3の態様にかかるコンピュータ・プログラムによって、コンピュータに接続される周辺デバイスの動作検証に適したデバイスドライバ・プログラム及びアプリケーション・プログラムを提供できる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
図1は、本発明の実施の形態にかかるデバイスドライバ・プログラム21及びアプリケーション・プログラム22が実行されるコンピュータの構成例を示すブロック図である。図1に示すコンピュータ1は、周辺デバイス50を接続可能であり、デバイスドライバ・プログラム21及びアプリケーション・プログラム22をCPU(Central Processing Unit)11で実行することにより、周辺デバイス50の検証を行なう。以下、図1に示されている各要素について順に説明する。なお、以下では、デバイスドライバ・プログラム21を、単にデバイスドライバ21と呼ぶ場合がある。同様に、アプリケーション・プログラム22を、単にアプリケーション22と呼ぶ場合がある。
CPU11は、不揮発性記憶装置15からRAM(Random Access Memory)12にロードされたOS20、デバイスドライバ21及びアプリケーション22を実行する。
RAM12は、CPU11に読み出されて実行されるOS20、デバイスドライバ21並びにアプリケーション22の格納領域、及びこれらのプログラムによって使用されるデータの格納領域として使用される。また、RAM12の一部は、周辺デバイス50にアクセスするためのメモリマップドI/O(以下、MMIOと呼ぶ)として利用される。
入力デバイス13は、利用者による操作入力を電気信号に変換するデバイスである。例えば、入力デバイス13は、マウス、キーボード、タッチパネル等である。
表示デバイス14は、コンピュータ1による処理結果等を利用者が視認可能に表示するデバイスである。例えば、表示デバイス14は、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)ディスプレイ等である。
不揮発性記憶装置15は、例えば、マスクROM、EPROM、フラッシュメモリ若しくはハードディスクドライブ、又はこれらの組合せである。
デバイス・インタフェース(I/F)16は、コンピュータ1と周辺デバイス50の間を物理的及び電気的に接続するためのコネクタと、周辺デバイス50のデータ転送を制御するコントローラを含む。一例として、周辺デバイスがPCI(Peripheral Components Interconnect bus)バスに接続されるPCIデバイスである場合、デバイスI/F16は、PCIカードを差し込むためのPCIスロットや、PCIバスマスタとして機能するコントローラ等を含む。
OS20は、CPU11、RAM12等のハードウェア資源を利用して、タスク管理、タスク間通信管理、メモリ管理等を実行する。これらの機能は、従来のOSが標準的に備える機能であるため、各機能の概略のみを以下に示す。
タスク管理は、タスク状態の管理、タスクに与えられた優先度の管理、起動可能な状態にあるタスクの実行順序のスケジューリング、コンテキストの保存等を行うことによって、タスクの生成、起動、終了、及び削除を行う手段を提供する。ここでタスクとは、OS20により実現されるマルチタスク環境において並列実行されるプログラム単位を意味する。
タスク間通信管理は、メールボックス、セマフォ等を利用して、タスク間での通信及びタスク間の処理の同期を提供する。
メモリ管理は、仮想記憶の管理、タスク間通信等に用いられる共有メモリ領域の管理を含む。
デバイスドライバ21は、OS20によって提供されるカーネルモード上で実行されるプログラムである。デバイスドライバ21は、アプリケーション22によって指定された周辺デバイスのアクセス制御を行う。より具体的に述べると、デバイスドライバ21は、アプリケーション22からの要求に応じて、RAM12に配置された周辺デバイス50のMMIO領域の書き込み及び読み出しを行う。
ところで、OS20によるデバイスドライバ21の設定は、従来のデバイスドライバと同様に、周辺デバイス50とデバイスドライバ21との対応関係が記述された構成情報ファイル(不図示)に基づいて行えばよい。構成情報ファイルは、周辺デバイス50を特定可能な識別情報とデバイスドライバ21を特定可能な識別情報を含む。周辺デバイス50がPCIデバイスである場合、周辺デバイス50を特定可能な識別情報は、Vendor ID及びDevice IDとすればよい。Vendor IDは、また、デバイスドライバ21を特定可能な識別情報は、デバイスドライバ21のファイル名とすればよい。
アプリケーション22は、OS20によって提供されるユーザーモード上で実行されるプログラムである。アプリケーション22は、周辺デバイス50に対するアクセスをデバイスドライバ21に要求する。より具体的に述べると、アプリケーション22は、周辺デバイス50のMMIOが配置されているRAM12の物理アドレスの情報をデバイスドライバ21から取得する。そして、アプリケーション22は、MMIOの物理アドレスの指定を含む書込み要求(Write要求)及び読み出し要求(Read要求)をデバイスドライバ21に対して行なうことによって、デバイスドライバ21にMMIOの書き込み及び読み出しを実行させる。MMIOの書き込み及び読み出しの詳細手順については後述する。
アプリケーション22による周辺デバイスの指定は、例えば、アプリケーション・プログラム22自体に周辺デバイスの識別情報を直接記述することで行えばよい。また、アプリケーション22は、アクセス対象とする周辺デバイスを指定するために、周辺デバイスの識別情報が記述されたスクリプトファイルを参照するように記述されてもよい。同様に、周辺デバイスに対して複数のアクセス要求を実行する手順に関しても、アプリケーション・プログラム22は、アクセス要求の手順が記述されたスクリプトファイルを参照するように記述されてもよい。
図2は、コンピュータ1のソフトウェア構造を示す階層図である。図2において、APIライブラリは、デバイスドライバ21の呼び出しのためにアプリケーション22によって利用されるAPI関数群である。API関数群の具体例は、デバイスドライバ21のオープンを指示するためのCreateFile関数(open関数)、デバイスドライバ21のクローズを指示するためのCloseHandle関数(close関数)、周辺デバイス50のレジスタの書き込みを指示するためのWriteFile関数(write関数)、周辺デバイス50のレジスタの読み出しを指示するためのReadFile関数(read関数)、及びデバイスドライバ21に対して予め定義された特定動作を要求するためのDeviceIoControl関数(ioctl関数)である。
図2に示すように、ユーザーモードで実行されるアプリケーション22は、API関数を呼び出すことによって、MMIOのWrite要求及びRead要求をデバイスドライバ21に対して行なう。MMIOのWrite要求及びRead要求を行なうためのAPI関数は、WriteFile関数(write関数)及びReadFile関数(read関数)を用いてもよいし、DeviceIoControl関数(ioctl関数)を使用してもよい。
続いて以下では、物理アドレス指定を含むアプリケーション22からの要求に基づいて、デバイスドライバ21が周辺デバイス50のMMIOへアクセスする手順について詳しく説明する。図3は、周辺デバイス50のMMIOに割り当てられた物理メモリ領域の書込み処理手順の具体例を示している。また、図4は、周辺デバイス50のMMIOに割り当てられた物理メモリ領域の読み出し処理手順の具体例を示している。
図3において、ステップS101では、アプリケーション22がCreateFile関数(open関数)を呼び出し、デバイスドライバ21のオープンを要求する。デバイスドライバ21が正常にオープンされた場合、アプリケーション22は、周辺デバイス50のMMIOの物理アドレスの通知をデバイスドライバ21に対して要求する(ステップS102)。この要求は、例えば、DeviceIoControl関数(ioctl関数)を使って行えばよい。また、デバイスドライバ21を複数の周辺デバイス50の制御のために汎用的に使用可能とするため、アプリケーション22からデバイスドライバ21に対して行なう物理アドレスの通知要求には、対象とする周辺デバイス50の識別情報を含めるとよい。
ステップS103では、デバイスドライバ21は、アプリケーション22によって指定された周辺デバイス50のMMIOの物理アドレスを取得する。具体的には、MMIOの先頭アドレスを示すベースアドレスを取得すればよい。ステップS104では、デバイスドライバ21は、取得したMMIOの物理アドレスをアプリケーション22に通知する。
ステップS105では、アプリケーション22は、更新を求めるMMIOの物理アドレスの指定を含むMMIOの書込み要求(Write要求)をデバイスドライバ21に対して行なう。この要求は、例えば、WriteFile関数(write関数)又はDeviceIoControl関数(ioctl関数)を使って行えばよい。なお、更新を求めるMMIOの物理アドレスの指定は、物理アドレスを直接デバイスドライバ21に引き渡すことで行なってもよいし、ベースアドレスからのアドレスオフセットを引き渡すことにより行ってもよい。
ステップS106では、デバイスドライバ21は、アプリケーション22により指定されたMMIOへのWrite処理を実行する。これに応じて、周辺デバイス50は、MMIOの書込みに応じた動作を実行する(ステップS107)。
ステップS108では、デバイスドライバ21は、アプリケーション22からのWrite要求に基づくMMIOの書込み処理が正常に完了したか否かを示すWrite結果をアプリケーション22に通知する。
最後に、ステップS109では、アプリケーション22は、デバイスドライバ21から通知されたWrite結果を取得する。
次に、図4を参照して、MMIOのRead要求手順について説明する。図4に示すステップS101〜S104での処理内容は、図3に示した同一符号のステップ群と同様である。これらのステップS101〜S104は、他のWrite要求又はRead要求のために既にMMIOの物理アドレスがアプリケーション22によって取得されている場合には、省略可能である。
ステップS205では、アプリケーション22は、読み出しを求めるMMIOの物理アドレスの指定を含むMMIOの読み出し要求(Read要求)をデバイスドライバ21に対して行なう。この要求は、例えば、ReadFile関数(read関数)又はDeviceIoControl関数(ioctl関数)を使って行えばよい。なお、読み出しを求めるMMIOの物理アドレスの指定は、物理アドレスを直接デバイスドライバ21に引き渡すことで行なってもよいし、ベースアドレスからのアドレスオフセットを引き渡すことにより行ってもよい。
ステップS206では、デバイスドライバ21は、アプリケーション22により指定されたMMIOへのRead処理を実行する。
ステップS207では、デバイスドライバ21は、MMIOの読み出し処理が正常に完了したか否かと、正常である場合には読み出したデータ内容とを含むRead結果を、アプリケーション22に通知する。
最後に、ステップS208では、アプリケーション22は、デバイスドライバ21から通知されたRead結果を取得する。
図3及び図4を用いて説明したようなMMIOのWrite要求及びRead要求を組み合わせて行なうことにより、周辺デバイス50のアクセス制御の各過程をアプリケーション22から詳細に検証することができる。この点について、従来技術との対比に基づいて詳しく説明する。
図5(b)は、特許文献1に開示されたアプリケーション及びデバイスドライバによる周辺デバイスへのアクセス動作を概念的に示したタイミングチャートである。特許文献1に開示されたアクセス動作では、アプリケーションからデバイスドライバにスクリプトが送信される。当該スクリプトは、デバイスドライバが実行すべき複数の処理が記述されている。このため、図5(b)に示すように、スクリプトに記述された複数の処理、すなわちMMIOへのWrite処理(S32)及びRead処理(S37)のデバイスドライバにおける実行が完了したのちに、アプリケーションに実行結果が通知される(S42及びS43)。つまり、周辺デバイス50へのアクセスを要求したアプリケーションに処理が戻るのは、スクリプトの実行結果の通知(S43)の時点である。
これに対して、本実施の形態では、図5(a)に示すようになる。すなわち、アプリケーション22からのWrite要求(S31)及びRead要求(s36)の各々に対してデバイスドライバ21から結果通知(S33及びS38)が行なわれる。したがって、本実施の形態にかかるアプリケーション22及びデバイスドライバ21を用いることによって、任意の値(つまり、通常は禁止された不正な値をも含む)をMMIOに書き込むことができ、さらにこの任意の値の書込みに起因して発生する周辺デバイス50の動作を、従来に比べて細分化された処理単位で検証することができる。
また、デバイスドライバ21は、アプリケーション22から周辺デバイスの指定を受け、指定された周辺デバイス50に選択的にアクセスできる。さらに、デバイスドライバ21が行なう処理は、MMIOの物理アドレス取得と、MMIOに対する書込み及び読み出しに限定されている。これらの処理は、メモリマップドI/Oを利用する周辺デバイスに汎用的に適用可能である。このため、検証対象とする周辺デバイスが頻繁に変更される場合であっても、デバイスドライバ21を変更することなく、アプリケーション22の修正によって容易に対応することができる。ユーザーモードで実行されるアプリケーションの修正及び検証は、カーネルモードで実行されるデバイスドライバのそれに比べて相対的に容易である。つまり、本実施の形態のデバイスドライバ21及びアプリケーション22によれば、周辺デバイス50の検証に要する作業負担を軽減することができる。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
本発明の実施の形態にかかるアプリケーション及びデバイスドライバが実行されるコンピュータの構成例を示すブロック図である。 図1のコンピュータのソフトウェア構造を示す階層図である。 本発明の実施の形態にかかるアプリケーション及びデバイスドライバによるMMIOの書込み処理手順を示す図である。 本発明の実施の形態にかかるアプリケーション及びデバイスドライバによるMMIOの読み出し処理手順を示す図である。 図5(a)は、本発明の実施の形態にかかるアプリケーション及びデバイスドライバによる周辺デバイスへのアクセスを示すタイミングチャートである。図5(b)は、従来のアプリケーション及びデバイスドライバによる周辺デバイスへのアクセスを示すタイミングチャートである。
符号の説明
1 コンピュータ
11 CPU(Central Processing Unit)
12 RAM(Random Access Memory)
13 入力デバイス
14 表意デバイス
15 不揮発性記憶装置
16 デバイス・インタフェース
20 オペレーティングシステム(OS)
21 デバイスドライバ・プログラム
22 アプリケーション・プログラム
201 API(Application Program Interface)ライブラリ
50 周辺デバイス

Claims (6)

  1. コンピュータに接続された周辺デバイスの動作検証方法であって、
    前記コンピュータに、前記周辺デバイスのメモリマップドI/Oに対するアクセスが許可された第1のプログラム実行モードにてデバイスドライバ・プログラムを実行させることによって、前記メモリマップドI/O領域へのアクセスが禁止された第2のプログラム実行モードで実行されるアプリケーション・プログラムに対して、前記メモリマップドI/O領域を示す物理アドレスを通知するステップ(a)と、
    前記コンピュータに前記アプリケーション・プログラムを実行させることによって、前記物理アドレスの指定を含むライト要求又はリード要求を前記デバイスドライバ・プログラムに供給するステップ(b)と、
    前記コンピュータに前記デバイスドライバ・プログラムを実行させることによって、前記ライト要求又はリード要求にて指定された物理アドレスに対応する前記メモリマップドI/O領域へのライト処理又はリード処理を実行するステップ(c)と、
    前記コンピュータに前記デバイスドライバ・プログラムを実行させることによって、前記ライト処理又はリード処理の処理結果を前記アプリケーション・プログラムに通知するステップ(d)と、
    前記コンピュータに前記アプリケーション・プログラムを実行させることによって、前記処理結果を前記デバイスドライバ・プログラムから受信するステップ(e)と、
    を含む、周辺デバイスの動作検証方法。
  2. 前記ステップ(a)における前記物理アドレスの通知は、前記アプリケーション・プログラムからの通知要求に応じて行なわれ、
    前記通知要求は、前記周辺デバイスを識別するための識別情報を含み、
    前記ステップ(a)は、前記識別情報に基づいて、前記メモリマップドI/O領域を示す物理アドレスを取得すべきデバイスを特定することをさらに含む、
    請求項1に記載の周辺デバイスの動作検証方法。
  3. コンピュータに接続された周辺デバイスのメモリマップドI/O領域に対するアクセスが許可された第1のプログラム実行モードで実行され、前記周辺デバイスの動作検証のために使用されるデバイスドライバ・プログラムであって、
    前記メモリマップドI/O領域へのアクセスが禁止された第2のプログラム実行モードで実行されるアプリケーション・プログラムに対して、前記メモリマップドI/O領域を示す物理アドレスを通知する第1の処理と、
    前記アプリケーション・プログラムからなされるとともに前記物理アドレスの指定を含むライト要求又はリード要求に基づいて、指定された物理アドレスに対応する前記メモリマップドI/O領域へのライト処理又はリード処理を実行する第2の処理と、
    前記ライト処理又はリード処理の処理結果を前記アプリケーション・プログラムに通知する第3の処理と、
    を前記コンピュータに実行させる、デバイスドライバ・プログラム。
  4. 前記第1の処理における前記物理アドレスの通知は、前記アプリケーション・プログラムからの通知要求に応じて行なわれ、
    前記通知要求は、前記周辺デバイスを識別するための識別情報を含み、
    前記第1の処理は、前記識別情報に基づいて、前記メモリマップドI/O領域を示す物理アドレスを取得すべきデバイスを特定する処理をさらに含む、
    請求項2に記載のデバイスドライバ・プログラム。
  5. コンピュータに接続された周辺デバイスのメモリマップドI/O領域に対するアクセスが禁止されたユーザーモードで実行され、前記周辺デバイスの動作検証のために使用されるアプリケーション・プログラムであって、
    前記メモリマップドI/O領域へのアクセスが許可されたカーネルモードで実行されるデバイスドライバ・プログラムに対して、前記メモリマップドI/O領域を示す物理アドレスを要求する処理と、
    前記デバイスドライバ・プログラムから通知された前記物理アドレスを参照し、前記物理アドレスの指定を含むライト要求又はリード要求を前記デバイスドライバ・プログラムに供給する処理と、
    前記ライト要求又はリード要求に応じて前記デバイスドライバ・プログラムが実行されることにより発生した前記メモリマップドI/O領域へのライト処理又はリード処理の結果を、前記デバイスドライバ・プログラムから受信する処理と、
    を前記コンピュータに実行させる、アプリケーション・プログラム。
  6. 前記物理アドレスの要求は、前記周辺デバイスを識別するための識別情報を含む、請求項5に記載のアプリケーション・プログラム。
JP2008200047A 2008-08-01 2008-08-01 周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム Pending JP2010039644A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008200047A JP2010039644A (ja) 2008-08-01 2008-08-01 周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008200047A JP2010039644A (ja) 2008-08-01 2008-08-01 周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム

Publications (1)

Publication Number Publication Date
JP2010039644A true JP2010039644A (ja) 2010-02-18

Family

ID=42012145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008200047A Pending JP2010039644A (ja) 2008-08-01 2008-08-01 周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム

Country Status (1)

Country Link
JP (1) JP2010039644A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015537310A (ja) * 2013-10-29 2015-12-24 華為技術有限公司Huawei Technologies Co.,Ltd. データ処理システム及びデータ処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015537310A (ja) * 2013-10-29 2015-12-24 華為技術有限公司Huawei Technologies Co.,Ltd. データ処理システム及びデータ処理方法
US9678918B2 (en) 2013-10-29 2017-06-13 Huawei Technologies Co., Ltd. Data processing system and data processing method

Similar Documents

Publication Publication Date Title
US8032883B2 (en) Controlling access from the virtual machine to a file
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
US7318149B2 (en) Semi-persistent relocatable ram-based virtual floppy disk method
US10565131B2 (en) Main memory including hardware accelerator and method of operating the same
US20140337585A1 (en) Page table management
TW201009709A (en) Dynamic file system restriction for portable storage devices
KR20030051217A (ko) 일반 그래픽 어댑터
US10885229B2 (en) Electronic device for code integrity checking and control method thereof
WO2017020647A1 (zh) 基于新型存储器的嵌入式文件系统及其实现方法
JP2011076134A (ja) システム管理モードの特権レベルを保護するコンピュータ
JP2015038644A (ja) 計算機および仮想マシンの更新方法
US7581037B2 (en) Effecting a processor operating mode change to execute device code
CN105830021B (zh) 可更新集成电路无线电
CN112199087A (zh) 一种应用开发环境的配置方法、装置、设备及存储介质
CN113826072B (zh) 系统管理模式中的代码更新
US9058759B2 (en) Virtual display device drivers compatible with windows display driver model
US7299345B2 (en) Reserved ROM space for storage of operating system drivers
CN110413293A (zh) 系统布署过程对标准镜像进行修改的方法及装置
US9361124B2 (en) Computer system and startup method
JP2006018848A (ja) 着脱式デバイス
US8745364B2 (en) Method and apparatus for enabling non-volatile content filtering
JP2010039644A (ja) 周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム
US7017035B2 (en) Method and apparatus for using an ACPI NVS memory region as an alternative CMOS information area
JP2010277578A (ja) 電子装置及びそのブーティング方法
US8095784B2 (en) Computer system and method for activating basic program therein