myriadrf / LimeSuite

Driver and GUI for LMS7002M-based SDR platforms
https://myriadrf.org/projects/lime-suite/
Apache License 2.0
468 stars 184 forks source link

LimeSDR-Mini(SoapyLMS - C API Example): setSampleRate Segmentation fault #272

Closed cj1324 closed 5 years ago

cj1324 commented 5 years ago

code

    SoapySDRRange *ranges = SoapySDRDevice_getFrequencyRange(sdr, SOAPY_SDR_RX, 0, &length);
    printf("Rx freq ranges: ");
    for (size_t i = 0; i < length; i++) printf("[%g Hz -> %g Hz], ", ranges[i].minimum, ranges[i].maximum);
    printf("\n");                                               
    free(ranges);                                               

    //apply settings                                                                                                            
    if (SoapySDRDevice_setSampleRate(sdr, SOAPY_SDR_RX, 0, 1e7) != 0)
    {
        printf("setSampleRate fail: %s\n", SoapySDRDevice_lastError());
    }                                                                                                                           
    if (SoapySDRDevice_setFrequency(sdr, SOAPY_SDR_RX, 0, 912.3e6, NULL) != 0)
    {
        printf("setFrequency fail: %s\n", SoapySDRDevice_lastError());
    }    
Found device #0: addr=24607:1027, driver=lime, label=LimeSDR Mini [USB 2.0] , media=USB 2.0, module=FT601, name=Li
meSDR Mini, serial={????},      
[INFO] Make connection: 'LimeSDR Mini [USB 2.0] {????}'
[DEBUG] Claimed Interface
[DEBUG] Estimated reference clock 40.0019 MHz
[INFO] Reference clock 40.00 MHz 
[INFO] Device name: LimeSDR-Mini 
[INFO] Reference: 40 MHz
[DEBUG] INT 57, FRAC 385875, DIV_OUTCH_CGEN 18
[DEBUG] VCO 2334.72 MHz, RefClk 40.00 MHz
[DEBUG] csw 155; interval [152, 159]
[DEBUG] INT 57, FRAC 385875, DIV_OUTCH_CGEN 18
[DEBUG] VCO 2334.72 MHz, RefClk 40.00 MHz
[DEBUG] csw 155; interval [152, 159]
[DEBUG] M=160, N=4, Fvco=614.400 MHz
[DEBUG] M=160, N=4, Fvco=614.400 MHz
[INFO] LMS7002M calibration values caching Disable
[DEBUG] INT 59, FRAC 0, DIV_OUTCH_CGEN 14
[DEBUG] VCO 2400.00 MHz, RefClk 40.00 MHz
[DEBUG] csw 170; interval [167, 174]
[DEBUG] M=195, N=3, Fvco=1300.000 MHz
[DEBUG] M=195, N=3, Fvco=1300.000 MHz
[DEBUG] SoapyLMS7::setGain(Rx, 0, LNA, 0 dB)
[DEBUG] Actual RxLNA[0] gain 0 dB
[DEBUG] SoapyLMS7::setGain(Tx, 0, PAD, 0 dB)
[DEBUG] Actual TxPAD[0] gain 0 dB
Hardware Info: boardSerialNumber={????}, firmwareVersion=6, gatewareVersion=1.30, hardwareVersion=2, protocolVersion=1
Channel INFO RX [0] :  
Rx antennas: NONE, LNAH, LNAL_NC, LNAW, Auto, 
Rx gains: TIA, LNA, PGA,                                        
Rx freq ranges: [0 Hz -> 3.8e+09 Hz], 
[DEBUG] INT 63, FRAC 0, DIV_OUTCH_CGEN 7
[DEBUG] VCO 2560.00 MHz, RefClk 40.00 MHz
[DEBUG] csw 198; interval [195, 202]
[DEBUG] INT 63, FRAC 0, DIV_OUTCH_CGEN 7
[DEBUG] VCO 2560.00 MHz, RefClk 40.00 MHz
[DEBUG] csw 198; interval [195, 202]
[DEBUG] M=130, N=1, Fvco=1300.000 MHz
[DEBUG] M=130, N=1, Fvco=1300.000 MHz
[DEBUG] INT 87, FRAC 241172, DIV_LOCH 2, EN_DIV2_DIVPROG 1
[DEBUG] VCO 7298.40 MHz, RefClk 40.00 MHz
[DEBUG] ICT_VCO: 180
[DEBUG] TuneVCO(SXR) - VCO too low
[DEBUG] VCOL : csw=0 tune fail
[DEBUG] ICT_VCO: 180
[DEBUG] TuneVCO(SXR) - VCO too low
[DEBUG] VCOM : csw=0 tune fail
[DEBUG] ICT_VCO: 180
[DEBUG] csw=64  cmphl=0
[DEBUG] csw=96  cmphl=0
[DEBUG] csw=112 cmphl=0
[DEBUG] csw=120 cmphl=0
[DEBUG] csw=124 cmphl=0
[DEBUG] csw=126 cmphl=0
[DEBUG] csw=127 cmphl=0
[DEBUG] Failed to lock
[DEBUG] csw=192 cmphl=3
[DEBUG] csw=160 cmphl=0
[DEBUG] csw=176 cmphl=2
[DEBUG] csw=184 cmphl=3
[DEBUG] csw=180 cmphl=2
[DEBUG] csw=182 cmphl=2
[DEBUG] csw=183 cmphl=2
[DEBUG] CSW: lowest=161, highest=183, selected=172
[DEBUG] cmphl=2
[DEBUG] VCOH : csw=172 tune ok
[DEBUG] Selected: VCOH
[INFO] Selected RX path: LNAW
Segmentation fault (core dumped)

