介绍

i2c-tool是一个专门调试i2c的开源工具。可获取挂载的设备及设备地址,还可以在对应的设备指定寄存器设置值或者获取值等功能,对于驱动以及应用开发者比较友好。

i2c-tool:v3.0.3

移植

#
# Copyright By Schips, All Rights Reserved
# https://gitee.com/schips/
#
# File Name: make.sh
# Created : 2020-10-17 09:38:39
#
#
#!/bin/sh BASE=`pwd`
OUTPUT_PATH=${BASE}/install/ ## 填写你的工具链名称
BUILD_HOST=arm-linux
## 必要时,填写你的工具链的所在路径
BUILD_HOST_PATH=/opt/gcc-arm-linux-gnueabi/bin export PATH=${PATH}:${BUILD_HOST_PATH} require () {
if [ -z "$1" ];then
return
fi
command -v $1 >/dev/null 2>&1 || { echo >&2 "Aborted : Require \"$1\" but not found."; exit 1; }
echo "Using: $1"
} make_dirs() {
cd ${BASE}
mkdir compressed install source -p
} tget () { #try wget
filename=`basename $1`
echo "Downloading [${filename}]..."
if [ ! -f ${filename} ];then
wget $1
fi echo "[OK] Downloaded [${filename}] "
} download_package () {
cd ${BASE}/compressed
#下载包
tget https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/i2c-tools-3.0.3.tar.xz
} tar_package () {
cd ${BASE}/compressed
ls * > /tmp/list.txt
for TAR in `cat /tmp/list.txt`
do
tar -xf $TAR -C ../source
done
rm -rf /tmp/list.txt
} make_taget () {
cd ${BASE}/source/*
mkdir -p ${OUTPUT_PATH}/i2c-tools_arm
CC=${BUILD_HOST}-gcc LD=${BUILD_HOST}-ld make
make install prefix=${OUTPUT_PATH}/i2c-tools_arm
} require ${BUILD_HOST}-gcc make_dirs
tar_package
make_taget
exit $?

拷贝install/i2c-tools_arm/sbin中的文件即可运行。

i2c_tools/sbin# ls
i2c-stub-from-dump i2cdetect i2cdump i2cget i2cse

使用

为了避免混淆,假定拷贝好的i2c-tools已经配进PATH变量中。

-y ------- 取消用户交互,直接执行
-f ------- 强制执行

列举总线数目

# i2cdetect -l

i2c-1	i2c       	Cadence I2C at e0005000         	I2C adapter
i2c-0 i2c Cadence I2C at e0004000 I2C adapter

查询i2c总线上设备及设备的地址

i2cdetect -y 0 # 例如总线 0

Error: Can't use SMBus Quick Write command on this bus

因为配置的问题,所以失败了。这里引用别人的结果:

i2cdetect -r -y 4
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- 49 -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

可看出,在i2c 总线4上有1个设备地址为0x40

读取i2c上的设备寄存器

i2cdump命令可以列出整个设备的内容。

如果无法读取,则显示XX

i2cdump -f  -y 1 0x68
# 1 代表 i2c-1 总线
# 0x68 代表 设备地址
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 28 52 23 02 02 01 00 b3 40 20 71 04 96 28 48 03 (R#???.?@ q??(H?
10: 80 00 42 c8 05 02 40 30 20 00 20 08 00 55 44 22 ?.B???@0 . ?.UD"
20: 49 a9 24 28 48 10 44 20 21 f1 2d a2 04 00 43 8c I?$(H?D !?-??.C?
30: 50 24 00 24 20 2c 14 20 01 a0 01 89 02 00 21 88 P$.$ ,? ?????.!?
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX

i2cget可以读取一个值

i2cget -f -y 1 0x68  0x3f
# 0x3f 由 0x30 上的 f 得到,对应上面dump结果的 最后一个有效值。
88 i2cget -f -y 1 0x68 0
# 同理,得到上面的第一个有效值 28
28

写入值到i2c上的设备寄存器

i2cset -y -f 0 0x50 0x00 0x11
# 0:i2c-0
# 0x50 : 设备地址
# 0x00 :寄存器偏移
# 0x11 :写入值

arm linux 移植 i2c-tools 与 简单使用的更多相关文章

  1. arm linux 移植 x265

    背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...

  2. arm linux 移植 MQTT (paho、mosquitto)

    前言 我们在这里做2件事情: 1)编译 paho.mqtt.mosquitto 2个开源项目的c版本库(mosquitto库没有用上) 2)编译好 依赖 paho.mqtt的库编写例程 + mosqu ...

  3. Linux 安装 go 以及 arm linux 移植 go

    背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...

  4. arm linux 移植 gdb/gdbserver

    背景 调试工具gdb的使用对于嵌入式Linux开发人员来说是一项不可少的技能. 目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机 ...

  5. arm linux 移植 ffmpeg 库 + x264

    背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...

  6. arm linux 移植 PHP

    背景: PHP 是世界上最好的语言. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 php :7.1.30 zlib :1.2.11 libxml ...

  7. arm linux 移植支持 HP打印机

    背景 由于业务需要,需要hi3531d主板上加入对于HP打印机的支持. 通过与产品经理,技术主管的沟通:通用支持是不现实的,只要求彩色打印,先不考虑打印机的价格,只要支持一款打印机即可. 注意: Li ...

  8. arm linux 移植 udhcp 与 使用

    背景 在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址. udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDH ...

  9. arm linux 移植 rsync

    背景: 在产品开发中可以使用rsync进行大文件的拷贝,断点续传. host平台 :Ubuntu 16.04 arm平台 : 3531d   rsync   :3.1.3 arm-gcc :4.9.4 ...

  10. arm linux 移植 jpeg

    背景: host平台 :Ubuntu 16.04 arm平台 : S5P6818 jpeg :v9c arm-gcc :4.8.1 主机准备: 运行以下脚本: ## # Copyright By Sc ...

随机推荐

  1. Jenkins 简述及其搭建

    什么是持续集成? 持续集成(CI)是在软件开发过程中自动化和集成许多团队成员的代码更改和更新的过程.在 CI 中,自动化工具在集成之前确认软件代码是有效且无错误的,这有助于检测错误并加快新版本的发布. ...

  2. 笔记06-第六讲 Cadence同一页面建立电气互连

    笔记06-第六讲 Cadence同一页面建立电气互连 内容: 90度和任意角度连线; 连线方式; 十字线添加/删除连接点; Net alias; 无连接的管脚处理; 注意事项. 连线有两种方式,右侧工 ...

  3. 自制一个发送验证码的10秒倒计时js效果

    <template>     <div class="conten1">         <input class="code"  ...

  4. 三、Prophecis 一站式云原生机器学习平台

    Prophecis 是微众银行自研大数据平台套件 WeDataSphere 的核心应用工具之一,为用户提供了全栈的机器学习应用开发与部署解决方案.作为WeDataSphere 功能工具应用系统,Pro ...

  5. 阿里DataX极简教程

    目录 简介 工作流程 核心架构 核心模块介绍 DataX调度流程 支持的数据 实践 下载 环境 执行流程 引用 简介 DataX是一个数据同步工具,可以将数据从一个地方读取出来并以极快的速度写入另外一 ...

  6. d3d12龙书阅读----绘制几何体(上) 课后习题

    d3d12龙书阅读----绘制几何体(上) 课后习题 练习1 完成相应的顶点结构体的输入-布局对象 typedef struct D3D12_INPUT_ELEMENT_DESC { 一个特定字符串 ...

  7. CSS——position定位属性

    就像photoshop中的图层功能会把一整张图片分层一个个图层一样,网页布局中的每一个元素也可以看成是一个个类似图层的层模型.层布局模型就是把网页中的每一个元素看成是一层一层的,然后通过定位属性pos ...

  8. 在kubernetes里使用AppArmor限制容器对资源的访问

    目录 一.系统环境 二.前言 三.AppArmor简介 四.AppArmor和SELinux的区别 五.使用AppArmor限制nginx程序访问目录 5.1 安装nginx 5.2 修改nginx的 ...

  9. navicat 如何调整查询区域字体大小

    Navicat是一套快速.可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本.Navicat图形界面直观,提供简便的管理方法,设计和操作MySQL.MariaDB.SQL Server. ...

  10. 8.19考试总结(NOIP模拟44)[Emotional Flutter·Medium Counting·Huge Counting·字符消除2 ]

    在自称善意的之时,即存恶意. 前言 几乎是大暑假的最后一次考试了. 我也迎来了我的第一次报零(雾 T1 Emotional Flutter 解题思路 比较考验思维能力,其实就是区间覆盖问题. 我考场上 ...