构建以太网电路软硬件验证平台

2023-02-19 12:25中国电子科技集团公司第五十八研究所杭万里何光旭
数字技术与应用 2023年1期
关键词:寄存器路由器以太网

中国电子科技集团公司第五十八研究所 杭万里 何光旭

公司设计的一款电路包含有网络模块。该网络模块包含介质访问控制层(MAC 层)即网络开放式系统互联(OSI)七层模型当中的数据链路层。通过微控制器STM32F407 和物理层收发器DP83848 构建一个直连的电气和电子工程师协会标准(IEEE802.3)以太网电路软硬件验证平台。利用该平台可以进行数据链路层的验证,不仅可以构建正确的协议帧数据,还可以构建错误的协议帧数据,从而对网络模块进行充分验证。

网络OSI 有七层模型。普通开发者只关心应用层、表示层、会话层、传输层、网络层。电脑和嵌入式系统自带的十兆、百兆自适应网口,应用层发送的数据自动嵌入的校验位,可以发送正确的IEEE802.3 的MAC 协议帧。一般情况下,无法发出错误的协议帧。

电路设计更多关注物理层、数据链路层。公司设计了一款带MAC 层的ARM 电路,需要进行寄存器级的功能验证。不仅需要验证正确发送接收数据,同时需要验证错误发送和接收数据。而发送和接收错误数据是电路验证的重点。因此构建一个寄存器级的软硬件测试验证平台成为验证电路的一个迫切需求。

1 基本原理

寄存器级的软硬件测试验证平台是基于微控制器STM32F407 和物理层收发器DP83848 构建的。STM32F407内置MAC 层和DMA 控制器,但不含物理层,需要外置物理层芯片,这里选择物理层收发器DP83838。

STM32F407 的网络编程,一般在轻型IP 协议栈(LwIP)进行开发。而电路的验证,必须去除掉LwIP 协议栈,才能满足功能验证的要求。本文通过STM32F407 和DP83848 成功构建了的软硬件测试验证平台,并且对设计的电路进行了相应的验证。

2 硬件测试验证平台设计

如果网络数据包通过路由器进行转发,会夹杂很多路由器上的其他网络数据包。采用直接互连的方式,可以确保排除掉其他的网络数据包的干扰。待验证电路和STM32F407 的网络采用了直接互连的方式。整体硬件设计框架如图1 所示。

图1 硬件整体框架Fig.1 Overall hardware framework

STM32F407 带有DMA、MAC802.3 控制器,其中介质独立接口 (MII) 和简化介质独立接口 (RMII)区别为MII 频率最高位25MHz,数据位为4位,RMII 频率最高达50MHz,数据为2位,二者传输速率最高均能达到100Mbps。MII 接口共需17 根连线,RMII 接口只需9 根连线,实现功能一样。由于RMII 硬件接口比MII 少近一半,所以常规使用优先选择RMII。但电路验证时,2 种接口模式都必须验证到。DP83848 支持IEEE802.3 的MII和RMII 接口,与待验证电路和STM32F407 接口匹配。通过SMI 接口对DP83848 进行配置。并且DP83848 具备发送和接收端口自动翻转功能,所以网线可交叉连接,也可直连连接。由于MII 和RMII 的时钟不一样,采用跳线帽的方式进行时钟选择。这里需要注意的是RMII 需要的50MHz 频率由有源晶振产生,为了同步,需将50MHz 时钟同时送至STM32F407 和DP83848。最终做出来硬件实物如图2 所示。两个网口通过网线连接,图片的左侧为两个串口的调试口。二者网络没有在板内直连,是考虑到后期可连接到路由器,接入网络,从而进行网络通用测试以及开发。

图2 硬件实物Fig.2 Hardware object

3 测试验证平台环境搭建

要先搭建软硬件测试平台的测试环境,包含了测试硬件板、仿真器、上位机和测试代码。

3.1 测试环境硬件准备

硬件平台首先要确保硬件工作正常。两路网络接口都接到路由器,与上位机进行通讯测试,从而确保硬件正确。

3.2 仿真器

由于调试是在一台电脑上同时调试2 个电路,所以采用2 种不同的仿真器,可区分目标电路,2 种仿真器分别为J-LINK OB V2.0 和ST-LINK/V2 版本。对于J-LINK OB 只需要GND、SWCLK、SWDIO 三根线即可;对于STLINK/V2 则需要GND、SWCLK、SWDIO、NRST、VDD(3.3V)五根线。

3.3 软件测试

将板卡两个网口连接到路由器,电脑也与路由器相连。编写上位机服务器程序,如图3 所示。测试平台是通过UPD 方式进行测试,每隔0.5s 发送数据。

图3 联通测试界面Fig.3 Unicom test interface

首先电脑通过路由器,向电路发送一个UDP 数据包,电路接收到的数据后,在数据后面加上接收到的次数重新打包,然后原路返回发送给电脑,电脑显示出接收数据,从而形成发送和接收一个闭环。由于UDP 是无需握手的,所以得通过发送和接收的闭环去验证了发送和接收链路正确性。

4 电路验证

4.1 硬件连接

将上下两个网口相互连接,网线可以是交叉连接,也可以直连连接。

