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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

DMA控制器硬件結(jié)構(gòu)與DMA通道使用的地址

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:李倩 ? 2018-08-08 16:33 ? 次閱讀

DMA是一種無需CPU的參與就可以讓外設(shè)和系統(tǒng)內(nèi)存之間進行雙向數(shù)據(jù)傳輸?shù)?a target="_blank">硬件機制。使用DMA可以使系統(tǒng)CPU從實際的I/O數(shù)據(jù)傳輸過程中擺脫出來,從而大大提高系統(tǒng)的吞吐率。DMA經(jīng)常與硬件體系結(jié)構(gòu)特別是外設(shè)的總線技術(shù)密切相關(guān)。

一、DMA控制器硬件結(jié)構(gòu)

DMA允許外圍設(shè)備和主內(nèi)存之間直接傳輸 I/O 數(shù)據(jù), DMA 依賴于系統(tǒng)。每一種體系結(jié)構(gòu)DMA傳輸不同,編程接口也不同。

數(shù)據(jù)傳輸可以以兩種方式觸發(fā):一種軟件請求數(shù)據(jù),另一種由硬件異步傳輸。

a --軟件請求數(shù)據(jù)

調(diào)用的步驟可以概括如下(以read為例):

(1)在進程調(diào)用 read 時,驅(qū)動程序的方法分配一個 DMA 緩沖區(qū),隨后指示硬件傳送它的數(shù)據(jù)。進程進入睡眠。(2)硬件將數(shù)據(jù)寫入 DMA 緩沖區(qū)并在完成時產(chǎn)生一個中斷。

(3)中斷處理程序獲得輸入數(shù)據(jù),應(yīng)答中斷,最后喚醒進程,該進程現(xiàn)在可以讀取數(shù)據(jù)了。

b --由硬件異步傳輸

在 DMA 被異步使用時發(fā)生的。以數(shù)據(jù)采集設(shè)備為例:

(1)硬件發(fā)出中斷來通知新的數(shù)據(jù)已經(jīng)到達。(2)中斷處理程序分配一個DMA緩沖區(qū)。(3)外圍設(shè)備將數(shù)據(jù)寫入緩沖區(qū),然后在完成時發(fā)出另一個中斷。(4)處理程序利用DMA分發(fā)新的數(shù)據(jù),喚醒任何相關(guān)進程。

網(wǎng)卡傳輸也是如此,網(wǎng)卡有一個循環(huán)緩沖區(qū)(通常叫做 DMA 環(huán)形緩沖區(qū))建立在與處理器共享的內(nèi)存中。每一個輸入數(shù)據(jù)包被放置在環(huán)形緩沖區(qū)中下一個可用緩沖區(qū),并且發(fā)出中斷。然后驅(qū)動程序?qū)?a href="http://ttokpm.com/v/tag/1722/" target="_blank">網(wǎng)絡(luò)數(shù)據(jù)包傳給內(nèi)核的其它部分處理,并在環(huán)形緩沖區(qū)中放置一個新的 DMA 緩沖區(qū)。

驅(qū)動程序在初始化時分配DMA緩沖區(qū),并使用它們直到停止運行。

二、DMA通道使用的地址

DMA通道用dma_chan結(jié)構(gòu)數(shù)組表示,這個結(jié)構(gòu)在kernel/dma.c中,列出如下:

如果dma_chan_busy[n].lock != 0表示忙,DMA0保留為DRAM更新用,DMA4用作級聯(lián)。DMA 緩沖區(qū)的主要問題是,當(dāng)它大于一頁時,它必須占據(jù)物理內(nèi)存中的連續(xù)頁。

由于DMA需要連續(xù)的內(nèi)存,因而在引導(dǎo)時分配內(nèi)存或者為緩沖區(qū)保留物理 RAM 的頂部。在引導(dǎo)時給內(nèi)核傳遞一個"mem="參數(shù)可以保留 RAM 的頂部。例如,如果系統(tǒng)有 32MB 內(nèi)存,參數(shù)"mem=31M"阻止內(nèi)核使用最頂部的一兆字節(jié)。稍后,模塊可以使用下面的代碼來訪問這些保留的內(nèi)存:

dmabuf = ioremap( 0x1F00000 /* 31M */, 0x100000 /* 1M */);

分配 DMA 空間的方法,代碼調(diào)用kmalloc(GFP_ATOMIC)直到失敗為止,然后它等待內(nèi)核釋放若干頁面,接下來再一次進行分配。最終會發(fā)現(xiàn)由連續(xù)頁面組成的DMA 緩沖區(qū)的出現(xiàn)。

