Platform: ROCKCHIP
Chip: RK3399
OS: Android7.1.2
Kernel: 4.4.126

简介

i2c-tools 是一款免费开源的工具,是linux系统下一款i2c调试利器,方便对i2c总线和i2c设备调试,i2ctools工具支持的功能包括:

  1. 检测cpu i2c总线:一般用于cpu i2c总线驱动调试,但是一般情况下,cpu原厂已经提供i2c总线驱动,除非是原厂驱动开发,否则大多数驱动编写场景都是基于i2c总线驱动开发i2c设备驱动。
  2. 检测i2c总线挂载的设备
  3. i2c设备读写访问
    检测硬件是否有误,驱动不正常时首先检测电路连接是否正常;实时检测状态寄存器;实时更改i2c设备配置,最终确定好配置信息后,再修改驱动程序;验证驱动的读写功能是否正确。

源码下载地址

https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/
选择要安装的版本

根据自己linux系统已有的解压工具选择对应的压缩文件,这里我下载的是 “.gz”格式,方便解压。执行“tar -xvzf i2c-tools-4.1.tar.gz ”解压。

i2ctools移植到rk3399

1.将上一步下载下来的源码解压后,可看到该路径下的文件

2.在 android 平台使用 i2c-tools,就需要进行交叉编译或者直接编译成可执行程序

方案一、修改 Makefile 进行交叉编译
修改Makefile,选择rk3399的交叉编译器,然后执行make编译

CC   ?= arm-linux-gcc
AR  ?= arm-linux-ar

编译完成, 在“tools”目录生成可执行文件i2cdetect、i2cdump、i2cget、i2cset、i2ctransfer;在“lib”目录生成“libi2c.so.0.1.1”动态库文件。将执行文件拷贝到rk3399板子任意目录,将库文件“libi2c.so.0.1.1”拷贝到rk3399板子“/lib”目录下。然后创建软链接:根据提示错误信息,i2ctools执行文件依赖“libi2c.so.0”文件,在板子上直接执行会提示加载库文件失败。通过编译后“lib”目录发现“libi2c.so.0”实际上为一个软链接文件,链接到“libi2c.so.0.1.1”

ln -s libi2c.so.0.1.1 libi2c.so.0

Makefile方式 生成的文件类型不是arm的,在设备上不可执行故选用第二种方案

方案二、编译成可执行程序
(1) 将 i2c-tools 文件夹拷贝到安卓工程external目录下
(2) 在 i2c-tools 目录添加 Android.mk 编译文件
Android.mk如下

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)

(3) 在工程目录下使用 mmm 指令进行模块化编译,步骤如下

1.source build/envsetup.sh
2.lunch rk3399_all-userdebug
3.mmm external/i2c-tools-4.2/

编译完成后会在out\target\product\rk3399_all\system\bin下生成可执行文件

查看下文件类型

(4) 通过 adb push 到 设备上即可
这里举例i2cdetect:

-将i2cdetect push到设备的/data/local/tmp下

  • 设备端进入/data/local/tmp目录下,此时i2cdetect没有执行权限,只需chmod+x i2cdetect给其执行权限即可


命令使用语法

i2cdetect

  • 查看板子i2c总线: ./i2cdetect -l

  • 查看i2c总线挂载的设备

 ./i2cdetect -r -y i2c-no
./i2cdetect -r -y 0 /* 查看i2c0挂载的设备 */


i2c0上挂载了4个设备,地址分别是0x1b和0x40,0x41与0x51;
如果i2c设备驱动已经被系统加载,地址显示“UU”。

读取i2c设备所有寄存器值

 ./i2cdump -f -y i2c-no i2c-addr
./i2cdump -f -y 0 0x51  /* 读取i2c0上的0x51所有寄存器值 */


读取i2c设备指定寄存器

./i2cget -f -y i2c-no i2c-addr reg
读取i2c0上的i2c-addr的芯片reg寄存器

写i2c设备指定寄存器

./i2ctransfer -f -y i2c-no w-num@i2c-addr data-0 data-1 data-2

读取i2c设备多个字节数据

./i2ctransfer -f -y i2c-no w-num@i2c-addr data-0 data-1 data-n r-num

写i2c设备多个字节数据

./i2ctransfer -f -y i2c-no w-num@i2c-addr data-0 data-1 data-2

