我正在尝试使用RedHawk 2.0.1创建分布式域,但无法在手册中找到有关设置的足够信息。我有两个相关的问题。我想在与IDE相同的主机上运行域管理器,但在另一个节点上运行一个或多个组件。我看到了如何创建一个新的节点项目,但没有看到如何指定它应该运行的网络位置。我可以将它添加到域中,但它只是在本地主机上运行两个设备管理器。我也没有看到如何在备用节点上运行特定组件的详细信息。这是否需要手动添加分配属性?
相关问题是我想使用非x86节点作为远程节点。我正在尝试使用ARM处理器并按照Sub $ 100手册中的说明,我能够在我的ARM上构建和安装运行时系统,但我发现GPP设备的GPP.spd.xml仍然有x86作为处理器名称而prf.xml将arm作为必需属性。
手册似乎表明所有节点的二进制文件都在域管理器的sdr中,所以我应该将arm gpp设备的sdr条目和所有组件复制回域管理器主机的sdr然后他们将在域和波形发射时部署回我的手臂?
在我遗漏的地方是否有更好的分布式域名详细说明?
答案 0 :(得分:1)
我相信,对于Sub $ 100项目,REDHAWK的最后一个支持版本是1.10,因此我们处于未知领域。话虽这么说,让我们来点吧。
您应该做的第一件事是确保您的域管理器的/etc/omniORB.cfg文件如下所示:
InitRef = NameService=corbaname::<external IP>:2809
InitRef = EventService=corbaloc::<external IP>10.3.1.245:11169/omniEvents
应该用您的网络IP替换(即不是localhost或127.0.0.1)。使用以下命令重新启动CORBA命名和事件服务:
sudo $OSSIEHOME/bin/cleanomni
下一步是将ARM设备配置为指向域管理器。编辑ARM设备上的/etc/omniORB.cfg文件以匹配域管理器中的文件,甚至是IP地址。请注意,您不必在ARM设备上启动命名和事件服务。
现在,要在ARM设备上运行GPP,您必须在ARM设备上创建该节点,因为Domain尚未了解该设备并且无法访问其文件系统。 Sub $ 100文档的1.10版本的第16页(http://ufpr.dl.sourceforge.net/project/redhawksdr/redhawk-doc/1.10.0/REDHAWK-Sub100-Manual-v1.10.0.pdf)具有安装GPP的说明。
请注意,最新版本的GPP现在实际上是一个C ++设备,因此第二步应该是“cd framework-GPP / cpp&#39;第三步应该是git checkout 2.0.1&#39;。一旦安装完毕,还有几个问题需要处理。首先,运行以下命令:
$SDRROOT/dev/devices/GPP/cpp/devconfig.py --location $SDRROOT/dev/devices/GPP
这将配置您的GPP以识别它在ARM平台上(只要您的处理器是armv7l处理器)。
接下来,运行以下命令:
$SDRROOT/dev/devices/GPP/cpp/create_node.py --domainname <RH Domain Name>
这将实际创建将包含您的GPP的DeviceManager配置文件。
最后一步涉及确保正确配置节点。查看第21页,第5步。基本上,您可以删除x86_64实现并替换&#39; x86&#39;使用&#39; armv7l&#39;。
关于构建组件的问题,是的,您必须为感兴趣的平台构建它们,然后将它们安装到Domain Manager SDRROOT。如果你有一个交叉编译器设置来构建你的组件(和框架),这将使你的生活更轻松。但是,如果您不这样做,解决方法是在ARM设备上构建组件,然后将XML文件和可执行文件安装到域。为了使任何组件与ARM GPP一起使用,他们需要具有一个ARM实现,其处理器名称与其SPD中的GPP相匹配。
我知道很多,而且我暂时还没有完成这些说明,所以如果您有任何问题或任何事情都无法解决,请告诉我。
答案 1 :(得分:0)
显然回复的篇幅非常有限,所以我称之为答案。感谢您的答复。我实际上尝试了部分内容,但会尝试查看您的信息是否能让我更进一步。写完这个问题后,我进一步探讨了一下。我发现我在ARM上编译并安装的代码在设备管理器的域配置文件中仍然有“x86”和“x86-64”而没有“armv7l”所以我修改了配置文件并尝试启动设备管理器ARM手动(在将omniORB.cfg设置为指向域管理器主机上的名称服务器之后。它启动正常,并说它正在尝试连接,域管理器主机上的名称服务器现在有一个ARM设备的条目管理器,但IDE没有列出额外的设备管理器,如果我杀了ARM设备管理器,它说它在等待注册时被入侵,所以我假设设备管理器注册了名称服务器,但从未得到域管理器的回复这并不能让我对你的步骤有所帮助,但我会试一试。
答案 2 :(得分:0)
更新。在更接近于100美元以下文档中的步骤之后,似乎$ SDRROOT / dev / devices / GPP / cpp / devconfig.py没有编辑GPP.spd.xml以放入正确的处理器和编译器版本,但在手工编辑后,我能够在ARM处理器上启动完整域(domainManager,deviceManager,GPPdevice),并能够从运行在x86上的IDE连接到此运行域。在导出和重建我的波形组件并编辑其域配置文件后,我能够使用IDE成功启动一个非常小的三分量波形并对其进行控制。因此,在ARM上运行整个域可以正常工作。 但是我仍然无法启动ARM上的deviceManager并让它在x86上注册DomainManager(在编辑DCD以指向x86域之后,即运行带有两个节点的分布式域。它启动并说它正在注册domainManager,它必须部分成功,因为devMgr出现在域下的NamingService中,但是IDE从不在域中显示新的deviceManager。并且devMgr从不启动GPP设备。如果devMgr被杀死它会打印&#34;中断等待注册DomainManager&#34;,即使它已注册到命名服务,似乎DomainManager从未回复注册请求。