一個使用 DMA 的設(shè)備驅(qū)動程序通常會與連接到接口總線上的硬件通訊,這些硬件使用物理地址,而程序代碼使用虛擬地址?;?DMA 的硬件使用總線地址而不是物理地址,有時,接口總線是通過將 I/O 地址映射到不同物理地址的橋接電路連接的。甚至某些系統(tǒng)有一個頁面映射方案,能夠使任意頁面在外圍總線上表現(xiàn)為連續(xù)的。

當(dāng)驅(qū)動程序需要向一個 I/O 設(shè)備(例如擴展板或者DMA控制器)發(fā)送地址信息時,必須使用 virt_to_bus 轉(zhuǎn)換,在接受到來自連接到總線上硬件的地址信息時,必須使用 bus_to_virt 了。

三、DMA操作函數(shù)

寫一個DMA驅(qū)動的主要工作包括:DMA通道申請、DMA中斷申請、控制寄存器設(shè)置、掛入DMA等待隊列、清除DMA中斷、釋放DMA通道

因為 DMA 控制器是一個系統(tǒng)級的資源,所以內(nèi)核協(xié)助處理這一資源。內(nèi)核使用DMA 注冊表為 DMA 通道提供了請求/釋放機制,并且提供了一組函數(shù)在 DMA 控制器中配置通道信息。

以下具體分析關(guān)鍵函數(shù)(linux/arch/arm/mach-s3c2410/dma.c)

四、DMA映射

一個DMA映射就是分配一個 DMA 緩沖區(qū)并為該緩沖區(qū)生成一個能夠被設(shè)備訪問的地址的組合操作。一般情況下,簡單地調(diào)用函數(shù)virt_to_bus 就設(shè)備總線上的地址,但有些硬件映射寄存器也被設(shè)置在總線硬件中。映射寄存器(mapping register)是一個類似于外圍設(shè)備的虛擬內(nèi)存等價物。在使用這些寄存器的系統(tǒng)上,外圍設(shè)備有一個相對較小的、專用的地址區(qū)段,可以在此區(qū)段執(zhí)行 DMA。通過映射寄存器,這些地址被重映射到系統(tǒng) RAM。映射寄存器具有一些好的特性,包括使分散的頁面在設(shè)備地址空間看起來是連續(xù)的。但不是所有的體系結(jié)構(gòu)都有映射寄存器,特別地,PC 平臺沒有映射寄存器。

在某些情況下,為設(shè)備設(shè)置有用的地址也意味著需要構(gòu)造一個反彈(bounce)緩沖區(qū)。例如,當(dāng)驅(qū)動程序試圖在一個不能被外圍設(shè)備訪問的地址(一個高端內(nèi)存地址)上執(zhí)行 DMA 時,反彈緩沖區(qū)被創(chuàng)建。然后,按照需要,數(shù)據(jù)被復(fù)制到反彈緩沖區(qū),或者從反彈緩沖區(qū)復(fù)制。

根據(jù) DMA 緩沖區(qū)期望保留的時間長短,PCI 代碼區(qū)分兩種類型的 DMA 映射:

a -- 一致 DMA 映射

它們存在于驅(qū)動程序的生命周期內(nèi)。一個被一致映射的緩沖區(qū)必須同時可被 CPU 和外圍設(shè)備訪問,這個緩沖區(qū)被處理器寫時,可立即被設(shè)備讀取而沒有cache效應(yīng),反之亦然,使用函數(shù)pci_alloc_consistent建立一致映射。

b -- 流式 DMA映射

流式DMA映射是為單個操作進行的設(shè)置。它映射處理器虛擬空間的一塊地址,以致它能被設(shè)備訪問。應(yīng)盡可能使用流式映射,而不是一致映射。這是因為在支持一致映射的系統(tǒng)上,每個 DMA 映射會使用總線上一個或多個映射寄存器。具有較長生命周期的一致映射,會獨占這些寄存器很長時間――即使它們沒有被使用。使用函數(shù)dma_map_single建立流式映射。

1、建立一致 DMA 映射

函數(shù)pci_alloc_consistent處理緩沖區(qū)的分配和映射,函數(shù)分析如下(在include/asm-generic/pci-dma-compat.h中):

結(jié)構(gòu)dma_coherent_mem定義了DMA一致性映射的內(nèi)存的地址、大小和標(biāo)識等。結(jié)構(gòu)dma_coherent_mem列出如下(在arch/i386/kernel/pci-dma.c中):

