i2ctools在android中的编译及使用

开发环境使用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闪烁;
























     

你可能感兴趣的:(i2ctools在android中的编译及使用)