MCUXpresso SDK Documentation

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

  • MCUXpresso IDE, Rev. 25.06.xx

  • MCUXpresso for VS Code v26.06

  • 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

KW45B41Z-LOC

KW45B41Z83AFPA, KW45B41Z83AFTA

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 (\Five 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:

    • Inline PCT Transfer (IPT)

    • RTT_PHY capability

    • Channel Sounding Enhancement 1

    • Channel Sounding TX/SNR (18dB, 21 dB, 24 dB and 27dB)

    • Channel Sounding PHY 2Mbps BT2.0

    • Channel Sounding additional supported timings:

      • T_PM=10us

      • T_IP1/T_IP2=60, 50, 30

      • T_FCS=120, 100, 60

    • LE Power Control (\LEPC). Requires vendor command to enable.

    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)

    • LE Enhanced Connection Update

      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.

Bluetooth LE Host Stack and Applications#

The Bluetooth LE Host Stack component provides an implementation for a Bluetooth 6.0 mandatory and some optional, proprietary, and experimental features. The Bluetooth LE Host Stack component provides application examples, services, and profiles.

Main features supported:

  • Automotive Compliance

  • MISRA Compliance

  • HIS CCM <= 20

  • Advanced Secure Mode

  • Enhanced ATT

  • GATT Caching

  • GCC Libraries

  • IAR Libraries

  • Bluetooth LE Peripheral Libraries

  • Bluetooth LE Central Libraries

  • Bluetooth LE Full Host Features Libraries

  • Bluetooth LE Host Optional Features Libraries

  • Bluetooth LE Host Mandatory Features Libraries

  • BareMetal and FreeRTOS Support

  • Full Privacy Support

  • NCP Mode - FSCI Application

  • Enhanced Notifications

  • Dynamic Database

  • OTA Support - Sample Applications

  • Decision based Advertising Filtering (DBAF)

  • Advertising Coding Selection (ACS)

  • Periodic Advertising with Responses (PAwR)

  • Encrypted Advertising Data (EAD)

  • Monitoring Advertisers - Experimental feature

  • Randomized RPA - Experimental feature

  • Intrusion Detection System (IDS) - Experimental feature

    Note: The CDE(Complex-domain Distance Estimation) algorithm is an experimental feature intended only for testing purposes. It is not maintained and must not be included in production environments.

    Parent topic:Wireless connectivity middleware overview

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.

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.

NXP PSA CRYPTO DRIVER#

