亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        天脈1下龍芯1B網(wǎng)卡驅(qū)動設(shè)計與實現(xiàn)

        2016-11-14 07:03:25王宏偉麥先根
        電子科技 2016年10期
        關(guān)鍵詞:龍芯描述符網(wǎng)卡

        梅 濤,王宏偉,麥先根

        (中航工業(yè)西安計算技術(shù)研究所 基礎(chǔ)軟件室,陜西 西安710068)

        ?

        天脈1下龍芯1B網(wǎng)卡驅(qū)動設(shè)計與實現(xiàn)

        梅 濤,王宏偉,麥先根

        (中航工業(yè)西安計算技術(shù)研究所 基礎(chǔ)軟件室,陜西 西安710068)

        針對某嵌入式項目需要實現(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)通信功能正常。

        天脈1操作系統(tǒng);龍芯1B處理器;以太網(wǎng)驅(qū)動;設(shè)計與實現(xiàn)

        MEI Tao, WANG Hongwei, MAI Xiangen

        (Basic Software Section, Aeronautical Computing Technique Research Institute, Xi’an 710068, China)

        龍芯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é)議提供良好的擴展性。

        圖1 天脈1網(wǎng)絡(luò)驅(qū)動模型

        1 網(wǎng)絡(luò)驅(qū)動結(jié)構(gòu)

        1.1 龍芯1B以太網(wǎng)驅(qū)動結(jié)構(gòu)設(shè)計

        龍芯1B集成兩路10/100/1 000 M自適應(yīng)的以太網(wǎng)適配器。兩路網(wǎng)卡設(shè)備均兼容IEEE802.3標準。對網(wǎng)卡PHY芯片提供千兆模式(RGMII)[6]和百兆(MII)接口。兩路網(wǎng)卡均支持半雙工/全雙工的工作模式,半雙工模式下,支持沖突檢測與重傳機制(CSMA/CD)[6]。支持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處理器默認為小端模式。

        圖2 DMA描述符結(jié)構(gòu)

        1.2 網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)設(shè)計

        天脈1操作系統(tǒng)下,通過內(nèi)存緩沖mbuf(memory buffer)[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所示。

        圖3 網(wǎng)絡(luò)數(shù)據(jù)包結(jié)構(gòu)圖

        網(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ù)簇空間。

        2 網(wǎng)絡(luò)驅(qū)動實現(xiàn)

        天脈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所示。

        圖4 龍芯1B網(wǎng)卡初始化過程

        2.1 網(wǎng)卡設(shè)備初始化

        網(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)卡。

        2.2 網(wǎng)卡驅(qū)動空間初始化

        龍芯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ū)動緩沖空間配置必須保證緩沖起始地址嚴格按照4 Byte對齊,否則數(shù)據(jù)訪問過程會報告對齊異常。

        2.3 數(shù)據(jù)轉(zhuǎn)發(fā)處理

        以太網(wǎng)驅(qū)動實現(xiàn)過程中選擇中斷方式進行數(shù)據(jù)處理?;谔烀}1操作系統(tǒng),龍芯1B處理器網(wǎng)卡驅(qū)動的中斷處理過程如圖5所示。

        圖5 龍芯1B網(wǎng)卡中斷處理流程

        根據(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ù)完成。

        圖6 龍芯1B網(wǎng)卡發(fā)送數(shù)據(jù)過程

        2.4 網(wǎng)卡設(shè)備啟動

        當上述初始化工作完成,網(wǎng)卡就處于就緒狀態(tài),使能網(wǎng)卡中斷,網(wǎng)卡即可開始正常工作。使能網(wǎng)卡中斷時,需要確保正確連接了網(wǎng)卡的中斷處理程序。若網(wǎng)卡中斷號與驅(qū)動中設(shè)置的不一致,天脈1操作系統(tǒng)會報告未預(yù)期的中斷。至此,網(wǎng)卡驅(qū)動可正常工作。

        3 測試與驗證

        測試過程中主要進行了黑盒測試和壓力測試。黑盒測試驗證網(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所示。

        圖7 基于UDP的通信測試結(jié)果

        基于TCP協(xié)議的通信測試結(jié)果如圖8所示。

        圖8 基于TCP的通信測試結(jié)果

        實驗結(jié)果證明,網(wǎng)卡驅(qū)動能準確響應(yīng)各種命令請求,數(shù)據(jù)處理功能正確,網(wǎng)卡工作正常。

        4 結(jié)束語

        本文描述了天脈1嵌入式實時操作系統(tǒng)下,基于龍芯1B處理器平臺的雙網(wǎng)卡驅(qū)動的適配。天脈1操作系統(tǒng)是一款實時、可靠的嵌入式操作系統(tǒng),該操作系統(tǒng)提供基于BSD4.4的TCP/IP網(wǎng)絡(luò)協(xié)議棧功能,可支持基于RISC架構(gòu)的PowerPC處理器以及基于MIPS架構(gòu)的處理器平臺。龍芯1B是一款兼容于MIPS架構(gòu)的處理器平臺,集成了兩路千兆以太網(wǎng)控制器。本文設(shè)計實現(xiàn)了基于天脈1操作系統(tǒng)的龍芯1B處理器雙網(wǎng)卡驅(qū)動,通過網(wǎng)卡驅(qū)動控制兩路以太網(wǎng)設(shè)備,實現(xiàn)基于以太網(wǎng)的通信功能。通過實驗驗證,結(jié)果證明本文實現(xiàn)的網(wǎng)卡驅(qū)動功能正確可靠,以太網(wǎng)通信功能正常。

        [1] 龍芯中科技術(shù)有限公司.龍芯1B處理器用戶手冊[M]. 北京:龍芯中科技術(shù)有限公司,2014.

        [2] Dominic Sweetman.MIPS體系結(jié)構(gòu)透視[M].李鵬,鮑崢,石洋,等,譯.北京:機械工業(yè)出版社,2008.

        [3] 郭兵,沈艷,林永宏,等.SoC技術(shù)原理與應(yīng)用[M].北京:清華大學出版社,2006.

        [4] Paul Venezia.Get started with FreeBSD:A brief intro for linux users[M/OL].(2014-12-06)[2015-11-10] http://www.infoworld.com/article/2858288/unix/intro-to-freebsd-for-linux-users.html.

        [5] 曹桂平.VxWorks設(shè)備驅(qū)動開發(fā)詳解[M].北京:電子工業(yè)出版社,2011.

        [6] IEEE-SA.IEEE Standard for Ethernet,IEEE 802.3[S].USA: IEEE,2012.

        [7] Shahriyar R, Blackburn S M, Yang X, et al. Taking off the gloves with reference counting Immix[J]. Acm Sigplan Notices,2013, 48(10):93-110.

        [8] Fall K R, Stevens R W. TCP/IP詳解,卷1:協(xié)議[M].2版.北京:機械工業(yè)出版社,2012.

        [9] 樊東東,莫瀾.Linux內(nèi)核源碼剖析:TCP/IP實現(xiàn)[M].北京:機械工業(yè)出版社,2011.

        [10] Free Software Foundation,Inc.Wireshark user’s guide[M].USA:Free Software Foundation,Inc,2004.

        Design and Realization of the Network Driver for Loongson 1B in ACoreOS

        A driver for the double Gigabit Ethernet cards integrated in the Loongson 1B processor on the Tianmai embedded real-time operating system is designed and implemented. The driver supports not only simultaneous Ethernet-based debugging and communication but also one card for debugging and the other for communication. Experimental results show that the designed Ethernet driver functions correctly for the Loongson 1B double Gigabit Ethernet cards on the Tianmai embedded operating system, realizing reliable operation and normal Ethernet communication functions.

        ACoreOS RTOS; Loongson 1B processor; ethernet driver; design and realization

        2015- 12- 26

        國家某重點科研基金資助項目(MJ-S-2012-05)

        梅濤(1984-),男,碩士,工程師。研究方向:嵌入式實時操作系統(tǒng)和網(wǎng)絡(luò)。

        10.16180/j.cnki.issn1007-7820.2016.10.016

        TP316

        A

        1007-7820(2016)10-054-04

        猜你喜歡
        龍芯描述符網(wǎng)卡
        在DDS 中間件上實現(xiàn)雙冗余網(wǎng)卡切換的方法
        基于國產(chǎn)化龍芯的動環(huán)數(shù)據(jù)采集系統(tǒng)
        基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
        測繪學報(2022年12期)2022-02-13 09:13:01
        Server 2016網(wǎng)卡組合模式
        Linux單線程并發(fā)服務(wù)器探索
        利用CNN的無人機遙感影像特征描述符學習
        “龍芯之父”胡偉武
        華人時刊(2016年13期)2016-04-05 05:50:06
        龍芯發(fā)布新一代處理器產(chǎn)品
        挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
        基于PDIUSBD12的USB接口設(shè)計應(yīng)用研究
        av高清在线不卡直播| 杨幂国产精品一区二区| 日韩激情av不卡在线| 日本一区二区三级在线观看| 日射精情感性色视频| 青草福利在线| 国产青青草自拍视频在线播放| 91九色最新国产在线观看| 人妻无码中文字幕| 成人国产精品999视频| 亚洲福利第一页在线观看| 黄片视频大全在线免费播放| 芒果乱码国色天香| 91福利视频免费| 在线日韩中文字幕乱码视频 | 少妇性俱乐部纵欲狂欢少妇| 久久亚洲精品11p| 国产免费看网站v片不遮挡| 亚洲国产高清一区av| 亚洲精品一区二区国产精华液| 久久中文字幕人妻熟av女蜜柚m | 国内精品九九久久精品小草| 日韩有码在线观看视频| 真人做爰片免费观看播放| 亚洲AV永久青草无码性色av| 亚洲一区二区三区最新视频| 国产成人无码一区二区三区 | 久久久伊人影院| 亚洲一区二区三区厕所偷拍| 人妻少妇-嫩草影院| 久久久精品人妻一区二区三区四区| 曰韩人妻无码一区二区三区综合部 | 日韩人妻无码精品一专区二区三区 | 在线无码免费看黄网站| 国产亚洲午夜精品久久久| 性高湖久久久久久久久| 国产人澡人澡澡澡人碰视频| 国产洗浴会所三级av| 久久久噜噜噜久久中文福利| 亚洲妓女综合网99| 五月停停开心中文字幕|