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 is compiled and tested with these development tools:

  • IAR Embedded Workbench for Arm, version is 9.60.3

  • MCUXpresso for VS Code v24.12

  • GCC Arm Embedded Toolchain 13.2.1

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

EVK-MCIMX7ULP

MCIMX7U5CVP06, MCIMX7U5DVK07, MCIMX7U5DVP07,
MCIMX7U3CVP06, MCIMX7U3DVK07

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.

IoT Sensing Software Development Kit (ISSDK)

The IoT Sensing Software Development Kit (ISSDK) is the embedded software framework enabling the NXP digital and analog sensors for IoT applications. ISSDK combines a set of robust sensor drivers and algorithms along with example applications that allow users to get started with using NXP IoT motion & pressure sensors. ISSDK is being offered as a middleware component in MCUXpresso SDK.

USB Host, Device, OTG Stack

See the MCUXpresso SDK USB Stack User’s Guide (document MCUXSDKUSBSUG) for more information.

TinyCBOR

Concise Binary Object Representation (CBOR) Library

PKCS#11

The PKCS#11 standard specifies an application programming interface (API), called “Cryptoki,” for devices that hold cryptographic information and perform cryptographic functions. Cryptoki follows a simple object based approach, addressing the goals of technology independence (any kind of device) and resource sharing (multiple applications accessing multiple devices), presenting to applications a common, logical view of the device called a “cryptographic token”.

Multicore

Multicore Software Development Kit

MMCAU

The NXP Memory-Mapped Cryptographic Acceleration Unit

mbedTLS

mbedtls SSL/TLS library v2.x

llhttp

HTTP parser llhttp

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

Known issues

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

Cannot add SDK components into FreeRTOS projects

It is not possible to add any SDK components into FreeRTOS project using the MCUXpresso IDE New Project wizard.

LPSPI b2b examples transfer fail on iar/armgcc flash target

Due to the latency of instruction retrieval (XiP), LPSPI-related flash target examples may fail. The failure happens because the data is not retrieved in time from FIFO on the receiving end.

To prevent the failure and boost the instruction fetch performance, place the fsl_lpspi.c file in the SRAM.

Apply the patch as below,

$ git diff  MCIMX7U5xxxxx_cm4_flash.ld
diff --git a/MCIMX7U5/gcc/MCIMX7U5xxxxx_cm4_flash.ld b/MCIMX7U5/gcc/MCIMX7U5xxxxx_cm4_flash.ld
index b29b41a2b1..91dc0782e5 100644
--- a/MCIMX7U5/gcc/MCIMX7U5xxxxx_cm4_flash.ld
+++ b/MCIMX7U5/gcc/MCIMX7U5xxxxx_cm4_flash.ld
@@ -68,10 +68,22 @@ SECTIONS
   .text :
   {
     . = ALIGN(4);
-    *(.text)                 /* .text sections (code) */
-    *(.text*)                /* .text* sections (code) */
-    *(.rodata)               /* .rodata sections (constants, strings, etc.) */
-    *(.rodata*)              /* .rodata* sections (constants, strings, etc.) */
+    *(EXCLUDE_FILE(
+        /* Exclude flash and frequently executed functions from XIP */
+        */fsl_lpspi.c.obj
+    ) .text)                 /* .text sections (code) */
+    *(EXCLUDE_FILE(
+        /* Exclude flash and frequently executed functions from XIP */
+        */fsl_lpspi.c.obj
+    ) .text*)                /* .text* sections (code) */
+    *(EXCLUDE_FILE(
+        /* Exclude flash and frequently executed functions from XIP */
+        */fsl_lpspi.c.obj
+    ) .rodata)               /* .rodata sections (constants, strings, etc.) */
+    *(EXCLUDE_FILE(
+        /* Exclude flash and frequently executed functions from XIP */
+        */fsl_lpspi.c.obj
+    ) .rodata*)              /* .rodata* sections (constants, strings, etc.) */
     *(.glue_7)               /* glue arm to thumb code */
     *(.glue_7t)              /* glue thumb to arm code */
     *(.eh_frame)
@@ -173,6 +185,7 @@ SECTIONS
     __quickaccess_start__ = .;
     . = ALIGN(32);
     *(CodeQuickAccess)
+    /* Explicit placement of flash and frequently executed functions in SRAM  */
+    */fsl_lpspi.c.obj(.text .text* .rodata .rodata*)
     *(DataQuickAccess)
     . = ALIGN(128);
     __quickaccess_end__ = .;

LPSPI b2b examples transfer fail on iar/armgcc flash target.

Due to the latency of instruction retrieval (XiP), LPSPI-related flash target examples may fail. The failure happens because the data is not retrieved in time from FIFO on the receiving end.

.. code-block:: none

$ git diff MCIMX7U5xxxxx_cm4_flash.ld diff –git a/MCIMX7U5/gcc/MCIMX7U5xxxxx_cm4_flash.ld b/MCIMX7U5/gcc/MCIMX7U5xxxxx_cm4_flash.ld index b29b41a2b1..91dc0782e5 100644 — a/MCIMX7U5/gcc/MCIMX7U5xxxxx_cm4_flash.ld +++ b/MCIMX7U5/gcc/MCIMX7U5xxxxx_cm4_flash.ld @@ -68,10 +68,22 @@ SECTIONS .text : { . = ALIGN(4); - (.text) / .text sections (code) / - (.text) / .text* sections (code) / - (.rodata) / .rodata sections (constants, strings, etc.) / - (.rodata) / .rodata sections (constants, strings, etc.) */ + (EXCLUDE_FILE( + / Exclude flash and frequently executed functions from XIP */ + /fsl_lpspi.c.obj + ) .text) / .text sections (code) / + (EXCLUDE_FILE( + / Exclude flash and frequently executed functions from XIP / + /fsl_lpspi.c.obj + ) .text) / .text sections (code) */ + (EXCLUDE_FILE( + / Exclude flash and frequently executed functions from XIP */ + /fsl_lpspi.c.obj + ) .rodata) / .rodata sections (constants, strings, etc.) / + (EXCLUDE_FILE( + / Exclude flash and frequently executed functions from XIP / + /fsl_lpspi.c.obj + ) .rodata) / .rodata sections (constants, strings, etc.) */ (.glue_7) / glue arm to thumb code */ (.glue_7t) / glue thumb to arm code */ *(.eh_frame) @@ -173,6 +185,7 @@ SECTIONS quickaccess_start = .; . = ALIGN(32); (CodeQuickAccess) + / Explicit placement of flash and frequently executed functions in SRAM / + /fsl_lpspi.c.obj(.text .text .rodata .rodata) *(DataQuickAccess) . = ALIGN(128); quickaccess_end = .;

Workaround: To prevent the failure and boost the instruction fetch performance, place the fsl_lpspi.c file in the SRAM. Apply the patch as below,

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