调试i2c设备时大家肯定会遇到i2c读写的问题,如何读取某个设备指定的寄存器?如何把值写入到该寄存器?想必这些很多人都会遇到。android本身没有这样的工具,所以只能自己写或者使用其他开源的codes。i2c-tools-3.1.0是在网上找到的一个相当合适的工具,所以我们可以好好利用,好的工具可以让我们开发事半工倍。
其它就不用多说了,进入主题吧!
i2c-tools-3.1.0代码很容易获取,网上一搜一大把。下面是code的结构,这里我主要分析tools这一块。
1:在tools目录下创建Android.mk文件,用于编译用。配好android环境后,使用mmm来编译i2c-tools,最后在out目录下system/bin生成i2cdetect、i2cset、i2cget、i2cdump。
LOCAL_PATH:= $(call my-dir)########################################################################include $(CLEAR_VARS)LOCAL_SRC_FILES := i2cdetect.c i2cbusses.cLOCAL_PRELINK_MODULE := falseLOCAL_MODULE_TAGS := optionalLOCAL_SHARED_LIBRARIES := liblogLOCAL_MODULE := i2cdetectinclude $(BUILD_EXECUTABLE)########################################################################include $(CLEAR_VARS)LOCAL_SRC_FILES := i2cget.c i2cbusses.c util.cLOCAL_PRELINK_MODULE := falseLOCAL_MODULE_TAGS := optionalLOCAL_SHARED_LIBRARIES := liblogLOCAL_MODULE := i2cgetinclude $(BUILD_EXECUTABLE)########################################################################include $(CLEAR_VARS)LOCAL_SRC_FILES := i2cset.c i2cbusses.c util.cLOCAL_PRELINK_MODULE := falseLOCAL_MODULE_TAGS := optionalLOCAL_SHARED_LIBRARIES := liblogLOCAL_MODULE := i2csetinclude $(BUILD_EXECUTABLE)########################################################################include $(CLEAR_VARS)LOCAL_SRC_FILES := i2cdump.c i2cbusses.c util.cLOCAL_PRELINK_MODULE := falseLOCAL_MODULE_TAGS := optionalLOCAL_SHARED_LIBRARIES := liblogLOCAL_MODULE := i2cdumpinclude $(BUILD_EXECUTABLE) 2: