tag 标签: 米尔

相关博文
  • 2025-3-7 14:08
    238 次阅读|
    0 个评论
    一、系统概述 MYD-LD25X搭载的Debian系统包含以太网、WIFI/BT、USB、RS485、RS232、CAN、AUDIO、HDMI显示和摄像头等功能,同时也集成了XFCE轻量化桌面、VNC远程操控、SWITCH网络交换和TSN时间敏感网络功能,为工业设备赋予“超强算力+实时响应+极简运维”的体验! 类别 名称 描述 源码 TF-A Arm Trusted Firmware2.8 OP-TEE OP-TEE 3.19 Bootloader U-boot 2022.10 Kernel Linux Kernel 6.1.82 文件系统 myir-image-debian Debian12文件系统 工具 烧录工具 STM32CubeProgrammer 文档 MYD-LD25X_Debian系统开发指南 包含源码编译,烧录等 注:目前Debian系统只适配了高配置开发板型号:MYD-LD257-8E2D-150-I 图:MYC-LD25X核心板及开发板 二、亮点功能介绍 1、Xfce桌面 Xfce是一款轻量级的开源桌面环境,旨在提供高效、稳定和易于使用的桌面体验。 轻量级:Xfce以资源效率为目标,注重在低资源消耗下提供快速响应和流畅的用户体验。它适用于各种硬件配置,包括旧式计算机和嵌入式设备。 简洁和直观:Xfce遵循简洁和直观的设计原则,提供了直观易用的用户界面,使用户能够快速上手和自定义桌面环境。 模块化:Xfce采用模块化的设计,桌面环境由多个独立的组件(如面板、窗口管理器、文件管理器等)组成,用户可以根据自己的需求进行定制和配置。 1.1 .启动Xfce myir-image-debian系统默认已经包含xfce显示界面,开发板启动进入系统后,接上屏幕会显示如下界面,说明成功启动Xfce,需输入设置的账户进入系统界面。 图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服务: root@myd-ld25x:~# ps -ef | grep vnc root 2348 1 0 15 :14 ? 00 :00:00 /usr/bin/perl /usr/bin/vncserver -geometry 1280x720 -depth 24 -localhost no :1 root 2349 2348 0 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 2348 0 15 :14 ? 00 :00:00 /bin/sh /etc/X11/Xtigervnc-session root 2356 2350 0 15 :14 ? 00 :00:00 tigervncconfig -iconic root 4836 3480 0 16 :48 ttySTM0 00 :00:00 grep vnc 2.3客户端连接测试 下载客户端 Windows下载并安装客户端软件(如 RealVNC Viewer ),如下图所示: 图2.1客户端VNC界面 获取连接信息 通过myd-ld25x开发板获取目标设备的IP地址或主机名 (如192.168.40.198或myd-ld25x): root @myd-ld 25 x :~# cat /etc/hosts 127.0 . 0.1 myd-ld25x root @myd-ld 25 x :~# ifconfig end1: flags= 4099 UP,BROADCAST,MULTICAST mtu 1500 ether 38 :d5: 47 : 00 : 29 : 62 txqueuelen 1000 (Ethernet) 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 65 base 0 xc000 end2: flags= 4163 UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 192.168 . 40.198 netmask 255.255 . 255.0 broadcast 192.168 . 40.255 inet6 fe80::bd6: 742 b :ef7 e :ee6f prefixlen 64 scopeid 0 x20link ether 5 e : 08 : 0 d : 0 e : 83 :b6 txqueuelen 1000 (Ethernet) RX packets 12454 bytes 2524533 ( 2.4 MiB) RX errors 0 dropped 129 overruns 0 frame 0 TX packets 476 bytes 41087 ( 40.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 68 base 0 x8000 通过VNC服务器的log,获取端口/显示编号,如:1(对应端口5901)或直接指定端口号5901: root @myd-ld 25 x :~# cat .vnc/myd-ld25 x : 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 Mar 3 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 3 NI3X0 New Xtigervnc server 'myd-ld25x:1 (root)' on port 5901 for display : 1 . 3 NI3X0 Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /tmp/tigervnc.otB4Rd/passwd myd-ld25 x : 1 to connect to the VNC server. mieq : warning : overriding existing handler (nil) with 0 xaaaae7efad10 for event 2 mieq : warning : overriding existing handler (nil) with 0 xaaaae7efad10 for event 3 .................................................. 输入连接地址 依次点击VNC客户端界面“File-New connection”输入服务器和主机名,格式如下: 格式:目标地址:显示编号或目标地址::端口号 示例1(主机名+显示编号):myd-ld25x:1 示例2(IP+端口):192.168.40.198:5901 以主机名为例子,配置完成后,点击”OK”按钮,如下图所示: 图2.2客户端VNC配置 成功连接 连接成功后,客户端窗口将显示远程设备的桌面,可进行交互操作。 图2.3 VNC连接成功界面 3、 交换机功能 3.1.交换机简介 以太网交换机是一种硬件设备,用于连接局域网(LAN)上的设备,并在这些设备之间转发数据包。它在OSI模型的数据链路层(第2层)运行,并使用MAC地址来确定每个数据包的目的地。以太网交换机可以通过减少冲突和拥塞来提高网络性能,同时还可以提供如虚拟局域网(VLAN)和基于端口的访问控制等安全功能。与以太网桥接器相比,以太网交换机在CPU使用率方面更为高效。由于硬件以太网交换机负责数据转发、过滤和优先级排序,因此减轻了CPU的工作负担。这样一来,CPU可以专注于处理其他任务,从而进一步提升网络性能。本节主要介绍myd-ld25x作为交换机进行双网段转发功能。 3.2.网络拓扑介绍 STM32MP257有两个以太网控制器,MYD-LD25X以太网控制器1支持交换机功能。其网络拓扑如下图: 图3.1网络拓扑图 根据上图很容易了解网络拓扑结构: ( 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 ) 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阶段选择交换机设备树,如下图所示: 图3.2选择交换机设备树 转发功能配置 根据拓扑结构对myd-ld25x开发板板进行配置,启动设备并设置 end1/sw0ep 接口,同时启用IP转发功能,使设备能够充当路由器,转发网络流量。 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 配置设备1(开发板或者PC)网络接口IP和路由,这里Device1使用一块MYD-LD25X开发板: Board $ ifconfig end2 169.254.1.2 up Board $ ip route add default via 169.254.1.1 配置设备2(开发板或者PC)网络IP和路由,这里Device2也使用一块MYD-LD25X开发板: Board $ ifconfig end2 192.168.0.11 up Board $ ip route add default via 192.168.0.10 3.5.连通性验证 从Device1-Device2,当执行ping 192.168.0.11时, 数据包从Device1发送到默认网关MYD-LD25X (169.254.1.1),MYD-LD25X根据路由表将数据包转发到sw0p2接口(192.168.0.20)。Device2收到数据包并回复,路径反向同理。 Board $ 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 从Device2-Device1,过程一样: Board $ 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 通过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个带宽序列,给每个序列分别不同的优先级,如下网络拓扑图所示: 图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端口,并建立端口映射: 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 在接受端(PC或者其他开发板)接收端创建vlan端口: 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 配置网络流量 CBS用于通过限制流量类别的数据速率来强制实施服务质量;为了将数据包划分为不同的流量类别,用户可以选择使用mqprio。 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 为每个队列分配不同的带宽 // Set bandwidth of queue 1 to be 100 Mbps 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 200 Mbps 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 300 Mbps root @myd - ld25x : ~ # tc qdisc replace dev end0 parent 100:4 cbs idleslope 300000 sendslope - 700000 hicredit 450 locredit - 1050 offload 1 流量测试 在连接到端点end2且IP地址为192.168.200.30的远程PC或其他设备上运行4个iperf会话,以生成具有不同优先级的多个数据流。 root @localhost :~ # iperf3 -s -p 5003 root @localhost :~ # iperf3 -s -p 5002 root @localhost :~ # iperf3 -s -p 5001 root @localhost :~ # iperf3 -s -p 5000 在MYD-LD25X开发板,使用iperf3开始传输数据流: //Stream with SKB priority 6 : TOS=0x14 == SO_PRIORITY=6 // https:man7.org/linux/man-pages/man8/tc-prio.8.html root @myd-ld 25 x :~# iperf3 -c 192.168 . 200.30 -u -b 0 -p 5003 -l1472 -t60 --tos 0 x14 //Stream with SKB priority 4 root @myd-ld 25 x :~# iperf3 -c 192.168 . 200.30 -u -b 0 -p 5002 -l1472 -t60 --tos 0 x1a //Stream with SKB priority 2 root @myd-ld 25 x :~# iperf3 -c 192.168 . 200.30 -u -b 0 -p 5001 -l1472 -t60 --tos 0 xa //Stream with SKB priority 0 (Best effort) root @myd-ld 25 x :~# iperf3 -c 192.168 . 200.30 -u -b 0 -p 5000 -l1472 -t60 测试结果 对于优先级为6且带宽为300Mbps的队列3,使用TC规则后: root@myd-ld25x:~# iperf3 -c 192.168.200.30 -u -b 0 -p 5003 -l1472 -t60 --tos 0 x14 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 Interval Transfer Bitrate Total Datagrams 0.00-1.00 sec 34 . 7 MBytes 291 Mbits/sec 24720 1.00-2.00 sec 34 . 7 MBytes 291 Mbits/sec 24710 2.00-3.00 sec 34 . 7 MBytes 291 Mbits/sec 24730 3.00-4.00 sec 34 . 6 MBytes 291 Mbits/sec 24680 4.00-5.00 sec 34 . 6 MBytes 290 Mbits/sec 24670 对于优先级为4且带宽为200Mbps的队列2,使用TC规则后: root@myd-ld25x:~# iperf3 -c 192.168.200.30 -u -b 0 -p 5002 -l1472 -t60 --tos 0 x1a 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 Interval Transfer Bitrate Total Datagrams 0.00-1.00 sec 23 . 3 MBytes 195 Mbits/sec 16600 1.00-2.00 sec 23 . 2 MBytes 195 Mbits/sec 16550 2.00-3.00 sec 23 . 2 MBytes 195 Mbits/sec 16550 3.00-4.00 sec 23 . 2 MBytes 195 Mbits/sec 16550 4.00-5.00 sec 23 . 2 MBytes 195 Mbits/sec 16550 5.00-6.00 sec 23 . 2 MBytes 195 Mbits/sec 16550 对于优先级为2且带宽为100Mbps的队列1,使用TC规则后: 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 Interval Transfer Bitrate Total Datagrams 0.00 -1.00 sec 11.7 MBytes 98.3 Mbits/sec 8350 1.00 -2.00 sec 11.7 MBytes 97.9 Mbits/sec 8310 2.00 -3.00 sec 11.7 MBytes 97.7 Mbits/sec 8300 3.00 -4.00 sec 11.7 MBytes 97.9 Mbits/sec 8310 4.00 -5.00 sec 11.7 MBytes 97.8 Mbits/sec 8310 5.00 -6.00 sec 11.7 MBytes 97.8 Mbits/sec 8300 6.00 -7.00 sec 11.7 MBytes 97.9 Mbits/sec 8310 对应优先级为0且带宽无限制的流量,使用TC规则后: 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 Interval Transfer Bitrate Total Datagrams 0.00-1.00 sec 101 MBytes 845 Mbits/sec 71800 1.00-2.00 sec 104 MBytes 875 Mbits/sec 74300 2.00-3.00 sec 105 MBytes 880 Mbits/sec 74750 3.00-4.00 sec 105 MBytes 880 Mbits/sec 74700 4.00-5.00 sec 105 MBytes 881 Mbits/sec 74790 5.00-6.00 sec 105 MBytes 878 Mbits/sec 74560
  • 热度 1
    2025-2-28 15:22
    135 次阅读|
    0 个评论
    近日,米尔电子携手推出全新一代ARM核心板——基于瑞芯微RK3562(J)处理器的MYC-YR3562核心板及开发板。这款核心板凭借其强大的性能、丰富的接口和灵活的扩展能力,为工业控制、物联网网关、边缘计算等领域提供了高性价比的解决方案。 核心板基于 RK3562 或RK3562J处理器,采用四核ARM Cortex-A53架构,主频高达2GHz,集成Mali-G52 GPU,支持4K视频解码和1080P视频编码。相较于前代产品,RK3562在性能上有了显著提升,同时保持了较低的功耗,堪称ARM中量级处理器中的多面手。MYC-YR3562核心板存储配置存储器1GB/2GB LPDDR4、8GB/16GB eMMC等多个型号供选择,配备开发板供开发者评估使用。下面详细介绍这款核心板的优势。 瑞芯微 R K3562处理器, 1 TOPS NPU,升级摄像头 I SP RK3562J/RK3562 是一款专为消费电子及工业设备设计的高性能、低功耗四核应用处理器。配备四核 ArmCortex-A53 +Cortex-M0,主频最高可达2.0GHz;具有1TOPS NPU,与TensorFlow、PyTorch、Caffe、ONNX、MXNet、Keras、Darknet 等深度学习框架兼容;集成 Mali G52 GPU,支持OpenGL ES1.1/2.0/3.2、OpenCL2.0 和 Vulkan1.1。 丰富的多媒体资源 RK3562支持3D GPU Mail-G52-2EE,13M ISP,支持1080P@60fps H.264 编码,4K@30fps H.265、1080P@60fps H.264解码,支持丰富多媒体接口MIPI CSI/Parallel RGB/LVDS/MIPI DSI等。 根据主芯片、存储器件参数的不同,MYC-YR3562核心板细分为3种型号。 核心板配置型号 产品型号 主芯片 NPU 内存 存储器 工作温度 MYC-YR3562J-8E1D-180-I RK3562J / 1 GB LPDDR4 8 GB -40℃~+85℃工业级 MYC-YR3562J-16E2D-180-I RK3562J / 2 GB LPDDR4 16 GB -40℃~+85℃工业级 MYC-YR3562-16E2D-200-C RK3562 1 TOPS 2 GB LPDDR4 16 GB 0℃~+70℃商业级 MYC-YR3562核心板选型表 开发板配置型号 产品型号 对应核心板型号 工作温度 MYD-YR3562-16E2D-200-C MYC-YR3562-16E2D-200-C 0℃~+70℃ 商业级 MYD-YR3562J-16E2D-180-I-GK MYC-YR3562J-16E2D-180-I -40℃~+85℃ 工业级 MYD-YR3562开发板选型表
  • 热度 1
    2025-2-21 14:00
    314 次阅读|
    0 个评论
    1. 系统架构解析 本系统基于米尔MYC-YM90X构建,基于安路飞龙DR1M90处理器,搭载安路DR1 FPGA SOC 创新型异构计算平台,充分发挥其 双核Cortex-A35处理器与可编程逻辑(PL)单元 的协同优势。通过AXI4-Stream总线构建的高速数据通道(峰值带宽可达12.8GB/s),实现ARM与FPGA间的纳秒级(ns)延迟交互,较传统方案提升了3倍的传输效率,极大地提升了系统整体性能。 国产化技术亮点 : 全自主AXI互连架构 ,支持多主多从拓扑,确保系统灵活性与可扩展性 硬核处理器与PL单元共享DDR3控制器, 提高内存带宽利用率(可升级至DDR4) 动态时钟域隔离技术(DCIT) ,确保跨时钟域的数据交互稳定性,避免时序错误 国产SM4加密引擎硬件加速模块 ,为数据加密任务提供硬件级别的支持,提升加密处理效率 图一 系统架构框图 如图一所示,系统架构通过“低内聚,高耦合”的设计思想,通过模块化的设计方式,完成了以下工作。 1. 通过 I²C 对OV5640摄像头进行分辨率,输出格式等配置。 2. 双目图像数据进行三级帧缓存,FIFO——DMA——DDR。 3. 客制化低延迟ISP(开发者根据场景需求加入) 4. VTC驱动HDMI输出显示 2. 系统程序开发 2.1 DR1固件架构设计 GUI设计界面,类Blockdesign设计方式,通过AXI总线,连接DR1的ARM核与定制化外设,包括以太网,RAM模块,PL DMA和VTC。 图二 FPGA底层架构框图 2.2 双目视觉处理流水线 2.2.1 传感器配置层 为实现高效的传感器配置,本系统采用 混合式I²C配置引擎 ,通过PL端硬件I²C控制器实现传感器参数的动态加载。与纯软件方案相比,该硬件加速的配置速度提升了8倍,显著降低了配置延迟。 // 可重配置传感器驱动IP module ov5640_config ( input wire clk_50M, output tri scl, inout tri sda, input wire reg_addr, input wire reg_data, output reg config_done ); // 支持动态分辨率切换( 1920 x1080 @30fps ↔ 1280 x720@ 60 fps) parameter RESOLUTION _TABLE = '{...}; 该配置引擎支持多分辨率与高帧率动态切换,适应不同应用场景需求。 2.2.2 数据采集管道 系统构建了 三级缓存体系 ,确保数据处理的高效性和实时性: 像素级缓存 :采用双时钟FIFO(写时钟74.25MHz,读时钟100MHz),实现数据的稳定缓存和传输。 行缓冲 :使用BRAM的乒乓结构(每行1920像素×16bit),减少数据延迟。 帧缓存 :通过DDR3-1066 1GB内存支持四帧循环存储,确保图像的持续流畅展示。 // 位宽转换智能适配器 module data_width_converter #( parameter IN_WIDTH = 16 , parameter OUT_WIDTH = 96 )( input wire din, output wire dout, // 时钟与使能信号 ); // 采用流水线式位宽重组技术 always_ff @(posedge clk) begin case ( state ) 0: buffer = {din, 80'b 0}; 1 : buffer = {buffer , din}; // ...6周期完成96bit组装 endcase end 2.2.3. 异构计算调度 系统通过AXI-DMA(Direct Memory Access)实现零拷贝数据传输,优化内存和外设间的数据交换: 写通道 :PL→DDR,采用突发长度128、位宽128bit的高速数据传输 读通道 :DDR→HDMI,配合动态带宽分配(QoS等级可调),确保不同带宽需求的动态适配 2.2.4 VTC显示引擎深度优化 PL DMA输出显示优化 显示时序的优化对高质量图像输出至关重要。通过VTC(Video Timing Controller),本系统能够实现多模式自适应输出。 axi_hdmi_tx#( .ID( 0 ), .CR_CB_N ( 0 ), .DEVICE_TYPE ( 17 ), // 17 for DR1M .INTERFACE (" 16 _BIT"), .OUT_CLK_POLARITY ( 0 ) ) axi_hdmi_tx_inst ( .hdmi_clk (pll_clk_150), //.hdmi_clk (clk1_out), .hdmi_out_clk (hdmi_clk ), .hdmi_16_hsync (hdmi_hs ), .hdmi_16_vsync (hdmi_vs ), .hdmi_16_data_e (hdmi_de), .hdmi_16_data (/*hdmi_data*/ ), // .hdmi_16_data (hdmi_data ), .hdmi_16_es_data (hdmi_data), .hdmi_24_hsync (), .hdmi_24_vsync (), .hdmi_24_data_e (), .hdmi_24_data (/*{r_data,g_data,b_data}*/), .hdmi_36_hsync (), .hdmi_36_vsync (), .hdmi_36_data_e (), .hdmi_36_data (), .vdma_clk (pll_clk_150 ), .vdma_end_of_frame (dma_m_axis_last ), .vdma_valid (dma_m_axis_valid ), .vdma_data (dma_m_axis_data ), .vdma_ready (dma_m_axis_ready), .s_axi_aclk (S_AXI_ACLK ), .s_axi_aresetn (S_AXI_ARESETN ), .s_axi_awvalid (axi_ds5_ds5_awvalid ), .s_axi_awaddr (axi_ds5_ds5_awaddr ), .s_axi_awprot (axi_ds5_ds5_awprot ), .s_axi_awready (axi_ds5_ds5_awready ), .s_axi_wvalid (axi_ds5_ds5_wvalid ), .s_axi_wdata (axi_ds5_ds5_wdata ), .s_axi_wstrb (axi_ds5_ds5_wstrb ), .s_axi_wready (axi_ds5_ds5_wready ), .s_axi_bvalid (axi_ds5_ds5_bvalid ), .s_axi_bresp (axi_ds5_ds5_bresp ), .s_axi_bready (axi_ds5_ds5_bready ), .s_axi_arvalid (axi_ds5_ds5_arvalid ), .s_axi_araddr (axi_ds5_ds5_araddr ), .s_axi_arprot (axi_ds5_ds5_arprot ), .s_axi_arready (axi_ds5_ds5_arready ), .s_axi_rvalid (axi_ds5_ds5_rvalid ), .s_axi_rresp (axi_ds5_ds5_rresp ), .s_axi_rdata (axi_ds5_ds5_rdata ), .s_axi_rready (axi_ds5_ds5_rready) ); 动态时序生成器 通过PL-PLL动态调整像素时钟,确保显示无卡顿、无闪烁,误差控制在10ppm内。 // VTC配置代码片段(Anlogic SDK) void config_vtc (uint32_t h_total, uint32_t v_total) { VTCRegs - CTRL = 0x1 ; // 使能软复位 VTCRegs - HTOTAL = h_total - 1 ; VTCRegs - VTOTAL = v_total - 1 ; // 详细时序参数配置 VTCRegs - POLARITY = 0x3 ; // HS/VS极性配置 VTCRegs - CTRL = 0x81 ; // 使能模块 } 3. 硬件连接与测试 硬件连接 米尔的安路飞龙板卡采用2 X 50 PIN 连接器设计,可灵活插拔多种子卡,配合子卡套件,可扩展成多种形态,多种应用玩法。 图三 使用模组,底板,子卡和线缆搭建硬件系统(使用米尔基于安路飞龙DR1M90开发板) 显示测试 实测双目显示清晰,无卡帧,闪屏。 图四 输出显示效果 系统集成 在FPGA硬件描述文件的基础上,进一步在Linux下实现双摄,为复杂系统调度应用铺平道路。 内核加载5640驱动下通过dma搬运ddr数据,在应用层中通过v4l2框架显示到HDMI上,完整数据流如下: FPGADDR→AXI-DMA控制器→LinuxDMA引擎→内核dma_buf→V4L2vb2队列→mmap用户空间→应用处理 三路DMA设备树HDMI、camera1、camera2代码片段: //hdmi soft_adi_dma0: dma@80400000 { compatible = "adi,axi-dmac-1.00.a" ; reg = 0x0 0x80400000 0x0 0x10000; interrupts = GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH; clocks = axi_dma_clk; #dma-cells = 1; status = "okay" ; adi,channels { #size-cells = 0; #address-cells = 1; dma-channel@0 { reg = 0; adi,source-bus-width = 32; adi,source-bus-type = 0; adi,destination-bus-width = 64; adi,destination-bus-type = 1; }; }; }; // cam1 mipi_adi_dma0: dma@80300000 { compatible = "adi,axi-dmac-1.00.a" ; reg = 0x0 0x80300000 0x0 0x10000; interrupts = GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH; clocks = axi_dma_clk; #dma-cells = 1; status = "okay" ; adi,channels { #size-cells = 0; #address-cells = 1; dma-channel@0 { reg = 0; adi,source-bus-width = 128; adi,source-bus-type = 1; adi,destination-bus-width = 64; adi,destination-bus-type = 0; }; }; }; //cam2 mipi_adi_dma1: dma@80700000 { compatible = "adi,axi-dmac-1.00.a" ; reg = 0x0 0x80700000 0x0 0x10000; interrupts = GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH; clocks = axi_dma_clk; #dma-cells = 1; status = "okay" ; adi,channels { #size-cells = 0; #address-cells = 1; dma-channel@0 { reg = 0; adi,source-bus-width = 128; adi,source-bus-type = 1; adi,destination-bus-width = 32; adi,destination-bus-type = 0; }; }; }; 双路i2cOV5640设备树配置代码片段 camera @3c { compatible = "ovti,ov5640" ; pinctrl-names = "default" ; // pinctrl- 0 = pinctrl_ov5640; reg = 0x3c ; clocks = ov5640_clk; clock-names = "xclk" ; // DOVDD-supply = vgen4_reg; /* 1.8v */ // AVDD-supply = vgen3_reg; /* 2.8v */ // DVDD-supply = vgen2_reg; /* 1.5v */ powerdown-gpios = portc 8 GPIO_ACTIVE_HIGH; reset -gpios = portc 7 GPIO_ACTIVE_LOW; port { /* Parallel bus endpoint */ ov5640_out_0: endpoint { remote-endpoint = vcap_ov5640_in_0; bus-width = 8 ; data- shift = 2 ; /* lines 9:2 are used */ hsync-active = 0 ; vsync-active = 0 ; pclk-sample = 1 ; }; }; }; 性能测试 性能实测数据。 指标 实测值 理论峰值 图像处理延迟 18.7ms ≤20ms DDR吞吐量 2GB/s 2.6GB/s 功耗(全负载) 3.8W 4.2W 启动时间(Linux) 18s - 4. 场景化应用扩展 该方案可广泛应用于以下领域: 智能驾驶 :前视ADAS系统,包含车道识别和碰撞预警 工业检测 :高速AOI(自动光学检测)流水线,提升检测精度和效率 医疗影像 :内窥镜实时增强显示,支持多视角成像 机器人导航 :SLAM(同步定位与地图构建)点云加速处理,提升机器人自主导航能力 通过安路TD 2024.10开发套件,开发者能够快速移植和定制化开发,具体包括: 使用GUI图形化设计约束工具,简化硬件开发过程 调用预置的接口与处理器 IP ,加速产品开发上市时间,专注应用和算法的处理 进行 动态功耗分析(DPA)与仿真 ,确保系统的稳定性与高效性 0. One More Thing… 这里,回到我们原点,回到我们开发设计国产 FPGA SOC的初衷 ,芯片也好,模组也好,都只是开始,无论是FPGA,SOC,或者SOM, 都是为了以更快,更好,平衡成本,体积,开发周期,开发难度,人员配置等等综合因素,做出的面向解决问题的选择,最终结果是降低成本和产品力的平衡。 安路飞龙系列的问世,让我们很欣喜看见国产SOC FPGA的崛起,希望和业界开发者一起开发构建国产SOC FPGA生态, 所以选择将系列教程以知识库全部开源,共同无限进步! 米尔可能只是其中非常非常小的一个数据集,但会尽力撬动更大贡献。
  • 2024-12-27 11:29
    0 个评论
    在中国半导体产业的版图中,瑞芯微作为国内SoC芯片领跑者,凭借其在处理器芯片设计领域的深厚积累和持续创新,推出很多智能应用处理器芯片,在嵌入式系统领域得到大规模的应用。RK3588和RK3576系列作为都是瑞芯微(Rockchip)高性能处理器代表,性能如何?价格如何?作为硬件产品开发的我们,这两款产品到底有什么区别呢? CPU性能强劲 ,应用场景丰富 CPU 性能 :RK3588采用的四核Cortex - A76+四核Cortex - A55 ,而RK3576出于成本考量选用的四核Cortex - A72+四核Cortex - A53架构,并配备ARM Cortex M0的协处理器,给相关应用带来了更多可能性。 GPU性能 :RK3576采用ARM Mali G52 MC3,RK3588配备ARM Mali - G610MC4,都支持OpenGL ES 1.1、2.0和3.2,Vulkan 1.2,支持的图形标准上两者类似,但在OpenCL版本上RK3588更高(2.2对比2.1)。 NPU性能 :两者都配备了6Tops的算力,都支持int4/int8/int16/FP16/BF16/TF32等数据格式,适配多样化的AI应用场景。 内存和存储 RK3576 支持32位LP DDR 4/LPDDR4X/LPDDR5,同时支持eMMC5.1, SDI O3.0和SFC以及UFS v2.0, RK3588 支持64位 LPDDR4/LPDDR4x/LPDDR5,支持eMMC5.1;搭配HS400,SDIO3.0搭配HS200,以及支持NMe和SFC。两者在内存数据位宽上不一样(64bit对比32bit),数据传输上RK3588更有优势。 超强的视频编解码能力 编码能力RK3588最高支持8K@30fps H.264/H.265,RK3576最高支持4K@60fps H.264/H.265。解码能力RK3588支持最高8K@60fps H.265,RK3576最高支持8K@30fps。两者都具备很强的视频编解码能力,在8K的视频编解码能力上RK3588更胜一筹。 支持多屏异显 两者都支持多屏异显和各种常见的显示接口。 RK3576最多支持3屏异显和最高可支持 (4K@120 + 2.5K@60 + 2K@60) ,具有HDMI v2.1/ eDP v1.3组合接口、MIPIDSI4通道、DP v1.4和USB3.0组合(Type - C)接口等多种接口。 RK3588最高可以支持 7屏异显和 支持8K ,具有双HDMI2.1/eDP V1.4组合接口、双MIPI - DSI TX 4通道以及双DP v1.3嵌入USB 3.1且带有音频和HDCP2.x。 摄像头视频输入对比 RK3576支持最高16MPixel ISP带有HDR和3DNR RK3588配备48M Pixel ISP带有HDR和3DNR,RK3588的像素ISP分辨率更高(48M对比16M) 具备丰富的接口配置 两者都配备了丰富的接口配置,PCIe/SATA/TYPE C/ USB3.0/ USB2.0/双网口/多路串口,满足不同的产品应用需求。 总结:性价比极高的RK3576 综合性能来讲,RK3588的CPU性能更强,强AI需求建议使用RK3588;但RK3576作为瑞芯微最新推出的一款高性能SOC,它可以说极具性价比, 以30%的价格获RK3588的70%的性能 ,可用于大部分AIOT、人工智能、工业应用等场景。RK3576作为瑞芯微的又一款良心大作,是您的不二之选。
  • 热度 2
    2024-12-13 15:19
    202 次阅读|
    0 个评论
    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt-get install python3-pip 二、OpenCV手势识别步骤 ​1.图像获取 :从摄像头或其他图像源获取手部图像。使用OpenCV的VideoCapture类可以捕获视频流,或者使用imread函数加载图像。 2.图像预处理 :对图像进行预处理,以提高特征提取的准确性。常用的预处理操作包括灰度化、滤波、边缘检测、二值化、噪声去除和形态学处理等。 灰度化:将彩色图像转换为灰度图像,去除颜色信息,简化图像。 滤波:使用滤波器去除图像中的噪声。 边缘检测:使用边缘检测算法提取图像中的边缘信息。 二值化:将灰度图像转换为二值图像,将像素值分为黑色和白色。 形态学处理:使用形态学操作增强手势轮廓。 3.特征提取 :从预处理后的图像中提取手部特征。常用的特征包括形状特征、纹理特征和运动轨迹特征等。 形状特征:提取手部轮廓、面积、周长、质心等形状特征。 纹理特征:提取手部皮肤纹理、皱纹等纹理特征。 运动轨迹特征:提取手部运动轨迹、速度、加速度等运动轨迹特征。 4.分类和识别 :使用机器学习算法对提取的特征进行分类,以识别特定的手势。 三、代码实现 # -*- coding: utf-8 -*- import cv2 def reg(x): o1 = cv2.imread('paper.jpg',1) o2 = cv2.imread('rock.jpg',1) o3 = cv2.imread('scissors.jpg',1) gray1 = cv2.cvtColor(o1,cv2.COLOR_BGR2GRAY) gray2 = cv2.cvtColor(o2,cv2.COLOR_BGR2GRAY) gray3 = cv2.cvtColor(o3,cv2.COLOR_BGR2GRAY) xgray = cv2.cvtColor(x,cv2.COLOR_BGR2GRAY) ret, binary1 = cv2.threshold(gray1,127,255,cv2.THRESH_BINARY) ret, binary2 = cv2.threshold(gray2,127,255,cv2.THRESH_BINARY) ret, binary3 = cv2.threshold(gray3,127,255,cv2.THRESH_BINARY) xret, xbinary = cv2.threshold(xgray,127,255,cv2.THRESH_BINARY) contours1, hierarchy = cv2.findContours(binary1, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) contours2, hierarchy = cv2.findContours(binary2, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) contours3, hierarchy = cv2.findContours(binary3, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) xcontours, hierarchy = cv2.findContours(xbinary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) cnt1 = contours1 cnt2 = contours2 cnt3 = contours3 x = xcontours ret=[] ret.append(cv2.matchShapes(x,cnt1,1,0.0)) ret.append(cv2.matchShapes(x,cnt2,1,0.0)) ret.append(cv2.matchShapes(x,cnt3,1,0.0)) max_index = ret.index(min(ret)) #计算最大值索引 if max_index==0: r="paper" elif max_index==1: r="rock" else: r="sessiors" return r t1=cv2.imread('test1.jpg',1) t2=cv2.imread('test2.jpg',1) t3=cv2.imread('test3.jpg',1) # print(reg(t1)) # print(reg(t2)) # print(reg(t3)) # ===========显示处理结果================== org=(0,60) font = cv2.FONT_HERSHEY_SIMPLEX fontScale=2 color=(255,255,255) thickness=3 cv2.putText(t1,reg(t1),org,font,fontScale,color,thickness) cv2.putText(t2,reg(t2),org,font,fontScale,color,thickness) cv2.putText(t3,reg(t3),org,font,fontScale,color,thickness) cv2.imshow('test1',t1) cv2.imshow('test2',t2) cv2.imshow('test3',t3) cv2.waitKey() cv2.destroyAllWindows() 四、实践 1.程序运行 2、原始图像包含训练图像 3.识别结果 识别到了 剪刀 石头 布 原始图片
