<?xml version="1.0" encoding="gbk"?>
<rss version="2.0">
<channel>
 <title><![CDATA[请教i2c驱动测试]]></title>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015]]></link>
 <description><![CDATA[Latest 20 replies of 请教i2c驱动测试]]></description>
 <copyright><![CDATA[Copyright(C) ]]></copyright>
 <generator><![CDATA[PHPWind Forums by PHPWind Studio]]></generator>
 <lastBuildDate><![CDATA[Sun, 26 Jul 2026 09:07:52 +0000]]></lastBuildDate>
  <image>
 <url><![CDATA[images/rss.gif]]></url>
 <title><![CDATA[PHPWind Board]]></title>
 <link><![CDATA[http://121.40.142.80]]></link>
 <description><![CDATA[]]></description>
  </image>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[我有个疑问，再请教一下版主
在内核./driver/i2c/中有一个i2c-dev.c文件,它实现实现了I2C适配器设备文件的功能，应用程序通过文件名并使用文件操作接口open()、write()、read()、ioctl()和close()等来访问这个设备。在我的应用程序里，是通过调用i2c-dev.c中的ioctl（）来实现操作的。但是i2c-dev.c并没有针对特定的设备而 ..]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10803]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Wed, 07 Oct 2009 00:59:48 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[我也是仿照光盘上带的例子写的。我之前看了好一段时间i2c驱动的内容，对里面相关内容还是一知半解，后来还是在版主的指导下，才知道如何在应用程序上进行测试。等我再认真看一下，将思路理清楚后我再将自己的理解发上来。]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10752]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Mon, 05 Oct 2009 04:35:52 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[呵呵，把你的程序设计原理和大家分享一下吧。]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10750]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Mon, 05 Oct 2009 02:19:18 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[非常感谢版主，程序可以编译并正常运行了！]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10748]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Mon, 05 Oct 2009 01:02:31 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[我试了一下，好像打上下面这个patch之后可以编译了。但我没有运行过，因为我没有i2c设备的硬件。
使用方法：
$cd /usr/local/arm/3.4.1
$bunzip2 -dc /path/to/i2c_fix_compile.patch.bz2 |patch -p1 (以root权限运行)

i2c_fix_compile.patch清单:
[code]
---
 arm-linux/sys-include/linux/i2c-dev.h |&#160;&#160;&#16 ..]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10739]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 04 Oct 2009 11:02:56 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[谢谢版主了。
因为我一开始使用的是qq2440，开发环境用的是red-hat 9，qt4、驱动等都是基于2.6.13内核的，交叉编译器用的是3.4.1。后来买了mini2440，发现2.6.29内核在red-hat 9中编译不通过，ad驱动编译也有问题。因此，为了不作过多的改动，所以就继续使用原来的开发环境了。
如果改用基于2.6.29的EABI内核 + 4.3.2版本 ..]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10737]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 04 Oct 2009 08:35:17 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[很遗憾，3.4.1工具链里的i2c.h和i2c-dev.h的写法是错的，不能用来编译i2c应用程序。目前mini2440已经升级到EABI工具链，如果没有特殊的原因，建议你用基于2.6.29的EABI内核 + 4.3.2版本的工具链]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10729]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 04 Oct 2009 04:16:56 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[源代码如下：
 1 #include &lt;stdio.h&gt;
&nbsp;&nbsp;2 #include &lt;fcntl.h&gt;
&nbsp;&nbsp;3 #include &lt;unistd.h&gt;
&nbsp;&nbsp;4 #include &lt;stdlib.h&gt;
&nbsp;&nbsp;5 #include &lt;linux/fs.h&gt;
&nbsp;&nbsp;6 #include &lt;sys/types.h&gt;
&nbsp;&nbsp;7 #include &lt;sys/ioctl.h&gt;
&nbsp;&nbs ..]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10728]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Sun, 04 Oct 2009 01:38:49 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[看起来是测试程序include了内核源代码才会使用的头文件,比如&lt;linux/i2c.h&gt;.你最好把源代码全部贴出来.
另外,交叉编译器的选择取决于你使用的内核版本.]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10642]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Wed, 30 Sep 2009 07:15:44 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[谢谢版主。在版主的指导下，我现在已经把pcf8574的测试程序调通了，我用的是arm-linux-2.95.3版本的编译器，用3.4.1一直报错。报错信息如9楼所示。
而我的qt界面程序是用的是3.4.1版本的编译器，用2.95.3又编译不通过。
现在我的问题是如果我将pcf8574的代码融入qt程序里面，这样不管用哪个版本的编译器都会有问题了，这问 ..]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10638]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Wed, 30 Sep 2009 04:42:48 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[EINVAL是I2C设备驱动返回的错误，和代码本身逻辑有关，和编译器无关。]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10351]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Thu, 24 Sep 2009 03:56:54 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[之前我用arm-linux-gcc-3.4.1编译出错，arm-linux-2.95.3编译通过，但运行错误，提示EINVAL..我想会不会是交叉编译器有问题呢？
出错信息如下：
In file included from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/sys-include/linux/timex.h:186,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& ..]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10342]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Thu, 24 Sep 2009 01:18:40 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[是的，你可以理解为i2c-dev.c是userspace应用程序通过/dev/i2c*节点操作i2c设备的通用驱动。至于内核里的pcf8574驱动，那不是给应用程序的，而是供内核中的其他驱动通过内核内部的接口操作pcf8574的。]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10011]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Wed, 16 Sep 2009 01:44:56 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[我想请教一下版主，在linux内核中，存在pcf8574芯片的驱动，但在应用程序中，好像一直没有调用这个文件，而是调用i2c-dev.c文件。我想问一下，i2c-dev.c是否是i2c的通用驱动程序？而如果想使用pcf8574驱动文件，应如何调用呢？]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#10009]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Wed, 16 Sep 2009 01:13:51 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[这是IIC驱动中ioctl()的处理函数(源代码在drivers/i2c/i2c-dev.c)
[code]
static long i2cdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
&nbsp;&nbsp;&nbsp;&nbsp;struct i2c_client *client = (struct i2c_client *)file-&gt;private_data;
&nbsp;&nbsp;&nbsp;&nbsp;unsigned long funcs;

