使用ioremap进行物理地址的DMA传输

时间:2018-09-18 05:47:55

标签: linux kernel dma kmalloc ioremap

我正在使用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传输映射物理地址所需的任何其他功能是否已足够。

帮我解决这个问题。

0 个答案:

没有答案