platform驱动框架

  目的: 进行驱动和设备分离,避免驱动的重复编写,使设备和驱动能够自由组合。

 platform文件分析:

 

结构体介绍:

     bus_type 定义的 platfor_bus_type总线:其中  platform_match 是匹配函数(四种匹配方式,匹配设备和驱动)

  plat_form_driver 描述驱动::其中的const struct of_device_id *of_match_table; 中描述匹配信息:如compatible进行匹配设备树 /

  platform_device 描述设备:其中 platform_device_id 描述设备信息(如:name)用于匹配驱动 /device/下有 name 文件生成

 

plat_form_driver : 用于连接设备树,识别硬件资源。

 

函数接口

int platform_driver_register (struct platform_driver *driver)
void platform_driver_unregister(struct platform_driver *drv)
//需要自定义实现的接口
static int xxx_probe(struct platform_device *dev)  //platform驱动开始后,第一个调用这个接口,因此字符驱动初始化在这里实现
static int xxx_remove(struct platform_device *dev) //驱动资源释放在这里实现

 

流程:

1. 设置 of_device_id 中的compatible变量

2. 设置 platform_driver 中的 .driver、 probe、remove接口

3. 实现 probe、remove 接口

4. 注册 platform_driver:platform_driver_register

2. 卸载 platfrom_driver: platform_driver_unregister

posted @ 2024-07-25 15:22  爬上那个坡  阅读(4)  评论(0编辑  收藏  举报