999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于TMS320C6678的雙網卡研究與驅動實現①

2018-11-14 11:37:08何玲玲王永兵
計算機系統應用 2018年11期

何玲玲,王永兵

(中國電子科技集團公司 第三十二研究所,上海 201808)

1 引言

隨著嵌入式系統設備的廣泛應用,當設備需要與多個網絡設備交互數據時,需要設備具有多網口、多連接的功能,同時能夠解析應用規約[1].目前大部分對TMS320C6678處理器的應用場景下,都要求網卡工作在switch模式,這樣兩個slave 端口始終接收到相同的數據.所以不論是TI提供的keystone架構下的網卡參考驅動,還是互聯網上能搜索到的關于此網卡的驅動開發,都是關于switch模式的.隨著TMS320C6678處理器的廣泛應用,越來越多的場景需要使用雙網卡模式,即port1和port2作為兩個獨立的網卡使用,分別與不同的設備連接完成不同的功能,這就需要研究基于TMS320C6678的雙網卡驅動實現.

本文從網卡模塊簡介、驅動原理分析、驅動設計實現以及驅動測試等多個方面介紹了基于TMS320C6678的雙網卡的原理和實現,對TI keystone架構下的多種DSP處理器的雙網卡模式的實現都具有參考和借鑒意義,能極大的擴展該系列處理器的應用范圍.

2 TMS320C6678處理器的網卡介紹

TMS320C6678處理器基于KeyStone I架構,片上集成了一個網絡協處理器NETCP,NETCP由千兆以太網交換子系統、包加速器PA (Packet Accelerator)和安全加速器SA (Security Accelerator Engine)組成[2].PA負責數據包的分類操作和修改操作,SA負責數據包的加密和解密,交換子系統由三端口網絡交換機、MDIO模塊和SGMII模塊組成,其組成框圖如下[3]:

系統中三端口網絡交換機的host port(即port0)負責交換機與網絡協處理器NETCP之間的通信,兩個slave port(即port1和port2)分別與兩個SGMII模塊相連,負責交換機與SGMII之間的數據傳輸.NETCP與 主機之間的數據傳輸由PKTDMA完成.

圖1 以太網交換子系統框圖[3]

交換機主要由以下模塊組成: 流媒體數據接口、MAC控制器、MAC接收FIFO、信息統計模塊、時間同步模塊和ALE模塊.

流媒體數據接口包括發送流媒體數據接口和接收流媒體數據接口.發送流媒體數據接口負責將數據包從port 0傳輸到NETCP,交換機有兩個相同的發送流媒體數據接口(TXA和TXB),其中TXA輸出從port1傳給port0的數據包,TXB輸出從port2傳給port0的數據包.接收流媒體數據接口負責接收來自于NETCP內的數據[3].

MAC控制器不僅負責完成交換機與SGMII模塊之間的信號轉換,還負責與IEEE802.3以太網幀相關的操作; MAC接收FIFO供數據傳輸時使用; 信息統計模塊用來記錄三個端口數據收發的情況,便于網絡調試; 時間同步模塊的主要用途是檢測時間同步事件并生成時間戳,然后將此信息提供給主機軟件進行處理.

ALE模塊處理所有接收的包,確定每個包被發往哪個端口.當ALE非能時,所有數據包都被丟棄.當ALE工作在bypass模式時,MAC模塊接收的所有數據包都只給port0,port0可以發送定向包給port1或者(和)port2.

3 雙網卡模式下的驅動實現

3.1 驅動原理

