[RK3399]移植工具i2c-tools
Platform: ROCKCHIP
Chip: RK3399
OS: Android7.1.2
Kernel: 4.4.126
简介
i2c-tools 是一款免费开源的工具,是linux系统下一款i2c调试利器,方便对i2c总线和i2c设备调试,i2ctools工具支持的功能包括:
- 检测cpu i2c总线:一般用于cpu i2c总线驱动调试,但是一般情况下,cpu原厂已经提供i2c总线驱动,除非是原厂驱动开发,否则大多数驱动编写场景都是基于i2c总线驱动开发i2c设备驱动。
- 检测i2c总线挂载的设备
- 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相关推荐
- openEuler 20.03 LTS面向RK3399移植系列(4)—验证和问题分析openEuler 20.03 LTS面向Firefly RK3399的第一个版本
任务动机:验证openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linux kernel 4.4),分析现存问题,提炼下一步移植工作的需求. 任务描述:按照<o ...
- Oracle EBS数据定义移植工具:FNDLOAD
在实际的EBS二次开发中,我们经常会碰到需要在各个环境之间移植二次开发的程序对象以及数据定义,如在EBS二次开发中并发请求的定义会涉及到:可执行.并发程序.值集.请求组等的定义,定义需要从开发环境.测 ...
- linux虚拟光驱软件下载,虚拟光驱工具DAEMON Tools Ultra下载中文旗舰版6.0.0.1623 - 系统之家...
DAEMON Tools Ultra中文期间版是专业映像制作软件,软件的功能强大而且非常多,支持创建/编辑/刻录/提取,数据映像.音频映像.加密光盘.虚拟硬盘.虚拟光盘.内存磁盘.VHD.USB引导盘 ...
- i2c tools ds90ub927芯片使用
i2c tools && ds90ub927芯片使用: **下载:**git clone git://git.kernel.org/pub/scm/utils/i2c-tools/i2 ...
- Porting Kit for mac(游戏移植工具)
一款Mac非常好用的游戏移植工具Porting Kit,Porting Kit旨在简化Mac计算机上Windows游戏的下载和安装过程.该实用程序使用Wineskin引擎,允许您浏览可部署到Mac的免 ...
- 苹果欲让 Mac 变成「游戏机」,发布移植工具,几秒就能玩上 Windows 游戏!
整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 你会用 Mac 电脑来玩游戏吗? 一直以来,Mac "只适合办公,不适合玩游戏"的名声早已远扬,它的硬件.API.驱动 ...
- 嵌入式工具移植之-wireless tools工具的移植和使用
前言:本文主要讲解了wirless tools的概念和如何移植wireless tools,以及如何使用wireless tools中的工具设置无线网络. 一.wireless tools概念 Wir ...
- Hi3516A开发--i2c tools安装和使用
一.首先下载安装包: i2c-tools-3.0.1 linux上调试i2c的工具 源码 二.解压安装 1.解压tar -zxvf i2c-tools-3.0.1.tar.gz 2.修改Makefil ...
- openEuler 20.03 LTS的第一个4.19内核RK3399移植版发布
任务动机:openEuler 20.03 LTS的4.19内核版本移植开发取得阶段性成果,发布第一个版本.该版本于2020.11.24日完成,已在Firefly RK3399和OrangePi RK3 ...
- NanoPC-T4(RK3399) game1 oled(I2C)显示时间天气温度
文章目录 1. 查看GPIO定义 wiringpi库 2. 确保硬件无问题 (i2c-tools) 3. 安装oled驱动python包 3.1 用例测试 3.2 测试用例2 4. oled显示时间, ...
最新文章
- codeforce 570 problem E 51Nod-1503-猪和回文
- SQLSERVER拆分字符串的函数(表值函数)
- 酷炫Jquery收集
- spring IOC 注解@Autowired
- apt的通讯信道是如何发现的?
- cacti linux 模板,Cacti模板
- linux 配置trac界面显示为中文,安装back|track 5 r3并配置中文界面简单教程
- 轻量小巧的Knife4j v2.0.8源码
- windows签名证书流程
- 《Kafka权威指南》读书笔记1 初始Kafka
- python结巴分词代码_结巴分词Python代码
- Excel文件对比工具
- Ubuntu ADB 环境变量配置
- Nginx反向代理汇总
- Java开发教程入门!数据库事务深入分析
- 【论文阅读】【综述】从Optical Flow到Scene Flow
- MIPS 指令集速查
- 婴儿脸上起湿疹吃什么好
- 刷步数作弊成了朋友圈必备技能
- Java二叉树后序遍历:递归与迭代