swiftman 发表于 2025-3-7 14:47:20

米尔基于STM32MP25x核心板Debian系统发布,赋能工业设备

本帖最后由 swiftman 于 2025-3-7 16:44 编辑

一、系统概述MYD-LD25X搭载的Debian系统包含以太网、WIFI/BT、USB、RS485、RS232、CAN、AUDIO、HDMI显示和摄像头等功能,同时也集成了XFCE轻量化桌面、VNC远程操控、SWITCH网络交换和TSN时间敏感网络功能,为工业设备赋予“超强算力+实时响应+极简运维”的体验!https://srcc.myir.cn/images/20250306/18cdc839263d5ce31c96eeab2d51faaa.png?v=513505
类别名称描述
源码TF-AArm Trusted Firmware 2.8
OP-TEEOP-TEE 3.19
BootloaderU-boot 2022.10
KernelLinux Kernel 6.1.82
文件系统myir-image-debianDebian12文件系统
工具烧录工具STM32CubeProgrammer
文档MYD-LD25X_Debian系统开发指南包含源码编译,烧录等
注:目前Debian系统只适配了高配置开发板型号:MYD-LD257-8E2D-150-I
https://srcc.myir.cn/images/20250306/ccd26c303ed7710aa7643b8df2273ef7.png?v=666642
图:MYC-LD25X核心板及开发板
二、亮点功能介绍1、Xfce桌面Xfce是一款轻量级的开源桌面环境,旨在提供高效、稳定和易于使用的桌面体验。轻量级:Xfce以资源效率为目标,注重在低资源消耗下提供快速响应和流畅的用户体验。它适用于各种硬件配置,包括旧式计算机和嵌入式设备。简洁和直观:Xfce遵循简洁和直观的设计原则,提供了直观易用的用户界面,使用户能够快速上手和自定义桌面环境。模块化:Xfce采用模块化的设计,桌面环境由多个独立的组件(如面板、窗口管理器、文件管理器等)组成,用户可以根据自己的需求进行定制和配置。1.1.启动Xfcemyir-image-debian系统默认已经包含xfce显示界面,开发板启动进入系统后,接上屏幕会显示如下界面,说明成功启动Xfce,需输入设置的账户进入系统界面。https://srcc.myir.cn/images/20250306/af0327ee856bf37ce6e13db47c83f974.png?v=200509
图1.1 xfce显示界面
2、VNC远程控制2.1. vnc简介VNC(Virtual Network Computing,虚拟网络计算)是一种远程桌面控制技术,允许用户通过互联网或局域网远程访问和控制另一台计算机的桌面环境。系统默认安装了TigerVNC。以下是其核心特点和应用:
[*]协议基础:基于RFB协议(Remote Framebuffer Protocol),通过传输屏幕图像的更新部分和用户输入指令实现交互。
[*]客户端-服务端架构:

服务端:运行在MYD-LD25X上,负责分享屏幕并接收客户端指令。客户端:用户通过客户端连接到服务端,查看并操作远程桌面。
[*]网络传输:默认使用TCP端口5900+N(N为显示器编号,如:1对应5901)。



2.2. 启动VNC服务Debian系统默认上电就开启VNC服务端,使用下面命令查看vnc服务:<font face="微软雅黑">root@myd-ld25x:~# ps -ef | grep vnc
root      2348       10 15:14 ?      00:00:00 /usr/bin/perl /usr/bin/vncserver -geometry 1280x720 -depth 24 -localhost no :1
root      2349    23480 15:14 ?      00:00:01 /usr/bin/Xtigervnc :1 -localhost=0 -desktop myd-ld25x:1 (root) -rfbport 5901 -PasswordFile /tmp/tigervnc.QQW419/passwd -SecurityTypes VncAuth,TLSVnc -auth /root/.Xauthority -geometry 1280x720 -depth 24
root      2350    23480 15:14 ?      00:00:00 /bin/sh /etc/X11/Xtigervnc-session
root      2356    23500 15:14 ?      00:00:00 tigervncconfig -iconic
root      4836    34800 16:48 ttySTM000:00:00 grep vnc</font>
2.3 客户端连接测试
[*]下载客户端