多核導航器是Keystone架構的核心組成部分.多核導航器使用隊列管理子系統(Queue Manager SubSystem,QMSS)和打包DMA(PKTDMA)來控制和完成高速數據包在設備內的傳輸.NETCP與主機之間的數據傳輸由PKTDMA完成,PKTDMA處理的數據是以描述符的形式存在的,描述符存在于隊列中,由QMSS的PDSP固件完成隊列中描述符的操作.當網卡硬件初始化完成后,主機發送數據時,從發送空閑隊列分配一個描述符,填寫描述符域和負載數據后,將描述符PUSH到發送隊列,隊列管理器為隊列提供一個層敏感(level sensitive)狀態信號量,負責DMA的調度操作,DMA控制器最終引入相應通道的上下文,并且開始處理包.DMA控制器通過將數據塊中的內容傳輸出去的方式,來清空緩沖區.根據包大小域中指定的大小,包中的數據全部傳輸完之后,DMA會將包描述符的指針寫到隊列中,這個隊列在返回隊列管理(包描述符的返回隊列數目域)中被指定,通常指定為發送空閑隊列便于以后發送數據時使用.當Rx DMA給定的通道上開始一個包接收操作時,這個端口會從接收空閑隊列中取出一個描述符,將數據寫入描述符對應的緩存中.當整個包被接收之后,PKTDMA 將包描述符指針寫入相應的接收完成隊列,用戶處理完接收數據包后,將描述符重新PUSH到接收空閑隊列供PKTDMA下次接收使用.

主機發送數據時,接收流媒體數據接口能夠從接收的將要發送給以太網交換機的描述符的PS_FLAGS字段中提煉出額外的控制信息.該字段的說明如表1所示.

從表1可看出,可以在發送描述符的PS_FLAGS字段中設置端口號從而將數據包定向發送給交換機的某個端口,前提是ALE必須工作在bypass模式.

表1 PS_FLAGS字段說明[3]

數據接收時,不論port1還是port2接收到數據都會傳輸到port0,通過發送流媒體數據接口傳輸到NETCP,其中來自port1的數據通過TXA傳輸,來自port2的數據通過TXB傳輸.TXA和TXB不僅傳輸數據包,還提供了一些額外信息,這些信息由PKTDMA的接收flow控制.接收flow的配置寄存器C的部分字段描述如表2所示.

表2 接收flow的配置寄存器C的字段描述[4]

Host packet描述符的字段描述見表3.

從表2和表3可以看出,如果將網卡接收flow的配置寄存器C的bit26-24(RX_SRC_TAG_LO_SEL)設置成4,則當端口接收到數據時,PKTDMA控制器會將接收描述符的word1的source tag-lo字段設置成該端口的SRC_ID值,兩個slave端口的SRC_ID值是不同的.網卡接收到數據時,根據接收描述符的word1的source tag-lo字段的值就可判斷出該數據包來自哪個端口.

表3 Host packet描述符的字段描述[4]

3.2 驅動實現

為了實現TMS320C6678的雙網卡驅動,需要完成硬件初始化、數據包的發送和接收等功能.尤其是要解決好下面兩個問題: 數據包發送時,交換機內部的接收流媒體數據接口需要知道它從NETCP接收的數據將要發給哪個端口; 接收到數據包后,驅動需要根據接收的數據包判斷其來自哪個端口.

(1) 網卡硬件初始化

這里需要完成跟網卡工作相關的所有硬件的初始化,包括:

a) 多核導航器的初始化

多核導航器由隊列管理器、PKTDMA、導航云、打包數據結構協處理器(Packed-Data Structure Processors,PDSP)固件等模塊組成[4].初始化時,主要完成PDSP固件的下載和執行.

b) memory region的初始化

完成網卡工作時使用的描述符區間的初始化工作,包括描述符的起始地址、大小、數量、使用的內存區域的序號等的初始化.

c) 描述符的初始化

由于數據在NETCP與主機之間的傳輸由PKTDMA完成,數據包需要封裝成PKTDMA能夠識別的描述符格式.驅動中使用了host packet描述符的格式.

從已經初始化的memory region中分配一定數量的發送空閑描述符和接收空閑描述符,并為每個描述符分配buffer地址空間,所有的發送空閑描述符被PUSH到發送空閑隊列,所有的接收空閑描述符被PUSH到接收空閑隊列.兩個網卡具有不同的描述符地址和不同的發送接收空閑隊列號.

