【发布时间】:2014-08-06 11:22:19
【问题描述】:
在开发嵌入式 Linux 软件以在 I2C 总线上进行通信时,有很多关于使用 i2c_smbus_ 函数的参考资料。当 i2c_smbus 函数如 i2c_smbus_read_word_data 在软件项目中被引用时,ARM8 处理器错误如 'i2c_smbus_read_word_data' 未在此范围内声明 生成于编译。
对以下头文件的调查表明大多数 i2c_smbus 函数定义都不存在。
- /usr/arm-linux-gnueabi/include/linux/i2c.h
- /usr/arm-linux-gnueabi/include/linux/i2c-dev.h
同样在下面的参考i2c.h 文件中定义了所有的 i2c_smbus。
如何解决这个问题?
研究参考文献
【问题讨论】:
-
最快的 google 显示你需要包含
。 -
我没有看到 i2c-smbus.h 包含在上述任何一个 arm-linux-gnueabi 路径中。
-
该文件在 2010 年作为 include/linux/i2c-smbus.h 添加到 内核 但是在内核源代码中包含它并不一定意味着它将在您的用户空间中包含给定系统上的目录作为参考,主线提交在这里git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/…
-
但我没有看到 i2c-smbus.h 中定义的 i2c_smbus_read_byte_data 函数。但是请根据附加链接查看 i2c.h 中定义的这些函数。 cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/…。我想知道如何更新库文件 /usr/arm-linux-gnueabi/include/linux/i2c.h 以包含 i2c_smbus 函数。我不确定是否可能。如果有更新 arm-linux-gnueabi 库的过程,我已经在 ask.ubuntu c 上发布了一个问题。 askubuntu.com/questions/507628/…
-
@MahendraGunawardena 你是在用户空间还是内核空间实现驱动程序?
标签: c++ c arm embedded-linux i2c