Background
--------------------------
I am using a B205mini connected to a Jetson Xavier AGX (8 Nvidia Carmel CPU
cores) with 16GB RAM and set to the max power profile (2.26GHz CPU) via USB
3.0. The Jetson is running Ubuntu 18.04.2 LTS (GNU/Linux 4.9.140-tegra
aarch64). I am using 'GNU C++ version 7.4.0; Boost_106501;
UHD_3.15.0.0-124-geb448043'

My sample rate is 24Msps. Eventually I want to try to use the GPU to
process samples.
I had one pthread for receiving the samples and another pthread for
processing the samples. I used a std::queue with mutexes to send samples
between the threads. But I was getting overflow errors. I commented out my
sample processing and just focused on the one thread getting the samples
(rx_stream->recv() in a while loop) without overflowing. I should also add
that I am incrementing the rx freq by 24 MHz and changing the tuning
frequency (usrp->set_rx_freq()) every 16 packets. (I believe that this freq
changing is blocking the recv() from being called often enough to make sure
that my app keeps up with samples the USRP is trying to give it)

Errors From recv_frame_size/num_recv_frame Settings?
------------------------------------------------------------------
I was hoping to buy myself some leeway with the delay involved in changing
the RX freq? I have seen various responses on this mailing list and in the
USRP documentation about
setting the recv_frame_size and num_recv_frames so that the USB is able to
use a larger buffer. get_max_num_samps() returns 2040 for me. My cpu_format
is fc32 and my otw_format is sc12.

I tried recv_frame_size=16320, num_recv_frames=512
and still got the 'ERROR_CODE_OVERFLOW'

Then I tried recv_frame_size=16320, num_recv_frames=1024 ("Case 1")
and immediately got this error:
terminate called after throwing an instance of
'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error>
>'
  what():  boost: mutex lock failed in pthread_mutex_lock: Invalid argument
Aborted

Then I tried num_recv_frames=1024 ("Case 2")
and immediately got this error:
terminate called after throwing an instance of 'uhd::io_error'
  what():  EnvironmentError: IOError: usb rx6 transfer status:
LIBUSB_TRANSFER_ERROR
Aborted

"The Point"
----------------------------
I don't understand why setting the recv_frame_size to 16320 appears to
cause causes a 'failed mutex lock', but leaving it out causes a USB
transfer error.

Glenn Hazelwood
-- 
Diftor heh smusma
-Famous Vulcan Phrase ;)
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to