i2ctools工具移植到android(使用NDK方式 在某android平台测试)

article/2025/10/6 23:41:24

前提条件

  • 主板i2c已在设备树配置status和引脚复用正常,即设备的i2c总线达到正常使用条件
  • I2C device interface假设内核已配置进去

编译工具链NDK环境搭建

  • 下载NDK 下载地址点我
  • 解压
~/workspace/ndk$ ls
android-ndk-r22b  android-ndk-r22b-linux-x86_64.zip  
~/workspace/ndk$ unzip android-ndk-r22b-linux-x86_64.zip

记住当前的下载和解压路径,后面会用到。

使用NDK编译i2ctools

  • 先clone i2ctools 源码
 git clone git://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git

i2ctools wiki

https://i2c.wiki.kernel.org/index.php/I2C_Tools
  • 切换到源码下声明NDK相关编译环境变量
#ndk env
export NDK=~/workspace/ndk/android-ndk-r22b
export PATH=${NDK}:${PATH}
export NDKROOT=${NDK}
export NDK_PROJECT_PATH=${NDK}
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
export TARGET=armv7a-linux-androideabi
export API=30
export AR=$TOOLCHAIN/bin/llvm-ar
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export AS=$CC
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
export LD=$TOOLCHAIN/bin/ld
export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
export STRIP=$TOOLCHAIN/bin/llvm-strip
export NDK_APPLICATION_MK=./conf/build_arch_conf.mk
  • 编译i2ctools
    直接make就可以,注意这里的make要和上述声明环境变量操作后的是同一终端下操作。
make -j64

在这里插入图片描述
生成的工具在tools目录下。

导入系统测试

  • 前提:将设备remount,将system分区mount成rw
  • 将动态库和可执行程序推到板卡端
adb push ~/workspace/lib/i2ctools/i2c-tools/lib/libi2c.so.0 /system/lib/
adb push ~/workspace/lib/i2ctools/i2c-tools/tools/i2cdetect /data

执行效果
在这里插入图片描述

  • 过程中遇到的问题
    在旧版本的i2cdetect工具里,轮询发送i2c设备地址时,当设备有应答时,还会对该设备的0x20寄存器进行写操作!但是刚好这个设备是只有0~0x07的寄存器,所以就读不到了
    在这里插入图片描述
    在使用最新拉下来的i2ctools不会这样子。
    在这里插入图片描述
    可能是这个是板卡内置i2ctools的太旧了,后面查看系统原生的发现系统自带的是基于toybox链接出来的。。。emmm

  • 需要内置到系统的话,可通过mk或者bp将库和可执行程序内置到系统镜像中。

  • 需要查看更多命令可参考:https://blog.csdn.net/mantis_1984/article/details/18254767?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163757351316780357238797%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163757351316780357238797&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~hot_rank-3-18254767.pc_v2_rank_blog_default&utm_term=I2C-Tools&spm=1018.2226.3001.4450


http://chatgpt.dhexx.cn/article/HMB4r12t.shtml

相关文章

高通平台 Android9 adb shell “hwclock -w“ 报错

hwclock -w 报错 文章目录 hwclock -w 报错问题现象分析1. hwclock命令分析2. /dev/rtc0驱动节点分析 修改设备树后hwclock -w报错没有了,但是系统会重启,原因未知 问题现象 sdm660_64:/ # hwclock -w hwclock: ioctl 4024700a: Invalid argument分析 …

Android top命令、ps命令、busybox命令

