【问题标题】:Implementing i2c from Linux Userspace从 Linux 用户空间实现 i2c
【发布时间】:2012-05-02 15:24:45
【问题描述】:

抱歉我的问题描述太长了 :-)

我接到了一项任务,即在我们基于 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 有什么用处吗?

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

【问题讨论】:

    标签: linux i2c


    【解决方案1】:

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

    【讨论】:

    • 这在 i2c 是关键部分的系统上很典型。如果系统不需要启动它,它可能是一个模块,但该模块可能仍需要特定于板的配置信息。
    • Ummm...@jeff 什么是板支持文件?我没有编译内核(我希望)所以我只是编辑它吗?我应该升级我的内核吗? apt-get 告诉我 3.0.0.19 可用于我的安装。我想我可以去 Ubuntu 11.11 或更新的版本,但我讨厌 gnome 3。
    • @Wes - 板卡支持文件在内核中。一定是有人建造的,也许是你的电路板供应商?构建一个设置可能有点痛苦,但我认为这是获得所需用户空间支持的唯一方法。否则,您可以编写一个直接访问 CPU 寄存器的应用程序,但这与弄清楚如何构建内核一样多。
    • @Jeff 谢谢。我真是太幸运了。我的主板开箱即用 Linux - 确切地说是 Ubuntu 10.03。除了我的“嵌入式”功能外,该板还必须是通用 Linux PC。重重的叹息。上次我构建一个有任何理解的内核是在 2001 年。
    • @Wes - 加入吧! :) 给你开发板的人可能会给你资源和工具链来构建内核。一旦您通过了第一个构建,就很容易了。
    猜你喜欢
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多