當前位置:首頁 > 單片機 > 單片機
[導讀]介紹了Blackfin533中DMA的類型及特點,描述了DMA在實時圖像處理領(lǐng)域數(shù)據(jù)傳輸中的重要應用,給出了兩個具體的應用實例,最后指出了使用Blackfin533的DMA時應注意的事項。

   摘要:介紹了Blackfin533中DMA的類型及特點,描述了DMA在實時圖像處理領(lǐng)域數(shù)據(jù)傳輸中的重要應用,給出了兩個具體的應用實例,最后指出了使用Blackfin533的DMA時應注意的事項。

    關(guān)鍵詞:Blackfin533;DMA;實時圖像處理;數(shù)據(jù)傳輸

直接存儲器存取(Direct Memory Access,簡稱DMA?對計算機系統(tǒng)是非常重要的。它可以使CPU在運行指令的同時從外部存儲器或設(shè)備中存取數(shù)據(jù),也可以在CPU不參與的情況下,由專用的DMA控制器存取數(shù)據(jù)。 

1?。拢欤幔悖耄妫椋睿担常持械模模停?/B>

Blackfin系列DSP產(chǎn)品包括ADSP-BF535和ADSP-BF533/2/1兩類,都是AD公司最新的基于微信號體系結(jié)構(gòu)的DSP,這些器件含有兩個MAC,并集成了大量的外圍設(shè)備和存儲器接口,每秒運算速度最高可達1200MMAC,因而比較適用于各種視頻、音頻、通信領(lǐng)域。

BF533處理器有多個獨立的DMA控制器,它能以最小的處理器內(nèi)核消耗支持數(shù)據(jù)的自動傳輸。DMA傳輸可以發(fā)生在BF533處理器的內(nèi)存與支持DMA的任一外設(shè)之間。此外,DMA還可以完成有DMA功能的外設(shè)與連接在外部存儲器接口上的外部設(shè)備(包括SDRAM控制器和異步存儲控制器)之間數(shù)據(jù)傳輸。BF533處理器可利用DMA在存儲器空間內(nèi)部,以及在一個存儲器空間和外圍設(shè)備之間傳輸數(shù)據(jù),并可以指定傳輸操作,以便完全集成化的DMA控制器獨立于處理器完成數(shù)據(jù)傳輸時返回到正常的處理。

BF533處理器的DMA控制器同時支持1D和2D DMA傳輸,其DMA傳輸初始化可以通過寄存器狀態(tài)描述符塊中的一組參數(shù)來實現(xiàn)。2D DMA行和列最大可支持64k×64k個元素任意數(shù)。而且列的步長可小于行的步長,并可執(zhí)行交叉存取的數(shù)據(jù)流。這一個特點在某些視頻應用場合特別有用。

    Blackfin533有12個通道DMA控制器。有DMA功能的外設(shè)包括SPORTs、SPI、UART和PPI。每個支持DMA的外設(shè)至少有一個專用的DMA通道。DMA控制器可以完成的幾種數(shù)據(jù)傳輸類型如下:

(1)存儲器和存儲器之間(MDMA);

(2)存儲器和串行外設(shè)接口(SPI)之間;

(3)存儲器和串行接口 (SPORT)之間;

(4)存儲器和通用異步收發(fā)器UART接口之間;

(5)存儲器和并行外設(shè)接口(PPI)之間;

BF533處理器上的DMA傳輸可以基于描述符,也可以基于寄存器?;诿枋龇模模停羵鬏斝枰么娣旁诖鎯ζ鲀?nèi)的一組參數(shù)來初始化一個DMA序列。這種傳輸允許多個DMA序列鏈接在一起。在基于描述符的DMA操作中,一個DMA通道可以通過編程自動建立起來,并可在當前序列完成后開始另一個DMA傳輸?;诩拇嫫鞯模模停猎试S處理器直接對控制寄存器編程來啟動一個DMA傳輸。傳輸完成后,為了連續(xù)傳輸數(shù)據(jù),也可以用它們原來設(shè)置的值自動更新控制寄存器。

2 DMA在數(shù)字圖像處理中的應用