top命令 usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]Show process activity in real time.-H Show threads -k Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID) -o Show FIELDS (def PID,USER,PR,N…

OpenHarmony啃论文俱乐部—盘点开源鸿蒙引用的三方开源软件[1]

目录这里写自定义目录标题 OpenHarmony third_party三方库:学术研究和参与开源的结合third_party_openh264third_party_ninjathird_party_gnthird_party_markupsafethird_party_toyboxthird_party_gstreamerthird_party_ffmpegthird_party_mtdevthird_party_flutter…

Android缺少awk工具的几种解决方法

在日常测试中,我们会用到各种各样的Android平台,用于测试存储设备的性能。其中,我们依赖到Android平台自身的工具,通过编写shell脚本来实现测试存储设备的性能。   而awk工具(shell命令)在shell脚本中会经常用到,一般…

toybox 和 busybox 的作用

来自知乎:程序员秘书 ##前言## 我们在做android开发时,经常会有在板子系统里要修改文件内容对比验证问题,或者要操作特殊的shell命令操作看些信息,等等一些需求。但是往往会因为刷到板子的系统里默认没有/不支持相关的命令&…

欢乐听:一个简洁的瀑布流模式的音乐分享站

欢乐听 一个简洁的瀑布流模式的音乐分享站。

分享5个高质无损音乐网站,歌曲很丰富,爱听歌的小伙伴有耳福了

生活中很多人都离不开音乐,散步的时候听音乐,等待的时候听着音乐,心情不好的时候听音乐,不管走到哪,有音乐的陪伴一点也不寂寞,不同音乐的旋律给我们带来不同的心情,今天小编就给爱听音乐的小伙…

【音乐】收藏的300多首抖音神曲,MP3音乐分享,近一年的抖音歌曲

今天给大家分享N多(300)首抖音神曲。抖音大家都知道,各种火,各种原因,其中的BGM(背景音乐)更是起到了至关重要(画龙点睛)的作用,不知道是哪个大神搞的,去年我搞视频的时候…

搭建一个点歌QQ机器人,另外还能看美女

目录 前言具体实现1、爆照2、生日书3、获取歌词和分享音乐 完整项目下载地址(配置了python环境)完整项目下载地址(电脑没有python环境) 前言 完整项目,包括框架、代码和详细使用说明可以去社区下载(下载完…

基于java的音乐网站的设计与实现

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 基于java的音乐网站的设计与实现 摘 要 随着互联网和宽带上网的普及,网络传输以其特有的快速、高效、便捷的传输方式越来越被人们接受。在当今社会的影响下&…

android wifi传输音乐,让你通过WiFi分享手机上的歌曲,音乐共享软件MyStream十一发布Android版...

MyStream原来是 iOS上的音乐共享应用,十一期间,它将跨出iOS平台,首次推出Android版音乐共享服务。 MyStream和主流的Pandora、Spotify、Turntable.fm、Songza这些音乐分享服务并不一样。它将手机上的本地音乐通过WiFi或蓝牙和周围的设备进行音…

竞品分析:网易云音乐和QQ音乐,音乐类app的战场

文章从产品的角度分别分析两款产品的行业市场、功能、业务模式以及运营策略,进一步了解两款产品的差异与不同。 一、产品概况 1. 产品概述及版本 网易云音乐是一款专注于发现与分享的音乐产品,依托专业音乐人、DJ、好友推荐及社交功能,为用…

网易云音乐竞品分析

概述 1.原因 个人平时使用网易云较多,正好想学学竞品分析怎么写。因此,想通过梳理市场最新报告和数据表现,了解在线音乐行业的现状和市场情况;分析网易云音乐目前的市场地位、功能设计、UI设计等方面,与相关竞品进行对…

音乐平台程序源码分享

简介: 这是一个音乐分享平台源码,用户可以自行上传音乐分享,源码自适应手机,使用很方便。 安装说明: 演示环境:宝塔PHP5.5 mysql5.6 Apache 2.4.46,把程序上传到根目录,然后修改数…

分享两个音乐播放地址

下歌吧音乐下载平台 http://music.y444.cn/ 搜索时候如果没有想要的,可以切换线路搜索一下 MYFREEMP3 MYFREEMP3 一个音乐下载以及播放网站 下载后的音乐名称需要直接更改一下,可以下载歌曲的歌词等 http://tools.liumingye.cn/music/?pagesearch…

基于web的音乐分享网站的设计与实现

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 音乐分享网站的设计与实现 摘 要 随着社会的发展时代的前进,IT行业的发展也是日新月异,对人类的生产和生活方式产生了很大影响。网络传播以其特有的快…

把自己录制的mp3音乐分享到朋友圈

参考:https://www.zhihu.com/question/345647212 录了首歌,想上传至微信朋友圈,发现还没那么简单。 mp3音乐文件上传到网易云音乐后,无法使用分享功能,所以无法分享到朋友圈。 可通过以下步骤解决。 一、将mp3文件发…

#pragma comment

原因:突然看到#pragma comment,不知其意思.感觉自己是个渣渣.所以写了一篇博客. #pragma comment 简单来说就是链接了一个文件&#xff0c;它可以是compiler&#xff0c;exestr&#xff0c;lib&#xff0c;linker文件. 例如&#xff1a; #include<WinSock2.h> #pragma…

预处理 #pragma 命令详解

关注、星标公众号&#xff0c;不错过精彩内容 素材来源&#xff1a;网络 编辑整理&#xff1a;strongerHuang 预处理指令 #pragma 相信程序员都知道&#xff0c;但在所有的预处理指令中&#xff0c;#pragma 指令可能是最复杂的了&#xff0c;它的作用是设定编译器的状态或者是指…

#pragma DATA_SECTION与#pragma CODE_SECTION的使用

&#xff08;一&#xff09;#pragma DATA_SECTION 利用CCS进行DSP编程时&#xff0c;如果不指定变量的存储位置&#xff0c;那么编译器会自动给变量分配存储位置&#xff0c;但是&#xff0c;有些时候&#xff0c;需要将某个变量存放到某个特定的位置&#xff0c;这个时候就可…