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