DMA是數(shù)字信號處理器(DSP)中用于快速數(shù)據(jù)交換的重要技術(shù),它具有獨立于CPU的后臺批量數(shù)據(jù)傳輸能力,能夠滿足實時圖像處理中的高速數(shù)據(jù)傳輸要求。由于圖像處理的原始數(shù)據(jù)量很大,同時圖像處理中也會產(chǎn)生等量的中間數(shù)據(jù),對于片內(nèi)存儲資源有限的高速DSP芯片來說,一般需要借用外部存儲空間。為了提高系統(tǒng)的實時處理能力,可以將數(shù)據(jù)在不同存儲空間的轉(zhuǎn)移任務交給DMA來完成,從而使CPU只專注于數(shù)據(jù)的計算。同時DMA對數(shù)據(jù)的重排功能可以優(yōu)化圖像數(shù)據(jù)在內(nèi)存中的存儲,這不僅可以提高內(nèi)部存儲空間的利用效率,也可以提高數(shù)據(jù)的傳輸效率。雖然圖像數(shù)據(jù)的傳輸也可由軟件實現(xiàn),但會消耗大量的CPU時鐘周期,從而使DSP的高速性能難以發(fā)揮。而由DMA來進行同樣的工作卻不占用CPU的時鐘周期。

BF533內(nèi)部專門為適應視頻數(shù)據(jù)處理而增加的二維DMA及相關(guān)寄存器有以下幾種:

(1)配置寄存器(DMAx CONFIG/MDMA yy CONFIG)主要用來設(shè)置二維DMA方式使能和中斷產(chǎn)生方式,其中中斷可以在一行結(jié)束時產(chǎn)生,也可以在整個DMA結(jié)束時產(chǎn)生。

(2)內(nèi)層循環(huán)計數(shù)寄存器(DMAx X COUNT/MDMA yy X COUNT)用于在二維DMA時保存內(nèi)層循環(huán)的數(shù)目(或稱行數(shù)),該數(shù)目必須大于等于2。

(3)內(nèi)層循環(huán)地址增量寄存器(DMAx X MODI-FY/MDMA yy X MODIFY)用于在二維DMA時保存每一次內(nèi)層循環(huán)計數(shù)器加1之后(也就是在內(nèi)層每傳輸完一個元素,但不包括每個內(nèi)層的最后一個元素),DMA操作(讀或?qū)懀┑刂吩趦?nèi)存中的增量,此增量應該是二維DMA操作的數(shù)據(jù)單元長度的整數(shù)倍,如二維DMA進行16位讀寫時,此增量必須是2N?N≠0?倍。

(4)外層循環(huán)計數(shù)寄存器(DMAx Y COUNT/MDMA yy Y COUNT):該寄存器僅在二維DMA中使用,任務是保存外層循環(huán)的數(shù)目(或稱位列數(shù))。

(5)外層循環(huán)地址增量寄存器(DMAx Y MODI-FY/MDMA yy Y MODIFY):該寄存器也僅在二維DMA中使用,任務是保存每次外層循環(huán)計數(shù)器加1后,DMA操作地址在內(nèi)存中的增量,該值可以為負,且應為二維DMA操作數(shù)據(jù)單元長度的整數(shù)倍。3 應用舉例

存儲器的有效利用對系統(tǒng)設(shè)計者來說是需要著重考慮的問題。外部存儲器比較昂貴,而且其存取時具有較長的延遲。為了克服上述問題,Blackfin處理器片上集成有SDRAM控制器,可支持片外存儲器。因為視頻數(shù)據(jù)率要求非??量蹋瑤彌_區(qū)必須設(shè)立在外部存儲器上。這樣,當處理器操作一個緩存時,另一個緩存便可以存儲通過PPI并用DMA傳輸?shù)臄?shù)據(jù),見圖1。

下例可將BF533的PPI接口上從圖像采集芯片ADV7183傳送過來的視頻流中的一場視頻圖像(720×288像素)存儲到外部存儲器SDRAM中。

具體程序代碼如下:

Init_DMA() ?

{

*pDMA0 START ADDR = 0x0; //把圖像存放在SDRAM中的起始地址//0x00000000處;

*pDMA0 X COUNT = 720; //圖像的行數(shù);

*pDMA0 X MODIFY = 0x4; //在內(nèi)層每次傳完一個元素后地址的增量,因為每次傳輸32位,所以是0x4?

*pDMA0 Y COUNT =72; //外層循環(huán)的數(shù)目,因為總的緩存為720×288字節(jié),所以288/4=72?

*pDMA0 Y MODIFY = 0x4; //傳完一行數(shù)據(jù)后DMA的地址增量,因為是存儲空間是連續(xù)的,所以是0x4?

*pDMA0 PERIPHERAL MAP = 0x0?

//外設(shè)PPI的DMA開啟;

*pDMA0 CONFIG = DMAEN |DI EN|WNR|WDSIZE 32|RESTART|DMA2D|DI EN;

//使能DMA,整個DMA結(jié)束產(chǎn)生中斷,存儲器寫。32位傳輸,重新開始前丟失FIFO中的數(shù)據(jù)。

}

