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.

  • 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,
KW47B42ZB2AFTA, KW47B42ZB3AFTA, KW47B42ZB6AFTA,
KW47B42ZB7AFTA, KW47Z42082AFTA, KW47Z42092AFTA,
KW47Z420B2AFTA, KW47Z420B3AFTA

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

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

Wireless 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, such as, Low power, Over the Air (OTA) Firmware update, File System, Security, Sensors, Serial Connectivity Interface (FSCI), and others. The Connectivity Framework modules are located in the middleware\wireless\framework SDK folder.

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-pvw1).

  • Bluetooth LE Host Stack and Applications

    Added

    • Threshold for the invalid number of Anchor Monitor events received by the target anchor

    • Experimental Monitoring Advertisers feature in Bluetooth LE Host

    • Experimental Randomized RPA feature in Bluetooth LE Host

    • Application defines for default connection and default advertising tx power

    Improved

    • Miscellaneous applications updates

    • Central applications now wait for status of Encrypt procedure in case of bonded device

    • Logging data on localization applications

    • PCT rotation calibration added to localization apps

    • Configured CS Reflector to start the CS procedure with the tdm command and updated the documentation

    • Populated the optionalSubfeaturesSupported field correctly

    • Prevented CORE 0 from entering deep sleep while LCE is computing by setting the low power mode constraint to PWR_WFI during LCE computation and releasing it afterwards

    • Implemented in CCC_CS, Channel Sounding data transfer from the anchor to the device

    • Documentation miscellaneous updates

    • Updated armgcc ld linker files to take gUseInternalStorageLink_d flag value into consideration

    Fixed

    • Memory issue when setting scan response data would return an error status from the LL

    • Set advertises with the public address, overwritten by a previously used random address on receiving the Advertising Set Terminated event

    Changed

    • Updated memory configuration: replaced the extended heap area in the available SMU2 memory with a 24KB array in the data1

    • Removed redundant cached remote capabilities write on reflectors, as the initiator will always trigger a capabilities exchange and trying to write cached capabilities afterwards results in an HCI error

    • Details can be found in github repository nxp-mcuxpresso/mcuxsdk-middleware-bluetooth-host/CHANGELOG.md.

  • Bluetooth LE controller

    • Channel sounding updates:

      • Fixed cases where the procedure was dropped due to connection collisions.

      • Fixed an issue where the CSSubeventResultIndication event was missing during the second CS procedure.

      • Fixed CS termination procedure collision handling.

      • Added phase rotation vendor command.

    • Fixed an issue where the procedure timeout did not expire in some cases, causing the device to remain connected if the peer device did not respond to the procedure initiated by the device.

    • Fixed connection establishment issues with LE Coded PHY when the scan window interval was set to 2.5 ms.

    • Fixed connection establishment issues with LE Coded PHY when four peripheral devices attempted to connect to a single central device, resulting in connection collisions.

    • Fixed connection parameter request that was incorrectly rejected when the minimum and maximum connection intervals differed, and no preferred periodicity or offset was set.

  • Transceiver drivers (XCVR)

    • Added support for Bluetooth LE Channel Sounding.

    • Added API to control PA ramp type and duration.

  • Connectivity framework (compared to 25.09.00 release)

    Major Changes - [wireless_mcu] Reduced RPMSG buffer payload size from 496 to 270 bytes on KW43/KW47 platforms, saving 226 bytes per buffer (1808 bytes total with 4 buffers on each core). This optimization is possible as rpmsg-lite no longer requires buffer sizes to be powers of two. - [configs] Introduced RL_ALLOW_CUSTOM_SHMEM_CONFIG flag in rpmsg_config.h to enable connectivity applications to use platform_set_static_shmem_config() and platform_get_custom_shmem_config(). Minor Changes - [wireless_mcu] Updated radio power management configuration with PLATFORM_InitRadio() API on kw47/mcxw72 platforms - [DBG] Added NBU assert indication support to host with line/file info using debug structure. - [DBG] Enhanced NBU debug framework with warning detection and notification capabilities. Extended NBUDBG_StateCheck() to monitor NBU warnings via PLATFORM_IsNbuWarningSet() with callback support for proactive warning monitoring. - [Sensors] Added periodic temperature measurement support allowing app/host to request periodic temperature measurement. - [Sensors] Added markdown documentation explaining periodic measurement functionality upon NBU requests. - [SecLib_RNG] Added documentation for asynchronous seed handling using RNG_NotifyReseedNeeded() and SecLib implementation flavors (Software, EdgeLock, PSA Crypto, MbedTLS). - [PSA] Simplified PSA configuration files and reduced imports/definitions for wireless MCU platforms. - [NVS] Enhanced debug capabilities by adding CONFIG_NVS_LOG_LEVEL and improved LOG macros to adapt to PRINTF limitations. - [wireless_mcu][wireless_nbu] Migrated TSTMR implementation to use SDK fsl_tstmr driver for better maintainability and consistency. This migration replaces custom TSTMR register definitions with official SDK driver APIs while maintaining existing PLATFORM_* API compatibility. Bug fixes - [wireless_mcu] Fixed FRO32K as 32 kHz clock source with deferred OSC32K switching to improve initialization performance after warm reset. - [wireless_mcu] Added wait loop for NBU power domain readiness in PLATFORM_InitNbu() to prevent race conditions when accessing NBU power domain in applications without NBU images. - [wireless_mcu] Fixed external flash blank check procedure for LSPI external NOR Flash by correcting PLATFORM_ExternalFlashAreaIsBlank() to read from RAM buffer and perform erase pattern comparison in RAM with optimized 4-byte step loops. - [NVS] Removed mflash dependency from NVS external flash port and fixed internal flash blank check of unaligned flash data. - [SecLib_RNG][mbedtls] Enhanced ECDH context preservation across low-power transitions on KW45_MCXW71 and KW47_MCXW72 platforms using export/import APIs to ensure cryptographic context is retained when hardware accelerator loses internal memory during power-down mode. - [wireless_nbu] Fixed incorrect FRODIV values that were causing reduced peripheral clocks by updating PLATFORM_FroDiv[] mapping array to prevent over-division of flash APB and RF_CMC clocks.