&nbs ..]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#9988]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Tue, 15 Sep 2009 08:21:58 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[不好意思，是我太菜了。
我在代码上加入#include &lt;errno.h&gt;
然后打印出来是22，查了一下errno.h的定义，上面说的是EINVAL, 参数不合法]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#9986]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Tue, 15 Sep 2009 08:06:34 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[抱歉，我想我指的是errno的值，你可以用
[code]
&nbsp;&nbsp;if(ioctl(file,I2C_SLAVE,addr) &lt; 0)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Can not set i2c address (%d)\n&quot;, errno);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(1);
&nbsp;&nbsp; ..]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#9955]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Tue, 15 Sep 2009 02:22:57 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[不论是0x20（pcf8574从设备地址），还是0x50（开发板自带的eeprom），返回值都是-1]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#9919]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Mon, 14 Sep 2009 09:13:50 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[返回值为-1]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#9918]]></link>
 <author><![CDATA[anson97209]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Mon, 14 Sep 2009 09:10:45 +0000]]></pubdate>
</item>
<item>
 <title><![CDATA[]]></title>
 <description><![CDATA[把ioctl(file,I2C_SLAVE,addr)的返回值打印出来]]></description>
 <link><![CDATA[http://121.40.142.80/read.php?tid=3015#9914]]></link>
 <author><![CDATA[kasim]]></author>
 <category><![CDATA[Linux技术交流区]]></category>
 <pubdate><![CDATA[Mon, 14 Sep 2009 08:16:13 +0000]]></pubdate>
</item>
</channel></rss>