我正在尝试为我的x310制作一个自定义块并使用它。到目前为止,我被困在示例FPGA图像编译中,因为我不能使用自定义块增益。
我已经一步一步地遵循了"使用OOT块构建FPGA映像";教程,并成功编译和上传图像到我的x310。uhd_usrp_probe返回预期的"0/Block#0"来回连接到SEP4块。但是来自RFNOC的警告:BLOCK_FACTORY状态"无法找到Noc-ID为0xb16, 0xffff"的块
在编译了一个基于rfnoc_radio_loopback示例的自定义c++程序之后,我还是继续了下去,以便使用增益块,
我在include中添加了这一行:
#include <rfnoc::gain::gain_block_control.hpp>
在radio_block_control实例化之后的这两行:
uhd::rfnoc::block_id_t gain_id(0, "Block", 0);
rfnoc::example::gain_block_control::sptr gain_ctrl = graph->get_block<rfnoc::example::gain_block_control>(gain_id);
程序编译良好,但运行它返回一个LookupError,声明"此设备没有类型为rfnoc::example::gain_block_control with ID: 0/block #0&";我倾向于认为查找错误是明确的,但我不知道该怎么做。
我第一次尝试使用gnuradio-companion块,但根本无法生成块。我确信我错过了一些东西,但我不知道是什么(除了实际的脑细胞)。
- 我的c++出了什么问题?
- 是否有可能在gnuradio-companion中生成增益块,如果是,如何生成?
- 你知道一些教程,解释如何使用自定义块的不同过程吗?
有一个示例应用程序(rfnoc-example/apps/init_gain_block.cpp
)将为您测试块的功能。你可以编译/运行它,看看你的代码块是否正常工作。
如果您看到uhd_usrp_probe
返回0/Block#0
而不是0/Gain#0
,那么。so文件没有被正确拾取。最简单的测试方法是像这样LD_PRELOAD DLL:
LD_PRELOAD=/path/to/librfnoc-example.so uhd_usrp_probe
这将强制预加载包含块控制器的DLL(这将确保它已注册)。您现在应该看到0/Gain#0
作为块ID。