Details can be found in CHANGELOG.md

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.

  • Missing chained packets during scanning.

  • Need to add a dummy nbu request to wake-up NBU core during asynchronous wakeup to avoid low power race condition issue (ie: for NBU ramlog dump from shared memory).

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.

  • Periodic Advertising Response scheduling is unoptimized, which could result in missing a few responses.

  • The PAwR event skipping feature is not correctly supported.

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.

  • Channel Sounding is not supported with internal FRO32. Known issues:

  • When CS_SYNC=2Mbps, sensitivity drops at –85dBm (vs –95dBm for 1Mbps).

  • NADM may report false positive attacks when using localization board at 2Mbps.

  • 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.

  • Wireless_ranging stability issue in test mode 2Mbps with RTT random sequence payload 128 bits.

  • 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.

    • Temperature variation: RTT variation of +/-2m is observed based on temperature.

Other limitations

  • The following Connectivity Framework configurations are Experimental and not recommended for mass production:

    • Power down on application power domain.

  • A hardfault can be encountered when using fsl_component_mem_manager_light.c memory allocator and shutting down some unused RAM banks in low power. It is due to a wrong reinitialization of ECC RAM banks. To be sure not to reproduce the issue, gPlatformShutdownEccRamInLowPower should be set to 0.

  • GenFSK Connectivity_test application is not operational with Low Power enabled.

  • Serial manager is only supported on UART (not I2C nor SPI).

  • The --no-warn-rwx-segments cannot been recognized on legacy MCUXpresso IDE versions.

    The --no-warn-rwx-segments option in MCUXpresso projects should be manually removed from the project settings if someone needs to use legacy (< 11.8.0) MCUXpresso IDE versions

  • If 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).

  • Low power reference design applications are not supported for the armgcc toolchain from zip archives. Please use MCUXpresso IDE or IAR toolchains for development using these applications.

Latest MCUX IDE 24.9.25 cannot support KW47 multicore compiling

The latest MCUX IDE 24.9.25 cannot support KW47 multicore compiling, users need to upgrade to the Linkserver_24.10.22 or higher version, and change the LinkServer path configuration in the MCUX IDE. Two ways to change the LinkerSever path in the MCUX IDE.

Option 1 (recommended): Using the custom Path

Option 2: Using the command-line to change the settings

  1. Close the MCUXpresso IDE if it is open.

  2. Execute the following command:

    <path_to_MCUXpressoIDE_installation_folder>\ide\mcuxpressoide -application com.nxp.mcuxpresso.headless.application -nosplash -run set.config.preference com.nxp.mcuxpresso.core.debug.support.linkserver:linkserver.path.default_path=<path_to_LinkServer_installation_folder>
    

    where:

    • <path_to_MCUXpressoIDE_installation_folder> is the folder where the MCUXpresso IDE is installed.

    • <path_to_LinkServer_installation_folder> is the folder where the new/custom LinkServer is installed.

Example:

C:\NXP\MCUXpressoIDE_24.9.25\ide\mcuxpressoide -application com.nxp.mcuxpresso.headless.application -nosplash -run set.config.preference com.nxp.mcuxpresso.core.debug.support.linkserver:linkserver.path.default_path=c:\NXP\LinkServer_24.10.15

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.