DMA 传输

夕阳孤影 2011-11-25 05:21:21
最近在看DMA时对DMA的一种传输方式不是很理解,希望高手解答。
1.当从内存到外设传输数据时,是如何进行的?需要在DMA控制器的内部进行数据缓存吗?
2.进行DMA传输时不是要设置源地址和目的地址吗?那如果是内存到外设,外设的地址该怎样设到DMA的控制器里,这又是一个怎样的地址呢?
3.从网上看到说,DMA可以通过UART或SPI传递数据,一直搞不明白这是什么意思。

期望高手的回答
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vans88 2011-11-27
  • 打赏
  • 举报
回复
DMA对应的中文意思是直接内存访问,由硬件DMAC从CPU那里获得总线的控制权,实现外设和内存之间高速度大批量地进行数据传输。
外设和系统内存之间传输数据时可以使用UART和spi接口,它们分别对应着系统的串行数据和并行数据的传输!
夕阳孤影 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 leuzz 的回复:]
DMA相当于处理器的一个助手,只负责搬运数据,把源地址和目的地址告诉他就可以了,不需要在DMA里进行数据缓存,从内存到外设,比如你说的UART SPI,在arm处理器里本身就集成了uart和spi,有相对应的寄存器作为他们的数据缓存,这些寄存器的地址就是DMA的目的地址或源地址,DMA从内存源地址copy数据过来放到uart的UTX寄存器里,数据通过硬件自动发送出去
[/Quote]用到SPI或者UART的时候,确定是将它们对应的寄存器设为DMA的源地址或目的地址吗?
ezword 2011-11-26
  • 打赏
  • 举报
回复
使用方法和平常内存对内存是一样的,源地址,目的地址,大小。
ezword 2011-11-26
  • 打赏
  • 举报
回复
pcie 与DMA关系并不是多大,不过多数走PCIE的数据都通过DMA,当然也可以使用处理器进行数据传输。
每种PCIE都可能有最大的DMA单元。
leuzz 2011-11-26
  • 打赏
  • 举报
回复
百度了一下pcie,才大概弄懂它是什么,从没接触过,所以我也不知道
夕阳孤影 2011-11-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 leuzz 的回复:]
DMA相当于处理器的一个助手,只负责搬运数据,把源地址和目的地址告诉他就可以了,不需要在DMA里进行数据缓存,从内存到外设,比如你说的UART SPI,在arm处理器里本身就集成了uart和spi,有相对应的寄存器作为他们的数据缓存,这些寄存器的地址就是DMA的目的地址或源地址,DMA从内存源地址copy数据过来放到uart的UTX寄存器里,数据通过硬件自动发送出去
[/Quote]那楼主知道pcie与DMA的关系吗?pcie要用DMA吗?如果用的话是怎么用的呢?谢谢
leuzz 2011-11-25
  • 打赏
  • 举报
回复
DMA相当于处理器的一个助手,只负责搬运数据,把源地址和目的地址告诉他就可以了,不需要在DMA里进行数据缓存,从内存到外设,比如你说的UART SPI,在arm处理器里本身就集成了uart和spi,有相对应的寄存器作为他们的数据缓存,这些寄存器的地址就是DMA的目的地址或源地址,DMA从内存源地址copy数据过来放到uart的UTX寄存器里,数据通过硬件自动发送出去

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