请问如何在卸载驱动程序时删除设备节点
驱动开发与调试过程中:
在驱动的exit,我unregister_chrdev了设备。
但重新insmod驱动时,会提示错误,因为前一次装载驱动时创建在/dev下的device_name还在。
必须删掉才能再次insmod。
网上搜索,答案是:
“ 除了卸载模块,你还经常需要在卸载驱动程序时删除设备节点。我们用加载模块时使用的一对脚本中的另一个来完成这项工作。对于我们的样例设备,脚本scull_unload完成这个工作,作为选择,你也可以调用scull.init中的stop。”
在嵌入式的平台文件系统中,找了没有scull.ini这个文件
请问具体是如何做,thanks,感谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
卸载模块之后,用 rm 命令删除设备节点
thanks to seaquester
可能是由于文件系统的缘故,设备节点不能rm掉
#rm -f /dev/uart2/rs422-dma
rm: unable to remove `/dev/uart2/rs422-dma': Operation not permitted
请问:
网上搜索,答案是:
“ 除了卸载模块,你还经常需要在卸载驱动程序时删除设备节点。我们用加载模块时使用的一对脚本中的另一个来完成这项工作。对于我们的样例设备,脚本scull_unload完成这个工作,作为选择,你也可以调用scull.init中的stop。”
怎么具体做的呢? 感谢
[ 本帖最后由 robotlee2002 于 2008-7-16 14:33 编辑 ]
你可以下载ldd3的源代码包,看看scull_unload是怎么工作的
其实就是一个rm操作
模块成功卸掉了吗?用lsmod看看
scull_unload 就是先rmmod模块,然后rm 设备节点
问题还没有解决,搞得现在调试很麻烦。每次装载一次驱动,卸载后,
下一次insomod,得重启一下ARM板。
为什么删除不了?能说明一下吗?用的是什么文件系统
以后遇到这种问题也好预防一下
设备节点 何所使用的文件系统无关。
你的设备节点是有 udev/mdev 维护的吗?
回复 1# robotlee2002
你需要先卸载驱动程序,也就是 rmmod ****
然后再rm /dev/*** 这样就可以了。