Starting from UHD4.7/Yocto release kirkstone, only the first
partition is populated in the .sdimg filesystem image and the
second rootfs partition is empty.
The image builder will currently emit a warning if a NoC-block has
unconnected ports. This requires specifying `-W` to continue building,
which is the intended behaviour.
However, there are cases where there are legitimate reasons to not
connect a block, e.g., in the X310, where the radio block has 2x2 ports,
but we only connect 2 RX ports, and 1 TX port.
This adds a way to declare a "null" connection, which makes it explicit
in the image core YAML that a connection was deliberately omitted. Such
connections are created by connecting to a port called "_none_", e.g.:
```
connections:
- { srcblk: _device_, srcport: _none_, dstblk: radio0, dstport: in_1 }
```
The block name is irrelevant, but the schema requires providing a block
name.
This commit also amends the x3xx_radio_base.yml to avoid warnings when
building X3x0 bitfiles.
- If there are any warnings during the image core parsing, the build is
now skipped unless --no-warnings (-W) is also given.
- Exceptions in the ImageBuilderConfig are now caught in
rfnoc_image_builder and an error message is logged, instead of
printing the Python exception backtrace.
When -S is provided without -K (--secure-core without --secure-key), the
build fails without comment. This provides a default value for -K based
on the default Vivado key.
This adds some checks for:
- DRAM parameters
- Whether or not CHDR DMA and QSFP IO ports are connected
This will cause old image core files to fail with the new image builder,
unless --no-warnings is added, or the image core files are updated to
include these transport adapters.
When an image core file has a missing, required IO port connection, the
tool will now suggest which ports may be sensible options for
connecting.
When there is a single available option, it will even suggest which line
to add to the image core YAML to fix.
- Blocks, modules, and transport adapter YAMLs may include a `checks`
section and define validation checks there
- IO ports can declare if they require a connection or not
- Unconnected NoC-Block data ports trigger a warning now
This example had some sections commented out using `#ifdef __linux__`,
but not consistently. This enables or disables all relevant code, which
reduces warnings on non-Linux systems.
When introducing the guided mode in FBX, we used to cast to int which
is not sufficient for the upper half of our frequency spectrum. uint_32
is just enough to fix the issue for frequencies up to 4 GHz.
The ECHO send error occurs if the sender tries a MTU size which
is greater than what is supported in the direction from the MPM
device back to the sender. This is uncritical as the sender will
try with a smaller MTU size afterwards. Hence, demote the log
level of this message to debug and add information about the
packet size to better understand what is happening.
This will result into use of the in-tree version on Ubuntu 20,
and address an observed crash during object cleanup at program
shutdown that was only observed on Ubuntu 20. This restores the
behavior earlier UHD version to use the in-tree pybind11 module
for Ubuntu 20.
Also corrected some logic determining when the in-tree module
was used to avoid that both a public and our in-tree modules are
part of the INCLUDE_DIRS.
Created new command argument to specify transmit delay, and utilize it in all
three code path (MultiUSRP, DRAM send, and DRAM upload + issue_stream_cmd.
For the first code path use of predefined transmit start time is new behavior,
and could also result into unexpected errors if the tx_delay is selected to small.
Since X440 is special in terms of operation in different Nyquist zones
users may stumble upon unexpected RF performance compared to other
devices if frequencies are chosen close to a Nyquist boundary. The
guided mode provides more information about the Nyquist zone in which
the chosen frequency is located in the info log. For disabling the
guided mode, `guided_mode=false` can be added to the UHD config file
in the "Global" section.
Moved Code block section for clock sync setup block from later stage to
earlier stage before check Ref and LO Lock detect block. Specifically
moved `//clock sync setup is complete do timed tuning of LOs and NCOs`
section.
This helped resolve the `Error: AssertionError: lo_locked.to_bool()`
A digital DC bias caused by various truncations in the DDC chain was
previously noticable with small signal levels, especially with high
decimation rates. This patch eliminates the bias by replacing the
truncation with rounding or simply keeping more bits for longer where it
makes sense.
This is essentially a forward port of a similar prior fix to the usrp2
DDC chain: https://github.com/EttusResearch/fpga/pull/4.
Signed-off-by: Ryan Volz <ryan.volz@gmail.com>
Importing from usrp_mpm.rpc_server imports a lot of dependencies which are
unnecessary if the rpc_server functionality is not actually needed.
Move the decorator functions to a new file rpc_utils.py and import only
from this file inside periph_manager.
usrp_hwd.py needs additional dependencies which are specifically imported:
- usrp_mpm.rpc_server.spawn_rpc_process
- usrp_mpm.discovery.spawn_discovery_process
Introduce the class AcquiredPlace which automatically acquires
and releases the associated place when instantiating the class
using the 'with' statement. This ensures that the place is
always released, removing the need for implementing a forced
release using the '--kick' option.
Current labgrid-client prints out (unwanted) error during aquire
when `release --kick` has nothing to release. This change first
checks whether there is anything to kick. Also, it raises an
runtime error if any of the calls to labgrid-client fails.
Starting from systemd v245, Duplicate Address Detection (DAD) is automatically
enabled for static IPv4 addresses if the IP address is a link local address.
DuplicateAddressDetection=none (or DuplicateAddressDetection=true for historical
reasons) deactivates this.
Important notes on compatibility:
- systemd v243.2 (Yocto release zeus) does not support DuplicateAddressDetection=none
and errors out without applying the IPv4 address -> use the historical
parameter DuplicateAddressDetection=true to remain backward compatibility
- systemd v250.5 (Yocto release kirkstone) ignores the DuplicateAddressDetection=none
(or DuplicateAddressDetection=true) parameter for link local addresses and enables
DAD unconditionally. This is fixed by commit a9efd16090baee492e9dd9ae832b5b548e7c6fcf
("network: do not enable IPv4 ACD for IPv4 link-local address if ACD is disabled explicitly")
which is not part of default Yocto systemd v250.5. In meta-ettus we have applied
the patch so that the DuplicateAddressDetection=none (or DuplicateAddressDetection=true)
parameter is honored for link local addresses
Modified example to support demonstratig the X440 phase repeatability
performance when using dram feature. Change is compatible with all supported
rfnoc devices that utilize the RFNoC Replay Block, but only improves
phase repeatability performance of X440.
Separated loops configuring radio properties and converted setting carrier
frequency into timed commands. This required moving this code to a later
part in the programming flow, after all the clock source settings are
applied and the LO locks are confirmed.
Modified example to support demonstratig the X440 phase repeatability
performance. Change is compatible with all supported devices, but only
improves phase repeatability performance of X440.
Separated loops configuring radio properties and converted setting carrier
frequency into timed commands. This required moving this code to a later
part in the programming flow, after all the clock source settings are
applied and the LO locks are confirmed.