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设备
有的时候软件工程师在开发I2C设备驱动的时候,遇到一些异常情况,需要快速验证是否为自己编写的代码有问题,这种时候也需要有一种快速验证的方式。
2 如何快速调试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工具集
该命令的常用格式为:
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]] ...