linux can软件,linux can canutils工具移植

linux can canutils工具移植

Canutils是基于GNU GPLv2许可的开源代码,包括canconfig、canecho、cansend、candump、cansequence五个工具,用于检测和监控Socket CAN接口。

下载源码:http://www.pengutronix.de/software/socket-can/download/canutils ,下载最新版本canutils 4.0.6;

因为编译canutils需要libsocketcan库支持,下载libsocketcan:http://www.pengutronix.de /software/libsocketcan/download/,下载最新版本libsocketcan 0.0.11,因为以前版本不支持交叉编译工具aarch64-linux-gnu,故下载最新版本。

libsocketcan移植

把libsocketcan-0.0.11.tar.bz2拷贝到/home/zh/tools,使用tar -xvf libsocketcan-0.0.11. tar.bz2源码,然后在tools工具目录下,建立一个目录test,用于存放目标文件。执行configure命令。(其中--host是指定交叉工具链,--prefix是指定库的生成位置)注意arm-linux-gnueabihf工具后面不要加-gcc了。

./configure --host=arm-linux-gnueabihf --prefix=/home/zh/tools/test

其配置结果如下图所示。

761e51574caf1ab17c79e582ad0b10dd.png

然后执行make,进行编译;

79ccb2ae87ea3cf43754037ac4b9af1b.png

执行make install,libsocketcan编译完成。

2aa5ca38cde61c99d0b9b9e8643fbbf0.png

查看test目录下,生成了几个目录文件,分别为include lib share文件。到此libsocketcan完成了。

427e65ef0195840635a873dd9fbc1ea7.png

canutils移植

下载源码后,输入tar -xvf canutils-4.0.6.tar.bz2解压,进入解压目录,同时也建立一个目录canutils,存放输出文件。

执行configure命令。(其中--host是指定交叉工具链,--prefix是指定库的生成位置,libsocketcan_LIBS是指定canconfig需要链接的库,LDFLAGS是指定外部库的路径,CPPFLAGS是指定外部头文件的路径)

./configure --host=arm-linux-gnueabihf --prefix=/home/zh/tools/canutils   libsocketcan_LIBS=-lsocketcan LDFLAGS=-L/home/zh/tools/test/lib libsocketcan_CFLAGS=-I/home/zh/tools/test/include  CFLAGS=-I/home/zh/tools/test/include

其配置结果如下图所示。

76cf51084dcc4d11ebacecaa22610277.png

执行make,结果如下图所示。

f7baeb80f582440c687df3db39483be9.png

执行make install,结果如下图所示。

1ae985f42dbfc520c0cb56bcc423b689.png

/home/zh/tools/canutils下生成四个目录,分别拷贝到开发板文件系统的相应目录。

sudo cp lib/* /home/zh/linux/nfs/rootfs/usr/lib/ -rfa

sudo cp bin/* /home/zh/linux/nfs/rootfs/usr/bin/ -rfa

sudo cp sbin/* /home/zh/linux/nfs/rootfs/usr/sbin/ -rfa

sudo cp share/* /home/zh/linux/nfs/rootfs/usr/share/ -rfa

iproute2移植

完成拷贝后,输入candump  canecho  cansend  cansequence 进行测试,发现还没有启动CAN,需要ip link set can0 up type can bitrate 800000之类的命令配置参数,但是ip这样配置,提示没有这命令, 发现原来内核中的ip工具并不能对can进行设置,究其原因是因为/sbin下的ip工具太老了,需要进行替换。这个相对来说比较简单,网上下一个iproute2工具编译,拷贝生成的ip工具到/sbin下替换掉原来的就可以了。需要注意的是网上下载的很多源码可能不能正常编译过,这可能是源码本身的问题,我尝试编译了几个,发现 http://www.linuxgrill.com/anonymous/iproute2/NEW-OSDL/ 连接下的iproute2- 2.6.39版本的是可以一次性编译通过的。

下载源码后,

1.修改Makefile中的CC = arm-linux-gnueabihf-gcc  (自己buildroot生成的交叉编译工具链,如果没有进行交叉编译工具链的全局配置,需要加上绝对路径)。

485e7c2b4b77afef4ce82dc823bb1e46.png

2.因为我们只需要ip工具,所以SUBDIRS = lib  ip  (源码中默认的还会生成其它工具)。

3.make最后编译成功后在进入到源码目录下的ip目录可以发现有一个生成的ip(这就是个可执行的二进制文件ip工具),将该文件拷贝到开发板的/sbin目录下替换原来的ip即可。

502ef527107acb0455b5c33b67e7dc04.png

测试ip命令,结果如下图所示:

ip link set can0 up type can bitrate 500000,设置can0波特率为800k

ip -details link show can0 查看can0详细信息,发现can0 设置为500k和预设一致

c692c38474cdb954b9faca8fcf3a01e2.png

6d71880cfdef78ebdffd0830068595da.png

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值