色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

DMA控制器介紹及示例演示詳解

OpenFPGA ? 來源:OpenFPGA ? 作者:碎碎思 ? 2022-05-17 09:47 ? 次閱讀

ZYNQ從放棄到入門(九)-PS和PL交互-DMA

我們上一節(jié)談到使用 DMA(直接內(nèi)存訪問)的好處已經(jīng)變得顯而易見。到了這一步,我們留下了人類長期以來一直在思考的問題:DMA到底是什么?

DMA介紹

在最基本的層面上,一旦處理器設置了傳輸,DMA 將數(shù)據(jù)傳入或傳出內(nèi)存而無需CPU干預。DMA 可以顯著提高系統(tǒng)性能,具體取決于所采用的方法。在我們更詳細地了解 Zynq DMA 之前,我想先解釋一些 DMA 控制器的通用原理。通常 DMA 控制器以以下三種模式之一運行:

  • Burst Mode突發(fā)模式 - 在一次連續(xù)操作中傳輸整個數(shù)據(jù)塊。在許多應用中,突發(fā)模式傳輸時拒絕總線訪問處理器。這種模式好與壞還是取決于系統(tǒng)。
  • Cycle Stealing – 為了克服上訴的不足,DMA支持Cycle Stealing將單個 DMA 字節(jié)或字傳輸與處理器訪問系統(tǒng)總線交錯運行。
  • 透明模式——最有效的模式。僅當處理器執(zhí)行不需要訪問系統(tǒng)總線的任務時才傳輸數(shù)據(jù)。

DMA 控制器的一項非常有用的功能是支持分散/收集(scatter/gather)操作的能力。此功能允許將多個數(shù)據(jù)源傳輸?shù)絾蝹€目標地址或允許單個源地址提供多個輸出目標(也稱為“緩沖區(qū)”)。Zynq SoC 的基于 ARM 的處理系統(tǒng) (PS) 有一個 DMA 控制器 (DMAC),它連接到 Zynq 的 AXI4 互連并使用 AXI 總線執(zhí)行傳輸。DMAC 在系統(tǒng)存儲器和 Zynq 的可編程邏輯 (PL) 之間采用 64 位 AXI 傳輸。如下所示,Zynq DMAC 有 8 個通道,允許 DMAC 同時執(zhí)行 8 個 DMA 線程,并通過 AXI 互連實現(xiàn)流控制。

d4b74410-d579-11ec-bce3-dac502259ad0.png

雖然 Zynq DMAC 允許在系統(tǒng)存儲器和 PL(包括 PL 中的 Zynq 外設)之間進行雙向傳輸,但它不支持 Zynq PS 中的外設的 DMA,因為這些外設沒有流控制信號來支持 DMA 操作。然而,Zynq SoC 中的一些 IO 外設具有自己的 DMA 控制器,以支持進出 IOP 和系統(tǒng)內(nèi)存的高數(shù)據(jù)速率傳輸。這些外圍設備是:

  • GigE Controller 千兆以太網(wǎng)控制器
  • SDIO Controller SDIO 控制器
  • USB Controller USB控制器
  • Device Configuration Controller 設備配置控制器

如果設備使用 ARM TrustZone,Zynq SoC 還支持安全寄存器訪問。Xilinx 同時也提供了一個簡單的驅動程序文件 (xdmaps.h),我們可以在獨立 BSP 中使用它來配置和啟動 DMA 傳輸。在下一節(jié)中,我們將了解如何使用此文件創(chuàng)建簡單的 DMA 傳輸。

示例演示

本節(jié)創(chuàng)建一個非常簡單的示例來演示如何設置和使用 DMA。

為了演示這示例,將使用一個 DMA 控制器通道將一個內(nèi)存位置傳輸?shù)搅硪粋€內(nèi)存位置。

首先需要在BSP中包含一部分Vivado中生成的頭文件。這些頭文件提供了我們可以用來驅動 DMA 的宏和函數(shù)。對于這個例子,我們需要包括:

#include"xscugic.h"
#include"xdmaps.h"
#include"xil_exception.h"

Xscugic.h 和 xil_exceptions.h 允許使用中斷控制器,而 xdmaps.h 允許配置并使用DMA。

使用 xparamters.h 提供的參數(shù),我們可以定義 DMA 和中斷控制器的設備標識、將使用的中斷以及我們將傳輸?shù)臄?shù)據(jù)長度:

#defineDMA_DEVICE_IDXPAR_XDMAPS_1_DEVICE_ID
#defineINTC_DEVICE_IDXPAR_SCUGIC_SINGLE_DEVICE_ID
#defineDMA_FAULT_INTRXPAR_XDMAPS_0_FAULT_INTR
#defineDMA_DONE_INTR_0XPAR_XDMAPS_0_DONE_INTR_0
#defineDMA_LENGTH1024

開發(fā)的下一階段是編寫三個函數(shù)來配置DMA,配置中斷控制器,并在DMA傳輸完成時充當中斷服務程序。