PSA crypto driver for crypto library integration via driver wrappers

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

    • ‘Monitoring Advertisers’ support in the ‘fsci_black_box’ and ‘ble_shell’ applications

    Fixed

    • 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

    • Fixed incorrect SCA value (always 500 ppm) reported in LE connection complete event.

    • Fixed stale byte reported in LE Extended Advertising report when scan response data shrinks between consecutive advertisements.

    • Fixed new anchor point of connection update overlapping with existing connection.

    • Fixed Periodic Advertising EBQ test failures after reset due to unreleased buffer and signals (HCI/CCO/BI-124-C, HCI/DDI/BI-50-C).

    • Fixed issue where the controller failed to reject LL PDUs larger than 26 bytes when no feature exchange was performed (LL/CON/CEN/BV-108-C).

    • Fixed invalid RSSI value from 0xFF to 0x7F in enhanced notification event.

    • Fixed KW47 Tx output power exceeding 10 dBm causing RFPHY qualification failures (RFPHY/TRM/BV-01-C, RFPHY/TRM/BV-19-C).

    • Added new HCI vendor command to retrieve BLE Tx statistics.

    • Added HCI command to transmit continuously modulated or unmodulated signal for RF tests. LL Extended Feature Set:

    • Fixed Extended Feature Set EBQ test failures (HCI/CIN/BV-15-C, LL/CON/CEN/BV-164-C, LL/CON/CEN/BV-165-C, LL/CON/CEN/BV-166-C, LL/CON/PER/BV-168-C, LL/CON/PER/BV-169-C, LL/CON/PER/BV-170-C). Periodic Advertising Sync Transfer:

    • Fixed Periodic Advertising sync lost event not generated after losing sync in PAST mode or when sync timeout smaller than Periodic Advertising interval.

    • Fixed sync offset management when value exceeds maximum (PAwR intervals in seconds range).

  • Transceiver Drivers (XCVR)

    • Added API to control Power Amplifier (PA) ramp type and duration.

  • Connectivity framework

    • Major Changes

      • [NVM] Enhanced robustness of NVM MIT (Meta Information Tag) operations with improved validation and error handling. Added checksum validation feature controlled by gNvmMetaCheckSum_d compilation switch. Systematically validates MIT fields before use and triggers page switch if corruption detected. Fixed mNvTableSizeInFlash tracking when table entries are modified. Refactored NvWriteRecord() and added NvModuleSwitchPage() for better ECC fault handling. Added NvSetChecksumEnable() API to control feature at runtime. The feature is disabled by default.

      • [SecLib_RNG] Refactored SecLib mutex declaration and made Lock/Unlock functions public. Changed return type from osa_status_t to secResultType_t for SecLib mutex functions and moved mutex Lock/Unlock function declarations to SecLib.h.

      • [SecLib_RNG][PSA] Activated PSA opaque execution with s200 and its secure key storage. Switched from PSA transparent mode to opaque mode for all functions except CMAC_LsbFirstInput() which is currently not supported in opaque version. Optimized SecLib_psa_config to fully accelerate all PSA_WANT_KEY_TYPE_ECC_KEY_PAIR functions.

    • Minor Changes

      • [wireless_mcu][ble] Refactored PLATFORM_SetBleMaxTxPower() API moved from platform file to fwk_platform_ble.c for Zephyr compatibility.

      • [wireless_mcu] Modified PLATFORM_GetBDAddr() to return consistent address across calls when gPlatformUseHwParameter_d is disabled.

      • [Common] Enhanced external flash API with C++ compatibility by adding extern “C” guards.

      • [DBG] Disabled DTEST signals and GPIO debug for debug target to prevent significant low power current consumption degradation.

      • [kw45_k32w1_mcxw71][kw47_mcxw72] Removed use of SIRCCSR SDK definitions for wakeup by UART0.

      • [platform] Added platform abstraction macros PLATFORM_GET_IPSR, PLATFORM_SET_INT_MASK, and PLATFORM_CLEAR_INT_MASK to allow platform-specific customization of IPSR read and interrupt mask functions while maintaining backward compatibility.

    • Bug Fixes

      • [OTA][Coverity] Sanitized the pImageOffset parameter in OTA functions to avoid possible overflow.

      • [SecLib] Fixed multiplication buffer pointer initialization for segmented ECDH operations. Fixed EC P256 multistep operations using SW legacy library. Fixed ECDH_P256_ComputeDhKeySeg() and ECDH_P256_GenerateKeysSeg() argument checking across SecLib variants. Fixed SecLib_AES_CMAC_PRF_128() behavior for SecLib sss variant that tolerated VK length to be 0. Removed unreachable code from SecLib_HMAC_SHA256_Finish().

      • [Platform] Fixed TSTMR timestamp 64 bit read compilation failure when gPlatformTstmr32Bit_d is undefined.

      • [NVM] Fixed initialization procedure in InitNVMConfig() to validate start_addr and partition_size.

      • [wireless_mcu][wireless_nbu] Fixed timestamp initialization to ensure a defined value when the tstmrId is out of range.

      • [SecLib_RNG] Corrected copyright header in seclib.c.

      • [MISRA] Various MISRA and CERT-C compliance fixes in NVM module.

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.

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.

  • When fro32k is used, the define BOARD_32KHZ_SRC_CLK_ACCURACY shall be set in application (#define BOARD_32KHZ_SRC_CLK_ACCURACY 0).

  • It is not possible to establish more than 16 connections (will be fixed in next release).

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

  • 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): Information:

  • RF Bandwidth Occupancy and Connections/Channel Sounding Activities: The RF bandwidth occupancy is tightly coupled with configured activities, including the number of connections, connection event durations, the number of Channel Sounding (CS) procedures, and related CS parameters (e.g., subevent length, repeat mode). The Link Layer Scheduler is responsible for allocating RF bandwidth to these activities, optimizing bandwidth utilization. However, because each activity operates on its own timing constraints, some RF collisions are expected. This is inherent to the Bluetooth LE protocol, particularly when peripheral roles are configured, as anchor placement is controlled by the central peer devices. The application controls several timing parameters, such as connection interval and subevent length. To optimize user experience, the Link Layer expects the application to adjust these parameters to achieve the best RF bandwidth occupancy with the lowest occurrence of RF collisions.

Limitations:

  • RTT with Sounding Sequence is not supported.

  • Maximum 6 Channel Sounding procedures are supported 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:

  • NADM RTT payload 96bits BT2.0 raises false positives.

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

LIN New Project Wizard (NPW) issue#

  • The lin (LIN Driver) and lin_stack (LIN Stack Driver) drivers components should not be enabled at the same time while creating the new projects in MCUXpresso. Otherwise there will be the compiling issue.

  • The lin_stack (LIN Stack Driver) is not actually a driver. It is an adapt layer for LIN Stack middleware to adapt to the low level lpuart driver and cannot be used in NPW alone. So, select the LIN Stack middleware and then the lin_stack is selected automatically since it is required by LIN Stack middleware. Besides, customer need to add the lin_cfg.c/h in application layer for user definition of frame data and add FSL_SDK_LIN_STACK_ENABLE=1 in MCUXpresso preprocessor, otherwise the compiling of LIN Stack will report error.

Flash ROMAPI#

Note that:

  • If using ROM API for internal flash or SPI NOR operation, reserve RAM location 0x200030A0 - 0x200032CF (0x300030A0 - 0x300032CF).

  • If using kb API, reserve 0x20002000 - 0x200032FF (0x30002000 - 0x300032FF).

Other limitations#

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

    • Power down on application power domain.

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

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

  • If the FRO32K is configured as the clock source of the CM33 Core then the debug session will block in IAR 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.

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.

The freertos_lpuart example does not complete successfully#

The example hangs after console output ‘FreeRTOS LPUART driver example’.

Examples: freertos_lpuart

Affected toolchains: All

The example does not perform as expected (Ticks do not printed on the console or the application does not wake up from the sleep mode).

Examples: freertos_tickless

Affected toolchains: All

Implementation Status of el2go Examples#

El2go examples have been implemented but have not been verified on specified platforms. The only verification performed so far is through automation, where we check whether the application boots successfully. However, no el2go-specific verification has been conducted to confirm functionality beyond the boot process.

Examples: el2go_blob_test, el2go_import_blob

Affected toolchains: All