博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 驱动i2c -- Gsenser(三)
阅读量:4102 次
发布时间:2019-05-25

本文共 1343 字,大约阅读时间需要 4 分钟。

client这个变量之前在i2c-core中看到过很多次了,也不再藏着掖着了,这里就解释一下他的来历。这个来历真是
曲折离奇,记得刚开始找这个client的时候,用source insight3来一层层找func的caller,
因为有的函数有多个caller,不得不多次回溯,终于,在花了将近一天时间,经过无数次的回溯后,
我找到了client的前世今生,理清了他的来龙去脉。
client,顾名思义,意为客户端,是与主控器交互的终端。我们这里的client指的就是由主控器控制的挂上i2c总线的芯片。
那么,从硬件层面上来看,挂上i2c总线就是指i2c slave device的scl和sda,与i2c bus相连,那么软件里面需要做什么呢?
比如,你要遍历bus上的device,总要有地址吧,要有名称吧,还有比如说,这个device有个癖好什么的,这些都需要在软件里面进行添加。
在这里,就那个lis gsensor 芯片而言。他在挂上总线前,必须要显示地在i2c controller上声明这个设备的一些信息并添加到i2c adapter上去。
看到这里可能会有点晕了,一会client 一会controller 一会adapter,名词多了,就容易混乱,
简单介绍一下i2c驱动在linux kernel中的结构:
bus driver and device driver
[]    hardware
()    software
                    [pxa controller] 《--i2c bus--》 [device1] 《--i2c bus--》[device2] 《--i2c bus--》[device3]《--i2c bus--》
                                                 |
                                 (i2c bus driver)                                                    
                                                 |
                                        (i2c core)
            ________________|____________________________
           |                                     |                                                                |
(i2c device driver1)    (i2c device driver1)        (i2c device driver1)       
Note:
1)i2c bus driver is depends on particular platform chip ,eg: s3c2440 ,pxa910.
2)i2c device driver is independent to particular platforms.
i2c驱动是linux driver 中典型了三层设计,
上层i2c-bus,实现不同处理器的i2c controller,将其抽象成i2c adapter。
下层i2c-chip,实现了各个i2c 设备的驱动。
中间是i2c-core,实现i2c-bus 与 i2c-chip的交互。
通过了这样分层的设计,controller和device的驱动都可以单独编写,
可移植性就非常好了。不同的设备,挂到相同的controller上,也不需要修改代码就可以使用。
不同的controller也可以使用相同的设备,也不需要修改代码就能正常使用。

中间层负责将两者结合并进行交互,屏蔽了controller和device的硬件特性,使得上下两层的驱动不因硬件的变化而变化。

转载地址:http://azbsi.baihongyu.com/

你可能感兴趣的文章
在JS中 onclick="save();return false;"return false是
查看>>
JSTL 常用标签总结
查看>>
内容里面带标签,在HTML显示问题,JSTL
查看>>
VS编译器运行后闪退,处理方法
查看>>
用div+css做下拉菜单,当鼠标移向2级菜单时,为什么1级菜单的a:hover背景色就不管用了?
查看>>
idea 有时提示找不到类或者符号
查看>>
JS遍历的多种方式
查看>>
ng-class的几种用法
查看>>
node入门demo-Ajax让前端angularjs/jquery与后台node.js交互,技术支持:mysql+html+angularjs/jquery
查看>>
神经网络--单层感知器
查看>>
注册表修改DOS的编码页为utf-8
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
拉格朗日对偶问题详解
查看>>
MFC矩阵运算
查看>>
最小二乘法拟合:原理,python源码,C++源码
查看>>
ubuntu 安装mysql
查看>>
c# 计算器
查看>>
C# 简单的矩阵运算
查看>>
gcc 常用选项详解
查看>>
c++输入文件流ifstream用法详解
查看>>