【问题标题】:Component uses a device - failed to allocateCapacity组件使用设备 - 无法分配容量
【发布时间】:2013-11-22 02:02:55
【问题描述】:

我使用的是 Redhawk 1.9。我创建了一个虚拟组件使用的虚拟设备。我有一个包含虚拟设备的虚拟节点。具有虚拟分量的虚拟波形。我有两个问题:

  • 在设备管理器控制台(从目标 SDR 在 IDE 中启动)我收到警告消息,表明设备无法连接到 IDM 通道。我检查以确保命名和事件服务仍然启动。我不确定要追查这个问题。我启动了设备管理器并在跟踪级别进行了日志记录,但我没有看到任何可以帮助我的东西。

INFO:DeviceManager - 使用 /nodes/DummyNode/DeviceManager.dcd.xml 启动设备管理器 INFO:DeviceManager_impl - 连接到域管理器 REDHAWK_DEV/REDHAWK_DEV 信息:DeviceManager - 启动 ORB! WARN:Device_impl - 无法连接到 IDM 通道 INFO:DeviceManager_impl - 在设备管理器 DummyNode 上注册设备 DummyDevice_1 INFO:DeviceManager_impl - 在设备管理器 DummyNode 上初始化设备 DummyDevice_1 INFO:DeviceManager_impl - 在域管理器上注册设备 DummyDevice_1

  • 当我从 IDE 启动 Dummy Waveform 时,我收到 invalidCapacity 错误消息。虚拟组件使用虚拟设备。它查找属性 device_kind = dummy_device_kind。我覆盖了 DummyDevice 中的 allocateCapacity 方法以返回 true。我在 python 命令行中检查了 dummyDevice,并且 allocateCapacity 返回了 true。

错误信息:

NFO:DomainManager_impl - Installing application /waveforms/DummyWaveform/DummyWaveform.sad.xml
DEBUG:ComponentInfo - Loading component properties from /components/DummyComponent/DummyComponent.prf.xml
DEBUG:ComponentInfo - Parsing component properties
DEBUG:ApplicationFactory_impl - UsesDevice Impl Vec of length 1
DEBUG:ComponentImplementationInfo - Attempting to match allocation properties
DEBUG:ComponentImplementationInfo - Trying to match for property id DCE:cdc5ee18-7ceb-4ae6-bf4c-31f983179b4d
DEBUG:ComponentImplementationInfo -  It's a matching prop
DEBUG:ApplicationFactory_impl - Trying to find the device
DEBUG:ApplicationFactory_impl - Device Allocation Failed.. need to clean up
DEBUG:ApplicationFactory_impl - --FAILED-- Allocation of component's implementation cpp of DummyComponent_1. Undoing allocate devices
ERROR:ApplicationFactory_impl - The following CORBA exception occurred: InvalidCapacity while creating the application
INFO:DomainManager_impl - Uninstalling application DCE:8d0a6e63-24f6-4766-9a3f-7db7fd516078

【问题讨论】:

  • 分配错误失败,因为我没有定义以下分配属性:processor_name、os_name 和 os_version。 IDE 创建组件时,默认情况下需要这些属性。我能够通过使用跟踪级别的调试来解决这个问题。
  • 我仍在研究为什么我的设备无法连接到 IDM 频道。
  • 通过在节点中包含 GPP 来解决分配问题。请参阅以下问题的答案:“组件无法分配不是可执行设备的设备”2012 年 12 月 9 日
  • IDM 频道问题在后面的问题中得到解答:“无法连接到 IDM_Channel” - 2013 年 12 月 2 日

标签: redhawksdr


【解决方案1】:

至于您的事件通道问题,请仔细检查您的域管理器的启动消息。例如,当我在没有运行 omniEvents 的情况下启动域管理器时,我看到:

$ nodeBooter -D
INFO:DomainManager - Starting Domain Manager
WARN:EventChannelSupport - Event channel REDHAWK_DEV.ODM_Channel not created
WARN:EventChannelSupport - Event channel REDHAWK_DEV.IDM_Channel not created
INFO:DomainManager - Starting ORB!

如果omniEvents 显示为已启动,但域在创建事件通道时似乎仍然存在问题,您可以尝试重置omniEvents。请参阅文档的Appendix H, Section 6

如果您没有看到来自域管理员的警告消息,那么我会使用 nameclt 来验证事件通道是否显示在您的域中,例如:

$ nameclt list REDHAWK_DEV
ODM_Channel
IDM_Channel
REDHAWK_DEV

您还可以使用 eventviewer 来帮助调试/查看事件。根据事件通道是否已注册,您会看到:

$ eventviewer REDHAWK_DEV IDM_Channel
Receiving events. Press 'enter' key to exit

如果一切正常,或者如果没有:

$ eventviewer REDHAWK_DEV IDM_Channel
No such channel exists

【讨论】:

  • 事件通道 IDM_Channel 似乎工作正常。我注意到当我将 GPP 设备放入我的虚拟节点时,我没有收到此消息。因此,我尝试使用 C++ 和 Python 实现从 IDE 创建一个默认设备(所有内容的默认设置)。将它们放入由 IDE 创建的节点(所有默认设置)时,C++ 版本有此警告,而 python 版本没有。
  • 我将 USRP 设备放入了虚拟节点,我收到了与该设备相同的警告消息。
  • INFO:DeviceManager - 使用 /nodes/DummyNode/DeviceManager.dcd.xml 启动设备管理器 INFO:DeviceManager_impl - 连接到域管理器 REDHAWK_DEV/REDHAWK_DEV INFO:DeviceManager - 启动 ORB! linux; GNU C++ 版本 4.4.7 20120313(红帽 4.4.7-3);升压_104100; UHD_003.005.004-143-gde4ce9ea WARN:Device_impl - 无法连接到 IDM 通道 INFO:DeviceManager_impl - 在设备管理器 DummyNode 上注册设备 USRP_UHD_1 信息:DeviceManager_impl - 在设备管理器 DummyNode 上初始化设备 USRP_UHD_1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
  • 2022-10-22
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多