linux设备驱动-platform

platform_device

struct platform_device中包含三个重要属性:const char *name、struct device dev、struct resource *resource。device结构体包含bus_type类型结构体,bus_type结构体实现match()函数,用于匹配设备和驱动。resource结构体包含 start、end和flags,start、end表示设备资源起始值和结束值,flags为资源类型,flags为IORESOURCE_MEM时,start、end表示platform_device的起始和结束地址。驱动中使用platform_get_resource()获取设备资源。
platform_device模板

static struct platform_device dm9000_device = {
name = "dm9000",
id = 0,
num_resources = ARRAY_SIZE(dm9000_resource),
resource = dm9000_resource,
dev = {
		platform_data = &dm9000_platdata,
	}
};

platform_driver

platform_driver结构体包含probe、remove函数指针、struct device_driver、platform_device_id *id_table几个重要结构。device_driver结构体中也同样包含bus_type结构体,每当向内核中添加设备和驱动时都会调用bus_type中的match函数,通过四种方式:id_table、acpi、of_device_id、name来匹配设备和驱动,匹配成功后驱动的probe函数执行

总线

总线为bus_type类型结构体,通过bus_register(),bus_unregister()实现总线的注册,并通过实现match函数完成设备和驱动的匹配。BUS_ATTR宏可将自定义文件导出到sys/bus目录下,在cat该文件时,可执行show回调函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值