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.

The SDK 25.12.00 release has been fully validated with IAR 9.60.4. However, since IAR 9.60.4 does not officially support the MCXW23 device, you must install an additional IAR patch, enabling you to build and debug MCX W23 SDK projects in the IDE. IAR patch is distributed via https://mcuxpresso.nxp.com. Download the archive file iar_support_patch_mcxw23x_25_09_00.zip. Then, unzip the file and copy the content into your IAR folder structure (typically within C:/Program Files/IAR systems). IAR 9.70.2 now officially supports the MCXW23 device. If you want to use IAR 9.70.2 to build your project, you do not need to install any additional IAR patch. The SDK will be fully validated with IAR 9.70.2 in the next 26.03.00 release cycle.

  • IAR Embedded Workbench for Arm, version is 9.70.4

  • Keil MDK, version is 5.43a

  • 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

MCXW23-EVK

MCXW235AIHNAR, MCXW235AIUKAR, MCXW235BIHNAR,
MCXW235BIUKAR, MCXW236AIHNAR, MCXW236AIUKAR,
MCXW236BIHNAR, MCXW236BIUKAR

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#

CMSIS DSP Library#

The MCUXpresso SDK is shipped with the standard CMSIS development pack, including the prebuilt libraries.

mbedTLS#

mbedtls SSL/TLS library v3.x

TF-M#

Trusted Firmware - M Library

PSA Test Suite#

Arm Platform Security Architecture Test Suite

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

Bluetooth Synopsys Controller#

  • Main features supported:

    • All roles that the Bluetooth specification specifies:

      • Broadcaster

      • Observer

      • Peripheral

      • Central

    • Up to 4 simultaneous connections supported

    • Bluetooth Low Energy features:

      • Device privacy and network privacy modes (version 5.0)

      • Advertising extension PDUs (version 5.0)

      • Anonymous device address type (version 5.0)

      • Up to 2 Mbps data rate (version 5.0)

      • Long range (version 5.0)

      • High-duty cycle, nonconnectable advertising (version 5.0)

      • Channel selection algorithm #2 (version 5.0)

      • High output power (version 5.0)

      • Advertising channel index (version 5.1)

      • Periodic advertising sync transfer (PAST) (version 5.1)

      • Supports LE power control feature (version 5.2)

    • Device filtering through programmable size white lists

    • Direct test mode

    • RF antenna: 50 Ω single-ended

    • RF receiver characteristics:

      • Sensitivity −94 dBm in Bluetooth Low Energy 2 Mbps

      • Sensitivity −97 dBm in Bluetooth Low Energy 1 Mbps

      • Sensitivity −100 dBm in Bluetooth Low Energy 500 kbps

      • Sensitivity −102 dBm in Bluetooth Low Energy 125 kbps

      • Accurate RSSI measurement with ±3 dB accuracy

    • Flexible RF transmitter level configurability:

      • TX mode 1 (TXM1): Range from −31 dBm to +2 dBm when VDD_RF exceeds 1.1 V

      • TX mode 2 (TXM2): Range from −28 dBm to +6 dBm when VDD_RF exceeds 1.7 V

LittleFS#

LittleFS filesystem stack

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 (26.03.00-pvw2).

  • Bluetooth Synopsys controller

    • Fix scan response not always sent when filtering duplicates is enabled

    • Avoid network privacy if Peer IRK is all zero

    • Take also SID into account when adding a unique entry in the periodic advertiser list

    • Reject peer random static addresses in the resolving list when it does not contain 11 as MSb

  • Bluetooth LE

    • Major Changes

      • Added support for switching to the coded PHY mode.

    • Minor Changes

      • [PSA] Added the project_segment Kconfig option to enable selection of an optimized PSA configuration for Bluetooth LE applications.

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

      • [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().

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

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

Limitations when creating a new FreeRTOS-based C/C++ project#

Due to the missing component dependencies definition, there are several limitations when creating a new FreeRTOS-based C/C++ project in MCUXpresso IDE. When the FreeRTOS kernel component is selected (under Operating Systems/RTOS/Core menu), you must manually select the FreeRTOS cm33 non trustzone port component (under Middleware/RTOS menu) for projects without TrustZone. For FreeRTOS TrustZone projects creation, the support is not ready.

HCI black box application for MCXW23 – Insufficient stack size on iar and armclang#

hci_bb_mcxw23 binaries compiled using iar or armclang toolchain have an insufficient stack size and can crash when issuing HCI commands requiring a bigger stack size like LE_Extended_Advertising_Enable. Binaries compiled with gcc don’t suffer from this issue.

Wireless UART application – Bluetooth Low Energy advertising and connection loss issue#

When using the Wireless UART application with default settings, functionality is as expected. However, the following issue occurs when the Bluetooth Low Energy advertising interval is set to 20 milliseconds and the connection interval is set to 7.5 milliseconds: After two devices establish a connection, the central device fails to start advertising to a third device after a button press. The HCI command to start advertising returns success, but the device does not transmit any advertising packets. Additionally, the supervision timeout causes the existing connection to drop unexpectedly.

Bluetooth Synopsys Controller#

  • Stability observation during extended testing The llhwc_set_adv_param function shows unexpected behavior during extended sequences of link layer tests, typically after 1.5 hours of continuous execution without a hardware reset.

    • This rare behavior occurs only under specific test conditions.

    • The behavior relates to the extended advertising feature.

    • This behavior does not impact regular usage scenarios.

Health care iot peripheral freestanding application creation issue#

The CMakeList.txt file to ensure correct application files work with different health_care_iot_peripheral applications (bm/freertos/threadx). The project now includes a hciot_peripheral.cmake file that contains common application files. This modification creates problems when you build a freestanding application without the –bf option.

  • without –bf option:

    • The application related files are no longer part of the project creation. The project uses the files part of the repo

    • This can be resolved by using the –bf option.

  • with –bf option:

    • the application files are placed in the directory and in the root project directory. And you will find 2x main.c (with different content), one in the project root and one in the directory.

      • Only the version in the directory is correct, and you can safely remove the main.c in the project root directory.

    • Compilation if failing in case of the threadx variant

      • Safety.c is present twice in the project. The version in the project root directory is the correct version, You need to remove the safety.c in the directory.

      • Together with the removal of the safety.c file in the directory you also need to modify the /board_files.cmake and remove safety.c from the mcu_add_source() (line 110).

The MCUXpresso plugin for VS Code allows you to create a freestanding application that includes board files. Configure this feature in the MCUXpresso for VS Code settings.

Average current consumption#

Compared to SDK release 26.03.00, the average current consumption on MCX W23 may present limited increase depending on how frequently the device wakes up. For example, during an active Bluetooth LE connection the average current may increase by around 5%, with the general average being lower based on wakeup and connection frequency.