知识分享:linuxI2C驱动核心梳理

由于平台限制,这里只放文章的名字啦如果需要用到本文的图片,请标记出处谢谢啦~

参考文章 【linux iic子系统】i2c整体框图【精髓部分】(五)_bus_for_each_drv-CSDN博客

  • linux设备驱动程序——i2c总线的添加与实现_如何填充i2c_client-CSDN博客
  • 【linux iic子系统】i2c设备与驱动匹配过程(三)_i2c_add_driver 如何和clent匹配-CSDN博客

驱动和设备树以及各个结构体总的关系图如下所示:

alt

下面根据图具体解释。

重要的几个结构体的关系

比较重要的是 i2c_adapter i2c_client i2c_driver i2c_algorithm

i2c_adapter 对应的一个物理上的适配器,以tegra为例,在设备树中compitable = "nvidia,tegra210-i2c" 来指示适配器该怎么配置。并且在其对应的probe函数中会同时注册 i2c_algorithm 的方法用来控制如何发送i2c数据,以及发送i2c数据的函数

i2c_client 会通过对应设备树中的节点信息填充,然后挂到bus上统一被管理。client其实就是设备树信息。所以一个adapter可能会有多个client(=一个i2c总线上挂载多个设备)

i2c_driver 是用户所写的驱动程序,也会被统一挂载到bus上。由bus统一管理。

i2c bus部分

bus提供了注册和probe方法。并由于很多设备都依赖i2c,所以i2c bus的注册优先级很高

//i2c-core.c
postcore_initcall(i2c_init); // 2

i2c_init 中,会用bus_register注册一个 i2c_bus_type

struct bus_type i2c_bus_type = {
    .name = "i2c",
    .match = i2c_device_match,
    .probe = i2c_device_probe,
    .remove = i2c_device_remove,
    .shutdown = i2c_device_shutdown,
};

在这个总线类型中,会提供match方法和probe方法。match就是用来匹配总线上的设备树信息client,和驱动设备文件driver的。probe用来在driver的probe(就是"xx.ko"驱动文件里的probe!!)执行前做一些初始化,然后再去调用driver提供的probe函数。 alt

adapter部分

adapter是控制实际的物理i2c适配器与外界设备通信的。

物理上的i2c1的设备树描述

i2c@7000c000 {
		compatible = "nvidia,tegra210-i2c", "nvidia,tegra114-i2c";
		reg = <0x0 0x7000c000 0x0 0x100>;
		interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
		#address-cells = <

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

1. 自我介绍:高通、Oppo(sp)、vivo(sp)、小米(ssp)、荣耀(26k*12+80k)、华子(报批中)、美团、韶音、经纬恒润、乐鑫、中兴、TP 2. 内容: 1.嵌入式学习的资料和路径 2.所有面试的题目和解答(持续更新)、对评论的快速解答 3.各种碎碎念 3.整理不易,buy me coffee☕️,为了回馈牛客和各个粉丝,文章都会先试读几天,热度过了再收录~

全部评论
很有用,整理起来费事,谢谢大佬
点赞 回复 分享
发布于 2024-12-26 17:57 浙江
收藏了,谢谢楼主
点赞 回复 分享
发布于 2024-12-26 17:52 重庆
梳理的很详细全面啊
点赞 回复 分享
发布于 2024-12-26 17:47 山东
m,辛苦啦
点赞 回复 分享
发布于 2024-12-26 17:42 上海
大佬真牛,谢谢分享
点赞 回复 分享
发布于 2024-12-26 17:37 江苏

相关推荐

刚刷到字节跳动官方发的消息,确实被这波阵仗吓了一跳。在大家还在纠结今年行情是不是又“寒冬”的时候,字节直接甩出了史上规模最大的转正实习计划——ByteIntern。咱们直接看几个最硬的数,别被花里胡哨的宣传词绕晕了。首先是“量大”。全球招7000多人是什么概念?这几乎是把很多中型互联网公司的总人数都给招进来了。最关键的是,这次的资源分配非常精准:研发岗给了4800多个Offer,占比直接超过六成。说白了,字节今年还是要死磕技术,尤其是产品和AI领域,这对于咱们写代码的同学来说,绝对是今年最厚的一块肥肉。其次是大家最关心的“转正率”。官方直接白纸黑字写了:整体转正率超过50%。这意味着只要你进去了,不划水、正常干,每两个人里就有一个能直接拿校招Offer。对于2027届(2026年9月到2027年8月毕业)的同学来说,这不仅是实习,这简直就是通往大厂的快捷通道。不过,我也得泼盆冷水。坑位多,不代表门槛低。字节的实习面试出了名的爱考算法和工程实操,尤其是今年重点倾斜AI方向,如果你简历里有和AI相关的项目,优势还是有的。而且,转正率50%也意味着剩下那50%的人是陪跑的,进去之后的考核压力肯定不小。一句话总结:&nbsp;27届的兄弟们,别犹豫了。今年字节这是铁了心要抢提前批的人才,现在投递就是占坑。与其等到明年秋招去千军万马挤独木桥,不如现在进去先占个工位,把转正名额攥在手里。
喵_coding:别逗了 50%转正率 仔细想想 就是转正与不转正
字节7000实习来了,你...
点赞 评论 收藏
分享
评论
16
28
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务