欧美成人黄色网_欧美精品久久_国产在线一区二区三区_免费视频久久久_亚洲二区视频_欧美大片免费高清观看

產品分類

當前位置: 首頁 > 行業動態

DSP中DMA操作的無阻塞請求實現

發布日期:2022-07-14 點擊率:36

le="display: block;">

DMA在DSP應用中至關重要,本文給出了DMA操作非阻塞的請求方法,針對TMS320C620x,實現了與CSL中DAT接口一致的驅動模塊QDAT,并指出了EDMA相關的高級特征。

在DSP中,DMA控制器實際是一個外設,與其他集成的串口、主機接口、片外內存接口等都在系統外設總線上,也與其他外設一樣有一組相關的控制/狀態/數據寄存器,CPU可以訪問。

非常重要的一點是,DMA通道能夠用于內存之間的數據傳送。這里內存都是統一編址的,包括:片上內存,程序和數據分立;接在EMIF上的片外內存,如SDRAM;外設的寄存器也都是內存映射的(memory-mapped),所以DMA通道也可以用于外設和內存之間,進行外設數據接收與發送。

在DSP的處理模型中,所有數據應位于片上供CPU處理,不鼓勵CPU直接訪問片外數據,因為CPU訪問片外資源的時間較長,周期數也不確定,對于實時性和確定性不利。片上內存有時也能夠配置成為緩存(cache),緩存控制器會根據一定策略、使用DMA方式切換片外的數據進出緩存,最終使得用戶能夠在片上訪問數據,這個過程對用戶是透明的。正因為緩存的機制是透明的,所以也是很難控制的。比如,一段調用頻率很高的代碼很可能被不常用的部分清出緩存,因為它們映射相同,但隨后又很快被調入,這樣會造成局部的效率降低。

所以,如果能夠明確掌握程序流或數據流的運轉特征,不使用緩存模式,用戶通過DMA進行自定義的調度,可能提高效率。有的處理器不具備緩存控制器,不支持片上內存作為緩存,如C6205的片上數據內存就不能夠配置為緩存,所以主動使用DMA移動數據不可避免。

DSP的DMA功能一般也都較為強大,TI C6000系列的DMA通道支持1D-1D、1D-2D、2D-1D以及常用的2D-2D數據傳送,對DMA的合理使用可能替代相當的編程效果,如排序、采樣或裁剪。

TI的CSL(Chip Support Library,芯片支持庫)對于使用DMA給出了很好的支持,有專門的DMA模塊,便于對DMA的各個寄存器進行控制。還有一個DAT模塊,使用DMA進行內存數據傳送,函數DAT\_copy()和DAT\_fill()就像常用的內存操作memcpy()、memset()一樣,只需要在API接口指出源地址、目的地址和長度,或者其他的維數屬性等即可,不需要再去管具體的寄存器,非常方便。

視頻處理實例分析

DAT模塊易用,但因為是在CSL中,所以只能將DMA控制器直接的功能表達出來。對于灰度圖像處理(先不考慮將算法處理后的結果傳回片外的情況),在下面的處理框架中,每次DMA執行操作時,CPU在前臺還可以做算法處理任務。


...


task=DAT_copy(...);//啟動頭一個DAT任務


...


while(not_finished){


DAT_wait(task); //本次task完成


task=DAT_copy(...); //啟動下一次的DMA


pingpong_alg_process(...); //對本次傳送的數據處理


}

當視頻為4:2:0 YUV圖像(planar模式)序列,需要處理某一區域時,實際上是在相同時機處理Y、U、V三塊數據,通常它們并不連續,也就是說,將會同時使用三個DMA操作。

這里可能可以同時啟動多條DMA通道,但有一些限制:


1. 有的處理器支持同時啟動的DMA通道數有限,有些DSP有4條通道,但寄存器集只能完整地支持兩條;


2. 由于共享總線和某些接口,同時工作的DMA通道數過多將可能增加訪問沖突,降低系統性能;


3. 有時多條通道又必須同時使用,比如系統視頻、音頻采集進入的數據必須占用獨立的通道。

所以,上面的任務能夠盡量使用一個DMA通道完成,不失一般性,DAT模塊的所有操作實際上是在一條打開的通道上完成的。

那么,對于YUV圖像,處理程序框架類似上面,可能如下,


...


taskY = DAT_copy(...);


taskU = DAT_copy(...);


taskV = DAT_copy(...);


...


