您的位置:首页 > 其它

(一)小记——驱动中使用class_device_create()报错的原因、自动创建设备节点

2017-01-04 14:28 246 查看
本文转自http://blog.sina.com.cn/s/blog_69dd1a09010199m1.html

  之前写的字符类设备驱动,没有自动创建设备节点 ,因为只使用了register_chrdev()函数,只是注册了这个设备。然后在系统启动后,就要自己创建设备节点mknod,这样虽然是可行的,但是比较麻烦。于是想在__init函数里面,自动创建设备节点。

  经过查阅资料,发现创建设备节点使用了两个函数 class_create()和class_device_create(),当然在__exit()函数里,要使用class_destory()和class_device_desotry()注销创建的设备节点!

  问题来了,编译了之后,发现报错error: implicit declaration of function ‘class_device_create’等几个错误。经过分析,应该是Linux内核版本不同的原因!早期的版本,使用的是上面说的两个函数,但是在2.6.29以后(我用的是2.6.32的),使用的函数则变成了 class_create()和device_create(),并且要加入头文件#include < linux/device.h> ,因为定义这些函数是在Linux2.6.32/include/linux/device.h里面!

经过这些修改后,驱动编译成功,就能够自动创建设备节点了!

然而我遇到的情况是编译通过了但是还是不能自动创建设备节点,可能是内核和busybox不是很兼容,mdev不能帮助我们创建设备节点,所以我最后还是写了一个脚本用mknod手动创建了设备节点,也是可以访问对应设备的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