我正在使用https://elixir.bootlin.com/linux/v4.9.127/source/drivers/dma/dmatest.c。
以上dmatest程序传输仅发生在使用kmalloc的缓冲区之间。但是我想使用ioremap作为物理地址。我已经完成了ioremap的目的地,但是dma传输没有发生。
在没有dma的情况下,使用ioremap缓冲区来缓冲传输工作正常。
在dmatest_func函数中
thread->dsts = kcalloc(dst_cnt+1, sizeof(u8 *), GFP_KERNEL);
if (!thread->dsts)
goto err_dsts;
u8 *virt;
virt=ioremap(0x80002000,params->buf_size);
thread->dsts[0]=virt;
对于物理地址或为DMA传输映射物理地址所需的任何其他功能是否已足够。
帮我解决这个问题。