【问题】
中的:
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的使用问题