Linux系统驱动之通用驱动i2c-dev分析

风涛大大_7407

风涛大大_7407

2025-06-27

910人浏览

原创

资料下载

coding无法使用浏览器打开,必须用git工具下载:

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

git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看

百问网驱动大全

通用驱动i2c-dev分析

参考资料:

Linux驱动程序: drivers/i2c/i2c-dev.cI2C-Tools-4.2: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/AT24cxx.pdf1. 回顾字符设备驱动程序

Linux系统驱动之通用驱动i2c-dev分析

怎么编写字符设备驱动程序?

openclaw-github-config-impact
openclaw-github-config-impact

OpenClaw 技能 — 给定一个 GitHub 仓库 URL,自动解析出 owner/repo 名称,发现其中的 YAML/properties 配置文件及其配对的中文字段说明;在 `workspace/{repo}/` 目录下按同步日期(格式为 `YYYY-MM-DD`)创建时间戳子目录;写入 `.openclaw-config-state.json` 状态文件。每次用户提问前,先比对远程仓库当前 ref(如 `main` 或 `master`)的最新提交 SHA 与本地状态文件中记录的 SHA:

下载

确定主设备号创建file_operations结构体 在里面填充drv_open/drv_read/drv_ioctl等函数注册file_operations结构体 register_chrdev(major, &fops, name)谁调用register_chrdev?在入口函数调用有入口自然就有出口 在出口函数unregister_chrdev辅助函数(帮助系统自动创建设备节点) class_createdevice_create2. i2c-dev.c注册过程分析2.1 register_chrdev的内部实现

Linux系统驱动之通用驱动i2c-dev分析
2.2 i2c-dev驱动的注册过程
Linux系统驱动之通用驱动i2c-dev分析
3. file_operations函数分析

i2c-dev.c的核心:

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

static const struct file_operations i2cdev_fops = {.owner= THIS_MODULE,.llseek= no_llseek,.read= i2cdev_read,.write= i2cdev_write,.unlocked_ioctl= i2cdev_ioctl,.compat_ioctl= compat_i2cdev_ioctl,.open= i2cdev_open,.release= i2cdev_release,};

主要的系统调用:open, ioctl:

Linux系统驱动之通用驱动i2c-dev分析

要理解这些接口,记住一句话:APP通过I2C Controller与I2C Device传输数据。

3.1 i2cdev_open

Linux系统驱动之通用驱动i2c-dev分析
3.2 i2cdev_ioctl: I2C_SLAVE/I2C_SLAVE_FORCE
Linux系统驱动之通用驱动i2c-dev分析
3.3 i2cdev_ioctl: I2C_RDWR
Linux系统驱动之通用驱动i2c-dev分析
3.4 i2cdev_ioctl: I2C_SMBUS
Linux系统驱动之通用驱动i2c-dev分析
3.5 总结
Linux系统驱动之通用驱动i2c-dev分析

相关文章

驱动精灵
驱动精灵

驱动精灵基于驱动之家十余年的专业数据积累,驱动支持度高,已经为数亿用户解决了各种电脑驱动问题、系统故障,是目前有效的驱动软件,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

linux git 浏览器

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
edge是什么浏览器
edge是什么浏览器

Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.21

3062

5

IE浏览器自动跳转EDGE如何恢复
IE浏览器自动跳转EDGE如何恢复

ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.03.05

2874

4

如何解决Edge打开但没有标题的问题
如何解决Edge打开但没有标题的问题

若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

2025.04.24

3232

6

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

2025.06.09

5074

18

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

2025.07.04

5231

25

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3208

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

5189

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3849

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

486

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习