/* 整理于2012.11.21 于广工大 */
要知道在Linux系统中,一切皆文件,一个底层设备的驱动程序固然也不例外,它以一种有异于普通文件的设备文件的身份幸存在于fs当中,设备文件与保存数据或读取存储数据的普通文件不同,它只提供可调用内核内部函数的信息:设备驱动程序类型(字符型/块型)、主设备号、次设备号。
应用程序为了使用设备,向内核申请控制设备,此时内核利用上述的3种信息中的设备驱动程序类型信息和主设备号,调用相应的设备驱动程序。至于次设备号,它只用作区分同一类设备驱动程序下的不同设备。
应用程序要操纵外部硬件设备,需要像对待普通文件一样,对此硬件对应的设备文件open(),read(),write(),···一系列的系统调用,从而实现了对外部设备的间接操纵。一个设备驱动往内核中注册后,要想在/dev目录下创建这样的一个相应设备文件,可通过如下两种方式实现:
1.手动创建
在insmod xxx.ko装载xxx驱动后,利用mknod命令手动创建相应设备节点:
mknod /dev/xxx c major minor /* c表示此为字符设备,major –主设备号,minor-次设备号 */
mknod /dev/xxx b major minor /* b表示此为块设备,