2017-10-16 100 views
0

我們在Xynq7035 ARM COretex A9上使用帶有嵌入式Linux內核3.14的RedHawk v2.1。我們的應用是SSB Tx/Rx SDR。所以波形由3種類型組成,一種是SSB RX,兩種是SSB TX,三種是CW TX。硬件設備有6個dataFloat端口和6個dataUlong端口,每個端口共有12個端口。啓動程序如下。RedHawk v2.1設備IDL錯誤

#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> 

該應用程序本身的工作,但你能告訴我們錯誤的原因和解決方法?

回答

0

看起來IDL:BULKIO/dataFloat:1.0不存在於根據行1266 of model module init的IDL庫中。檢查路徑中是否存在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> 

裏面的interfaces標記。

小費:端口可以使用核心框架的IDL,除了IDL:BULKIO,您可以使用IDL:CF/Resource控制組件,IDL:CF/Device來控制設備。您甚至可以使用端口獲得域的參考。這樣,您可以爲SSB(發送和接收)創建一個單一的波形,實現一個合適的裝配控制器,以指定波形的工作方式。

您使用的是ADRV9361(picozed sdr)嗎?如果是的話......你可以評估我的前端設備AD936X_LIBIIO ......你是如何嵌入(交叉編譯)在Zynq REDHAWK?

+0

我們正在使用自己的SCA設備。我們的評估板是使用Zynq7035自己設計的。硬件接口驅動程序。編譯環境是YOCTO項目。 –

+0

您是否熟悉GeonTech的工作?他們爲yocto提供[redhawk meta層](https://github.com/Geontech/meta-redhawk-sdr/)。看看[這一行](https://github.com/RedhawkSDR/framework-core/blob/master/src/base/framework/python/ossie/utils/model/__init__.py#L51)它尋找IDL lib在OSSIEHOME路徑中。這可能是問題。 –

+0

謝謝你的建議。我錯誤地將/ usr/share中的符號鏈接誤認爲/ usr/lib/redhawk/core/share。當我做正確的鏈接,錯誤消失。非常感謝。 –

0

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> 

我認爲,包括你的指出。