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

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

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

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

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

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

1、PIO

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

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

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

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

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

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

2、DMA

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

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

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

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

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

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

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

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

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

    關(guān)注

    8

    文章

    7035

    瀏覽量

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

    關(guān)注

    10

    文章

    2881

    瀏覽量

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

    關(guān)注

    3

    文章

    561

    瀏覽量

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

    關(guān)注

    0

    文章

    18

    瀏覽量

    6213

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    圖文并茂解析stm32 DMA

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

    請(qǐng)問(wèn)DMA傳輸數(shù)據(jù)的過(guò)程是什么?

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

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

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

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

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

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

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

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

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

    體驗(yàn)紫光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的實(shí)現(xiàn)

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

    ISA總線DMA技術(shù)

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

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

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

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

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

    I2C總線物理拓?fù)浣Y(jié)構(gòu)_I2C總線協(xié)議解析

    I2C 總線在物理連接上非常簡(jiǎn)單,分別由SDA(串行數(shù)據(jù)線)和SCL(串行時(shí)鐘線)及上拉電阻組成。通信原理是通過(guò)對(duì)SCL和SDA線高低電平時(shí)序的控制,來(lái) 產(chǎn)生I2C
    的頭像 發(fā)表于 09-24 14:12 ?6192次閱讀
    I<b class='flag-5'>2</b>C<b class='flag-5'>總線</b>物理拓?fù)浣Y(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口使用。猜測(cè):該方法除了適用于PIO2,應(yīng)該也同樣適用于PIO32、PIO34、
    的頭像 發(fā)表于 01-18 13:48 ?3744次閱讀
    如何將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)場(chǎng)的過(guò)程,通過(guò)硬件為 RAM 與 I/O 設(shè)備開(kāi)辟一條直接傳送數(shù)據(jù)的通路,能使 CPU 的效率大為提高。 STM32F407ZGT6 有 2 個(gè) DMA 控制器(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>