dma匯流排全稱 DMA匯流排

2021-10-17 05:17:56 字數 1069 閱讀 3323

dma 是所有現代電腦的重要特色,他允許不同速度的硬體裝置來溝通,而不需要依於 cpu 的大量 中斷 負載。否則,cpu 需要從** 把每一片段的資料複製到 暫存器,然後把他們再次寫回到新的地方。在這個時間中,cpu 對於其他的工作來說就無法使用。

dma 傳輸主要地將乙個記憶體區從乙個裝置複製到另外乙個。當 cpu初始化這個傳輸動作,傳輸動作本身是由 dma 控制器 來實行和完成。典型的例子就是移動乙個外部記憶體的區塊到晶元內部更快的記憶體去。像是這樣的操作並沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。

dma 傳輸對於高效能 嵌入式系統 演算法和網路是很重要的。

在實現dma傳輸時,是由dma控制器直接掌管匯流排,因此,存在著乙個匯流排控制權轉移問題。即dma傳輸前,cpu要把匯流排控制權交給dma控制器,而在結束dma傳輸後,dma控制器應立即把匯流排控制權再交回給cpu。 乙個完整的dma傳輸過程必須經過下面的4個步驟。

dma請求

cpu對dma控制器初始化,並向i/o介面發出操作命令,i/o介面提出dma請求。

dma響應

dma控制器對dma請求判別優先順序及遮蔽,向匯流排裁決邏輯提出匯流排請求。當cpu執行完當前匯流排週期即可釋放匯流排控制權。此時,匯流排裁決邏輯輸出匯流排應答,表示dma已經響應,通過dma控制器通知i/o介面開始dma傳輸。

dma傳輸

dma控制器獲得匯流排控制權後,cpu即刻掛起或只執行內部操作,由dma控制器輸出讀寫命令,直接控制ram與i/o介面進行dma傳輸。

在dma控制器的控制下,在儲存器和外部裝置之間直接進行資料傳送,在傳送過中不需要**處理器的參與。開始時需提供要傳送的資料的起始位置和資料長度。

dma結束

當完成規定的成批資料傳送後,dma控制器即釋放匯流排控制權,並向i/o介面發出結束訊號。當i/o介面收到結束訊號後,一方面停 止i/o裝置的工作,另一方面向cpu提出中斷請求,使cpu從不介入的狀態解脫,並執行一段檢查本次dma傳輸操作正確性的**。最後,帶著本次操作結果及狀態繼續執行原來的程式。

由此可見,dma傳輸方式無需cpu直接控制傳輸,也沒有中斷處理方式那樣保留現場和恢復現場的過程,通過硬體為ram與i/o裝置開闢一條直接傳送資料的通路,使cpu的效率大為提高。

STM32 匯流排空閒 DMA 方式接收

stm32 的 usart 支援乙個匯流排空閒中斷,如果這個中斷和dma配合,能夠較好的實現接收不定長資料的功能。匯流排空閒中斷是在檢測到在接收資料後,資料匯流排上乙個位元組的時間內,沒有再接到資料後發生。也就是rxne位被置位之後,才開始檢測,只被置位一次,除非再次檢測到rxne位被置位,然後才開...

DMA 二 DMA介面函式

流式dma對映,使用這個函式前需要事先分配連續物理記憶體,這個函式只是物理位址對映到虛擬位址 dma map single dma unmap single dma池 dma如果使用cache,那麼一定要考慮cache的一致性。解決dma導致的一致性的方法最簡單的就是禁止dma目標位址範圍內的cac...

匯流排 IIC匯流排

i2c匯流排是飛利浦 phlips 公司推出的一種半雙工序列匯流排,用於連線微控制器及其外圍裝置,i2c序列匯流排有兩根雙向訊號線。一根是資料線sda,另一根是時鐘線scl。它僅通過兩根訊號線就可以完成對所有掛載在i2c匯流排上的從器件進行操作。這樣的好處是可以大大的節省我們微處理器的io口資源。i...