随着通信技术的进步和总线技术的广泛应用,对总线带宽和传输速率提出了更高的要求。MD9360-T核心板提供四路CANFD,让你的数据传输更快速、更可靠。
为了测试MD9360-EV-Board的四路CANFD同时收发的性能,将CANFD0和CANFD1对接、CANFD2和CANFD3对接,然后同时进行收发测试(CANFD0向CANFD1发送数据的同时,CANFD1也向CANFD0发送数据。CANFD2和CANFD3也是如此),先使用启动脚本(如程序清单 1所示)启动四路CANFD。
程序清单 1 启动脚本can_init.sh
!/bin/bash
ip link set can0 down
ip link set can1 down
ip link set can2 down
ip link set can3 down
ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
ip link set can1 type can bitrate 1000000 dbitrate 5000000 fd on
ip link set can2 type can bitrate 1000000 dbitrate 5000000 fd on
ip link set can3 type can bitrate 1000000 dbitrate 5000000 fd on
ip link set can0 up
ip link set can1 up
ip link set can2 up
ip link set can3 up
然后,使用测试脚本can_send.sh(如程序清单 2所示)进行测试。
程序清单 2 测试脚本can_send.sh
!/bin/bash
FRAMES=204800
echo ${FRAMES} > /sys/class/net/can0/tx_queue_len
echo ${FRAMES} > /sys/class/net/can1/tx_queue_len
echo ${FRAMES} > /sys/class/net/can2/tx_queue_len
echo ${FRAMES} > /sys/class/net/can3/tx_queue_len
sleep 1
candump can0 -n ${FRAMES} -t d > /dev/null &
candump can1 -n ${FRAMES} -t d > /dev/null &
candump can2 -n ${FRAMES} -t d > /dev/null &
candump can3 -n ${FRAMES} -t d > /dev/null &
sleep 1
timestamp_old=$(date +%s)
cangen can0 -g 0 -f -L 64 -b -n ${FRAMES} &
cangen can1 -g 0 -f -L 64 -b -n ${FRAMES} &
cangen can2 -g 0 -f -L 64 -b -n ${FRAMES} &
cangen can3 -g 0 -f -L 64 -b -n ${FRAMES} &
while true
do
if [[ `ps -ef | grep cangen | grep -v grep | wc -l` = 0 ]] ; then
sleep 1
if [[ `ps -ef | grep candump | grep -v grep | wc -l` = 0 ]] ; then
echo "测试结束,正常无丢帧。"
timestamp_new=$(date +%s)
tmp=$((timestamp_new - timestamp_old))
speed=$((FRAMES / tmp))
echo "四路canfd同时双向发送、接收64字节定长随机数据帧,速率为: ${speed} frame/s"
break
fi
echo "测试结束,异常有丢帧!"
break
fi
sleep 1
done
测试结果如图 3所示。
以上结果3303 frame/s,是四路CANFD同时双向收发64字节数据帧时的速率,如果是单向收发速率将达到5000 frame/s以上,本文只讨论双向收发的情况。
MD9360核心板
* 长按识别,复制链接至淘宝app打开。如有问题或想加入技术交流群可以咨询小致微信:zlgmcu-888。
ZLG官方旗舰店
广州致远电子
官方企业店
ZLG旗舰店
ZLG京东自营
旗舰店
更多往期文章,请点击“ 阅读原文 ”。