Linux下如何快速调试I2C设备

27 篇文章 0 订阅
23 篇文章 5 订阅

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设备的工具集,能够加速软件开发和项目的整体进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值