Linux canutils工具移植

Linux canutils工具移植

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

二、源码下载
我们主要是通过编译canutils源码包生成can相关的工具,但由于编译canutils需要libsocketcan库支持,所以还需要下载libsocketcan的源码。此外,我们还会用到ip命令来配置can,因而还需要交叉编译一个iproute2的源码包(busybox中自带的ip命令不一定是可用的)。

三、编译脚本
由于交叉编译can工具会涉及到三个库,需要输入各种参数,为了简化编译过程,编写了一个通用编译脚本install.sh,只需修改特定参数,即可完成工具的移植。
脚本内容如下所示:

#bin/bash
CROSS_COMPILER=mips64el-linux-gcc
CROSS_COMPILER_AR=mips64el-linux-ar
CROSS_COMPILER_HOST=mips64el-linux
PWD_PATH=/home/tool/can/can-tools
case $1 in
	"lib")
		#<<libsocketcan-0.0.10>>
		cd ./libsocketcan-0.0.10
		mkdir _install
		./configure CC=$CROSS_COMPILER  --prefix=$PWD_PATH/libsocketcan-0.0.10/_install/ --host=$CROSS_COMPILER_HOST
		make install
		;;
	"utils")
		#<<canutils-4.0.6>>
		cd ./canutils-4.0.6
		mkdir _install
		./configure --host=$CROSS_COMPILER_HOST --prefix=$PWD_PATH/canutils-4.0.6/_install/ --enable-debug libsocketcan_LIBS="-L$PWD_PATH/libsocketcan-0.0.10/_install/lib -lsocketcan" libsocketcan_CFLAGS="-I$PWD_PATH/libsocketcan-0.0.10/_install/include"
		make INCLUDES=-I$PWD_PATH/libsocketcan-0.0.10/_install/include
		make install
		;;
	"ip")
		#<<iproute2>>
		cd ./iproute2
		make CC=$CROSS_COMPILER AR=$CROSS_COMPILER_AR
		;;
	*)
		exit
		;;
esac

如果想要编译自己的源码,主要根据实际情况修改脚本开始的4个参数,以及对应源码的版本名称即可。博主只是进行了gsc3280和2K1000的移植,在mips64el-linux-下可以直接编译成功,如果使用mipsel-linux-编译,需要做如下修改:

<<<modified 1!>>>
vim src/candump.c +190
        if (optdaemon)
                //daemon(1, 0);
           {
                int ret = 0;
                ret = daemon(1, 0);
            }
<<<modified 2 !>>>
vim src/canecho.c +163
                //write(s[out], &frame, sizeof(frame));
                int ret;
                ret = write(s[out], &frame, sizeof(frame));

四、交叉编译
如将下载完成的源码解压开,脚本位置与各个源码间的关系如下图所示:
脚本与源码位置关系图
1、libsocketcan移植
./install.sh lib
2、cantuils移植
./install.sh utils
3、iproute2移植
./install.sh ip

五、移植命令
脚本命令成功执行后,会在canutils-4.0.6/_install/下生成can工具命令,将其拷贝到目标板上即可。ip命令会在iproute2/ip/目录下生成,同样拷贝到目标板即可。
生成命令位置
六、测试命令
ip link set can0 type can bitrate 250000
-设置CAN波特率125kbps 方法一;
ip link set can0 type can tq 1332 prop-seg 0 phase-seg1 1 phase-seg2 1 sjw 1
-设置CAN波特率125kbps 方法二;(参见GSC3280 CAN波特率计算)
ip link set can0 type can bitrate 1000000 triple-sampling on
-设置CAN波特率125kbps,且三倍采样
ip link set can0 up
-打开CAN连接
ip -d -s link show can0
-显示CAN连接状态
cansend can0 -i 0x01 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88
-发送标准数据帧
cansend can0 -i 0x800 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 -e
-发送扩展数据帧
cansend can0 -i 0x01 -r
-发送标准远程帧
cansend can0 -i 0x800 -e -r
-发送扩展远程帧
cansend can0 -i 0xFFFF 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 -e --loop=20
-循环发送20次
candump can0
-显示接收的CAN帧
candump can0 -d
-显示接收的CAN帧(设为守护进程)
candump can0 -o dump-f
-将接收的CAN帧存储到名为dumo-f的文件中

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值