日期:2014-05-16  浏览次数:20707 次

linux设备驱动笔记一
         关于linux驱动,可以说是一滩深水,在没有高人指点的情况下,学起来感觉额外费劲。
还好,这几天算是有一点进步吧,在这里先记下来。
        以前,总提到设备模型这个东西,但我当时其实并不了解设备模型是什么东西。直到最近....
        所谓linux设备驱动模型,应该从linux2.6内核说起,2.4内核是没有这么一个概念的,我的
理解是这样子的。我们接触过很多,各种linux设备驱动,如字符设备,混杂设备等等。直接注册
进系统就可以用了,这些都不涉及驱动模型这一概念。所谓驱动模型,应该是为了做到更好的跨
平台吧,才引入的一个东东。怎么说呢?
       首先,设备模型涉及到三个概念:总线,设备,驱动。这里面涉及注册,探测,匹配等等。在我
研究的过程中,又涉及到一些问题。我暂时的理解是这样子的,驱动是总线的驱动,所谓注册驱动
,实质上是注册一个总线的驱动,如平台总线,PCI总线。而设备,指的是真正的硬件设备。要知道,
在我们以前的linux驱动当中,如字符设备,混杂设备都只有注册设备这一说法,没有注册驱动这一
说法的。只有在涉及到总线的驱动中,才有注册驱动这一说法,如PCI ,IIC,Platform等等。
        但是,是先注册驱动,还是先注册设备呢?经过研究,在系统初始化的时候应该是初始化了设备,
后面加载设备的时候应该也加载了设备,注册驱动的时候也加载了驱动。所以谁先谁后,看来没有那么
简单的答案。这里有涉及链表,设备链表,最开始,系统初始化初,这个链表如何建立的呢?
        其次,设备模型是一颗树,2.6内核才有的树。一颗有总线,驱动和设备组成的叶繁枝茂的大树。
这课树,最直接的体现就是根部目录下的/sys这个文件夹,更确切的说应该是这个虚拟文件系统。可以
用命令查看这颗树:tree /sys.