字符设备驱动之misc驱动
Misc驱动,在LDD3上面基本没讲,但由于其方便,现在使用已经相当广泛。本文首先介绍了普通字符驱动的结构即流程,之后将misc字符驱动与普通字符驱动进行了比较。最后通过源码对misc有更进一步的认识与了解。
如果对字符设备驱动是初次接触,不是特别了解驱动的框架,可以参考 字符设备驱动内核框架小结(一),这篇文章非常清晰、完整的介绍字符设备驱动的一系列知识。
1. 普通字符驱动结构及相应的流程
1.1结构图
1.2流程
1. 申请设备号,特别注意:对于一个新的驱动程序,由于使用驱动程序的人并不一定只有我们自己,其可能被广泛使用,随机选定的主设备号可能造成冲突和麻烦。最好不要 随机选择一个当前未使用的设备号,而应该用动态分配机制去获取主设备号。
即驱动程序应该使用alloc_chrdev_region而不是register_chrdev_region函数。
2. 完成cdv的注册,调用cdev_add()函数向系统注册字符设备
3. 调用cdev_de()函数从系统注销字符设备。
4. 用unregister_chrdev_region()函数释放原先申请的设备号。
2.misc驱动
Misc设备驱动与一般字符驱动的优点与联系:
优点:
1. 节省主设备号:使用普通字符设备驱动框架,不管该设备的主设备号是静态或者是动态分布的都会