天脈1下龍芯1B網(wǎng)卡驅(qū)動設(shè)計與實現(xiàn)_第1頁
天脈1下龍芯1B網(wǎng)卡驅(qū)動設(shè)計與實現(xiàn)_第2頁
天脈1下龍芯1B網(wǎng)卡驅(qū)動設(shè)計與實現(xiàn)_第3頁
天脈1下龍芯1B網(wǎng)卡驅(qū)動設(shè)計與實現(xiàn)_第4頁
天脈1下龍芯1B網(wǎng)卡驅(qū)動設(shè)計與實現(xiàn)_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

天脈1下龍芯1B網(wǎng)卡驅(qū)動設(shè)計與實梅濤;王宏偉;麥先根【摘要】針對某嵌入式項目需要實現(xiàn)基于龍芯1B處理器的計算和以太網(wǎng)通信功能.文中采用龍心1B處理器集成兩路千兆以太網(wǎng),基于天脈1嵌入式實時操作系統(tǒng),設(shè)計實現(xiàn)了龍芯1B處理器平臺下雙網(wǎng)卡以太網(wǎng)驅(qū)動.網(wǎng)卡驅(qū)動可同時支持基于以太網(wǎng)的調(diào)試和通信功能;也可通過一路網(wǎng)卡進行調(diào)試,同時使用另夕卜一路網(wǎng)卡進行通信.實驗結(jié)果證明,所設(shè)計實現(xiàn)的以太網(wǎng)驅(qū)動功能正確,在天脈1嵌入式操作系統(tǒng)下,能正確實現(xiàn)對龍芯1B處理器兩路千兆網(wǎng)卡的控制網(wǎng)卡驅(qū)動能正確,可靠地工作,以太網(wǎng)通信功能正常.【期刊名稱】《電子科技》【年(卷),期】2016(029)010【總頁數(shù)】4頁(P54-57)【關(guān)鍵詞】天脈1操作系統(tǒng);龍芯1B處理器;以太網(wǎng)驅(qū)動;設(shè)計與實現(xiàn)【作者】梅濤;王宏偉;麥先根【作者單位】中航工業(yè)西安計算技術(shù)研究所基礎(chǔ)軟件室,陜西西安710068;中航工業(yè)西安計算技術(shù)研究所基礎(chǔ)軟件室,陜西西安710068;中航工業(yè)西安計算技術(shù)研究所基礎(chǔ)軟件室,陜西西安710068【正文語種】中文【中圖分類】TP316龍芯1B[1]是基于MIPS[2]架構(gòu)的SOC[3],MIPS架構(gòu)只有LOAD/STORE訪存指令,在指令執(zhí)行的過程中要求嚴格的按4字節(jié)對齊。隨著國產(chǎn)化軟硬件的推進,龍芯處理器在控制領(lǐng)域的使用越來越廣泛。天脈1操作系統(tǒng)是一款嵌入式實時操作系統(tǒng),具有高可靠、實時性等特點。天脈1操作系統(tǒng)提供基于BSD4.4[4]的以太網(wǎng)協(xié)議棧功能。某項目需要基于天脈1操作系統(tǒng)進行龍芯1B處理器的適配工作。龍芯1B處理器在外圍集成了兩個千兆的以太網(wǎng)控制器,需要提供獨立的網(wǎng)卡驅(qū)動,用于支持以太網(wǎng)通信功能。天脈1操作系統(tǒng)的網(wǎng)絡(luò)驅(qū)動模型[5]如圖1所示。為了實現(xiàn)多設(shè)備支持,在網(wǎng)絡(luò)層協(xié)議與物理設(shè)備層之間提供了一個中間層,用于簡化網(wǎng)卡驅(qū)動的設(shè)計。中間層實現(xiàn)網(wǎng)絡(luò)協(xié)議層與具體網(wǎng)卡驅(qū)動之間的隔離,同時實現(xiàn)驅(qū)動與協(xié)議層之間的數(shù)據(jù)和指令的轉(zhuǎn)發(fā)。該層為具體驅(qū)動的功能抽象,實現(xiàn)上層網(wǎng)絡(luò)協(xié)議與底層設(shè)備之間的解耦,為設(shè)備和協(xié)議提供良好的擴展性。龍芯1B集成兩路10/100/1000M自適應(yīng)的以太網(wǎng)適配器。兩路網(wǎng)卡設(shè)備均兼容IEEE802.3標準。對網(wǎng)卡PHY芯片提供千兆模式(RGMII)[6]和百兆(MII)接口。兩路網(wǎng)卡均支持半雙工/全雙工的工作模式,半雙工模式下,支持沖突檢測與重傳機制(CSMA/CD)[6]O支持CRC校驗碼的自動生成和校驗的功能。為實現(xiàn)對龍芯1B的兩路以太網(wǎng)控制器GMAC0/GMAC1的控制和驅(qū)動。根據(jù)使用需求配置以太網(wǎng)控制器的通信速率為百兆或者千兆模式。連接外部百兆PHY時,驅(qū)動中要復用兩路脈沖信號和一路時鐘信號。通過以太網(wǎng)控制器的GMAC寄存器和DMA寄存器,為兩路物理網(wǎng)卡設(shè)置通信使用的MAC地址和DMA地址。驅(qū)動程序中通過DMA描述符實現(xiàn)網(wǎng)卡設(shè)備與上層協(xié)議之間的數(shù)據(jù)交互。驅(qū)動中DMA描述符記錄網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存地址和狀態(tài)。網(wǎng)卡驅(qū)動中使用不同的DMA描述符定義接收數(shù)據(jù)描述符和發(fā)送數(shù)據(jù)描述符。驅(qū)動中定義的DMA描述符的格式如圖2所示,每一個DMA描述符包含兩個數(shù)據(jù)緩沖,兩個字節(jié)計數(shù)緩沖和兩個指向數(shù)據(jù)緩沖地址的指針。驅(qū)動設(shè)計過程中必須保證DMA描述符的地址與系統(tǒng)總線的位寬對齊,同時網(wǎng)絡(luò)字節(jié)序與系統(tǒng)字節(jié)序相同,龍芯1B處理器默認為小端模式。天脈1操作系統(tǒng)下,通過內(nèi)存緩沖mbuf(memorybuffer)[7]實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)包的管理和維護。設(shè)計實現(xiàn)的mbuf由包頭和數(shù)據(jù)緩沖構(gòu)成,數(shù)據(jù)包頭由mBlk結(jié)構(gòu)描述,數(shù)據(jù)緩沖由clBlk結(jié)構(gòu)描述。每個clBlk結(jié)構(gòu)對應(yīng)一個數(shù)據(jù)簇,數(shù)據(jù)簇表示具體的數(shù)據(jù)塊的構(gòu)成;通過mBlk索引clBlk結(jié)構(gòu),實現(xiàn)由不同的數(shù)據(jù)塊構(gòu)成網(wǎng)絡(luò)數(shù)據(jù)包的功能。網(wǎng)絡(luò)數(shù)據(jù)包的構(gòu)成如圖3所示。網(wǎng)絡(luò)數(shù)據(jù)包的構(gòu)造中,不同的mBlk結(jié)構(gòu)通過索引同一個clBlk結(jié)構(gòu),實現(xiàn)對共享數(shù)據(jù)塊的引用。通信過程中,通過傳遞mBlk結(jié)構(gòu)實現(xiàn)數(shù)據(jù)交換的目的。同時在clBlk控制塊中維護當前數(shù)據(jù)簇的引用計數(shù)[8],當數(shù)據(jù)簇的引用計數(shù)為0時,表示當前數(shù)據(jù)簇不再被使用,此時釋放對應(yīng)的數(shù)據(jù)簇空間。天脈1操作系統(tǒng)下,網(wǎng)卡驅(qū)動需要實現(xiàn)以下功能模塊:(1)網(wǎng)卡設(shè)備初始化;(2)網(wǎng)卡驅(qū)動空間初始化;(3)網(wǎng)卡數(shù)據(jù)轉(zhuǎn)發(fā);(4)網(wǎng)卡設(shè)備啟動。龍芯1B以太網(wǎng)控制器初始化過程如圖4所示。網(wǎng)卡設(shè)備初始化主要完成MAC層和PHY層的初始化。設(shè)置GMAC的配置參數(shù),完成網(wǎng)卡MAC基地址,DMA基地址的配置,同時完成PHY基址的設(shè)置,并將配置參數(shù)設(shè)置到網(wǎng)卡驅(qū)動控制結(jié)構(gòu)中。保證GMAC能夠正確地訪問對應(yīng)的PHY芯片,讀取網(wǎng)卡的MAC寄存器,鏈路狀態(tài),速率以及工作模式等信息。在設(shè)備初始化的過程中,同時包括初始化網(wǎng)卡的數(shù)據(jù)過濾策略,組播和多播策略;數(shù)據(jù)轉(zhuǎn)發(fā)控制策略以及網(wǎng)卡時鐘的初始化等工作。具體細節(jié)參考龍芯1B以太網(wǎng)控制器的用戶手冊。網(wǎng)卡MAC層初始化過程中,設(shè)置網(wǎng)卡設(shè)備的MAC地址。龍芯1B集成了兩個以太網(wǎng)控制器,在設(shè)置MAC地址的時候,針對不同的以太網(wǎng)控制器設(shè)置不同的MAC地址。在天脈1操作系統(tǒng)下,其中一路網(wǎng)卡實現(xiàn)通信與調(diào)試共用,通過獲取調(diào)試代理為網(wǎng)卡配置的MAC地址,實現(xiàn)MAC地址的獨立性,實現(xiàn)共用的目的;驅(qū)動中只需為另一路網(wǎng)卡設(shè)置獨立的MAC地址,并將MAC地址信息設(shè)置到網(wǎng)卡驅(qū)動控制結(jié)構(gòu)中。網(wǎng)卡驅(qū)動設(shè)備列表中明確定義兩路網(wǎng)卡設(shè)備的配置信息,提供設(shè)備單元號,設(shè)備的MAC基地址,對應(yīng)的中斷號等信息。明確指定需要啟動的第一路網(wǎng)卡,將其作為設(shè)備列表中的第一項。在完成設(shè)備初始化工作后,根據(jù)使用需求啟動第二路網(wǎng)卡。龍芯1B的以太網(wǎng)控制器提供兩種方式管理網(wǎng)卡的DMA描述符:(1)環(huán)式組織結(jié)構(gòu);(2)鏈式組織結(jié)構(gòu)[9]。環(huán)式組織結(jié)構(gòu)下,DMA描述符組成一個環(huán)形緩沖,最后一個緩沖的后續(xù)節(jié)點指向第一個節(jié)點。鏈式組織結(jié)構(gòu)下,DMA描述符的第二個數(shù)據(jù)緩沖的指針指向下一個DMA描述符,依次構(gòu)成一個鏈式結(jié)構(gòu)。天脈1下龍芯1B網(wǎng)卡驅(qū)動,采用環(huán)式組織結(jié)構(gòu),將DMA描述符組織成環(huán)形緩沖。網(wǎng)卡驅(qū)動空間初始化過程完成對DMA描述符緩沖空間的分配和構(gòu)造。為每個數(shù)據(jù)緩沖分配DMA空間,同時將DMA描述符組織成環(huán)形結(jié)構(gòu)。DMA描述符包括接收數(shù)據(jù)描述符和發(fā)送數(shù)據(jù)描述符。天脈1操作系統(tǒng)下,使用內(nèi)存分配服務(wù)獲得DMA描述符和數(shù)據(jù)緩沖空間。通過映射獨立的IO空間,為網(wǎng)卡驅(qū)動所需的數(shù)據(jù)描述符結(jié)構(gòu)分配空間。網(wǎng)卡驅(qū)動緩沖空間配置必須保證緩沖起始地址嚴格按照4Byte對齊,否則數(shù)據(jù)訪問過程會報告對齊異常。以太網(wǎng)驅(qū)動實現(xiàn)過程中選擇中斷方式進行數(shù)據(jù)處理?;谔烀}1操作系統(tǒng),龍芯1B處理器網(wǎng)卡驅(qū)動的中斷處理過程如圖5所示。根據(jù)中斷號判斷產(chǎn)生中斷的網(wǎng)卡設(shè)備,進入網(wǎng)卡中斷處理過程。首先禁止當前網(wǎng)卡的所有中斷,獲取中斷類型,判斷當前所發(fā)生的中斷是發(fā)送中斷還是接收中斷;然后分別進入對應(yīng)的中斷處理例程。最后更新網(wǎng)卡中斷狀態(tài)寄存器,使能網(wǎng)卡中斷。數(shù)據(jù)發(fā)送的處理過程如圖6所示。數(shù)據(jù)發(fā)送過程,停止對網(wǎng)卡設(shè)備隊列的處理;獲取可用的發(fā)送緩沖描述符,將需要發(fā)送的數(shù)據(jù)復制到對應(yīng)的數(shù)據(jù)緩沖;啟動網(wǎng)卡的數(shù)據(jù)發(fā)送處理,完成數(shù)據(jù)發(fā)送,更新網(wǎng)卡的中斷狀態(tài)寄存器;恢復對網(wǎng)卡設(shè)備隊列的處理。數(shù)據(jù)接收中斷的處理過程相對簡單,將網(wǎng)卡收到的數(shù)據(jù)幀的內(nèi)容直接傳遞給上層協(xié)議,更新網(wǎng)卡狀態(tài)即完成一次接收中斷的處理。為減小中斷響應(yīng)時間,具體數(shù)據(jù)包的處理通過后臺網(wǎng)絡(luò)任務(wù)完成。當上述初始化工作完成,網(wǎng)卡就處于就緒狀態(tài),使能網(wǎng)卡中斷,網(wǎng)卡即可開始正常工作。使能網(wǎng)卡中斷時,需要確保正確連接了網(wǎng)卡的中斷處理程序。若網(wǎng)卡中斷號與驅(qū)動中設(shè)置的不一致,天脈1操作系統(tǒng)會報告未預期的中斷。至此,網(wǎng)卡驅(qū)動可正常工作。測試過程中主要進行了黑盒測試和壓力測試。黑盒測試驗證網(wǎng)卡的輸入能夠獲得正確的輸出;壓力測試主要測試網(wǎng)卡驅(qū)動工作的穩(wěn)定性。黑盒測試通過讀寫網(wǎng)卡相關(guān)寄存器的方式進行驗證。驗證當數(shù)據(jù)幀到達,中斷發(fā)生時網(wǎng)卡寄存器狀態(tài)的變化。壓力測試選擇基于UDP/TCP協(xié)議的以太網(wǎng)通信測試案例。測試過程中在PC機端通過網(wǎng)絡(luò)抓包工具Wireshark[10]進行以太網(wǎng)數(shù)據(jù)的捕獲,通過對比抓包工具所獲取數(shù)據(jù)包的內(nèi)容與發(fā)送數(shù)據(jù)內(nèi)容,以驗證網(wǎng)卡驅(qū)動功能是否正確?;赨DP協(xié)議的通信測試結(jié)果,如圖7所示?;赥CP協(xié)議的通信測試結(jié)果如圖8所示。實驗結(jié)果證明,網(wǎng)卡驅(qū)動能準確響應(yīng)各種命令請求,數(shù)據(jù)處理功能正確,網(wǎng)卡工作正常。本文描述了天脈1嵌入式實時操作系統(tǒng)下,基于龍芯1B處理器平臺的雙網(wǎng)卡驅(qū)動的適配。天脈1操作系統(tǒng)是一款實時、可靠的嵌入式操作系統(tǒng),該操作系統(tǒng)提供基于BSD4.4的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論