1 DMA概念
2 DMA原理
3 DMA傳輸過程
4 DMA硬件控制管腳
在Linux驅動開發中,使用DMA可能要操作DMAC(DMA控制器)的幾個管腳介紹如下:
1.數據總線:用於傳輸數據;
2.地址總線:用於選擇存儲器地址;
3.數據傳送信號:MEMR爲存儲器讀操作信號,MEMW爲存儲器寫操作信號,IOR爲外設讀操作信號,IOW爲外設寫操作信號;
4.DRQ:DMA請求信號,外設向DMA控制器提出要求操作DMA操作的申請信號;
5.DACK:DMA應答信號,DMAC響應外設提出的DMA請求操作;
6.HOLD:總線請求信號,DMAC向CPU發出的臨時佔用總線的信號;
7.HLDA:總線響應信號,CPU向DMAC發出的允許臨時讓出總線控制權的信號;
5 驅動開發中DMA使用—代碼編寫框架
1.DMA初始化:DMA通道申請、DMA傳輸方向設置(MEM->MEM、MEM->DEV、DEV->MEM)、DMA數據傳輸設置(每次傳輸一個字節或者多個字節);
2.DMA源地址和目的地址設置:DMA源地址爲內存的物理地址,DMA目的地址爲外設的數據寄存器的物理地址;
3.DMA傳輸開始函數調用;
4.DMA傳輸結束函數調用;
OK,這個章節就簡單介紹DMA的概念,接下來的章節,將通過實際項目代碼闡述驅動開發中DMA的使用。