0

很抱歉对我的问题进行了冗长的描述:-)

我接到了一项任务,在我们新的基于 PC 的电路板设计上对 I2C 设备执行简单的读写操作。该板将使用 Portwell 的 Qseven 迷你 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 总线上的第二个主控器(在初始化完成之前保持静默)。ATOM 不会与 AIC3254 进行额外的直接交互。

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

似乎合乎逻辑的方法是使用用户空间程序与 AIC3254 对话,而不是尝试创建设备驱动程序。但是,在我modprobe i2c-dev 之后;depmod -a no I2C bus 出现在 /dev 和i2c_tools中的 i2cdetect 找不到总线(设备?)。

我需要的是对 Linux I2C 访问编码有所了解。在这里完成菜鸟。

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

我是否需要在/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有用吗?

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

4

1 回答 1

1

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

于 2012-05-02T16:15:11.150 回答