Linux设备驱动之I2C架构分析
一:前言
I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员
的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而
I2C 是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述.可自行下载spec阅读即可.
二:I2C架构概述
在linux中,I2C驱动架构如下所示:
如
上图所示,每一条I2C对应一个adapter.在kernel中,每一个adapter提供了一个描述的结构(struct
i2c_adapter),也定义了adapter支持的操作(struct i2c_adapter).再通过i2c
core层将i2c设备与i2c adapter关联起来.
这个图只是提供了一个大概的框架.在下面的代码分析中,从下至上的来分析这个框架图.以下的代码分析是基于linux 2.6.26.分析的代码基本位于: linux-2.6.26.3/drivers/i2c/位置.
三:adapter注册
在
kernel中提供了两个adapter注册接口,分别为i2c_add_adapter()和
i2c_add_numbered_adapter().由于在系统中可能存在多个adapter,因为将每一条I2C总线对应一个编号,下文中称为
I2C总线号.这个总线号的PCI中的总线号不同.它和硬件无关,只是软件上便于区分而已.
对于i2c_add_adapter()而言,它使用的是动态总线号,即由系统给其分析一个总线号,而i2c_add_numbered_adapter()则是自己指定总线号,如果这个总线号非法或者是被占用,就会注册失败.
分别来看一下这两个函数的代码:
int i2c_add_adapter(struct i2c_adapter *adapter)
{
int id, res = 0;
retry:
if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
return -ENOMEM;
mutex_lock(&core_lock);
/* "above" here means "above or equal to", sigh */
res = idr_get_new_above(&i2c_adapter_idr, adapter,
__i2c_first_dynamic_bus_num, &id);
mutex_unlock(&core_lock);
if (res < 0) {
if (res == -EAGAIN)
goto retry;
return res;
}
adapter->nr = id;
相关文档:
·find path -option [ -print ] [ -exec -ok command ] {} \;
#-print 将查找到的文件输出到标准输出
#-exec command {} \; -----将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询 ......
aishen944-163.com
转贴请注明出处,谢谢!!
其实透明贴图的原理就是进行xor运算,
基本公式:A xor A = 0 A xor 0 = A A xor A xor B = B
假如现在有两张图片,一张是我们要对其进行贴图的图片A, 另外一张是要被贴图的图片B
1, 复制图片B的一份拷贝为C
2, 将C中指定 ......
linux中关于链接类型分为硬链接和软链接
硬链接指令 ln 文件 链接名称
软链接指令 ln -s 文件 链接名称
共同点:
都可以通过链接名称去访问被链接的文件
不同点:
硬链接会产生一个和源文件相同的文件 不论大小和属性
删除源文件不会对链接文件产生影响
&nbs ......
----------------------------------------------------------------------------------------------------------------------------------------
/**/
/*
********************************************************************************************************
* @Description:s3c2410的rtc驱动的实 ......
今天终于把OmapL137的板子跑起了Linux和其带的demo。合众达对这个板子东西做的很少,把omapl137的特点都没有展示出来。可就苦了我们这些想要用这个片子的人了。国内玩这个的人还不多,所有资料就硬着头皮慢慢磨吧。
前段时间uboot是由dsp那边用nandwrite工程写进来的,其校验方式和uboot的ecc校验似乎有冲突, ......