在RK3399项目中编译i2c-tools

公众号

欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。
在这里插入图片描述

项目场景:

在RK3399项目中编译i2c-tools
首先先下载代码:git clone git://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git
修改makefile:

添加自己的交叉编译工具链路径,比如我们是
COMPILE_PREFIX = /rk3399_git/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
CC	= $(COMPILE_PREFIX)gcc
AR	= $(COMPILE_PREFIX)ar
STRIP	= $(COMPILE_PREFIX)strip

使用make命令编译,会生成可以执行文件i2ctransfer、i2cset、i2cget、i2cdump、i2cdetect等可执行文件,然后把文件push到安卓下的、system/bin文件下。


问题描述:

1、进入adb使用使用上面编译出来的命令:./i2cdetect打印出如下错误

/system/bin/sh: /system/bin/i2cdetect: No such file or directory

2、我们使用file 命令测试:file /system/bin/i2cdetect

/system/bin/i2cdetect: ELF executable, 64-bit LSB arm64, dynamic (/lib/ld-linux-aarch64.so.1), BuildID=c448d89f1e0d50f45ede8dc7e64b76db49acfb65, not stripped

3、可以看到这个可执行文件依赖/lib/ld-linux-aarch64.so.1,这个动态库,然后我们去到我们的板子下ls查看并没有这个动态库,所以问题就出现在这里缺少某些动态库。

解决方案:

1、去到我们交叉编译工具链的地址:/rk3399_git/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/
find -name “ld-linux-aarch64.so.1” 查找我们缺失的动态库的存放的地方。
然后将这个动态库“ld-linux-aarch64.so.1” 和动态库 “libc.so.6” 使用adb push 到 lib文件夹

2、然后会到i2c-tools的目录下,也要将一些动态库push到我们的开发板中。将i2c-tools的目录下lib中的libi2c.so.0.1.1 push到开发板的lib文件夹。然后建立链接文件,类似windows下的快捷方式:
建立链接命令:

ln -s libi2c.so.0.1.1 libi2c.so.0

3、如果运行还出现“没有权限”这个错误,还需要把上面的库修改权限 +777。

命令使用方法

i2cset和i2cget使用方法:

./i2cset -f -y 1 0x20 0x77 0x3f (设置i2c-1上0x20器件的0x77寄存器值为0x3f)
./i2cget -f -y 1 0x20 0x77 (读取i2c-1上0x20器件的0x77寄存器值)

i2cdetect使用方法:

i2cdetect检测挂载在i2c总线上器件,输入 ./i2cdetect-r -y 1(检测i2c-1上的挂载情况)
备注:如果 i2cdetect使用这个命令检测比较慢证明这个总线的dts没有使能,正常情况下检测是非常快的。

i2cdump使用方法:

i2cdump来看i2c-1上0x49地址的i2c设备中所有register的值 :./i2cdump -f -y 1 0x49

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值