while(not_finished){


DAT_wait(taskY);


DAT_wait(taskU);


DAT_wait(taskV);


taskY = DAT_copy(...);


taskU = DAT_copy(...);


taskV = DAT_copy(...);


YUV_pingpong_process(...);


這時問題出現了:C620x的DMA通道一次只能接受一個傳送請求,也就是說,每次請求必須等到該通道空閑時才可能真正提交上去,這樣taskY和taskU在后臺操作時,前臺無法進行taskU和taskV的啟動,即實際上前臺沒有什么處理任務可做,浪費了效率。而這三個dat任務綁定在一起,啟動時機很難拆開。顯然,如果能夠允許DMA請求連續地提交,將提高效率。

DMA通道請求非阻塞提交的方法

把DMA通道看作一個單處理單元,每個DMA操作作為一個任務,這就形成了一個單處理多任務的模型,任務調度就是FIFO。不妨定義:


1. DMA通道請求上下文是一個數據結構,它包含啟動一次DMA傳送所需要設定的寄存器參數集合,如源、目的、長度、index寄存器(維數)等等;

2. DMA通道請求上下文隊列,一個DMA請求上下文的隊列用以緩存DMA請求;

DMA通道的使用和請求非阻塞的提交應有以下兩條原則:


a. 應用程序的使用DMA通道的方法:

提交DMA通道請求(無阻塞),獲得此次任務的id;在需要使用某任務的目標內存時,應檢查該id任務狀態直到完成;如果完成,即可進行相應的處理。


b. 無阻塞提交DMA通道請求的實現:標志此次DMA傳送任務正在進行;如果DMA通道空閑,設置寄存器啟動DMA操作,標志DMA通道正在工作;如果DMA通道正在工作,則將此次DMA請求插入上下文隊列。

3. DMA中斷服務程序(注:DAT模塊不使用ISR,只是查詢對應標志,確定DMA傳送是否完成):標志此次DMA傳送任務完成;如果DMA請求上下文隊列為空,標志DMA通道空閑;如果DMA請求上下文隊列非空,則從隊列中取出頭一個DMA請求上下文,用以設置相應的寄存器啟動DMA操作。

QDAT:一個非阻塞的DMA模塊實現

在TI C620x DSP上,一個非阻塞的DMA模塊QDAT根據以上原理得以實現。

QDAT的API與DAT模塊的基本一致,優點是使用上述的YUV圖像處理應用程序中,不會發生DMA請求阻塞;

QDAT與DAT模塊功能相似,但屬于驅動程序層次的實現,基于:CSL的DMA模塊;CSL的IRQ模塊;以及DSP/BIOS的QUE模塊。

不過實現十分簡便、輕盈。

該模塊獨立于應用和算法,已經在基于TI C620x DSP上的多個項目中使用,效果十分理想,特別是因為QDAT任務中的DMA操作經過了串行化,也大大降低了在EMIF上訪問內存時的沖突。

EMDA的先進特征

這些項目向新的TI DM642媒體處理器上移植時,以上的操作將利用EDMA的先進特征, 因為TI C6x1x 和 C64x DSP開始使用EDMA,值得注意的是,EDMA通道控制器(EDMACC)有專門的PRAM(parameter

RAM)來緩存DMA請求參數,EDMA事件參數表中有標志以及LINK address,用來指示本次DMA傳送結束后,

是否有新的DMA請求參數需要重載入操作寄存器; 如果有,LINK address所指就是新的參數在PRAM的位置。

顯然因為這樣的鏈表機制,使用該通道連續兩次傳送之間無需中斷處理程序(CPU)介入隊列管理,效率將提高。

對于頻繁的內存數據傳送,如DAT操作一般使用QDMA, 它由CPU直接將傳送請求(TR)提交給傳送控制器(EDMATC),TC中有四個優先級隊列,每個TR都將進入其對應(已指定)的一個隊列。

對于不同的請求源,隊列的長度可編程,每個隊列最多可以接收7個QDMA請求。 如果隊列有空,TR就可以進入;若滿了,CPU將會停止(stall)幾個EDMA周期等待TC的執行,隊列隨即空出一個位置。

總之,EDMA執行機構這種純硬件的隊列機制使得效率提升更加極大化, 減少了軟件對此的相關開銷。

欲獲取相關技術信息可以訪問。

作者:錢浙濱博士

Email: @


下一篇: 創新推動電子產業,首

上一篇: 基于THOMSON CD-DVD模

主站蜘蛛池模板: 国产日韩一区二区三区在线观看 | 国产性生大片免费观看性 | 国产精品99久久久久久董美香 | www片香蕉内射在线88av8 | 国产乱码卡二卡三卡老狼 | 欧美大肥婆大肥bbbbb | 欧美一区二区三区在线可观看 | 国产激情一区二区三区四区 | a网站在线观看免费网站 | 九九色影院 | 久9这里精品免费视频 | 四虎免费看片 | 扒开双腿疯狂进出爽爽爽 | 日本在线看片网站 | 18禁黄无遮挡网站 | 国产成人综合久久 | 国精产品一二三区精华液 | 丰满少妇aaaaaa爰片毛片 | 亚洲第一页中文字幕 | 国产精品视频全国免费观看 | 欧美黑人又粗又硬xxxxx喷水 | 亚洲精品一区二区三区四区手机版 | 欧美日韩国产色综合一二三四 | 国产精品人妻一区二区三区四 | 国产舌乚八伦偷品w中 | 男人的天堂欧美精品色偷偷 | 欧美成人aa久久狼窝五月丁香 | 无码毛片视频一区二区本码 | 青青青青青青青青在线观看 | 国产毛片一区二区 | 亚洲自拍偷拍在线观看 | 久久在线中文字幕 | 午夜精品影院 | 福利视频一区二区微拍堂 | 韩国在线精品福利视频在线观看 | 丰满老熟女毛片 | 国产男男gaygay同志网站 | 男人深夜影院 | 久久综合久久香蕉网欧美 | 一区二区不卡不卡一卡 | 成年女人a毛片免费视频 |