1. i2cget不能读取16位寄存器地址,只能选用i2ctransfter

读写16位地址寄存器时,直接使用i2cget失败。后来发现需要使用i2ctransfter工具,

而我拿到的i2c-tools工具,并没有i2ctransfer可执行程序。只能自己编译。

2. i2c-tools涉及的I2C地址都是7位的

3. i2cdetect

用来检测I2C总线上连接的设备。

示例:

4. i2cdump

遇到的错误: permission denied (需要root权限)

遇到的错误: Remote I/O error (设备无法进行I2C通信,可能是没有上电,如设备没有打开)

用来dump出某个I2C总线上连接的某个设备(用I2C地址标识)的一系列寄存器的数据。

示例:

5. i2cget

用来获取某个I2C总线上连接的某个设备(用I2C地址标识)的某个寄存器的数据。

示例:

6. i2cset

用来设置某个I2C总线上连接的某个设备(用I2C地址标识)的某个寄存器的数据。

示例:

7. i2ctransfter使用介绍

i2ctransfter程序的使用方式如下:

i2ctransfer -f -y 1 w2@0x36 0x50 0x81 r3
1: i2c-1
w2: @后面共有2+1个数字 (或者说 后面要读写的寄存器有2个值)
0x36: i2c device address
0x50+0x81: register address (16bit)
r3: 读出从0x5081开始的3个连续值

下图是读取7位设备从地址为0x36(对应的8位地址位0x6c)寄存器0x0100, 0x3409,

0x340c, 0x3425的示例:

8. not executable: 64-bit ELF file错误

由于代码编译主机只配置了交叉编译环境,没有Linux下的gcc,直接编译,生成的程序似乎不是可用的执行程序,在设备上执行时,提示“not executable: 64-bit ELF file”。有网友提示要编译成static的方式,我尝试后,发现还是会报告上面的错误。

我觉得可能还是需要在编译主机上,指定合适的GCC编译环境,生成linux环境或者交叉编译环境对应的可执行程序。

9. 在Android交叉编译环境下,编译生成对应的执行程序。

需要:

(1)下载i2c-tools源代码

(2)放到android项目工程中,添加对应的Android.mk

(3)source + lunch, 配置好编译环境

(4)mmm的方式编译i2c-tools目录

(5)  push可执行程序到设备

将编译生成的out/target/x/目录/system/bin/下的i2cget, i2ctransfer等可执行程序push

到设备端的/system/bin/目录。

9.1 下载i2c-tools源代码

文件下载路径:

Index of /pub/software/utils/i2c-tools/ (kernel.org)

https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/

直接下载压缩包,或者通过git clone的方式下载(更推荐):

git clone git://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git

9.2 添加对应的Android.mk

可以将代码放在Android项目源代码的external目录下进行编译。 记得先删除Makefile文件

(建议 先将i2c-tools目录下的Makefile剪切,备份保存,然后再创建Android.mk文件)

LOCAL_PATH:= $(call my-dir)################### i2c-tools #########################
include $(CLEAR_VARS)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:=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:=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:=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:=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:=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)

附上几个有关的链接:

(52条消息) Android 平台下使用 i2c-tools_简单并快乐着的博客-CSDN博客

(52条消息) i2c-tools工具_Linux驱动专栏的博客-CSDN博客_i2ctool工具

[Android] i2c-toos 在 Android 上使用 - LeeAaron - 博客园 (cnblogs.com)

(51条消息) 手把手教你使用 i2c-tools_嵌入式Linux系统开发的博客-CSDN博客_i2c-tools

sh: ./i2c_test: not executable: 64-bit ELF file No such file or directory 相关链接:

https://blog.csdn.net/baiyifei2016/article/details/125055949

https://blog.csdn.net/u012830148/article/details/88425984

c - Android not executable: 64-bit ELF file - Stack Overflow

https://blog.csdn.net/m0_46296142/article/details/125986281

