RedHawk v2.1 设备 IDL 错误

RedHawk v2.1 Device IDL Error

我们在带有嵌入式 Linux 内核 3.14 的 Xynq7035 ARM COretex A9 上使用 RedHawk v2.1。我们的申请是SSB Tx/Rx SDR。所以波形由 3 种类型组成,一种是 SSB RX,两种是 SSB TX,三种是 CW TX。 HW设备有6个dataFloat端口和6个dataUlong端口,每个端口一共12个端口。启动程序如下。

#nodeBooter -D &
#nodeBooter -d /usr/lib/redhawk/sdr/dev/nodes/dev_trx_node/DeviceManager.dcd.xml &
#rh_start.py &

rh_start.py代码如下。

from ossie.utils import redhawk
import logging
logging.basicConfig()
domain_list = redhawk.scan()
dom = redhawk.attach(domain_list[0])
wave0 = dom.createApplication("/waveforms/rx_waveform/rx_waveform.sad.xml")
dom.devices[1].connect(wave0.comps[0], usesPortName='out_data_rx', providesPortName='in_data' )

连接设备和波形端口时出现错误。错误代码是

ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataFloat:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataFloat:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataFloat:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataUlong:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataUlong:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataUlong:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataFloat:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataFloat:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataFloat:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataUlong:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataUlong:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:BULKIO/dataUlong:1.0
ERROR:ossie.utils.model:Unable to find port description for IDL:CF/Port:1.0
ERROR:ossie.utils.model:Invalid port descriptor in scd for IDL:ExtendedEvent/MessageEvent:1.0enter code here

错误出现在我设备的所有端口和GPP 的所有端口上。我的设备是使用 RedHawk-IDE v2.1 创建的。 GPP 下载 v2.1 并交叉编译。 GPP.scd.xml 没有变化。 scd.xml 文件有误吗? scd.xml 文件中的设备端口部分如下。

<ports>
  <provides repid="IDL:BULKIO/dataFloat:1.0" providesname="in_data_cw">
    <porttype type="data"/>
  </provides>
  <uses repid="IDL:BULKIO/dataFloat:1.0" usesname="out_data_cw">
    <porttype type="data"/>
  </uses>
  <provides repid="IDL:BULKIO/dataFloat:1.0" providesname="in_data_rx">
    <porttype type="data"/>
  </provides>
  <uses repid="IDL:BULKIO/dataFloat:1.0" usesname="out_data_rx">
    <porttype type="data"/>
  </uses>
  <provides repid="IDL:BULKIO/dataFloat:1.0" providesname="in_data_tx">
    <porttype type="data"/>
  </provides>
  <uses repid="IDL:BULKIO/dataFloat:1.0" usesname="out_data_tx">
    <porttype type="data"/>
  </uses>
  <provides repid="IDL:BULKIO/dataUlong:1.0" providesname="in_cnt_cw">
    <porttype type="data"/>
  </provides>
  <uses repid="IDL:BULKIO/dataUlong:1.0" usesname="out_cnt_cw">
    <porttype type="data"/>
  </uses>
  <provides repid="IDL:BULKIO/dataUlong:1.0" providesname="in_cnt_rx">
    <porttype type="data"/>
  </provides>
  <uses repid="IDL:BULKIO/dataUlong:1.0" usesname="out_cnt_rx">
    <porttype type="data"/>
  </uses>
  <provides repid="IDL:BULKIO/dataUlong:1.0" providesname="in_cnt_tx">
    <porttype type="data"/>
  </provides>
  <uses repid="IDL:BULKIO/dataUlong:1.0" usesname="out_cnt_tx">
    <porttype type="data"/>
  </uses>
</ports>

应用程序本身可以运行,但您能告诉我们错误原因和解决方法吗?

根据第 1266 of model module init 行,IDL 库中似乎 IDL:BULKIO/dataFloat:1.0 不存在。检查路径中是否存在 IDL 库:$OSSIEHOME/share/idl。还要检查你的 scd 文件是否有类似的东西:

<interface name="ProvidesPortStatisticsProvider" repid="IDL:BULKIO/ProvidesPortStatisticsProvider:1.0"/>
    <interface name="updateSRI" repid="IDL:BULKIO/updateSRI:1.0"/>
    <interface name="dataFloat" repid="IDL:BULKIO/dataFloat:1.0">
      <inheritsinterface repid="IDL:BULKIO/ProvidesPortStatisticsProvider:1.0"/>
      <inheritsinterface repid="IDL:BULKIO/updateSRI:1.0"/>
    </interface>

在接口标签内。

提示:ports可以使用core-framework IDL,除了IDL:BULKIO,还可以用IDL:CF/Resource控制一个组件,IDL:CF/Device控制一个Device。您甚至可以使用端口获取域的引用。这样,您可以为 SSB(TX 和 RX)创建单个波形,实现适当的装配控制器,以指示波形的工作方式。

您使用的是 ADRV9361 (picozed sdr) 吗?如果是这样...您可以评估我的前端设备 AD936X_LIBIIO...您是如何在 Zynq REDHAWK 中嵌入(交叉编译)的?

IDL 库存在于 /usr/share/idl/ossie/BULKIO 中,而不是 $OSSIEHOME/share/idl,但 bio_daraUlog_idl.py 和 bio_dataFloat_idl.py 存在于 $OSSIEHOME/lib/python/bulkio/bulkioInterface 中。很抱歉忘记描述 "from bulkio.bulkioInterface import BULKIO" 。但是,如果没有此导入说明,则会出现上述错误。 我的 scd 文件的接口标签是:

<interfaces>
...............
    <interface name="dataFloat" repid="IDL:BULKIO/dataFloat:1.0">
      <inheritsinterface repid="IDL:BULKIO/ProvidesPortStatisticsProvider:1.0"/>
      <inheritsinterface repid="IDL:BULKIO/updateSRI:1.0"/>
    </interface>
    <interface name="ProvidesPortStatisticsProvider" repid="IDL:BULKIO/ProvidesPortStatisticsProvider:1.0"/>
    <interface name="updateSRI" repid="IDL:BULKIO/updateSRI:1.0"/>
    <interface name="dataUlong" repid="IDL:BULKIO/dataUlong:1.0">
      <inheritsinterface repid="IDL:BULKIO/ProvidesPortStatisticsProvider:1.0"/>
      <inheritsinterface repid="IDL:BULKIO/updateSRI:1.0"/>
    </interface>
</interfaces>

我想这包括你指出的。