<Android开发> Android开发工具- 之-I2C TOOLS工具使用

前言:在底层开发时,有时需要借助一些工具对驱动进行调试验证。这次讲解的使用的工具是I2C_TOOLS,该工具主要是用来调试验证I2C设备的。接下来看看如何使用吧。

1、获取I2C工具
下载地址:I2C_TOOLS
可以根据自己的需要下载相应的版本,作者为了在android编译,编写的android.mk文件能使用,选择了V3.1.1的,V4以上的Android.mk所有不同,作者还没有尝试更改过。所以选择的V3版本。有兴趣的读者可以尝试使用V4版本,并编写mk文件编译,分享分享…
下载得到的是一个源码包。

2、添加源码到android

将下载的压缩包解压到 android/external目录下得到文件夹i2c-tools-3.1.1,不同版本,文件夹名不同。

3、编写android编译文件-i2c-tools-3.1.1版本
1)在文件夹i2c-tools-3.1.1中创建文件 Android.mk。
2)Androidmk文件内容如下:

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(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 := optional
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)/include $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional
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)/include $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional
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)/include $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional
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)/include $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)

4、编写android编译文件–i2c-tools-4.3版本
1)在文件夹i2c-tools-4.3中创建文件 Android.mk。
2)Androidmk文件内容如下:

LOCAL_PATH:= $(call my-dir)################### i2c-tools #########################
include $(CLEAR_VARS)LOCAL_MODULE_TAGS := eng
LOCAL_MODULE := i2c-toolsLOCAL_SRC_FILES := \tools/i2cbusses.c \tools/util.c \lib/smbus.cLOCAL_C_INCLUDES += \$(LOCAL_PATH) \$(LOCAL_PATH)/include#LOCAL_CFLAGS := -g -Wall -Werror -Wno-unused-parameter
include $(BUILD_STATIC_LIBRARY)################### i2cdetect #########################
include $(CLEAR_VARS)LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2cdetectLOCAL_SRC_FILES:= \tools/i2cdetect.cLOCAL_C_INCLUDES += \$(LOCAL_PATH) \$(LOCAL_PATH)/includeLOCAL_SHARED_LIBRARIES:= \libc
LOCAL_STATIC_LIBRARIES := \i2c-toolsLOCAL_CPPFLAGS += -DANDROIDinclude $(BUILD_EXECUTABLE)#################### i2cget ###########################
include $(CLEAR_VARS)LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2cgetLOCAL_SRC_FILES:= \tools/i2cget.cLOCAL_C_INCLUDES += \$(LOCAL_PATH) \$(LOCAL_PATH)/includeLOCAL_SHARED_LIBRARIES:= \libc
LOCAL_STATIC_LIBRARIES := \i2c-toolsLOCAL_CPPFLAGS += -DANDROIDinclude $(BUILD_EXECUTABLE)##################### i2cset ##########################
include $(CLEAR_VARS)LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2csetLOCAL_SRC_FILES:= \tools/i2cset.cLOCAL_C_INCLUDES += \$(LOCAL_PATH) \$(LOCAL_PATH)/includeLOCAL_SHARED_LIBRARIES:= \libc
LOCAL_STATIC_LIBRARIES := \i2c-toolsLOCAL_CPPFLAGS += -DANDROIDinclude $(BUILD_EXECUTABLE)##################### i2cdump #########################
include $(CLEAR_VARS)LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2cdumpLOCAL_SRC_FILES:= \tools/i2cdump.cLOCAL_C_INCLUDES += \$(LOCAL_PATH) \$(LOCAL_PATH)/includeLOCAL_SHARED_LIBRARIES:= \libc
LOCAL_STATIC_LIBRARIES := \i2c-toolsLOCAL_CPPFLAGS += -DANDROIDinclude $(BUILD_EXECUTABLE)################### i2ctransfer #######################
include $(CLEAR_VARS)LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2ctransferLOCAL_SRC_FILES:= \tools/i2ctransfer.cLOCAL_C_INCLUDES += \$(LOCAL_PATH) \$(LOCAL_PATH)/includeLOCAL_SHARED_LIBRARIES:= \libc
LOCAL_STATIC_LIBRARIES := \i2c-toolsLOCAL_CPPFLAGS += -DANDROIDinclude $(BUILD_EXECUTABLE)

4、编译工具模块
1)首先确认整个android已经完整编译过了;
2)在android根目录执行环境变量配置命令,如下:
#: source build/envset.sh //配置环境变量
#: lunch //然后选择对应构建的目标
3)进入到android/external/i2c-tools-3.1.1目录下,执行“mm”,进行模块编译。
或者进入到android/external/i2c-tools-4.3目录下,执行“mm”,进行模块编译。
4)在路径“out/target/product/xxx/system/bin”目录下会生成4个执行文件,如下:
i2cdetect
i2cdump
i2cget
i2cset
i2ctransfer //此项只有4.x版本以上才有

5、将文件推送到android设备的system/bin目录下 或 重编整个系统,在整体下载镜像,这样设备就附带有这4个命令了。

6、工具使用

1)用i2cdetect检测有几组i2c总线在系统上
命令:./i2cdetect -l

2)用i2cdetect检测挂载在i2c总线上器件,
命令: ./i2cdetect-r -y 10
其中:
10:表示检测i2c-10上的挂载情况

3)用i2cdump查看器件所有寄存器的值,这个命令可以查看器件所有寄存器的值,在实际测试时很好用
命令:./i2cdump -f -y 10 0x42
其中 :
10: 表示I2C-10这个总线;
0x42:表示总线上 设备地址为0x42的这个设备;