Android平台i2c-tools及16位地址读写,以及not executable: 64-bit ELF file解决办法相关推荐

  1. 读写EEPROM遇到的问题:16位地址的内容都是最后写入的数据。

    #define EE_TYPE AT24C64 如下图所示,往EEPROM的地址0x1000.0x1001.0x1002和0x1003分别写入0xAA.0xBB.0xCC和0xDD,读出来的数据都是最 ...

  2. Android Stduio 发生 Process ‘command ‘somePath:java.exe‘‘ finished with non-zero exit value 2 异常的解决办法

    Android Stduio 发生 Process 'command 'somePath:java.exe'' finished with non-zero exit value 2 异常的解决办法 ...

  3. android studio创建项目一直,Android Studio在创建/导入项目的时候,一直处于building “XXX”gradle project info的解决办法...

    Android Studio在新建项目或者导入项目的时候,可能会一直处于building "XXX"gradle project info的状态,而且还取消不了,无奈之下只能干掉进 ...

  4. arduino i2c 如何写16位寄存器_基于STM32使用I2C读取传感器数据

    撑腰会儿:I2C通信协议介绍​zhuanlan.zhihu.com 上文介绍了I2C协议的基本结构,今天,使用STM32和LM75A温度传感器来实现I2C读取信息. 首先,为了使用I2C读取传感器测量 ...

  5. android虚拟器没有菜单,网易MuMu模拟器不显示Menu(菜单)键的解决办法

    解决方法一: 前提:需要一个键盘 步骤: 1.直接按下键盘上的Menu键. 解决方法二: 前提:需要Root之后的文件浏览器 步骤: 1.在文件管理器中打开 /System 文件夹: 2.复制 bui ...

  6. win7 64位系统下 Logitech(罗技) M555b蓝牙鼠标断线解决办法

    笔者的笔记本电脑是ThinkPad T420.用Logitech(罗技) M555b鼠标已经有一年多的时间了,不过之前一直是在win7 32位系统下使用的,用了能有一年多的时间,一直很稳定,没有出现过 ...

  7. 64位系统使用Access 数据库文件遇到的错误和解决办法

    64位系统中使用32位的Access数据源遇到的问题和解决办法 win32com.client使用不对应的Access数据源可能有以下错误 "C:\Program Files\Python3 ...

  8. 关于负数位右移与负数除法所得结果不一样的解决办法

    在使用位右移来处理有符号整数的除法时,负数位右移的结果与对应除法的结果会出现不一致的情况,如-1>>1=-1,-5>>2=-2. 对此,我想到了一个解决办法,至于时效怎么样,另 ...

  9. android弹窗闪退,绝地求生闪退是怎么回事_最新闪退弹窗解决办法

    绝地求生闪退是怎么回事?吃鸡的伙伴们都知道,绝地求生每次更新完之后总有各种各样的bug.最近就有朋友遇到绝地求生闪退还弹了英文窗口的问题.下面,APK8安卓网就带来最新闪退弹窗解决办法.一起来了解一下 ...

  10. arduino i2c 如何写16位寄存器_Arduino之我见

    Arduino是一款时尚流行的开源软件&硬件平台,其开发入门简单,是众多DIY玩家及创客的首选.目前,Arduino也开始进入了中小学的创客课程.然而在与很多玩家.学生或是创客老师交流的过程中 ...

最新文章

  1. vmware虚拟机启动centOs黑屏
  2. nagios配置安装
  3. lftp压缩对方服务器文件,lftp 贴心好友 备份服务器bash脚本
  4. Map 3D中程序设置地图中心点
  5. 内网python 仓库_GitHub - xanarry/LanTrans-desktop: 这是一个用python写的局域网传文件工具, 跨平台, 仓库中还有安卓版的工程...
  6. Jenkins-CI 远程代码执行漏洞复现(CVE-2017-1000353)
  7. 7005.ADS-B建设和规划情况介绍
  8. 可临摹素材,分层可编辑一步一步教你,肯定能把表单做好
  9. oracle使用连接池,使用Oracle的数据连接池
  10. java.lang.IllegalArgumentException: An invalid domain [.test.com] was specified for this cookie解决方法
  11. Qt编写的RTSP播放器+视频监控(android版本)
  12. Atitit.计算机图形图像图片处理原理与概论attilax总结
  13. 揭秘!物联网卡代理的三大骗局
  14. 洞察科技,感知未来:人工智能将如何改变学术搜索?
  15. 如何编辑微信公众号(微信公众号内容制作流程)
  16. 模板匹配 解决模板旋转以及重复检测问题
  17. html追加没有样式,html中append追加的表格元素和静态显示的元素样式不同?
  18. PS软件操作应用—文字特效
  19. Jzoj4745 看电影
  20. invalid button size rid: 5fd188c8-1d752f57-0d53f85f

热门文章

  1. UE4 官方文档阅读笔记——材质篇
  2. fiddler证书无法安装详解
  3. 百度下载工具我用这两个(目前)
  4. c语言贪吃蛇设计意义,C语言贪吃蛇设计理念.pdf
  5. 中科大研发的FTP搜索工具~
  6. 蛋白+小分子配体md(详细保姆教程)
  7. windows操作系统原理_操作系统 — 深入理解内存的原理
  8. 信贷风控模型搭建及核心风控模式分类
  9. python的文件夹里面有什么_Python的文件及文件夹操作
  10. 安装IIS8.0,ASP以及相关配置,网站搭建