我已经阅读了 Linux 设备驱动程序LDD3、DMA-API.txt、DMA-HOWTO.txt 还查看了驱动程序/dma/dmatest.c 但我无法弄清楚您是如何启动 dma 传输的。所有关于映射内存的讨论,但没有关于如何启动事务的讨论。PCI 示例驱动程序具有传输功能,但它使用“特定”DMA 操作,我试图找出一个更通用/可移植的实现,它不依赖于硬件
我正在尝试制作类似的东西
- dma_map_single()
- 启动读/写事务
- 中断事务已完成,使用处理程序或 wait_event_freezable_timeout
- dma_unmap_single()
我只是读/写我映射的内存吗?如何注册回调处理程序?
编辑:为了提供更多细节,我正在一个 ARM 平台上工作。