函數(shù)dma_alloc_coherent分配size字節(jié)的區(qū)域的一致內(nèi)存,得到的dma_handle是指向分配的區(qū)域的地址指針,這個地址作為區(qū)域的物理基地址。dma_handle是與總線一樣的位寬的無符號整數(shù)。 函數(shù)dma_alloc_coherent分析如下(在arch/i386/kernel/pci-dma.c中):

當(dāng)不再需要緩沖區(qū)時(通常在模塊卸載時),應(yīng)該調(diào)用函數(shù) pci_free_consitent 將它返還給系統(tǒng)。

2、建立流式 DMA 映射

在流式 DMA 映射的操作中,緩沖區(qū)傳送方向應(yīng)匹配于映射時給定的方向值。緩沖區(qū)被映射后,它就屬于設(shè)備而不再屬于處理器了。在緩沖區(qū)調(diào)用函數(shù)pci_unmap_single撤銷映射之前,驅(qū)動程序不應(yīng)該觸及其內(nèi)容。

在緩沖區(qū)為 DMA 映射時,內(nèi)核必須確保緩沖區(qū)中所有的數(shù)據(jù)已經(jīng)被實際寫到內(nèi)存??赡苡行?shù)據(jù)還會保留在處理器的高速緩沖存儲器中,因此必須顯式刷新。在刷新之后,由處理器寫入緩沖區(qū)的數(shù)據(jù)對設(shè)備來說也許是不可見的。

如果欲映射的緩沖區(qū)位于設(shè)備不能訪問的內(nèi)存區(qū)段時,某些體系結(jié)構(gòu)僅僅會操作失敗,而其它的體系結(jié)構(gòu)會創(chuàng)建一個反彈緩沖區(qū)。反彈緩沖區(qū)是被設(shè)備訪問的獨立內(nèi)存區(qū)域,反彈緩沖區(qū)復(fù)制原始緩沖區(qū)的內(nèi)容。

函數(shù)pci_map_single映射單個用于傳送的緩沖區(qū),返回值是可以傳遞給設(shè)備的總線地址,如果出錯的話就為 NULL。一旦傳送完成,應(yīng)該使用函數(shù)pci_unmap_single 刪除映射。其中,參數(shù)direction為傳輸?shù)姆较?,取值如下?/p>

PCI_DMA_TODEVICE 數(shù)據(jù)被發(fā)送到設(shè)備。PCI_DMA_FROMDEVICE如果數(shù)據(jù)將發(fā)送到 CPU。PCI_DMA_BIDIRECTIONAL數(shù)據(jù)進行兩個方向的移動。PCI_DMA_NONE 這個符號只是為幫助調(diào)試而提供。

函數(shù)pci_map_single分析如下(在arch/i386/kernel/pci-dma.c中)

函數(shù)dma_map_single映射一塊處理器虛擬內(nèi)存,這塊虛擬內(nèi)存能被設(shè)備訪問,返回內(nèi)存的物理地址,函數(shù)dma_map_single分析如下(在include/asm-i386/dma-mapping.h中):

3、分散/集中映射

分散/集中映射是流式 DMA 映射的一個特例。它將幾個緩沖區(qū)集中到一起進行一次映射,并在一個 DMA 操作中傳送所有數(shù)據(jù)。這些分散的緩沖區(qū)由分散表結(jié)構(gòu)scatterlist來描述,多個分散的緩沖區(qū)的分散表結(jié)構(gòu)組成緩沖區(qū)的struct scatterlist數(shù)組。

分散表結(jié)構(gòu)列出如下(在include/asm-i386/scatterlist.h):

每一個緩沖區(qū)的地址和長度會被存儲在 struct scatterlist 項中,但在不同的體系結(jié)構(gòu)中它們在結(jié)構(gòu)中的位置是不同的。下面的兩個宏定義來解決平臺移植性問題,這些宏定義應(yīng)該在一個pci_map_sg被調(diào)用后使用:

函數(shù)pci_map_sg完成分散/集中映射,其返回值是要傳送的 DMA 緩沖區(qū)數(shù);它可能會小于 nents(也就是傳入的分散表項的數(shù)量),因為可能有的緩沖區(qū)地址上是相鄰的。一旦傳輸完成,分散/集中映射通過調(diào)用函數(shù)pci_unmap_sg 來撤銷映射。 函數(shù)pci_map_sg分析如下(在include/asm-generic/pci-dma-compat.h中):

五、DMA池

