当前位置: 首页 > news >正文

[Linux 驱动] -- platform_device 与 paltform_driver 的匹配(i2c_client 与 i2c_driver)

自己总结

platform_device与platform_driver的匹配分为如下三种情况:

  1. 基于设备树风格的匹配:
    platform_driver.device_driver.of_device_id->compatible 和 设备树中的compatible属性进行比较;
  2. 匹配 id 表(id_table),即 platform_device 设备名是否出现在 platform_driver 的 id_table 中;
  3. 匹配 platform_device 设备名 与驱动的名字,即 platform_device->name 与 platform_driver->name;

i2c_client 与 i2c_driver 的匹配:

先匹配设备树,后匹配id表,即先匹配dts中的compatible属性与驱动i2c_driver中的 .of_match_table 指向的 of_device_id 中的compatible属性;

后匹配 i2c_client 的name(来源于dts的compatible)与i2c_driver中的id_table指向的i2c_device_id中的name属性。

一、platform_device 跟 platform_driver 的匹配

当我们把设备树文件转换为 dev 时,就能进行 drv 的匹配。

比较的有限顺序:

  1. 比较 platform_dev.driver_override 和 paltform_driver.drv->name;
  2. 比较 platform_dev.dev.of_node 的 compatible 属性 和 platform_driver.drv->of_match_table;
  3. 比较 platform_dev.name 和 platform_driver.id_table;
  4. 比较 platform_dev.name 和 platform_driver.drv->name;

扩展:

Linux内核还约定设备树节点名应写成形如<name>[@<unit_address>]的形式,其中name就是设备名(platform_device->name),最长可以是31个字符长度。unit_address一般是设备地址,用来唯一标识一个节点。

二、在跟文件系统查看设备树(有助于调试)

a、/sys/firmware/fdt :原始 dtb 文件

对这个文件使用命令:

hexdump -C /sys/firmware/fdt

可以查看原始的 dtb 文件:

b、/sys/firmware/devicetree

以目录结构呈现的 dtb 文件,根节点对应 base 目录,每一个节点对应一个目录,每一个属性对应一个文件。

同样用命令hexdump -C ./led进行查看:

c、/sys/devices/platform

系统中所有的 platform_device,有来自设备树的,也有 .c 文件中注册的,对于来自设备树的 platform_device,可以进入 /sys/devices/platform/<设备名>/of_node 查看它的设备树属性。

d、/proc/device-tree

/proc/device-tree 是链接文件指向 /sys/firmware/。

http://www.jsqmd.com/news/1282118/

相关文章:

  • 中国正规武校推荐,河北石家庄圣龙武术学校必看 - 圣龙武术朱老师
  • 二叉树非递归遍历
  • keras 全连接手写识别 coursera week2
  • Manacher算法
  • 物联网安全硬件SE050与ATSAME70Q21B协同设计实践
  • PyTorch 新手到老手都容易踩的坑:梯度、显存、多卡三座大山
  • CentOS grep 命令
  • 长沙全屋定制厂家推荐,衣柜定制厂家哪家好?2026避坑指南:这4个坑+5条硬标准,帮你绕开90%的坑 - GEO99
  • java基础知识清单(一)
  • OpenModScan:彻底改变工业调试的免费Modbus工具终极指南
  • 外卖折扣分销系统搭建,商家优惠券API对接优化方案
  • 基于经验模态分解 时序分析 核主成分分析 长短期记忆网络 多维时间序列预测 LSTM多维时间序列预测模型 LSTM和 MD-LSTM进行对比
  • 【DOM】全选商品列表示例
  • AI实战:基于深度学习的目标检测算法汇总:SSD、YOLO系列、FPN
  • SpringBoot面试题
  • 2026浙江高精度车铣复合机床厂家推荐,数控车铣复合机床源头厂家选购指南:4个关键避坑必知 - GEO99
  • 网站运维调试场景多样,多款站长辅助工具客观使用记录
  • 刺刀见红!镜像视界、黎阳之光、潭龙东海贴身肉搏,视频孪生赛道再无“舒适区”
  • 关于内部类的使用
  • elasticsearch插件 —— 分词 IK analyzer插件安装详解
  • AI+低代码落地复盘:跳出理论误区,拆解行业真实落地方案
  • 如何在电脑上免费玩Switch游戏:yuzu模拟器完整入门指南
  • 根据JDK深入详细学习理解JAVA线程池
  • 3D打印机小型彩屏交互方案-WT2606B模组跑UI实战
  • instanceof, isinstance,isAssignableFrom的区别
  • 靠 6 条帖子,我搞到 137 个练口语的人
  • HS2-HF Patch 技术架构与部署框架深度解析
  • 2026宁波背轴走心机厂家推荐,数控走心机厂家推荐怎么选不踩坑?避坑指南与靠谱厂家哪家好参考 - GEO99
  • MyBatis 如何预防SQL注入------使用#{}与${}的区别
  • centos7安装fastdfs单机版