platform框架(一)基于platform编写驱动

platform框架

下图是platform框架,其中左边是设备链表,右边是driver链表。至于该框架之上的kset,kobject等在后续章节进行描述。
在这里插入图片描述
Platform主要工作包含三部分,设备链表维护,driver链表维护,设备和driver的match操作。
其中设备链表维护即像链表中增加和删除元素,platform_device_register,platform_device_unregister函数即可完成设备链表中元素的增加和删除。
其中设备链表维护即像链表中增加和删除元素,platform_deriver_register,platform_driver_unregister函数即可完成设备链表中元素的增加和删除。
设备和driver的match操作是通过比较dev.name和driver.driver.name进行匹配的,相同则匹配成功,否则匹配失败。
上图中两个链表是通过kobject进行链接的。

基于platform编写代码

本章节首先先介绍一些基本知识,以便于理解如何代码是如何实现的;在了解基本知识后,从三部分分别进行阐述(上个章节已对三部分分别进行了简单说明),但通过该部分,仅仅是知道如何使用platform,但platform的具体细节在下一个章节进行描述。

主要结构体

主要结构体包含struct platform_driver,struct platform_device,struct resource,各结构体成员的说明见下属结构体成员右侧。
struct platform_driver {
int (*probe)(struct platform_device *); //匹配后内核会调用的函数
int (*remove)(struct platform_device *); //如删除设备后需调用的函数,
//即匹配失效后调用
//该三个与电源管理相关
void (*shutdown)(struct platform_device *);
int (*suspend)(struct platform_device *, pm_message_t state);
int (*resume)(struct platform_device *);

struct device_driver driver;             //所以设备驱动共用的一些属性
const struct platform_device_id *id_table; //设备id,一个驱动可用于多个设备,这个设

//备的集合就是这个id表,只要设备id表和驱动
//的这个id表中的id对应,就可使用这个驱动
//来操作
};

struct platform_device {
const

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值