如何配置Redhawk波形以与USRP RFNoC一起使用

问题描述

我对SDR / FPGA游戏还比较陌生,因此如果术语错误,我深表歉意。我知道这会有很多相当具体的细节,但我希望有人可能做了类似的事情。 我正在尝试在具有RFNoC的UHD v3.14的Ettus USRP E312上运行一个简单的Redhawk 2.2.1波形。 Redhawk域正在USRP上运行,我正在从Centos7虚拟盒中连接Redhawk IDE。 我正在使用的代码是使用https://github.com/Geontech/redhawk-rfnoc-build构建的 FPGA的位文件是根据Ettus知识库中的说明使用Vivado制作的。波形本身包含具有ppd-rfnoc实现的单个psd组件,该组件依赖于RFNoC_RH共享库。有一个RFNOC_Programmable设备和两个由设备管理器控制的RFNoC角色。

我的问题是Redhawk无法为波形创建应用程序。我曾尝试过更改配置,添加更多日志记录以及对Redhawk代码进行一些小改动,但是整个过程通常由于无法解析组件或软件包依赖关系而失败。 我曾尝试在USRP上运行GPP,但是似乎没有考虑,因为一旦将psd组件分配给角色,它似乎就会被过滤。然后它将尝试将软包依赖项分配给已选择的设备,但是没有匹配项。

我有两个问题

  • 该设置可以正常工作的最小化redhawk模块集是什么(到目前为止,我的波形中包含一个psd组件,运行一个可编程设备和两个角色的设备管理器)
  • 模块之间的关系是什么?

我特别想知道/了解psd组件应该在哪里分配/运行?我需要GPP设备吗? Psd组件通过RFNoC接口从fpga中的块接收/发送数据,同时通过redhawk的bulkio与其他组件接口,这让我认为它确实需要GPP设备才能运行。 还是我想念其他东西?

解决方法

我必须承认,我对该项目有些生疏,并且应该更新。 Ettus针对RFNoC的构建和E3xx现在不再使用该构建指向的层堆栈版本。我从年初开始在我们的meta-redhawk-sdr thud-next分支上开始涉嫌此问题,但是在我不希望看到的2.2.6 REDHAWK更新中遇到了一些错误。最终,这刷新了Ettus最新的源代码树(即原始E3xx图像和RFNoC变体)的刷新。

也就是说,在查看XML时,rh.psd组件的RFNoC实现(cpp_rfnoc)表明目标可执行设备的处理器属性必须为RF-NoC-Default。 RFNoC_DefaultPersona设备已满足该要求(正确地,基于您的日志)。

rh.psd的实现还取决于RFNoC共享库(SoftPkg依赖性,RFNoC_RH),根据SPD的实现,该实现需要armv7l处理器。与可用可执行设备的比较失败。

在默认的构建配置中,我看不到任何东西为设备管理器中的设备提供该处理器名称(例如GPP)。那可能是疏忽。您可以尝试在系统中添加并运行GPP吗?

更新:在重现了设置并进行了一些调查之后,它似乎出现了一些热门补丁,并且在2019年达到2.2的高点通过引入一些东西打破了设计。

首先,共享库SPD可能需要为processor使用第二个RF-NoC-Default声明,以便可执行角色可以满足依赖关系(热补丁...)。

第二,应用程序工厂将创建一个ComponentHost来处理运行任何正在启动的 SharedLibrary 组件实现(2.2),这会引起问题,因为Persona期望dlopen 一切通过Load API传递,这就是为什么简单地重新添加ComponentHost(带有其自己的processor补丁)不能解决问题的原因。

解决的第一个是SPD XML补丁。修复第二个问题是REDHAWK核心框架修补程序,该修补程序可能应该上游,因为任何 Executable Persona设备很可能都希望将组件部署到父级Programmable设备设置到进程空间中(出于所有性能原因,为什么ComponentHost现在存在)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...