最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【问题解答】嵌入式ARM中,有关DMA的使用问题

Embedded crifan 2548浏览 0评论

【问题】

嵌入式ARM中,有关DMA的使用问题

中的:

DMA可以添加到UART,I2C等接口的驱动中使用,如果要单独操作DMA是否可以?是为DMAC注册一个驱动,然后就可以在应用层中使用了吗?

 

【问题解答】

“DMA可以添加到UART,I2C等接口的驱动中使用”

我倒没怎么遇到过。

只见过:

将DMA添加到别的某种具体功能的模块,

比如Nand Flash,SD/MMC等驱动中,

以便实现加速数据传输速度的。

没见过直接加给UART或I2C的。

据我了解,像UART或I2C,本身如此低速的协议,本身就没打算用别的(比如你说的DMA)方式去加速,

即使加速了,对应的外接设备估计也不支持,没啥实际意义。

 

“如果要单独操作DMA是否可以?”

据我了解:可以。

可以自己去写一个,空的驱动,然后申请DMA资源,底层对应的一般是一个DMA通道

然后实现你所要的目的即可,

比如拷贝一大批数据,从地址A拷贝到地址B,

原先如果用CPU去做,速度必然没DMA快。

用了DMA,就可以实现你要的类似的效果了。

Linux中有些DMA的驱动框架,本身就已经封装好了类似直接DMA数据拷贝的接口供你使用了。

详见:

详解ARM的AMBA设备中的DMA设备PL08X的Linux驱动

转载请注明:在路上 » 【问题解答】嵌入式ARM中,有关DMA的使用问题

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
81 queries in 0.167 seconds, using 22.41MB memory