您的位置:首页 > 移动开发 > Android开发

i2ctools在android中的编译及使用

2017-09-01 11:45 435 查看
开发环境使用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开
4000
发板不需进行此设置;在终端中输入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闪烁;

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: