博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DMA(一)硬件
阅读量:4284 次
发布时间:2019-05-27

本文共 971 字,大约阅读时间需要 3 分钟。

  • 哪里有
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

转载地址:http://eengi.baihongyu.com/

你可能感兴趣的文章
C++数值交换
查看>>
指针数组、数组指针、函数指针、指针函数
查看>>
float,double在内存中的存储方式
查看>>
int main(int argc,char* argv[])详解
查看>>
C++打印地址
查看>>
ARM处理器比较:A8/A9
查看>>
ARM处理器工作模式
查看>>
ARM处理器寄存器
查看>>
汇编语言学习
查看>>
ARM寻址方式
查看>>
uboot工作流程分析
查看>>
不錯的技術論壇
查看>>
GDB 常用參數
查看>>
pthread man page
查看>>
Linux 如何修改 root 密碼
查看>>
nc 傳輸
查看>>
vi 與 vim 的指令整理
查看>>
console & telnet判斷
查看>>
sqlite3
查看>>
關於如何快速切換目錄(Linux)
查看>>