Android I2c-Tools安装使用说明

本文详细介绍了如何将i2c-tools代码整合到Android源码中,并在外部目录下进行编译,生成i2cdetect、i2cdump、i2cget和i2cset四个可执行程序。通过adb工具将这些程序推送到Android设备的/system/bin目录,实现对I2C总线设备的检测和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将 i2c-tools 代码下载到 Android 源码的 external 目录下,在 i2c-tools 目录下新建 Android.mk 文件,内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
LOCAL_SRC_FILES := tools/i2cbusses.c tools/util.c
LOCAL_MODULE := i2c-tools
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_SRC_FILES:=tools/i2cdetect.c
LOCAL_MODULE:=i2cdetect
LOCAL_CPPFLAGS += -DANDROID
LOCAL_SHARED_LIBRARIES:=libc
LOCAL_STATIC_LIBRARIES := i2c-tools
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_SRC_FILES:=tools/i2cget.c
LOCAL_MODULE:=i2cget
LOCAL_CPPFLAGS += -DANDROID
LOCAL_SHARED_LIBRARIES:=libc
LOCAL_STATIC_LIBRARIES := i2c-tools
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_SRC_FILES:=tools/i2cset.c
LOCAL_MODULE:=i2cset
LOCAL_CPPFLAGS += -DANDROID
LOCAL_SHARED_LIBRARIES:=libc
LOCAL_STATIC_LIBRARIES := i2c-tools
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_SRC_FILES:=tools/i2cdump.c
LOCAL_MODULE:=i2cdump
LOCAL_CPPFLAGS += -DANDROID
LOCAL_SHARED_LIBRARIES:=libc
LOCAL_STATIC_LIBRARIES := i2c-tools
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)

然后 Android根目录:

source build/envsetup.sh
 cd external/i2c-tools
 mm

编译后在 out/target/product/xxx/system/bin目录下生成4个可执行程序:

i2cdetect
i2cdump
i2cget
i2cset

通过 adb push 之间将编译生成的4个文件复制到 Android 平台的 /system/bin 目录下。 在 abd pusll 之前,要先将 system 分区 remount 成可写入模式。

adb shell
cd system/bin

用i2cdetect检测有几组i2c总线在系统上:

i2cdetect -l 

用i2cdetect检测挂载在i2c_n总线上器件:

i2cdetect-r -y 0  
i2cdetect-r -y 1
...

用i2cget获取挂在在i2c总线上的设备中某个寄存器中的值
如: 获取 i2c2下设备地址为 0x24 ,寄存器地址为0x0a中的数值

 i2cget -y -f 2 0x24 0x0a
0x7f

读取 0x34地址设备的 0x28寄存器值

/system/bin # i2cget -f -y 0 0x34 0x28

向地址为0x34的设备 的0x24地址 寄存器 写入 0xfb

/system/bin # i2cset -f -y 0 0x34 0x28 0xfb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux老A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值