(57)【要約】【課題】ＯＳやＣＰＵの違いに対応してデバイスドライバの品種展開を安価に実現する。【解決手段】ソースコードで記述されたソースデバイスドライバは、アプリケーションとの界面のレイヤーであるＡＰＩ部（１１，１２）と、ＯＳに依存する処理のレイヤーであるＯＳ依存部（１４，１５）と、ＣＰＵに依存する処理のレイヤーであるＣＰＵ依存部（１６）と、上記ＯＳ及び上記ＣＰＵには依存しない処理のレイヤーであるデバイスドライバ本体部（１３）とを含む。上記デバイスドライバ本体部は、上記ＡＰＩ部から呼び出され、上記ＯＳ依存部及び上記ＣＰＵ依存部は上記デバイスドライバ本体部から呼び出されるように階層化される。上記ＡＰＩ部、又は上記ＯＳ依存部、若しくは上記ＣＰＵ依存部の変更が可能とされ、デバイスドライバのＯＳやＣＰＵの違いに対応した品種展開を容易に行える。【選択図】図１
2012155515.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードで記述されたソースデバイスドライバであって、
アプリケーションとの界面のレイヤーであるＡＰＩ部と、
ＯＳに依存する処理のレイヤーであるＯＳ依存部と、
ＣＰＵに依存する処理のレイヤーであるＣＰＵ依存部と、
上記ＯＳ及び上記ＣＰＵには依存しない処理のレイヤーであるデバイスドライバ本体部と、を含み、上記デバイスドライバ本体部は上記ＡＰＩ部から呼び出され、上記ＯＳ依存部及び上記ＣＰＵ依存部は上記デバイスドライバ本体部から呼び出されるように階層化されたことを特徴とするソースデバイスドライバ。
【請求項２】
上記ＡＰＩ部は、互いに異なるＯＳに対応して複数設けられた請求項１記載のソースデバイスドライバ。
【請求項３】
上記ＯＳ依存部は、互いに異なるＯＳに対応して複数設けられた請求項２記載のソースデバイスドライバ。
【請求項４】
上記ＣＰＵ依存部は、互いに異なるＣＰＵに対応して複数設けられた請求項３記載のソースデバイスドライバ。
【請求項５】
アプリケーションとの界面のレイヤーであるＡＰＩ部と、
ＯＳに依存する処理のレイヤーであるＯＳ依存部と、
ＣＰＵに依存する処理のレイヤーであるＣＰＵ依存部と、
上記ＯＳ及び上記ＣＰＵには依存しない処理のレイヤーであるデバイスドライバ本体部と、を含み、上記デバイスドライバ本体部は上記ＡＰＩ部から呼び出され、上記ＯＳ依存部及び上記ＣＰＵ依存部は上記デバイスドライバ本体部から呼び出されるように階層化されて、ソースコードで記述されたソースデバイスドライバを、コンピュータに読み込んで、
上記ＡＰＩ部、又は上記ＯＳ依存部、若しくは上記ＣＰＵ依存部を、外部入力に応じて変更した後に、ソースコードをオブジェクトコードに変換することでデバイスドライバの実行モジュールを形成する、実行モジュール作成方法。
【請求項６】
上記ＡＰＩ部は、互いに異なるＯＳに対応して複数設けられた請求項５記載の実行モジュール作成方法。
【請求項７】
上記ＯＳ依存部は、互いに異なるＯＳに対応して複数設けられた請求項６記載の実行モジュール作成方法。
【請求項８】
上記ＣＰＵ依存部は、互いに異なるＣＰＵに対応して複数設けられた請求項７記載の実行モジュール作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードで記述されたソースデバイスドライバ、及びそれを用いた実行モジュールの作成方法に関する。
【背景技術】
【０００２】
特許文献１には、載用電子機器を構成するマイクロコンピュータに実装されるデバイスドライバの生産性及び保守性を向上させることが可能なデバイスドライバの作成方法が記載されている。このデバイスドライバの作成方法によれば、デバイスドライバを上位ドライバと下位ドライバとに分割して作成し、上位ドライバに包含されていた異常監視部を下位ドライバに包含させるようにしている。
【０００３】
特許文献２には、デバイス及びＣＰＵ（Central Processing Unit；中央処理装置）系列デバイスドライバ本体部分と、ＣＰＵ系列依存部分とで構成されたＯＳ（Operating System；オペレーティングシステム）で制御される情報処理装置におけるハイバネーション制御方法が記載されている。
【０００４】
特許文献３には、複数のオペレーティングシステム用のデバイス・サポートを提供するための方法及びシステムが記載されている。この技術では、複数のオペレーティングシステム・プラットフォーム上で複数の装置を使用できるようになる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−３５６９９８号公報
【特許文献２】特開２０１０−１５７０１７号公報
【特許文献３】特開平８−３２８９８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のＯＳ上で同一デバイスに対するデバイスドライバを作成することがあるが、あるＯＳにおける標準的な開発方式でデバイスドライバの開発を行うと、他のＯＳのデバイスドライバの開発と工程上重なる部分が多い。しかしながら、ＯＳに依存するシステムコール、割込み処理などの部分はＯＳ毎に要求される形式が違うために同一のプログラムで兼用させるには無理がある。
【０００７】
また、ＣＰＵの周辺デバイスを複数の種類のＯＳで動作させる場合、ＯＳ毎にデバイスドライバを作成する必要がある。同一の周辺デバイスを複数の種類のＣＰＵにおいて動作させる場合、ＣＰＵの種類毎にデバイスドライバを作成する必要がある。このため、同一の周辺デバイスに対してデバイスドライバを、ＯＳ毎若しくはＣＰＵ毎に複数の種類作成する必要があり、デバイスドライバの製作コストの低減が困難とされている。
【０００８】
特許文献１には、デバイスドライバの生産性及び保守性を向上させるための技術が記載され、特許文献２には、デバイス及びＣＰＵ系列デバイスドライバ本体部分と、ＣＰＵ系列依存部分とで構成されたＯＳで制御される情報処理装置におけるハイバネーション制御方法が記載され、特許文献３には、複数のオペレーティングシステム用のデバイス・サポートを提供するための方法及びシステムが記載されている。しかし、上記特許文献１〜３には、ＯＳ毎のデバイスドライバの違いを吸収するデバイスドライバの具体的な構成や、複数のＣＰＵが搭載されるシステムにおいてデバイスドライバの実装の違いを吸収するための方法については言及されていない。
【０００９】
本発明の目的は、ＯＳやＣＰＵの違いに対応してデバイスドライバの品種展開を安価に実現するための技術を提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、ソースデバイスドライバはソースコードで記述され、アプリケーションとの界面のレイヤーであるＡＰＩ部と、ＯＳに依存する処理のレイヤーであるＯＳ依存部と、ＣＰＵに依存する処理のレイヤーであるＣＰＵ依存部と、上記ＯＳ及び上記ＣＰＵには依存しない処理のレイヤーであるデバイスドライバ本体部とを含む。そして上記デバイスドライバ本体部は、上記ＡＰＩ部から呼び出され、上記ＯＳ依存部及び上記ＣＰＵ依存部は上記デバイスドライバ本体部から呼び出されるように階層化される。
【発明の効果】
【００１３】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、ＯＳやＣＰＵの違いに対応してデバイスドライバの品種展開を安価に実現することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明にかかるソースデバイスドライバの構成例ブロック図である。
【図２】デバイスドライバの実行モジュールが実装されるコンピュータシステムの構成例ブロック図である。
【図３】ソースデバイスドライバにおける主要部の記述例の説明図である。
【図４】図１に示されるソースデバイスドライバを用いた実行モジュール作成処理のフローチャートである。
【図５】ワークステーションの構成例ブロック図である。
【図６】デバイスドライバの実行モジュールが実装されるコンピュータシステムの別の構成例ブロック図である。
【図７】本発明にかかるソースデバイスドライバの別の構成例ブロック図である。
【図８】図７に示されるソースデバイスドライバを用いた実行モジュール作成処理のフローチャートである。
【図９】発明にかかるデバイスドライバの別の構成例ブロック図である。
【発明を実施するための形態】
【００１６】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１７】
〔１〕本発明の代表的な実施の形態に係るソースデバイスドライバはソースコードで記述され、アプリケーションに対応するＡＰＩ部（１１，１２）と、ＯＳに依存するＯＳ依存部（１４，１５）と、ＣＰＵに依存するＣＰＵ依存部（１６）と、上記ＯＳ及び上記ＣＰＵには依存しないデバイスドライバ本体部（１３）とを含む。上記デバイスドライバ本体部は、上記ＡＰＩ部から呼び出され、上記ＯＳ依存部及び上記ＣＰＵ依存部は上記デバイスドライバ本体部から呼び出されるように階層化される。
【００１８】
上記構成のソースデバイスドライバによれば、上記ＡＰＩ部、又は上記ＯＳ依存部、若しくは上記ＣＰＵ依存部を変更することにより、デバイスドライバのＯＳやＣＰＵの違いに対応した品種展開が容易となる。このとき、デバイスドライバ本体部は共通化されるため、上記の品種展開は安価に実現できる。
【００１９】
〔２〕上記〔１〕において、上記ＡＰＩ部は、互いに異なるＯＳに対応して複数設けることにより、所望のＡＰＩ部を選択可能とすることができる。
【００２０】
〔３〕上記〔２〕において、上記ＯＳ依存部は、互いに異なるＯＳに対応して複数設けることにより、所望のＯＳ依存部を選択可能とすることができる。
【００２１】
〔４〕上記〔３〕において、上記ＣＰＵ依存部は、互いに異なるＣＰＵに対応して複数設けることにより、所望のＯＳ依存部を選択可能とすることができる。
【００２２】
〔５〕本発明の代表的な実施の形態に係る実行モジュール作成方法は、先ずソースコードで記述されたソースデバイスドライバ（１０）をコンピュータ（５２）に読み込む。ここで、上記ソースデバイスドライバは、アプリケーションに対応するＡＰＩ部（１１，１２）と、ＯＳに依存するＯＳ依存部（１４，１５）と、ＣＰＵに依存するＣＰＵ依存部（１６）と、上記ＯＳ及び上記ＣＰＵには依存しないデバイスドライバ本体部（１３）とを含む。そして上記デバイスドライバ本体部は上記ＡＰＩ部から呼び出され、上記ＯＳ依存部及び上記ＣＰＵ依存部は上記デバイスドライバ本体部から呼び出されるように階層化される。このようなソースデバイスドライバをコンピュータに読み込み、上記ＡＰＩ部、又は上記ＯＳ依存部、若しくは上記ＣＰＵ依存部を外部入力に応じて変更した後に、ソースコードをオブジェクトコードに変換することでデバイスドライバの実行モジュールを形成する。
【００２３】
このような実行モジュール作成方法によれば、ソースコードをオブジェクトコードに変換する前に、上記ＡＰＩ部、又は上記ＯＳ依存部、若しくは上記ＣＰＵ依存部を変更することにより、デバイスドライバのＯＳやＣＰＵの違いに対応した品種展開が容易となる。このとき、デバイスドライバ本体部は共通化されるため、デバイスドライバの品種展開を安価に実現できる。
【００２４】
〔６〕上記〔５〕において、上記ＡＰＩ部には、互いに異なるＯＳに対応して複数設けることにより、所望のＡＰＩ部を選択可能とすることができる。
【００２５】
〔７〕上記〔６〕において、上記ＯＳ依存部には、互いに異なるＯＳに対応して複数設けることにより、所望のＯＳ依存部を選択可能とすることができる。
【００２６】
〔８〕上記〔７〕において、上記ＣＰＵ依存部は、互いに異なるＣＰＵに対応して複数設けることにより、所望のＯＳ依存部を選択可能とすることができる。
【００２７】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２８】
《実施の形態１》
図２には、デバイスドライバの実行モジュールが実装されるコンピュータシステムが示される。
【００２９】
図２に示されるコンピュータシステム２は、特に制限されないが、ＣＰＵ２１、メモリ２２、内蔵装置２３とを含み、それらが、バス２４を介して互いに信号のやり取りが可能に結合されている。内蔵装置２３は、ＣＰＵ２１に結合されたデバイスの一例とされる。ＣＰＵ２１は所定のプログラムを実行する。このプログラムには、ＯＳ、アプリケーションプログラム、内蔵装置２３のデバイスドライバ（実行モジュール）が含まれる。ＯＳ、アプリケーションプログラム、及び内蔵装置２３のデバイスドライバはメモリ２２に格納することができる。内蔵装置２３は、特に制限されないが、ＣＰＵ２１の制御下で、メモリ２２に格納されている図形データの拡大処理、縮小処理、及び回転処理を行う。ＣＰＵ２１による内蔵装置２３の動作制御は、メモリ２２内のデバイスドライバを介して行われる。上記内蔵装置２３のデバイスドライバ（実行モジュール）は、プログラミングのための高級言語（ソースコード）で記述されたソースデバイスドライバをオブジェクトコードに変換することで作成されたものである。
【００３０】
ここで、ソースコードで記述されたソースデバイスドライバを、ＯＳに依存する処理（アドレス空間の制御方式・メモリ管理方式、システムコールの種類・内容、タスク・プロセス・スレッドの制御方式）のレイヤーと、内装装置２３に依存する処理（デバイスの動作の設定、デバイスを如何に動作させるか決定するレジスタの設定）のレイヤーとに分けることができる。それによって、デバイスドライバの処理をＯＳ依存の処理のレイヤーと、ＯＳ非依存の処理のレイヤーとに分離可能である。同様にデバイスドライバをＣＰＵの種類に依存する処理（命令セット、割込み処理、アドレス空間の制御方式）のレイヤーと、内装装置２３に依存する処理（デバイスの動作の設定、デバイスを如何に動作させるか決定するレジスタの設定）のレイヤーとに分けることによって、デバイスドライバの処理をＣＰＵ依存の処理のレイヤーと、ＣＰＵ非依存の処理のレイヤーとに分離可能である。そこで本例では、以下のようにソースデバイスドライバが階層化される。
【００３１】
図１には、上記内蔵装置２３のデバイスドライバ（実行モジュール）の作成に用いられるソースデバイスドライバの構成例が示される。
【００３２】
図１に示されるソースデバイスドライバ１０は、ＡＰＩ（Application Programming Interface；アプリケーション・プログラミング・インタフェース）部１１，１２、デバイスドライバ本体部１３、ＯＳ依存部１４，１５、及びＣＰＵ依存部１６を含む。図１に示されるソースデバイスドライバ１０は、ＡＰＩ部１１やＡＰＩ部１２からデバイスドライバ本体部１３が呼び出され、デバイスドライバ本体部１３からＯＳ依存部１４，１５やＣＰＵ依存部１６が呼び出されるように階層化される。ＡＰＩ部１１，１２は、アプリケーションに対するインタフェース部分であり、このソースデバイスドライバ１０のアプリケーション界面とされるレイヤーである。このＡＰＩ部１１，１２は、それぞれＯＳと内蔵装置２３毎に固有に定義された部分である。コンピュータシステム２に搭載される可能性があるＯＳとして、本例ではＯＳ＿Ａと、ＯＳ＿Ｂとの２種類を想定する。ＯＳが異なればＡＰＩ部の内容も異なる。そこで、本例では、ＯＳ＿Ａに対応してＡＰＩ部１１が記述され、ＯＳ＿Ｂに対応してＡＰＩ部１２が記述されている。ＯＳ＿Ａに対応するＡＰＩ部１１は、図３の（Ａ）に示されるように記述され、ＯＳ＿Ｂに対応するＡＰＩ部１２は、図３の（Ｂ）に示されるように記述される。ＡＰＩ部１１及びＡＰＩ部１２は、アプリケーションがＡＰＩ部を呼び出す形式で記述される。ここで、図形を表すデータの拡大、縮小、回転を行うためのデバイスドライバ本体は、「drv_VEU_Start()」や、「VEU_IOControl()」である。
【００３３】
デバイスドライバ本体部１３は、内蔵装置２３のデバイスドライバにおいて、内蔵装置２３には依存するが、ＣＰＵ２１やＯＳには依存しない処理のレイヤーである。ここで「ＣＰＵ２１やＯＳには依存しない処理」には、例えば内蔵装置２３の動作の設定、内蔵装置２３を如何に動作させるかを決定するレジスタの設定が含まれる。デバイスドライバ本体部１３のインタフェースは、例えば図３の（Ｃ）に示されるように記述される。デバイスドライバ本体部１３は、内蔵装置２３のデバイスドライバにおいてＣＰＵ２１やＯＳには依存しない部分であるため、ＣＰＵやＯＳの違いに拘わらず、共通化される。
【００３４】
ＯＳ依存部１４は、内蔵装置２３のデバイスドライバにおいてＯＳ＿Ａに依存する処理のレイヤーとされ、ＯＳ依存部１５は、内蔵装置２３のデバイスドライバにおいてＯＳ＿Ｂに依存する処理のレイヤーとされる。ここで、「ＯＳ＿Ａに依存する処理」には、例えばＯＳ＿Ａに依存するシステムコールを呼び出したり、ＯＳ＿Ａに依存する割り込み処理が含まれる。また、「ＯＳ＿Ｂに依存する処理」には、例えばＯＳ＿Ｂに依存するシステムコールを呼び出したり、ＯＳ＿Ｂに依存する割り込み処理が含まれる。
【００３５】
ＣＰＵ依存部１６は、内蔵装置２３のデバイスドライバにおいてＣＰＵ２１に依存する処理のレイヤーでる。例えば「ＣＰＵ２１に依存する処理」には、ＣＰＵ２１への割り込みを受け付けたり、ＣＰＵ２１における固有の資源へのアクセス制御を行う処理が含まれる。
【００３６】
図１に示されるようなデバイスドライバは、特に制限されないが、図５に示されるワークステーションによって作成することができる。図５に示されるワークステーション５０は、各種データが格納された外部記憶装置５１、所定のプログラムを実行することで各種演算処理を行うワークステーション本体５２、上記ワークステーション本体５２から供給された表示データを可視化するための表示装置５３、上記ワークステーション本体５２への各種情報入力のための入力装置５４を含んで成る。ワークステーション本体５３は、ＣＰＵを内蔵する所謂コンピュータであり、デバイスドライバ作成のための所定のプログラムが実行される。デバイスドライバ作成のためのプログラムがワークステーション本体５２で実行されることにより、ソースデバイスドライバを作成したり、作成されたソースデバイスドライバの内容を変更したり、ソースデバイスドライバをオブジェクトコードに変換することができる。
【００３７】
このようなワークステーション５０を用いて、図１に示されるようなソースデバイスドライバ１０が形成されると、そのファイルは外部記憶装置５１に格納される。そして外部記憶装置５１に格納されたソースデバイスドライバ１０は、必要に応じてワークステーション本体５２に読み込まれて、修正することができる。このため、図１に示されるようなソースデバイスドライバ１０を作成して、外部記憶装置５１に格納しておけば、ソースデバイスドライバ１０の一部を変更してからオブジェクトコードに変換することにより、ＯＳやＣＰＵの違いを考慮したデバイスドライバ（実行モジュール）を容易に作成することができる。
【００３８】
図４には、図５に示されるワークステーション５０において、ソースデバイスドライバ１０から実行モジュールを作成する処理の流れが示される。尚、ここでは、図１に示されるようなソースデバイスドライバ１０が既に形成され、そのファイルが外部記憶装置５１に格納されているものとする。
【００３９】
先ず、図１に示されるようなソースデバイスドライバ１０のファイルが外部記憶装置５１からワークステーション本体５２に読み込まれる（４０）。そして、入力装置５４を介して、作成対象ドライバのＯＳ（コンピュータシステム２に搭載されるＯＳ）が指定されると（４１）、ワークステーション本体５２において、作成対象ドライバはＯＳ＿Ａ向けか、ＯＳ＿Ｂ向けかの判別が行われる（４２）。この判別において、ＯＳ＿Ａ向けであると判断された場合には、ＯＳ＿Ａ対応ドライバを作成するのに必要なＡＰＩ部及びＯＳ依存部が決定される（４３）。そしてデバイスドライバ作成ツールでは、ＯＳ＿Ａ対応ドライバにおいて不要となる部分、すなわち、ＯＳ＿Ｂに対応するＡＰＩ部１２の記述や、ＯＳ＿Ｂに依存するＯＳ依存部１５の記述が削除又は無効とされる。ここで、「無効」とは、ソースコードをオブジェクトコードに変換する場合に無視させることを意味する。そして、ＡＰＩ部１１、デバイスドライバ本体部１３、ＯＳ依存部１４、及びＣＰＵ依存部１６から成るソースデバイスドライバがオブジェクトコードに変換されることで、ＯＳ＿Ａ向けデバイスドライバの実行モジュールが形成される（４５）。
【００４０】
また、上記ステップ４２の判別において、ＯＳ＿Ｂ向けであると判断された場合には、ＯＳ＿Ｂ対応ドライバを作成するのに必要なＡＰＩ部及びＯＳ依存部が決定される（４４）。そしてワークステーション本体５２では、ＯＳ＿Ｂ対応ドライバにおいて不要となる部分、すなわち、ＯＳ＿Ａに対応するＡＰＩ部１１の記述や、ＯＳ＿Ａに依存するＯＳ依存部１４の記述が削除又は無効とされる。そして、ＡＰＩ部１２、デバイスドライバ本体部１３、ＯＳ依存部１５、及びＣＰＵ依存部１６から成るソースデバイスドライバがオブジェクトコードに変換されることで、ＯＳ＿Ｂ向けデバイスドライバの実行モジュールが形成される（４５）。
【００４１】
このように図１に示されるようなソースデバイスドライバ１０が既に形成され、そのファイルが外部記憶装置５１に格納されている場合には、上記ステップ４１において、作成対象のＯＳを指定することで、ＯＳ＿Ａ向けデバイスドライバの実行モジュールや、ＯＳ＿Ｂ向けデバイスドライバの実行モジュールを容易に作成することができる。それによってデバイスドライバの品種展開を容易に実現することができる。また、ＯＳ＿Ａ向けデバイスドライバの実行モジュールや、ＯＳ＿Ｂ向けデバイスドライバの実行モジュールを、内蔵装置２３のユーザに、速やかに提供することができる。
【００４２】
《実施の形態２》
図６には、デバイスドライバの実行モジュールが実装される別のコンピュータシステムが示される。
【００４３】
図６に示されるコンピュータシステム１０が、図２に示されるのと大きく相違するのは、ＣＰＵ２１に加えてＣＰＵ２５が設けられている点である。本例において、ＣＰＵ２１で実行されるＯＳと、ＣＰＵ２５で実行されるＯＳとは互いに等しいものとする。ＣＰＵ２１とＣＰＵ２５とは、内蔵装置２３にアクセス可能される。
【００４４】
図７には、図６に示される内蔵装置２３のデバイスドライバ（実行モジュール）の作成に用いられるソースデバイスドライバの構成例が示される。
【００４５】
図７に示されるソースデバイスドライバ１０が、図１に示されるのと大きく相違するのは、ＡＰＩ部１２に対応するものや、ＯＳ依存部１５に対応するものが省略されている点、及びＣＰＵ依存部１５に加えてＣＰＵ依存部１６が設けられている点である。図７に示されるソースデバイスドライバ１０は、ＡＰＩ部１１からデバイスドライバ本体部１３が呼び出され、デバイスドライバ本体部１３からＯＳ依存部１４やＣＰＵ依存部１６，１７が呼び出されるように階層化されている。
【００４６】
ＡＰＩ部１１は、アプリケーションに対するインタフェース部分であり、このソースデバイスドライバ１０のアプリケーション界面とされる。ＡＰＩ部１１は、ＯＳと内蔵装置２３毎に固有に定義された部分である。コンピュータシステム２に搭載される可能性があるＯＳとして、本例ではＯＳ＿Ａのみを想定する。このため、ＯＳ＿Ａに対応してＡＰＩ部１１が記述される。ＯＳ＿Ａに対応するＡＰＩ部１１は、図３の（Ａ）に示されるように記述される。ＡＰＩ部１１は、アプリケーションがＡＰＩ部を呼び出す形式で記述される。
【００４７】
デバイスドライバ本体部１３は、内蔵装置２３のデバイスドライバにおいてＣＰＵ２１やＯＳには依存しない部分である。例えばこのデバイスドライバ本体部１３のインタフェースは、図３の（Ｃ）に示されるように記述される。デバイスドライバ本体部１３は、内蔵装置２３のデバイスドライバにおいてＣＰＵ２１やＯＳには依存しない部分であるため、ＣＰＵやＯＳの違いに拘わらず、共通化される。
【００４８】
ＯＳ依存部１４には、内蔵装置２３のデバイスドライバにおいてＯＳ＿Ａに依存する部分が記述される。ここで、ＯＳ＿Ａに依存する部分には、例えばＯＳ＿Ａに依存するシステムコールを呼び出したり、ＯＳ＿Ａに依存する割り込み処理を行う部分が含まれる。
【００４９】
ＣＰＵ依存部１６には、内蔵装置２３のデバイスドライバにおいてＣＰＵ２１に依存する部分が記述される。ＣＰＵ依存部１７には、内蔵装置２３のデバイスドライバにおいてＣＰＵ２５に依存する部分が記述される。例えば「内蔵装置２３のデバイスドライバにおいてＣＰＵ２１に依存する部分」には、ＣＰＵ２１への割り込みを受け付けたり、ＣＰＵ２１における固有の資源へのアクセス制御を行う部分が含まれる。
【００５０】
図７に示されるようなソースデバイスドライバ１０は、特に制限されないが、図５に示されるワークステーション５０によって作成することができる。
【００５１】
図８には、図５に示されるワークステーション５０において、図７に示されるソースデバイスドライバ１０から実行モジュールを作成する処理の流れが示される。尚、ここでは、図７に示されるようなソースデバイスドライバ１０が既に形成され、そのファイルが外部記憶装置５１に格納されているものとする。
【００５２】
先ず、図７に示されるようなソースデバイスドライバ１０のファイルが外部記憶装置５１からワークステーション本体５２に読み込まれる（８０）。そして、入力装置５４を介して、作成対象ドライバに対応するＣＰＵ（ＣＰＵ２１又は２５）が指定されると（８１）、ワークステーション本体５２において、作成対象ドライバはＣＰＵ２１向けか、ＣＰＵ２５向けかの判別が行われる（８２）。この判別において、ＣＰＵ２１向けであると判断された場合には、ＣＰＵ２１対応ドライバを作成するのに必要なＣＰＵ依存部１６が決定される（８３）。そしてワークステーション本体５２では、ＣＰＵ２１対応ドライバにおいて不要となる部分、すなわち、ＣＰＵ２５に対応するＣＰＵ依存部１７の記述が削除又は無効とされる。ここで、「無効」とは、ソースコードをオブジェクトコードに変換する場合に無視させることを意味する。そして、ＡＰＩ部１１、デバイスドライバ本体部１３、ＯＳ依存部１４、及びＣＰＵ依存部１６から成るソースデバイスドライバがオブジェクトコードに変換されることで、ＣＰＵ２１向けデバイスドライバの実行モジュールが形成される（８５）。
【００５３】
また、上記ステップ８２の判別において、ＣＰＵ２５向けであると判断された場合には、ＣＰＵ２５対応ドライバを作成するのに必要なＣＰＵ依存部１７が決定される（８４）。そしてワークステーション本体５２では、ＣＰＵ２５対応ドライバにおいて不要となる部分、すなわち、ＣＰＵ２１に対応するＣＰＵ依存部１６の記述が削除又は無効とされる。ここで、「無効」とは、ソースコードをオブジェクトコードに変換する場合に無視させることを意味する。そして、ＡＰＩ部１１、デバイスドライバ本体部１３、ＯＳ依存部１４、及びＣＰＵ依存部１７から成るソースデバイスドライバがオブジェクトコードに変換されることで、ＣＰＵ２５向けデバイスドライバの実行モジュールが形成される（８５）。
【００５４】
このように図７に示されるようなソースデバイスドライバ１０のファイルが既に形成され、そのソースファイルが外部記憶装置５１に格納されている場合には、上記ステップ８１において、作成対象ドライバに対応するＣＰＵを指定することで、ＣＰＵ２１向けデバイスドライバの実行モジュールや、ＣＰＵ２５向けデバイスドライバの実行モジュールを容易に作成することができる。それによってデバイスドライバの品種展開を容易に実現することができる。また、ＣＰＵ２１向けデバイスドライバの実行モジュールや、ＣＰＵ２５向けデバイスドライバの実行モジュールを、内蔵装置２３のユーザに、速やかに提供することができる。
【００５５】
《実施の形態３》
図９には、図６に示される内蔵装置２３の動作制御のためのデバイスドライバの別の基本的な構成例が示される。
【００５６】
図９に示されるソースデバイスドライバ１０が、図７に示されるのと大きく相違するのは、ＡＰＩ部１１に加えてＡＰＩ部１２が設けられ、ＯＳ依存部１４に加えてＯＳ依存部１５が設けられている点である。ＡＰＩ部１２やＯＳ依存部１５は、図１に示されるのと同様とされる。
このようなソースデバイスドライバ１０のファイルを外部記憶装置５１に格納しておけば、実施の形態１の場合と同様に、作成対象のＯＳを指定することで、ＯＳ＿Ａ向けデバイスドライバの実行モジュールや、ＯＳ＿Ｂ向けデバイスドライバの実行モジュールを容易に作成することができる。また、実施の形態２の場合と同様に、ＣＰＵ２１向けデバイスドライバの実行モジュールや、ＣＰＵ２５向けデバイスドライバの実行モジュールを容易に作成することができる。これにより、デバイスドライバの品種展開を容易に実現することができる。
【００５７】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００５８】
例えば、上記の実施形態では、デバイスドライバの実行モジュールを内蔵装置２３のユーザに提供する場合について説明したが、ソースデバイスドライバ１０をソースファイルの状態で、内蔵装置２３のユーザに提供する場合もあり得る。この場合、内蔵装置２３のユーザは、ソースデバイスドライバ１０から所望の実行モジュールを容易に形成することができる。
【００５９】
また、ＡＰＩ部、ＯＳ依存部、ＣＰＵ依存部等をそれぞれ３個以上設け、その中から不要となる部分の記述を削除又は無効としても良い。
【００６０】
上記の実施形態では、ソースデバイスドライバ１０のファイルにおいて、ＡＰＩ部、ＯＳ依存部、ＣＰＵ依存部等を複数形成しておき、実行モジュールの形成前に、不要となる部分の記述を削除又は無効としたが、ＣＰＵ２１やＯＳには依存しない部分であるデバイスドライバ本体部１３以外の部分の記述を、必要に応じて修正するようにしても良い。このようにしても、デバイスドライバ本体部１３は変更を要しないので、デバイスドライバの品種展開を容易に実現することができる。
【符号の説明】
【００６１】
１０  ソースデバイスドライバ
１１，１２  ＡＰＩ部
１３  デバイスドライバ本体部
１４，１５  ＯＳ依存部
１６，１７  ＣＰＵ依存部
２１，２５  ＣＰＵ
２２  メモリ
２３  内蔵装置
【図１】
2012155515.tif 000003
【図２】
2012155515.tif 000004
【図３】
2012155515.tif 000005
【図４】
2012155515.tif 000006
【図５】
2012155515.tif 000007
【図６】
2012155515.tif 000008
【図７】
2012155515.tif 000009
【図８】
2012155515.tif 000010
【図９】
2012155515.tif 000011