一些Linux DMA专家可以帮助我...理解这个概念。
a> 我是 DMA 编程的新手。DMA 实际上如何用于 ARM 控制器?
b> 如果我们使用 mmap 向驱动程序发送数据。我们如何将其与 DMA 同步?
c> 要使用 DMA,我们实际上必须在我们的软件中做什么?
d> 这个 dma 输入输出通道是什么?
是否有一些示例代码.. 对 DMA 来说是新手,这将有助于我理解这个概念。
一些Linux DMA专家可以帮助我...理解这个概念。
a> 我是 DMA 编程的新手。DMA 实际上如何用于 ARM 控制器?
b> 如果我们使用 mmap 向驱动程序发送数据。我们如何将其与 DMA 同步?
c> 要使用 DMA,我们实际上必须在我们的软件中做什么?
d> 这个 dma 输入输出通道是什么?
是否有一些示例代码.. 对 DMA 来说是新手,这将有助于我理解这个概念。
a> ARM 对 DMA 并不严格,大多数制造商都有各种实现,并且在内核中为各自的设备提供了自己的驱动程序。其中一些甚至不称其为 DMA(DMOV,DataMover 实际上是 Qcom 的 SoC 上的 DMA 单元)。
b> 我不确定用户空间是否可以访问 DMA,您需要内核的帮助才能做到这一点。此外,大多数 DMA 仅发生在为 DMA 保留的特殊区域中,该区域在 MMU 页表中标记为未缓存,以防止同步问题。
c> 您无法访问 DMA 控制器,硬件由内核抽象,并且大多数制造商使用不同的 API,尽管有一个值得注意的尝试将此类非标准实现转移到内核的标准 DMA 驱动程序模型。
d> 我不明白你的问题。