基于DM642的EDMA圖像處理系統
數據計數的重加載(Element Count Reload),16bit無符號數。用于在每幀最后一個數據元素傳輸之后.重新加載傳輸計數值。這個參數只能用于1一D傳輸中。
鏈接地址(Link Address),16bit。當設定可選參數中的LINK=1時,可以由鏈接地址確定下1個EDMA事件采用參數的裝載,重裝載地址,從而使多組 EDMA傳輸參數形成EDMA傳輸鏈。
4 EDMA的傳輸操作
EDMA進行數據傳輸時有2種啟動方式,1種是CPU啟動.另1種是由同步事件觸發。每1個通道的啟動是相互獨立的。
4.1 CPU啟動EDMA/非同步的 EDMA
CPU可以通過寫事件置位寄存器(ESR)啟動1個EDMA通道。向ESR中某1位寫1時,將強行觸發對應的事件。此時,與正常的事件響應過程類似, EDMA的PaRAM中的傳輸參數被送入地址發生器.完成對EMIF、L2存儲器或外設的存取訪問。由CPU啟動的EDMA屬于非同步的數據傳輸。EER 中的事件使能與否不會影響這種EDMA傳輸的啟動。
4.2 由事件觸發 EDMA
一旦事件編碼器捕獲到1個觸發事件并鎖存在ER寄存器中,將導致PaRAM中對應的參數被送入地址發生器.進而執行有關的傳輸操作。盡管是由事件啟動傳輸操作,但是事件本身必須首先被CPU使能。EER寄存器負責控制事件的使能。觸發EDMA傳輸的同步事件可以源于外設,外部器件的中斷或某個EDMA通道結束。與DMA的情況不同,與EDMA的每1個通道相關聯的觸發事件是固定的。因此,如果假設EER中的EVT4=1,那么EXT_INT4引腳的外部中斷信號就會啟動EDMA通道4的傳輸。所以,每個事件也就指定了1個特定的EDMA通道。
在實時圖形處理系統中,經常是把數據塊轉移,例如從視頻通道采集數據傳送到SDRAM中作為后續處理的緩存,或是把數據傳送到片內RAM中。EDMA使數據的傳送簡單易行。下面以把數據從視頻通道傳送到片內RAM中并作Sobel邊緣提取算法和把數據從視頻通道傳送到SDRAM中并作So—bel邊緣提取算法為例。
(1)把數據從視頻通道通過1維方式傳送到片內RAM中并作Sobel邊緣提取算法
只對攝像頭采集的I塊數據進行Sobel邊緣提取。采用一維EDMA傳送方式,每1次傳送采集1行中的部分數據(DAT_copy()函數)。在PAL制式下.先把1行數據放到nMemTemp數組中,然后對從144行到432行、從180列到435列的圖像進行Sobel邊緣提取.最后把變換后的數據輸出到顯示緩沖區.如圖1所示。


因為Sobel算法需要3行數據,所以可以開辟1個可以存放3行數據的緩沖區,通過指針的交換把從視頻通道過來的數據分別放到緩沖區中。保存的3行圖像使用翻卷的緩沖區管理,3個變量分別指示當前使用的y行、y—l行和y一2行在緩沖區中的起始偏移量。可以這樣:輪流往3塊緩存區拷貝數據.只要改變拷貝的指針就可以。在拷貝當前這1塊的時候.已經拷貝的另外2塊數據依然沒有變化,所以就可以實現3塊數據保存采集圖像中的相鄰3行數據.如表2所示。


評論