白軼榮++李偉++劉寶東+丁建崠
摘 要: TI的C66X多核DSP擁有豐富的接口資源,單片集成了高速串行接口AIF2、SGMIL、PCIe和SRIO等,能夠非常方便地進行高速數(shù)據(jù)傳輸和系統(tǒng)擴展,其中PCIe接口應(yīng)用最廣,它廣泛地應(yīng)用在信號處理、通信、醫(yī)療、自動化等領(lǐng)域。本文闡述了PCIe接口的Inbound和Outbound地址映射寄存器配置方法、PCIe的中斷安裝過程和EDMA的傳輸配置與實現(xiàn)過程。用該方法可快速完成多核DSP的PCIe接口配置與編程,方便PCIe接口的推廣和應(yīng)用。
關(guān)鍵詞: 多核DSP; PCIe; EDMA; Inbound; Outbound
中圖分類號:TP315 文獻標志碼:A 文章編號:1006-8228(2017)02-16-04
0 引言
TI的C66X多核DSP擁有豐富的接口資源,單片集成了高速串行接口AIF2、SGMIL、PCIe和SRIO等,能夠非常方便地進行高速數(shù)據(jù)傳輸和系統(tǒng)擴展,其中PCIe接口應(yīng)用最廣,它廣泛地應(yīng)用在信號處理、通信、醫(yī)療、自動化等領(lǐng)域。
本文主要研究多核DSP的PCIe接口程序設(shè)計,首先概述PCIe模塊,其次闡述了PCIe接口的Inbound和Outbound地址映射寄存器配置方法、PCIe的中斷安裝過程和EDMA的傳輸配置與實現(xiàn)過程,最后對本文作出總結(jié)。
1 PCIe模塊概述
TI C66系列DSP集成了二個通道PCIe模塊。該模塊主要具備以下特征:支持兩種工作模式:RC和EP;支持Genl(2.5Gbps)和Gen2(5.0Gbps)兩種鏈路速率;用戶可以選擇使能一個或兩個通道,當使用雙通道時,需配置為相同的鏈路速率;支持的最大輸出凈荷大小為128字節(jié),最大輸入凈荷大小為256字節(jié);支持動態(tài)的帶寬切換等[1]。
PCIe設(shè)備需要使用PCIe地址經(jīng)PCIe數(shù)據(jù)鏈發(fā)送數(shù)據(jù)包,地址翻譯單元ATU(Address Translation Unit)將設(shè)備內(nèi)部地址翻譯為PCIe地址,反之亦然。PCIe地址可以是32-bit或64-bit。
2 PCIe地址翻譯
對于輸出處理,Outbound ATU把設(shè)備內(nèi)部地址翻譯成PCIe地址,然后含PCIe地址的數(shù)據(jù)包經(jīng)PCIe鏈路被傳輸?shù)狡渌O(shè)備。
對于輸入處理,PCIe模塊的基址寄存器BAR (Base Address Register)只接收特定PCIe地址的數(shù)據(jù)包,這些數(shù)據(jù)包進入Inbound ATU,經(jīng)地址翻譯后被送至相應(yīng)的內(nèi)存空間。C66X DSP的PCIe地址翻譯原理圖如圖1所示[4]。
⑴ 輸出地址翻譯
TI C66設(shè)備中有特定的PCIe數(shù)據(jù)空間0x60000000-0x6FFFFFFF,專門用于收發(fā)PCIe數(shù)據(jù)。對于輸出傳輸,通過Outbound ATU的配置使該空間與另一側(cè)設(shè)備地址空間建立對應(yīng)關(guān)系,再使用EDMA把設(shè)備內(nèi)存數(shù)據(jù)搬移到PCIe數(shù)據(jù)空間,這樣數(shù)據(jù)就可以通過PCIe鏈發(fā)送出去。
輸出地址翻譯主要通過以下寄存器的配置來實現(xiàn)。
OB_SIZE:設(shè)定32個等長的翻譯區(qū)的大小,它們可以為1MB、2MB、4MB、8MB。
OB_OFFSET_INDEXn:代表PCIe地址的bit[31:20],具體哪些位有效需根據(jù)OB_SIZE來確定,bit[0]使能輸出region。
OB_OFFSETn_HI:代表64位PCIe地址的bit[63:32],使用32-bit地址模式時該寄存器為0。
由于存在32個翻譯區(qū)域,所以需要根據(jù)內(nèi)部地址的5bits來決定使用哪個區(qū)域進行映射。PCIe輸出地址翻譯示意圖如圖2所示[4]。
⑵ 輸入地址翻譯
Inbound ATU用于將外部設(shè)備輸入的訪問地址重定位到DSP片內(nèi)地址。C66設(shè)備的PCIe模塊有兩個內(nèi)部地址空間:Address Space 0和Space 1。前者用于本地應(yīng)用寄存器和配置空間,占用連續(xù)的16KB,其中4KB用于配置空間;后者用于數(shù)據(jù)傳輸,容量大,可以不連續(xù),為了將PCIe地址映射到該空間,需使用4個區(qū)域(region0-3)來協(xié)助完成。
PCIe輸入地址翻譯通過配置寄存器IB_BARn、IB_STARTn_HI、IB_STARTn_LO和IB_OFFSETn來實現(xiàn),Inbound ATU將PCIe地址映射到內(nèi)部地址的過程如下[5]。
① 分離偏移值:
Offset=PCIe address-(IB_STARTn_HI:IB_STARTn_LO)
② 計算內(nèi)部地址:
Internal address=IB_OFFSETn+offset
PCIe輸入地址翻譯示意圖如圖3所示。
3 PCIe中斷
PCIe中斷控制器包括核級中斷控制器和片級中斷控制器CIC,中斷的路由可概括為:系統(tǒng)中斷先通過CIC映射到主機中斷上,主機中斷再由核級INTC的事件組合器、中斷選擇器等寄存器映射到CPU的12個可屏蔽的中斷上。CPU的12個可屏蔽的中斷也就是HWI可以為其指定ISR。在ISR中查詢相關(guān)狀態(tài)寄存器可以確定中斷〔
OPT參數(shù)可以設(shè)置對應(yīng)通道的優(yōu)先級、同步方式、傳輸方式等。SRC/DST用于存放EDMA傳輸?shù)脑吹刂泛湍康牡刂?。SRCBIDX/DSTBIDX指示傳輸幀中數(shù)據(jù)陣列array的間隔。LINK指明EDMA的參數(shù)鏈接地址。SRCCIDX/DSTCIDX指示傳輸塊中幀間間隔。CCNT表示傳輸幀數(shù)。
傳輸參數(shù)的鏈接由Param的Link位進行控制,Link可以鏈接到256個參數(shù)中的任何一個或者自身,鏈接參數(shù)的最后一個參數(shù)為NULL參數(shù)。同時EDMA還支持通道鏈接Chain傳輸,允許由一個EDMA傳輸通道的完成觸發(fā)另一個傳輸通道的開始,組成一個傳輸鏈。需注意參數(shù)鏈接和通道鏈接有著本質(zhì)區(qū)別,參數(shù)鏈接是指將多組參數(shù)加載到某一EDMA通道,而鏈接傳輸不修改任何傳輸參數(shù),其可以通過一個事件同步所有的通道傳輸。
OPT的設(shè)置有:TCINTEN(1,傳輸完成產(chǎn)生中斷)、TCC(傳輸完成碼為0,在IPR的最低位產(chǎn)生中斷)、TCCMODE(0,正常傳輸完成)、STATIC(1,參數(shù)集是靜態(tài)的不自動更新)、SYNCDIM(1,AB同步傳輸)、DAM/SAM(0,源和目的地址自動更新)。
啟動EDMA傳輸?shù)姆绞接卸喾N,最常用的是Manual Trigger,我們通過寫ESR中的某一位可以啟動其對應(yīng)的通道提交傳輸請求事件,這個事件經(jīng)過優(yōu)先級的過慮后,會發(fā)送到一個事件隊列中,這里可以通過設(shè)置DMA Channel Queue n Number Registers (DMAQNUMn)寄存器將通道提交的傳輸請求事件派發(fā)到指定的事件隊列中。
使用EDMA3進行讀的過程如下(寫的過程類似,區(qū)別在于源與目的地址不一樣) [3]:
⑴ 配置Outbound,將主機的PCIe域地址映射到DSP的PCIe data space address(0x6000_0000~0x6FFF_FFFF);
⑵ 設(shè)置通道0使用事件隊列0也就是使用TC0;
⑶ 使能IER;
⑷ 清除ICR;
⑸ 設(shè)置傳輸屬性寄存器;
⑹ 將主機端具體的PCIe域地址,轉(zhuǎn)換成DSP端的PCIe data spaceaddress(0x6000_0000~0x6FFF_FFFF)范圍內(nèi)的地址;
⑺ 設(shè)置PaRAM的其他域,包括ACNT、BCNT、SRC、DST、LIKE等;
⑻ 啟動EDMA3傳輸。
5 結(jié)論
本文詳細介紹了PCIe接口的Inbound和Outbound地址映射寄存器配置方法,以及PCIe的中斷安裝過程和EDMA的傳輸配置與實現(xiàn)過程。通過本文方法可快速完成基于多核DSP的PCIe接口配置與編程。由于TI公司的C66x系列DSP定位于各行各業(yè)的開發(fā)應(yīng)用,因此本文方法可為通信領(lǐng)域、航空電子、實時檢測、生物識別、醫(yī)療診斷、視頻監(jiān)控以及音頻處理等系統(tǒng)的PCIe接口程序設(shè)計提供參考。
參考文獻(References):
[1] 王齊.PCI Express體系結(jié)構(gòu)導讀[M].機械工業(yè)出版社,2010.
[2] 牛金海.TMS320C66x KeyStone架構(gòu)多核DSP入門與實例
精解[M].上海交通大學出版社,2014.
[3] 潘曄,廖昌俊.TI-DSP多核技術(shù)及實時軟件開發(fā)[M].電子工
業(yè)出版社,2015.
[4] TEXAS INSTRUMENTS. Keystone Architecture Peripher-
al Component Interconnect Express(PCIe) User Guider. Devices. http://www.Ti.com,Technical Report, December 2012.
[5] TEXASINSTRUMENTS.PCIeUse Case for Keystone
Devices.http://www.Ti.com,Technical Report,December 2012.
[6] TEXAS INSTRUMENTS. Enhanced Direct Memory
Access (EDMA3) Controller User Guide. http://www.Ti.com,Technical Report,December 2012.