Linux下如何快速调试I2C设备

news2025/1/19 20:22:09

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.coloradmin.cn/o/1384666.html

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

相关文章

vue2配置教程

5.12.3 Vue Cli 文档地址: https://cli.vuejs.org/zh/ IDEA 打开项目,运行项目

堆排序——高效解决TOP-K问题

. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 引言什么是堆?建堆堆排序:排序的最终结果 堆排序实现函数声明交换函数 Swap下沉调整 DnAdd堆排序函数 HeapSort主函数 文件中找…

day-09 删除排序链表中的重复元素

思路 从前往后遍历链表,当当前节点的值与下一个节点值相等时,删除下一节点;否则向后移动一个节点,继续遍历 解题方法 while(p!null&&p.next!null){ if(p.next.valp.val)p.nextp.next.next;//当前节点的值与下一个节点值相…

WorkPlus卓越的即时通讯工具,助力企业提升工作效率

在当今快节奏的商业环境中,高效沟通和协作是企业成功的关键。而即时通讯作为实现高效沟通的利器,成为了现代企业不可或缺的一部分。作为一款领先的即时通讯工具,WorkPlus以其卓越的性能和独特的功能,助力企业打造高效沟通和协作的…

Docker实战07|Docker增加容器资源限制

上一篇文章中,讲解了Docker run的具体流程以及Docker是如何改变PID为1的底层原理。 具体文章可见《Docker就应该这么学-06》 有需要的小伙伴可以回顾一下。 接下来本文会详细介绍一下Docker 是如何增加容器的资源限制 增加容器的资源限制 获取代码 git clone …

Python之循环判断语句

一、if判断语句 1. if...else if 条件: 满足条件时要做的事情1 满足条件时要做的事情2 ...... else: 不满足条件时要做的事情1 不满足条件时要做的事情2 ...... # -*- coding:utf-8 -*- age input("请输入年龄:") age int(age) if age > 18:print("已经成…

C# 导出EXCEL 和 导入

使用winfrom简单做个界面 选择导出路径 XLSX起名字 打开导出是XLSX文件 // 创建Excel应用程序对象Excel.Application excelApp new Excel.Application();excelApp.Visible false;// 创建工作簿Excel.Workbook workbook excelApp.Workbooks.Add(Type.Missing);Excel.Works…

【PlantUML】- 时序图

写在前面 本篇文章,我们来介绍一下PlantUML的时序图。这个相对类图来讲,比较简单,也不需要布局。读完文章,相信你就能实际操作了。 目录 写在前面一、基本概念二、具体步骤1.环境说明2.元素3.语法4.示例 三、参考资料写在后面系列…

DNS分离解析

一、介绍 分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。比如来自内网和外网的不同网段地址区域的客户机请求解析同一域名时,为其提供不同的解析结果,得到不同的IP地址。 DNS的分离…

基于Java SSM框架实现企业车辆管理系统项目【项目源码】

基于java的SSM框架实现企业车辆管理系统演示 JSP技术 JSP技术本身是一种脚本语言,但它的功能是十分强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了运动员的需求…

Transformer如何工作

Transformer如何工作 Transformer工作可以分为两个阶段:Inference(推理)和Training(训练) ​ ​​​ ‍ ‍

尼科彻斯定理----C语言

大家好我是Beilef许久未见了,小弟学校考试刚结束。这个过程懂的都懂。痛------ 文章目录 目录 文章目录 前言(一不好懂可以直接跳到二) 一、尼科彻斯定理是什么? 二、尼科彻斯定理解析 这是ai的回答 尼科彻斯定理(Nikomačs theor…

JS 作用域和预解析

作用域 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。 作用域分为全局作用域和局…

PHP反序列化总结4--原生类总结

原生类的简要介绍以及原生类和反序列化的关系 PHP 原生类指的是 PHP 内置的类,它们可以直接在 PHP 代码中使用且无需安装或导入任何库,相当于代码中的内置方法例如echo ,print等等可以直接调用,但是原生类就是可以就直接php中直接…

主键(设置/删除方法,复合主键),唯一键,主键和唯一键的应用差异,自增长字段(如何实现,查看上次的值),外键(引入,外键约束)

目录 主键(primary key) 介绍 作用 设置主键 建表前 建表后 复合主键 介绍 示例 删除主键 唯一键(unique) 介绍 意义 示例 建表 主键 唯一键 插入数据示例 主键和唯一键的应用差异 主键 唯一键 索引 auto_increment 介绍 示例 自动插入 手动插入 …

达梦数据实时同步软件DMHS介绍和原理

1、产品介绍 达梦数据实时同步软件(以下简称 DMHS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影…

系列六、Spring Security中的认证 授权 角色继承

一、Spring Security中的认证 & 授权 & 角色继承 1.1、概述 关于Spring Security中的授权,请参考【系列一、认证 & 授权】,这里不再赘述。 1.2、资源类 /*** Author : 一叶浮萍归大海* Date: 2024/1/11 20:58* Description: 测试资源*/ Re…

案例120:基于微信小程序的校友林设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

蓝桥杯省赛无忧 STL 课件18 总结

3226 宝藏排序 II 1624 小蓝吃糖果 2490 小蓝的括号串1 1531快递分拣

ubuntu 2022.04 安装vcs2018和verdi2018

主要参考网站朋友们的作业。 安装时参考: ubuntu18.04安装vcs、verdi2018_ubuntu安装vcs-CSDN博客https://blog.csdn.net/qq_24287711/article/details/130017583 编译时参考: 【ASIC】VCS报Error-[VCS_COM_UNE] Cannot find VCS compiler解决方法_e…