摘要:恩智浦的QorIQ系列在網(wǎng)絡(luò)通信中采用高性能數(shù)據(jù)通道加速結(jié)構(gòu)(Data Path Acceleration Architecture簡(jiǎn)稱(chēng)DPAA),相比傳統(tǒng)的網(wǎng)卡,DPAA網(wǎng)卡的結(jié)構(gòu)更為復(fù)雜,主要在數(shù)據(jù)分發(fā)、隊(duì)列擁塞管理和內(nèi)容加速處理方面減少CPU開(kāi)銷(xiāo),以提升性能。本文介紹了基于DPAA的網(wǎng)卡在VxWorks7.0操作系統(tǒng)中的驅(qū)動(dòng)架構(gòu)及開(kāi)發(fā)流程。
關(guān)鍵詞:DPAA;驅(qū)動(dòng);VxWorks7.0
引言:VxWorks是較為常用的嵌入式硬實(shí)時(shí)操作系統(tǒng),在航天航空、國(guó)防軍工、工業(yè)控制、軌道交通等領(lǐng)域應(yīng)用廣泛,目前最新的操作系統(tǒng)平臺(tái)已是VxWorks7.0。傳統(tǒng)的網(wǎng)卡驅(qū)動(dòng)主要采用在內(nèi)核態(tài)收發(fā)包的模式,然后交給內(nèi)核協(xié)議棧處理,效率低,無(wú)法滿足高速傳輸?shù)男枨蟆6?DPAA 提供了一套硬件加速平臺(tái),主要包括三個(gè)模塊:BMan、QMan、FMan。通過(guò)這三個(gè)模塊能很好的決解包括處理器負(fù)載平衡、流順序維護(hù)和有效的緩存利用率等問(wèn)題[1]。
1 DPAA概述
DPAA的主要目的是在片上系統(tǒng)的 IO 部分內(nèi)提供智能處理,進(jìn)行路由和管理與流量相關(guān)的處理工作,以簡(jiǎn)化與多核相關(guān)的排序和負(fù)載平衡問(wèn)題處理。主要包括三個(gè)模塊:BMan(Buffer Manager)緩存管理、QMan(Queue Manager)隊(duì)列管理、FMan(Frame Manager)幀管理。
1.1 BMan緩存管理
BMan緩沖管理模塊的主要作用是把處于空閑狀態(tài)的內(nèi)存給集中的管理起來(lái),這樣來(lái)減少空閑緩沖區(qū)對(duì)軟件的開(kāi)銷(xiāo)。處理器核心、FMan、SEC(Security and Encryption Engine)、都可以直接從BMan中獲得緩沖區(qū),而不需要額外的軟件干預(yù),并且在緩沖區(qū)不使用時(shí)負(fù)責(zé)將緩存資源回收到緩沖池中。
1.2 QMan隊(duì)列管理
QMan隊(duì)列管理模塊為網(wǎng)絡(luò)接口硬件加速模塊,主要功能是提供多處理器內(nèi)核、網(wǎng)絡(luò)接口和硬件加速器之間的數(shù)據(jù)排隊(duì)機(jī)制,如擁塞管理、優(yōu)先級(jí)的排隊(duì)機(jī)制等。QMan操作的實(shí)體是幀描述符,幀描述符里保存了數(shù)據(jù)緩沖的地址,數(shù)據(jù)緩沖地址指向數(shù)據(jù)緩沖區(qū)的內(nèi)存地址。QMan管理的對(duì)象是數(shù)據(jù)包的指針而不是數(shù)據(jù)包本身。QMan會(huì)根據(jù)內(nèi)部局域優(yōu)先級(jí)的調(diào)度策略自動(dòng)為軟件入口選出合適的幀隊(duì)列進(jìn)行出隊(duì)操作。
1.3 FMan幀管理
FMan幀管理模塊負(fù)責(zé)處理DPAA發(fā)送和接收的網(wǎng)絡(luò)數(shù)據(jù)包。FMan在物理網(wǎng)卡收發(fā)數(shù)據(jù)時(shí),使用BMan提供的緩沖保存數(shù)據(jù),使用QMan的隊(duì)列機(jī)制對(duì)帶有數(shù)據(jù)的幀描述符進(jìn)行組織和管理。FMan在LS1046處理器的CCSR中有一定大小的配置空間,其中包括了緩沖管理模塊接口(BMI)寄存器組和幀隊(duì)列模塊接口(QMI)寄存器組,通過(guò)這些寄存器可以配置數(shù)據(jù)包在FMan內(nèi)部存儲(chǔ)空間與外部緩沖之間的傳輸,以及幀描述符的入隊(duì)和出隊(duì)。
2 基于DPAA網(wǎng)卡在VxWorks7.0操作系統(tǒng)中的驅(qū)動(dòng)架構(gòu)和實(shí)現(xiàn)
本文以NXP的LS1046處理器上的DPAA網(wǎng)卡為例,闡述在VxWorks7.0操作系統(tǒng)中是如何實(shí)現(xiàn)DPAA網(wǎng)卡驅(qū)動(dòng)的。整個(gè)驅(qū)動(dòng)架構(gòu)可以分為四個(gè)部分,設(shè)備樹(shù)文件配置、eEMAC控制器驅(qū)動(dòng)模塊、MDIO驅(qū)動(dòng)模塊以及PHY驅(qū)動(dòng)模塊,其中驅(qū)動(dòng)模塊采用VxWorks操作系統(tǒng)提供的VxBus架構(gòu),完成驅(qū)動(dòng)編寫(xiě)后包含對(duì)應(yīng)的驅(qū)動(dòng)組件,操作系統(tǒng)會(huì)自動(dòng)調(diào)用進(jìn)行網(wǎng)卡初始化工作。
2.1 VxWorks7.0 VxBus驅(qū)動(dòng)架構(gòu)概述
VxBus架構(gòu)是VxWorks操作系統(tǒng)廠商風(fēng)河公司開(kāi)發(fā)的一套設(shè)備驅(qū)動(dòng)程序架構(gòu),這種架構(gòu)包含對(duì)BSP的支持。VxBus在總線控制器驅(qū)動(dòng)程序服務(wù)的支持下,能在總線上發(fā)現(xiàn)設(shè)備,并執(zhí)行一些初始化工作,使驅(qū)動(dòng)與硬件設(shè)備之間正常的通訊[2]。
2.2 設(shè)備樹(shù)配置
在VxWorks7.0版本中,風(fēng)河公司首次引入了設(shè)備樹(shù)。設(shè)備樹(shù)是一種描述硬件信息的數(shù)據(jù)結(jié)構(gòu),通過(guò)在設(shè)備樹(shù)源文件中描述整個(gè)單板硬件信息,這樣就不再需要在操作系統(tǒng)中進(jìn)行大量的冗余編碼,簡(jiǎn)化了板級(jí)支持包(BSP)開(kāi)發(fā)流程。所以首先需要在LS1046處理器的BSP中進(jìn)行設(shè)備樹(shù)配置。有三個(gè)層面的配置,分別是BMan配置、Qman配置和FMan配置,其中FMan配置又包括MDIO配置、MAC控制器配置,其中MDIO配置又包括對(duì)PHY的配置。
2.3 eEMAC控制器驅(qū)動(dòng)模塊
此驅(qū)動(dòng)模塊實(shí)現(xiàn)與CPU的MAC控制器以及網(wǎng)絡(luò)協(xié)議棧的MUX層對(duì)接,同時(shí)對(duì)BMan和QMan進(jìn)行初始化。此驅(qū)動(dòng)模塊還負(fù)責(zé)MAC控制器與PHY芯片之間通過(guò)MII(Media Independent Interface)總線進(jìn)行數(shù)據(jù)收發(fā)。
2.4 MDIO驅(qū)動(dòng)模塊
此驅(qū)動(dòng)模塊實(shí)現(xiàn)對(duì)mEMAC網(wǎng)絡(luò)控制器上的MDIO接口進(jìn)行支持,主要是用于在多個(gè)內(nèi)核之間共享對(duì)MDIO端口的訪問(wèn)。在驅(qū)動(dòng)中會(huì)對(duì)掛載在MAC控制器上的PHY設(shè)備進(jìn)行掃描和配置,并提供對(duì)PHY芯片寄存器讀寫(xiě)接口。
2.5 PHY驅(qū)動(dòng)模塊
此驅(qū)動(dòng)模塊的主要功能是對(duì)PHY芯片進(jìn)行配置,并提供初始化物理層、設(shè)置媒體模式、檢查當(dāng)前媒體模式和鏈路狀態(tài)等方法。
結(jié)論:本文主要介紹了DPAA的組成模塊及基本功能,對(duì)基于DPAA的網(wǎng)卡在VxWorks7.0操作系統(tǒng)上的驅(qū)動(dòng)架構(gòu)進(jìn)行了研究,并闡述了驅(qū)動(dòng)開(kāi)發(fā)的方法及步驟。完成驅(qū)動(dòng)設(shè)計(jì)后,在NXP的LS1046參考板上進(jìn)行可測(cè)試驗(yàn)證,使用網(wǎng)絡(luò)分析儀連接DPAA網(wǎng)卡,對(duì)網(wǎng)口的基本功能、傳輸速率進(jìn)行測(cè)試。測(cè)試結(jié)果表明,基于DPAA的網(wǎng)卡性能優(yōu)于普通的網(wǎng)卡,建議進(jìn)一步推廣使用。
參考文獻(xiàn):
[1]高曉成,吳耀云,王樹(shù)朋,等.DPAA技術(shù)在單脈沖處理中的應(yīng)用[J].電子信息對(duì)抗技術(shù),2019,34(02):23-27.
[2]向昱丞,周加誼.淺談VxBus的設(shè)備驅(qū)動(dòng)開(kāi)發(fā)[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2016,29(002):57-58.
作者簡(jiǎn)介:易榮武;男;1988.3;湖南武岡;漢;碩士研究生;工程師;嵌入式軟件開(kāi)發(fā)