在 DMA 配置函數(shù)中,我們首先使用 xdmaps.h 提供的命令結構創(chuàng)建一個 DMA 命令。DMA 命令由通道控制、塊描述符、用戶定義的程序、指向生成的程序的指針和傳輸結果組成。由于這是一個簡單的示例,我們不需要所有這些組件,但是我們將配置 DMA 控制器,如下所示:

DmaCmd.ChanCtrl.SrcBurstSize=4;
DmaCmd.ChanCtrl.SrcBurstLen=4;
DmaCmd.ChanCtrl.SrcInc=1;
DmaCmd.ChanCtrl.DstBurstSize=4;
DmaCmd.ChanCtrl.DstBurstLen=4;
DmaCmd.ChanCtrl.DstInc=1;
DmaCmd.BD.SrcAddr=(u32)Src;
DmaCmd.BD.DstAddr=(u32)Dst;
DmaCmd.BD.Length=DMA_LENGTH*sizeof(int);

下一步設置運行中斷函數(shù)以將 DMA 中斷連接到中斷控制器之前初始化和配置 DMA 控制器:

DmaCfg=XDmaPs_LookupConfig(DeviceId);
XDmaPs_CfgInitialize(DmaInst,DmaCfg,DmaCfg->BaseAddress);
SetupInterrupt(&GicInstance,DmaInst);

在此之后,在我們連接完成處理程序并開始傳輸之前,源內(nèi)存位置被設置并清除目標位置,為了跟蹤進度,我們還調用了 DMA 進度函數(shù):

DmaCfg=XDmaPs_LookupConfig(DeviceId);
XDmaPs_CfgInitialize(DmaInst,DmaCfg,DmaCfg->BaseAddress);
SetupInterrupt(&GicInstance,DmaInst);
XDmaPs_Print_DmaProg(&DmaCmd);

當附加的源代碼文件在ZYNQ上運行時,以下結果顯示串口輸出上。

d4e8b0cc-d579-11ec-bce3-dac502259ad0.png

源碼:

https://gitee.com/openfpga/zynq-chronicles/blob/master/part_29.c

原文標題:ZYNQ從放棄到入門(九)-DMA

文章出處:【微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16398

    瀏覽量

    178527
  • dma
    dma
    +關注

    關注

    3

    文章

    565

    瀏覽量

    100670
  • Zynq
    +關注

    關注

    10

    文章

    610

    瀏覽量

    47208

