MCUXpresso SDK Release Notes#
Overview#
The MCUXpresso SDK is a comprehensive software enablement package designed to simplify and accelerate application development with Arm Cortex-M-based devices from NXP, including its general purpose, crossover and Bluetooth-enabled MCUs. MCUXpresso SW and Tools for DSC further extends the SDK support to current 32-bit Digital Signal Controllers. The MCUXpresso SDK includes production-grade software with integrated RTOS (optional), integrated enabling software technologies (stacks and middleware), reference software, and more.
In addition to working seamlessly with the MCUXpresso IDE, the MCUXpresso SDK also supports and provides example projects for various toolchains. The Development tools chapter in the associated Release Notes provides details about toolchain support for your board. Support for the MCUXpresso Config Tools allows easy cloning of existing SDK examples and demos, allowing users to leverage the existing software examples provided by the SDK for their own projects.
Underscoring our commitment to high quality, the MCUXpresso SDK is MISRA compliant and checked with Coverity static analysis tools. For details on MCUXpresso SDK, see MCUXpresso-SDK: Software Development Kit for MCUXpresso.
MCUXpresso SDK#
As part of the MCUXpresso software and tools, MCUXpresso SDK is the evolution of Kinetis SDK, includes support for LPC, DSC,PN76, and i.MX System-on-Chip (SoC). The same drivers, APIs, and middleware are still available with support for Kinetis, LPC, DSC, and i.MX silicon. The MCUXpresso SDK adds support for the MCUXpresso IDE, an Eclipse-based toolchain that works with all MCUXpresso SDKs. Easily import your SDK into the new toolchain to access to all of the available components, examples, and demos for your target silicon. In addition to the MCUXpresso IDE, support for the MCUXpresso Config Tools allows easy cloning of existing SDK examples and demos, allowing users to leverage the existing software examples provided by the SDK for their own projects.
In order to maintain compatibility with legacy Freescale code, the filenames and source code in MCUXpresso SDK containing the legacy Freescale prefix FSL has been left as is. The FSL prefix has been redefined as the NXP Foundation Software Library.
Development tools#
The MCUXpresso SDK was tested with following development tools. Same versions or above are recommended.
SDK 25.12.00 is the final release that includes MCUXpresso IDE support for KW4x devices. Beginning with SDK 26.x.x, MCUXpresso IDE will no longer be supported for KW4x development, and MCUXpresso for Visual Studio Code will become the recommended integrated development environment.
IAR Embedded Workbench for Arm, version is 9.60.4
MCUXpresso IDE, Rev. 25.06.xx
MCUXpresso for VS Code v25.09
GCC Arm Embedded Toolchain 14.2.x
Supported development systems#
This release supports board and devices listed in following table. The board and devices in bold were tested in this release.
Development boards |
MCU devices |
|---|---|
KW47-EVK |
KW47B42Z83AFTA, KW47B42Z96AFTA, KW47B42Z97AFTA, |
MCUXpresso SDK release package#
The MCUXpresso SDK release package content is aligned with the silicon subfamily it supports. This includes the boards, CMSIS, devices, middleware, and RTOS support.
Device support#
The device folder contains the whole software enablement available for the specific System-on-Chip (SoC) subfamily. This folder includes clock-specific implementation, device register header files, device register feature header files, and the system configuration source files. Included with the standard SoC support are folders containing peripheral drivers, toolchain support, and a standard debug console. The device-specific header files provide a direct access to the microcontroller peripheral registers. The device header file provides an overall SoC memory mapped register definition. The folder also includes the feature header file for each peripheral on the microcontroller. The toolchain folder contains the startup code and linker files for each supported toolchain. The startup code efficiently transfers the code execution to the main() function.
Board support#
The boards folder provides the board-specific demo applications, driver examples, and middleware examples.
Demo application and other examples#
The demo applications demonstrate the usage of the peripheral drivers to achieve a system level solution. Each demo application contains a readme file that describes the operation of the demo and required setup steps. The driver examples demonstrate the capabilities of the peripheral drivers. Each example implements a common use case to help demonstrate the driver functionality.
RTOS#
FreeRTOS#
Real-time operating system for microcontrollers from Amazon
Middleware#
GenFSK link layer#
The Generic FSK protocol enables radio operation using a custom GFSK/GMSK or MSK modulation format.
Main Features supported:
Highly configurable packet structure
Optimized Sequence Command Set
High-precision timebase to maintain network timing
Two timer-compare mechanisms for Interrupt Generation and Sequence Launching
Hardware automation for packet transmit and receive, CRC and Whitening
Up to four network addresses to synchronize to, can be 8-bit, 16-bit or 32-bit
Packet Lengths up to 2047 Bytes
Support complex auto-sequence, like CCA before TX, Auto-ACK, TR.
Many operating modes can support the sending and receiving of multiple protocol packets, such as Bluetooth LE.
Wireless XCVR#
The XCVR component provides a base Transceiver Driver for the 2.4 GHz narrowband radio.
Bluetooth LE Controller#
Main features supported:
Peripheral Role
Central Role
Multiple PHYs (1 Mbps, 2 Mbps, Coded PHY)
Asymmetric Connections
Public/Random/Static Addresses
Network/Device Privacy Modes
Extended Advertising
Extended Scanning
Passive/Active Scanning
LE Encryption
LE Ping Procedure
HCI Test Interface
UART Test Interface
Randomized Advertising Channel Indexing
Sleep Clock Accuracy Update - Mechanism
ADI Field in Scan Response Data
HCI Support for Debug Keys in LE - Secure Connections
Main capabilities supported:
Simultaneous scanning 1 Mbps and Long Range
Scanning and advertising in parallel
24 connections as a central role
24 connections as a peripheral role
Any combination of central and peripheral roles (24 connections maximum)
8 connections with a 7.5 ms connection interval
Two advertising sets in parallel (\Four adv set as Early Access Release).
26 Accept List entries
36 Resolvable Private Address (RPA) entries
Up to two Chain Packets per Extended Advertising set
Enhanced Notification on end of - Scanning/Advertising/Connection events
Connection event counters associated to Bluetooth LE packet reception
Timestamp associated to Bluetooth LE packet reception
RF channel info associated to Bluetooth LE packet reception
NXP proprietary Bluetooth LE Handover feature
Decision Based Advertising Filtering (DBAF)
Advertising Coding Selection (ACS)
Periodic Advertising with Responses (PAwR) Additional features supported for KW47 and MCX W72 devices:
Channel Sounding Additional features supported as EAR (\Early Access Release) in the KW47 experimental build:
Channel Sounding TX/SNR. Additional features supported as EAR (\Early Access Release) in the KW45/KW47 experimental builds:
LE Test Mode Enhancement (\UTP/OTA).
LL Extended Feature Set.
Monitoring Advertisers.
Randomized Resolvable Private Address (\RPA).
Note: Project configuration enabling Experimental features on KW45 and MCX W71 requires the Radio Subsystem (NBU) Firmware to be reprogrammed with the firmware provided in the SDK under \middleware\wireless\ble_controller\bin\experimental\. For NBU programming steps, see the EVK Quick Start Guide and Secure Provisioning SDK (SPSDK) documentation.
Project configurations that require usage of the Bluetooth LE controller including all Bluetooth LE examples require the Radio Subsystem (NBU) Firmware to be re-programmed with the firmware provided in the SDK under middleware\wireless\ble_controller\bin.
Wireless Localization#
Localization
Connectivity framework#
The Connectivity Framework is a software component that provides hardware abstraction modules to the upper layer connectivity stacks and components. It also provides a list of services and APIs (see Supported services). The Connectivity Framework modules are located in the middleware\wireless\framework SDK folder.
Supported services#
FSCI - Framework Serial Communication Interface
FunctionLib - Common function library utilities
HWParameter - Hardware parameter management
LowPower - Low power mode management
ModuleInfo - Module information and versioning
NVS - Non-Volatile Storage
NVM - Non-Volatile Memory management
OtaSupport - Over-The-Air update support
SecLib_RNG - Security library and Random Number Generator
Sensors - Sensor abstraction layer
SFC - Smart Frequency Calibration
WorkQ - Work queue management
Supported platform#
KW45_MCXW71
KW47_MCXW72
MCXW23
RW61X
RT1060 and RT1170
i.MX RT595s
Advanced features supported on platforms#
KW45_MCXW71#
FRO32K with smart frequency calibration (see SFC)
Power down mode support (for evaluation only)
KW47_MCXW72#
FRO32K with smart frequency calibration (see SFC)
Power down mode support (for evaluation only)
Crystal 32M trimming with temperature
Debug module for NBU
Extended NBU support with SecLib and pseudo RNG support
CMSIS DSP Library#
The MCUXpresso SDK is shipped with the standard CMSIS development pack, including the prebuilt libraries.
TF-M#
Trusted Firmware - M Library
PSA Test Suite#
Arm Platform Security Architecture Test Suite
NXP PSA CRYPTO DRIVER#
PSA crypto driver for crypto library integration via driver wrappers
secure_storage#
secure_storage
EdgeLock SE050 Plug and Trust Middleware#
Secure subsystem library - SSS APIs
Multicore#
Multicore Software Development Kit
NXP IoT Agent#
NXP IoT Agent
mbedTLS#
mbedtls SSL/TLS library v3.x
mbedTLS#
mbedtls SSL/TLS library v2.x
LittleFS#
LittleFS filesystem stack
LIN Stack#
LIN Stack middleware
FreeMASTER#
FreeMASTER communication driver for 32-bit platforms.
Release contents#
Provides an overview of the MCUXpresso SDK release package contents and locations.
Deliverable |
Location |
|---|---|
Boards |
INSTALL_DIR/boards |
Demo Applications |
INSTALL_DIR/boards/<board_name>/demo_apps |
Driver Examples |
INSTALL_DIR/boards/<board_name>/driver_examples |
eIQ examples |
INSTALL_DIR/boards/<board_name>/eiq_examples |
Board Project Template for MCUXpresso IDE NPW |
INSTALL_DIR/boards/<board_name>/project_template |
Driver, SoC header files, extension header files and feature header files, utilities |
INSTALL_DIR/devices/<device_name> |
CMSIS drivers |
INSTALL_DIR/devices/<device_name>/cmsis_drivers |
Peripheral drivers |
INSTALL_DIR/devices/<device_name>/drivers |
Toolchain linker files and startup code |
INSTALL_DIR/devices/<device_name>/<toolchain_name> |
Utilities such as debug console |
INSTALL_DIR/devices/<device_name>/utilities |
Device Project Template for MCUXpresso IDE NPW |
INSTALL_DIR/devices/<device_name>/project_template |
CMSIS Arm Cortex-M header files, DSP library source |
INSTALL_DIR/CMSIS |
Components and board device drivers |
INSTALL_DIR/components |
RTOS |
INSTALL_DIR/rtos |
Release Notes, Getting Started Document and other documents |
INSTALL_DIR/docs |
Tools such as shared cmake files |
INSTALL_DIR/tools |
Middleware |
INSTALL_DIR/middleware |
What is new#
The following changes have been implemented compared to the previous SDK release version (25.12.00-pvw2).
Bluetooth LE Host Stack and Applications
Added
CCC and IoT Channel Sounding Localization applications on the GitHub repository
‘Monitoring Advertisers’ support in the ‘fsci_black_box’ and ‘ble_shell’ applications
Local average and remote average RSSI values to the CS measurement report
The “-Os” optimization flag to the ARMGCC release configuration for the NCP applications
Improved
Enabled low power support in the ‘loc_reader_host’ application
Fixed
‘loc_reader_host’ application event set issue
Missing handler for Version2 of the Set RPA Timeout command
Details can be found in github repository nxp-mcuxpresso/mcuxsdk-middleware-bluetooth-host/CHANGELOG.md.
Bluetooth LE controller
Channel sounding updates:
Fixed HCI_LE_CS_Config_Complete event which was not sent when rejecting the peripheral’s request in case of colliding procedure.
Adjusted RTT vs temperature compensation.
Periodic Advertising updates:
Fixed PerAdvSync skip scheduling.
Improved PAwR Responses (TX & RX) instant.
Fixed calculation of the count parameters in Periodic Advertising Subevent Data Request.
Fixed a corner case where LL_CONNECTION_PARAM_REQ is immediately followed by LL_TERMINATE_IND.
Transceiver drivers (XCVR)
Added support for Bluetooth LE Channel Sounding.
Added API to control PA ramp type and duration.
Connectivity framework
Major Changes - [wireless_mcu][wireless_nbu] Replaced interrupt masking macros with static inline functions
PLATFORM_SetInterruptMask()andPLATFORM_ClearInterruptMask()to ensure consistent BASEPRI value handling across all compilers. This addresses compiler-dependent behavior issues with the previous macro implementation. - [wireless_mcu] Added BASEPRI-based interrupt masking inPLATFORM_RemoteActiveRel()to allow high-priority IRQs while ensuring only IMU0 or thread context can call this function. - [wireless_mcu] IntroducedgPlatformUseHwParameter_dcompile flag to allow builds without HWParameter section. When undefined or set to 0, crystal trimming functions conditionally access HWParameters only when required. Minor Changes - [kw47_mcxw72] Introduced platform-specific library for KW47/MCXW72 platforms. - [kw47_mcxw72] Support for additional KW47 phantoms including ZB2/ZB3/ZB6/ZB7 and Z83/Z96/Z97. - [kw47_mcxw72] Removed SH_MEM_TOTAL_SIZE override as it is now automatically calculated to match rpmsg-lite configuration. - [wireless_mcu] Set RL_BUFFER_PAYLOAD_SIZE to word-aligned value as expected by rpmsg-lite. - [wireless_mcu] Added system-generated HCI vendor events capability for debug and diagnostic purposes. - [DBG] Added debug structure transmission over HCI vendor events withNBUDBG_ConfigureHciVendorEvent()API to enable/disable the feature. - [DBG] Added debug structure versioning and logging buffer address/size information to debug structure. - [DBG] Removed 15.4 region from debug structure as not supported on KW47. - [DBG] Added stack overflow detection for armv8_m_mainline architecture. - [Platform] Simplified enablement of reset features via pin detection - Automatically selectsgUseResetByLvdForce_cwhengAppForceLvdResetOnResetPinDet_dis enabled. - Automatically selectgUseResetByDeepPowerDown_cwhengAppForceDeepPowerDownResetOnResetPinDet_dis enabled. - [RNG] ReplacedgRngHasSecLibDependency_dcompilation switch withgRngUseSecLib_d. Bug fixes - [wireless_mcu] Fixed race condition inPLATFORM_RemoteActiveRel()by adding verification loop to confirm NBU core execution before releasing power domain. - [wireless_mcu] Added instruction synchronization barrier (__ISB()) after interrupt re-enable inPLATFORM_RemoteActiveRel()to ensure pending interrupts execute between critical sections. - [wireless_mcu] Fixed external IO voltage isolation issue during low-power initialization - isolation is now cleared at init to ensure proper behavior. - [wireless_mcu] Replaced spin-wait loops with event-based synchronization in NBU communication APIs. Added mutex protection toPLATFORM_NbuApiReq()andPLATFORM_GetNbuInfo()to prevent race conditions and deadlocks when multiple tasks call these APIs concurrently. - [wireless_mcu] Fixed OSA bare metal event race condition in ICS where auto-clear event feature could cause tasks to become permanently stuck. Disabled auto-clear feature in bare metal builds and manually clear event flags afterOSA_EventWait()returns successfully. - [NVM] FixedNvIdle()to prevent looping for more operations than the queue size. - [NVS] Fixed blank check procedure to return false (non-blank) when checking a 0 length area. - [NVS] Made external and internal flash ports consistent. - [DBG] Fixed debug structure size and callback access issues - corrected memory placement overlap between reg_info and assert_info. - [MISRA] Various MISRA compliance fixes in NVM, HWParameter, LowPower, SecLib, Platform modules and IFR offset definitions.
Known issues#
This section lists the known issues, limitations, and/or workarounds.
FRO6M Clock Stability Issue#
According to ERRATA ERR052742, the FRO6M clock is not stable on some parts. FRO6M outputs lower frequency signal instead of 6MHz when device is reset or wakes up from low power. It can impact peripherals using it as a clock source.
Impact on TSTMR Module#
The TSTMR (Time Stamp Timer) module exclusively uses the FRO6M clock source. Due to the aforementioned stability issues, avoid using TSTMR-related APIs if your application requires high-precision timing.
Recommendation#
For applications requiring precise timing, consider using alternative timer modules that support more stable clock sources.
New project wizard compile failure#
The following components request the user to manually select other components that they depend upon in order to compile. These components depend on several other components and the New Project Wizard (NPW) is not able to decide which one is needed by the user.
Note: xxx means core variants, such as, cm0plus, cm33, cm4, cm33_nodsp.
Also for low-level adapter components, currently the different types of the same adapter cannot be selected at the same time. For example, if there are two types of timer adapters, gpt_adapter and pit_adapter, only one can be selected as timer adapter in one project at a time. Duplicate implementation of the function results in an error.
Only FreeRTOS is tested for RTOS support#
This release only supports the FreeRTOS kernel and a bare-metal non-preemptive task scheduler.
Disabled pairing and bonding for most sensor applications#
Most sensor applications have pairing and bonding disabled to allow a faster interaction with mobile applications. These two security features can be enabled in the app_preinclude.h header file.
Bluetooth LE#
Most sensor applications have pairing and bonding disabled to allow a faster interaction with mobile applications. These two security features can be enabled in the app_preinclude.h header file.
Bluetooth LE controller:#
The maximum Advertising data length is limited to 800 bytes.
The scanner may sporadically miss some chained packets.
Periodic Advertising with Responses (PAwR):
Periodic Advertising with Response (PAwR) is not supported with the configuration “Subevent Interval = Number of Response Slots x Response Slot Spacing with Response Slot Spacing = 0x2”.
Periodic Advertising placement with connection events is unoptimized.
The feature is not functional with the Free-Running Oscillator (FRO32K); it requires a 32 KHz Crystal Oscillator with accuracy less than 50 ppm.
KW45/MCXW71: No specific issues.
KW47/MCXW72: Channel Sounding (CS): Limitations:
RTT with Sounding Sequence is not supported.
LE 2M 2BT PHY is not supported.
Maximum 6 Channel Sounding procedures are supported in parallel.
Scheduling of activities may be non optimal when multiple Channel Sounding procedures are running in parallel.
Phase measurement bias is within certification range (<1.7x2πns) with KW47 EVK board. However, if different PCB or antenna matching is used, some bias may appear due to increased delay. Known issues:
When CS Subevents are configured very close from each other (<700us), some Subevents may be aborted with reason 0x3.
When CS offset is configured too close from ACL anchor point, the anchor point may not be served (TX on central or RX on peripheral will not happen). Ideally, CS Offset should be configured greater than 1ms.
RTT bias compensation:
For parts not properly configured at production (IFR blank), RTT bias may not be compensated properly. Consequently, an inaccuracy of +/-2m may be observed.
Other limitations#
The following Connectivity Framework configurations are Experimental and not recommended for mass production:
Power down on application power domain.
GenFSK
Connectivity_testapplication is not operational with Low Power enabled.Serial manager is only supported on UART (not I2C nor SPI).
The
--no-warn-rwx-segmentscannot been recognized on legacy MCUXpresso IDE versions.The
--no-warn-rwx-segmentsoption in MCUXpresso projects should be manually removed from the project settings if someone needs to use legacy (< 11.8.0) MCUXpresso IDE versionsIf the FRO32K is configured as the clock source of the CM33 Core then the debug session will block in both IAR, MCUX CMSIS-DAP while debugging. Use a lower debug wire speed, for example 1 MHz instead of the default one.
In IAR, the option is in Runtime Checking -> Debugger -> CMSIS DAP -> Interface -> Interface speed.
In MCUXpresso IDE, the option is in LinkServer Debugger -> Advanced Settings -> Wirespeed (Hz).
Examples hello_world_ns, secure_faults_ns, and secure_faults_trdc_ns have incorrect library path in GUI projects#
When the affected examples are generated as GUI projects, the library linking the secure and non-secure worlds has an incorrect path set. This causes linking errors during project compilation.
Examples: hello_world_ns, hello_world_s, secure_faults_ns, secure_faults_s, secure_faults_trdc_ns, secure_faults_trdc_s
Affected toolchains: mdk, iar
Workaround: In the IDE project settings for the non-secure (_ns) project, find the linked library (named hello_world_s_CMSE_lib.o, or similar, depending on the example project) and replace the path to the library with <build_directory>/<secure_world_project_folder>/<IDE>/, replacing the subdirectory names with the build directory, the secure world project name, and IDE name.