Linux DMA操作 - 如何启动传输

时间:2012-12-04 10:11:00

标签: linux linux-device-driver dma

我已经阅读了Linux设备驱动程序LDD3,DMA-API.txt,DMA-HOWTO.txt也查看了drivers / dma / dmatest.c但是我无法弄清楚你是如何启动的dma转移。 关于映射内存的所有讨论,但没有关于如何启动事务的讨论。 PCI示例驱动程序具有传输功能,但它使用“特定”DMA操作,我试图找出一个不依赖于硬件的更通用/可移植的实现

我想尝试制作像

这样的东西
  1. dma_map_single()
  2. 启动读/写事务
  3. 中断事务已完成,使用处理程序或wait_event_freezable_timeout
  4. dma_unmap_single()
  5. 我只是读/写我映射的内存吗?如何注册回调处理程序?

    编辑: 为了提供更多细节,我正在开发一个ARM平台。

1 个答案:

答案 0 :(得分:1)

也许Xilinx的一个例子可以提供帮助: http://www.wiki.xilinx.com/Zynq+Linux+pl330+DMA

来自三星的驱动程序(已经包含在linux内核中): http://lxr.free-electrons.com/source/drivers/dma/pl330.c