原文標題:ZYNQ從放棄到入門(九)-DMA

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DMA控制器介紹

    本帖最后由 yyeee312 于 2015-11-12 15:17 編輯 DMA控制器是一種在系統(tǒng)內(nèi)部轉移數(shù)據(jù)的獨特外設,可以將其視為一種能夠通過一組專用總線將內(nèi)部和外部存儲與每個具有
    發(fā)表于 11-04 22:50

    基于DMA控制器的UART串行通信設計

    針對大數(shù)據(jù)量的串口間通信,在常規(guī)的UART串行數(shù)據(jù)通信的基礎上,結合Cortex-M3微控制器DMA控制器的作用,實現(xiàn)DMA控制的UART
    發(fā)表于 04-20 10:54 ?46次下載
    基于<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>的UART串行通信設計

    DMA控制器功能及特點

    DMA 控制器在外設與主存之間直接傳送數(shù)據(jù)期間,完全代替 CPU 進行工作。
    發(fā)表于 09-19 16:11 ?6次下載
    <b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>功能及特點

    基于AMBA總線的DMA控制器IP核設計

    制造廠商都有自己的解決方案。本文通過介紹一種基于ARM總線之一的AHB總線的DMA控制器的IP核設計,簡述了IP核設計的流程和需要重點注意的地方。
    發(fā)表于 12-06 13:41 ?3754次閱讀
    基于AMBA總線的<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>IP核設計

    基于PCI Core的鏈式DMA控制器設計

    介紹一種基于PCI總線的高效鏈式DMA控制器的設計與實現(xiàn),用于高速寬帶的計算機外設接口。利用Altera公司的PCI核——PCI_MT32搭建基于此控制器的數(shù)據(jù)采集平臺,并成功應用在D
    發(fā)表于 12-06 13:56 ?3151次閱讀
    基于PCI Core的鏈式<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>設計

    NiosⅡ系統(tǒng)中DMA控制器的原理及應用

    DMA控制器是一種在系統(tǒng)內(nèi)部轉移數(shù)據(jù)的獨特外設,可以將其視為一種能夠通過一組專用總線將內(nèi)部和外部存儲與每個具有DMA能力的外設連接起來的控制器
    發(fā)表于 12-07 08:51 ?2536次閱讀
    NiosⅡ系統(tǒng)中<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>的原理及應用

    Crossbar的多通道DMA控制器設計

    為了具體介紹本多通道 DMA 控制器的設計方案,下面首先對基于 Crossbar 的多通道 DMA 控制器的工作原理進行詳細分析,接著具體說
    發(fā)表于 12-07 09:37 ?5051次閱讀
    Crossbar的多通道<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>設計

    dma控制器芯片8257資料介紹

    DMA既可以指內(nèi)存和外設直接存取數(shù)據(jù)這種內(nèi)存訪問的計算機技術,又可以指實現(xiàn)該技術的硬件模塊(對于通用計算機PC而言,DMA控制邏輯由CPU和DMA
    發(fā)表于 12-07 10:23 ?1.7w次閱讀
    <b class='flag-5'>dma</b><b class='flag-5'>控制器</b>芯片8257資料<b class='flag-5'>介紹</b>

    dma控制器由什么組成

    DMA既可以指內(nèi)存和外設直接存取數(shù)據(jù)這種內(nèi)存訪問的計算機技術,又可以指實現(xiàn)該技術的硬件模塊(對于通用計算機PC而言,DMA控制邏輯由CPU和DMA
    發(fā)表于 12-07 16:08 ?5576次閱讀
    <b class='flag-5'>dma</b><b class='flag-5'>控制器</b>由什么組成

    dma控制器的組成

    一個DMA控制器,實際上是采用DMA方式的外圍設備與系統(tǒng)總線之間的接口電路,這個接口電路是在中斷接口的基礎上再加DMA機構組成。習慣上將DMA
    的頭像 發(fā)表于 04-01 16:08 ?1.1w次閱讀

    dma控制器是什么_dma控制器工作方式

    DMA(Direct Memory Access)控制器是一種在系統(tǒng)內(nèi)部轉移數(shù)據(jù)的獨特外設,可以將其視為一種能夠通過一組專用總線將內(nèi)部和外部存儲與每個具有DMA能力的外設連接起來的
    發(fā)表于 11-15 10:25 ?1.3w次閱讀

    ZNEO CPU 上的 DMA 控制器特性分析

    本應用筆記介紹了 ZNEO CPU 中的 DMA 控制器及其突出的特性,例如 DMA 和 CPU 帶寬共享控制以及四個獨立的
    的頭像 發(fā)表于 06-21 17:28 ?1720次閱讀
    ZNEO CPU 上的 <b class='flag-5'>DMA</b> <b class='flag-5'>控制器</b>特性分析

    DMA控制器原理詳解

    目錄工作原理DMA硬件架構DMA出現(xiàn)的目的工作原理DMA全拼Direct Memory Access(直接內(nèi)存存取),在傳統(tǒng)的CPU存取數(shù)據(jù)時會先將數(shù)據(jù)放到緩存寄存中然后在寫入到指定
    發(fā)表于 12-08 16:51 ?6次下載
    <b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>原理<b class='flag-5'>詳解</b>

    AN4104_STM32F0xx的DMA控制器的使用

    AN4104_STM32F0xx的DMA控制器的使用
    發(fā)表于 11-21 08:11 ?2次下載
    AN4104_STM32F0xx的<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>的使用

    請問DMA控制器可以減輕CPU負擔嗎?

    直接存儲訪問 ( DMA )控制器,可以在內(nèi)存和/或外設之間傳輸數(shù)據(jù),而不需要 CPU 參與每次傳輸。合理利用 DMA 控制器,可以減輕C
    的頭像 發(fā)表于 03-28 09:41 ?739次閱讀
    請問<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>可以減輕CPU負擔嗎?
    主站蜘蛛池模板: 99精彩免费观看| 91次元黄色观看| 国产午夜精品一区二区三区 | 花蝴蝶高清影视视频在线播放| 一本色道久久综合亚洲精品加| 青青草原伊人网| 国产在线一卡二卡| GOGOGO高清在线播放韩国| 午夜看片网| 男同志vdieos免费| 国产人A片777777久久| 98久久人妻少妇激情啪啪| 乌克兰粉嫩摘花第一次| 日本50人群体交乱| 美女扒开腿让男人桶个爽| 极品少妇伦理一区二区| 国产成人精品免费视频大| XXOO麻豆国产在线九九爱| 2020精品极品国产色在线| 亚洲天码中字| 亚洲第一页在线播放| 特级黑人三人共一女| 人妻精品久久无码专区| 免费看国产精品麻豆| 久久久无码精品亚洲日韩按摩| 国产亚洲精品久久久久小| 国产成人综合视频| 给我免费播放片bd国语| 吃春药后的女教师| 东北嫖妓对白粗口| 俄罗斯极品hd| 囯产精品久久久久免费蜜桃 | 国产性色AV内射白浆肛交后入| 国产第81页| 国产精品麻豆a在线播放| 高清欧美一区二区三区| 高H内射NP古文| 国产浮力草草影院CCYY| 国产成人综合在线观看| 国产成人无码区免费内射一片色欲 | 灰原哀被啪漫画禁漫|