• ベストアンサー

デバイスドライバー作りに関する質問

デバイスドライバーでは、アセンブリ言語を使う部分があるとの事で、アセンブリ言語の技術を伸ばす為、デバイスドライバーを作ってみようと思うのですが 実際はどれくらいアセンブリ言語を使うのでしょうか またはデバイスドライバーというのは組み込みの分野ですか?

  • tukai
  • お礼率57% (102/177)

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

  • ベストアンサー
  • z64423
  • ベストアンサー率53% (26/49)
回答No.1

あんまり使わない、という回答でいいんでしょうか。 ほとんどC言語で、CPUのレジスタのアクセスにCの関数内でインライン・アセンブラ asm() を使うくらいです。 ふつうのI/OデバイスのレジスタへのアクセスはCで書けますから。 Windows ドライバでも、I/Oアクセス用のライブラリ関数が(多分)ありますからそれで事足ります。 アセンブラでないと書けない処理や、Cで書くと間に合わない(時間制約が厳しい)処理のときくらいなんでは。 ふつうのPC(WindowsとかLinuxとか)でも組み込みでも、ハードウェアデバイスがあるかぎり、デバイスドライバはあります。 デバイスドライバだから組み込み、というわけではありません。 ただ、プログラムを書くときの意識は、組み込みに近いと思います。 ちなみに、組み込みの場合でもだいたい同じで、ほとんどCで書きます。 # それがふつうなのかは分からない…、あまり人のコードは見たこと無いので。 Linux や Windows のデバイスドライバの本を本屋で立ち読みしてみるといいと思います。 だいたいどんな感じなのかが分かります。 アセンブラを理解したいのであれば、Cでプログラムを書いて、それがどういうアセンブラコードになるのかを読んで理解したほうがいいのではないでしょうか。

tukai
質問者

お礼

解りやすい回答を有難う御座いました やはり今はあまりアセンブラを使う機会は少ないのですね

その他の回答 (1)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

同じくアセンブラはほとんど使わないと思います。 だいたい#1のかたの回答と同じですね。 組み込み関係で何度かVMEバス上のvxWorksとかpSosとか使いましたが全てCでした。 大体OSサポートの機能で足ります。ハードウェア割り込みも使えますし。 ドライバ無しでVMEバス上のハード使いましたが、メモリマップドIOでしたので、ポインタ使ったアクセスで終わりです。 ただ、起動シーケンス、初期設定等を調べるのにアセンブラのコードを読みましたけど。 今だと組み込み関係、それもpic使うような小さい物でないとアセンブラはほとんど要らないんじゃないかと。 あと、ドライバ作るのはアセンブラより、ハードウェアに近い知識とか、OSがあればそれの細かい機能とか動作とかの方が重要だと思いますが。

