如何访问DMA在Linux中
问题描述:
我在Linux下编写设备驱动程序,我需要实现DMA
。如何访问DMA在Linux中
显然,DMA
缓冲区可以通过向pci_alloc_consistent()
呼叫分配。但是,我们如何从用户级别向这些缓冲区写入命令?
任务包括写值特定的寄存器,如何实现这些使用DMA
命令?
答
我相信你可以通过I/O操作写入DMA,你可以通过GNU C库访问它。您必须使用系统调用(如ioperm或iopl)并以root用户身份运行以访问DMA寄存器。至少这是如何获得可用于DMA访问的IO空间的访问权限。虽然我可能不会完全回答这个问题,但希望这能指出你的方向。
当你说用户级别,你从用户空间的意思。虽然您可以采取一些方法,但通常用户空间不具有DMA硬件的可见性。 – stsquad 2012-02-15 13:07:20