相关资源
  • 所需E币: 0
    时间: 2024-2-24 22:36
    大小: 1.84MB
    上传者: 电子阔少
    米尔这款首发的国产核心板批量上市了!全志T527.docx
  • 所需E币: 4
    时间: 2021-3-16 00:17
    大小: 21.05MB
    上传者: LGWU1995
    半导体中的深能级杂质(A.G.米尔恩斯)..pdf
  • 所需E币: 0
    时间: 2020-3-9 10:59
    大小: 1.49MB
    STM32MP1系列的出现吸引了很多STM32的新老用户的关注,但是很多的人都会担心一个问题:以前是基于CortexM系列MCU进行开发的,对于cortex-A架构的处理器以及Linux系统都不熟悉。如何高效地从MCU跨越到MPU是大家都关心的话题。作为ST官方合作伙伴,米尔电子推出了开发套件MYD-YA157C,该套件由核心板MYC-YA157C和底板MYB-YA157C组成。该平台采用STM32MP157系列高性能处理器,提供了高性能显示,千兆以太网,WIFI/蓝牙,RS232/RS485/CAN等丰富接口。贴合应用场景的产品定义,稳定可靠的硬件设计,丰富的软件和学习资源,能帮助大家轻松实现跨越,是一块值得推荐的STM32MP1开发板。
  • 所需E币: 0
    时间: 2020-3-9 11:01
    大小: 1.15MB
    近几年来,随着AIOT技术的演进以及工业4.0的飞速发展,强大性能,成本领先,供货周期长的嵌入式板卡已经成为这两类设备硬件开发的普遍需求。为响应行业应用和满足客户需求,米尔推出了基于NXP公司i.MX8MMini系列芯片的MYC-C8MMX系列核心板及开发板,现已隆重上市发售。MYD-C8MMX开发板提供LVDS显示(单路/双路)、MIPI-DSI信号引出、MIPI-CSI摄像头接口、支持音频输入输出、千兆网、多路USB、多串口、WIFI及蓝牙模块等丰富的接口;同时核心板批量性价比高,稳定供货周期长达10年。
  • 所需E币: 0
    时间: 2020-3-9 11:05
    大小: 1002.49KB
    针对网关市场的庞大市场需求,米尔推出了基于TIAM335x系列处理器的开发平台MYD-C335X-GW,该平台采用核心板+底板的设计,其中MYC-C335X-GW核心板集成了电源管理芯片、DDR3/DDR3L、eMMC/NandFlash、EEPROM、以及160PIN的板对板信号扩展(80*2);底板提供了12V电源供电、双千兆以太网、一路光口、LVDS、RGBLCD、用于4GLTE的MINIPCI-E接口、WIFI及蓝牙模块、USBHOST、RS485、RS232等外设接口。