中國電子科技集團公司第五十八研究所 杭萬里 何光旭
公司設計的一款電路包含有網絡模塊。該網絡模塊包含介質訪問控制層(MAC 層)即網絡開放式系統互聯(OSI)七層模型當中的數據鏈路層。通過微控制器STM32F407 和物理層收發器DP83848 構建一個直連的電氣和電子工程師協會標準(IEEE802.3)以太網電路軟硬件驗證平臺。利用該平臺可以進行數據鏈路層的驗證,不僅可以構建正確的協議幀數據,還可以構建錯誤的協議幀數據,從而對網絡模塊進行充分驗證。
網絡OSI 有七層模型。普通開發者只關心應用層、表示層、會話層、傳輸層、網絡層。電腦和嵌入式系統自帶的十兆、百兆自適應網口,應用層發送的數據自動嵌入的校驗位,可以發送正確的IEEE802.3 的MAC 協議幀。一般情況下,無法發出錯誤的協議幀。
電路設計更多關注物理層、數據鏈路層。公司設計了一款帶MAC 層的ARM 電路,需要進行寄存器級的功能驗證。不僅需要驗證正確發送接收數據,同時需要驗證錯誤發送和接收數據。而發送和接收錯誤數據是電路驗證的重點。因此構建一個寄存器級的軟硬件測試驗證平臺成為驗證電路的一個迫切需求。
寄存器級的軟硬件測試驗證平臺是基于微控制器STM32F407 和物理層收發器DP83848 構建的。STM32F407內置MAC 層和DMA 控制器,但不含物理層,需要外置物理層芯片,這里選擇物理層收發器DP83838。
STM32F407 的網絡編程,一般在輕型IP 協議棧(LwIP)進行開發。而電路的驗證,必須去除掉LwIP 協議棧,才能滿足功能驗證的要求。本文通過STM32F407 和DP83848 成功構建了的軟硬件測試驗證平臺,并且對設計的電路進行了相應的驗證。
如果網絡數據包通過路由器進行轉發,會夾雜很多路由器上的其他網絡數據包。采用直接互連的方式,可以確保排除掉其他的網絡數據包的干擾。待驗證電路和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
要先搭建軟硬件測試平臺的測試環境,包含了測試硬件板、仿真器、上位機和測試代碼。
硬件平臺首先要確保硬件工作正常。兩路網絡接口都接到路由器,與上位機進行通訊測試,從而確保硬件正確。
由于調試是在一臺電腦上同時調試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 所示。測試平臺是通過UPD 方式進行測試,每隔0.5s 發送數據。

圖3 聯通測試界面Fig.3 Unicom test interface
首先電腦通過路由器,向電路發送一個UDP 數據包,電路接收到的數據后,在數據后面加上接收到的次數重新打包,然后原路返回發送給電腦,電腦顯示出接收數據,從而形成發送和接收一個閉環。由于UDP 是無需握手的,所以得通過發送和接收的閉環去驗證了發送和接收鏈路正確性。
將上下兩個網口相互連接,網線可以是交叉連接,也可以直連連接。
驗證內容主要包含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。其他測試不再贅述。
本文簡述了如何構建一個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.