linux – 如何从软件工具向Zynq中的AXI-Stream发送数据?

linux – 如何从软件工具向Zynq中的AXI-Stream发送数据?,第1张

概述我正在寻找一种方法,将我用C语言编写的软件应用程序中的一些数据发送到Zynq的AXI-Stream接口.就像是 open(/dev/axistream);send_data(data); 我在Arm部分运行Linux,现在我想将它连接到可编程逻辑部分. 在zynq设备上,Cortex-A9处理器和FPGA之间的通信使用AXI协议完成.有三种类型的端口可用于FPGA和CPU之间的通信( Zynq 我正在寻找一种方法,将我用C语言编写的软件应用程序中的一些数据发送到Zynq的AXI-Stream接口.就像是

open(/dev/axistream);send_data(data);

我在Arm部分运行linux,现在我想将它连接到可编程逻辑部分.

解决方法 在zynq设备上,Cortex-A9处理器和FPGA之间的通信使用AXI协议完成.有三种类型的端口可用于FPGA和cpu之间的通信( Zynq TRM):

>通用AXI端口:2x主机(从cpu到FPGA)和2x从机端口(从FPGA到cpu).这些端口连接到处理系统的中央互连,可用于向/从DDR存储器或片上存储器(OCM)传输数据.
>高性能AXI端口:4x从端口(从FPGA到cpu)提供对DDR或OCM的高带宽访问
> ACP(加速一致性端口):从端口(从FPGA到cpu)高通量端口直接连接到监听控制单元(SCU). SCU维护缓存一致性(省略缓存刷新/无效的需要).

从您的问题,我会理解,在您的情况下,cpu是通信的主人.您将需要使用通用axi主端口.您无法将AXI4流接口连接到AXI互连.您需要将AXI4 Streaming转换为AXI.根据您的性能需求,AXI DMA IP内核(AXI DMA IP core)可能是一个很好的解决方案.

如果要使用“open(/ dev /)”从软件的角度进行通信,则需要linux设备驱动程序.如果您使用DMA核心,您的通信通常如下所示:

>您将配置DMA内核以从某个内存地址获取数据
>启动DMA核心
> DMA内核将获取数据并将其提供给IP块的AXI4流接口
>您的IP块将对数据执行某些 *** 作并发送回内存(使用DMA)或执行其他 *** 作(发送到外部接口,…)

您的DMA内核的寄存器集将被内存映射,并可通过您自己的linux设备驱动程序访问.出于调试目的,我建议使用mmap访问寄存器并快速验证硬件的 *** 作.一旦你去了linux内核设备驱动程序,我建议你阅读这本书:Linux Device Drivers 3the edition

总结

以上是内存溢出为你收集整理的linux – 如何从软件工具向Zynq中的AXI-Stream发送数据?全部内容,希望文章能够帮你解决linux – 如何从软件工具向Zynq中的AXI-Stream发送数据?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1031157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存