我对SDR/FPGA游戏还比较陌生,所以如果我弄错了术语,我很抱歉。我知道这会有一些相当具体的细节,但我希望有人也做过类似的事情。我正试图在Ettus USRP E312上用UHD v3.14和RFNoC运行一个简单的红鹰2.2.1波形。Redhawk域正在USRP上运行,我正在连接Centos7虚拟箱中的RedhawkIDE。我使用的代码是使用https://github.com/Geontech/redhawk-rfnoc-buildFPGA的位文件是按照Ettus知识库中的指示使用Vivado制作的。波形本身由具有cpp-rfnoc实现的单个psd组件组成,该组件依赖于rfnoc_RH共享库。有一个RFNOC_Programmable Device和两个由Device Manager控制的RFNOC Personas。
我遇到的问题是Redhawk无法为波形创建应用程序。我尝试过更改配置、添加更多日志记录,以及对Redhawk代码进行一些小的修改,但由于未能解决组件或软包依赖关系,整个过程通常会失败。我试过在USRP上运行GPP,但似乎没有考虑它,因为一旦psd组件分配给角色,它似乎就会被过滤。然后,它将尝试将软包依赖项分配给已经选择的设备,但没有匹配项。
我有两个问题
- 这个设置的最小红鹰模块集是什么(到目前为止,我有一个psd组件的波形,运行一个可编程设备和两个Personas的设备管理器(
- 模块之间应该有什么关系
我特别想知道/了解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可能需要RF-NoC-Default
的第二个processor
声明,以便可执行Persona可以满足依赖关系(热补丁…(
第二,应用程序工厂创建一个ComponentHost来处理正在启动的任何共享库组件实现的运行(2.2(,这会导致问题,因为Persona期望通过Load API传递的dlopen
所有,这就是为什么简单地添加ComponentHost(带有自己的processor
补丁(并不能解决问题。
修复第一个是SPD XML补丁。修复第二个是REDHAWK核心框架补丁,该补丁可能应该进行上游处理,因为任何可执行Persona设备都很可能希望将组件部署到父可编程设备设置的过程空间中(出于组件主机现在存在的所有性能原因(。