直接記憶體訪問(DMA)初探

2021-06-19 16:23:24 字數 978 閱讀 3464

1.dma簡介

dma(direct memory access),直譯為直接記憶體訪問,是一種無需cpu的參與就可以讓外設與系統記憶體之間進行雙向資料傳輸的硬體機制。

使用dma可以使系統cpu從實際的i/o資料傳輸過程中擺脫出來,從而大大提高系統的吞吐率。

2.dma工作過程

dma方式的資料傳輸由dma控制器(dmac)控制,在傳輸期間,cpu可以併發的執行其他任務。當dma結束後,dmac通過中斷通知cpu資料傳輸已經結束,由cpu執行相應的中斷服務程式進行後續處理。

工作過程圖如下:

1)外設向dmac發出請求

2)dmac通過hold向cpu發出匯流排請求

3)cpu響應釋放三匯流排,並且發應答hlda

4)dmac向外設發dma應答

5)dmac發出位址、控制訊號,為外設傳送資料

最後,傳送完規定的資料後,dmac撤銷hold訊號,cpu也撤銷hlda訊號,恢復對三匯流排的控制

3.linux下的dma程式設計

**路徑:

arch/arm/include/asm/mach/dma.h

arch/arm/kernel/dma.c

標頭檔案中非常重要的dma結構體

基於s3c2440處理器的開發板相對應的linux dma**路徑:

./arch/arm/mach-s3c24xx/include/mach/dma.h

./arch/arm/mach-s3c24xx/dma.c

1.linux裝置驅動開發詳解(第2版) 宋寶華

2.arm9原理與應用設計 三恆星科技

dma讀nand DMA直接記憶體訪問原理

5.3dma控制器8237 8237在dma傳送時有四種工作方式。1.單位元組傳送方式 這種方式一次只傳送乙個位元組。資料傳送後位元組計數器減量,位址要相應修改 增量或減量取決於程式設計 hro變為無效,釋放系統匯流排。若傳送使位元組數減為0,tc發生或者終結dma傳送,或重新初始化。2 多位元組傳...

直接儲存器訪問DMA

原理 允許不同硬體裝置溝通,而不需要依賴cpu的大量中斷負載 對於cpu來說 需要從 吧每一片斷的資料複製到暫存器,然後把他們寫到新的地方,期間,cpu對於其它的工作就無法使用.對於dma傳輸 將資料從乙個位址空間複製到另乙個位址空間。而cpu只需初始化這個傳輸動作.在實現dma傳輸時,是由dma控...

DMA 直接儲存器訪問

dma 全稱是direct memory access,即直接儲存器訪問。dma傳輸將資料從乙個位址空間複製到另乙個位址空間,尤其適合解決批量資料的輸入 輸出問題。dma的出現主要是為了解決程式程式傳輸方式和中斷傳輸方式效率低下的問題,提高cpu的執行效率。下面分別聊一聊什麼是程式傳輸方式 中斷傳輸...