首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux I2C驱动程序移植问题

Linux I2C驱动程序移植问题
EN

Stack Overflow用户
提问于 2018-12-03 02:56:05
回答 3查看 485关注 0票数 1

我正在将I2C驱动程序移植到Linux-4上。该设备同时为不同功能提供多个I2C地址。

例如:

代码语言:javascript
复制
address 0xAA is for access of SPI flash. 
address 0xA0 is for access of EEPROM.  
address 0x60 is for normal access (control purpose).  

是否可以在单个I2C设备驱动程序中支持对不同I2C地址的访问?

感谢您的帮助,谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-10 01:30:32

感谢Dražen Grašovec和ž的帮助。

我正在将一个I2C设备驱动程序(芯片,客户端)移植到Linux4.9.该芯片接受不同的I2C设备地址,用于不同的用途。我的目标是在Linux设备树文件(.dts)上只创建一个.dts设备。

我通过使用i2c_new_dummy()解决了我的问题。

在驱动程序探测函数中,我创建了两个i2c_new_dummy()来创建两个额外的i2c客户机。

一个(client#1)用于访问I2C地址0xAA,另一个(client#2)用于访问I2C地址0xA0。

因此,我可以使用client#1与其SPI闪存通信,并使用client#2访问它。

票数 0
EN

Stack Overflow用户

发布于 2018-12-03 05:50:27

我认为这是可能的。使用i2c_transfer(),您将在要与之通信的设备的i2c_msg结构中提供特定地址。因此,您的驱动程序将能够与您的i2c设备的所有功能通信。

票数 1
EN

Stack Overflow用户

发布于 2018-12-06 13:14:27

取决于您所说的I2C驱动程序的类型,总线(适配器)还是芯片(客户端)驱动程序?

i2c-dev.c是一种具有字符设备接口的总线驱动程序,它将内核底层的I2C API输出到用户空间。

对于每个注册的I2C适配器,内核将在/dev用户空间接口中添加i2c-N设备节点。

但是不能像简单的字符设备或文件那样读写附加到/dev/i2c-N上的EEPROM芯片。您需要编写一些有关芯片协议的实用程序。

但是在Linux中有一些特殊的EEPROM芯片驱动程序,如eeprom.cat24.c,用于将地址为0X50.0x57的I2C EEPROM设备注册到内核,并在/sys用户空间接口中创建文件。

您可以在:/sys/bus/i2c/devices/0-005x/eeprom中以文件形式访问它们

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53586863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档