从Linux用户空间实现i2c

时间:2012-05-02 15:24:45

标签: linux i2c

很抱歉我的问题有很长的描述: - )

我已经完成了一项任务,在我们基于PC的新电路板设计上对I2C设备执行简单的读写操作。该板将使用Portwell的Qseven mini PC构建,该PC使用Intel Tunnel Creek(ATOM)处理器(基本上是x86处理器)和EG20T IOH芯片。

I2C从设备是TI AIC3254音频编解码器。操作系统是Ubuntu 10.04 LTS 32位。

uname -a
Linux Torchwood 2.6.32-41-generic #88-Ubuntu SMP Thu Mar 29 13:08:43 UTC 2012 i686 GNU/Linux

该设备的PC部分基本上是通用PC。

PC / OS需要在系统初始化时通过I2C加载编解码器(寄存器)。之后,编解码器将由Atmel处理器控制,该处理器将成为I2C总线上的第二个主控制器(在init完成之前保持静音)。 ATOM将不会与AIC3254进行额外的直接交互。

据我所知,我需要做的就是通过I2C总线将编解码器的“程序”复制到它上面然后再读回来(穷人的负载检查)。

似乎逻辑方法是使用用户空间程序与AIC3254通信,而不是尝试创建设备驱动程序。然而,在我 modprobe i2c-dev之后; depmod -a / dev中没有I2C总线,i2c_tools中的 i2cdetect 没有找到总线(设备?)。

我需要了解Linux I2C访问编码。在这里完成noob。

我毕竟需要设备驱动程序吗?对于一般程序来说,我也不需要任何花哨的接口,只需要对总线/页面/寄存器进行一次简单的读/写操作。也许是简单的char模式驱动程序?我读过一些暗示存在这些事情的东西。

我是否需要在 / sys / bus / i2c / devices / i2c-0 / 中放入* new_device *和* delete_device *文件?

即使安装了i2c-dev.ko, / sys / bus / i2c / devices / 中也没有出现i2c-x“文件”我在这里缺少什么?

我能否假设或了解该内核是否了解EG20T IOH芯片?或者这些芯片是否足够通用, i2c-dev 可以处理它们?

我需要i2c-core.ko吗?在Ubuntu映像上找不到它。如果需要,我需要什么才能获得它?

我对 i2c-algo _ ???。ko 有什么用处吗?

很抱歉这样的菜鸟。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我认为在为目标构建内核时,需要在板支持文件中添加i2c支持。我们使用基于Atmel的板来执行i2c,在内核init期间,它调用i2c_register_board_info()来注册i2c设备。然后,您可以使用i2c-tools和userspace应用程序访问它们。注意我们使用的是3.2.6内核,但2.6内核可能需要类似的调用