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

【问题】

嵌入式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驱动



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量