| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This allows sharing mutexes between C++ and Python, and uses the with
statement to provide a locked-out context.
|
|
|
|
|
|
| |
Add coercing behavior to set_time_source and set_clock_source to
a valid sync source. Also, skip set_sync_source if device already
set to the corresponding one.
|
|
|
|
|
|
| |
This change to add skip_rfic as an device argument.
skip_rfic should be only used in ref_clock bist tests
to bring down the test time.
|
|
|
|
|
| |
- Allow generic path names to be given for each search parameter instead of
only checking the label
|
| |
|
|
|
|
|
| |
This commit contains whitespace and formatting changes only. No
functional changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change will allow correct args to pass from mboard to dboards,
that in turn can be useful for dboard manager.
Details:
In N310, the dboard manager needs the time source to be updated before
calling update_ref_clock_source(), because it will trigger a reinit of
the dboard, for which the time_source is essential to determine correct
clock synchronizer settings.
The special case is the white rabbit time source needs a different
internal ref_clock_frequency for the clock synchronizer than the passed
in ref_clock_freq.
|
| |
|
|
|
|
|
| |
N3xx and E320 were registering GPSDIface names as get_*_sensor instead
of just the sensor name. Fixing this to now register the sensor name.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When reloading the Periph Manager (as when we run the image loader),
we need to run the RPCServer `__init__` function in order to reset the
cache of RPC methods. Otherwise, that cache keeps stale references to
old functions (and prevents garbage collection).
It may be possible to reset the method cache some other way, but the
`_methods` attribute of RPCServer is Cython, and doesn't seem to be
accessible in our Python code.
|
|
|
|
|
|
|
|
| |
Adding MPM Git hash and version to the MPM device info. This
information is currently only available through logs when MPM starts
(it is the first log message in usrp_hwd.py). Adding it to the device
info makes it accessible to any application which checks that, such as
uhd_usrp_probe.
|
|
|
|
| |
This sequence is the one as described by the AD9371 user guide.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
- For different ref clock frequencies, the ref_counter should change
and not the n_counter.
- The charge pump should be set to normal mode and tristate as that
would prevent the PLL to lock.
|
|
|
|
|
|
| |
Added set_sync_source method to set both the time and clock sources
without forcing a re-init twice. Modified the existing set_time_source
and set_clock_source methods to call into set_sync_source.
|
| |
|
|
|
|
|
| |
- E320 will support only 3.3 V for the front panel GPIO
- Remove other voltage options
|
| |
|
|
|
|
|
|
|
| |
EEPROM parsing in MPM was ignoring the dt_compat number (MPM doesn't
need it), so when the dt_compat number was non-zero, the CRC
calculation was incorrect. CRC calculations are now done on the raw
data.
|
|
|
|
|
| |
The product ID will fall back to the motherboard ID (n300, n310). This
will load FPGA images even if there is no daughterboard connected.
|
|
|
|
|
|
|
|
|
| |
- Fix the syntax to open mboard-regs UIO objects, and change the open()
and close() functions to be private.
- We were calling open() twice in every context manager line- once
manually, and once in __enter__. This commit corrects those usages, and
allows the context manager to fully manage the opening and closing of
UIO objects.
|
|
|
|
| |
When logger==None, it uio.py would fail.
|
|
|
|
|
| |
Specify skip_boot_init=1 to not init during boot. This will increase
boot time for an N310, typically by around 15 seconds.
|
|
|
|
|
|
|
|
| |
Adding the following sensors:
- Catalina temperature, RSSI, and LO Lock sensors
- GPS lock, time, TPV, and SKY sensors
Co-authored-by: Brent Stapleton <brent.stapleton@ettus.com>
|
|
|
|
| |
Co-authored-by: Sugandha Gupta <sugandha.gupta@ettus.com>
|
|
|
|
|
|
|
|
|
|
| |
When a device is re-initialized without any changes (e.g.,
master_clock_rate, ref_clock_freq) then we can skip the initialization
sequence and move on. This shaves a significant amount of time from the
init sequence.
Fast re-init can be overridden by providing the `force_reinit=1` device
arg.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
All code relevant to initializing an N310/N300 daughterboard is moved to
its own module (mg_init.py).
No functional changes.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
- Refactoring component (FPGA, DTS) updating functions out of
n3xx.py into their own components.py. The ZynqComponent class now
defines the methods to update these two components.
- Adding super().__init__() to the PeriphManagerBase class. This is
needed to get the multiple inheritance used in N3XX now to work, and
(apparently) good Python practice.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Refactoring GPSd interface to be instead wrapped by a
GPSDIfaceExtension class. This class will faciliate "extending" an
object, allowing that object to call the GPSDIfaceExtension methods as
their own.
- New MPM devices (or whatever else) can now use the GPSDIfaceExtension
class instead of writing their own GPSDIface handling functions.
- N3XX now instantiates a GPSDIfaceExtension object, and extends
itself. This means that an n3xx object can call the `get_gps_time`
method as its own, for example.
- N3XX must get through initialization in order for the GPSd methods
to be registered.
|
|
|
|
|
|
| |
Moving the RFNoC crossbar base port to the class overridables. MPM
devices may need to reserve different numbers of ports for non-blocks;
this can now be done by overriding the crossbar_base_port.
|
|
|
|
|
| |
Adding ADF400X driver to MPM. This uses the Boost.Python bound spidev,
and is largely a translation from the C++ driver in UHD.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce dt-compat and mcu-compat fields into the eeprom
structure.
For the motherboard eeprom this is straightforward, since
there's still padding bytes that could be (ab)used for this.
On the dboard side more creativity is required and the
original revision field of 2 bytes is reduced to only
one byte revision and one byte dt-compat.
Since this will only affect new units being backwards
compatible with older versions of the bootloader is not
an issue.
Reviewed-by: Brent Stapleton <brent.stapleton@ettus.com>
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
|
| |
|
|
|
|
| |
- change scoping of product_map in n3xx
|
|
|
|
|
|
|
| |
This manager first detects all valid Ethernet devices. The checks for
validity happen across multiple calls in a non-atomic fashion, so it's
possible to end up with inconsistent results. To avoid such issues, we
filter results without talking to the network stack as a final pass.
|
|
|
|
|
|
|
| |
Because the detection of valid Ethernet devices happens across multiple
calls in a non-atomic fashion, we cannot assume that a device passed to
net.get_iface_info() actually has a valid IP address, so we don't make
that assumption.
|
| |
|
|
|
|
|
|
| |
Since there is no simple mapping from an arbitrary tuple of mboard- and
dboard info dictionaries, we use generate_device_info() to figure out
the product key.
|