1).簡介
隨著嵌入式設(shè)備的發(fā)展,由于部署更靈活應(yīng)用方便等特性,原本在網(wǎng)絡(luò)應(yīng)用中廣泛使用的docker技術(shù)也慢慢在一些嵌入式設(shè)備中應(yīng)用,因此本文就基于嵌入式ARM平臺使用集成docker技術(shù)的Liinux系統(tǒng)來測試CAN通信功能。
本文所演示的平臺來自于Toradex Colibri iMX8X ARM嵌入式平臺,這是一個基于NXP iMX8X ARM處理器,支持Cortex-A35和Coretex-M4架構(gòu)的計算機模塊平臺。
2.準(zhǔn)備
a).Colibri iMX8X 2GB WB ITARM核心版配合Colibri Evaluation載板,連接調(diào)試串口UART1(載板X27)到開發(fā)主機方便調(diào)試。
b). Colibri iMX8X通過Toradex Easy Installer安裝包含Docker支持的Torizon Linux操作系統(tǒng),目前最新的monthly發(fā)布TorizonCore 5.1.0-devel-202012+build.6
c).Apalis iMX8QM4GB WB IT ARM核心版配合Ioxra載板,連接調(diào)試串口UART1(載板X22)到開發(fā)主機方便調(diào)試。
d). Apalis iMX8QM同樣通過Toradex Easy Installer安裝標(biāo)準(zhǔn)嵌入式Linux用于CAN接口測試時候?qū)?,系統(tǒng)版本為Linux Reference Multimedia 5.1.0-devel-202012
3).測試系統(tǒng)配置
a). Colibri iMX8X CAN接口對應(yīng)管腳說明如下,本文測試使用FlexCAN1接口
b).測試系統(tǒng)如下硬件連接將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系統(tǒng)默認(rèn)使能的是Colibri Evaluation Board載板上面的MCP2515 SPI CAN接口,需要通過如下device tree overlay配置修改為iMX8X的兩個FlexCAN接口
./ device tree overlay的基本說明請參考這里,編譯方法請參考這里。
./ overlay源文件請參考如下鏈接
https://gitee.com/simonqin09/colibri_imx8x_flexcan/blob/master/colibri-imx8x_enable_flexcan_overlay.dts
./將上述源文件編譯好的overlay文件(可以從這里下載)根據(jù)這里的說明部署到Colibri iMX8X上
4).部署CAN測試Docker image
a).首先參考這里的說明在開發(fā)PC上面配置Docker編譯環(huán)境
b).在開發(fā)PC創(chuàng)建如下Dockerfile用于進行CAN測試
-------------------------------
ARG IMAGE_ARCH=arm64v8
# Use the parameter below for Arm 32 bits (like iMX6 and iMX7)
# ARG IMAGE_ARCH=arm32v7
FROM torizon/$IMAGE_ARCH-debian-shell:1.0
WORKDIR /home/torizon
RUN apt-get -y update && apt-get install -y \
nano \
python3 \
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文件,當(dāng)然也可以上傳到dockerhub上面通過在線的方式在設(shè)備安裝
-------------------------------
$ docker build -t can-test-torizon .
$ docker save -o can-test-torizon.tar can-test-torizon
-------------------------------
e).將上面打包好的docker image復(fù)制到Colibri iMX8x設(shè)備上面,并安裝并運行
-------------------------------
### 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
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).繼續(xù)在docker image里面創(chuàng)建如下”can-test.sh”腳本用于間隔50ms連續(xù)發(fā)送CAN標(biāo)準(zhǔn)包
-------------------------------
#!/bin/bash
for ((i=1; i<=20; i++))
do
cansend can1 01F#1122334455667788
sleep 0.05
done
-------------------------------
c).在Apalis iMX8QM Linux下運行下面命令使能can0接口并準(zhǔn)備進行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內(nèi)執(zhí)行上面創(chuàng)建的腳本發(fā)送CAN包
-------------------------------
/home/torizon# chmod +x can-test.sh
/home/torizon# ./can-test.sh
-------------------------------
e). Apalis iMX8QM接收到對應(yīng)的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).將發(fā)送和接收互換后測試也同樣結(jié)果
-------------------------------
### Apalis iMX8QM發(fā)送
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).總結(jié)
本文使用NXP iMX8X嵌入式平臺配合嵌入式Linux和Docker平臺測試CAN通信,相比原生CAN通信,利用Docker技術(shù)可以更靈活的用包管理方式安裝所需的組件,同時在不同平臺遷移也相對更簡單,但需要注意的是在Docker環(huán)境下訪問主機外設(shè)需要對cgroup權(quán)限做正確的設(shè)置以保證可以順利加載。
審核編輯:黃飛
-
ARM
+關(guān)注
關(guān)注
134文章
9105瀏覽量
367895 -
嵌入式
+關(guān)注
關(guān)注
5086文章
19141瀏覽量
305928 -
CAN
+關(guān)注
關(guān)注
57文章
2756瀏覽量
463870 -
Linux
+關(guān)注
關(guān)注
87文章
11314瀏覽量
209773 -
Docker
+關(guān)注
關(guān)注
0文章
474瀏覽量
11867
發(fā)布評論請先 登錄
相關(guān)推薦
評論