基于S3C6410的DMA數(shù)據(jù)跟蹤技術(shù)在TD-LTE中的實現(xiàn)
摘 要: 基于TD-LTE系統(tǒng)中數(shù)據(jù)跟蹤技術(shù)的研究與DMA獲取系統(tǒng)總線的不同模式,設計并分析比較了在S3C6410上通過DMA實現(xiàn)原語跟蹤的兩種方案。根據(jù)TD-LTE無線綜合測試儀中的設計要求,選擇了中斷標志查詢模式獲取系統(tǒng)總線的方案,實現(xiàn)了TD-LTE系統(tǒng)原語的實時跟蹤,滿足了系統(tǒng)對CPU資源利用率以及數(shù)據(jù)傳輸速度和準確性的要求。
關(guān)鍵詞: 直接存儲器存取;嵌入式應用;長期演進;跟蹤數(shù)據(jù)
原語是從物理層到非接入層各層間的通信數(shù)據(jù),這些數(shù)據(jù)包含帶有大量標識信息的頭。在TD-LTE無線綜合測試儀表數(shù)據(jù)傳輸過程中,從最上端非接入層開始向下逐層將數(shù)據(jù)加頭并加入本層的有效數(shù)據(jù),到物理層后向上反饋并逐層解析頭提取本層所需數(shù)據(jù)。這些數(shù)據(jù)的正確性是確保整個通信系統(tǒng)正常運作的關(guān)鍵所在,因此,在系統(tǒng)設計與調(diào)試過程中對這些數(shù)據(jù)的實時跟蹤檢測十分必要。
本文介紹了在TD-LTE中基于三星ARM1176JZF芯片S3C6410的DMA技術(shù)的具體應用實現(xiàn)(即原語跟蹤技術(shù)),以及在具體環(huán)境中不同技術(shù)方案的對比分析。最終的設計方案充分利用了DMA在基帶芯片中的可用性與占用CPU資源小的優(yōu)勢[1],實現(xiàn)了高效實時可靠的原語跟蹤。
1 S3C6410中DMA控制器特性
S3C6410包含4個DMA控制器,每個DMA控制器由8個傳輸通道組成。DMA控制器的每個通道能在主AXI(Advanced Extensible Interface)總線的設備和外部AXI總線之間通過AHB(Advanced High performance Bus)到AXI進行單向數(shù)據(jù)傳輸。DMA控制器結(jié)構(gòu)框圖如圖1所示,每個控制器提供16個外設DMA請求,并且DMA控制器支持外部中斷響應,即每個通道可以支持從內(nèi)存到外設、從內(nèi)存到內(nèi)存、從外設到內(nèi)存、從外設到外設4種模式的數(shù)據(jù)傳輸。在TD-LTE系統(tǒng)中,原語跟蹤使用的是內(nèi)存到外設模式,每個外設連接到DMA控制器,可以產(chǎn)生DMA脈沖請求或是單一DMA請求,脈沖大小可編程。DMA內(nèi)部有4個字的FIFO通道,支持8 bit、16 bit、32 bit寬度處理。由于原語跟蹤采用的外設是UART支持的8 bit輸出,故本文在設計中DMA也采用8 bit處理[2]。
2 DMA信號處理流程與跟蹤步驟
數(shù)據(jù)跟蹤的基本機制如下:首先為各層的數(shù)據(jù)在內(nèi)存中開辟存儲空間,將數(shù)據(jù)存儲到指定緩存中,再由DMA實現(xiàn)內(nèi)存到外設的數(shù)據(jù)搬移。本文的外設是UART,將數(shù)據(jù)搬移到UART的輸出緩存區(qū)以實現(xiàn)數(shù)據(jù)跟蹤。DMA控制器和外設的信號交互如圖2所示。
當請求被允許且剩余數(shù)據(jù)量大于脈沖大小時,DMA控制器發(fā)送全部數(shù)據(jù)脈沖;而剩余數(shù)據(jù)量小于脈沖大小時,DMA控制器將再次監(jiān)控請求信號等待下次傳輸[3]。本文在數(shù)據(jù)跟蹤時將脈沖設置為1以滿足數(shù)據(jù)跟蹤實時性的要求。此外,由于單次數(shù)據(jù)量并不是很大(最大不過字節(jié)單位的數(shù)據(jù)量),因此沒有采用鏈表模式來傳輸數(shù)據(jù)。整個跟蹤過程主要包括以下幾個步驟:首先DMA接收到外設驅(qū)動初始化完畢后發(fā)送的DMA請求;然后DMA控制器請求CPU將數(shù)據(jù)搬移到需要使用的總線交給DMA控制,將數(shù)據(jù)預讀取到DMA-FIFO中(即DMA數(shù)據(jù)搬移內(nèi)部過程);最后打開DMA通道將DMA-FIFO中的數(shù)據(jù)傳輸?shù)経ART的輸出緩存中,輸出到顯示設備。其中只有驅(qū)動初始化和總線釋放過程有CPU參與,而驅(qū)動初始化過程是一次性的,之后的步驟都由DMA單獨控制從而釋放CPU資源以繼續(xù)執(zhí)行系統(tǒng)的其他工作。工作中會產(chǎn)生更多的原語需要DMA反復運行支持實時跟蹤,圖3為數(shù)據(jù)跟蹤基本設計流程。
3 DMA跟蹤數(shù)據(jù)方案設計與分析
數(shù)據(jù)在內(nèi)存中的緩存處理方案是:根據(jù)TD-LTE無線綜合測試儀表系統(tǒng)單次跟蹤的數(shù)據(jù)量大小以及原語產(chǎn)生地址與時間的隨機不連續(xù)性,DMA搬移數(shù)據(jù)時設置了100 KB的數(shù)據(jù)緩存區(qū),以統(tǒng)一數(shù)據(jù)地址提高跟蹤效率[4],從而在合理利用存儲空間的同時也保證了數(shù)據(jù)在傳輸過程中的高效與完整性,設計中采用起始地址和結(jié)束地址標志相減的方式判斷單次數(shù)據(jù)量大小。當數(shù)據(jù)存儲到100 KB緩存邊界緩存溢出時,需要采用一定的數(shù)據(jù)處理機制來做溢出判斷,其處理方式如圖4所示。將本次的數(shù)據(jù)量分成A、B兩塊,分兩次分別傳輸,A部分是本次數(shù)據(jù)搬移起始位置到100 KB邊界位置的數(shù)據(jù)量,B部分是當前數(shù)據(jù)總量減去A部分數(shù)據(jù)后的剩余數(shù)據(jù)量。這里要注意的是:A部分數(shù)據(jù)傳輸完成后,系統(tǒng)可能又產(chǎn)生了新的原語數(shù)據(jù)塊C,因此設計中,在傳輸數(shù)據(jù)塊B時要重新讀取數(shù)據(jù)的終止標志位加上后面產(chǎn)生的新的數(shù)據(jù)塊C,以保證數(shù)據(jù)的實時性與完整性。
在TD-LTE無線綜合測試儀表系統(tǒng)中,原語是單條產(chǎn)生的,并帶有一定的時間間隔。為滿足系統(tǒng)對實現(xiàn)數(shù)據(jù)跟蹤的實時性要求,在跟蹤數(shù)據(jù)時也是單條實時顯示。這就要求在設計中判定DMA在每次傳輸是否完成,避免本次傳輸還未完成而下一次傳輸已經(jīng)開始,導致本次傳輸數(shù)據(jù)不完整。因此在設計過程中,采用了中斷判斷模式和中斷標志位判斷模式兩種方案來判定傳輸是否完成并獲取總線來執(zhí)行下一次數(shù)據(jù)搬移。
3.1 中斷判定模式
根據(jù)S3C6410中DMA控制器特性,DMA在數(shù)據(jù)搬移結(jié)束時可以產(chǎn)生數(shù)據(jù)計數(shù)中斷或數(shù)據(jù)錯誤中斷兩種中斷。設計中打開DMA對應的GPIO(General Purpose Input Output)口并初始化相對應的41號VIC(Vectored Interrupt Controllers)中斷向量,就可以利用數(shù)據(jù)計數(shù)中斷來完成系統(tǒng)的外部中斷響應,進入中斷函數(shù),在中斷函數(shù)中再次調(diào)用DMA以此完成多次數(shù)據(jù)搬移[4]。在使能DMA通道并且數(shù)據(jù)傳輸完成后由硬件自動響應中斷,有效避免了DMA設備在傳輸過程中被下一次傳輸請求打斷,而搬移數(shù)據(jù)和系統(tǒng)其他程序的執(zhí)行完全互不干擾。這種模式可以在各種數(shù)據(jù)量大小的數(shù)據(jù)搬移過程中最大限度地利用CPU資源。但是,由于采用了上述的數(shù)據(jù)緩存機制,而且在TD-LTE系統(tǒng)中斷處理中比DMA計數(shù)中斷優(yōu)先級高的中斷還有很多,因此采用中斷模式在實際運用中會出現(xiàn)以下三種典型不穩(wěn)定的情況及所采取的措施:
(1)在CPU向緩存中搬移數(shù)據(jù)過程中產(chǎn)生了中斷,此時會出現(xiàn)當前一次要搬移的數(shù)據(jù)在內(nèi)存中不完整或標志位混亂的情況,因此,在設計時搬移數(shù)據(jù)前還需要增加內(nèi)存數(shù)據(jù)是否存儲完成的標志位判定。由于中斷類型眾多,設計有一定難度。
(2)最后幾條原語數(shù)據(jù)在存入內(nèi)存緩存區(qū)后,若前面的搬移數(shù)據(jù)還沒有完成,則無法獲取總線,則會導致最后幾條原語無法跟蹤。因此,需要在原語全部發(fā)送完畢后在系統(tǒng)程序靠后的固定位置添加一條空的原語跟蹤語句來跟蹤最后幾條。
(3)當出現(xiàn)較大數(shù)據(jù)量搬移時耗時較長,可能超過上層系統(tǒng)原語發(fā)送的間隔時間,后面幾條原語將堆積到緩存中,等待下一次DMA總線獲取后,一次性搬出,這樣會導致下一次數(shù)據(jù)搬移時間的延長。這一條是基于機制的本質(zhì)問題,實時性和數(shù)據(jù)完整性預計會受到較大影響。
3.2 中斷標志位判定模式