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

linux嵌入式驱动-总线设备驱动模型

一、Kobject&Kset

Kobject就是在sysfs文件系统中创建一个目录,目录中包含一个文件。而Kset就是在sysfs文件系统中创建一个可以包含目录的目录。所以Kobject是Kset的父类或基类。

1、sysfs文件系统

“sysfs is a ram-based filesystem initially based on ramfs. It provides a means toexport kernel data structures, their attributes, and the linkages between them to userspace.”

---documentation/filesystems/sysfs.txt

Linux2.6内核引入了sysfs文件系统。sysfs被看成是与proc同类别的文件系统。sysfs把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问的到。也就是sysfs通过文件树的方式让用户知道内核的信息。

sysfs被加载在/sys/目录下,它的子目录包括:

.Block:在系统中发现的每个块设备在该目录下对应的一个子目录。每个子目录中又包含一些属性文件,它们描述了这个块设备的各个方面属性,如:设备大小。(loop块设备是使用文件来模拟的)

.Bus:在内核中注册的每条总线在该目录下对应一个子目录,如:ide pci scsi usb pcmcia 其中每个总线目录内又包含两个子目录:devices和drivers,devices目录包含了在整个系统中发现的属于该总线类型的设备

二、设备驱动模型

三、Platform驱动程序

四、中断处理

五、按键驱动程序