2

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

我正在尝试制作类似的东西

  1. dma_map_single()
  2. 启动读/写事务
  3. 中断事务已完成,使用处理程序或 wait_event_freezable_timeout
  4. dma_unmap_single()

我只是读/写我映射的内存吗?如何注册回调处理程序?

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

4

1 回答 1

1

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

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

于 2014-02-25T10:26:31.063 回答