4)用i2cset来设置单个寄存器值
命令:./i2cset -f -y 10 0x42 0xFC 0x3F
其中 :
10: 表示I2C-10这个总线;
0x42:表示总线上 设备地址为0x42的这个设备;
0xFC:操作的寄存器地址
0x3F:当前操作的寄存器到写入的值

4)用i2cget来获取单个寄存器值
命令:./i2cget -f -y 10 0x42 0xFC
其中 :
10: 表示I2C-10这个总线;
0x42:表示总线上 设备地址为0x42的这个设备;
0xFC:操作的寄存器地址

5)i2ctransfer 使用,i2ctransfer支持16位/32位寄存器的读写,i2cset和i2cget只能读取8位的寄存器。所以i2ctransfer可以替代i2cset和i2cget
(1) 往i2c-1上0x42器件 0x5081寄存器 写0x01
$i2ctransfer -f -y 1 w3@0x42 0x50 0x81 0x01

(2) 在i2c-1上0x42器件 0x300A寄存器 读取3个字节数据
$i2ctransfer -f -y 1 w2@0x42 0x30 0x0A r3

以上操作是在I2C设备调试过程使用的一些方法,希望对各位开发过程调试有所帮助。

<Android开发> Android开发工具- 之-I2C TOOLS工具使用相关推荐

  1. 嵌入式开发之工具移植--wireless tools工具的移植和使用

    wireless tools工具的移植和使用 前言:本文主要讲解了wirless tools的概念和如何移植wireless tools,以及如何使用wireless tools中的工具设置无线网络. ...

  2. 在Android源码树中添加userspace I2C读写工具(i2c-util)

    by LiAnLab.org / 宋宝华 通过/dev/i2c-n节点,用户可以在userspace直接访问板上的i2c外设寄存器,主要是透过I2C_RDWR这个IO控制命令将i2c_msg数组传递给 ...

  3. 开发Android必知的工具

    程序开发有时候非常依赖使用的开发工具,好的完备的开发工具可以让开发人员的工作效率有大幅度的提高.开发Android也是如此,大家可能都离不开Eclipse或Android Studio这些工具,但他们 ...

  4. 【安卓开发系列 -- 开发环境】Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具)

    [安卓开发系列 -- 开发环境]Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具) [1]Unbuntu ...

  5. Android开发实用小工具九——温度转换工具

    文章目录 前言 一.效果展示 二.代码 1.样式布局 2.主代码 总结 前言 温度转换工具的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一 ...

  6. Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材

    AndroidDevTools AndroidSDK在线更新镜像服务器 中国科学院开源协会镜像站地址: IPV4/IPV6:mirrors.opencas.cn端口:80 IPV4/IPV6:mirr ...

  7. Android连载之:第二章第三节:利用其他的开发环境和工具开发Android应用程序

    2.3 利用其他的开发环境和工具开发Android应用程序 推荐使用带有Android插件的Eclipse来开发Android应用程序,ADT插件提供了编辑.编译.调试功能并集成进了IDE中.然而,S ...

  8. Xamarin Mono For Android 4.10.01068 完整离线安装破解版(C#开发Android、IOS工具)

    Xamarin是由Miguel de Icaza成立的一家新的独立公司,目的是给Mono一个继续奋斗的机会.Mono for Android (原名:MonoDroid)可以让开发人员使用 Micro ...

  9. android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码

    /** 版本:1.0 日期:2009-04-01 作者:HKjinzhao 备注: 转自:http://blog.csdn.net/hkjinzhao/article/details/4043997 ...

  10. Android开发之使用Handler封装下载图片工具类(源代码分享)

    如果每下载一张图片,就得重写一次Http协议,多线程的启动和handler的信息传递就显得太麻烦了,我们直接来封装一个工具类,便于我们以后在开发时随时可以调用. (1)在清单文件添加权限 <us ...

最新文章

  1. 清华阿里联合发布:一个Few-shot场景的命名实体识别数据集
  2. node搭建的一个应用在前端项目中的可切换接口的代理服务器
  3. 【python图像处理】python绘制灰度直方图
  4. VTK:图表之AdjacencyMatrixToEdgeTable
  5. C语言已排序链表插入新节点保持排序状态(附完整源码)
  6. Java线程机制学习
  7. 深入浅出vc dll动态链接库
  8. 特斯拉工程师当UP主评测自动驾驶,结果被公司开除
  9. no segments* file found in SimpleFSDirectory问题总结
  10. 1000道Python题库系列分享14(1道代码阅读题)
  11. MySQL的replace()函数
  12. 【Dism++ 最新版 官网 下载地址,(如旧Dism++地址失效),绿色清洁管理电脑工具】
  13. UOS (deepin)刻录u盘安装系统
  14. 螺钉 螺母 硬币三种物体的识别
  15. https://blog.csdn.net/Darryl_Tang/article/details/80545688
  16. PDF文件解密安全口令
  17. lighttpd跟php,Lighttpd与PHP
  18. Nginx编译安装与虚拟主机配置
  19. 解决ping/telnet本地localhost可以通过 ping/telnet本地ip无法通过问题
  20. win10 系统亮度无法调节

热门文章

  1. 批量域名解析为IP地址
  2. java中文输出乱码_java汉字乱码解决办法
  3. 适合java初学者的几个自学网站
  4. 数据库系统概论-数据库安全性
  5. 私塾在线精品原创系列文章
  6. Android中利用ActivityGroup制作首页框架
  7. H.266/VVC代码学习笔记15:VTM6.0中的xCheckRDCostMergeTriangle2Nx2N()函数
  8. MFC | 基于文档存储的学生成绩信息管理系统
  9. 完善征信+垂直创新 助力有融网“剩者为王”
  10. Windows操作系统原理笔记