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