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

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

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

基于總線傳遞數(shù)據(jù)的2種形式PIO、DMA的解析

MCU開發(fā)加油站 ? 2018-01-24 10:48 ? 次閱讀

總線上的數(shù)據(jù)的傳遞有兩種形式。一種為程控輸入/輸出(PIO)另一種為直接存儲器訪問(DMA)。

1、PIO

使用PIO時,CPU是主模塊,總線上數(shù)據(jù)的讀取由CPU上運行的軟件程序直接發(fā)起,傳遞的數(shù)據(jù)一定進過CPU(如下面的一、二所述)。

一、軟件指令或者將已經(jīng)存放在CPU數(shù)據(jù)寄存器中的數(shù)據(jù)發(fā)送到目標(biāo)被控模塊;

二、或者將目標(biāo)被控模塊里的一個數(shù)據(jù)讀入,放到CPU的數(shù)據(jù)寄存器中。

例如:需要將數(shù)據(jù)從模塊A---轉(zhuǎn)移到----模塊B,軟件將這個任務(wù)分解為兩個PIO操作

第一步:從模塊A讀取數(shù)據(jù),并存放到CPU的數(shù)據(jù)寄存器中;

第二步:將存放在CPU數(shù)據(jù)寄存器中的數(shù)據(jù)寫入到模塊B。

2、DMA

由于鏈接芯片與芯片之間的系統(tǒng)總線的時鐘頻率比CPU內(nèi)部的時鐘頻率要低許多,用PIO讀寫大量的數(shù)據(jù)是一種非常低效的方式占用CPU的處理能力。所以需要利用專門的硬件來協(xié)助執(zhí)行,在芯片與芯片之間或者模塊與模塊之間數(shù)據(jù)傳輸。這就是DMA。

此時軟件只需要將傳輸數(shù)據(jù)要求使用PIO通知DMA硬件,DMA硬件按照要求執(zhí)行數(shù)據(jù)的傳輸。這期間CPU繼續(xù)進行其他工作。當(dāng)DMA硬件執(zhí)行完畢數(shù)據(jù)的傳輸任務(wù)之后,通過中斷信號或這通過向主存儲的某個特定地址寫入特定的數(shù)值,通知軟件。
基于總線傳遞數(shù)據(jù)的2種形式PIO、DMA的解析

一個DMA硬件通常包括多個DMA通道。每個通道一般用于一對模塊之間的數(shù)據(jù)傳輸,通道之間相互獨立。

DMA描述符用于指定如何傳輸數(shù)據(jù)塊。一個DMA描述符至少包括數(shù)據(jù)傳輸?shù)脑吹刂罚⊿A)、目的地址(DA)、需要傳輸?shù)臄?shù)據(jù)量(data size)、和每次總線傳輸?shù)臄?shù)據(jù)量(transfer size)。有些DMA模塊要求軟件將DMA描述符的數(shù)據(jù)結(jié)構(gòu)存放在主存儲器中,使用這個方法的好處時軟件可以十分有效的建立DMA描述符。在DMA執(zhí)行一個DMA數(shù)據(jù)傳輸任務(wù)之前,DMA先要用DMA的方法,將存放在CPU主存儲的DMA描述符讀到DMA模塊中。

DMA將一個數(shù)據(jù)塊的傳輸分為兩個步驟。

第一步:從源地址的被控模塊讀取數(shù)據(jù);

第二步:將讀取的數(shù)據(jù)寫入目的地址的被控模塊。

根據(jù)DMA描述符的規(guī)定,DMA可以在傳輸了一個數(shù)據(jù)塊之后,自動的將源地址和目的地址更新到下一個數(shù)據(jù)塊地址,然后DMA開始傳輸下一個數(shù)據(jù)塊,一直傳輸完實際要求傳輸?shù)臄?shù)量級。假設(shè)一個DMA開始傳輸?shù)臄?shù)據(jù)量是128Byte,每次傳輸?shù)臄?shù)據(jù)塊是16Byte,為了完成這個DMA描述符指定的數(shù)據(jù)傳輸,DMA自動進行8次總線讀取和8次總線寫入。這些傳輸路徑不經(jīng)過CPU

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

    關(guān)注

    8

    文章

    6808

    瀏覽量

    88743
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2858

    瀏覽量

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

    關(guān)注

    3

    文章

    556

    瀏覽量

    100344
  • PIO
    PIO
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    6187

原文標(biāo)題:總線的兩種數(shù)據(jù)傳遞形式:PIO、DMA

