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