MCUXpresso SDK Documentation

MCUXpresso SDK Release Notes#

Development tools#

The MCUXpresso SDK was tested with following development tools. The same or later versions are recommended.

  • IAR Embedded Workbench for Arm, version is 9.70.4

  • 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

KW43-LOC

KW43B43ZC2MFT, KW43B43ZC3MFT, KW43B43ZC6MFT,
KW43B43ZC7MFT, KW43L43Z92MFT, KW43L43Z93MFT,
KW43L43Z96MFT, KW43L43Z97MFT

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

    • Five advertising sets in parallel.

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

    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

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

    Note: “RADE (Ranging Distance Estimation) is NXP’s embedded Channel Sounding (CS) ranging algorithm. RADE is intended for non-U.S. markets and should not be used in U.S. market deployments. RADEX is the U.S.-market variant of the RADE algorithm.”

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.

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

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

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 updates were implemented with respect to the previous SDK release version (26.09.00-pvw2).

  • Bluetooth LE Host Stack and Applications

    Note: Version 1.10.23 is the first NXP Bluetooth LE Host release officially certified according to the Bluetooth® Core Specification Version 6.3.

    Added

    • Bluetooth Sample Applications support for the KW43-LOC board.

    Improved

    • Optimized stack sizes for the PSA module (MCX W70/KW43).

    • Added MinimalHeapSize_c to all localization applications, scaled for RADE2 and number of connections.

    • Optimized memory buffer values in the loc_reader Channel Sounding application.

    • Reworked setcsconfig and setcsproc shell commands for per-parameter updates in localization applications.

    • Updated wireless ranging Python host application setup documentation (Python 3.12+ supported).

    • Updated CCC Digital Key R3 Sample Applications connection handover features.

    Fixed

    • Fixed ExtendedFeatures mismatch between GAPInit and the HCILEReadAllRemoteFeaturesCompleteevent.

    • Fixed EATT out-of-bounds read in IsEnhncdChanReconfInProgress().

    • Fixed CCC demo CS ranging procedure counter wrapping past 0xFFFF.

    • Fixed GattDbDynamic_AddCharServiceChanged using Notify instead of Indicate property.

    • Fixed ShellGap_ConnectFromPawr setting the success status incorrectly.

    • Miscellaneous Coverity fixes.

    • Miscellaneous CERT-C fixes.

    • Miscellaneous MISRA fixes.

    Changed

    • Bluetooth 6.3 Compliance: removed Data Signing (LE Security Mode 2).

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

  • Bluetooth LE Controller

    • Fixed default local SCA to 500 ppm.

    • Fixed issue where controller failed to properly scan advertising packets on 2M secondary phy.

  • Transceiver drivers (XCVR)

    • Added support for Bluetooth LE Channel Sounding.

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

  • Connectivity framework

    • Major Changes

      • [platform][DBG] Moved the NBU software watchdog (handshake based NBU stuck detection) into the common platform_dbg sources, making the feature available on both KW43/MCXW70 and KW47/MCXW72 without additional files.

      • [NVM] Refactored NVM handling to centralize address computation using offset-based flash access helpers (*_AtOffset) instead of stored flash addresses, reducing unsafe pointer arithmetic. NvUpdateSize() now returns uint16_t, added NV_PartitionBlankCheckAtOffset(), and deprecated NvIsMemoryAreaBlank(). Also fixed a data integrity issue in NvSaveAllDataSetEntry() and various Coverity/CERT-C findings.

      • [platform] IFR BLE BD address is now reversed to match the BLE Host stack expectation. The PLATFORM_IFR_BD_ADDR_IS_MSB_FIRST option was removed with the reverse loop reworked accordingly.

      • [SecLib_RNG] Enabled PSA by default on KW43/MCXW70 platforms.

      • [OTA] Introduced gOtaEraseWholePartitionOnInit_d option (KW43 only, disabled by default) to erase the whole OTA partition at start of image transfer.

      • [wireless_mcu] Replaced the critical section in PLATFORM_RemoteActiveReq() and PLATFORM_RemoteActiveRel() with a shared mutex to reduce critical section duration. These APIs must not be called from ISR anymore.

      • [wireless_nbu] Updated the low power callback to check for pending RPMSG buffers so the NBU enters WFI only when a Tx message is pending, reducing main core latency.

    • Minor Changes

      • [wireless_mcu][wireless_nbu][kw43_mcxw70] Moved P256 public key generation and ECDH DH key computation from the NBU controller to the host. Added two ICS message types (ReadP256PublicKey/GenerateDHKey) with their host and NBU handlers, the new PLATFORM_ReadLocalP256PublicKey() and PLATFORM_GenerateDHKey() APIs, and the new gPlatformIcsDeferDHKeyToHost_d feature flag gating all host side DH key code. APIs are kept but empty when the flag is disabled so callers can keep the call unconditional. gPlatformIcsDeferDHKeyToHost_d is disabled by default on the host; applications requiring this feature (e.g. hci_bb controller qualification) must explicitly build with -DgPlatformIcsDeferDHKeyToHost_d=1.

      • [platform][zephyr] Zephyr feature flag overrides are now owned by the framework repo in a per platform configs/fwk_config_zephyr.h, included at the top of fwk_config.h under __ZEPHYR__, removing the dual maintenance with the Zephyr integration. Platforms: kw43_mcxw70, kw45_k32w1_mcxw71, kw47_mcxw72, mcxw23, rw61x.

      • [wireless_mcu][kw43_mcxw70] Added gPlatformNbuDebugGpioDAccessEnabled_d support on kw43_mcxw70 to grant the NBU access to all GPIOs managed by GPIOD, through the new PLATFORM_InitNbuSpecific() API performing the NBU platform specific initialization.

      • [DBG] The NBU debug path now preserves the first fault/assert information: NBUDBG_StateCheck() no longer consumes the NBU debug state before a consumer callback is registered, the sys_debug_panic_triggered guard is hoisted in the hard fault handler so capture, host indication and coredump only run for the first fault, and only the first fault/assert is recorded through the new NBUDBG_RECORD_CLAIMED() macro.

      • [DBG] Added host-triggered NBU force fault for coredump capture through new PLATFORM_ForceNbuFault() and NBUDBG_ForceNbuFault() APIs, signaled to the NBU over MCMGR.

      • [DBG] Deferred the stall HCI event out of NBUDBG_StateCheck(), which now only sets the halted state and notifies the callback. Added new NBUDBG_SendStallEvent() API to emit the stall vendor event on demand.

      • [DBG] Integrated Zephyr coredump capture into the app-core fault handler under CONFIG_DEBUG_COREDUMP.

      • [KW43-LOC][lcl] Updated PLATFORM_InitLcl() to support antenna diversity on the KW43-LOC board.

      • [NVS] Replaced memcpy() by HAL_FlashRead() for internal flash reads so that HAL checks and Async Flash mode synchronization are not bypassed.

      • [kw43_mcxw70] SecLib_psa_config.h is now only added to the build when the PSA SecLib port is selected, aligned with kw45_k32w1_mcxw71 and kw47_mcxw72.

      • [wireless_mcu] Added the missing fwk_config.h as first include in the kw43_mcxw70, kw45_k32w1_mcxw71 and kw47_mcxw72 platform files so that feature flag overrides are taken into account.

      • [kw43_mcxw70] Removed the usage of the m_lowpower_flag_(start|size|end) linker symbols.

      • [kw43_mcxw70] Added PLATFORM_ReinitCrypto() function for low power support with PSA.

      • [settings] Added IAR compiler support for iterable sections and disabled the SETTINGS_NAME_END IAR warning.

      • [SecLib_RNG] Added to RNG_psa.c seed support including WorkQueue-based automatic reseeding gRngEnableAutoReseed_d, NBU seed forwarding via PLATFORM_SendRngSeed(), reseed counter logic gRngMaxRequests_d, and new APIs RNG_NotifyReseedNeeded() and RNG_IsReseedNeeded().

      • [OTA] Added a blank check of the OTA partition to avoid unnecessary erase operations and refactored OTA_MakeHeadRoom().

    • Bug Fixes

      • [WorkQ] Increased the default FWK_SYSWORKQ_STACK_SIZE from 608 to 640 bytes to fix a stack overflow on the system work queue thread.

      • [platform][TSTMR] Fixed the 56 bit version of the timestamp, now reading the TSTMR instance base and testing only the base pointer validity.

      • [wireless_mcu] Fixed FRO6M calibration by replacing FWK_MRCC_TSTMR0_CC/FWK_MRCC_TSTMR0_MUX macros with MRCC_CC/MRCC_MUX from fsl_clock.h and preserving the MUX clock selection in PLATFORM_StartFro6MCalibration().

      • [PSA] Fixed Kconfig warning by adding KW43 support in crypto Kconfig.

      • [DBG] Guarded FreeRTOS sys_dump_callstack_ext() with INCLUDE_xTaskGetHandle to fix -Werror=unused-function build failures.

      • [zephyr][lib][crc] Fixed build conflict with EdgeFast OPN CRC by guarding CRC sources with the Zephyr common framework component check to avoid symbol redefinition.

      • [NVM] Fixed offset validation in NvGetEntryFromDataPtr() and corrected the bottom record address calculation in NvGetPageFreeSpace() when gUnmirroredFeatureSet_d is undefined.

      • [docs] Fixed Sphinx/docutils warnings and errors in the framework documentation.

      • [Coverity] Various Coverity compliance fixes in SecLib (DHKey handling in SecLib_GenerateBluetoothF5KeysSecure()) and OTA (replaced union with structure for callback/argument passing in message buffer).

      • [MISRA][CERT-C] Various MISRA, CERT-C and Coverity compliance fixes gathered across platform, LowPower, ICS (wireless_mcu and wireless_nbu), OTA, FSCI, SFC, SecLib and NVM modules.

