驱动.ko文件,如何自动在/dev/目录下生产设备节点文件,要怎么写
cw_drv_class = class_create(THIS_MODULE, "chenwei_first");
cw_drv_class_dev = class_device_create(cw_drv_class, NULL, MKDEV(major, 0), NULL, "xyz");
在驱动的入口函数init中,创建类,创建类下设备,设备名为xyz
就会在/dev/下自动创建设备节点文件xyz
原理
/*
问:能不能让系统自动创建设备节点?
答:可以,linux有udev、mdev的机制,而我们的ARM开发板上移植的busybox有mdev机制,
那么就使用mdev机制来自动创建设备节点。
*/
测试
/*
自动在/sys下面创建类和类下设备这些系统信息
# cd /sys/class/chenwei_first/xyz/
# ls
dev subsystem uevent
# cat dev
252:0 自动创建设备节点,主设备号为分配的252
#
busybox的mdev设备就会根据这些系统信息创建设备节点
# ls /dev/xyz
/dev/xyz
*/
int cw_init(void)
{ //注册设备第一个参数为0,自动分配设备号
//不为0就看哪个设备号为空,手动分配,设备名chenwei_first
major=register_chrdev(0, "chenwei_first", &cw_op);
// cat /proc/devices就会显示自动分配的设备号,和设备名chenwei_first
cw_drv_class = class_create(THIS_MODULE, "chenwei_first");
cw_drv_class_dev = class_device_create(cw_drv_class, NULL, MKDEV(major, 0), NULL, "xyz");
/* 自动创建 设备名为xyz的设备节点 /dev/xyz */
return 0;
}