Windows下载并安装客户端软件(如RealVNC Viewer),如下图所示:https://srcc.myir.cn/images/20250306/c6a8c216beb8b93e852b2333b96c15cc.png?v=961791
图2.1 客户端VNC界面

[*]获取连接信息
通过myd-ld25x开发板获取目标设备的IP地址或主机名(如192.168.40.198或myd-ld25x):<font face="微软雅黑">root@myd-ld25x:~# cat /etc/hosts
127.0.0.1 myd-ld25x
root@myd-ld25x:~# ifconfig
end1: flags=4099<UP,BROADCAST,MULTICAST>mtu 1500
      ether 38:d5:47:00:29:62txqueuelen 1000(Ethernet)
      RX packets 0bytes 0 (0.0 B)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 0bytes 0 (0.0 B)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0
      device interrupt 65base 0xc000

end2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
      inet 192.168.40.198netmask 255.255.255.0broadcast 192.168.40.255
      inet6 fe80::bd6:742b:ef7e:ee6fprefixlen 64scopeid 0x20<link>
      ether 5e:08:0d:0e:83:b6txqueuelen 1000(Ethernet)
      RX packets 12454bytes 2524533 (2.4 MiB)
      RX errors 0dropped 129overruns 0frame 0
      TX packets 476bytes 41087 (40.1 KiB)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0
      device interrupt 68base 0x8000</font>
通过VNC服务器的log,获取端口/显示编号,如:1(对应端口5901)或直接指定端口号5901:<font face="微软雅黑">root@myd-ld25x:~# cat .vnc/myd-ld25x:1.log
Xvnc TigerVNC 1.12.0 - built 2023-01-06 16:01
Copyright (C) 1999-2021 TigerVNC Team and many others (see README.rst)
See https://www.tigervnc.org for information on TigerVNC.
Underlying X server release 12101006, X.Org


Mon Mar3 18:02:44 2025
vncext:      VNC extension running!
vncext:      Listening for VNC connections on all interface(s), port 5901
vncext:      created VNC server for screen 0
3NI3X0 New Xtigervnc server 'myd-ld25x:1 (root)' on port 5901 for display :1.
3NI3X0 Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /tmp/tigervnc.otB4Rd/passwd myd-ld25x:1 to connect to the VNC server.
mieq: warning: overriding existing handler (nil) with 0xaaaae7efad10 for event 2
mieq: warning: overriding existing handler (nil) with 0xaaaae7efad10 for event 3
..................................................</font>

[*]输入连接地址

依次点击VNC客户端界面“File->New connection”输入服务器和主机名,格式如下:格式:目标地址:显示编号或 目标地址::端口号示例1(主机名+显示编号):myd-ld25x:1示例2(IP+端口):192.168.40.198:5901
以主机名为例子,配置完成后,点击”OK”按钮,如下图所示:https://srcc.myir.cn/images/20250306/de68a7162cff8de61239b9f61ee676cf.png?v=828707
图2.2 客户端VNC配置

[*]成功连接

连接成功后,客户端窗口将显示远程设备的桌面,可进行交互操作。https://srcc.myir.cn/images/20250306/ea1a5b1508b2e083695a8ce7cbf1ada8.png?v=249317
图2.3 VNC连接成功界面3、交换机功能3.1. 交换机简介以太网交换机是一种硬件设备,用于连接局域网(LAN)上的设备,并在这些设备之间转发数据包。它在OSI模型的数据链路层(第2层)运行,并使用MAC地址来确定每个数据包的目的地。以太网交换机可以通过减少冲突和拥塞来提高网络性能,同时还可以提供如虚拟局域网(VLAN)和基于端口的访问控制等安全功能。与以太网桥接器相比,以太网交换机在CPU使用率方面更为高效。由于硬件以太网交换机负责数据转发、过滤和优先级排序,因此减轻了CPU的工作负担。这样一来,CPU可以专注于处理其他任务,从而进一步提升网络性能。本节主要介绍myd-ld25x作为交换机进行双网段转发功能。3.2. 网络拓扑介绍STM32MP257有两个以太网控制器,MYD-LD25X以太网控制器1支持交换机功能。其网络拓扑如下图:https://srcc.myir.cn/images/20250306/69222e2cca78d5042d3521bcd7c91366.png?v=608362图3.1 网络拓扑图
根据上图很容易了解网络拓扑结构:<font face="微软雅黑"> (169.254.1.2)
│
├── end2 接口
│