GDB info

(gdb) backtrace                                                                                                                 
#0  0x00007ffff74cf59a in std::local_Rb_tree_decrement (__x=0x55555556f120)                                                     
    at /var/tmp/portage/sys-devel/gcc-8.3.0-r1/work/gcc-8.3.0/libstdc++-v3/src/c++98/tree.cc:97                                 
#1  0x00007ffff7ead731 in std::_Rb_tree<unsigned short const, std::pair<unsigned short const, lime::LMS7002M_RegistersMap::Regis
ter>, std::_Select1st<std::pair<unsigned short const, lime::LMS7002M_RegistersMap::Register> >, std::less<unsigned short const>,
 std::allocator<std::pair<unsigned short const, lime::LMS7002M_RegistersMap::Register> > >::_M_get_insert_hint_unique_pos(std::_
Rb_tree_const_iterator<std::pair<unsigned short const, lime::LMS7002M_RegistersMap::Register> >, unsigned short const&) ()      
   from /usr/local/lib/libLimeSuite.so.19.04-1                                                                                  
#2  0x00007ffff7ead426 in lime::LMS7002M_RegistersMap::SetValue(unsigned char, unsigned short, unsigned short) ()               
   from /usr/local/lib/libLimeSuite.so.19.04-1                                                                                  
#3  0x00007ffff7eaf2a8 in lime::LMS7002M::SPI_read_batch(unsigned short const*, unsigned short*, unsigned short) ()             
   from /usr/local/lib/libLimeSuite.so.19.04-1                                                                                  
#4  0x00007ffff7eaf52c in lime::LMS7002M::SPI_read(unsigned short, bool, int*) () from /usr/local/lib/libLimeSuite.so.19.04-1   
#5  0x00007ffff7eb08ed in lime::LMS7002M::Modify_SPI_Reg_bits(unsigned short, unsigned char, unsigned char, unsigned short, bool
) () from /usr/local/lib/libLimeSuite.so.19.04-1                                                                                
#6  0x00007ffff7ee7626 in lime::LMS7_LimeSDR_mini::SetRate(double, int) () from /usr/local/lib/libLimeSuite.so.19.04-1          
#7  0x00007ffff7f4a7d5 in SoapyLMS7::setSampleRate(int, unsigned long, double) ()                                               
   from /usr/local/lib/SoapySDR/modules0.8/libLMS7Support.so                                                                    
#8  0x00007ffff7fb6bea in SoapySDRDevice_setSampleRate () from /usr/local/lib64/libSoapySDR.so.0.8                              
#9  0x0000555555555928 in main () at sdrexample.c:79                                                                            
(gdb) quit        
cj1324 commented 5 years ago

Sorry, fixed.