1

一些Linux DMA专家可以帮助我...理解这个概念。

a> 我是 DMA 编程的新手。DMA 实际上如何用于 ARM 控制器?

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

c> 要使用 DMA,我们实际上必须在我们的软件中做什么?

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

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

4

1 回答 1

3

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

b> 我不确定用户空间是否可以访问 DMA,您需要内核的帮助才能做到这一点。此外,大多数 DMA 仅发生在为 DMA 保留的特殊区域中,该区域在 MMU 页表中标记为未缓存,以防止同步问题。

c> 您无法访问 DMA 控制器,硬件由内核抽象,并且大多数制造商使用不同的 API,尽管有一个值得注意的尝试将此类非标准实现转移到内核的标准 DMA 驱动程序模型。

d> 我不明白你的问题。

于 2012-12-07T04:55:29.663 回答