d) SGMII_SERDES初始化

依次配置PLL寄存器,兩個端口的發送配置和接收配置寄存器.

e) SGMII模塊初始化

配置兩個端口的連接模式(master或者slave)、工作模式(全雙工或半雙工)、連接速度、是否自動協商等.

f) MAC初始化

設置MAC地址,雖然器件的MAC地址只有一個,但是可以虛擬一個出來,確保兩個端口分別配置了不同的MAC地址,除此之外,還配置了VLAN和接收幀的最大長度.

g) 三端口交換機switch初始化

完成端口0的使能啟動、網卡統計功能的配置(便于調試)以及ALE (Address Lookup Engine)的配置等,這里需要注意的是,雙網卡模式時,ALE必須工作在bypass模式.

由于需要通過接收描述符中的SRC_ID判斷接收數據的來源,所以分別為port1和port2設置SRC_ID值.port1和port2的SRC_ID值即TXA_SRC_ID和TXB_SRC_ID,可通過設置寄存器P0_CPPI_SRC_ID來設置.

h) cppi初始化

完成網卡的發送通道和接收通道的使能,接收Flow ID、接收空閑隊列和接收完成隊列的配置等.

i) PA子系統初始化

完成PA固件下載、廣播和組播路由配置、添加MAC地址到PA PDSP查找表等工作.

j) 接收flow初始化

完成Rx DMA的接收完成隊列、接收空閑隊列、描述符類型等的配置,需要注意配置寄存器C的RX_SRC_TAG_LO_SEL字段要設置成4.

(2) 數據包發送

從發送空閑隊列分配一個描述符,填寫描述符域和負載數據,注意在描述符word2的Protocol Specific Flags字段中指定數據包發給哪個端口,然后將描述符PUSH到發送隊列,PKTDMA將將數據包直接發送給指定的端口.

(3) 數據包接收

當PKTDMA的接收完成隊列接收到數據后會產生接收完成中斷,在中斷服務程序中,根據接收描述符word1的source tag-lo字段的值即可判斷出數據的來源,從而做出正確處理.

3.3 驅動測試

如果TMS320C6678開發板上的兩個網絡端口都通過RJ45接口引出來了,那么就把它們當作兩個獨立的普通網卡,分別進行測試驗證即可.但是實際上有很多DSP6678開發板的網口只引出來了一個,在使用中另一個端口通過特定的背板與其他以太網設備進行通信.這里以TIC6678公板為例重點介紹只引出一個網絡端口的情況下的雙網卡測試方法.

TIC6678公板的網卡0沒有通過RJ45接口引出來,只引出了網卡1,通過配套的背板可以將兩塊公板的網卡0對連起來.當兩條鏈路都能正常通信時,表明雙網卡能正常工作了.具體有以下兩種測試方法:

(1) 兩塊公板的網卡1分別與兩臺PC機相連

分別為兩塊公板的兩個網卡設置不同網段的IP地址,并分別與兩臺PC機相連,IP的具體要求以及整個測試系統的連接如圖2所示.

圖2 TIC6678公板的雙網卡測試系統

當同時滿足以下測試結果時,表明兩塊公板的雙網卡均工作正常.

a) PC機1可以ping通公板1的網卡1,PC機1不能ping通公板2的兩個網卡;

b) PC機2可以ping通公板2的網卡1,PC機2不能ping通公板1的兩個網卡;

c)公板1 ping不通公板2的網卡1,公板2 ping不通公板1的網卡1;

d) 兩塊公板的網卡0互相可以ping通.

(2) 兩塊公板的網卡1互連

當兩塊公板的網卡1互相可以ping通,網卡0互相可以ping通,但是一塊板子的網卡1和另一塊板子的網卡0 ping不通時,則雙網卡工作正常.

3.4 測試結果

