Linux系统驱动之I2C系统驱动程序模型

发布时间 - 2025-06-26 00:00:00    点击率:

资料下载

无法通过浏览器直接访问coding,需要使用git工具进行下载:

代码语言:javascript 代码运行次数:0

运行 复制 ```javascript git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git ```

视频观看百问网驱动大全

I2C系统驱动程序模型参考资料:

Linux内核文档: Documentation\i2c\instantiating-devices.rst, Documentation\i2c\writing-clients.rst Linux内核驱动程序示例: drivers/eeprom/at24.c

  1. I2C驱动程序的层次

I2C Core即I2C核心层,其作用包括:

提供统一的访问函数,如i2c_transfer、i2c_smbus_xfer等 实现I2C总线-设备-驱动模型,管理:I2C设备(i2c_client)、I2C设备驱动(i2c_driver)、I2C控制器(i2c_adapter)

  1. I2C总线-设备-驱动模型

2.1 i2c_driver

i2c_driver表示支持哪些设备:

通过of_match_table判断设备树中某个I2C控制器节点下的I2C设备节点。如果I2C设备节点的compatible属性与of_match_table中的某项兼容,则匹配成功。 如果i2c_client.name与某个of_match_table[i].compatible值相同,则匹配成功。 通过id_table判断,如果i2c_client.name与某个id_table[i].name值相同,则匹配成功。 i2c_driver与i2c_client匹配成功后,调用i2c_driver.probe函数。

2.2 i2c_client

i2c_client表示一个I2C设备,创建i2c_client的方法有四种:

代码语言:javascript 代码运行次数:0

运行 复制 ```javascript // 创建一个i2c_client, .name = "eeprom", .addr=0x50, .adapter是i2c-3 # echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-3/new_device // 删除一个i2c_client # echo 0x50 > /sys/bus/i2c/devices/i2c-3/delete_device ```


# linux  # git  # 浏览器  # 工具  # JavaScript  # echo  # https  # 四种  # 参考资料  # 资料下载  # 创建一个  # 进行下载  # 某项  # 文档  # evenodd  # clip  # rule 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  EditPlus中的正则表达式实战(6)  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  JS去除重复并统计数量的实现方法  如何快速生成高效建站系统源代码?  Laravel如何处理异常和错误?(Handler示例)  如何获取PHP WAP自助建站系统源码?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  如何在IIS中配置站点IP、端口及主机头?  制作电商网页,电商供应链怎么做?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  Laravel如何使用Eloquent进行子查询  如何在阿里云高效完成企业建站全流程?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在IIS7上新建站点并设置安全权限?  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  JavaScript数据类型有哪些_如何准确判断一个变量的类型  Laravel怎么在Controller之外的地方验证数据  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何快速生成专业多端适配建站电话?  如何解决hover在ie6中的兼容性问题  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  无锡营销型网站制作公司,无锡网选车牌流程?  智能起名网站制作软件有哪些,制作logo的软件?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  如何快速搭建安全的FTP站点?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  如何在腾讯云服务器上快速搭建个人网站?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  做企业网站制作流程,企业网站制作基本流程有哪些?  如何在景安服务器上快速搭建个人网站?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何在宝塔面板创建新站点?  如何快速重置建站主机并恢复默认配置?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  如何在香港服务器上快速搭建免备案网站?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  EditPlus中的正则表达式实战(5)