DMA(一)硬件

  • 哪裏有
soc 中沒有 dma 模塊
soc 中 其餘模塊 不少 都和 dma 有 直接關係
  • 做用
爲 cpu 減負
  • 功能
內存A地址數據(源)到內存B地址(目的)的直接(without cpu)傳輸
內存A地址數據(源)到設備B地址(目的)的直接(without cpu)傳輸
設備A地址數據(源)到內存B地址(目的)的直接(without cpu)傳輸
  • 概念
dma控制器
數據流
通道(請求)
仲裁器

1個控制器 及1個仲裁器(根據數據流的優先級仲裁)
	8個數據流 (有優先級)
		8個通道可選,只能設置1個通道

雖然1個數據流有8個通道,可是同一時間只有1個通道能夠鏈接到該數據流,進而鏈接到控制器
初始化時只能設置1個通道鏈接到該數據流,且固定位該通道


數據流之間有優先級


dma請求的觸發
	軟件觸發
	外設觸發
一次dma請求包括什麼
	源地址
	目標地址
	數據項的長度(1-65535// dma完成後會減到0

源和目的的傳輸寬度不一樣(8bit,16bit,32bit),怎麼處理
	dma的FIFO模式自動封裝、解封必要的傳輸數據來優化帶寬
增量運算

dma 事件
	dma半傳輸
	dma傳輸完成
	dma傳輸錯誤
	dma fifo 錯誤
	直接模式錯誤

數據流配置
	單緩衝類型事務
	雙緩衝類型事務

發送模式
	遞增模式
	循環模式
  • m4 dma 的初始化及工做
1. 關閉數據流
	清0 DMA_SxCR 的 EN 位 .讀若爲0,則第二步
2. 設置源地址,目標地址(DMA_SxPAR DMA_SxM0AR)
3. 設置存儲方向
4. 配置一次傳輸數據數目.
5. 將通道掛載到數據流 DMA_SxCR[2:0]
6. 配置數據流的優先級 PL[1:0]
7. 配置fifo使用狀況(禁止 或 使能和接收閾值)
8. 配置 外設和存儲器增量/固定模式 單獨或突發事務 外設和存儲器數據寬度 循環模式  雙緩衝區模式 和 中斷標誌位的使能
9. 激活數據流
	置位 DMA_SxCR[1]   

9步以後,外設發出了dma請求,便可響應(數據搬運)。若是使能了標誌位,還會來中斷
  • m4 的 設置
源 				目的
外設->存儲器		DMA_SxPAR 		DMA_SxM0AR
存儲器->外設		DMA_SxM0AR		DMA_SxPAR
存儲器->存儲器	DMA_SxPAR		DMA_SxM0AR