基于1MPC8280的AAL2與DMA通道驅(qū)動(dòng)軟件的實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1
在B-ISDN(寬帶綜合業(yè)務(wù)數(shù)字網(wǎng))ATM參考模型中,AAL(ATM適配層)介于ATM層和應(yīng)用程序之間,主要負(fù)責(zé)ATM層與高層間的信元轉(zhuǎn)發(fā)過程。不同的AAL支持不同的流量或服務(wù)類型。對(duì)于ATM傳輸,AAL2提供同步模式、面向連接、可變比特速率傳輸,而AAL5提供異步模式、面向連接、可變比特速率傳輸。由于AAL5的處理比AAL2簡(jiǎn)單得多,目前大部分的網(wǎng)絡(luò)處理器都只支持AAL5的適配,不適合TD網(wǎng)絡(luò)測(cè)試儀的應(yīng)用。隨著網(wǎng)絡(luò)的普及化和復(fù)雜化,網(wǎng)絡(luò)的合理架設(shè)和正常運(yùn)行變得異常重要,而保障網(wǎng)絡(luò)的正常運(yùn)行必須要從兩個(gè)方面著手。其一,網(wǎng)絡(luò)施工質(zhì)量直接影響網(wǎng)絡(luò)的后續(xù)使用,所以施工質(zhì)量不容忽視,必須嚴(yán)格要求,認(rèn)證檢查,防患于未然。其二,網(wǎng)絡(luò)故障的排查至關(guān)重要,直接影響網(wǎng)絡(luò)的運(yùn)行效率,必須追求高效率、短時(shí)間。因此網(wǎng)絡(luò)檢測(cè)輔助設(shè)備在網(wǎng)絡(luò)施工和網(wǎng)絡(luò)維護(hù)工作中變得越來越重要。
2 ATM控制器
ATM控制器通過Utopia2端口實(shí)現(xiàn)ATM和AAL適配層協(xié)議,可工作在主、從模式下。它能以155 Mb/s的全雙工速率支持AAL5、AAL2、AAL1和AAL0的分段(segmentation)與重組(SAR)功能以及CP-CS子層協(xié)議。對(duì)每個(gè)虛擬信道VC,ATM控制器的步速控制器單元APC生成信元的發(fā)送速率,以滿足CBR、VBR、ABR以及非特定速率的發(fā)送需求。APC單元采用漏斗機(jī)制調(diào)節(jié)VBR。APC單元也采用8個(gè)優(yōu)先級(jí)實(shí)時(shí)控制ATM信道的發(fā)送。
3 DMA控制器
PCI橋的DMA控制器用于傳輸603e核或主機(jī)的數(shù)據(jù)塊。數(shù)據(jù)的搬移發(fā)生在PCI或者60×總線上。PCI橋的DMA模塊有4個(gè)高速的DMA通道,傳輸帶寬210 Mb/s。603e核和PCI主控器都可以初始化DMA的傳輸。DMA控制器可工作在鏈表模式或直接訪問模式。對(duì)每個(gè)傳輸段,按照裝載的描述器的信息DMA控制器開始傳輸。一旦當(dāng)前段傳輸完,DMA控制器就從內(nèi)存中讀取下一個(gè)描述器的信息,然后開始下一個(gè)DMA傳輸。如果當(dāng)前描述器是鏈表中的最后一個(gè),或者有錯(cuò)誤發(fā)送,此進(jìn)程結(jié)束。DMA(Direct Memory Access,直接內(nèi)存存取) 是所有現(xiàn)代電腦的重要特色,他允許不同速度的硬件裝置來溝通,而不需要依于 CPU 的大量 中斷 負(fù)載。否則,CPU 需要從 來源 把每一片段的資料復(fù)制到 暫存器,然后把他們?cè)俅螌懟氐叫碌牡胤健T谶@個(gè)時(shí)間中,CPU 對(duì)于其他的工作來說就無法使用。 DMA 傳輸將數(shù)據(jù)從一個(gè)地址空間復(fù)制到另外一個(gè)地址空間。當(dāng) CPU 初始化這個(gè)傳輸動(dòng)作,傳輸動(dòng)作本身是由 DMA 控制器 來實(shí)行和完成。典型的例子就是移動(dòng)一個(gè)外部?jī)?nèi)存的區(qū)塊到芯片內(nèi)部更快的內(nèi)存區(qū)。像是這樣的操作并沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對(duì)于高效能 嵌入式系統(tǒng) 算法和網(wǎng)絡(luò)是很重要的。DMA控制器框圖如圖1所示。
4 AAL2的適配
AAL2適用于傳輸?shù)退俾收Z音流量。AAL2分為通用部分子層(CPS)和服務(wù)特定會(huì)聚子層(SSCS)。AAL2的數(shù)據(jù)單元的分段與重組情況如圖2所示。
ATM層一個(gè)ATM信元的凈荷可以裝載一個(gè)或多個(gè)CPS包,多個(gè)CPS包在CPS子層組成CPS-PDU,多個(gè)CPS-PDU在SSSAR子層組成SSSAR-PDU,多個(gè)SSSAR-PDU最后組成一個(gè)SSSAR-SDU。圖2中的STF域表示在一個(gè)ATM信元中第一個(gè)CPS包的起始偏移位置,是一個(gè)非常重要的域。
4.1初始化模塊
初始化模塊負(fù)責(zé)將FCC1配置成ATM模式以實(shí)現(xiàn)ATM控制器功能,主要完成對(duì)ATM參數(shù)表、APC控制器、中斷隊(duì)列、壓縮地址映射表、以及時(shí)鐘和Utopia2的接口配置。
4.2數(shù)據(jù)發(fā)送模塊
上層應(yīng)用通過API接口,API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件的以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。API除了有應(yīng)用“應(yīng)用程序接口”的意思外,還特指 API的說明文檔,也稱為幫助文檔。另外,也是美國(guó)石油協(xié)會(huì)、空氣污染指數(shù)、醫(yī)藥、空中位置指示器的英文簡(jiǎn)稱。使用DMA通道將發(fā)送消息隊(duì)列中的數(shù)據(jù)幀發(fā)送給發(fā)送模塊,發(fā)送模塊從消息隊(duì)列中取得數(shù)據(jù)幀和其對(duì)應(yīng)的通道號(hào),將通道號(hào)寫入ATM參數(shù)表,完成TCT表、CID表、TxQD和TxBD表的初始化;將數(shù)據(jù)幀寫入發(fā)送緩存DataBuffer中,并設(shè)置該緩存所對(duì)應(yīng)的TxBD(發(fā)送緩存描述符)的R(Ready)標(biāo)志位。數(shù)據(jù)發(fā)送流程如圖3所示。
4.3數(shù)據(jù)接收模塊
ATM控制器收到信元后,根據(jù)從信頭中提取的VPI和VCI值在壓縮地址映射表中查找其所對(duì)應(yīng)的通道號(hào)Ch_Num,如果沒有找到相匹配的通道,則將該信元丟棄。如果找到相匹配的通道,則找到接收初始配置形成的接收鏈表RCT;然后根據(jù)信元凈荷里的CID值找到接收初始配置形成的CID表、RxQD表;最后互相映射,一起找到接收初始配置形成的RxBD表,把該通道真正的消息體存儲(chǔ)在所對(duì)應(yīng)的接收緩存中。根據(jù)接收信元是處理到的CPS子層,還是SSSAR子層,ATM控制器完成信元的重組SAR。數(shù)據(jù)接收模塊根據(jù)觸發(fā)的接收中斷隊(duì)列條目的原因值,找到所對(duì)應(yīng)的通道號(hào),然后從該通道所對(duì)應(yīng)的接收緩存中取出收到的數(shù)據(jù)幀,最后打上時(shí)間標(biāo)簽等自定義頭,通過DMA通道把接收消息隊(duì)列送給API接口。數(shù)據(jù)接收流程如圖4所示。
5 DMA通道驅(qū)動(dòng)設(shè)計(jì)
開發(fā)中由于和底層程序交互,當(dāng)?shù)讓訉憹M一塊區(qū)域(共3塊)后,通過DoorBell中斷通知驅(qū)動(dòng)程序。首先創(chuàng)建一個(gè)內(nèi)核事件對(duì)象,在SerialRead中設(shè)置開始DMA時(shí),啟動(dòng)底層程序?qū)憯?shù)據(jù),在OnD-maReady函數(shù)中,等待事件信號(hào),當(dāng)?shù)讓訑?shù)據(jù)準(zhǔn)備好,發(fā)生DoorBell中斷時(shí),由于硬件中斷的優(yōu)先級(jí)高,所以,程序進(jìn)入Isr_Irq中斷服務(wù)例程,在該函數(shù)中,判斷是DoorBell中斷后,置事件為有信號(hào)狀態(tài),然后返回TRUE。下面給出了部分的中斷服務(wù)例程代碼:
6結(jié)束語
本系統(tǒng)是以MPC8280為核心,通過PCI采用DMA通道完成底層硬件與上層軟件之間的數(shù)據(jù)交互,經(jīng)過軟硬件調(diào)試,在實(shí)際應(yīng)用中運(yùn)行穩(wěn)定。
參考文獻(xiàn):
[1].PCIdatasheethttp:///datasheet/PCI_1201469.html.
LILI