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 總線管理