在我的 qt 程序中,我包含了 i2c/smbus 的标头(就像我为其他项目所做的那样,也使用 yocto 但不同的 SoC 供应商)。
内核 4.14.24
extern "C"
{
#include <linux/i2c.h>
#include <linux/i2c-dev.h>
#include <i2c/smbus.h> << FAIL: i2c/smbus.h: No such file or directory
#include <fcntl.h>
#include <sys/ioctl.h>
}
在 conf/local.conf 文件中,我添加了 i2c-tools
IMAGE_INSTALL_append = " i2c-tools "
构建工具链并检查 i2c/smbus.h 的 rootfs。没运气。
i2cdetect/get/set 有效(在添加 i2c-tools 之前也做过)。
Functionalities implemented by /dev/i2c-0:
I2C yes
SMBus Quick Command yes
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call yes
SMBus Block Write yes
SMBus Block Read yes
SMBus Block Process Call no
SMBus PEC yes
I2C Block Write yes
I2C Block Read yes
我在 rootfs 中看不到 smbus.h:/usr/include/i2c/ 有一个 i2c-core-smbus.c,其中功能 i2c_smbus_... ... () 位于但没有 h 文件。
编辑:添加内核版本。