打印

linux系统IIC驱动程序的编写?

[复制链接]
3445|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
五谷道场|  楼主 | 2011-12-1 11:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
五谷道场|  楼主 | 2011-12-1 12:06 | 只看该作者
我想首先得得熟悉下I2C协议,IIC怎么个读写流程。

使用特权

评论回复
板凳
2点零2| | 2011-12-1 12:33 | 只看该作者
linux本身有它自己的I2C驱动程序编写的框架,套着那个框架然后在根据自己设备的一些特性,就可以编写了。。
以前我做过一个PCI的驱动,就是按照我上面说的方式写的。。。

使用特权

评论回复
地板
五谷道场|  楼主 | 2011-12-1 13:46 | 只看该作者
那就比如说,有个ARM芯片,接了一个专用的DSP设备,两者之间通过GPIO口模拟IIC进行通信,这个驱动程序的编写吧。

使用特权

评论回复
5
五谷道场|  楼主 | 2011-12-1 13:56 | 只看该作者
3楼的看来是专门搞这方面的人才啊,能否介绍一下具体的设计流程呢?

使用特权

评论回复
6
五谷道场|  楼主 | 2011-12-2 16:10 | 只看该作者
在i2c驱动中,在i2c_add_driver()后,执行.probe或者.attach_adapter。
二者有什么不同呢?

使用特权

评论回复
7
五谷道场|  楼主 | 2011-12-2 16:30 | 只看该作者
我找了找资料说是:
这里也有两种形式的区分,对于第一种,只需要将内嵌的driver注册就可以了,对于legacy的情况,对每一个adapter都调用driver->attach_adapter().
现在,我们可以将adapter和i2c driver关联起来考虑一下了:
1:如果是news style形式的,在注册adapter的时候,将它上面的i2c 设备转换成了struct client.struct client->dev->bus又指定了和i2c driver同一个bus.因为,它们可以发生probe.
2:如果是legacy形式,就直接找到对应的对象,调用driver->attach_adapter().

那是不是可以说是:news style执行的是.probe,而legacy形式的执行的是.attach_adapter呢。

使用特权

评论回复
8
pinkboy| | 2011-12-8 11:10 | 只看该作者
那如果我添加一个设备之后,那么的的从设备地址应该放在哪里啊?

使用特权

评论回复
9
五谷道场|  楼主 | 2011-12-8 11:58 | 只看该作者
I2C_BOARD_INFO这个结构里面。

使用特权

评论回复
10
小侠| | 2011-12-9 16:41 | 只看该作者
哎,太高深了。呵呵

使用特权

评论回复
11
五谷道场|  楼主 | 2011-12-11 21:23 | 只看该作者
IIC驱动比起USB驱动来,那不是小巫见大巫吗,呵呵。

使用特权

评论回复
12
五谷道场|  楼主 | 2011-12-16 18:57 | 只看该作者
还过要让驱动程序工作,是需要很长的调试过程的,大家可以分享一下调试经验。

使用特权

评论回复
13
五谷道场|  楼主 | 2011-12-16 19:01 | 只看该作者
我先分享一下我的吧:像我在调试的时候,首先遇到的肯定是I2C设备不能工作,如何调试呢:
1、编写测试程序,不断的给目标设备发送数据。
2、用示波器测总线上是否有数据。
如果没有数据,说明软件上配置没有成功。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7647

主题

9805

帖子

11

粉丝