Known issues#

This section lists the known issues, limitations, and/or workarounds.

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 for KW45/KW47

    • 31 bytes for KW43.

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

  • The feature is not functional with the Free-Running Oscillator (FRO32K); it requires a 32 KHz Crystal Oscillator with accuracy less than 50 ppm.

KW43:

  • CS testmode does not work.

  • CS works only over 1M ACL connection.

  • CS performances are not yet guaranteed.

KW45 / MCXW 71: No specific issues.

KW47 / MCX W72: 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.

  • For experimental feature IPT(Inline PCT Transfer), only 1x1 configuration is supported.

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 is not compensated properly. Consequently, an inaccuracy of +/-2m can be observed.

  • Pairing procedure fails to complete after connection is established. Affects digital_key sample applications. Increase gHost_TaskStackSize_c to 1900U.

  • Channel Sounding measurement cannot start after handover. Affects digital_key sample applications.

  • For the digital_key_car_anchor_cs and digital_key_device_cs BM applications on KW47EVK and KW47LOC, and the loc_reader BM application on KW47EVK, MCXW72EVK, and FRDMMCXW72, increase stack_size in board_reconfig.cmake from 0x0CE4 to 0x1194 (4500 bytes). This change is required to avoid runtime stack overflow that can lead to a HardFault.

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.

  • KW43 and MCXW70 are in early enablement. Most Bluetooth LE features are available with limited validation. Full feature robustness will be achieved in upcoming releases.

  • The wireless_ranging and localization applications have limitations in executing Channel Sounding scenarios.

  • Other Bluetooth applications available in the package (bare-metal and Arm GCC versions) have not been validated.

  • Features not supported: Trusted Firmware-M (TF-M) for Advanced Secure mode, OTA support, low power, Concurrent mode, FRO32K, limited the payload for Extended Advertising to 30 Bytes.