我有一个带有两种 RAM 的 ARM 平台。有一些 SDRAM 和内部 SRAM。平台上的 USB 控制器只需要位于内部 SRAM 上的 DMA 地址。目前,我正在使用一个通用驱动程序,它通过调用dma_pool_alloc
.
有没有办法告诉内核只提供内部 SRAM 而不是 SDRAM 上的 USB 驱动程序 DMA 地址?
我有一个带有两种 RAM 的 ARM 平台。有一些 SDRAM 和内部 SRAM。平台上的 USB 控制器只需要位于内部 SRAM 上的 DMA 地址。目前,我正在使用一个通用驱动程序,它通过调用dma_pool_alloc
.
有没有办法告诉内核只提供内部 SRAM 而不是 SDRAM 上的 USB 驱动程序 DMA 地址?
您必须使用单独的分配器。例如, IMX设备使用iram_alloc.c从内部 SRAM 获取内存。您可能必须过度分配以获得位于 DMA 控制器所需边界上的内存。
如果内存进入通用内核池,则无法区分。通常,如果内存具有特殊属性,平台将提供访问它的替代方法。