【问题标题】:How to configure Redhawk waveform to work with USRP RFNoC如何配置 Redhawk 波形以使用 USRP RFNoC
【发布时间】:2020-11-24 03:04:46
【问题描述】:

我对 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 制作的。波形本身由具有 cpp-rfnoc 实现的单个 psd 组件组成,该组件依赖于 RFNoC_RH 共享库。有一个 RFNOC_Programmable 设备和两个由设备管理器控制的 RFNoC 角色。

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

我有两个问题

  • 什么是最少的 redhawk 模块集才能使此设置正常工作(到目前为止,我的波形带有一个 psd 组件,设备管理器运行一个可编程设备和两个角色)
  • 模块之间应该是什么关系?

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

【问题讨论】:

  • 我记得 RFNoC_Persona 负责加载和执行支持 RFNoC 的组件,例如演示中的自定义 psd。这是我们与该工作相关的blog post。您是否有任何其他日志可以从运行角色的域管理员或设备管理员共享,您可以发布这些日志?
  • 谢谢@Thomas!该博客内容丰富。想我以前看过这个视频,但是在最近使用 rfnoc 之后,有些事情变得更有意义了。我尝试使用来自here 的 psd 在视频中复制实验,但在匹配 RFNoC_RH 软 pkg 依赖项时似乎失败了。日志是here。感谢您的帮助。

标签: redhawksdr usrp uhd rfnoc


【解决方案1】:

我必须承认,我对这个项目有点生疏了,而且该更新了。 Ettus 为 RFNoC 和 E3xx 构建的版本现在不再使用此构建指向的层堆栈版本。今年年初,我开始在我们的meta-redhawk-sdrthud-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 可能需要为 RF-NoC-Default 声明第二个 processor,以便 Executable Persona 可以满足依赖关系(热补丁...)。

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

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

【讨论】:

  • 感谢@Thomas。构建需要一些手动干预才能完成。就像手动获取超高清图像并应用于烘焙过程一样。我已经尝试过添加 GPP,但由于之前的尝试也有其他变化,所以又做了一次。添加 GPP 并没有太大的区别。我已经添加了the log,但它并没有说太多。 GPP 不会得到处理,因为一旦组件 (psd) 与角色匹配,它就会从设备列表中删除。然后仅针对分配的设备检查软 pkg 依赖关系。
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
相关资源
最近更新 更多