文件名称:内核在此方-基于himawari-8卫星的沙尘监测
文件大小:7.57MB
文件格式:PDF
更新时间:2024-06-29 20:21:01
嵌入式linux 周立功
2.8 混杂设备驱动编程
2.8.1 混杂设备和驱动
回想一下 2.6 内核字符驱动编程的基本过程:
(1) 首先需要通过 alloc_chrdev_region()获得设备编号;
(2) 然后需要通过 cdev_alloc()申请一个 cdev 结构;
(3) 接着需要通过 cdev_init()对申请到的 cdev 进行初始化;
(4) 最后才能将申请到的 cdev 通过 cdev_add()往系统添加。
这样编写驱动稍微显得有点繁琐,能否简化驱动编写的初始化过程呢?2.6 内核在此方
面作了很大努力,为驱动初始化提供了更加简便的方法。
2.6 内核的驱动按照各类设备的特性,在 cdev 基础上进行了进一步封装,增加了各类设
备的特性功能管理,抽象出了多子系统,如 input、usb、scsi、sound 和 framebuffer 等。基
于子系统编程,子系统能够完成与 sysfs 的交互,直接生成设备节点,简化了驱动编程。
混杂设备(misc decive),是一些无法按照特定子系统的特性进行抽象的一些设备,在
内核中用 miscdevice 来描述。所有的混杂设备被用同一个主设备号 MISC_MAJOR(10),每
个设备只能选择自己的次设备号。如果希望为某个设备单独分配主设备号,或者一个驱动想
驱动多个设备,那这份驱动就不能通过混杂设备驱动来实现。
描述 misc 设备的结构体 miscdevice 在