交叉编译_交叉编译i2ctools

本文介绍了如何在不支持apt-get的系统中进行i2c-tools的交叉编译,包括下载源码、解压、编译及安装过程,并提到了修改Makefile以指定编译器的方法,以及为何直接修改可能导致错误的原因。
摘要由CSDN通过智能技术生成
eb1b53448db3f5d097a8f7fc332e7bec.png

星星之火,铸就强芯梦

大家2020年国庆节快乐鸭32638bc7c00a6479449aaeb76618563e.png32638bc7c00a6479449aaeb76618563e.png32638bc7c00a6479449aaeb76618563e.png

有些时候我们新板子刚焊出来,想通过控制台快速测试i2c的功能或者i2c上的某一个器件.

需要使用i2c-tools了,i2c-tools是一个非常好用的命令,他可以通过命令行快速的操作i2c总线上的设备:

  • 从器件地址为reg的设备读取寄存器地址为addr的值;

  • 往器件地址为reg的设备的寄存器地址addr处写入值value;

  • 探测某个i2c总线上有哪些设备;

  • ......

i2c-tools主要有几个命令:

i2cdetect用来探测I2C bus和上面所有的裝置
i2cdump查看i2c器件上所有寄存器的值
i2cget 读取i2c器件上的寄存器值
i2cset ‍‍设置i2c器件上寄存器的值

i2ctransfer

这个命令可以发送自定义的包,可以发也可以收,可以替代i2cget/i2cset命令,而且当寄存器地址是16位时必须用i2ctransfer

我们这次的目的就是使用i2c-tools源码获取这几个命令.

    方法1: apt-get

假如你的系统是Ubuntu文件系统,例如友善的rk3399支持lubuntu或者friendly-desktop,friendly-core可以apt-get的文件系统.

这种就省事很多了,直接:

sudo apt-get install i2c-tools

然后它自动帮你安装好,你就可以直接使用了.

    方法2: 自己编译

有些时候自己的文件系统不支持apt-get,那么需要自己交叉编译了:

<1> 拿到i2c-tools源码包:

下载地址:

https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/

假如你无法访问,你也可以从我公众号回复"i2c"获取下载链接.

<2> 放到虚拟机中,解压

tar -xf i2c-tools-4.1.tar.xzcd i2c-tools-4.1/

<3> 编译并安装

#指定CC,AR,STRIP编译器make CC=arm-linux-gcc AR=arm-linux-ar STRIP=arm-linux-strip#DESTDIR是指定安装到哪个路径,你不指定话就安装到/usr/local,然后你就炸了make DESTDIR=myi2c install

如图,安装后的效果:

dca32093c8c06d1a8d297c6809d1125d.png

里边的文件夹(还保留着原始/usr的路径):

8da360788dd2879b92b8e1517aae3852.png

<4> 把编译产物打个包,传到板子上

cd myi2c/tar -cf myi2c.tar usr/

放到板子上解压到根目录,因为之前带有路径了,它会根据路径自动合并到/usr/local对应的目录下:

tar -xf myi2c.tar -C /

然后就可以愉快的使用命令了:

d97ca40280425bda544b71d9549fc5f5.png

后记

有些同学说: 能不能修改Makefile来改编译器?然后直接make就行了,就不用加CC=arm-linux-gcc...参数了.

答案是可以的,来看一个同学的修改方法:

cd970a3e846a3393610b391e066869c6.png

这样做的后果就是编译出来的东东传到板子上用不了.结果用file命令查看到编译出来的命令是X86-64架构的.

为什么呢?这和Makefile的与法有关:

BUF1 = 100BUF2 ?= 100;

这两种的区别在于,BUF1赋值会覆盖掉旧的值,BUF2不会覆盖旧值(假如BUF2事先存在);

?=这种赋值方式的意思是,当变量事先不存在,则新值会被写入其中.

例如:

BUF1 = 100;BUF1 ?= 200;BUF3 ?= 300;

结果是BUF1=100,BUF3=300;

之前为什么像那样修改编译器会出错呢,因为系统默认存在了一个CC变量,值为gcc,所以你懂的.

☆ END ☆

关注梅老师

学习嵌入式

梅老师

3303b6c10f89d7c9bf5505666fe5f5d3.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值