Linux下如何快速调试I2C设备

Linux下如何快速调试I2C设备


目录

1 什么场景下需要快速调试I2C设备
2 如何快速调试I2C设备
3 如何获取I2C Tools工具集
  3.1 获取I2C Tools工具集源码
  3.2 编译I2C Tools工具集源码
  3.3 为设备添加I2C Tools工具集
4 如何使用I2C Tools工具集
5 小结


1 什么场景下需要快速调试I2C设备

在日常的Linux设备开发过程中,软件工程师经常会收到硬件工程师新设计、打样出来的主板,这时候为了快速的验证板子的I2C通信是否正常、I2C设备是否正常;常规的先写I2C设备驱动,再写应用逻辑的时间周期相对较长,并不适合做快速验证。

    有的时候软件工程师在开发I2C设备驱动的时候,遇到一些异常情况,需要快速验证是否为自己编写的代码有问题,这种时候也需要有一种快速验证的方式。


2 如何快速调试I2C设备

在Linux下,我们常用I2C Tools工具集进行I2C设备的快速验证。

    I2C Tools工具集包含:i2cdetect(用于探测总线,查找连接设备)、i2cget(用于从指定设备的指定寄存读取数据)、i2cset(用于向指定设备的指定寄存写入数据)、i2cdump(用于以十六进制显示指定设备的数据)等。
    用I2C Tools工具集快速验证连接进系统的I2C设备是一种便捷、高效的方式。


3 如何获取I2C Tools工具集

3.1 获取I2C Tools工具集源码

    获取I2C Tools工具集的方式很简单,可以直接使用git工具从Kernel.org的仓库获取对应的源码:

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

在这里插入图片描述
在这里插入图片描述

3.2 编译I2C Tools工具集源码

    Linux下编译I2C Tools工具集源码,看我们的开发环境,可以本机编译也可以交叉编译。
    在编译前我们需要关注一下源码中的Makefile文件,重点在于配置对应的工具链。
    配置完工具链后,就可以直接执行make命令进行编译,斌编译完就能够在tools路径下看到相关工具的可执行文件了。

在这里插入图片描述

3.3 为设备添加I2C Tools工具集

    编译完成后,将tools目录下我们需要使用的工具的可执行文件:i2cdetect、i2cget、i2cset、i2cdump、i2ctransfer复制到目标板的文件系统中(具体的目标路径为:/usr/sbin/ )。
    将lib目录下的libi2c.so.0.1.1文件复制到目标板文件系统中(具体的目标路径为:/usr/lib/libi2c.so.0),这里偷个懒,直接用目标库替换对应的链接。
    传输方式,目前比较方便快捷的是直接使用abd进行push(如果报Read-only file sysytem错误,需要重新怪哉一下,解锁下权限)。
    将可执行文件添加进对应的路径后,因为是外部传入的文件,通常还需要用chmod命令重新修改下可执行权限。


4 如何使用I2C Tools工具集

1、i2cdetect 是用于探测、扫描IC2总线上的设备的。执行后,它会输出一个列表,表中会包含指定总线上探测到的设备的列表。

        该命令的常用格式为:

i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]
i2cdetect -F I2CBUS
i2cdetect -l

        2、i2cget 是用于获取某个I2C设备的某个寄存器的值的。执行后,它会输出目标寄存的值。

        该命令的常用格式为:

i2get [-f] [-y] [-a] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]

        3、i2cdump 是用于查看某个I2C设备的所有寄存器的值的。执行后,它会以十六进制的方式输出所有寄存器的值。

        该命令的常用格式为:

i2dump [-f] [-y] [-r first-last] [-a] I2CBUS [MODE [BANK [BANKREG]]]

        4、i2set 是用于给某个I2C设备的某个寄存器赋值的。执行后,它会将目标值设置进对应寄存器。

        该命令的常用格式为:

i2set [-f] [-y] [-m MARSK] [-r] [-a] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]

        5、i2transfer 是用于给某个I2C设备发送用户定义的一条I2C消息。执行后,它会将用户的消息封装成一次传输。对于读取消息,接收缓冲区的内容会按每个读消息一行,输出到stdout中。

        该命令的常用格式为:

i2transfer [-f] [-y] [-v] [-V] [-a] I2CBUS DESC [DATA] [DESC [DATA]] ...

5 小结

整体而言,I2C Tools 工具集是一个Linux下方便好用的快速调试I2C设备的工具集,能够加速软件开发和项目的整体进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强化app广告变现用户隐私合规,移动广告变现合规技巧

移动广告技术的发展帮助开发者极大提升了广告变现效率,APP作为用户个人信息处理的重要载体,自从《个人信息保护法》颁布以来,个人信息的使用已经成为监管重点,开发者强化合规意识,让广告变现业务“细水长流”&#xff…

Ansible Filter滤波器的使用

一、【说在前面】 Ansible Filter一般被称为滤波器或者叫过滤器。 这个东西初次听到以为是什么科学计算的东西,但是想来ansible不太可能有什么滤波操作,所以这个东西本质是一个数值筛选器,内置函数,本质是一个为了做区别化的工具…

AcrelEMS-CB商业建筑能源管理系统解决方案-安科瑞 蒋静

