The current firmware missed descriptors for B200-mini and
B205-mini. Added the missing descriptors.
Also this commit ammends the firmware howto. It specifies
the SDK version we are using as well as some additional
command applied to the SDK files to make the patch successful.
Co-authored-by: Lars Amsel <lars.amsel@emerson.com>
This is an upgrade to the latest FX3 SDK (1.3.5) and to the ARM gcc in
version 15.3.rel1 for the build of the B2xx firmware and bootloader. All
required steps are explained in the updated readme file.
Additionally, some bounds checks were added both in the firmware and the
bootloader, as well as some more validations and checks to prevent over-
and underflows. Newly introduced checks were documented in the code.
Various sub-projects around the UHD repository specify their own minimum
CMake versions (independent of UHD). We modify the minimum CMake
versions in the following way:
- All CMake files under firmware/ are bumped from 2.6 to 3.5. This is to
allow newer CMake versions to work with these files (CMake 4 and
beyond do no longer work if the minimum version is below 3.5). However,
note that these CMake files are so simple they will keep working with
older CMake versions, but that will require manually demoting the
minimum version. Because more people are using CMake versions newer
than 3.5 (especially with recent checkouts of UHD), this seems the
more compatible solution.
- The CMake files for extension_example and init_usrp are bumped to
3.12. This matches the version that UHD uses, which increases
compatibility.
- Bump firmware compat to 6.1
- Remove crossbar counter logic (the FPGA does *not* support crossbar
counters anymore, so we remove it from the firmware as well)
- Remove crossbar programming control (this is now provided by RFNoC
management packets)
- Remove UDP framing control (this is also provided by RFNoC management
packets)
- Remove Ethernet link/activity LED control (this has been handled by
the FPGA directly for years now)
- Add functionality to program transport adapter. The TA is programmed
directly on the settings bus, so for the most part, this is already
possible from the firmware. The only exception is the 'virtual'
register to program IP address and MAC at the same time. In the
firmware, it will perform an ARP lookup of the MAC address, and then
write the "normal" IPv4 address register in the TA, as well as the MAC
address registers.
- Updated bootram.coe
- Updated README with instructions on how to build using new SDK
(1.3.4 as of this change)
- Updated makefiles
- Updated memory map patch
Signed-off-by: michael-west <michael.west@ettus.com>
The address for the serial number was off by 2 bytes, causing a bad
value in the USB descriptor. This only occurred if the bootloader
image was loaded on the device.
Signed-off-by: michael-west <michael.west@ettus.com>
MASK_GPIO_SHDN_SW ( GPIO[52] ) should be shifted by "GPIO_SHDN_SW" but "GPIO_FX3_SCLK ".
Otherwise GPIOs of FX3 will initial GPIO_FX3_SCLK ( GPIO[53] ) as GPIO and SPI respectively.
It will make GPIO[53] conflict between SPI and GPIO, and SHDN_SW will not work properly as a power switch.
- Load EEPROM data into firmware memory to access from there instead of driving the I2C bus directly
- Fixed firmware performance issues by removing the popcntll() function and reducing frequency of background tasks to once every 10ms
- Added x300_mb_eeprom_iface to handle cases of devices with older and newer firmware
- Added checks for claim to device before driving the I2C bus
* host: consistency in setting packet sequence numbers
* firmware: populate packet length field when setting GPSDO cache
* both: logic for dealing with mismatching compatibility numbers
Reviewed-By: Michael West <michael.west@ettus.com>
Reviewed-By: Martin Braun <martin.braun@ettus.com>
The bug is a result of wrong order of evaluation:
The '|' operator takes precedence over '?'. Therefore
the intended expression a = x | (y ? 1 : 0) got evaluated
as a = (x | y) ? 1 : 0.
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
The EEPROM section was not getting written by make install,
so whatever was in there is in there.
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
The bug is a result of wrong order of evaluation:
The '|' operator takes precedence over '?'. Therefore
the intended expression a = x | (y ? 1 : 0) got evaluated
as a = (x | y) ? 1 : 0.
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
The EEPROM section was not getting written by make install,
so whatever was in there is in there.
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>