文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    圖文并茂解析stm32 DMA

    總線上。DMA總共有7個通道,各個通道的DMA映射關(guān)系如下:外設(shè)的事件連接至相應(yīng)DMA通道,每個通道均可以通過軟件觸發(fā)實現(xiàn)存儲器內(nèi)部的DMA
    發(fā)表于 02-12 15:42

    請問DMA傳輸數(shù)據(jù)的過程是什么?

    網(wǎng)上有說DMA內(nèi)存到外設(shè)間傳輸數(shù)據(jù)的過程為:1、內(nèi)存 到 外設(shè)2、內(nèi)存 到 DMAC 到 外設(shè)3、內(nèi)存 到 數(shù)據(jù)總線
    發(fā)表于 01-30 06:36

    ISA總線的標(biāo)準DMA技術(shù)在Linux中的實現(xiàn)

    1.DMA概述   DMA是外設(shè)與主存之間的一種數(shù)據(jù)傳輸機制。一般來說,外設(shè)與主存之間存在兩種數(shù)據(jù)傳輸方法:(1)Pragrammed I/O(PI
    發(fā)表于 07-01 08:10

    串口DMA+中斷的形式如何接收不定長的數(shù)據(jù)

    串口DMA+中斷的形式如何接收不定長的數(shù)據(jù)
    發(fā)表于 12-08 06:07

    DMA工作原理與常用函數(shù)解析

    【嵌入式系統(tǒng)】DMA工作原理與常用函數(shù)解析1、DMA基本原理直接存儲器訪問通道(DMA, Direct Memory Access)用來提供在外設(shè)和存儲器之間或者存儲器和存儲器之間的高
    發(fā)表于 12-16 07:15

    DMA可以傳遞多少數(shù)據(jù)?

    DMA有什么用? 有多少個DMA資源?DMA可以傳遞多少數(shù)據(jù)?
    發(fā)表于 02-14 07:46

    體驗紫光PCIE之DMA讀寫/PIO內(nèi)存讀寫TLP解析

    1.1 PIO內(nèi)存讀寫操作TLP解析 PCIE有三空間——內(nèi)存空間、IO空間、配置空間,其中內(nèi)存空間是目前PCIE設(shè)備常用的空間,IO空間是為了兼容以前的PCI設(shè)備(PCIE設(shè)備幾乎不用IO空間了
    發(fā)表于 11-17 15:08

    基于Linux嵌入式系統(tǒng)的ISA總線DMA的實現(xiàn)

      1.DMA概述   DMA是外設(shè)與主存之間的一種數(shù)據(jù)傳輸機制。一般來說,外設(shè)與主存之間存在兩種數(shù)據(jù)傳輸方法:(1)Pragrammed I/O(
    發(fā)表于 08-27 15:37 ?552次閱讀

    ISA總線DMA技術(shù)

    DMA是外設(shè)與主存之間的一種數(shù)據(jù)傳輸機制。一般來說,外設(shè)與主存之間存在兩種數(shù)據(jù)傳輸方法:(1)Pragrammed I/O(PIO)方法
    發(fā)表于 05-14 10:04 ?3495次閱讀

    基于Linux的ISA總線DMA的實現(xiàn)

    DMA是外設(shè)與主存之間的一種數(shù)據(jù)傳輸機制。一般來說,外設(shè)與主存之間存在兩種數(shù)據(jù)傳輸方法:(1)Pragrammed I/O(PIO)方法,也即由CPU通過內(nèi)存讀寫指令或I/O指令來持續(xù)
    發(fā)表于 11-14 17:44 ?1291次閱讀

    基于Linux嵌入式系統(tǒng)的ISA總線DMA的實現(xiàn)

    1.DMA概述 DMA是外設(shè)與主存之間的一種數(shù)據(jù)傳輸機制。一般來說,外設(shè)與主存之間存在兩種數(shù)據(jù)傳輸方法:(1)Pragrammed I/O(PIO
    發(fā)表于 12-07 19:13 ?349次閱讀

    I2C總線物理拓撲結(jié)構(gòu)_I2C總線協(xié)議解析

    I2C 總線在物理連接上非常簡單,分別由SDA(串行數(shù)據(jù)線)和SCL(串行時鐘線)及上拉電阻組成。通信原理是通過對SCL和SDA線高低電平時序的控制,來 產(chǎn)生I2C
    的頭像 發(fā)表于 09-24 14:12 ?6132次閱讀
    I<b class='flag-5'>2</b>C<b class='flag-5'>總線</b>物理拓撲結(jié)構(gòu)_I<b class='flag-5'>2</b>C<b class='flag-5'>總線</b>協(xié)議<b class='flag-5'>解析</b>

    如何將QCC5127的PIO2作為普通PIO口使用

    ? 本文介紹如何將QCC5127的PIO2作為普通PIO口使用。猜測:該方法除了適用于PIO2,應(yīng)該也同樣適用于PIO32、PIO34、
    的頭像 發(fā)表于 01-18 13:48 ?3651次閱讀
    如何將QCC5127的<b class='flag-5'>PIO2</b>作為普通<b class='flag-5'>PIO</b>口使用

    總線數(shù)據(jù)傳遞形式PIO、DMA介紹資料下載

    電子發(fā)燒友網(wǎng)為你提供兩總線數(shù)據(jù)傳遞形式PIO
    發(fā)表于 04-19 08:46 ?4次下載
    兩<b class='flag-5'>種</b><b class='flag-5'>總線</b><b class='flag-5'>數(shù)據(jù)</b>兩<b class='flag-5'>種</b><b class='flag-5'>傳遞</b><b class='flag-5'>形式</b>:<b class='flag-5'>PIO</b>、<b class='flag-5'>DMA</b>介紹資料下載

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

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