首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Linux访问Xilinx?

如何从Linux访问Xilinx?
EN

Stack Overflow用户
提问于 2021-12-08 15:24:42
回答 1查看 1.8K关注 1票数 2

我是一名软件开发人员,但我是嵌入式软件开发的新手。我有一个板,它的硬件中有一个Axi DMA,我想从Linux访问这个DMA。我知道我应该使用DMA引擎来访问Linux中的DMA,并且我找到了以下链接,即Xilinx驱动程序,但是我无法在没有任何错误的情况下将这些文件添加到我的qt项目中,而且我收到的文件(头文件)没有找到错误。dma.c

我有一些关于DMA驱动程序、设备树和DMA引擎的分散信息,但是我不知道如何利用这些信息来访问硬件DMA。

我构建了一个Petalinux项目,并将DMA引擎和DMA测试客户端添加到内核中。

我不知道将DMAEngine添加到Petalinux项目是否足够,或者我也应该有一个驱动程序。

我不知道将硬件规范(通过.xsa文件和.bit文件)添加到Petalinux项目中就足够了,或者我也应该在Linux中添加一个设备树来检测DMA。

我一步一步地查找关于如何设置Linux和qt创建者来访问DMA的教程,或者至少有一个明确的目标路线图。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-09 22:15:25

首先,在将xilinx_dma.c添加到Qt项目时会遇到错误,因为这个文件是作为内核的一部分或作为内核模块编译的。

将DMA引擎添加到Petalinux并不足以从用户空间使用DMA。DMA引擎只提供一个标准化的API,以便将不同的DMA集成到内核中。您还需要添加客户端驱动程序。据我所知,Xilinx提供了一个名为DMA代理驱动程序的简单客户端驱动程序。它还包括一些简单的示例,展示如何从用户空间访问DMA。但是,如果应用程序需要高带宽,则可能需要考虑其他选项。

与代理DMA驱动程序相比,Axi DMA还具有更高的带宽。它的用户空间API还允许您在事务完成时注册要调用的回调函数。

第三种选择是在用户空间中实现驱动程序。这可以通过将DMA定义为设备树中的UIO设备并直接从用户空间访问其寄存器映射来实现。在这种情况下,您需要在内核空间中分配一些连续的内存块,以避免MMU的复杂性,因为MMU无法从用户空间处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70277481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档