Hi Yan,

Throwing an error (exception?) is a bit drastic. A simple printf or
cout should be sufficient...
Yup. That seems to be controlling the VCO. That should be in your daugtherboard.
What daugtherboard are you using?
If you are using it and it doesn;t print/err then you should be
looking elsewhere...
Are you sure you are using the ad9361 driver?

HTH
Nikos

On Fri, Jul 29, 2022 at 4:41 PM yan zhang <yanzhan...@gmail.com> wrote:
>
> Hi, Nikos,
>
> Thanks for your reply! I will try to learn and install ctag. Here is what I 
> further find:
>
> Following your directions, I can find the _tx_freq variable in 
> "uhd/host/lib/usrp/common/ad9361_driver/ad9361_device.h".
> I assume that the " _tune_helper() " function implemented in 
> "uhd/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp" is the underlying 
> function that tunes the ad9361 front end.
> The problem is that I modify the _tune_helper()  by throwing a uhd error at 
> the beginning of the function, however after I re-compile the modified uhd 
> and re-install it and then re-run my tuning loop, I didn't find the error 
> message I throw in the  _tune_helper() .
>
> Does that mean the E312 uhd does not run the  _tune_helper() function in  
> "uhd/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp"?
> I really would like to find where the underlying tuning source code is and I 
> need to turn off the calibration procedure in the tuning code to speed up the 
> tuning.
>
> Thanks,
> Yan
>
>
>
>
>
>
>
> On Thu, Jul 28, 2022 at 6:48 PM Nikos Balkanas <nbalka...@gmail.com> wrote:
>>
>> Hi,
>>
>> _tx_freq is an intermediate frequency.
>> It is defined in:
>> uhd/host/lib/usrp/common/ad9361_driver/ad9361_device.h
>> If you need to modify uhd, you really need to install ctags, and grep
>> the sources...
>>
>> HTH
>> Nikos
>>
>> On Thu, Jul 28, 2022 at 10:42 PM <yanzhan...@gmail.com> wrote:
>> >
>> > Hi, all,
>> >
>> >
>> >
>> > I have a E312 device and I just find that the tuning speed of E312 is very 
>> > slow (~150ms) for each tuning. Thus I would like to modify the underlying 
>> > tuning source code in the uhd software architecture.
>> >
>> >
>> >
>> > Here is what I found:
>> >
>> >
>> >
>> > I first create a multi_usrp object:
>> >
>> > uhd::usrp::multi_usrp::sptr usrp = 
>> > uhd::usrp::multi_usrp::make(device_args);
>> >
>> >
>> >
>> >
>> >
>> > then I tune the usrp by running a loop:
>> >
>> >
>> >
>> > int count = 200;
>> > for(int a = 0; a < count; a++) {
>> >         uhd::tune_request_t tune_request(600e6 + a*10e6);
>> >
>> >         usrp->set_rx_freq(tune_request, 0);
>> >         usrp->set_tx_freq(tune_request, 0);
>> > }
>> >
>> >
>> >
>> > Basically, the loop tunes the frequency from 600MHz to 2.6 GHz with a step 
>> > size of 10 MHz. The 200 tunings take 52 seconds, which is pretty slow.
>> >
>> >
>> >
>> > Thus, I traced the call stack from usrp->set_rx_freq(tune_request, 0). 
>> > Here is what I found:
>> >
>> > usrp->set_rx_freq(tune_request, 0);  calls the method set_tx_frequency() 
>> > in uhd/host/lib/usrp/dboard/e3xx/e3xx_radio_control_impl.cpp
>> >
>> > then the method set_tx_frequency() in 
>> > uhd/host/lib/usrp/dboard/e3xx/e3xx_radio_control_impl.cpp calls the tune() 
>> > method in uhd/host/lib/usrp/dboard/e3xx/e3xx_ad9361_iface.cpp
>> >
>> > then the tune() method in 
>> > uhd/host/lib/usrp/dboard/e3xx/e3xx_ad9361_iface.cpp calls the method 
>> > set_tx_frequency() in uhd/host/lib/rfnoc/radio_control_impl.cpp.
>> >
>> >
>> >
>> > The conclusion I have reached so far is the underlying tuning method is in 
>> >  uhd/host/lib/rfnoc/radio_control_impl.cpp:
>> >
>> >
>> >
>> > double radio_control_impl::set_tx_frequency(const double freq, const 
>> > size_t chan)
>> > {
>> >     std::lock_guard<std::mutex> l(_cache_mutex);
>> >     return _tx_freq[chan] = freq;
>> > }
>> >
>> >
>> >
>> > Then I just got stuck here, what is the _tx_freq[chan] ? I just can not 
>> > find more.
>> >
>> >
>> >
>> >
>> >
>> > What I want to do is to modify the underlying ad9361 driver, so that when 
>> > tuning a frequency, I can bypass the calibration in the ad9361 to speed up 
>> > the tuning speed.
>> >
>> >
>> >
>> > Can anyone point me to 1.where I can find the source code for tuning for 
>> > the E312 with uhd 4.0 or 2. how to use mpm to get low-level access to 
>> > ad9361 so that I can write my own tuning method for ad9361 ?
>> >
>> >
>> >
>> > Thanks,
>> >
>> > Yan
>> >
>> > _______________________________________________
>> > USRP-users mailing list -- usrp-users@lists.ettus.com
>> > To unsubscribe send an email to usrp-users-le...@lists.ettus.com
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to