niepangu 2023-02-17 21:26 采纳率: 50%
浏览 10

Linux 驱动24C02 EEPROM的问题,

今天在IMX6ULL上通过杜邦线接了一个AT24C02的EEPROM
测试发现设备树中加入如下部分:

        eeprom_dev:eeprom@50 {
            compatible = "24c02";
            reg = <0x50>;
           pagesize = <8>;
        };

测试正常后,发现网上有人给的例子的设备节点如下:

        eeprom_dev:eeprom@50 {
            compatible = "atmel,24c02";
            reg = <0x50>;
           pagesize = <8>;
        };

竟然也正常工作,

我一直以为驱动和设备树里的compatible 必须完全相同才行,但这个EEPROM为什么上边两个compatible 都行呢?
更吃惊的是我在代码里没找到compatible = "24c02";或者 compatible = "atmel,24c02";的驱动文件

那针对设备树的这两种写法具体匹配的是哪个驱动文件? 是怎么匹配的?

  • 写回答

1条回答 默认 最新

  • Ai GPT 2023-02-18 10:30
    关注

    在 Linux 中,驱动程序通常使用设备树(device tree)来描述系统硬件信息,驱动程序将通过设备树信息来匹配具体的设备。在设备树中,一个设备节点(device node)通常包括一些属性(properties)来描述设备的属性和特征,其中包括 compatible 属性,用于指定设备与哪个驱动程序兼容。

    对于 EEPROM 设备,不同厂商和型号的 EEPROM 设备可能会有一些共同的属性和特征,因此它们的 compatible 属性可能会有一些相似之处,比如 compatible = "24c02" 和 compatible = "atmel,24c02" 就是两个不同的 compatible 属性值,分别表示不同的 EEPROM 设备。

    当系统启动时,驱动程序会扫描设备树,并寻找 compatible 属性与自己驱动程序所支持的值相匹配的设备节点,如果找到了匹配的节点,驱动程序会与该节点的设备进行匹配,并在需要时进行控制。如果存在多个匹配的节点,则驱动程序通常会选择其中一个进行匹配。

    因此,在你的设备树中,compatible 属性值为 "24c02" 或 "atmel,24c02" 的 EEPROM 设备节点都可以匹配到同一个驱动程序,即该驱动程序支持这两种 EEPROM 设备。至于具体的驱动文件是哪个,可以查看匹配到该设备的驱动程序的代码或相关文档,或者在系统启动时查看日志,可以看到驱动程序与设备的匹配信息

    评论

报告相同问题?

问题事件

  • 创建了问题 2月17日

悬赏问题

  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目