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