Linux I2C 核心、总线、与设备驱动
**
Linux I2C architecture
1.I2C仅使用SCL、SDA 两根信号线实现通信
2.I2C驱动由I2C core、I2C bus driver、I2C device driver三部分组成
**
1. I2C core
为I2C bus driver and device driver提供register 、unregister、communication
2. I2C bus driver
对应硬件adapter的实现,adapter可由CPU控制,甚至可以直接集成在CPU内部
包含:struct i2c_adapter(对该adapter的描述)、struct i2c_algorithm(负责通信)、functions(产生通信信号)
通过I2C bus driver,我们可以控制I2C adapter,来达到主或者从的方式读写,产生启止,ACK等
3. I2C device driver
对应硬件设备端的实现,这些设备挂在I2C adapter上,通过I2C适配器与CPU交换数据
包含:struct i2c_driver、struct i2c_client、functions(具体设备具体实现)
可以通过sysfs文件系统中/sys/bus/i2c/* 来查看当前i2c adapter上已挂在的device
4. i2c_driver、i2c_client、i2c_adapter 和 i2c_algorithm 这 4 个数据结构的作用及关系
struct i2c_adapter {
对应物理上的一个adapter,其上可以被多个i2c_client依附(链表连起来)
struct i2c_algorithm {
对应一套通信方法
master_xfer();
}
}
缺少i2c_algorithm的i2c_adapter什么也做不了,因此i2c_adapter中包含其使用的i2c_algorithm的指针
master_xfer()用于产生I2C访问周期需要的信号,以i2c_msg为单位
struct i2c_msg {
__u16 addr;
__u16 flags;
__u16 len;
__u8 *buf;
};
i2c_client 对应一个真实的物理设备,每个I2C设备都需要一个i2c_client来描述,其依附于i2c_adapter
i2c_driver对应一套驱动方法,主要是当探测物理设备的存在与否,然后使设备与adapter关联起来,纯粹用于辅助作用
Linux I2C 核心、总线、与设备驱动相关推荐
- linux i2c核心,总线与设备驱动,Linux2.6.37 I2C驱动框架分析(一)
最近工作中又使用到了I2C,所以借S3C2440开发板GT2440为硬件平台温习一遍I2C驱动体系. linux内核中IIC驱动的体系框架 linux内核中IIC部分驱动代码位于:/drivers/i ...
- Linux I2C核心、总线与设备驱动(二)
从上面的分析可知,虽然I2C硬件体系结构比较简单,但是I2C体系结构在Linux中的实现却相当复杂.当工程师拿到实际的电路板,面对复杂的 Linux I2C子系统,应该如何下手写驱动呢?究竟有哪些是需 ...
- Linux I2C核心、总线与设备驱动(一)
本章导读 I2C总线仅仅使用SCL.SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用.因此,I2C总线被非常广泛地应用在EEPROM.实时钟.小型LCD等设备与 ...
- Linux I2C核心、总线与设备驱动
Linux I2C核心.总线与设备驱动 I2C总线仅仅使用SCL. SDA这两根信号线就实现了设备之间的数据交互,极大地简化了对硬件资源和PCB板布线空间的占用.因此, I2C总线非常广泛地应用在EE ...
- 从需求的角度去理解Linux系列:总线、设备和驱动
<从需求的角度去理解Linux系列:总线.设备和驱动>是一篇有关如何学习嵌入式Linux系统的方法论文章,也是从需求的角度去理解Linux系统软件的开篇.这是作者精心撰写的经验总结,希望嵌 ...
- Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
我们知道,SPI数据传输可以有两种方式:同步方式和异步方式.所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返 ...
- Linux SPI总线和设备驱动架构之三:SPI控制器驱动
通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动.通用接口层和控制器驱动三大部分.其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能: 1 ...
- 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...
- 一起分析Linux系统设计思想——05字符设备驱动框架剖析(四)
在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习.我的使命就是过滤掉大量的垃圾信息,将知识体系化,以短平快的方式直 ...
- Linux内核学习-字符设备驱动学习(二)
在Linux内核学习-字符设备驱动学习(一)中编写字符设备驱动的一种方法,但是需要手动创建设备节点. 有没有能够自动的创建设备节点的呢? 有!使用class_create()和device_creat ...
最新文章
- 大学计算机课程改革项目,大学计算机课程改革.ppt
- 我眼里的Exchange 2010 之:1—DAG
- UA MATH523A 实分析3 积分理论 概念与定理整理
- 高德地图和百度地图接口封装遇到的问题(一):重复添加实时路况图层后无法移除
- java rect 旋转_处理(Java可视化语言):使用rectMode(CENTER)而不是rectMode(CORNER)旋转矩形,留下奇数衰落轨迹效果...
- ubuntu切换中文输入法
- sklearn自学指南(part28)--双向聚类
- Android开发之常用的自定义输入框之EditText
- js sort方法根据数组中对象的某一个属性值进行排序(实用方法)
- BZOJ 1601 [Usaco2008 Oct]灌水 (最小生成树)
- STM32F7xx —— 96位唯一ID
- hdu 6092 Rikka with Subset 01背包 思维
- Ubuntu 安装 VMware 15
- wps里为什么没有华文楷体_是谁动了我的字体?为什么Word或PPT换台电脑打开字体就变了呢?...
- 09、Non-Black-Box ZK(Barak‘s protocol)--Alon Rosen
- Yoga Book YB1-X91F 重装win10系统后键盘没有震动的解决办法
- 阿里云CDN配置步骤
- 【产品】UI设计:哪些字体可以商用
- 小程序发送短信验证码完整工具
- Java面试总结(2021优化版)发布1024程序员节
热门文章
- 赵小楼《天道》《遥远的救世主》深度解析(29)优秀的传统文化和弱势思想观念的转变
- 用60行代码实现一个高性能的圣诞抽抽乐H5小游戏(含源码)
- 论文研读-社交媒体可视化-大规模地理社交媒体数据的可视化抽象与探索
- 今日科技联播:滴滴5000亿上市计划或受影响,高德地图暂时下线顺风车业务
- 彼时彼刻,正如此时此刻——评《让×××飞》
- 【一日一logo_day_36】fai
- OBD系统系族分类规则
- 本人常用软件(工具)
- windows服务器硬盘怎么扩容,亚马逊Amazon EC2 Windows服务器磁盘扩容操作步骤
- 课程实验三-bomb实验