[USRP-users] SEGFAULT using Gnuradio/uhd and RFNoC

Martin Braun martin.braun at ettus.com
Mon Oct 23 17:53:31 EDT 2017


Simon,

the E310 can't support rates > 10 Msps into the ARM. The idea of RFNoC
is to offload the signal processing into the FPGA, so the ARM core
doesn't have to do the signal processing.

As for your segfault, the stack trace is not really useful -- generally
a clue that there's a mis-linking going on. Can you confirm that you
were using the correct SDK for the filesystem you're running? Also, how
did you do the cross-compile?

Can you try ldd to figure out if your UHD is picking up the correct .so
files?

Thanks,
Martin

On 10/05/2017 03:25 PM, Simon Méra via USRP-users wrote:
> Hi,
> For my project, I have to use an Ettus e310 at high rates (> 10MSPs). With the default settings, I’m not able to go further than 2MSPs, and was trying to use RFNoC to avoid using the DUC (I’ve got UAL errors, so I thought using directly the radio avoiding the upsampling, giving that I have a signal at 10MSPs or more). 
> 
> After cross-compiling, I’m able to see my device using uhd_usrp_probe, running the given example, but using whatever scripts generated by gnuradio give me this output : 
> 
> 	[INFO] [UHDlinux; GNU C++ version 4.9.2; Boost_105700; UHD_4.0.0.rfnoc-devel-369-g1908672f] 
> 	[INFO] [E300] Loading FPGA image: /home/root/usr/usr/share/uhd/images/usrp_e310_fpga.bit...
> 	[INFO] [E300] FPGA image loaded
> 	[INFO] [E300] Detecting internal GPSDO 
> 	.... [INFO] [E300] GPSDO found
> 	[INFO] [E300] Initializing core control (global registers)...
> 
> 	[INFO] [E300] Performing register loopback test... 
> 	[INFO] [E300] Register loopback test passed
> 	[INFO] [RFNOC RADIO] Register loopback test passed
> 	[INFO] [RFNOC RADIO] Register loopback test passed
> 	[WARNING] [RFNOC] [0/fosphor_0] defines 2 input buffer sizes, but 1 input ports
> 	[INFO] [AD936X] Performing CODEC loopback test... 
> 	[INFO] [AD936X] CODEC loopback test passed
> 	[INFO] [AD936X] Performing CODEC loopback test... 
> 	[INFO] [AD936X] CODEC loopback test passed
> 	[INFO] [CORES] Performing timer loopback test... 
> 	[INFO] [CORES] Timer loopback test passed
> 	Segmentation fault
> 
> gdb give this information about the segfault : 
> 
> 	Program received signal SIGSEGV, Segmentation fault.
> 	memcmp_common_alignment (len=<optimized out>, srcp2=<optimized out>, srcp1=7221248) at memcmp.c:165
> 	165	      a0 = ((op_t *) srcp1)[0];
> 
> The stack at the segfault is : 
> 
> 	#0  memcmp_common_alignment (len=<optimized out>, srcp2=<optimized out>, 
> 	    srcp1=<optimized out>) at memcmp.c:177
> 	#1  __GI_memcmp (s1=<optimized out>, s2=<optimized out>, len=<optimized out>)
> 	    at memcmp.c:343
> 	#2  0xb64b4618 in compare (__n=<optimized out>, __s2=<optimized out>, 
> 	    __s1=<optimized out>)
>  	  at /usr/src/debug/gcc-runtime/4.9.2-r0/gcc-4.9.2/build.arm-oe-linux-gnueabi.arm-oe-linux-gnueabi/arm-oe-linux-gnueabi/libstdc++-v3/include/bits/char_traits.h:259
> 	#3  std::string::compare (this=this at entry=0x6620c8, __str=...)
>  	  at /usr/src/debug/gcc-runtime/4.9.2-r0/gcc-4.9.2/build.arm-oe-linux-gnueabi.arm-oe-linux-gnueabi/arm-oe-linux-gnueabi/libstdc++-v3/include/bits/basic_string.h:2250
> 	#4  0xb28cadcc in operator< <char, std::char_traits<char>, std::allocator<char> > (__rhs=..., __lhs=...)
> 	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/basic_string.h:2590
> 	#5  operator() (this=<optimized out>, __y=..., __x=...)
> 	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/stl_function.h:371
> 	#6  _M_lower_bound (this=<optimized out>, __k=..., __y=<optimized out>, 
> 	   __x=0x6620b8)
> 	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/incl---Type <return> to continue, or q <return> to quit—
> ude/c++/4.9.2/bits/stl_tree.h:1261
> 	#7  lower_bound (__k=..., this=0xb2926658 <global_block_registry>)
> 	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/stl_tree.h:927
> 	#8  lower_bound (__x=..., this=0xb2926658 <global_block_registry>)
> 	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/stl_map.h:902
> 	#9  std::map<std::string, std::map<long, gr::basic_block*, std::less<long>, std::allocator<std::pair<long const, gr::basic_block*> > >, std::less<std::string>, std::allocator<std::pair<std::string const, std::map<long, gr::basic_block*, std::less<long>, std::allocator<std::pair<long const, gr::basic_block*> > > > > >::operator[] (this=this at entry=0xb2926658 <global_block_registry>, __k=...)
>  	  at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/stl_map.h:496
> 
> (The full stack is 46 lines)
> 
> 
> Is the idea of using RFNoC to emit at higher rates a good idea ? 
> If yes, how can I resolve the SEGFAULT ? Where does it come ? 
> 
> Regards,
> Simon
> 
> 
> _______________________________________________
> USRP-users mailing list
> USRP-users at lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
> 





More information about the USRP-users mailing list