│
├── end2 接口: 169.254.1.1(连接 Device1)
├── sw0p2 接口: 192.168.0.20(连接 Device2 end2)
│
└── IP 转发已启用 (`echo 1 > /proc/sys/net/ipv4/ip_forward`)

(192.168.0.11)</font>
3.3.关键拓扑配置解析
[*]myd-ld25x的配置
从网络拓扑图可知,myd-ld25x被当作为交换机/网关,连接不同的子网络,子网1配置169.254.1.0/24(通过 end2 接口);子网2:配置192.168.0.0/24(通过 sw0p2 接口)。启用 ip_forward 后,myd-ld25x可将来自子网1的流量转发到子网2,反之亦然。


[*]Device1 配置
设置 IP 为169.254.1.2,默认网关指向 myd-ld25x的 end2 接口 (169.254.1.1)。使得所有非本子网的流量(如访问 192.168.0.11)通过网关 myd-ld25x 转发。


[*]Device2 配置
设置 IP 为192.168.0.11,默认网关指向myd-ld25x的 sw0p2 接口 (192.168.0.20)。使所有非本子网的流量(如访问 169.254.1.2)通过网关myd-ld25x转发。
3.4.转发功能配置与测试
[*]切换交换机设备树

启动开发板,在uboot阶段选择交换机设备树,如下图所示:
https://srcc.myir.cn/images/20250306/755075fe4a0f8baa26c33adebaf87039.png?v=775845
图3.2 选择交换机设备树


[*]转发功能配置

根据拓扑结构对myd-ld25x开发板板进行配置,启动设备并设置 end1/sw0ep 接口,同时启用 IP 转发功能,使设备能够充当路由器,转发网络流量。<font face="微软雅黑" size="2">root@myd-ld25x:~# ifconfig end2 169.254.1.1 up
root@myd-ld25x:~# ifconfig sw0p2 192.168.0.20 up
root@myd-ld25x:~# echo 1 > /proc/sys/net/ipv4/ip_forward</font>
配置设备1(开发板或者PC)网络接口IP和路由,这里Device1使用一块MYD-LD25X开发板:<font face="微软雅黑" size="2">Board [      DISCUZ_CODE_109      ]gt; ifconfig end2 169.254.1.2 up
Board [      DISCUZ_CODE_109      ]gt; ip route add default via 169.254.1.1</font>
配置设备2(开发板或者PC)网络IP和路由,这里Device2也使用一块MYD-LD25X开发板:<font face="微软雅黑" size="2">Board [      DISCUZ_CODE_110      ]gt; ifconfig end2 192.168.0.11 up
Board [      DISCUZ_CODE_110      ]gt; ip route add default via 192.168.0.10</font>
3.5.连通性验证
从Device1->Device2,当执行ping 192.168.0.11 时, 数据包从 Device1 发送到默认网关MYD-LD25X (169.254.1.1),MYD-LD25X根据路由表将数据包转发到 sw0p2 接口 (192.168.0.20)。Device2 收到数据包并回复,路径反向同理。<font face="微软雅黑" size="2">Board [      DISCUZ_CODE_111      ]gt; ping 192.168.0.11
PING 192.168.0.11 (192.168.0.11) 56(84) bytes of data.
64 bytes from 192.168.0.11: icmp_seq=1 ttl=63 time=0.959 ms
64 bytes from 192.168.0.11: icmp_seq=2 ttl=63 time=0.618 ms
64 bytes from 192.168.0.11: icmp_seq=3 ttl=63 time=0.649 ms
64 bytes from 192.168.0.11: icmp_seq=4 ttl=63 time=0.669 ms
64 bytes from 192.168.0.11: icmp_seq=5 ttl=63 time=0.625 ms
64 bytes from 192.168.0.11: icmp_seq=6 ttl=63 time=0.624 ms
64 bytes from 192.168.0.11: icmp_seq=7 ttl=63 time=0.630 ms
64 bytes from 192.168.0.11: icmp_seq=8 ttl=63 time=0.669 ms</font>
从Device2->Device1,过程一样:<font face="微软雅黑" size="2">Board [      DISCUZ_CODE_112      ]gt; ping 169.254.1.2
PING 169.254.1.2 (169.254.1.2) 56(84) bytes of data.
64 bytes from 169.254.1.2: icmp_seq=1 ttl=63 time=0.761 ms
64 bytes from 169.254.1.2: icmp_seq=2 ttl=63 time=0.688 ms
64 bytes from 169.254.1.2: icmp_seq=3 ttl=63 time=0.678 ms
64 bytes from 169.254.1.2: icmp_seq=4 ttl=63 time=0.640 ms
64 bytes from 169.254.1.2: icmp_seq=5 ttl=63 time=0.676 ms
64 bytes from 169.254.1.2: icmp_seq=6 ttl=63 time=0.614 ms
64 bytes from 169.254.1.2: icmp_seq=7 ttl=63 time=0.608 ms
64 bytes from 169.254.1.2: icmp_seq=8 ttl=63 time=0.543 ms</font>
通过MYD-LD25X板作为路由中转,成功实现了两个不同子网(169.254.1.0/24和 192.168.0.0/24)间的通信。


4、TSN
4.1.TSN简介
TSN代表时间敏感网络(Time-Sensitive Networking),它是由电气和电子工程师协会(IEEE)开发的一系列标准,旨在通过以太网网络提供确定性和低延迟的通信。TSN旨在支持实时应用,如工业自动化、汽车以及音频/视频流传输。TSN通过在网络中的所有设备之间提供时间同步,并使用流量整形和调度机制为时间关键型流量分配优先级和网络资源,从而实现确定性通信。TSN还支持冗余和容错机制,以确保高可用性和可靠性。此处列出了IEEE定义的TSN标准的完整清单。TSN的关键特性包括:
[*]时间同步:TSN使用精确时间协议(PTP)来同步网络中所有设备的时钟,精度可达亚微秒级。IEEE 802.1AS-Rev   
[*]流量整形和调度:TSN使用服务质量(QoS)机制为时间关键型流量分配优先级和网络资源,并防止拥塞和数据包丢失。IEEE 802.1Qav和IEEE 802.1Qbv
[*]互操作性:TSN设计为与现有以太网网络兼容,并支持不同供应商和设备之间的互操作性。

总体而言,TSN为以太网网络上的实时通信提供了一个标准化且可靠的解决方案,有助于在各行各业启用新的应用和用例。802.1Qav和802.1Qbv之间的选择取决于应用的特定需求。802.1Qav通常用于带宽需求可变且不可预测的应用,而802.1Qbv则通常用于带宽需求固定且可预测的应用。MYD-LD25X独立网口end2和switch都支持TSN功能。本节将以myd-ld25x开发板独立以太网为例,展示TSN 802.1Qav如何提升流量整形效果。

4.2. 网络拓扑介绍
通过预留4个带宽序列,给每个序列分别不同的优先级,如下网络拓扑图所示:
https://srcc.myir.cn/images/20250306/b494f8d0fc7a0de322b215c236e5d754.png?v=631309
图4.1 QAV例子


如上图所示,配置网口如下:
[*]使用4个队列(Q0-Q3)。每个队列在硬件中都有预留的带宽。最多支持4个队列。
[*]队列0无带宽限制,用于通用流量。
[*]队列1预留了最大带宽的10%(100Mbps)
[*]队列2预留了最大带宽的20%(200Mbps)
[*]队列3预留了最大带宽的30%(300Mbps)
[*]Q3是最高优先级队列,而Q0是最低优先级队列。


