刚刚看完字符设备驱动的教程,和之前看的杂项设备对比以后,有点混乱,稍微整理一下吧。本人刚开始学嵌入式,如果文章中有不对的地方,欢迎大家指正。
首先,区分一下杂项设备和字符设备的概念。
字符设备:必须以串行顺序依次进行访问,且没有经过系统快速缓冲的设备。每个字符设备均要要为其分配一个主设备号(目前一个系统最多只能支持255个字符设备)。
杂项设备:简单来说是一个特殊的字符设备,由于字符设备的创建方式比较消耗系统的主设备号资源,从而引入的杂项设备。杂项设备的主设备号相同,它们只占用一个主设备号资源,也就是主标号为10的misc,不同的杂项设备通过次设备号来进行区分。
接下来,看一下杂项设备和字符设备的驱动的注册方式有什么不同。
首先看一下驱动注册的大致流程,流程图如下:
其虚拟平台总线中包含设备链表和驱动列表,我们需要先在虚拟平台中进行设备的注册,并编译进内核,烧写进系统。然后再以module的方式进行驱动注册。接着,系统调用platform_match()函数检测注册的驱动与设备是否一致,若一致,则进入probe初始化程序,然后生成设备节点(注意的