1概述 AcrelEMS-CB商业建筑能源管理系统,集电力监控、电能质量监测与治理、电气安全预警、能耗分析、照明控制、新能源使用、能源收费以及设备运维等功能于一体,通过一套系统对商业建筑的能源进行统一监控、统一运维和调度,系统可以通过WEB和…

【极光系列】springBoot集成Hibernate

【极光系列】springboot集成hibernate gitee地址 直接下载可用 https://gitee.com/shawsongyue/aurora.git 模块:aurora_hibernate mysql安装教程 参考我另外一篇文章,直接下载安装 https://blog.csdn.net/weixin_40736233/article/details/1355829…

FPGA 原理图细节--画引脚

BGA引脚表示 1.1 FPGA此引脚要正确和清晰,会在“Package Pin”中用到次物理接口 1.2, MCU 只用管对应的GPIO逻辑接口就可以了 标识Bank电平 标识出对应Bank的电平,在电路设计中可以清晰的知道对应的脚位输出电平。在"IO std"也方便的选择 Ea…

常见的限流算法

本文已收录至我的个人网站:程序员波特,主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。 天下武学出同源 正所谓天下武学殊途同归&#xff…

N5181A/安捷伦Agilent N5181A信号发生器

181/2461/8938产品概述: 规格(说明书):表示已校准的仪器在工作温度范围0-55C内存放至少2小时,除非另有说明,并经过45分钟预热期后的保证性能。的指标包括测量不确定度。除非另有说明,本文档中的…

【Python数据可视化】matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

全自动洗衣机什么牌子好?内衣洗衣机便宜好用的牌子推荐

随着内衣洗衣机的流行,很多小伙伴在纠结该不该入手一款内衣洗衣机,专门来洗一些贴身衣物,答案是非常有必要的,因为我们现在市面上的大型洗衣机只能做清洁,无法对我们的贴身衣物进行一个高度除菌,而小小的内…

基于python的深度神经网络原理与实践

理论基础 什么是神经网络 我们知道深度学习是机器学习的一个分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。而深度神经网络又是深度学习的一个分支,它在 wikipedia 上的解释如下: 深度神经网络(Deep N…

Vue中keep-alive缓存的详解(深度理解)

文章目录 一、Keep-alive 是什么二、使用场景三、原理分析四、思考题:缓存后如何获取数据beforeRouteEnteractived 参考文献 一、Keep-alive 是什么 keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM ke…

四搭建dockerhub私有仓库

搭建dockerhub私有仓库 很多场景下,我们需使用私有仓库管理Docker镜像。相比Docker Hub,私有仓库有以下优势: 节省带宽,对于私有仓库中已有的镜像,无需从Docker Hub下载,只需从私有仓库中下载即可&#x…

MySQL篇—通过Clone插件进行远程克隆数据(第三篇,总共三篇)

在介绍 Clone 最终篇之前,我们先简要回顾一下前面所讲的内容。在第一篇中,我们探讨了 Clone 的用途、使用的前提条件、存在的限制,以及它的备份原理。Clone 是一种用于复制和备份数据的工具,它能够快速高效地创建数据的精确副本。…

Spark原理——逻辑执行图

逻辑执行图 明确逻辑计划的边界 在 Action 调用之前,会生成一系列的RDD,这些RDD之间的关系,其实就是整个逻辑计划 val conf new SparkConf().setMaster("local[6]").setAppName("wordCount_source") val sc new SparkContext(conf)v…

JVM篇--Java内存区域高频面试题

java内存区域 1 Java 堆空间及 GC? 首先我们要知道java堆空间的产生过程: 即当通过java命令启动java进程的时候,就会为它分配内存,而分配内存的一部分就会用于创建堆空间,而当程序中创建对象的时候 就会从堆空间来分…

2024--Django平台开发-Redis集群(十一)

内容回顾 主从复制。 哨兵:实例启动了,哨兵节点没启动,Python通过redis-py连接报错。一定要确保实例节点和哨兵节点都启动了。 搭建集群用的是虚拟机的多台centos服务器,你在跟着学习的时候,一定要全部都是虚拟机&am…

5.矩阵分析

矩阵分析 文章目录 矩阵分析一、方阵范数1.1 矩阵范数1.2 与矩阵乘积相容的矩阵范数【定义】自相容范数 / 方阵范数 1.3 与向量范数相容的矩阵范数【定义】矩阵范数与向量范数相容【定理】任意自相容范数必存在与它相容的向量范数 二、算子范数2.1 方阵的算子范数【定理】由向量…

PVE虚拟机安装qemu guest agent

pve虚拟机安装guest agent,使web平台可以直接显示虚拟机的ip,方便管理。 一、虚拟机需开启Qemu代理 首先,虚拟机需开启Qemu代理,需要关闭虚拟机再启动虚拟机并安装agent。网上有些文章说要把网卡配置为virtio,经测试是…

可协作植物管理工具HortusFox

什么是 HortusFox ? HortusFox 是一个自托管的协作植物管理系统,您可以在自己的环境中使用它来管理所有的植物。您可以添加植物,并附带各种详细信息和照片,并将它们分配到环境中的位置。系统提供了一个仪表板,显示所有…

小程序系列--6.全局配置

一. 全局配置文件及常用的配置项 二、window 1. 小程序窗口的组成部分 2. 了解 window 节点常用的配置项 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 8. 设置下拉刷新时 loading 的样…