如何访问DMA在Linux中

问题描述:

我在Linux下编写设备驱动程序,我需要实现DMA如何访问DMA在Linux中

显然,DMA缓冲区可以通过向pci_alloc_consistent()呼叫分配。但是,我们如何从用户级别向这些缓冲区写入命令?

任务包括写值特定的寄存器,如何实现这些使用DMA命令?

+0

当你说用户级别,你从用户空间的意思。虽然您可以采取一些方法,但通常用户空间不具有DMA硬件的可见性。 – stsquad 2012-02-15 13:07:20

我相信你可以通过I/O操作写入DMA,你可以通过GNU C库访问它。您必须使用系统调用(如ioperm或iopl)并以root用户身份运行以访问DMA寄存器。至少这是如何获得可用于DMA访问的IO空间的访问权限。虽然我可能不会完全回答这个问题,但希望这能指出你的方向。