4.3. 网络流量控制
[*]创建vlan端口

在MYD-LD25X开发板发送端执行下面命令创建vlan端口,并建立端口映射:<font face="微软雅黑" size="2">root@myd-ld25x:~# ip link add link end2 name end2.200 type vlan id 200
root@myd-ld25x:~# ip link set end2.200 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
root@myd-ld25x:~# ifconfig end2.200 192.168.200.60 netmask 255.255.255.0</font>
在接受端(PC或者其他开发板)接收端创建vlan端口:<font face="微软雅黑" size="2">root@localhost:~# ip link add link eno0 name eno0.200 type vlan id 200
root@localhost:~# ip link set eno0.200 up
root@localhost:~# ip addr add 192.168.200.30/24 dev eno0.200</font>

[*]配置网络流量

CBS用于通过限制流量类别的数据速率来强制实施服务质量;为了将数据包划分为不同的流量类别,用户可以选择使用mqprio。<font face="微软雅黑" size="2">root@myd-ld25x:~# tc qdisc add dev end0 clsact
root@myd-ld25x:~# tc qdisc add dev end0 handle 100: parent rootmqprio
num_tc 4
map 0 0 1 1 2 2 3 3 3 3 3 3 3 3 3 3
queues 1@0 1@1 1@2 1@3 hw 0</font>
为每个队列分配不同的带宽<font face="微软雅黑" size="2">// Set bandwidth of queue 1 to be 100Mbps
root@myd-ld25x:~#tc qdisc replace dev end0 parent 100:2 cbs
idleslope 100000
sendslope -900000
hicredit 150
locredit -1350
offload 1

// Set bandwidth of queue 2 to be 200Mbps
root@myd-ld25x:~# tc qdisc replace dev end0 parent 100:3 cbs
idleslope 200000
sendslope -800000
hicredit 300
locredit -1200
offload 1

// Set bandwidth of queue 3 to be 300Mbps
root@myd-ld25x:~# tc qdisc replace dev end0 parent 100:4 cbs
idleslope 300000
sendslope -700000
hicredit 450
locredit -1050
offload 1</font>

[*]流量测试

在连接到端点end2且IP地址为192.168.200.30的远程PC或其他设备上运行4个iperf会话,以生成具有不同优先级的多个数据流。<font face="微软雅黑" size="2">root@localhost:~#iperf3 -s -p 5003&
root@localhost:~#iperf3 -s -p 5002&
root@localhost:~#iperf3 -s -p 5001&
root@localhost:~#iperf3 -s -p 5000&</font>
在MYD-LD25X开发板,使用iperf3开始传输数据流:<font face="微软雅黑" size="2">//Stream with SKB priority 6: TOS=0x14 == SO_PRIORITY=6
// https:man7.org/linux/man-pages/man8/tc-prio.8.html
root@myd-ld25x:~#iperf3 -c 192.168.200.30 -u -b 0 -p 5003 -l1472 -t60 --tos 0x14 &
//Stream with SKB priority 4
root@myd-ld25x:~#iperf3 -c 192.168.200.30 -u -b 0 -p 5002 -l1472 -t60 --tos 0x1a &
//Stream with SKB priority 2
root@myd-ld25x:~# iperf3 -c 192.168.200.30 -u -b 0 -p 5001 -l1472 -t60 --tos 0xa &
//Stream with SKB priority 0 (Best effort)
root@myd-ld25x:~# iperf3 -c 192.168.200.30 -u -b 0 -p 5000 -l1472 -t60&</font>

[*]测试结果

