[USRP-users] X310 error could not create nirio_zero_copy transport

Дмитрий Михайличенко mdmikh at gmail.com
Mon Oct 30 12:36:23 EDT 2017


Hi,

I am trying to run OAI with X310 device connected through PCIe interface.
Although device probe and benchmark utility report no problems OAI fails
with the following error when initializing X310:

terminate called after throwing an instance of 'uhd::runtime_error'
  what():  RuntimeError: Could not create nirio_zero_copy transport. A
parameter to a function was not valid. This could be a NULL pointer, a bad
value, etc. (Error code -52005)

Calling stack:

Program received signal SIGABRT, Aborted.
0x00007ffff6213c37 in __GI_raise (sig=sig at entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
56      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) where
#0  0x00007ffff6213c37 in __GI_raise (sig=sig at entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007ffff6217028 in __GI_abort () at abort.c:89
#2  0x00007fffd68c9535 in __gnu_cxx::__verbose_terminate_handler() () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007fffd68c76d6 in ?? () from /usr/lib/x86_64-linux-gnu/
libstdc++.so.6
#4  0x00007fffd68c7703 in std::terminate() () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007fffd68c7922 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/
libstdc++.so.6
#6  0x00007fffd7279bbb in uhd::niusrprio::nirio_status_to_exception
(status=@0x7fffd7feb970: -52005, message="Could not create nirio_zero_copy
transport.")
    at /home/mikhaili/uhd/host/lib/transport/nirio/status.cpp:48
#7  0x00007fffd72dbf9e in nirio_zero_copy_impl::nirio_zero_copy_impl
(this=this at entry=0x7fffd1329230,
    fpga_session=<error reading variable: access outside bounds of object
referenced via synthetic pointer>, instance=instance at entry=6,
xport_params=..., __in_chrg=<optimized out>,
    __vtt_parm=<optimized out>) at /home/mikhaili/uhd/host/lib/
transport/nirio_zero_copy.cpp:235
#8  0x00007fffd72d7693 in uhd::transport::nirio_zero_copy::make
(fpga_session=..., instance=instance at entry=6, default_buff_args=...,
hints=...)
    at /home/mikhaili/uhd/host/lib/transport/nirio_zero_copy.cpp:463
#9  0x00007fffd713fba5 in x300_impl::make_transport (this=<optimized out>,
address=..., xport_type=uhd::usrp::device3_impl::TX_DATA, args=...)
    at /home/mikhaili/uhd/host/lib/usrp/x300/x300_impl.cpp:1163
#10 0x00007fffd70031c6 in uhd::usrp::device3_impl::get_tx_stream
(this=0x7fffd0042da0, args_=...) at /home/mikhaili/uhd/host/lib/
usrp/device3/device3_io_impl.cpp:775
#11 0x00007fffd6d0bdc8 in legacy_compat_impl::get_tx_stream
(this=0x7fffd0290ea0, args_=...) at /home/mikhaili/uhd/host/lib/
rfnoc/legacy_compat.cpp:295
#12 0x00007fffd6dcba47 in multi_usrp_impl::get_tx_stream
(this=0x7fffd0043780, args=...) at /home/mikhaili/uhd/host/lib/
usrp/multi_usrp.cpp:1309
#13 0x00007fffdc106598 in device_init (device=0x7ffff4e6b0c0,
openair0_cfg=0x1746400 <openair0_cfg>) at /home/mikhaili/oai_ue/targets/
ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp:879
#14 0x0000000000498178 in load_lib (device=device at entry=0x7ffff4e6b0c0,
openair0_cfg=0x1746400 <openair0_cfg>, cfg=cfg at entry=0x0, flag=flag at entry=0
'\000')
    at /home/mikhaili/oai_ue/targets/ARCH/COMMON/common_lib.c:109
#15 0x00000000004982d2 in openair0_device_load
(device=device at entry=0x7ffff4e6b0c0,
openair0_cfg=<optimized out>) at /home/mikhaili/oai_ue/targets/
ARCH/COMMON/common_lib.c:143
#16 0x000000000048e4ec in UE_thread (arg=0x7ffff4e2c010) at
/home/mikhaili/oai_ue/targets/RT/USER/lte-ue.c:657
#17 0x00007ffff79c0184 in start_thread (arg=0x7fffd7fff700) at
pthread_create.c:312
#18 0x00007ffff62daffd in clone () at ../sysdeps/unix/sysv/linux/
x86_64/clone.S:111

It looks like NiRio_Status_InvalidParameter error happens during creating
TX FIFOs. I see the following TX channels are created before the error:

$1 = {channel = 6, name = "TX FIFO 0", direction =
uhd::niusrprio::OUTPUT_FIFO, base_addr = 65024, depth = 1029, scalar_type =
uhd::niusrprio::RIO_SCALAR_TYPE_UQ, bitWidth = 64,
  integerWordLength = 64, version = 2}

$2 = {channel = 9, name = "TX FIFO 3", direction =
uhd::niusrprio::OUTPUT_FIFO, base_addr = 64832, depth = 1029, scalar_type =
uhd::niusrprio::RIO_SCALAR_TYPE_UQ, bitWidth = 64,
  integerWordLength = 64, version = 2}


$3 = {channel = 10, name = "TX FIFO 4", direction =
uhd::niusrprio::OUTPUT_FIFO, base_addr = 64768, depth = 1029, scalar_type =
uhd::niusrprio::RIO_SCALAR_TYPE_UQ, bitWidth = 64,
  integerWordLength = 64, version = 2}

$5 = {channel = 11, name = "TX FIFO 5", direction =
uhd::niusrprio::OUTPUT_FIFO, base_addr = 64704, depth = 1029, scalar_type =
uhd::niusrprio::RIO_SCALAR_TYPE_UQ, bitWidth = 64,
  integerWordLength = 64, version = 2}


Is anything wrong there? What could recommendations be to debug further?
The device works fine through 10G direct Ethernet.


thanks,
Dmitry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20171030/eb4bd2e1/attachment-0002.html>


More information about the USRP-users mailing list