我将这个github c++项目:https://github.com/RedhawkSDR/USRP_UHD导入到redhawk中,希望在USRP N210上运行它。
Redhawk只允许我将项目作为组件或c++应用程序运行,所以我尝试将其作为组件运行。
这是确切的错误,我得到当我试图运行作为一个组件:"启动USRP_UHD"期间发生内部错误。无法初始化类gov.redhawk.ide.debug.internal.ScaDebugInstance
我该如何解决这个问题?
USRP_UHD设备是与N210接口的红鹰设备。在Redhawk中,设备由设备管理器的实例部署和管理,该实例被称为节点。
在域中运行USRP_UHD Redhawk Device :
-
安装USRP_UHD设备到目标SDR。这可以通过从 project Explorer视图中单击并拖动USRP_UHD项目的顶级文件夹到SCA Explorer视图中的Target SDR来完成。
-
使用包含USRP_UHD Device实例的Redhawk IDE创建一个新的SCA Node Project。第一个向导页面将提示您输入节点名称(项目名称)和域名。如果您现在选择的名称最终与您正在运行的域不同,您可以稍后在运行时重写域名。单击Next后,第二个也是最后一个向导页面允许您从安装在目标SDR中的设备列表中进行选择。选择USRP_UHD并单击Finish。单击Finish后,SCA节点编辑器的Overview选项卡将出现。
-
配置节点。在SCA节点编辑器中,您可以使用Devices选项卡或Diagram选项卡编辑USRP_UHD设备的属性。一般来说,您至少需要使用USRP_UHD设备的USRP_ip_address属性配置N210的IP地址,以便USRP_UHD设备在部署时连接到USRP硬件。
-
将Node安装到目标SDR。同样,这可以通过单击并将节点的顶级文件夹从Project Explorer视图拖动到SCA Explorer视图中的Target SDR来完成。
-
启动您创建的包含USRP_UHD设备的域和节点(设备管理器)。这可以通过在SCA Explorer视图中右键单击Target SDR并选择Launch…来完成。在弹出的对话框中,您可以选择域名(这不必与节点中指定的域名相同)和域管理器的调试级别。要启动Node,请选择从设备管理器列表中创建的Node,并为设备管理器设置适当的调试级别。选择OK同时启动。
-
检查您通过在SCA Explorer视图中展开域而启动的域。您应该在Device Managers文件夹下看到Node,在展开Node之后,您应该看到USRP_UHD Device实例(可能命名为USRP_UHD_1)。
如果这不能解决问题,请提供有关您的环境的更多信息(具体来说,Redhawk框架和IDE的版本,"Java -version"报告的Java版本,操作系统和版本,USRP_UHD的分支/发行版本,UHD软件的版本)以及您将USRP_UHD作为组件运行的步骤。在Redhawk 1.9版本中,我可以选择Run as…->Local Component Program,它成功地在Sandbox中启动了USRP_UHD Device,而没有出现您所经历的错误。您也可以尝试使用Redhawk 1.8和1.9版本(一定要使用每个版本的最新版本),看看这个问题是否在两个版本中都出现。
您使用的UHD版本是3.7.1吗?它应该由任何uhd_*
命令报告,例如uhd_find_devices
。
uhd_find_devices
应该找到你的N210设备,如果你可以ping它。我看到X310不响应uhd_find_devices
,但一旦指定了IP地址,它就会响应。尝试如下所示指定N210的IP地址:
uhd_find_devices --args="addr=192.168.10.2"
将192.168.10.2 (N210的默认IP地址)替换为N210的IP地址。如果仍然没有找到N210,请尝试拔下N210的电源,然后再重新插入电源以强制重新启动N210。同样,当X310即使指定了IP地址也不能响应uhd_find_devices
命令时,我也看到了这种帮助。
然后尝试使用以下命令探测N210:
uhd_usrp_probe --args="addr=192.168.10.2"
我相信如果N210的固件版本与你的UHD版本不兼容,N210仍然会被找到,probe命令会通知你必须更新固件。
如果这两个命令都不能与N210通信,我不得不认为问题是UHD软件和N210之间的问题,而不是红鹰相关的问题。要加载固件,请参见下面的链接。此外,还有关于在同一链接上设置网络和排除通信问题的说明。如果你还没有这样做,快速浏览一下,看看是否有任何帮助。告诉我你发现了什么。
将图像加载到板载Flash(仅限USRP- n系列)
您是否遵循此处列出的网络设置步骤:USRP N210网络设置?
如链接中所述,您需要确保您的主机PC与USRP在同一子网上有一个IP地址。使用ifconfig命令为指定接口配置静态IP地址。"eth0"
Java 7 update 55 (version 1.7.0_55)引入了Eclipse(包括Redhawk IDE,因为它是基于Eclipse的)的一个问题/错误,这里将进行描述。在Java 7更新55中所做的更改似乎导致了Eclipse/JacORB的各种问题,现在已经恢复,并将在Java 8更新22中提供。这里有一个测试版,但作为测试版,它可能有其他问题,因此可能不值得尝试。相反,你可以像我做的那样,给Redhawk IDE打补丁,以解决Java 7更新55中的错误。
-
设置环境变量
IDE_HOME
指向与eclipse可执行文件(但不是可执行文件本身)相同的目录。export IDE_HOME=/usr/local/redhawk/ide/R.1.9 # replace with your path
-
将以下行添加到
$IDE_HOME/eclipse.ini
文件中。如果一行已经指定了认可的目录,则将其替换为这一行。-Djava.endorsed.dirs=$IDE_HOME/jacorb/lib
-
在上一步指定的路径上创建JacORB lib目录。
mkdir -p $IDE_HOME/jacorb/lib
-
找到位于
$IDE_HOME/plugins
中的JacORB目录的确切名称,该目录将以"org.jacorb.system
"开头,并将其分配给名为JACORB_DIR
的环境变量:export JACORB_DIR=`find $IDE_HOME/plugins/ -maxdepth 1 -name org.jacorb.system*`
-
将JacORB jar目录的内容复制到
$IDE_HOME/jacorb/lib
目录:cp -R $JACORB_DIR/jars/* $IDE_HOME/jacorb/lib/.
这应该可以解决由Eclipse/JacORB错误引起的任何潜在问题。这是否也解决了USRP遗留的问题?