許多驅(qū)動程序需要又多又小的一致映射內(nèi)存區(qū)域給DMA描述子或I/O緩存buffer,這使用DMA池比用dma_alloc_coherent分配的一頁或多頁內(nèi)存區(qū)域好,DMA池用函數(shù)dma_pool_create創(chuàng)建,用函數(shù)dma_pool_alloc從DMA池中分配一塊一致內(nèi)存,用函數(shù)dmp_pool_free放內(nèi)存回到DMA池中,使用函數(shù)dma_pool_destory釋放DMA池的資源。

結(jié)構(gòu)dma_pool是DMA池描述結(jié)構(gòu),列出如下:

函數(shù)dma_pool_create給DMA創(chuàng)建一個一致內(nèi)存塊池,其參數(shù)name是DMA池的名字,用于診斷用,參數(shù)dev是將做DMA的設(shè)備,參數(shù)size是DMA池里的塊的大小,參數(shù)align是塊的對齊要求,是2的冪,參數(shù)allocation返回沒有跨越邊界的塊數(shù)(或0)。

函數(shù)dma_pool_create返回創(chuàng)建的帶有要求字符串的DMA池,若創(chuàng)建失敗返回null。對被給的DMA池,函數(shù)dma_pool_alloc被用來分配內(nèi)存,這些內(nèi)存都是一致DMA映射,可被設(shè)備訪問,且沒有使用緩存刷新機制,因為對齊原因,分配的塊的實際尺寸比請求的大。如果分配非0的內(nèi)存,從函數(shù)dma_pool_alloc返回的對象將不跨越size邊界(如不跨越4K字節(jié)邊界)。這對在個體的DMA傳輸上有地址限制的設(shè)備來說是有利的。

函數(shù)dma_pool_create分析如下(在drivers/base/dmapool.c中):

函數(shù)dma_pool_alloc從DMA池中分配一塊一致內(nèi)存,其參數(shù)pool是將產(chǎn)生塊的DMA池,參數(shù)mem_flags是GFP_*位掩碼,參數(shù)handle是指向塊的DMA地址,函數(shù)dma_pool_alloc返回當(dāng)前沒用的塊的內(nèi)核虛擬地址,并通過handle給出它的DMA地址,如果內(nèi)存塊不能被分配,返回null。

函數(shù)dma_pool_alloc包裹了dma_alloc_coherent頁分配器,這樣小塊更容易被總線的主控制器使用。這可能共享slab分配器的內(nèi)容。

函數(shù)dma_pool_alloc分析如下(在drivers/base/dmapool.c中):

六、一個簡單的使用DMA 例子

示例:下面是一個簡單的使用DMA進行傳輸?shù)尿?qū)動程序,它是一個假想的設(shè)備,只列出DMA相關(guān)的部分來說明驅(qū)動程序中如何使用DMA的。

函數(shù)dad_transfer是設(shè)置DMA對內(nèi)存buffer的傳輸操作函數(shù),它使用流式映射將buffer的虛擬地址轉(zhuǎn)換到物理地址,設(shè)置好DMA控制器,然后開始傳輸數(shù)據(jù)。

函數(shù)dad_interrupt是中斷處理函數(shù),當(dāng)DMA傳輸完時,調(diào)用這個中斷函數(shù)來取消buffer上的DMA映射,從而讓內(nèi)核程序可以訪問這個buffer。

函數(shù)dad_open打開設(shè)備,此時應(yīng)申請中斷號及DMA通道

在與open 相對應(yīng)的 close 函數(shù)中應(yīng)該釋放DMA及中斷號。

函數(shù)dad_dma_prepare初始化DMA控制器,設(shè)置DMA控制器的寄存器的值,為 DMA 傳輸作準(zhǔn)備。

函數(shù)dad_dma_isdone用來檢查 DMA 傳輸是否成功結(jié)束。

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

    關(guān)注

    112

    文章

    16111

    瀏覽量

    177083
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5295

    瀏覽量

    119824
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    558

    瀏覽量

    100348

