中國電子科技集團(tuán)公司第五十八研究所 杭萬里 何光旭
公司設(shè)計的一款電路包含有網(wǎng)絡(luò)模塊。該網(wǎng)絡(luò)模塊包含介質(zhì)訪問控制層(MAC 層)即網(wǎng)絡(luò)開放式系統(tǒng)互聯(lián)(OSI)七層模型當(dāng)中的數(shù)據(jù)鏈路層。通過微控制器STM32F407 和物理層收發(fā)器DP83848 構(gòu)建一個直連的電氣和電子工程師協(xié)會標(biāo)準(zhǔn)(IEEE802.3)以太網(wǎng)電路軟硬件驗證平臺。利用該平臺可以進(jìn)行數(shù)據(jù)鏈路層的驗證,不僅可以構(gòu)建正確的協(xié)議幀數(shù)據(jù),還可以構(gòu)建錯誤的協(xié)議幀數(shù)據(jù),從而對網(wǎng)絡(luò)模塊進(jìn)行充分驗證。
網(wǎng)絡(luò)OSI 有七層模型。普通開發(fā)者只關(guān)心應(yīng)用層、表示層、會話層、傳輸層、網(wǎng)絡(luò)層。電腦和嵌入式系統(tǒng)自帶的十兆、百兆自適應(yīng)網(wǎng)口,應(yīng)用層發(fā)送的數(shù)據(jù)自動嵌入的校驗位,可以發(fā)送正確的IEEE802.3 的MAC 協(xié)議幀。一般情況下,無法發(fā)出錯誤的協(xié)議幀。
電路設(shè)計更多關(guān)注物理層、數(shù)據(jù)鏈路層。公司設(shè)計了一款帶MAC 層的ARM 電路,需要進(jìn)行寄存器級的功能驗證。不僅需要驗證正確發(fā)送接收數(shù)據(jù),同時需要驗證錯誤發(fā)送和接收數(shù)據(jù)。而發(fā)送和接收錯誤數(shù)據(jù)是電路驗證的重點。因此構(gòu)建一個寄存器級的軟硬件測試驗證平臺成為驗證電路的一個迫切需求。
寄存器級的軟硬件測試驗證平臺是基于微控制器STM32F407 和物理層收發(fā)器DP83848 構(gòu)建的。STM32F407內(nèi)置MAC 層和DMA 控制器,但不含物理層,需要外置物理層芯片,這里選擇物理層收發(fā)器DP83838。
STM32F407 的網(wǎng)絡(luò)編程,一般在輕型IP 協(xié)議棧(LwIP)進(jìn)行開發(fā)。而電路的驗證,必須去除掉LwIP 協(xié)議棧,才能滿足功能驗證的要求。本文通過STM32F407 和DP83848 成功構(gòu)建了的軟硬件測試驗證平臺,并且對設(shè)計的電路進(jìn)行了相應(yīng)的驗證。
如果網(wǎng)絡(luò)數(shù)據(jù)包通過路由器進(jìn)行轉(zhuǎn)發(fā),會夾雜很多路由器上的其他網(wǎng)絡(luò)數(shù)據(jù)包。采用直接互連的方式,可以確保排除掉其他的網(wǎng)絡(luò)數(shù)據(jù)包的干擾。待驗證電路和STM32F407 的網(wǎng)絡(luò)采用了直接互連的方式。整體硬件設(shè)計框架如圖1 所示。
圖1 硬件整體框架Fig.1 Overall hardware framework
STM32F407 帶有DMA、MAC802.3 控制器,其中介質(zhì)獨立接口 (MII) 和簡化介質(zhì)獨立接口 (RMII)區(qū)別為MII 頻率最高位25MHz,數(shù)據(jù)位為4位,RMII 頻率最高達(dá)50MHz,數(shù)據(jù)為2位,二者傳輸速率最高均能達(dá)到100Mbps。MII 接口共需17 根連線,RMII 接口只需9 根連線,實現(xiàn)功能一樣。由于RMII 硬件接口比MII 少近一半,所以常規(guī)使用優(yōu)先選擇RMII。但電路驗證時,2 種接口模式都必須驗證到。DP83848 支持IEEE802.3 的MII和RMII 接口,與待驗證電路和STM32F407 接口匹配。通過SMI 接口對DP83848 進(jìn)行配置。并且DP83848 具備發(fā)送和接收端口自動翻轉(zhuǎn)功能,所以網(wǎng)線可交叉連接,也可直連連接。由于MII 和RMII 的時鐘不一樣,采用跳線帽的方式進(jìn)行時鐘選擇。這里需要注意的是RMII 需要的50MHz 頻率由有源晶振產(chǎn)生,為了同步,需將50MHz 時鐘同時送至STM32F407 和DP83848。最終做出來硬件實物如圖2 所示。兩個網(wǎng)口通過網(wǎng)線連接,圖片的左側(cè)為兩個串口的調(diào)試口。二者網(wǎng)絡(luò)沒有在板內(nèi)直連,是考慮到后期可連接到路由器,接入網(wǎng)絡(luò),從而進(jìn)行網(wǎng)絡(luò)通用測試以及開發(fā)。
圖2 硬件實物Fig.2 Hardware object
要先搭建軟硬件測試平臺的測試環(huán)境,包含了測試硬件板、仿真器、上位機(jī)和測試代碼。
硬件平臺首先要確保硬件工作正常。兩路網(wǎng)絡(luò)接口都接到路由器,與上位機(jī)進(jìn)行通訊測試,從而確保硬件正確。
由于調(diào)試是在一臺電腦上同時調(diào)試2 個電路,所以采用2 種不同的仿真器,可區(qū)分目標(biāo)電路,2 種仿真器分別為J-LINK OB V2.0 和ST-LINK/V2 版本。對于J-LINK OB 只需要GND、SWCLK、SWDIO 三根線即可;對于STLINK/V2 則需要GND、SWCLK、SWDIO、NRST、VDD(3.3V)五根線。
將板卡兩個網(wǎng)口連接到路由器,電腦也與路由器相連。編寫上位機(jī)服務(wù)器程序,如圖3 所示。測試平臺是通過UPD 方式進(jìn)行測試,每隔0.5s 發(fā)送數(shù)據(jù)。
圖3 聯(lián)通測試界面Fig.3 Unicom test interface
首先電腦通過路由器,向電路發(fā)送一個UDP 數(shù)據(jù)包,電路接收到的數(shù)據(jù)后,在數(shù)據(jù)后面加上接收到的次數(shù)重新打包,然后原路返回發(fā)送給電腦,電腦顯示出接收數(shù)據(jù),從而形成發(fā)送和接收一個閉環(huán)。由于UDP 是無需握手的,所以得通過發(fā)送和接收的閉環(huán)去驗證了發(fā)送和接收鏈路正確性。
將上下兩個網(wǎng)口相互連接,網(wǎng)線可以是交叉連接,也可以直連連接。
驗證內(nèi)容主要包含SMI、RMII、MII 部分,MAC 部分,DMA 驗證。
4.2.1 MII 和RMII 驗證
以太網(wǎng)外設(shè)包括帶專用 DMA 控制器的 MAC802.3。它支持MII 和RMII。需驗證2 種接口都工作正常。
在軟件代碼里定義兩個宏,MII_TEST 和RMII_TEST進(jìn)行切換。
4.2.2 SMI 驗證
站管理接口 (SMI) 允許電路程序通過2 線制,時鐘線和數(shù)據(jù)線進(jìn)行訪問DP83848 的寄存器。通過對DP83848的配置,從而驗證了SMI 接口,該接口類似于IIC 總線。
4.2.3 MAC 過濾驗證
MAC 過濾分為廣播、單播、多播的目標(biāo)地址過濾,源地址過濾。目標(biāo)地址過濾主要設(shè)置寄存器中的相應(yīng)的BIT位,有PM、HPF、HU、DAIF、HM、PAM、BFD。源地址過濾主要設(shè)置寄存器中的相應(yīng)的BIT位,有PM、SAIF、SAF。舉例單播模式1,設(shè)置接收端PM 設(shè)置為1。發(fā)送端發(fā)送地址設(shè)置為FF-FF-FF-FF-FF-FF。驗證結(jié)果是從串口打印出允許過濾的數(shù)據(jù)包,不允許的數(shù)據(jù)包將接收不到。其他過濾模式這里不再贅述。
4.2.4 MAC 喚醒
包含遠(yuǎn)程喚醒幀和魔術(shù)數(shù)據(jù)包兩種方式。魔術(shù)喚醒數(shù)據(jù)格式首先是6 次0xFF,然后接著是16 次目標(biāo)地址。遠(yuǎn)程喚醒,首先將網(wǎng)絡(luò)進(jìn)入睡眠狀態(tài),然后延時6秒,沒有數(shù)據(jù)進(jìn)入,然后開啟中斷喚醒,隨即數(shù)據(jù)可以接收。在DEBUG 控制字中可以發(fā)現(xiàn)有中斷標(biāo)志出現(xiàn)。
4.2.5 10/100Mbps 速度
對10/100Mbps 速度的驗證,需要對MAC 和PHY都進(jìn)行設(shè)置。10/100Mbps 的速率變化可以在路由器中交換器部分看到。
4.2.6 DMA 驗證
DMA 具有獨立的發(fā)送和接收引擎以及相應(yīng)的CSR(控制和狀態(tài)寄存器)空間。發(fā)送引擎將數(shù)據(jù)從系統(tǒng)存儲器傳送到Tx 的FIFO,而接收引擎將數(shù)據(jù)從Rx 的FIFO 傳送到系統(tǒng)存儲器。DMA 可以在CPU 完全不干預(yù)的情況下,通過描述符有效地將數(shù)據(jù)從源傳送到目標(biāo)。DMA 專為打包的數(shù)據(jù)傳送(如以太網(wǎng)中的幀)而設(shè)計。該控制器經(jīng)過編程后,可在完成幀發(fā)送和接收傳送操作時以及其他正?;蝈e誤條件下產(chǎn)生CPU 中斷。測試包含DMA 發(fā)送地址、DMA 接收地址、DMA 中斷、DAM 補(bǔ)足、DAM 轉(zhuǎn)發(fā)錯誤幀、描述符、IPV4 有效及IP 有效負(fù)載字節(jié)(UPD)、IPV4 有效負(fù)載錯誤、IP 報頭錯誤、IPV4 有效負(fù)載錯誤(UDP)。
DMA 轉(zhuǎn)發(fā)錯誤幀的發(fā)送端,將ETH_DMAOMR 的轉(zhuǎn)發(fā)錯誤幀F(xiàn)EF 置1,并且將發(fā)送的TDES0 的CRC 禁止。
如圖4 所示是一個DMA 轉(zhuǎn)發(fā)錯誤幀的結(jié)果。
圖4 DMA 轉(zhuǎn)發(fā)錯誤幀結(jié)果Fig.4 DMA forwarding error frame results
其中的接收描述字符0RDES0 為0x00408722,即CRC 錯誤標(biāo)志位CE 為1。其他測試不再贅述。
本文簡述了如何構(gòu)建一個IEEE802.3 以太網(wǎng)寄存器級軟硬件驗證平臺。硬件部分包含硬件設(shè)計、硬件測試、上位機(jī)、UDP 發(fā)送接收測試。軟件驗證包含SMI、RMII、MII 部分,MAC 部分,DMA 部分的驗證。
由于網(wǎng)絡(luò)代碼一般通過內(nèi)嵌LwIP 協(xié)議棧進(jìn)行上層應(yīng)用開發(fā),無法進(jìn)行電路驗證,本文剝離了LwIP 協(xié)議棧,直接對寄存器級進(jìn)行操作,從而驗證電路的每一個寄存器的工作結(jié)果,為電路設(shè)計提供了有力的支撐。
引用
[1] 毛臻,張春平,潘福躍,等.基于Si P技術(shù)的網(wǎng)絡(luò)測量探針芯片集成設(shè)計[J].電子與封裝,2022,22(4):81-86.
[2] 吳曉慶,鄭駿.基于4G網(wǎng)絡(luò)的視頻加密傳輸系統(tǒng)設(shè)計[J].電子與封裝,2021,21(2):91-95.
[3] 齊盛.基于STM32芯片的分布式電機(jī)測試系統(tǒng)[J].電子與封裝,2012,12(4):23-26.
[4] 范繼聰,惠鋒,徐彥峰,等.一種快速驗證FPGA互連線連接正確性的方法[J].電子與封裝,2018,18(4):30-32.
[5] 張超,王志超,林巖.基于LwIP協(xié)議棧的嵌入式網(wǎng)絡(luò)控制系統(tǒng)設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2019(2):34-40.
[6] 劉培剛,杜靖中.基于μC/OS-Ⅱ和LwIP 嵌入式設(shè)備以太網(wǎng)通信研究與實現(xiàn)[J].電子設(shè)計工程,2017(25)16:129-133.
[7] 姜艷茹,孟令軍,尚椏朝,等.基于STM32的圖像采集與網(wǎng)絡(luò)傳輸系統(tǒng)設(shè)計[J].檢測技術(shù)與數(shù)據(jù)處理,2020,33(12):45-53.
[8] 王全全,馮博,朱輝.基于STM32 和LWIP 的井場傳感器遠(yuǎn)程監(jiān)控系統(tǒng)[J].工業(yè)控制計算機(jī),2019,32(4):13-14.