Jonathon, Marcus

Usually, when something goes wrong, I'm getting an error like this:

[x300_fw_ctrl.cpp:53] [X300] 192.168.40.2: x300 fw communication
failure #1
EnvironmentError: IOError: x300 fw poke32 - reply timed out
[1]    193622 abort (core dumped)

Marcus, I'm not sure which part of the code you might find interesting, this is 
the portion of my project that interfaces with a radio, for reference:
https://u.pcloud.link/publink/show?code=XZ6jaIXZnTM8V7fAKtLbjS7NAlhtxjQm3Dl7

Dustin

On 11/23/21 15:02, Jonathon Pendlum wrote:
Hi Dustin,

Can you provide the error message?

Jonathon

On Tue, Nov 23, 2021 at 2:20 PM Dustin Widmann <dw...@virginia.edu> wrote:

    Hi list,

    I occasionally, unpredictably, get FPGA-related errors. Usually some
    sort of FPGA timeouts, so I have to reset the USRP after these
    errors,
    which is rather inconvenient.

    The software is C++ using the UHD 4 multi-usrp API.

    Without going into too much detail, I wonder if there is anything
    particular to my *approach* that could make things more prone to FPGA
    errors of any sorts. I'm also curious about the different
    “stream_modes”
    that are available, their pros and cons / use cases, and more
    particularly if I'm really using the one best suited to my use case.

    Before describing that, this is what I'm trying to do. It's fairly
    simple, but I'm trying to make it tune, collect, and then tune
    again as
    quickly as possible without leaving my cozy C++ bed. It's currently
    doing this >100 times per second.
    * transmits continuously
    * in a loop:
    *** tune the transmitter and receivers and set their gain:
    *** receive a fixed number of samples

    How I'm currently going about it:


    In main object/thread
    * init the radio
    * create a tx object and move it to a new thread
    * give the tx object a streamer
    * tell the tx object to start streaming
    * create a rx object and move it to a new thread
    * give the rx object a streamer
    * tell the rx object to start streaming
    * in a loop (forever):
    *** clear command time
    *** set command time to now()+0.004
    *** set_rx_freq to next frequency for both channels
    *** set_tx_freq to next frequency for channel 0
    *** set the rx gain
    *** set the tx gain
    *** sleep for 4ms
    *** ask the rx object to save some samples

    in tx object/thread
    * in a loop (until asked to stop by main)
    *** call send on the streamer with max_num_samps samples from a fixed
    waveform
    * when killed, send an empty end_of_burst

    in rx object/thread
    * issue STREAM_MODE_START_CONTINUOUS, starting 0.25 in the
    future/_restart
    * in a loop (until asked to stop by main)
    *** recv  max_num_samps from the streamer
    *** check for/handle errors if they occur (often do at the start
    of the
    stream)
    *** copy the samples  if currently collecting, else discard them
    * when killed, issue STREAM_MODE_STOP_CONTINOUS

    I can/will provide more detail/code/etc, but that's not necessarily
    relevant to the *approach* I wouldn't think. To reiterate the
    question,
    I want to know if there is anything about the approach that would
    make
    FPGA related errors likely.

    -Dustin

    _______________________________________________
    USRP-users mailing list -- usrp-users@lists.ettus.com
    To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Attachment: OpenPGP_0xCD731811BAE2BAF5.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

_______________________________________________
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