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

[复制链接]
4518|12
 楼主| 五谷道场 发表于 2011-12-1 11:53 | 显示全部楼层 |阅读模式
大家讨论下,有个IIC总线的设备,需要编写linux驱动程序进行连接、发送读写命令,该如何编写呢?
 楼主| 五谷道场 发表于 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进行通信,这个驱动程序的编写吧。
 楼主| 五谷道场 发表于 2011-12-1 13:56 | 显示全部楼层
3楼的看来是专门搞这方面的人才啊,能否介绍一下具体的设计流程呢?
 楼主| 五谷道场 发表于 2011-12-2 16:10 | 显示全部楼层
在i2c驱动中,在i2c_add_driver()后,执行.probe或者.attach_adapter。
二者有什么不同呢?
 楼主| 五谷道场 发表于 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呢。
pinkboy 发表于 2011-12-8 11:10 | 显示全部楼层
那如果我添加一个设备之后,那么的的从设备地址应该放在哪里啊?
 楼主| 五谷道场 发表于 2011-12-8 11:58 | 显示全部楼层
I2C_BOARD_INFO这个结构里面。
小侠 发表于 2011-12-9 16:41 | 显示全部楼层
哎,太高深了。呵呵
 楼主| 五谷道场 发表于 2011-12-11 21:23 | 显示全部楼层
IIC驱动比起USB驱动来,那不是小巫见大巫吗,呵呵。
 楼主| 五谷道场 发表于 2011-12-16 18:57 | 显示全部楼层
还过要让驱动程序工作,是需要很长的调试过程的,大家可以分享一下调试经验。
 楼主| 五谷道场 发表于 2011-12-16 19:01 | 显示全部楼层
我先分享一下我的吧:像我在调试的时候,首先遇到的肯定是I2C设备不能工作,如何调试呢:
1、编写测试程序,不断的给目标设备发送数据。
2、用示波器测总线上是否有数据。
如果没有数据,说明软件上配置没有成功。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7647

主题

9805

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部