Zynq PS/PL詳解之DMA(part8)


在我上一篇博客里,我們達成一個觀點,就是使用DMA(直接內存訪問)的好處很明顯,我之前在“Adam Taylor MicroZed系列之21”也提到使用AXI接口的DMA的好處。

雖然達成這樣一個觀點,但我們還有一個值得思考的問題,DMA到底是什么?

最基本的,一旦處理器配置好傳輸方式之后,DMA可以自己完成內存數據的搬進或者搬出,而不需要處理器的介入。如果使用方法得當,DMA可以顯著地提高系統性能。

在討論Zynq DMA的設計細節之前,讓我們先要解釋幾個DMA控制器的原則:

典型的DMA控制器可以工作在以下三種模式:

1、 突發模式-以一個連續的操作方式來傳輸一個完整的數據包,在許多應用中,DMA的突發模式傳輸會拒絕處理器的總線訪問,對於不同的系統而言,這有利有弊(可以是件好事,也可能是一件非常糟糕的事情。)

2、 周期挪用模式-跟處理器一起交替完成單獨的DMA字節或者字傳輸的總線訪問,這種模式可以防止處理器無法訪問總線。

3、 透明模式-效率最高的傳輸模式,只有在處理器在執行任務而不需要訪問外部系統總線的時候,DMA才能傳輸數據。

DMA控制器支持scatter/gather操作,這是一個非常有用的特性,這個特性允許多個數據源的數據傳輸到同一個目的地址,或者同一個源地址的數據傳輸到不同的目的地址(也可以稱為“buffers”)

Zyng SoC是基於ARM內核的處理系統,它有一個DMA控制器,該DMA控制器連接在Zynq的AXI4中央互連架構上,通過AXI總線來傳輸數據,它在系統 存儲器和Zynq的可編程邏輯單元(PL)之間完成64位的AXI總線傳輸。如下圖所示,Zynq DMA有8個通道,可以同時執行8個DMA傳輸操作。

Zynq DMA有8個通道,可以同時執行8個DMA傳輸操作

盡管Zynq DMA可以在系統存儲器到PL(包括PL中的Zynq外設)之間發起雙向傳輸,但是它不支持在Zynq PS的外設之間發起傳輸,因為,這些外設沒有支持DMA操作的流控制信號。然而,在Zynq SoC中,有一些IO外設,它們自身有DMA控制器,可以支持IOP和系統存儲器之間的高速數據傳輸。這些外設包括:

1、 以太網控制器

2、 SDIO控制器

3、 USB控制器

4、 器件配置控制器

如果器件采用了ARM TrustZone技術,Zynq SoC也可以支持安全寄存器訪問。

賽靈思則提供了一個簡單有用的驅動文件(xdmaps.h),這個文件可以用在BSP中來配置和初始化DMA傳輸。在我的下一篇博客中,會講到如何用這個文件來實現一個簡單的DMA傳輸。

原文鏈接:
http://forums.xilinx.com/t5/Xcell-Daily-Blog/The-Zynq-PS-PL-Part-Eight-Z...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM