插入模块后自动在/dev下生成设备结点

这篇博客讲述了作者在为一家公司开发摄像头sensor驱动时遇到的问题,原本手动创建的设备结点需改为自动创建。通过引入udev机制,使用class_create和class_device_create函数成功实现insmod后自动在/dev下生成设备结点。但在尝试将设备注册为平台设备+misc时,rmmod过程中遇到设备缺少release()函数导致错误。解决方法是添加一个空的release()函数到平台设备的driver中。
摘要由CSDN通过智能技术生成

说来惭愧,给上海一家小公司提供一个摄像头sensor的驱动,他们回信说驱动做的太粗糙。。。⊙﹏⊙b汗,主要是由于模块太简单,我就把它注册成一个简单的字符设备,insmod之后用mknod在/dev下建立设备文件。现在要求insmod之后直接就在/dev下生成设备结点。

 

看来是要用udev机制了。于是将原来的驱动稍作改动,也就是新建立一个设备类,然后把这个类设备注册到内核就可以了。用到两个函数

第一个函数创建一个设备类,第二个函数将该设备类的一个设备注册到内核。果然加载驱动后就自动在/dev下生成设备结点了。

 

翻了一下Ldd3,上面讲class_simple接口现在用不了,主要是随着内核的升级,这些class_函数的名称在一直变。我用的2.6.18的内核是class_create,不晓得后面的内核又变成了什么样子。又看到说各个子系统,比如tty, misc,input等会自动进行创建设备文件,于是想把sensor注册为平台设备+misc。这样就不用显式的去调用class_类函数了。设备加载过程没有问题,但是在rmmod的时候出现了问题

3>Device 's

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值