i2ctools在android中的编译及使用

xiaoxiao2021-02-28  59

开发环境使用ubuntu 12.04 64bit,代码位于/home/cloverbox,本文档对全志A20 CLOVER BOX开发板适用 1.cloverbox_A20源码编译    a)安装jdk,jdk版本为1.6.0_43;    b)编译lichee源码  首先解压:tar -jxvf ……lichee……   然后进入lichee目录,执行:       ./build.sh -p sun7i_android    c)编译android源码  首先解压:tar -jxvf ……Android……   然后进入android目录,依次执行:       . build/envsetup.sh     #倒入环境变量,.与build之间有空格分隔;       lunch                   #选择工程,这里选择15       extract-bsp             #拷贝内核和模块到android中,如果lichee源代码编译不成功,则此步骤将无法编译通过       make -j4                #多线程编译,ubuntu 12.04 64bit位于虚拟机中,虚拟机配置为4核       pack                    #打包固件 说明:android源码编译成功后才可以使用android源代码对i2c-tools工具包源文件进行编译;       在android源码编译过程中查看android源码文件夹中的文件,可能会造成编译不成功;       多线程编译时使用make -j8命令,与实际硬件配置不符,可能会造成编译不成功; 2.i2c-tools代码在Android 源码中编译     a)下载i2c-tools3.1.0.tar.bz2文件,使用tar -jxvf i2c-tools3.1.0.tar.bz2进行解压,得到i2c-tools3.1.0文件夹;     b)将 i2c-tools 文件夹拷贝到 Android 源码的 external 目录下;     c)在 i2c-tools 目录下新建 Android.mk 文件,内容如下: # 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)     d)进入i2c-tools目录,输入mm命令,进行编译(mm命令是利用android源码单独编译i2c-tools中的代码)。如果编译成功,会在 out/target/product/sabresd_6dq/system/bin目录下生成4个可执行程序:i2cdetect、i2cdump、i2cget、i2cset; 3.i2c-tools工具在Android开发板中测试     a)cloverbox开发板使用usb调试线连接电脑,确保操作系统识别出此设备。如果ubuntu 12.04 64bit系统中没有安装adb,则使用以下方法安装: sudo add-apt-repository ppa:nilarimogard/webupd8 sudo apt-get update sudo apt-get install android-tools-adb         多数网络资料说须在/etc/udev/rules.d/下创建配置文件等步骤,经试验全志A20 CLOVER BOX开发板不需进行此设置;在终端中输入adb device,如能找到android设备,则说明adb工具安装成功;     b)在虚拟机中打开终端,输入adb remount,将android设备改为可读可写,在使用以下命令将上一步编译生成的4个文件复制到 Android 平台的 /system/bin 目录下:        adb push <要发送文件的路径> /system/bin/     c)在虚拟机终端里输入adb shell,进入android开发板终端,在输入以下代码,对i2cdetect、i2cdump、i2cget、i2cset工具进行测试:        列举 I2C bus:i2cdetect -l        列举 I2C bus i2c-0 上面连接的所有设备:i2cdetect -y 0        显示 i2c-0总线上/地址为0x34的设备大批量 register 的值:i2cdump -y -f 0 0x34        读取 i2c-0总线上/地址为0x34的设备/ register 0x32 的值:i2cget -y -f 0 0x34 0x32       显示结果为0x42        设置 i2c-0总线上/地址为0x34的设备/ register 0x32 的值:i2cset -y -f 1 0x34 0x32 0x6A     说明:对于全志A20 CLOVER BOX开发板,电源管理芯片AXP209的I2C总线地址为 0 ,设备地址为 0x34 ,register 0x32 为充电指示灯控制寄存器,每次android系统启动后,会将此寄存器的值设置为 0x42 ,可以通过 i2cset 命令分别设置此寄存器的值为0x4A、0x5A、0x6A、0x7A ,来控制指示灯分别实现:熄灭、点亮、f=1Hz闪烁、f=4Hz闪烁;      
转载请注明原文地址: https://www.6miu.com/read-74929.html

最新回复(0)