當一個完整的圖像幀存放在SDRAM后,數(shù)據(jù)將傳輸?shù)絻?nèi)部L1數(shù)據(jù)存儲器中,這樣,處理器內(nèi)核用一個時鐘周期的延遲就可以訪問到數(shù)據(jù)。為此,DMA控制器可以用二維傳輸獲得像素塊。圖2所示是一個16×16“宏塊”的傳輸示意圖。

圖2

    為了有效地從原圖像中傳輸一個圖像塊,一般需要控制四個參數(shù):X Count、Y Count、X Modify和Y Modify。其中X Count和Y Count分別表示水平和垂直方向上讀入/讀出的元素數(shù)。在此應用中“水平”和“垂直”是抽象的概念,因為圖像數(shù)據(jù)在外存中實際上是線性存儲的。另外兩個參數(shù)X Modify和Y Modify是在傳輸了必需的X Count和Y Count后跨越的數(shù)據(jù)量。從性能上看,任何時候最多四個唯一的SDRAM內(nèi)部子組(bank)都是活動的。這意味著在視頻結(jié)構(gòu)中,PPI填充一個子組(bank)時,2D到1D DMA只是把數(shù)據(jù)從一個子組(bank)拖進來,而沒有額外的子組(bank)激活延遲。下面是一個2D到1D的DMA傳輸代碼:

2Dto1D_DMA()

{

unsigned char *p;

p=0x0;

*pMDMA_D0_START_ADDR=p+L1buffer;

//L1buffer是L1緩沖區(qū)的地址

*pMDMA_D0_X_COUNT=64;

//16×16/4=64;

*pMDMA_D0_X_MODIFY=4;

pMDMA_S0_START_ADDR =p+Sourcebuffer; //Sourcebuffer是16×16圖像塊在SDRAM中的地址

*pMDMA_S0_X_COUNT=4;

*pMDMA_S0_X_MODIFY=4;

*pMDMA_S0_Y_COUNT=16;

*pMDMA_S0_Y_MODIFY=708;

// 720-16+4=708

*pMDMA_S0_CONFIG=WDSIZE32|DMAEN|DMA2D;

*pMDMA_D0_CONFIG=DI EN|WDSIZE32|WNR|DMAEN;

*pMDMA_D0_IRQ STATUS=0x1;

//消除中斷;

4 BF533中DMA的使用注意事項

下面兩種情況會導致DMA總線錯誤:

(1)數(shù)據(jù)沒有對齊

當要傳送的數(shù)據(jù)與當前地址不相符時,可能發(fā)生數(shù)據(jù)沒有對齊的錯誤。數(shù)據(jù)不對齊包括有情況:第一是當DMA CONFIG 寄存器的WDSIZE為1(16bit)時,地址的最低位不等于0;第二是當WD-SIZE為2(32bit)時,最低兩位地址不等于00。如果出現(xiàn)上述錯誤,IRQ寄存器中的位2應被置位。

(2)非法存儲器訪問

發(fā)生非法存儲器訪問時(如訪問MMR空間),處理器將得到一個錯誤響應并導致以下結(jié)果:第一是DMA通道會結(jié)束當前的單個或突發(fā)式傳送;第二是DMA信道的使能位(配置字的bit0)將被清零;第三是產(chǎn)生一個總線錯誤中斷并使IRQ 狀態(tài)寄存器中的位2被置位。

還有一點就是要保證對MDMA中MDMA_S0_CONFIG(MDMA S1 CONFIG?位的寫入一定要在寫入MDMA_D0_CONFIG(MDMA_D1_CONFIG)之前。

5 總結(jié)

一般情況下,圖像處理系統(tǒng)的最大特點是運算數(shù)據(jù)量大,數(shù)據(jù)量往往大于片內(nèi)存儲器容量,所以必須借助DMA在片內(nèi)高速存儲區(qū)與片外低速存儲區(qū)之間進行數(shù)據(jù)交換,以提高數(shù)據(jù)處理速度。多數(shù)情形下,數(shù)據(jù)傳輸所花的時間往往超過數(shù)據(jù)處理的時間。因此,合理使用DMA來提高數(shù)據(jù)傳輸率,可起到很好的作用。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