• ベストアンサー

パソコンの拡張基板用 Device Driverの作成

 元電気屋(ハード)です。 パソコンの拡張バスを使い ごく簡単なI/O基板を作るとします。 OS WIN2000 拡張バス ISA ISAバスなので回路は直ぐ出来ると思いますが、Device Driverはどの程度難しいのでしょうか。ソフト屋としてどの程度の経験、年数が必要とされるのでしょうか。 (今はDevice Driver作成ツールがあるようですが利用しないとします。) WEB上でISAバスのタイミングチャートなどのバス規格を知りたいのですが、ご存知の方よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.4

回答No.1, No.3へのコメントに関する補足です。 作成されるデバイスドライバがWindowsに標準で備わっている一般的な分類(キーボード用、マウス用、ハードディスク用等・・・「クラス」と呼ばれます)のどれかに当てはまる場合と当てはまらない独自の機能を持つ場合では、デバイスドライバ作成の際に考慮しなければならない「約束事」の内容がだいぶ違ってきます。 一度何らかのI/Oボード用デバイスドライバを作成し、次に別のI/Oボード用デバイスドライバを作成するとした場合、それが以前作成したものと同じクラスに属するのであれば比較的容易に作成する(あるいは作り変える)ことができます。しかし、別のクラスに属する場合はそのクラスごとにある「約束事」を新たに修得する必要があり、簡単に済むとは限りません。 例えば、まずパラレルI/Oを行う汎用I/Oボードを作成し、ポートの入出力を1ビットずつ操作できるようなデバイスドライバを作成したとします。そのようなデバイスドライバはWindowsの標準的な分類では当てはまるところがないので、独自クラスということになります。 その後、同じようなパラレルI/Oを行う別の汎用I/Oボードを作成したとしましょう。そのとき、このI/Oボード用デバイスドライバも独自クラスとして作成するのであれば、前回作成したデバイスドライバを手直しすることで、かなり楽にデバイスドライバを作成することができます。おそらく数週間もかからないでしょう。 しかし、アプリケーションからこのI/Oボードが「プリンタインターフェース」として見えるようにしたいと思ったら、プリンタクラス用デバイスドライバの約束事に従ってデバイスドライバを拡張する必要があり、これには場合によっては時間がかかります。 クラスごとの約束事(ソフト的なインターフェース等)はクラスごとに大きく異なるので一概にどのくらいの分量とは言えませんが、機能が標準的なクラスに近ければサンプルプログラムが参考になりますし、遠ければより苦労することになります。 次にデバイスドライバ作成ツールの類ですが、これには大きく分けて2種類があります。 1つはデバイスドライバに求められる約束事(フレームワーク)への準拠を補助してくれるもので、そのような作成ツールを使用すると、(ツールがうまく開発目的と合致すれば)コーディングの量や理解しなければならない詳細が通常のデバイスドライバ開発よりも少なくて済みます。 もう1つは「デバイスドライバを作成しなくてもアプリケーションからデバイスにアクセスできるようにするためのツールキット」です。デバイスを制御するためには特定の物理メモリやI/Oポートにアクセスする必要がありますが、アプリケーションからこれらのリソースに直接アクセスすることはできないため、通常はデバイスごとにデバイスドライバが必要になります。しかし、指定した物理メモリやI/Oポートにアクセスできるような汎用のツールキットがあれば、アプリケーションからこのツールキットを経由して間接的にデバイスのリソースにアクセスし、アプリケーションレベルでデバイスドライバに相当する機能を実現することができます。 前者の場合は完全なデバイスドライバが作成できますが、デバイスドライバを作成するための「約束事」から完全に解法されるわけではありません。後者の場合はほぼ完全に「約束事」から開放されますが、デバイスへのアクセス手順をアプリケーション内に実装することになるので汎用性は低くなり、速度もかなり遅くなります。そのかわり開発はアプリケーションレベルで行えるので、非常に楽です。 最後に、ドライバを書く上で参考になるサイトを2つ挙げますので、よろしければご覧になってみてください。 http://www.osronline.com/ http://www.sysinternals.com/Information.html

motden
質問者

お礼

 御回答有難う御座います。 「約束事」と言う易しい言葉で御説明いただき有難う御座います。「約束事」、「クラス」からデバイスドライバー作成の開発難易度が良く分かりました。 デバイスドライバ作成ツールを使ったときに速度に差が出るとは、経験者ならではのご指摘です。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • nick2038
  • ベストアンサー率34% (55/160)
回答No.3

 ちなみにDevice Driver作成ツールについては、いまいち使えないって話を作成をしてる人から聞いた事があります。 どうやら、ツールに任せれば一丁上がり、みたいにはいかないようです。

motden
質問者

お礼

 情報有難う御座います。 Device Driver作成ツールを買えば、初心者でも作れるのかなと思っていました。

すると、全ての回答が全文表示されます。
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

"isa bus specification" をGoogleで検索すると、それらしいものがいくつか出てきますが、そのものずばり!というサイトはないようです。(ISAバスに関する本が何冊か出版されていて、その中に定番とされているものがあるみたいです。) http://www.pc104.org/ http://www.embeddedlinks.com/chipdir/oth/sokos/isa.txt http://www.sbs.com.cn/disk/xgzl/ISAtime.pdf

すると、全ての回答が全文表示されます。
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

Windows 2000/XP向けデバイスドライバを作成するとします。 プログラミング一般の知識は充分あるがデバイスドライバ作成に関する予備知識はないものとして、サンプルプログラムに改造を加えてISAバス上のデバイスにアクセスするようなデバイスドライバが動き始めるまで、2ヶ月というところではないでしょうか。 売り物になるような完成度となれば、少なくとも半年は経験がいるのではないかと思います。これは、いろいろ落とし穴がいっぱいあり、それぞれ穴に落ちるまでなかなか身につかないので、一通り落ちるのにそのくらいかかるかなという意味です。 デバイスドライバは楽しいですよ。ちょっとした間違いですぐOSが落ちるので、DOS時代のスリルとサスペンスが味わえます(笑) ISAバスの規格のほうはちょっと分かりません。検索したら出てくるかな?(出てくるようであればまた書き込みます。)

motden
質問者

お礼

 ご回答有難う御座います。 結構大変そうですね、中堅クラス以上のソフト屋さんとしての技術力が必要のようです。 一度簡単なI/Oボードを経験(マスター)しますと、新たな拡張基板用Device Driverの作成は数週間程度で出来るのでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A