Gecko Platform Release Notes 4.2.1.0
Gecko Platform Release Notes 4.2.1.0
0 GA
Gecko SDK Suite 4.2
February 1, 2023
The Gecko Platform provides infrastructure support for applications developed with
higher-level protocols, and it provides an interface with the underlying hardware. It is
composed of the following modules:
CMSIS Device is a vendor-independent hardware abstraction layer for the Cortex®-M
processor series.
KEY FEATURES
Peripherals provides a complete peripheral API for all Silicon Labs EFM32, EZR32 and
EFR32 MCUs and SoCs. • Support for EFR32xG25 devices
Drivers is the Gecko Platform driver library for EFM32, EZR32 and EFR32 on-chip pe- • Support for MGM240Dx modules
ripherals. Drivers are typically DMA-based and use all available low-energy features. • Support for BGM24x modules
Services includes common services such as NVM3 and Power Manager. • Improved CPC UART drivers reliability
• Many CPC improvements
CPC (Co-Processor Communication) provides a library to communicate between two
• Android support for CPCd
processors using a serial link. CPC is used by the ACP & RCP solutions
Security:
Common components are used throughout the SDKs. • Updates the Mbed TLS library to version
3.2.1, with support for CBAP.
Middleware includes the Capacitive Sensing Firmware Library and the GLIB graphics
library, along with Micrium OS stacks like CAN/CANopen, File System, Networking and • Updated ITS driver (version 3) for faster
performance.
USB Device and Host.
• Updated software support for TrustZone,
Security includes mbed TLS and other security services. Evaluation quality
Operating System includes Micrium OS Kernel as well as other things related to Oper-
ating Systems such as a CMSIS-RTOS2 layer.
The Gecko Bootloader is a code library configurable through Simplicity Studio’s IDE to
generate bootloaders that can be used with a variety of Silicon Labs protocol stacks. The
Gecko Bootloader can be used with EFM32 and EFR32 Series 1 and later devices.
Machine Learning includes TensorFlow Lite Micro components, used to run neural net-
work inference, and related preprocessing components.
Examples are example applications illustrating platform functionality.
Boards and External Devices cover supported hardware.
Other Gecko Platform Components regroups changes to documentation, project build-
ing and configuration, as well as any other aspects related to Gecko Platform.
RAIL (Radio Abstraction Interface Layer) provides a customizable radio interface layer
that supports proprietary or standards-based wireless protocols. RAIL use by application
protocols such as Silicon Labs Zigbee or Silicon Labs Connect is managed through the
stack library. Direct RAIL use is exposed through the Flex SDK.
These release notes cover SDK version(s):
Gecko Platform 4.2.1.0 released February 1, 2023
Gecko Platform 4.2.0.0 released December 14, 2022
silabs.com | Building a more connected world. Copyright © 2023 by Silicon Laboratories Gecko Platform 4.2.1.0
Contents
Contents
2 Peripherals ................................................................................................................................................................................. 3
3 Drivers........................................................................................................................................................................................ 4
4 Services ..................................................................................................................................................................................... 5
5 CPC ........................................................................................................................................................................................... 7
6 Common..................................................................................................................................................................................... 9
7 Middleware ............................................................................................................................................................................... 10
8 Security .................................................................................................................................................................................... 11
12 Examples.............................................................................................................................................................................. 17
15 RAIL Library.......................................................................................................................................................................... 20
1 CMSIS Device
1.2 Improvements
Added in release 4.2.1.0
• The control bit DONESET in the LDMA_CH_CTRL register was renamed into DONEIEN to be consistent with other EFR32xG2x
devices
ID # Description
1059733 ARMCC assembly startup files for Series 0 and Series 1 devices have been removed from GSDK since they have
not been supported since GSDK v2.7
1064407 The PLL0, which provides an accurate 48 MHz clock to the USB, has been renamed for USBPLL0 in the EFR32xG25
header files.
1021831 Added EMU_RSTCAUSE_SETAMPER bit in device headers of EFR32xG21, EFR32xG23, EFR32xG24 and
EFR32xG24 devices. This bit is asserted following a reset due to a tampering event detection.
1015647 Fixed the EXT_IRQ_COUNT macro value to match the number of external NVIC internal interrupt sources for
EZR32HG, EZR32LG and EZR32WG devices.
1059733 ARM Startup files for Series 0 and Series 1 devices have been removed from GSDK since they have not been
supported since GSDK v2.7
2 Peripherals
2.2 Improvements
Changed in release 4.2.0.0
• Added documentation for EMU_DCDCXxxx() functions
• Improved Eusart_Rx function when to account for Rx FIFO watermark
ID # Description
1043460 Fixed IADC_calcTimebase function to use the correct clock source. Time base calculation is now based off the
correct clock source CLK_SRC_ADC rather than previous CLK_CMU_ADC. IADC is initialized with the correct time
base and it is no longer required to manually set the correct time base value after initializing the IADC.
1037225 Fixed an issue where the EM4WU GPIO pin mode was configured as InputPull instead of InputPullFilter when
configuring the EM4WU External Interrupt.
1033757 Device can still execute instructions after executing Enter_EM4() function is addressed with a new
EMU_EnterEM4Wait() function. It waits after an EM4 entry request and makes sure no other code can run between
the request and the moment the CPU is actually shut down.
1020645 Fixed EMU_BoostExternalShutdownEnable() API, BOOSTENCTRL bit logic was reversed.
1019940 Fixed EMU_RamPowerDown() end parameter behavior.
845272 Fixed a bug where the high-accuracy IADC offset correction calculation was wrong in the IADC initialization routine.
845232 Fix issue where the interrupts of the EFP would still be enabled after de-initializing the EFP driver.
1022566 Removed dmadrv_baremetal sample application for BRD2204C because it does not use usart0 peripheral for vcom.
3 Drivers
3.2 Improvements
None
ID # Description
811009 Implemented KEYSCAN_E301 fix for EFR32xg2x devices (fix for Keyscan interrupts not cleared on unused rows).
4 Services
4.2 Improvements
Changed in release 4.2.1.0
• RFFPLL configuration now defaults to use band AUTO band rather than defaulting to Band 9xx MHz in the device_init_rffpll compo-
nent. This allows picking up the RFFPLL configuration parameters from the radio configurator.
• Added a new API to get the sleeptimer's clock source's accuracy.
ID # Description
1078350 Addressed an issue related to increased interrupt latency caused by the integration of IOstream UART DMA.
1092999 Resolved various static analysis issues identified in the IOstream and CLI components.
1081342 Corrected an issue where initial SWO data sent immediately after initializing SWO would become corrupted.
ID # Description
852037 Periodic sleeptimers no longer drift over time when using milliseconds as the time base.
1019822 Fixed sl_sleeptimer_get_datetime() so it returns time in Standard Time to match sl_sleeptimer_set_datetime() which
sets the timezone.
1073997 Fixed sl_sleeptimer_convert_unix_time_to_ntp() to return an error when invalid time parameter is passed.
1068039 Fixed internal HFXO Manager settings applied when enabling SL_HFXO_MANAGER_SLEEPY_CRYSTAL_SUPPORT.
818102 Updated critical section used in Power Manager to explicitly use PRIMASK. This fixes an issue where the CPU would
not wake up from sleep if em_core critical section are configured to use BASEPRI.
937666 Fixed IOStream Flush UART functionality for EUSART peripheral.
1065570 Fixed a bad usage of an enum during the preprocessor into the IOStream UART component.
5 CPC
5.2 Improvements
Changed in release 4.2.1.0
• Improved handling for missing bootloader in firmware update mode.
• Added functionality to the CPC daemon for automatically generating a plaintext binding key if one is not present before binding.
ID # Description
1085742 Resolved a crash issue in the secondary caused by receiving a packet before the kernel had started.
ID # Description
839674 Fixed in libcpc, the state returned by cpc_get_endpoint_state() after cpc_endpoint_close() has been called.
1040127 CPC security failed to initialize on EFR32MG13 and MG14 series parts. To work around this issue,
mbedtls_entropy_adc() has been added as entropy source for these parts.
1057885 Fixed in libcpc, an issue that prevented users to call cpc_restart() again once it failed.
1064508 Fixed Secondary UART-EUSART driver with Hardware Flow control disabled and the security enabled.
1066686 Fixed a potential socket leak into cpc_init() when the daemon was not started.
1068063 Fixed an issue where the CS signal would not be de-asserted after successfully sending an SPI to the secondary
device.
1066273 Fixed an issue where a retransmit from the secondary could cause an endpoint to close because the decryption
would fail.
1067736 Fixed race condition with security endpoint when the client is actively connecting.
6 Common
6.2 Improvements
Changed in release 4.2.0.0
• Linker sections are sorted by alignment to improve memory usage
ID # Description
1092995 Dedicated RAM section for SEGGER_RTT moved from the .bss section in the GCC linker script to the .data section.
SEGGER_RTT section in .bss was causing .bss to be considered as initialized data and increased flash memory
usage.
7 Middleware
7.2 Improvements
Changed in release 4.2.0.0
• Updated GLIB components to allow creation or use of a custom display implementation.
• Added configuration file to GLIB to reduce the memory footprint.
ID # Description
1015841 Fixed C++ compiler error with Glib.
8 Security
8.2 Improvements
Changed in release 4.2.0.0
• Added a new version of the ITS driver (v3) in order to optimize the key look up time, especially for applications with more than 100
keys. ITS V3 uses simple PRNG with UID as a seed to create a hash-map-like structure. Note that NVM3 ID range was changed
from region starting at 0x83100 to region ending with 0x870ff. We provide an upgrade path for the devices that already use the ITS
driver. Note that after upgrading to ITS driver V3, SL_PSA_ITS_USER_MAX_FILES cannot be changed. Also note, that upgrade
can take some time (more than 1min for 1000 files). New config options were added:
• SL_PSA_ITS_SUPPORT_V2_DRIVER - This can be set to 0 if the device has never used ITS driver before in GSDK 4.1.x and
earlier, or the keys have been already migrated to v3, and remove the unused code.
• SL_PSA_ITS_SUPPORT_V3_DRIVER - This can be set to 1 if the device has never used ITS driver before in GSDK 4.1.x and
earlier. This configuration option will add support for V3 driver, and provide an upgrade path from V1/V2. For devices that are not
able to upgrade to ITS driver V3, we recommend disabling it, and using the previous version of the ITS driver.
The downgrade path of the ITS driver to an earlier version is not provided.
• PSA Crypto components have now been updated to reflect the addition of Curve25519 support on xG21A and xG23A devices. Users
that depend on this functionality and are running SE firmware versions older than 1.2.10 and 2.1.7, respectively, are recommended
to update their firmware (preferred) or manually add the `Platform|Security|Mbed TLS|Elliptic Curves|Curve25519` component to
their project.
• Added components for use of PKCS #5 and #12 modules in Mbed TLS
• Add support for configuring dynamic memory allocation functions in Mbed TLS via SLC components.
• Add support for configuration of alternative threading support in Mbed TLS (aka MBEDTLS_THREADING_ALT) via SLC components.
• Changed the TrustZone root key automatic key renewal. The key is now only renewed on Device Erase.
• TRNG handling logic changed to reduce idle current consumption for xG22 in EM0/1.
• Added PSA API documentation links to Mbed TLS SLC components
ID # Description
421759 Fixed EMLIB functions CRYPTO_SHA_1 and CRYPTO_SHA_256 to support input buffer pointers that are not
aligned on 32-bit words.
Affected devices are EFR32xG1x and EFM32xG1x.
Affected SDK versions are 2.6.0-2.6.5, 2.7.0-2.7.11, 3.0.0-3.0.2, 3.1.0 - 3.1.2, 3.2.0 - 3.2.3, 4.0.0 - 4.02, 4.1.0 - 4.1.3
and 4.2.0
691903 Removed redeclarations of variables with the same name in the function sl_se_gcm_multipart_starts in the SE
Manager component.
Affected devices are EFR32xG21.
Affected SDK versions are 3.1.0 - 3.1.2, 3.2.0 - 3.2.3, 4.0.0 - 4.02, 4.1.0 - 4.1.3 and 4.2.0
ID # Description
1074038 The AES-CTR one-shot encryption function of the PSA SE driver (sli_se_driver_cipher_encrypt) may fail when
operating on input data that are not multiples of 16 bytes, and the alg argument is PSA_ALG_CTR or
PSA_ALG_CCM_STAR_NO_TAG. The cipher oneshot encryption function of the PSA Crypto API
psa_cipher_encrypt generates random IV values and subsequently calls sli_se_driver_cipher_encrypt. The failure
depends on the combination of cipher key and random IV, where some random IV values may cause an incorrect
ciphertext.
The bug does not have exploitable properties and is not considered to be a security vulnerability.
Affected devices are HSE-based devices (series-0/1 and VSE not affected).
Affected SDK versions are 3.1.0 - 3.1.2, 3.2.0 - 3.2.3, 4.0.0 - 4.02 and 4.1.0 - 4.1.3
937813 Fixed an issue when the application requests random data and the radio is off, uninitialized or malfunctioning, then
no entropy is available for the entropy accumulator of Mbed TLS and consequently the PRNGs (CTR-DRBG and
HMAC-DRBG). The fix implements a fallback to request entropy from the ADC if the radio returns 0 bytes of entropy.
The prerequisite is that the user must configure the ADC as entropy source.
Affected devices are EFR32xG1x.
Fixed in GSDK version 4.1.1.0
845005 Fixed issue on EFR32xG23 when DCI became unresponsive after running OTP initialization and Power-on-reset. In
API function sl_se_init_otp reject setting reserved tamper sources to tamper levels other than "ignore" during OTP
initialization by system manufacturer.
Fixed in GSDK version 4.1.1.0
ID # Description Workaround
The platform security software support has been moved This should not affect any projects that are using SLC
from the folder util/third_party/crypto to platform/security. components. However, if your project is not based on
The submodules mbedtls and trusted-firmware-m are SLC components (which can be the case especially
now located in util/third_party/. for projects that were created before Gecko SDK
v3.0), you may need to update the source file
locations in the project files.
.
9 Operating System
No changes
10 Gecko Bootloader
10.2 Improvements
Changed in release 4.2.0.0
• Added automated support for executing post-build actions.
• Added support for upgrading from storage slots in a sequential order in a multi-slot configuration in an absence of a bootload list as
opposed to an early exit. A configuration option is available in the Bootloader Storage Slot Setup component to enable/disable
validation of the slot layout in case of a multi-slot configuration.
ID # Description
293766 Added fix for Bootloader custom projects app to show error when predefines pins are not defined
ID # Description
1043067 Added fix for XModem idle Timeout macro set to a non-default value in Bootloader - UART XMODEM sample app.
00289194 Added fix for Bootloader - SoC Bluetooth in-place OTA DFU application to display only for series 1 devices in
Simplicity Studio.
00286863 Fixed an issue where the upgrade image size calculated was off by 4 bytes due to the CRC32 checksum that got
appended to the image after the signature (fixed in version 4.1.1.0).
11 Machine Learning
11.2 Improvements
Changed in release 4.2.0.0
• Added support for more tflite micro operators in the slc generator script that autogenerates the OpResolver code.
12 Examples
12.2 Improvements
• Fixed suppression issue in voice_control_light and audio_classifier example, improving the classification stability.
ID # Description Workaround
664803 Se_manager and psa_crypto sample apps do not work correctly In the launch console, change the line terminator
in Simplicity Studio 5’s launch console. selection to None.
13.2 Improvements
None
15 RAIL Library
15.2 Improvements
Changed in release 4.2.1.0
• Corrected the sign of the frequency error reported by RAIL_GetRxFreqOffset() when using OFDM on the EFR32xG25 to match how
this was handled for other modulations (e.g. Freq_error=current_freq-expected_freq).
• The RAIL_SetTune() and RAIL_GetTune() functions now use the CMU_HFXOCTuneSet() and CMU_HFXOCTuneGet() functions
respectively on EFR32xG2x and newer devices.
ID # Description
1077611 Fixed an issue on the EFR32xG25 that would cause a 40 µs porch before an OFDM TX.
ID # Description
1082274 Fixed an issue on the EFR32xG22, EFR32xG23, EFR32xG24, and EFR32xG25 chips that could cause the chip to
lock up if the application attempted to re-enter EM2 within ~10 µs after wake-up and hit a <0.5 µs timing window. If hit,
this lockup required a power on reset to restore normal operation to the chip.
ID # Description
843708 Moved function declarations from rail_features.h to rail.h to avoid a convoluted include dependency order.
844325 Fixed RAIL_SetTxFifo() to properly return 0 (error) rather than 4096 for an undersized FIFO.
845608 Fixed an issue with the RAIL_ConfigSyncWords API when using certain underlying demodulator hardware on
EFR32xG2x parts.
851150 Fixed an issue on EFR32xG2 series devices where the radio would trigger RAIL_ASSERT_SEQUENCER_FAULT
when PTI is used and GPIO configuration is locked. GPIO configuration can only be locked when PTI is disabled. See
RAIL_EnablePti() for further information.
857267 Fixed an issue when using the "RAIL Utility, Coexistence" component with TX abort, the signal identifier feature and
DMP.
1015152 Fixed an issue on EFR32xG2x devices where RAIL_EVENT_RX_FIFO_ALMOST_FULL or
RAIL_EVENT_TX_FIFO_ALMOST_EMPTY could trigger improperly when the event is enabled or the FIFO is reset.
1017609 Fixed an issue where PTI appended information could be corrupted when
RAIL_RX_OPTION_TRACK_ABORTED_FRAMES is in effect when RAIL_IDLE_FORCE_SHUTDOWN or
RAIL_IDLE_FORCE_SHUTDOWN_CLEAR_FLAGS is used. Also clarified that
RAIL_RX_OPTION_TRACK_ABORTED_FRAMES is not useful with coded PHYs.
1019590 Fixed an issue when using the "RAIL Utility, Coexistence" component with BLE where the
sl_bt_system_get_counters() function would always return 0 for GRANT denied counts.
1019794 Eliminated compiler warning in "RAIL Utility, Initialization" component when few of its features are enabled.
1023016 Fixed an issue on EFR32xG22 and newer chips where waits in between radio activity would consume slightly more
power than necessary after the first 13 ms. This was especially noticeable when using RAIL_ConfigRxDutyCycle
with large off time values.
1029740 Fixed issue where RAIL_GetRssi()/RAIL_GetRssiAlt() could return a "stale" RSSI value (the value was from
previous RX state instead of the current one) if called quickly upon entering receive.
1040814 Added support to the "RAIL Utility, Coexistence" component for configuring the coexistence request priority on sync
detect when using BLE.
1056207 Fixed an issue with IQ sampling when using the "RAIL Utility, AoX" component with only 0 or 1 antennas selected.
1062712 Fixed an issue where the "RAIL Utility, Coexistence" component would not always update request states correctly,
which could lead to missed events triggered by new requests.
1062940 Prevented the "RAIL Utility, Coexistence" component from aborting BLE transmits when
SL_RAIL_UTIL_COEX_BLE_TX_ABORT is disabled.
1063152 Fixed an issue where radio reception would not be fully cleaned up when a receive error occured with receive state
transitions set to idle on error but transmit on success, a configuration mostly associated with BLE. On the EFR32xG24
this could cause a SYNTH calibration to not be properly restored and eventually cause the radio to stop working.
ID # Description Workaround
Using direct mode (or IQ) functionality on EFR32xG23
requires a specifically set radio configuration that is not
yet supported by the radio configurator. For these
requirements, reach out to technical support who could
provide that configuration based on your specification
ID # Description Workaround
641705 Infinite receive operations where the frame's fixed length
is set to 0 are not working correctly on the EFR32xG23
series chips.
732659 On EFR32xG23:
• Wi-SUN FSK mode 1a exhibits a PER floor with fre-
quency offsets around ± 8 to 10 KHz
• Wi-SUN FSK mode 1b exhibits a PER floor with fre-
quency offsets around ± 18 to 20 KHz
Disclaimer
Silicon Labs intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software imple-
menters using or intending to use the Silicon Labs products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each
specific device, and “Typical” parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon
Labs reserves the right to make changes without further notice to the product information, specifications, and descriptions herein, and does not give warranties as to the
accuracy or completeness of the included information. Without prior notification, Silicon Labs may update product firmware during the manufacturing process for security or
reliability reasons. Such changes will not alter the specifications or the performance of the product. Silicon Labs shall have no liability for the consequences of use of the infor-
mation supplied in this document. This document does not imply or expressly grant any license to design or fabricate any integrated circuits. The products are not designed or
authorized to be used within any FDA Class III devices, applications for which FDA premarket approval is required or Life Support Systems without the specific written consent
of Silicon Labs. A “Life Support System” is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected to result in
significant personal injury or death. Silicon Labs products are not designed or authorized for military applications. Silicon Labs products shall under no circumstances be used
in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons. Silicon Labs disclaims
all express and implied warranties and shall not be responsible or liable for any injuries or damages related to use of a Silicon Labs product in such unauthorized applications.
Note: This content may contain offensive terminology that is now obsolete. Silicon Labs is replacing these terms with inclusive language wherever possible. For more
information, visit www.silabs.com/about-us/inclusive-lexicon-project
Trademark Information
Silicon Laboratories Inc. ® , Silicon Laboratories ® , Silicon Labs ® , SiLabs ® and the Silicon Labs logo ® , Bluegiga ® , Bluegiga Logo ® , EFM ® , EFM32 ® , EFR, Ember® , Energy Micro, Energy
Micro logo and combinations thereof, “the world’s most energy friendly microcontrollers”, Redpine Signals ® , WiSeConnect , n-Link, ThreadArch ® , EZLink® , EZRadio ® , EZRadioPRO ® ,
Gecko ® , Gecko OS, Gecko OS Studio, Precision32 ® , Simplicity Studio ® , Telegesis, the Telegesis Logo ® , USBXpress ® , Zentri, the Zentri logo and Zentri DMS, Z-Wave ® , and others
are trademarks or registered trademarks of Silicon Labs. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings. Keil is a registered
trademark of ARM Limited. Wi-Fi is a registered trademark of the Wi-Fi Alliance. All other products or brand names mentioned herein are trademarks of their respective holders.
www.silabs.com