On 16/11/2023 15:50, alvin.beg...@gd-ms.com wrote:
I’m running the SW directly on the ARM of the X410, so that should
rule out network latency.
The ARM on the X410 is (AFAIR) dual-core, and not very speedy. Even
when you're talking locally, you
still go through the network stack (localhost). So even though
there's no actual network *hardware*
involved, you're still paying the network stack costs.
When using the UHD API on the ARM does it still go through the MPM?
Yes, as far as I know.
Is there a way to bypass MPM?
Well, all the source code is freely available--so you could figure out
how MPM turns those calls into actual "knobs"
being tweaked on the hardware, and tweak those knobs yourself in your
own code.
*From:* Marcus D. Leech <patchvonbr...@gmail.com>
*Sent:* Thursday, November 16, 2023 1:36 PM
*To:* usrp-users@lists.ettus.com
*Subject:* [USRP-users] Re: peek32/poke32 slow
*External E-mail *--- CAUTION: This email originated from outside
GDMS. Do not click links or open attachments unless you recognize the
sender and know the content is safe.
On 16/11/2023 15:11, Alvin.Begaye--- via USRP-users wrote:
Hi I am using an x410, and running through the init_gain_block
example, using the high resolution timer I am getting these
results, which seem really slow, is there a faster way to
read/write registers?
I believe that on the X410, operations like that actually end up going
through the MPM process that is running in the Linux PS
slice on the FPGA.
One can expect to pay various "latency tolls". There's
app-land-to-kernel latency on your host, latency of the network stack,
latency of the network media itself, and then all of those things in
reverse order on the X410 side, since MPM is just a piece
of software running as a normal app process in the Linux PS on the X410.
It has never been the case that what amounts to "session parameter"
settings were intended to be super-fast, because in general,
those things happen at a MUCH MUCH slower pace than the signals
themselves.
Time 481.835 micro seconds.
Gain value read/write loopback successful!
Here is the code.
t1 = high_resolution_clock::now();
gain_block->set_gain_value(new_gain_value);
const uint32_t gain_value_read = gain_block->get_gain_value();
t2 = high_resolution_clock::now();
delta_time = duration_cast<duration<double>>(t2-t1);
std::cout << std::flush ;//<< std::endl;
std::cout << "Time " << delta_time.count()*1000000.0 << " micro
seconds." << std::endl;
_______________________________________________
USRP-users mailing list --usrp-users@lists.ettus.com
To unsubscribe send an email tousrp-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