Linux系统驱动程序的设计


驱动程序框架:Linux把外部设备看成一种特殊文件,称为"设备文件".驱动程序可看做内核与外部设备接口,驱动向硬件屏蔽细节,使内核可以像操作普通文件一样操作外部设备.

驱动程序是函数的集合,他们提供的功能是能从设备上读/写,就象操作文件一样.每个设备都具有文件特征,能使用open(),close(),read().write()等系统调用.

设备分为两类:字符设备和块设备.驱动也分为两类: 字符设备驱动,块设备驱动. 另外每个设备都具备 两个设备号: 主设备号标示设备种类,也标示它所使用的驱动程序.另外一个是次设备号,表示同一设备驱动程序的不同硬件设备.主设备号必需与登录该设备时申请的主设备号一致.使用mknod命令创建指定类型的设备文件,同时指定设备的主设备号,和次设备号.

以我们横向反馈数字板的寄存器访问usb接口驱动程序为例:

module="bbf_sig_drv"
device="bbf_sig_drv"
mode="a+rw"

/sbin/insmod $module.o $* || exit 1

rm -f /dev/usb/${device}[0-7]
mknod /dev/usb/${device}0 c 180 220
mknod /dev/usb/${device}1 c 180 221
mknod /dev/usb/${device}2 c 180 222
mknod /dev/usb/${device}3 c 180 223
mknod /dev/usb/${device}4 c 180 224
mknod /dev/usb/${device}5 c 180 225
mknod /dev/usb/${device}6 c 180 226
mknod /dev/usb/${device}7 c 180 227
chmod $mode /dev/usb/${device}[0-7]

关于第一行意义安装驱动程序,第二行红色意义是:创建设备文件 并以180设备类型驱动,次设备名为220.

相关内容