Linux设备模型涉及的技术和知识点
1. 核心架构组件
1.1 Kobject 子系统
- kobject(内核对象):Linux设备模型的基础构建块
- kset(对象集合):kobject的容器,管理相同类型的对象
- ktype(对象类型):定义kobject的行为和属性
- 引用计数机制:使用kref管理对象生命周期
- 对象层次结构:通过parent指针构建树形结构
1.2 Sysfs 虚拟文件系统
- 统一设备信息接口:通过
/sys
目录展现设备层次结构 - 属性文件:设备、驱动、总线的可读写属性
- 符号链接:表示设备间的关系
- 用户空间接口:应用程序访问设备信息的标准方式
1.3 设备模型核心结构
struct device {struct kobject kobj; struct device *parent; struct device_private *p; struct bus_type *bus; struct device_driver *driver; struct device_type *type; struct class *class;
};
2. 总线(Bus)子系统
2.1 总线类型
- Platform Bus:片上系统(SoC)设备的虚拟总线
- PCI Bus:PCI/PCIe设备总线
- USB Bus:USB设备总线
- I2C Bus:I2C设备总线
- SPI Bus:SPI设备总线
- ACPI Bus:ACPI设备总线
2.2 总线管理