Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux内核映射DMA的物理内存_Linux_Linux Kernel_Linux Device Driver_Embedded Linux - Fatal编程技术网

Linux内核映射DMA的物理内存

Linux内核映射DMA的物理内存,linux,linux-kernel,linux-device-driver,embedded-linux,Linux,Linux Kernel,Linux Device Driver,Embedded Linux,我正在开发一个有DSP和CPU的嵌入式系统。DSP和CPU之间有一个共享内存区域。当数据准备就绪时,DSP处理数据并向CPU发送信号。我在CPU上运行Linux,并从内核映射中排除了共享内存区域 我有Linux内核驱动程序代码,可以映射DSP发送的物理地址。使用返回的虚拟地址,我可以检查数据并查看数据是否有效。我现在在尝试映射数据时遇到了问题,因此我无法将数据从CPU DMA传输到外围设备。我希望避免将数据复制到dma_alloc_相干区域,以最小化延迟 我相信这是因为内存和进行DMA的设备之间

我正在开发一个有DSP和CPU的嵌入式系统。DSP和CPU之间有一个共享内存区域。当数据准备就绪时,DSP处理数据并向CPU发送信号。我在CPU上运行Linux,并从内核映射中排除了共享内存区域

我有Linux内核驱动程序代码,可以映射DSP发送的物理地址。使用返回的虚拟地址,我可以检查数据并查看数据是否有效。我现在在尝试映射数据时遇到了问题,因此我无法将数据从CPU DMA传输到外围设备。我希望避免将数据复制到dma_alloc_相干区域,以最小化延迟


我相信这是因为内存和进行DMA的设备之间有一个IOMMU。要生成dma地址到物理地址的映射,我需要做些什么?

以下是一些一般信息,作为起点可能会有所帮助: