驱动开发学习20250522

总线

总线控制器驱动程序功能:

  • 必须定义总线特定的驱动程序结构和总线特定的设备结构
  • 为探测到的每个物理设备分配总线特定的设备结构,并负责初始化设备的bus和parent字段,向LDM内核注册设备
    总线管理的列表:
  • 添加到总线的设备列表
  • 注册到总线的驱动程序列表

设备

cpp 复制代码
struct device {
	struct device *parent;
	struct kobject kobj;
	const struct device_type *type;
	struct bus_type *bus;
	struct device_driver *driver;
	void *platform_data;
	void *driver_data;
	struct device_node *of_node;
	struct class *class;
	const struct attribute_group **groups;
	void (*release)(struct device *dev); 
};
  • *parent:代表设备的父设备,用于构建设备树层次结构
  • *bus:代表设备所在总线。总线驱动程序必须配置该字段
  • *type:标识设备类型
  • kobj:句柄引用计数和设备模型支持中的kobject
  • *of_node:指向与设备相关的OF节点的指针
  • platform_data:指向设备特有的平台数据的指针,通常设备配置期间在开发板特有的文件中声明
  • driver_data:指向驱动程序私有数据的指针
  • class:指向设备所属类的指针
  • *group:指向struct attribute_group列表的指针,用作设备的默认属性
  • release:设备引用计数达到零时调用的回调。总线负责设置这个字段,

kobject结构

cpp 复制代码
struct kobject {
	const char *name;
	struct list_head entry;
	struct kobject *parent;
	struct kset *kset;
	struct kobj_type *ktype;
	struct sysfs_dirent *sd;
	struct kref kref;
};
  • name:指向这个kobject的名称。使用kobject_set_name(struct kobject * kobj, const char * name)函数可以修改它
  • parent:指向此kobject父项的指针
  • sd:指向struct sysfs_dirent结构
  • kref:提供kobject上的引用计数
  • ktype:描述该对象,kset说明这个对象属于哪组对象
相关推荐
dlz083613 小时前
POE驱动开发流程
驱动开发
嵌入式-老费15 小时前
Linux camera驱动开发(DVP接口的camera sensor)
驱动开发
VernonJsn1 天前
visual studio 2022的windows驱动开发
ide·驱动开发·visual studio
嵌入式郑工2 天前
RK3566 LubanCat 开发板 USB Gadget 配置完整复盘
linux·驱动开发·ubuntu
雾削木3 天前
树莓派 ESPHome 固件编译与烧录全攻略(解决超时与串口识别问题)
驱动开发
春日见4 天前
win11 分屏设置
java·开发语言·驱动开发·docker·单例模式·计算机外设
DarkAthena4 天前
【GaussDB】手动编译不同python版本的psycopg2驱动以适配airflow
驱动开发·python·gaussdb
松涛和鸣4 天前
DAY66 SPI Driver for ADXL345 Accelerometer
linux·网络·arm开发·数据库·驱动开发
嵌入式郑工5 天前
# RK3576 平台 RTC 时钟调试全过程
linux·驱动开发·ubuntu
GS8FG5 天前
针对Linux,RK3568平台下,I2C驱动的一点小小的领悟
linux·驱动开发