免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3920 | 回复: 11
打印 上一主题 下一主题

求教I2c问题,急!谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-11 11:31 |只看该作者 |倒序浏览
我最近在做2.6.20内核下的IIC的EEPROM,遇到了很多不解。

问题如下:
   
    通过在网上查找相关资料,了解到了在内核./driver/i2c/中有一个i2c-dev.c文件,它实现实现了I2C适配器设备文件的功能,每一个I2C适配器都被分配一个设备。应用程序通过文件名并使用文件操作接口open()、write()、read()、ioctl()和close()等来访问这个设备。
    但是i2c-dev.c并没有针对特定的设备而设计,只是提供了通用的read()、write()和ioctl()等接口,应用层可以借用这些接口访问挂接在适配器上的I2C设备的存储空间或寄存器并控制I2C设备的工作方式,而对于EEPROM设备却不能直接使用来读写。
    于是我找了./driver/i2c/chip/下的eeprom.c文件,想直接通过这个驱动文件操作eeprom设备,但是我发现这个设备并没有register_chrdev()函数,也没有open(),release()等接口,请问如果我在应用层直接用这个驱动该怎么访问设备。也就是说eeprom.c和i2c-dev.c的关系是怎么样的?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2008-11-11 12:07 |只看该作者
原帖由 aq_mail 于 2008-11-11 11:31 发表
我最近在做2.6.20内核下的IIC的EEPROM,遇到了很多不解。

问题如下:
   
    通过在网上查找相关资料,了解到了在内核./driver/i2c/中有一个i2c-dev.c文件,它实现实现了I2C适配器设备文件的功能,每一个I ...



是这样的,在驱动层,也可以分为多个层次。他的上层是i2c接口,及i2c驱动程序,i2c的下层才是eeprom,所以,你要操作eeprom,必须通过i2c来实现,利用i2c来达到读写的目的。这也是Linux驱动更加灵活的一个表现:i2c不仅可以外接eeprom,当然还可以接其它设备,这样就抽象出一个接口,你要挂什么没关系,但你可以借助i2c接口,实现你自己的那个设备驱动及相关功能就可以了。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
3 [报告]
发表于 2008-11-11 12:07 |只看该作者
Linux下这样的例子很多,比如TTY,USB等等

论坛徽章:
0
4 [报告]
发表于 2008-11-11 12:08 |只看该作者
往i2c上写数据是否有一定的结构要求?

论坛徽章:
0
5 [报告]
发表于 2008-11-11 12:21 |只看该作者
比如I2c的具体设备,入eeprom, lm75等,在应用层可以以 open /dev/i2c方式打开iic设备,通过ioctl传递不同的设备地址去操作eeprom 和lm75,但是我希望将eeprom 和lm75的驱动放在底层去做,在linux的内核里也有相应的eeprom.c 和lm75.c,这些也能编译出.ko文件,但是我不清楚在应用层如何调用这些设备,也不知道linux内核提供这些源文件是做什么用的,是不是需要改动这里的eeprom.c和lm75.c,给他们注册一个字符设备或是misc 设备,再定义fops操作,应用层才可以操作这些设备呢?  不知道我表达清楚没有

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
6 [报告]
发表于 2008-11-11 12:22 |只看该作者
原帖由 eveson 于 2008-11-11 12:08 发表
往i2c上写数据是否有一定的结构要求?


遵循驱动程序的规范,当然还有i2c本身的特性。

论坛徽章:
0
7 [报告]
发表于 2008-11-11 12:32 |只看该作者
斑竹能否说得清晰些,本人已经搞了几天了,看了不少的书,现在是越看越糊涂,其实应该是很简单的,但是就是没搞清楚这个套路,希望指点

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
8 [报告]
发表于 2008-11-11 14:55 |只看该作者

回复 #7 aq_mail 的帖子

大致思想领会了,实现细节就靠你自己去钻研代码了

论坛徽章:
0
9 [报告]
发表于 2008-11-12 21:43 |只看该作者
建议楼主看看essential linux device driver的
Chapter 8. The Inter-Integrated Circuit Protocol

论坛徽章:
0
10 [报告]
发表于 2008-11-13 14:22 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP