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.hqwc.cn/news/411694.html

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

相关文章

1127: 矩阵乘积

题目描述 计算两个矩阵A和B的乘积。 输入 第一行三个正整数m、p和n&#xff0c;0<m,n,p<10&#xff0c;表示矩阵A是m行p列&#xff0c;矩阵B是p行n列&#xff1b; 接下来的m行是矩阵A的内容&#xff0c;每行p个整数&#xff0c;用空格隔开&#xff1b; 最后的p行是矩…

操作系统课程设计-内存管理

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 步骤 3.2 关键代码 3.2.1 显示虚拟内存的基本信息 3.2.2 遍历当前进程的虚拟内存 4 实验结果与分析 5 代码 前言 本实验为课设内容&#xff0c;博客内容为部分报告内容&#xff0c;仅为大家提供参考&#xff0c;请勿直…

#LLMOps##AIGC# Dify_构建本地知识库问答应用-生成Al应用的创新引擎 用于构建助手API和GPT的开源开发平台

github&#xff1a; https://github.com/langgenius/dify/blob/main/README_CN.md 介绍文档&#xff1a;https://docs.dify.ai/getting-started/readme Dify 介绍 Dify 笔记 Dify 是什么&#xff1f; 开源的大语言模型&#xff08;LLM&#xff09;应用开发平台融合了后端即服…

“中国最危险的女人”闪亮现身瑞士

媒体报道&#xff0c;昨&#xff08;1月17日&#xff09;天中午&#xff0c;财新CEO午餐会在瑞士达沃斯举办&#xff0c;财新传媒社长胡舒立女士在致辞&#xff0c;她的现身&#xff0c;进一步粉碎了不久前“胡舒立被国安约谈”的网传谣言。 图&#xff1a;财新传媒社长胡舒立&…

Docker部署的gitlab升级指南(15.11.X容器里升级PostgreSQL到13.8)

一、确定当前版本 #进入当前版本容器产看gitlab版本 docker exec -it gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION#显示版本如下 14.4.0二、备份数据&#xff0c;防止升级发生意外 #执行备份命令 docker exec -ti gitlab gitlab-rake gitlab:backup:creat…

【K8S 云原生】K8S的对外服务—ingress

目录 一、K8S的Service 1、Service的作用 2、Service类型&#xff1a; 二、ingress 1、ingress的组成&#xff1a; 2、ingress资源的定义项&#xff1a; 3、ingress暴露服务端的方式 3.1、DeploymentLoadBalancer模式&#xff1a; 1、工作流程图&#xff1a; 3.2、Dae…

软件工程:黑盒测试等价分类法相关知识和多实例分析

目录 一、黑盒测试和等价分类法 1. 黑盒测试 2. 等价分类法 二、黑盒测试等价分类法实例分析 1. 工厂招工年龄测试 2. 规定电话号码测试 3. 八位微机测试 4. 三角形判断测试 一、黑盒测试和等价分类法 1. 黑盒测试 黑盒测试就是根据被测试程序功能来进行测试&#xf…

软件测试工程师应该怎么样?

目录 软件测试工程师的几种职位 测试经理 测试架构师 测试经理 VS 测试架构师 测试在管理上的发展 测试在技术上的发展 角色与段位 软件测试工程师的几种职位 测试经理 一个测试经理应该对业务有一定的了解&#xff0c;以便更好地管理测试团队和负责测试项目的工作…

网络编程【1】

【 1 】什么是网络编程 网络编程是指通过计算机网络进行数据交换和通信的编程过程。它涉及到使用网络协议和通信接口&#xff0c;使不同计算机之间能够进行数据传输和通信。 总结&#xff1a; 网络编程的研究前提就是基于互联网 网络编程就是基于互联网写代码 【 2 】为什么…

【印象深刻的实战经历】两次全国大学生数学建模经历分享

目录 &#x1f33c;初次接触 初次参加培训 分享培训所得 比赛开始 &#x1f525;再次接触 参加校赛 机缘巧合 再次培训 比赛开始 &#x1f4d5;技巧总结 从问题的实际意义分析大体上可分为 从问题的解决方法上分析 做国赛题目的步骤 赛前准备 选题 寻找思路…

给科研人的 ML 开源发布工具包

什么是开源发布工具包&#xff1f; 恭喜你的论文成功发表&#xff0c;这是一个巨大的成就&#xff01;你的研究成果将为学界做出贡献。 其实除了发表论文之外&#xff0c;你还可以通过发布研究的其他部分&#xff0c;如代码、数据集、模型等&#xff0c;来增加研究的可见度和采…

LeetCode三数之和

解题思路 常规玩法&#xff1a; 用三层循环暴力的把所有可能都试一遍&#xff0c;然后再去重。 进阶玩法&#xff1a;使用指针 排序去重遍历 就这三个步骤&#xff0c;每个步骤中细节挺多。 排序与去重原因&#xff1a; -2 -1 1 1 这是排序好的数据&#xff08;先不说…