4.2 功能和寄存器测试

验证内容主要包含SMI、RMII、MII 部分,MAC 部分,DMA 验证。

4.2.1 MII 和RMII 验证

以太网外设包括带专用 DMA 控制器的 MAC802.3。它支持MII 和RMII。需验证2 种接口都工作正常。

在软件代码里定义两个宏,MII_TEST 和RMII_TEST进行切换。

4.2.2 SMI 验证

站管理接口 (SMI) 允许电路程序通过2 线制,时钟线和数据线进行访问DP83848 的寄存器。通过对DP83848的配置,从而验证了SMI 接口,该接口类似于IIC 总线。

4.2.3 MAC 过滤验证

MAC 过滤分为广播、单播、多播的目标地址过滤,源地址过滤。目标地址过滤主要设置寄存器中的相应的BIT位,有PM、HPF、HU、DAIF、HM、PAM、BFD。源地址过滤主要设置寄存器中的相应的BIT位,有PM、SAIF、SAF。举例单播模式1,设置接收端PM 设置为1。发送端发送地址设置为FF-FF-FF-FF-FF-FF。验证结果是从串口打印出允许过滤的数据包,不允许的数据包将接收不到。其他过滤模式这里不再赘述。

4.2.4 MAC 唤醒

包含远程唤醒帧和魔术数据包两种方式。魔术唤醒数据格式首先是6 次0xFF,然后接着是16 次目标地址。远程唤醒,首先将网络进入睡眠状态,然后延时6秒,没有数据进入,然后开启中断唤醒,随即数据可以接收。在DEBUG 控制字中可以发现有中断标志出现。

4.2.5 10/100Mbps 速度

对10/100Mbps 速度的验证,需要对MAC 和PHY都进行设置。10/100Mbps 的速率变化可以在路由器中交换器部分看到。

4.2.6 DMA 验证

DMA 具有独立的发送和接收引擎以及相应的CSR(控制和状态寄存器)空间。发送引擎将数据从系统存储器传送到Tx 的FIFO,而接收引擎将数据从Rx 的FIFO 传送到系统存储器。DMA 可以在CPU 完全不干预的情况下,通过描述符有效地将数据从源传送到目标。DMA 专为打包的数据传送(如以太网中的帧)而设计。该控制器经过编程后,可在完成帧发送和接收传送操作时以及其他正常或错误条件下产生CPU 中断。测试包含DMA 发送地址、DMA 接收地址、DMA 中断、DAM 补足、DAM 转发错误帧、描述符、IPV4 有效及IP 有效负载字节(UPD)、IPV4 有效负载错误、IP 报头错误、IPV4 有效负载错误(UDP)。

DMA 转发错误帧的发送端,将ETH_DMAOMR 的转发错误帧FEF 置1,并且将发送的TDES0 的CRC 禁止。

如图4 所示是一个DMA 转发错误帧的结果。

图4 DMA 转发错误帧结果Fig.4 DMA forwarding error frame results

其中的接收描述字符0RDES0 为0x00408722,即CRC 错误标志位CE 为1。其他测试不再赘述。

5 结语

本文简述了如何构建一个IEEE802.3 以太网寄存器级软硬件验证平台。硬件部分包含硬件设计、硬件测试、上位机、UDP 发送接收测试。软件验证包含SMI、RMII、MII 部分,MAC 部分,DMA 部分的验证。

由于网络代码一般通过内嵌LwIP 协议栈进行上层应用开发,无法进行电路验证,本文剥离了LwIP 协议栈,直接对寄存器级进行操作,从而验证电路的每一个寄存器的工作结果,为电路设计提供了有力的支撑。

引用

[1] 毛臻,张春平,潘福跃,等.基于Si P技术的网络测量探针芯片集成设计[J].电子与封装,2022,22(4):81-86.

[2] 吴晓庆,郑骏.基于4G网络的视频加密传输系统设计[J].电子与封装,2021,21(2):91-95.

[3] 齐盛.基于STM32芯片的分布式电机测试系统[J].电子与封装,2012,12(4):23-26.

[4] 范继聪,惠锋,徐彦峰,等.一种快速验证FPGA互连线连接正确性的方法[J].电子与封装,2018,18(4):30-32.

[5] 张超,王志超,林岩.基于LwIP协议栈的嵌入式网络控制系统设计[J].单片机与嵌入式系统应用,2019(2):34-40.

[6] 刘培刚,杜靖中.基于μC/OS-Ⅱ和LwIP 嵌入式设备以太网通信研究与实现[J].电子设计工程,2017(25)16:129-133.

[7] 姜艳茹,孟令军,尚桠朝,等.基于STM32的图像采集与网络传输系统设计[J].检测技术与数据处理,2020,33(12):45-53.

[8] 王全全,冯博,朱辉.基于STM32 和LWIP 的井场传感器远程监控系统[J].工业控制计算机,2019,32(4):13-14.

猜你喜欢
寄存器路由器以太网
买千兆路由器看接口参数
路由器每天都要关
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
Lite寄存器模型的设计与实现
无线路由器的保养方法
分簇结构向量寄存器分配策略研究*
谈实时以太网EtherCAT技术在变电站自动化中的应用
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
无线路由器辐射可忽略