linux驱动开发——设备树节点转化为platform_device节点并与驱动匹配

一、设备树节点转化为platform_device的过程
1、dts文件转化过程

dts文件编译成为dtb文件之后供给内核解析,设备树中的每个节点都会转化为device_node节点,其中满足某些条件的节点将会被转化为platform_device节点
在这里插入图片描述

2、dts中的节点转化为platform_device节点的条件

只需包含下面的任意一个条件就能转化为platform_device节点
(1)根节点下的含有compatible属性的子节点,compatible属性是用于匹配驱动
如:节点key1和节点led将会被转回为platform_device节点
在这里插入图片描述
(2)如果节点中的compatible属性包含了"simple-bus"或者"simple-mdf"或者"isa"或者"arm,amba-bus",并且该节点的子节点包含compatible属性,那么该子节点就能转化为platform_device节点(IIC、SPI节点下的子节点即使满足条件也不应被转化为platform_device节点,应该交由对应的总线驱动程序去处理,而不是platform总线)
在这里插入图片描述

二、设备树节点转化为platform_device后匹配驱动的过程
1、转化之后节点信息的保存

设备树节点在转化为platform_device 节点之后
信息保存在 patform_device -> dev -> of_note节点中
在这里插入图片描述
of_node是一个device_node结构体,里面存放着节点的name、type和properties(属性链表)
在这里插入图片描述

2、匹配驱动

在platform_driver->driver中,有一个of_match_table成员,是一个of_device_id的结构体数组,每一个数组元素都存放着name、type和compatible用于匹配设备树节点生成的platform_device
在这里插入图片描述
匹配时:
(1)匹配patform_device -> dev -> of_note->properties(属性)->compatible属性的值 与platform_driver->driver->of_match_table中每一个节点->compatible成员的值 ,成功则关联
(2)匹配patform_device -> dev -> of_note->type 与platform_driver->driver->of_match_table中每一个节点->type成员的值 ,成功则关联
(3)匹配patform_device -> dev -> of_note->name 与 platform_driver->driver->of_match_table中每一个节点->name成员的值 ,成功则关联

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值