Linux デバイスドライバの作り方メモ

                               (作成途中)

Aug 31 2003
 恥ずかしながらお勉強めもです。
1 ドライバの必要性について
2 ドライバの種類
3 ドライバの作成、追加、削除の流れ

1 ドライバの必要性について
 Linuxはアプリケーションプログラムから直接I/Oへアクセスできない。
 アプリケーションプログラムはデバイスドライバを経由する。



演習1 次のコマンドを実行しなさい。


 cat /proc/devices

 答 deviceが表示されます。


2 ドライバの種類
デバイスは下のようにcharacter型とblock型があります。下のようにデバイスごとに固有の番号が付与されています。
 普通block型のデバイスを個人的に作成する必要になることは無いと思います。
Character devices:
  1 mem
  2 pty
  3 ttyp
  4 ttyS
  5 cua
  6 lp
  7 vcs
 10 misc
 13 input
 14 sound
 21 sg
 81 video_capture
116 alsa
119 vmnet
128 ptm
136 pts
162 raw
180 usb
195 nvidia

Block devices:
  2 fd
  3 ide0
  8 sd
 22 ide1
 65 sd
 66 sd


演習2  ファイル /etc/modules の記述は何を意味するか。

 cat /etc/modlues
usb-uhci
input
usbkbd
keybdev
lp
mousedev
usbmouse
via-rhine
ide-scsi
sg
msdos
nfsd
nls_cp932
nls_sjis
nls_UTF-8
ntfs
umsdos
apm

 答 起動時にドライバを組込む方式のデバイスドライバの一覧。

3  ドライバの作成、追加、削除の流れ
 c言語でdriver.cというドライバを作成し、コンパイラで
gcc -c devdr.c
というふうにコンパイルします。
 そうすると driver.o というファイルができます。(これがドライバ)
 これを使うにはルートで
 insmod driver
としてシステムにロードします。
 ロードしたモジュール(ドライバ)を削除するときは
 rmmod driver.o
というふうに拡張子まで付けて(ファイル名で)削除します。


演習3 実際にドライバが登録されたかどうかを確認するにはどんな方法があるか。


 答   cat /proc/modules



4 アプリケーションプログラムとデバイスドライバの関係

 Linuxでは、アプリケーションプログラムがデバイスを使うときそのデバイスドライバに
対して open,close ,read,write,ioctl  というシステムコールを用いる。
 というのはウソでアプリケーションプログラムが直接デバイスドライバに関数呼出しのようなっことはしません。
 アプリケーションプログラムは直接デバイスドライバを使えません。OSに対してシステムコールをし、システムコールを受けとったOSがデバイスドライバを呼び出します。アプリとデバイスドライバとOSの関係

5  システムコール open,close ,read,write,ioctl
 


目次 top

アンケートにお答え下さい.
このページについて とても参考になった。
すこし参考になった。
参考にならなかった。