当前位置: 代码迷 >> 驱动开发 >> [求教]为啥用户空间使用不了i2c_smbus_write_byte_data
  详细解决方案

[求教]为啥用户空间使用不了i2c_smbus_write_byte_data

热度:119   发布时间:2016-04-28 10:16:13.0
[求教]为什么用户空间使用不了i2c_smbus_write_byte_data?
使用I2Ctools是可以操作 i2c设备的.
但是就是编译不通过.
[[email protected] app]# gcc -I/usr/include I2CTestClinet.c -o I2CTestClinet
/tmp/ccepfXuY.o: In function `I2CWriteBYTE':
I2CTestClinet.c:(.text+0x7a): undefined reference to `i2c_smbus_write_byte_data'
collect2: ld returned 1 exit status
------解决方案--------------------
这个函数是内核中定义的,只有驱动中才能使用,在驱动中的ioctl函数实现中会调用你说的这个i2c_smbus_write_byte_data函数,所以我们用户只要用ioctl就能间接调用你说的这个i2c_smbus_write_byte_data函数了。
------解决方案--------------------
引用:
本帖最后由 liaogang23 于 2013-03-15 16:10:19 编辑
            使用I2Ctools是可以操作 i2c设备的.
但是就是编译不通过.
[[email protected] app]# gcc -I/usr/include I2CTestClinet.c -o I2CTestClinet
/tmp/ccepfXuY.o: ……


内核函数要想在应用层调用,只能通过传参
------解决方案--------------------
引用:
引用:本帖最后由 liaogang23 于 2013-03-15 16:10:19 编辑
            使用I2Ctools是可以操作 i2c设备的.
但是就是编译不通过.
[[email protected] app]# gcc -I/usr/include I2CTestClinet.c -o I2CTestClinet
……

但是实际上还是在内核里面运行的,然后返回信息给应用层,应用层直接调内核函数是不行的.
  相关解决方案