2012-12-06 27 views
1

某些Linux DMA专家可以帮助我理解这个概念。DMA如何工作 - 在ARM中 - 使用linux

a>我是DMA编程新手。 DMA如何为ARM控制器实际工作?

b>如果我们使用mmap向驱动程序发送数据。我们如何将这与DMA同步呢?

c>使用DMA我们在软件中实际需要做什么?

d>这个dma输入输出通道是什么?

是否有一些示例代码..是DMA的新手,它将有助于我理解这个概念。

+0

通过在搜索引擎中输入“linux arm dma”,我发现了大量信息。也许你可以指出你看过什么,以及哪一点你不明白? – Useless

+0

ARM没有标准的DMA控制器,它包含许多版本的处理器,SoC和uControllers。示例代码可以在内核源代码树中找到http://lxr.free-electrons.com/source/drivers/?v=3.2;a=arm – sawdust

回答

3

a> ARM对DMA没有严格要求,大多数制造商都有各种不同的实现方式,并且在各自的设备内核中都有自己的驱动程序。其中一些甚至不称之为DMA(DMOV,DataMover实际上是Qcom SoC上的DMA单元)。

b>我不确定用户空间是否可以访问DMA,您需要内核的帮助来做到这一点。除了大多数DMA只出现在保留给DMA的特殊区域中,该特殊区域在MMU页面表中被标记为未缓存以防止同步问题。

c>您不能访问DMA控制器,硬件被内核抽象,大多数制造商使用不同的API,虽然有一个明显的尝试将这些非标准实现移动到内核的标准DMA驱动程序模型。

d>我不明白你的问题。

相关问题