按照圖2的IP要求配置了通過背板連接的兩塊TIC6678開發板的網卡,并將它們的網卡1通過網線互連,網卡1互相可以ping通,網卡0互相可以ping通,測試結果如圖3和圖4所示.

圖3 兩塊公板網卡1通過網線互連時,公板1網卡ping公板2網卡

圖4 兩塊公板網卡1通過網線互連時,公板2網卡ping公板1網卡

斷開兩塊公板的網卡1之間的網線,雙網卡模式下網卡1的網絡連接就斷了,測試結果如圖5和圖6所示.

測試結果表明本文實現的基于TMS320C6678的雙網卡驅動工作正常.雙網卡工作模式目前已在多個項目中投入使用.

圖5 兩塊公板網卡1之間的網線斷開時,公板1網卡ping公板2網卡

圖6 兩塊公板網卡1之間的網線斷開時,公板2網卡ping公板1網卡

4 結論

測試結果以及實際應用情況表明,本文設計的基于TMS320C6678的雙網卡驅動是成功的,該功能的實現使得TI KEYSTONE 1架構下的DSP芯片的應用范圍更加廣泛而不僅僅局限于switch模式下的應用場景.

主站蜘蛛池模板: 中文字幕第4页| 成人自拍视频在线观看| 日韩a级毛片| 中文字幕永久在线看| 亚洲国产av无码综合原创国产| 亚洲高清在线天堂精品| 国外欧美一区另类中文字幕| 久久国产V一级毛多内射| 国产地址二永久伊甸园| 青青草国产在线视频| 伊伊人成亚洲综合人网7777| 国产成人艳妇AA视频在线| 中文字幕丝袜一区二区| 九色在线观看视频| 亚洲男人的天堂视频| 欧美 国产 人人视频| 国产在线拍偷自揄拍精品| 国产成人夜色91| 国产乱人伦精品一区二区| 日本国产一区在线观看| 欧美日韩国产在线观看一区二区三区 | 欧美国产精品不卡在线观看 | 一区二区三区在线不卡免费| 欧美不卡视频在线观看| 日韩欧美国产中文| 国产精品亚洲一区二区三区在线观看| 国产网友愉拍精品视频| 色婷婷久久| 久久成人国产精品免费软件| 国产欧美日韩专区发布| 99尹人香蕉国产免费天天拍| 国产一在线| 日韩黄色精品| 亚洲制服中文字幕一区二区| 中文国产成人久久精品小说| 亚洲六月丁香六月婷婷蜜芽| 激情爆乳一区二区| 天堂网亚洲综合在线| 69综合网| 亚洲V日韩V无码一区二区| 天天色天天综合| 97人妻精品专区久久久久| 最新无码专区超级碰碰碰| 亚洲第一视频区| 丁香婷婷久久| 亚洲IV视频免费在线光看| 97在线国产视频| 波多野结衣一区二区三视频| 999精品色在线观看| 99re经典视频在线| 免费毛片在线| 免费又爽又刺激高潮网址| 日韩欧美色综合| 亚洲中文字幕23页在线| 人妻丝袜无码视频| 亚洲国产天堂在线观看| 亚洲AⅤ无码日韩AV无码网站| 国产黑丝视频在线观看| 自拍偷拍欧美| 波多野结衣在线se| 中文字幕色在线| 国产精品视频猛进猛出| 一本久道久综合久久鬼色| 91精品啪在线观看国产60岁| 很黄的网站在线观看| 国产精女同一区二区三区久| 国产后式a一视频| 男女猛烈无遮挡午夜视频| 亚洲欧美日韩成人在线| 免费一级无码在线网站| 波多野结衣第一页| 久久亚洲国产视频| 日日拍夜夜嗷嗷叫国产| 欧美精品成人| 99热这里只有精品免费| 四虎国产永久在线观看| 国产精品xxx| 一本大道香蕉中文日本不卡高清二区| 国产精品欧美在线观看| 久久免费视频6| 国产精品无码翘臀在线看纯欲| 亚洲国模精品一区|