易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux I2C核心、总线与设备驱动

Linux I2C核心、总线与设备驱动
注:
 在linux2.6.32版本中有这样的代码与注释:
struct i2c_driver {
    unsigned int class;
    /* Notifies the driver that a new bus has appeared or is about to be
     * removed. You should avoid using this if you can, it will probably
     * be removed in a near future.
     */
 
   int (*attach_adapter)(struct i2c_adapter *);
    int (*detach_adapter)(struct i2c_adapter *);
    /* Standard driver model interfaces */
    int (*probe)(struct i2c_client *, const struct i2c_device_id *);
    int (*remove)(struct i2c_client *);
...
}
我的理解是.新版本中用probe和remove代替了原来的attach_adapter和detach_adapter.
I2C总线仅仅使用SCL、SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用。因此,I2C总线被非常广泛地应用在EEPROM、实时钟、小型LCD等设备与CPU的接口中。
Linux定义了系统的I2C驱动体系结构,在Linux系统中,I2C驱动由3部分组成,即I2C核心、I2C总线驱动和I2C设备驱动。这3部分相互协作,形成了非常通用、可适应性很强的I2C框架。
本章第1节将对Linux I2C体系结构进行分析,讲明3个组成部分各自的功能及相互联系。
第2节将对Linux I2C核心进行分析,解释i2c-core.c文件的功能和主要函数的实现。
第3、4节将分别详细介绍I2C总线驱动和I2C设备驱动的编写方法,给出可供参考的设计模板。
第5、6节将以第3、4节给出的设计模板为基础,讲解S3C2410 ARM处理器I2C总线驱动及挂接在上的SAA7113H视频模拟/数字转换芯片设备驱动的编写方法。
15.1 Linux I2C体系结构
Linux的I2C体系结构分为3个组成部分:
1  I2C核心
I2C
核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(即“algorithm”,笔者认为直译为“运算方法”并不合适,为免引起误解,
下文将直接使用“algorithm”)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。
2   I2C总线驱动
I2C总线驱动是对I2C硬件体系结构中适配器端的实现,适配器可由CPU控制,甚至直接集成在


相关文档:

Objective —C 的单例模式 Singleton实现


static
 DataManager 
*
sharedDataManager 
=
 nil;
+
 (DataManager 
*
) sharedManager
{
    @synchronized(self)
 {
        
if
 (sharedDataManager 
==
 nil)
 &nb ......

C unsigned int and int

首先进行一个实验,分别定义一个signed int型数据和unsigned int型数据,然后进行大小比较:
unsigned int a=20;
signed int b=-130;
a>b?还是b>a?实验证明b>a,也就是说-130>20,为什么会出现这样的结果呢?
这是因为在C语言操作中,如果遇到无符号数与有符号数之间的操作,编译器会自动转化为无符号 ......

好玩的C代码网址集

◆经典C源程序100例:http://post.baidu.com/f?kz=8618367
◆时钟的驻留程序:http://post.baidu.com/f?kz=10822377
◆数据结构暨若干经典问题和算法:http://post.baidu.com/f?kz=10922856
◆LIUXUY 磁盘系统源程序:http://post.baidu.com/f?kz=12973347
◆RLE压缩:http://post.baidu.com/f?kz=12592570
◆快速排序 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号