原文標(biāo)題:關(guān)于嵌入式Linux下的DMA技術(shù),你需要知道的都在這里了

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ZYNQ開發(fā)案例之DMA控制器系統(tǒng)設(shè)計

    斷給中斷控制器; 5. 擁有8個DMA觸發(fā)事件并且可以編碼控制; 6. 128個(64bit)的MFIFO,在傳輸?shù)臅r候讀寫端可寫入到此FIFO; 7. 支持任意內(nèi)存到內(nèi)存的傳輸; 整個系統(tǒng)中的
    的頭像 發(fā)表于 12-05 10:17 ?4039次閱讀

    DMADMA控制器

    DMA(Direct Memory Access)的概念DMA方式不用處理干預(yù)完成M與I/O間數(shù)據(jù)傳送。DMA期間系統(tǒng)總線由其它主模塊控
    發(fā)表于 12-09 11:03 ?50次下載
    <b class='flag-5'>DMA</b>與<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>

    基于DMA控制器的UART串行通信設(shè)計

    針對大數(shù)據(jù)量的串口間通信,在常規(guī)的UART串行數(shù)據(jù)通信的基礎(chǔ)上,結(jié)合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串行通信設(shè)計

    LED顯示系統(tǒng)DMA控制器的設(shè)計

     采用并行DMA數(shù)據(jù)傳輸可選擇MCU加DMA芯片和具有內(nèi)部DMA控制器的CPU兩種方案,從系統(tǒng)結(jié)構(gòu)和成本以及開發(fā)復(fù)雜度方面考慮,后者更加合理
    發(fā)表于 12-06 10:15 ?3246次閱讀
    LED顯示系統(tǒng)<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>的設(shè)計

    實時圖像處理系統(tǒng)的DMA控制器設(shè)計

    在分析傳統(tǒng)DMA控制器結(jié)構(gòu)的基礎(chǔ)上,針對實時圖象處理系統(tǒng)的數(shù)據(jù)傳輸要求,提出了多端口模塊設(shè)計、增加RoundRobin通道優(yōu)先級仲裁算法和優(yōu)化數(shù)據(jù)傳輸
    發(fā)表于 12-06 10:43 ?2387次閱讀
    實時圖像處理系統(tǒng)的<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>設(shè)計

    Crossbar的多通道DMA控制器設(shè)計

    為了具體介紹本多通道 DMA 控制器的設(shè)計方案,下面首先對基于 Crossbar 的多通道 DMA 控制
    發(fā)表于 12-07 09:37 ?5005次閱讀
    Crossbar的多<b class='flag-5'>通道</b><b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>設(shè)計

    dma控制器芯片8257資料介紹

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

    dma控制器由什么組成

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

    基于SystemC的可配置多通道DMA控制器的設(shè)計

    基于前面對DMA控制器工作流程的詳細分析。運用SystemC 語言,建立DMA控制器的Cye le-Accurat級參考模型。控制器由以下幾
    發(fā)表于 12-07 16:21 ?2659次閱讀
    基于SystemC的可配置多<b class='flag-5'>通道</b><b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>的設(shè)計

    dma控制器的組成

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

    MCU學(xué)習(xí)筆記_DMA原理

    。無需CPU直接控制,通過硬件為RAM和IO設(shè)備開辟一條直接數(shù)據(jù)傳輸通道,將數(shù)據(jù)直接從一個地址空間復(fù)制到另一個地址空間,傳輸動作本身由
    發(fā)表于 10-28 15:06 ?8次下載
    MCU學(xué)習(xí)筆記_<b class='flag-5'>DMA</b>原理

    基于STM32F407的DMA解析-ADC單通道DMA讀取數(shù)據(jù)

    現(xiàn)場的過程,通過硬件為 RAM 與 I/O 設(shè)備開辟一條直接傳送數(shù)據(jù)的通路,能使 CPU 的效率大為提高。 STM32F407ZGT6 有 2 個 DMA 控制器DMA1 和
    發(fā)表于 11-25 09:51 ?5次下載
    基于STM32F407的<b class='flag-5'>DMA</b>解析-ADC單<b class='flag-5'>通道</b><b class='flag-5'>DMA</b>讀取數(shù)據(jù)

    stm32中的DMA你搞懂了嗎?。?!

    一. 對于大容量的STM32芯片有2個DMA控制器控制器1有7個通道,控制器2有5個通道每個
    發(fā)表于 12-04 19:36 ?6次下載
    stm32中的<b class='flag-5'>DMA</b>你搞懂了嗎!??!

    STM32的DMA的五大問題

    1,DMA控制器的內(nèi)部結(jié)構(gòu)STM32中的DMA控制器是一種用于在外設(shè)和存儲之間傳輸數(shù)據(jù)的專用
    的頭像 發(fā)表于 12-10 08:00 ?1766次閱讀
    STM32的<b class='flag-5'>DMA</b>的五大問題

    Xilinx高性能PCIe DMA控制器IP,8個DMA通道

    基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem實現(xiàn)了使用DMA地址隊列的獨立多通道、高性能Continous或
    的頭像 發(fā)表于 02-22 11:11 ?1311次閱讀
    Xilinx高性能PCIe <b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>IP,8個<b class='flag-5'>DMA</b><b class='flag-5'>通道</b>