gpt4 book ai didi

来自用户空间总线错误的 Linux DMA

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:15 33 4
gpt4 key购买 nike

我正在遵循这个框架 https://forums.xilinx.com/xlnx/attachments/xlnx/ELINUX/10693/1/Linux%20DMA%20from%20User%20Space-public.pdf使用 DMA 执行数据传输。我正在使用 AXI DMA 没有scatter gather,发送流循环回接收溪流。我使用的代码如下:dma_proxy.c , dma_proxy.h , dma_proxy_test.c .我正在尝试将 u32 更改为 u64,因为我在 64 位系统中工作。dma_proxy 内核模块正常工作并正确执行 INTERNAL_TEST,但是当我在将它们映射到用户应用程序后尝试读取/写入 dma 缓冲区时,我收到此错误:

DMA proxy test
[ 397.889331] Unhandled fault: level 3 address size fault (0x92000043) at 0x0000007f94d4b004
Bus error

此外,根据框架,当我导出内核分页表时,我应该在内核映射区域上观察 DMA 缓冲区,但我在 vmalloc() 区域上得到它:

0xffffff80012c5000-0xffffff80012cd000          32K     RW NX SHD AF            UXN MEM/NORMAL-NC
0xffffff80012ce000-0xffffff80015cf000 3076K RW NX SHD AF UXN MEM/NORMAL-NC
0xffffff80015d0000-0xffffff80015d8000 32K RW NX SHD AF UXN MEM/NORMAL-NC
0xffffff80015d9000-0xffffff80018da000 3076K RW NX SHD AF UXN MEM/NORMAL-NC

文件来自这篇文章:https://forums.xilinx.com/t5/Embedded-Linux/BRAM-DMA-transfer-limitation/m-p/555953#M11603我在 Xilinx (Zynq Ultrascale+) 的 zcu102 评估板上运行。

有什么想法吗??

最佳答案

在 Xilinx 支持部门的帮助下,我已经解决了我的问题。它是驱动程序代码 mmap 函数,它使用 dma_common_mmap 而不是 dma_mmap_coherent,后者应该用于映射 dmam_alloc_coherent 分配的内存区域。

关于来自用户空间总线错误的 Linux DMA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41440206/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com