对于优先级为6且带宽为300Mbps的队列3,使用TC规则后:<font face="微软雅黑" size="2">root@myd-ld25x:~# iperf3 -c 192.168.200.30 -u -b 0 -p 5003 -l1472 -t60 --tos 0x14 &
5238
root@myd-ld25x:~# warning: UDP block size 1472 exceeds TCP MSS 1448, may result in fragmentation / drops
Connecting to host 192.168.200.30, port 5003
local 192.168.200.60 port 56663 connected to 192.168.200.30 port 5003
[ ID] Interval         Transfer   Bitrate         Total Datagrams
   0.00-1.00   sec34.7 MBytes   291 Mbits/sec24720
   1.00-2.00   sec34.7 MBytes   291 Mbits/sec24710
   2.00-3.00   sec34.7 MBytes   291 Mbits/sec24730
   3.00-4.00   sec34.6 MBytes   291 Mbits/sec24680
   4.00-5.00   sec34.6 MBytes   290 Mbits/sec24670</font>
对于优先级为4且带宽为200Mbps的队列2,使用TC规则后:<font face="微软雅黑" size="2">root@myd-ld25x:~# iperf3 -c 192.168.200.30 -u -b 0 -p 5002 -l1472 -t60 --tos 0x1a &
5335
root@myd-ld25x:~# warning: UDP block size 1472 exceeds TCP MSS 1448, may result in fragmentation / drops
Connecting to host 192.168.200.30, port 5002
local 192.168.200.60 port 33494 connected to 192.168.200.30 port 5002
[ ID] Interval         Transfer   Bitrate         Total Datagrams
   0.00-1.00   sec23.3 MBytes   195 Mbits/sec16600
   1.00-2.00   sec23.2 MBytes   195 Mbits/sec16550
   2.00-3.00   sec23.2 MBytes   195 Mbits/sec16550
   3.00-4.00   sec23.2 MBytes   195 Mbits/sec16550
   4.00-5.00   sec23.2 MBytes   195 Mbits/sec16550
   5.00-6.00   sec23.2 MBytes   195 Mbits/sec16550</font>
对于优先级为2且带宽为100Mbps的队列1,使用TC规则后:<font face="微软雅黑" size="2">root@myd-ld25x:~# iperf3 -c 192.168.200.30 -u -b 0 -p 5001 -l1472 -t60 --tos 0xa &
5376
warning: UDP block size 1472 exceeds TCP MSS 1448, may result in fragmentation / drops
root@myd-ld25x:~# Connecting to host 192.168.200.30, port 5001
local 192.168.200.60 port 40923 connected to 192.168.200.30 port 5001
[ ID] Interval         Transfer   Bitrate         Total Datagrams
   0.00-1.00   sec11.7 MBytes98.3 Mbits/sec8350
   1.00-2.00   sec11.7 MBytes97.9 Mbits/sec8310
   2.00-3.00   sec11.7 MBytes97.7 Mbits/sec8300
   3.00-4.00   sec11.7 MBytes97.9 Mbits/sec8310
   4.00-5.00   sec11.7 MBytes97.8 Mbits/sec8310
   5.00-6.00   sec11.7 MBytes97.8 Mbits/sec8300
   6.00-7.00   sec11.7 MBytes97.9 Mbits/sec8310</font>
对应优先级为0且带宽无限制的流量,使用TC规则后:<font face="微软雅黑" size="2">root@myd-ld25x:~# iperf3 -c 192.168.200.30 -u -b 0 -p 5000 -l1472 -t60&
5426
root@myd-ld25x:~# warning: UDP block size 1472 exceeds TCP MSS 1448, may result in fragmentation / drops
Connecting to host 192.168.200.30, port 5000
local 192.168.200.60 port 47330 connected to 192.168.200.30 port 5000
[ ID] Interval         Transfer   Bitrate         Total Datagrams
   0.00-1.00   sec   101 MBytes   845 Mbits/sec71800
   1.00-2.00   sec   104 MBytes   875 Mbits/sec74300
   2.00-3.00   sec   105 MBytes   880 Mbits/sec74750
   3.00-4.00   sec   105 MBytes   880 Mbits/sec74700
   4.00-5.00   sec   105 MBytes   881 Mbits/sec74790
   5.00-6.00   sec   105 MBytes   878 Mbits/sec74560</font>


页: [1]
查看完整版本: 米尔基于STM32MP25x核心板Debian系统发布,赋能工业设备

Baidu
map