[RK3399]移植工具i2c-tools相关推荐

  1. openEuler 20.03 LTS面向RK3399移植系列(4)—验证和问题分析openEuler 20.03 LTS面向Firefly RK3399的第一个版本

    任务动机:验证openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linux kernel 4.4),分析现存问题,提炼下一步移植工作的需求. 任务描述:按照<o ...

  2. Oracle EBS数据定义移植工具:FNDLOAD

    在实际的EBS二次开发中,我们经常会碰到需要在各个环境之间移植二次开发的程序对象以及数据定义,如在EBS二次开发中并发请求的定义会涉及到:可执行.并发程序.值集.请求组等的定义,定义需要从开发环境.测 ...

  3. linux虚拟光驱软件下载,虚拟光驱工具DAEMON Tools Ultra下载中文旗舰版6.0.0.1623 - 系统之家...

    DAEMON Tools Ultra中文期间版是专业映像制作软件,软件的功能强大而且非常多,支持创建/编辑/刻录/提取,数据映像.音频映像.加密光盘.虚拟硬盘.虚拟光盘.内存磁盘.VHD.USB引导盘 ...

  4. i2c tools ds90ub927芯片使用

    i2c tools && ds90ub927芯片使用: **下载:**git clone git://git.kernel.org/pub/scm/utils/i2c-tools/i2 ...

  5. Porting Kit for mac(游戏移植工具)

    一款Mac非常好用的游戏移植工具Porting Kit,Porting Kit旨在简化Mac计算机上Windows游戏的下载和安装过程.该实用程序使用Wineskin引擎,允许您浏览可部署到Mac的免 ...

  6. 苹果欲让 Mac 变成「游戏机」,发布移植工具,几秒就能玩上 Windows 游戏!

    整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 你会用 Mac 电脑来玩游戏吗? 一直以来,Mac "只适合办公,不适合玩游戏"的名声早已远扬,它的硬件.API.驱动 ...

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

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

  8. Hi3516A开发--i2c tools安装和使用

    一.首先下载安装包: i2c-tools-3.0.1 linux上调试i2c的工具 源码 二.解压安装 1.解压tar -zxvf i2c-tools-3.0.1.tar.gz 2.修改Makefil ...

  9. openEuler 20.03 LTS的第一个4.19内核RK3399移植版发布

    任务动机:openEuler 20.03 LTS的4.19内核版本移植开发取得阶段性成果,发布第一个版本.该版本于2020.11.24日完成,已在Firefly RK3399和OrangePi RK3 ...

  10. NanoPC-T4(RK3399) game1 oled(I2C)显示时间天气温度

    文章目录 1. 查看GPIO定义 wiringpi库 2. 确保硬件无问题 (i2c-tools) 3. 安装oled驱动python包 3.1 用例测试 3.2 测试用例2 4. oled显示时间, ...

最新文章

  1. poj3268(最短路)
  2. 使用Lex将C/C++文件输出为HTML文件
  3. 用Nginx+Lua(OpenResty)开发高性能Web应用
  4. scala逻辑运算符的一览图和代码案例
  5. bzoj 4278 [ONTAK2015]Tasowanie——后缀数组
  6. Redis及其Sentinel配置项详细说明
  7. c语言程序设计 黄建灯,C语言程序设计教学改革
  8. confluence正常安装网页报错_NAS折腾手记1:在OMV5上安装ZFS On Linux的正确步骤
  9. 职称计算机证书 评中级职称,软考证书如何申请评职称及职称申请流程的详细介绍...
  10. 深入理解计算机系统第四版_《深入理解计算机系统》读书笔记 —— 第一章 计算机系统漫游...
  11. 达梦数据库操作记录_【干货分享】达梦7与ArcGIS10.4进行安装适配详细步聚说明...
  12. dwg图纸与dxf图纸的区别?
  13. TongWeb session超时配置
  14. Android C++ OpenGL教程课程总结
  15. Java之Joda工具包处理时间的7点总结分享
  16. cadz轴归零命令_CAD图形如何Z轴归0?
  17. html有形状导航栏制作,div css制作导航栏
  18. 可以嵌入ppt的课堂点名器_异地授课+大屏直播,打造沉浸式线下多地互动智慧课堂...
  19. Mac操作系统-软件安装
  20. php静态页面制作,ps制作静态的html页面

热门文章

  1. 蓝桥杯真题:平方和(2019 年省赛)
  2. 【MyBatis】银行转账系统:MyBatis接口绑定方案及多参数传递、动态SQL、ThreadLocal线程容器、缓存
  3. 爬虫爬取csdn登陆页面持续加载,selenium模拟无法进行的解决方案
  4. excel计算式自动计算_全套Excel版工程自动计算表格+实用小工具,高效工作不加班...
  5. 电影院售票系统,电影院订票系统,电影院购票管理系统计算机毕业设计
  6. 印度神曲之五(Ayka dajiba)
  7. B/S还是C/S? ERP技术的新方向(转)
  8. CSS——淘宝-产品详情的制作
  9. Python基础—文件操作
  10. 2021 年 6 个GitHub推荐前端项目