| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This will print the currently-used GPIO bank's name before starting the
test.
|
|
|
|
|
|
| |
- Fixes issues with test_messages_test (it had inverted the pass/fail
condition)
- Improve Pylint scores in affected files
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes warnings such as this during devtest:
/home/mbr0wn/src/uhddev/host/tests/devtest/uhd_test_base.py:112:
ResourceWarning: unclosed file <_io.TextIOWrapper
name='./results_x300_F457AD.log' mode='r' encoding='UTF-8'>
self.results = yaml.safe_load(open(self.results_file).read()) or {}
/path/to/uhd/host/tests/devtest/uhd_test_base.py:150:
ResourceWarning: unclosed file <_io.TextIOWrapper
name='./results_x300_F457AD.log' mode='w' encoding='UTF-8'>
yaml.dump(self.results, default_flow_style=False))
ok
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the burst ACK test, test_messages would send 3 packets. However,
that assumes that the underlying link is fast enough to send three
packets in time, and some devices are hard to operate without underruns
without also specifying a start-of burst timestamp. Often, test_messages
would report that no ACK was received, but instead, an underrun was
received.
test_messages also doesn't need to send three packets. The three packets
came from the "start of burst" flag, which no device in UHD supports.
The change is thus to send a single packet with an EOB marker for the
burst ACK test. This will work regardless of the link speed and CPU
power.
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove superfluous INFO logging
- Improve formatting in many places
- Improve Pylint score in various places
- Add tear_down to DB object
- Simplify custom EEPROM code for E310
- Fix time source selection code
- Remove references to GPS_CTRL and GPS_STATUS (are E320 only)
- Move clock source control out of MboardRegs object
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Many small cleanups:
- Fix copyright headers
- Fix superfluous imports
- Pull some constants out of classes where appropriate
- Fix formatting
- Improve/fix some docstrings
- Disable specific Pylint warnings where appropriate
- Global catches use BaseException instead of Exception
- Don't use len() for empty checks
- Make sure to declare all self attributes in __init__ (note: this is
particularly of interest for E310, becuase its regular init happens
outside of __init__)
- Compacted some E310 code that had multi-DB checks
|
|
|
|
|
| |
This removes the token requirement for get_proto_ver() and
get_chdr_width().
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Rename thread affinity args such that they do not end with an integer.
Arg names ending with an integer are interpreted as being targeted at a
specific motherboard index in device_addr methods.
|
|
|
|
|
|
| |
Allow device args that contain an integer within the name, such as
recv_offload_thread_0_cpu. Previously this would cause an invalid format
exception.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This assumes an existence of mboard_regs_control in PeriphManagerBase
and implements most TK controls there. All the *_periphs.py files can
now use a common class for registers, including the TK access, but also
git hash, build date, and device ID access.
This also fixes two issues:
- set_timekeeper_time() and set_tick_period() had a bug that would
incorrectly calculate the upper 32 bits of their respective registers.
- N3xx had a bug that would swap around set time now and next PPS. This
got auto-fixed because the common code never had this bug.
|
|
|
|
|
|
|
| |
- Replace some `if len(seq)` with `if seq`
- Replace some `lambda: f()` with `f`
- Formatting
- Add some pylint: disable where appropriate
|
| |
|
|
|
|
| |
The DPDK files are left behind as a reference, for now.
|
|
|
|
|
|
|
|
|
|
|
|
| |
dpdk_ctx represents the central context and manager of all memory
and threads allocated via the DPDK EAL. In this commit, it parses
the user's arguments, configures all the ports, and brings them up.
dpdk_port represents each DPDK NIC port's configuration, and it
manages the allocation of individual queues and their flow rules.
It also would provide access to an ARP table and functions for
handling ARP requests and responses. The flow rules and ARP
functions are not yet implemented.
|
|
|
|
|
| |
Swap out hyphens for underscores in the DPDK args. Also update list
of distributions with the correct DPDK version in the repos.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this patch, the elements of of the return value of find_blocks()
are sorted lexicographically (specifically, using
uhd::rfnoc::block_id_it::operator<()).
The underlying block_container class stores the blocks in an unordered
set, so the return value for find_blocks() was always sorted randomly.
multi_usrp_rfnoc had to sort the return values every time find_blocks()
was used to get a useful return value.
Because find_blocks() had no contract for the order of returned blocks,
this change simply sorts the return value before returning it.
multi_usrp_rfnoc is modified to remove all the sorts that are now
superfluous.
A good way to see the change is to run uhd_usrp_probe, which will now
contain content like this:
| _____________________________________________________
| /
| | RFNoC blocks on this device:
| |
| | * 0/DDC#0
| | * 0/DDC#1
| | * 0/DUC#0
| | * 0/DUC#1
| | * 0/DmaFIFO#0
| | * 0/Radio#0
| | * 0/Radio#1
Assuming the blocks don't change, the order of this list will always be
the same following this patch. Note that the order is unrelated to the
order on the control crossbar, which it never was.
|
|
|
|
|
|
|
|
|
|
| |
When calling a multi_usrp object like this:
usrp->set_gpio_attr("TXB", "CTRL", 0xFFFF);
Previously, it would only be able to address daughterboard A. Now, there
is a full backward-compatible solution (compatible with 3.15), that will
address either daughterboard's GPIOs.
|
|
|
|
|
|
|
| |
The gpio example can now list all available banks before running tests.
Use like this:
gpio --args $args --list-banks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The blocks that are neither OOT, nor core blocks (like the DDC/DUC,
etc.) require additional info to find their appropriate Makefile.srcs
files. We don't include them in every build, to avoid building IP for
the FFT, FIR, and other blocks when they're not needed. However, those
blocks are in-tree, and don't follow the same directory structure as
out-of-tree modules, either.
We therefore allow the YAML files for those blocks (which are shipped
with UHD) to contain a path hint to their appropriate Makefile.srcs. The
image builder uses those paths to amend the `make` command
appropriately.
|
|
|
|
|
| |
For easier maintenance, some constants like paths and maps were moved to
the top of the Python file.
|
|
|
|
| |
Fixes 85f0551 ("rfnoc: Add I/O service manager to X300 and MPMD")
|
|
|
|
|
|
| |
Add a new method to io_service::send_io to check whether the destination
is ready for data, to make it possible to poll send_io rather than block
waiting for flow control credits.
|
| |
|
|
|
|
|
|
| |
The -I option was broken in multiple ways:
- Multiple -I options would only keep the last one
- The call to make did not actually append RFNOC_OOT_MAKEFILE_SRCS
|
|
|
|
|
|
|
|
|
|
| |
- Fix mako paths to run from anywhere
- Correct code errors and clean up generated code
- Add support for port parameters
- Add support for axis_data interface
- Fix NoC shell reset handling
- Replace Python functions with Verilog $clog2
- Allow input and output to share port name
|
|
|
|
| |
These command line arguments control the spp values used for streaming.
|
|
|
|
|
|
|
|
| |
This API call is a more explicit way of setting the spp than passing in
an spp value in the args of the stream args when creating streamers. For
pre-RFNoC devices, this is done by injecting the spp arg back into the
stream args. For RFNoC devices, the set_property() call on the radio is
called.
|
| |
|
|
|
|
|
|
|
|
| |
SEPs on the FPGA can only occupy multiples of the CHDR width in their
FIFOs, unlike SW, where buffers are stored in RAM and can be aligned
anyhow. Therefore, we align the counting of bytes for FC purpose and
count multiples of CHDR width instead of the true number of bytes per
packet.
|
|
|
|
|
| |
For links that do not support releasing buffers out of order, restrict
the I/O service manager to always select the inline I/O service.
|
| |
|
|
|
|
|
| |
This makes it possible for users to put I/O service-related args in
either the device args or stream args.
|
|
|
|
|
|
|
|
| |
This subdirectory is its own, self-contained project. It is supposed to
work against the UHD version it is shipped with.
Co-Authored-By: Martin Braun <martin.braun@ettus.com>
Co-Authored-By: Wade Fife <wade.fife@ni.com>
|
|
|
|
|
|
|
| |
- The -I switch now allows pointing to an OOT
- The image core file may now contain keys 'device' and
'default_target', which the image builder can use as default values.
Command line switches --device and --target are still honoured.
|
| |
|
|
|
|
|
|
| |
The ports in the fpga need to be ordered to make correct
connections in verilog. This also keeps generated verilog
constant across runs.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This replaces all of the following with standard C++ features:
- boost::tuple
- boost::make_tuple
- boost::tuple::get
- #include <boost/tuple/tuple.hpp>
All usages were replaced with search-and-replace scripts (the usages of
get could be automatically replaced with a vim macro, the rest was
straightforward search-and-replace).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note: Replacing everything with a lambda would be even better, but that
can't be easily scripted so we'll do this as a first step to reduce the
Boost footprint.
This also removes occurences of #include <boost/bind.hpp>, and makes
sure all usages of std::bind have an #include <functional>. clang-format
wasn't always applied to minimize the changeset in this commit, however,
it was applied to the blocks of #includes.
Due to conflicts with other Boost libraries, the placeholders _1, _2,
etc. could not be directly used, but had to be explicitly called out
(as std::placeholders::_1, etc.). This makes the use of std::bind even
uglier, which serves as another reminder that using std::bind (and even
more so, boost::bind) should be avoided.
nirio/rpc/rpc_client.cpp still contains a reference to boost::bind. It
was not possible to remove it by simply doing a search and replace, so
it will be removed in a separate commit.
|
|
|
|
| |
Modified to run with the new RFNoC API.
|
|
|
|
|
|
|
| |
Adding graph_utils to keep rfnoc_graph utilities to contain helper
function and commonly used algorithms for the rfnoc_graph. These
functions aren't core to the rfnoc_graph's functionality, so we'll keep
them out of its API.
|
|
|
|
| |
This will display EOB and EOV flags in the Wireshark dissector window.
|
|
|
|
|
| |
Replace with std::chrono functions instead, in our effort to reduce
Boost footprint.
|
|
|
|
|
|
|
|
|
|
| |
This device arg will avoid printing old log messages by dumping all log
messages in the buffer immediately after claiming a device. This can be
helpful because reading old log messages can be confusing during debug
situations, or simply during situations where we expect errors to
contain warnings or errors, but we want to hide them.
skip_oldlog defaults to off, i.e., the previous behaviour.
|
|
|
|
|
|
|
|
|
| |
The mpmd_mb_controller requires access to the fully functional FPGA,
which in turn assumes flawless initialization. skip_init doesn't init at
all, so inializing an mb_controller may not be possible, and shouldn't
be attempted. This skips init of both mb_iface and mb_controller for
skip_init, leaving it to the other code to figure out if they are
initialized.
|