第一个驱动--自动创建设备节点

驱动.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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值