首页 > 编程知识 正文

AM3354的CAN通信实验,docker教程

时间:2023-05-06 09:10:08 阅读:21537 作者:2940

By Toradex秦海

http://www.Sina.com/http://www.Sina.com /

随着嵌入式应用的发展,由于部署更加灵活、应用方便等特性,原本在网络APP应用中广泛使用的docker技术也在一些嵌入式应用中逐渐得到应用,因此本文基于嵌入式ARM平台对docker技术

本演示的平台由Toradex Colibri iMX8X ARM嵌入式平台提供。 Toradex Colibri iMX8X ARM是基于NXP iMX8X ARM处理器并支持Cortex-A35和Coretex-M4体系结构的计算机模块平台。

http://www.Sina.com/http://www.Sina.com /

a ).Colibri iMX8X 2GB WB ITARM核心版与Colibri Evaluation承载板配合使用,方便将调试串行UART1(承载板X27 )连接到开发主机进行调试。

b ).Colibri iMX8X通过Toradex Easy Installer安装了包括Docker支持在内的Torizon Linux操作系统,当前最新的monthly是torizoncore5.1.0- -

c ).Apalis iMX8QM4GB WB IT ARM核心版与Ioxra承载板配合使用,便于将调试串行UART1(承载板X22 )连接到开发主机进行调试。

d ).Apalis iMX8QM也同样通过Toradex Easy Installer安装标准嵌入式Linux,用于CAN接口测试时的坞站。 系统版本为linuxreferencemultimedia5.1.0- devel-202012

http://www.Sina.com/http://www.Sina.com /

a ).Colibri iMX8X CAN接口管脚说明如下。 本文测试和使用FlexCAN1接口

b )测试系统通过以下硬件连接连接Colibri iMX8X CAN1和Apalis iMX8QM CAN0接口

断开./Colibri Eva Board JP4和JP5跳线,将X9连接器SODIMM_55和SODIMM_63针脚分别连接到X38连接器TX和RX插座。

./Colibri Eva Board X2 Top DB9引脚2和7通过两端配置120Ohm端接电阻的连接和Ixora承载板X20引脚1和2连接。

c ).Colibri iMX8X TorizonCore linux系统上默认启用的是Colibri Evaluation Board承载板上方的MCP2515 SPI CAN接口,其中包括

. /设备树概述的基本说明见此处,编译方法见此处。

./overlay源文件请参考以下链接

3359 gitee.com/Simon Qin 09/colibri _ imx8x _ flex can/blob/master/colibri-imx8x _ enable _ flex can _ overlay

. /编译了上述源文件的overlay文件(可以从这里下载) (按照此处的说明部署到Colibri iMX8X ) ) ) ) ) ) ) ) )。

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /

a ) .首先参考这里的说明在开发PC上配置Docker编译环境

b ) .在开发PC上为CAN测试创建以下文档文件

-------------请参阅

ARG IMAGE_ARCH=arm64v8

# usetheparameterbelowforarm 32位(like imx6and imx7)。

# ARG IMAGE_ARCH=arm32v7

fromto rizon/$ image _ arch-debian-shell :1.0

WORKDIR /home/torizon

runapt-get-yupdateapt-get install-y

nano () )。

python3

python3-pip

python3-setuptools

git

iproute2

>    can-utils

    net-tools

    vim

    python3-can

&& apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*

-------------------------------

 

c). 如下编译并打包成离线Docker image文件,当然也可以上传到dockerhub上面通过在线的方式在设备安装

-------------------------------

$ docker build -t can-test-torizon .

$ docker save -o can-test-torizon.tar can-test-torizon

-------------------------------

 

e). 将上面打包好的docker image复制到Colibri iMX8x设备上面,并安装并运行

-------------------------------

### load docker image

$ docker load -i can-test-torizon.tar

### check docker image

$ docker images

REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE

can-test-torizon     latest              3f1a2122de1c        10 minutes ago      236MB

### run docker image

$ docker run -it --rm --name=can-test-torizon --net=host --cap-add="NET_ADMIN" -v /dev:/dev -v /tmp:/tmp -v /run/udev/:/run/udev/ can-test-torizon

-------------------------------

 

 

5). CAN通讯测试

a). 在上述Colibri iMX8x启动的docker image里面使能can1接口

-------------------------------

### set can1 interface up

/home/torizon# ip link set can1 type can bitrate 1000000

/home/torizon# ip link set can1 up

### check can1 interface

/home/torizon# ifconfig can1

can1: flags=193<UP,RUNNING,NOARP>  mtu 16

        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        device interrupt 69 

-------------------------------

 

b). 继续在docker image里面创建如下”can-test.sh”脚本用于间隔50ms连续发送CAN标准包

-------------------------------

#!/dydqyg/bash

 

for ((i=1; i<=20; i++))

do

cansend can1 01F#1122334455667788

sleep 0.05

done

-------------------------------

 

c). 在Apalis iMX8QM Linux下运行下面命令使能can0接口并准备进行CAN包接收

-------------------------------

root@apalis-imx8:~# ip link set can0 type can bitrate 1000000

root@apalis-imx8:~# ip link set can0 up

root@apalis-imx8:~# candump can0

-------------------------------

 

d). 在colibri imx8x docker内执行上面创建的脚本发送CAN包

-------------------------------

/home/torizon# chmod +x can-test.sh

/home/torizon# ./can-test.sh

-------------------------------

 

e). Apalis iMX8QM接收到对应的CAN包

-------------------------------

root@apalis-imx8:~# candump can0

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

  can0  01F   [8]  11 22 33 44 55 66 77 88

-------------------------------

 

f). 将发送和接收互换后测试也同样结果

-------------------------------

### Apalis iMX8QM 发送

root@apalis-imx8:~# ./can-test.sh

### Colibri iMX8x接收

/home/torizon# candump can1

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

  can1  01F   [8]  11 22 33 44 55 66 77 88

-------------------------------

 

 

6). 总结

本文使用NXP iMX8X嵌入式平台配合嵌入式Linux 和Docker平台测试CAN通信,相比原生CAN通信,利用Docker技术可以更灵活的用包管理方式安装所需的组件,同时在不同平台迁移也相对更简单,但需要注意的是在Docker环境下访问主机外设需要对cgroup权限做正确的设置以保证可以顺利加载。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。