関連するQ&A

  • デバイスドライバについて

    デバイスドライバというのがよくわかりません。デバイスをマシンに認識させるということですよね。なぜ、そのようなことができるのかがわかりません。 とくに、自分でデバイスドライバを書くというのは、どういうことなのでしょうか? 雑誌などでは、C言語で書かれていましたが、Java言語でも書く事はできるのでしょうか? 単純に、「なぜ書けるのでしょうか?」「何を見て書いているのでしょうか?(デバイスの仕様書のようなものがあるのでしょうか?)」 どうか教えてください。お願いします。

  • 組込みプログラム言語の容量・速さの比較

    組込みプログラム言語の容量・速さの比較 組込みプログラムで使用する言語には ・C(++) ・アセンブリ言語 ・JAVA ・(組込み用JAVAのJ2ME) ・(組込み用JAVAのKVM) がありますが、ターゲットデバイス(マイコンなど)へロードする ロードモジュールの状態でのサイズ(容量)は同じなのでしょうか。 違うのであればどれくらいの差があるのでしょうか。 私の予想では  アセンブリ言語 < C(++) < JAVA ですが、どれくらいの差があるのか想像がつきません。 また処理の速さは  アセンブリ言語 > C(++) > JAVA になるのでしょうか。

  • デバイスドライバーについて。

    デバイスドライバーについて本を読んだりしてみたのですが、 I/Oとハード間のやりとりを行う。というような抽象的なことしかなかったのですが、実際にはデバイスドライバーというのは、 CPUやデバイスとかとどういう処理のやりとりをしているのか、デバイスドライバー が作動しているときには、CPUやメモリの領域をどのようにしているのかなどを 知りたいと思っています。 質問の文章表現が上手くありませんが、おわかりになる方がいましたら、 教えていただきたいと思います。

  • デバイスドライバの作成

    デバイスドライバを作成するには、何を勉強したらいいですか? 動かしたいハードにより、全く異なるものなんですか?それとも、 だいたい同じような言語で書かれてるものなんですか?

  • ディバイスドライバーについて教えて下さい。

    旧PCのHDDを、新PC(グレードUP)に移行を考えています。ただマザーボードが違うので ディバイスドライバーが違います。HDDの移行の後ディバイスドライバーをインストールする事で OKでしょうか?何か支障があるでしょうか?教えて下さいよろしくおねがいします。

  • デバイスドライバの位置付けについて

    デバイスドライバの位置付けについて デバイスドライバはOSが周辺機器を制御する為のソフトウェアだと思いますが OSと周辺機器のインターフェースと考えても間違いではないでしょうか?

  • 組み込み技術者の方々へ質問させてください。

    この私の質問をご覧になっていただきありがとうございます。 現在20代の男です。 今回の質問させていただく内容はどうすれば一人前の組み込み技術者になれるかということです。 現在、組み込みを行っている会社で働いていますが、なかなか進歩しません。(そろそろ5ヶ月目になります) 最初は組み込みで使っている言語もあまりわからないレベルから始めたわけですが、いまだに言語や組み込みの処理等がよくわかりません。 最近は何を勉強すればいいのか?が整理つかなくなってきて頭の中がパニック状態になってしまっています。 嫌いではない分野なのですが、自分自身が早く一人前になろうと焦ってしまっているのかもしれません・・・。 そこで、現在組み込みの仕事を行っている方はどのようにしてそこまでの技術を身につけたのかを教えて欲しいです。 また、それにあたってのいい本やサイトなどがありましたら教えて欲しいです。 やる気はありますので、どうかよろしくお願いします。

  • このハードウェアのデバイス ドライバを読み込むことができません。ドライ

    このハードウェアのデバイス ドライバを読み込むことができません。ドライバが壊れているか、ドライバがない可能性があります。 (コード 39) [解決策の確認] をクリックして、このデバイスに関するデータを Microsoft に送信して利用可能な解決策があるか確認することができます。 今日DVDを使おうとして起動しないのでデバイスマネージャーで調べたら以上のメッセージがでて いろいろネットで調べて「!」の部分を削除して再起動しても解決せず 「hl-dt-st DVDRAM GSA-H60N ATA」を利用しているのですが ドライバーも見つかりません・・・ 使えるようにするにはどうすればいいでしょうか? もしくはDVDドライバーに1つ空きがあるので ここに新しい物を取り付ければ解決されそうでしょうか? 自分で取り付けた事はないですが簡単にできそうですか? いろいろ質問して申し訳ないですがよろしくお願い致します

  • WindowsXPのデバイスドライバのインストールで異なるデバイスとし

    WindowsXPのデバイスドライバのインストールで異なるデバイスとして認識してしまう現象の対策を教えてください。 <質問内容> USB機器を接続した際に、Windowsが異なるデバイスとして認識してしまう為、 接続したデバイスのドライバのインストールができません。 ・異なるデバイスとして認識させない方法  (※恐らくレジストリなどに情報が残っているのだと思いますが、適切な消去方法が不明です) ・新しいデバイスドライバのインストール方法  (※古い情報が残っていたとしても、インストールしたいドライバを適切にインストールできれば良いです) を知りたいというのが質問の趣旨です。 宜しくお願いします。 <状況> USB機器のドライバをインストールをしようとしています。 USB機器を接続すると、Windows画面右下のタスクトレイ部に「デバイスが接続され、ドライバのインストールを促すポップアップ」が出ると思います。 ここに、昔入れたドライバ(同類のUSB機器)が表示されしまう(異なるデバイスとして認識されてしまう)為、対象のデバイスとしてドライバのインストールができません。 対策として、以下を行っていますが改善しません。 ・別のUSBポートで試してみる ・昔入れたドライバのアンインストーラでアンインストールを行う ・デバイスマネージャで非表示デバイスの表示(非接続デバイスを含む)を行い、関連ドライバを削除 ・フリーのレジストリ整理ツールを使用して、レジストリの整理 <環境> USB機器:詳細をお伝えできません。 OS:WindowsXP

  • デバイスのドライバについて

    お世話になります、 SX Series SX3317を使用していましたが、 動作が遅い為XP Proに入替えました。 ところがデバイスマネージャを確認すると以下のところに ?マークがついていました。 ?があるのは以下の3箇所です。 1、PCIデバイス 2、ユニバーサルシリアルバス(USB)コントローラ 3、不明なデバイス これら3箇所のデバイスを特定するためUnknown Device Identifier8.00を使用しましたところ、 以下のデバイスが特定されました。 1、Chip:Nvidia MCP73 Highi Definition Audio 2、Chip:Nvidia MCP73 USB EHCI Controller 3、unknownと表示されると思ったのですが該当するものは見つからず。。。 1と2についてNvidiaのHPにドライバが見つからず、 またググって見たのですが、やはりドライバを探し出せませんでした。 ドライバが何処にあるかご教授願えますでしょうか。 また、3についてどのように対応すればよろしいでしょうか。 なお、当初イーサネットコントローラにも?がありましたが、 WEBからドライバをインストールし解決しています。 機器情報 o'zzio SX3317 http://pc-support.jp.onkyo.com/upfile/HARDWARE/SPECSHEET/SPEC_SX3317.htm 宜しくお願いします。

専門家に質問してみよう