从Linux用户空间实现i2c

从Linux用户空间实现i2c,linux,i2c,Linux,I2c,很抱歉对我的问题进行了冗长的描述:-) 我被交给一项任务,在我们新的基于PC的电路板设计上,对I2C设备执行简单的读写操作。该板将使用Portwell的QSEEN迷你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 S

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

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

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

似乎合乎逻辑的方法是使用用户空间程序与AIC3254对话,而不是尝试创建设备驱动程序。然而,在Imodprobe i2c-dev之后;depmod-a没有I2C总线出现在/dev中,I2C检测工具没有发现总线(设备?)

我需要的是对Linux I2C访问编码的一些理解。这里完全没有问题

我到底需要一个设备驱动程序吗?我不需要任何普通程序的界面,只要一个简单的读/写总线/页面/寄存器。也许是一个简单的字符模式驱动程序?我读过一些东西,表明存在这样的事情

我是否需要在/sys/bus/i2c/devices/i2c-0/中放入*新设备*和*删除设备*文件

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

我可以假设或者找出这个内核是否知道EG20T IOH芯片吗?或者这些芯片是否足够通用,以至于i2c开发者能够处理它们

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

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


对不起,我是这样一个笨蛋。感谢您的帮助。

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

这在i2c是关键部件的系统上是典型的。如果系统不需要启动,它可能是一个模块,但该模块可能仍然需要特定于板的配置信息@jeff董事会支持文件是什么?我不是在编译内核(我希望如此),所以我只是在编辑它吗?我应该升级我的内核吗?apt get告诉我3.0.0.19可用于我的安装。我想我可以去Ubuntu11.11或任何更新的版本,但我讨厌GNOME3。@Wes-板支持文件在内核中。一定是有人造的,也许是你的板子供应商?构建一个设置可能有点痛苦,但我认为这是获得所需用户空间支持的唯一方法。否则,您可以编写一个直接访问CPU寄存器的应用程序,但这和弄清楚如何构建内核一样多。@Jeff谢谢。我很幸运。确切地说,我的主板是现成的Linux-Ubuntu10.03。除了我的“嵌入式”功能外,该板还必须是通用Linux PC。沉重的叹息。t我上一次用任何理解力构建内核是在2001年。@Wes-Jump in!:)无论是谁给了你这块板,都可能会给你构建内核的源代码和工具链。一旦您通过了第一个构建,就很容易了。