From 109dbd08d9df090ec64f64d82d12060da9735445 Mon Sep 17 00:00:00 2001 From: Mattia Moffa Date: Thu, 29 Jan 2026 17:35:24 +0100 Subject: [PATCH] Update MCUXpresso SDK to new refactor Updates targets using the deprecated https://github.com/nxp-mcuxpresso/legacy-mcux-sdk to use https://github.com/nxp-mcuxpresso/mcuxsdk-manifests instead. --- .github/workflows/test-configs.yml | 9 ++-- arch.mk | 76 ++++++++++++++++++++--------- config/examples/lpc54606j512.config | 8 +-- config/examples/mcxa.config | 6 ++- config/examples/mcxw-tz.config | 5 +- config/examples/mcxw.config | 5 +- docs/Targets.md | 47 ++++++++++++++++-- test-app/Makefile | 6 +-- 8 files changed, 119 insertions(+), 43 deletions(-) diff --git a/.github/workflows/test-configs.yml b/.github/workflows/test-configs.yml index a3272108..f0eaa45a 100644 --- a/.github/workflows/test-configs.yml +++ b/.github/workflows/test-configs.yml @@ -199,22 +199,25 @@ jobs: make-args: CROSS_COMPILE=aarch64-linux-gnu- nxp_mcxa_test: - uses: ./.github/workflows/test-build-mcux-sdk.yml + uses: ./.github/workflows/test-build-mcux-sdk-manifests.yml with: arch: arm config-file: ./config/examples/mcxa.config + board-name: frdmmcxa153 nxp_mcxw_test: - uses: ./.github/workflows/test-build-mcux-sdk.yml + uses: ./.github/workflows/test-build-mcux-sdk-manifests.yml with: arch: arm config-file: ./config/examples/mcxw.config + board-name: frdmmcxw71 nxp_mcxw_tz_test: - uses: ./.github/workflows/test-build-mcux-sdk.yml + uses: ./.github/workflows/test-build-mcux-sdk-manifests.yml with: arch: arm config-file: ./config/examples/mcxw-tz.config + board-name: frdmmcxw71 nxp_mcxn_test: uses: ./.github/workflows/test-build-mcux-sdk-manifests.yml diff --git a/arch.mk b/arch.mk index 7c1c04cc..f74df0f2 100644 --- a/arch.mk +++ b/arch.mk @@ -689,6 +689,8 @@ ifeq ($(TARGET),mcxa) -I$(MCUXPRESSO_DRIVERS) \ -I$(MCUXPRESSO_DRIVERS)/drivers \ -I$(MCUXPRESSO_DRIVERS)/drivers/common \ + -I$(MCUXPRESSO_DRIVERS)/drivers/romapi \ + -I$(MCUXPRESSO_DRIVERS)/../periph \ -I$(MCUXPRESSO)/drivers \ -I$(MCUXPRESSO)/drivers/common \ -I$(MCUXPRESSO_CMSIS)/Include \ @@ -707,7 +709,7 @@ ifeq ($(TARGET),mcxa) OBJS+=\ $(MCUXPRESSO_DRIVERS)/drivers/fsl_clock.o \ $(MCUXPRESSO)/drivers/mcx_spc/fsl_spc.o \ - $(MCUXPRESSO_DRIVERS)/project_template/clock_config.o + $(MCUXPRESSO_PROJECT_TEMPLATE)/clock_config.o endif ifeq ($(TARGET),mcxw) @@ -718,7 +720,8 @@ ifeq ($(TARGET),mcxw) CFLAGS+=\ -I$(MCUXPRESSO_DRIVERS) \ -I$(MCUXPRESSO_DRIVERS)/drivers \ - -I$(MCUXPRESSO_DRIVERS)/periph2 \ + -I$(MCUXPRESSO_DRIVERS)/drivers/romapi \ + -I$(MCUXPRESSO_DRIVERS)/../periph2 \ -I$(MCUXPRESSO)/drivers \ -I$(MCUXPRESSO)/drivers/flash_k4 \ -I$(MCUXPRESSO)/drivers/ccm32k \ @@ -739,9 +742,9 @@ ifeq ($(TARGET),mcxw) OBJS+=\ $(MCUXPRESSO_DRIVERS)/drivers/fsl_clock.o \ $(MCUXPRESSO)/drivers/spc/fsl_spc.o \ - $(MCUXPRESSO_DRIVERS)/project_template/clock_config.o \ + $(MCUXPRESSO_PROJECT_TEMPLATE)/clock_config.o \ $(MCUXPRESSO)/drivers/ccm32k/fsl_ccm32k.o \ - $(MCUXPRESSO_DRIVERS)/drivers/fsl_romapi.o + $(MCUXPRESSO_DRIVERS)/drivers/romapi/fsl_romapi.o endif ifeq ($(TARGET),mcxn) @@ -987,22 +990,34 @@ ifeq ($(TARGET),ti_hercules) endif ifeq ($(TARGET),lpc) - CFLAGS+=\ - -I$(MCUXPRESSO_DRIVERS) \ - -I$(MCUXPRESSO_DRIVERS)/drivers \ - -I$(MCUXPRESSO)/drivers \ - -I$(MCUXPRESSO)/drivers/common \ - -I$(MCUXPRESSO_CMSIS)/Include \ - -I$(MCUXPRESSO_CMSIS)/Core/Include - CFLAGS+=\ - -DCPU_$(MCUXPRESSO_CPU) -DDEBUG_CONSOLE_ASSERT_DISABLE=1 - OBJS+=\ - $(MCUXPRESSO_DRIVERS)/drivers/fsl_clock.o \ - $(MCUXPRESSO_DRIVERS)/drivers/fsl_power.o \ - $(MCUXPRESSO_DRIVERS)/drivers/fsl_reset.o - LIBS+=\ - $(MCUXPRESSO_DRIVERS)/mcuxpresso/libpower_softabi.a ifeq ($(MCUXSDK),1) + # Some targets in the SDK use drivers from a different target + MCUXPRESSO_DRIVERS_SHARED?=$(MCUXPRESSO_DRIVERS) + ifneq (,$(filter LPC54628%,$(MCUXPRESSO_CPU))) + MCUXPRESSO_DRIVERS_SHARED=$(MCUXPRESSO)/devices/LPC/LPC54000/LPC54628 + else ifneq (,$(filter LPC54605% LPC54606% LPC54607% LPC54608% LPC54616% LPC54618%,$(MCUXPRESSO_CPU))) + MCUXPRESSO_DRIVERS_SHARED=$(MCUXPRESSO)/devices/LPC/LPC54000/LPC54608 + else ifneq (,$(filter LPC54018M% LPC54S018M%,$(MCUXPRESSO_CPU))) + MCUXPRESSO_DRIVERS_SHARED=$(MCUXPRESSO)/devices/LPC/LPC54000/LPC54S018M + else ifneq (,$(filter LPC54005% LPC54016% LPC54018% LPC54S005% LPC54S016% LPC54S018%,$(MCUXPRESSO_CPU))) + MCUXPRESSO_DRIVERS_SHARED=$(MCUXPRESSO)/devices/LPC/LPC54000/LPC54S018 + endif + CFLAGS+=\ + -I$(MCUXPRESSO_DRIVERS) \ + -I$(MCUXPRESSO_DRIVERS_SHARED)/drivers \ + -I$(MCUXPRESSO_DRIVERS)/../periph \ + -I$(MCUXPRESSO)/drivers \ + -I$(MCUXPRESSO)/drivers/common \ + -I$(MCUXPRESSO)/drivers/flashiap \ + -I$(MCUXPRESSO_CMSIS)/Include \ + -I$(MCUXPRESSO_CMSIS)/Core/Include + CFLAGS+=\ + -DCPU_$(MCUXPRESSO_CPU) -DDEBUG_CONSOLE_ASSERT_DISABLE=1 + CFLAGS+=-DDCB=CoreDebug -DDCB_DEMCR_TRCENA_Msk=CoreDebug_DEMCR_TRCENA_Msk + OBJS+=\ + $(MCUXPRESSO_DRIVERS_SHARED)/drivers/fsl_clock.o \ + $(MCUXPRESSO_DRIVERS_SHARED)/drivers/fsl_power.o \ + $(MCUXPRESSO_DRIVERS_SHARED)/drivers/fsl_reset.o CFLAGS+=\ -I$(MCUXPRESSO)/drivers/flashiap \ -I$(MCUXPRESSO)/drivers/flexcomm @@ -1013,11 +1028,26 @@ ifeq ($(TARGET),lpc) $(MCUXPRESSO)/drivers/flexcomm/usart/fsl_usart.o \ $(MCUXPRESSO)/drivers/flexcomm/fsl_flexcomm.o else + CFLAGS+=\ + -I$(MCUXPRESSO_DRIVERS) \ + -I$(MCUXPRESSO_DRIVERS)/drivers \ + -I$(MCUXPRESSO)/drivers \ + -I$(MCUXPRESSO)/drivers/common \ + -I$(MCUXPRESSO_CMSIS)/Include \ + -I$(MCUXPRESSO_CMSIS)/Core/Include + CFLAGS+=\ + -DCPU_$(MCUXPRESSO_CPU) -DDEBUG_CONSOLE_ASSERT_DISABLE=1 OBJS+=\ - $(MCUXPRESSO_DRIVERS)/drivers/fsl_common.o \ - $(MCUXPRESSO_DRIVERS)/drivers/fsl_flashiap.o \ - $(MCUXPRESSO_DRIVERS)/drivers/fsl_usart.o \ - $(MCUXPRESSO_DRIVERS)/drivers/fsl_flexcomm.o + $(MCUXPRESSO_DRIVERS)/drivers/fsl_clock.o \ + $(MCUXPRESSO_DRIVERS)/drivers/fsl_power.o \ + $(MCUXPRESSO_DRIVERS)/drivers/fsl_reset.o + LIBS+=\ + $(MCUXPRESSO_DRIVERS)/mcuxpresso/libpower_softabi.a + OBJS+=\ + $(MCUXPRESSO_DRIVERS)/drivers/fsl_common.o \ + $(MCUXPRESSO_DRIVERS)/drivers/fsl_flashiap.o \ + $(MCUXPRESSO_DRIVERS)/drivers/fsl_usart.o \ + $(MCUXPRESSO_DRIVERS)/drivers/fsl_flexcomm.o endif endif diff --git a/config/examples/lpc54606j512.config b/config/examples/lpc54606j512.config index 209b5242..88168f85 100644 --- a/config/examples/lpc54606j512.config +++ b/config/examples/lpc54606j512.config @@ -1,11 +1,11 @@ ARCH?=ARM TARGET?=lpc SIGN?=ECC256 -MCUXSDK?=0 -MCUXPRESSO?=$(PWD)/../FRDM-K64F -MCUXPRESSO_CMSIS?=$(MCUXPRESSO)/CMSIS +MCUXSDK?=1 +MCUXPRESSO?=$(PWD)/../NXP/mcuxpresso-sdk/mcuxsdk +MCUXPRESSO_CMSIS?=$(PWD)/../NXP/CMSIS_5/CMSIS MCUXPRESSO_CPU?=LPC54606J512BD208 -MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/LPC54606 +MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/LPC/LPC54000/LPC54606 DEBUG?=0 HASH?=SHA256 VTOR?=1 diff --git a/config/examples/mcxa.config b/config/examples/mcxa.config index 6a3c20f2..eb9a05a9 100644 --- a/config/examples/mcxa.config +++ b/config/examples/mcxa.config @@ -3,10 +3,12 @@ TARGET?=mcxa SIGN?=ECC256 HASH?=SHA256 MCUXSDK?=1 -MCUXPRESSO?=$(PWD)/../NXP/mcux-sdk +#MCUXPRESSO?=$(PWD)/../NXP/mcux-sdk +MCUXPRESSO?=$(PWD)/../NXP/mcuxpresso-sdk/mcuxsdk MCUXPRESSO_CMSIS?=$(PWD)/../NXP/CMSIS_5/CMSIS MCUXPRESSO_CPU?=MCXA153VLH -MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/MCXA153 +MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/MCX/MCXA/MCXA153 +MCUXPRESSO_PROJECT_TEMPLATE?=$(MCUXPRESSO)/examples/_boards/frdmmcxa153/project_template DEBUG?=0 VTOR?=1 CORTEX_M0?=0 diff --git a/config/examples/mcxw-tz.config b/config/examples/mcxw-tz.config index 1c90e39f..491d59fa 100644 --- a/config/examples/mcxw-tz.config +++ b/config/examples/mcxw-tz.config @@ -4,10 +4,11 @@ TARGET?=mcxw SIGN?=ECC256 HASH?=SHA256 MCUXSDK?=1 -MCUXPRESSO?=$(PWD)/../NXP/mcux-sdk +MCUXPRESSO?=$(PWD)/../NXP/mcuxpresso-sdk/mcuxsdk MCUXPRESSO_CMSIS?=$(PWD)/../NXP/CMSIS_5/CMSIS MCUXPRESSO_CPU?=MCXW716CMFTA -MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/MCXW716C +MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/MCX/MCXW/MCXW716C +MCUXPRESSO_PROJECT_TEMPLATE?=$(MCUXPRESSO)/examples/_boards/frdmmcxw71/project_template DEBUG?=0 VTOR?=1 CORTEX_M0?=0 diff --git a/config/examples/mcxw.config b/config/examples/mcxw.config index 35d10e4e..77e900b0 100644 --- a/config/examples/mcxw.config +++ b/config/examples/mcxw.config @@ -3,10 +3,11 @@ TARGET?=mcxw SIGN?=ECC256 HASH?=SHA256 MCUXSDK?=1 -MCUXPRESSO?=$(PWD)/../NXP/mcux-sdk +MCUXPRESSO?=$(PWD)/../NXP/mcuxpresso-sdk/mcuxsdk MCUXPRESSO_CMSIS?=$(PWD)/../NXP/CMSIS_5/CMSIS MCUXPRESSO_CPU?=MCXW716CMFTA -MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/MCXW716C +MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/MCX/MCXW/MCXW716C +MCUXPRESSO_PROJECT_TEMPLATE?=$(MCUXPRESSO)/examples/_boards/frdmmcxw71/project_template DEBUG?=0 VTOR?=1 CORTEX_M0?=0 diff --git a/docs/Targets.md b/docs/Targets.md index bfcc448b..7b72be4e 100644 --- a/docs/Targets.md +++ b/docs/Targets.md @@ -3220,8 +3220,27 @@ thread break: Stopped, 0x0, 0x0, cpuPowerPCBig, Connected (state, tid, pid, cpu NXP MCXA153 is a Cortex-M33 microcontroller running at 96MHz. The support has been tested using FRDM-MCXA153 with the onboard MCU-Link configured in JLink mode. -This requires the MCXA SDK from the NXP MCUXpresso SDK Builder. We tested using `SDK_2.14.2_MCXA153` and placed into `../NXP/MCXA153` by default (see .config or set with `MCUXPRESSO`). -MCUXpresso SDK Builder +This requires the [NXP MCUXpresso SDK](https://github.com/nxp-mcuxpresso/mcuxsdk-manifests), +placed into `../NXP/mcuxpresso-sdk` by default (see .config or set with +`MCUXPRESSO`). + +To set up the MCUXpresso SDK: + +``` +cd ../NXP + +# Install west +python -m venv west-venv +source west-venv/bin/activate +pip install west + +# Set up the repository +west init -m https://github.com/nxp-mcuxpresso/mcuxsdk-manifests.git mcuxpresso-sdk +cd mcuxpresso-sdk +west update_board --set board frdmmcxa153 + +deactivate +``` ### MCX A: Configuring and compiling @@ -3307,8 +3326,28 @@ c NXP MCXW716 is a Cortex-M33 microcontroller running at 96MHz. The support has been tested using FRDM-MCXW716 with the onboard MCU-Link configured in JLink mode. -This requires the MCXW SDK from the NXP MCUXpresso SDK Builder. We tested using [mcux-sdk](https://github.com/nxp-mcuxpresso/mcux-sdk) and [CMSIS_5](https://github.com/nxp-mcuxpresso/CMSIS_5) -placed under "../NXP". Adjust the MCUXPRESSO and MCUXPRESSO_CMSIS variables in your .config file according to your paths. +This requires the NXP MCUXpresso SDK. We tested using [mcuxsdk-manifests](https://github.com/nxp-mcuxpresso/mcuxsdk-manifests) +and [CMSIS_5](https://github.com/nxp-mcuxpresso/CMSIS_5) placed under "../NXP". +Adjust the MCUXPRESSO and MCUXPRESSO_CMSIS variables in your .config file +according to your paths. + +To set up the MCUXpresso SDK: + +``` +cd ../NXP + +# Install west +python -m venv west-venv +source west-venv/bin/activate +pip install west + +# Set up the repository +west init -m https://github.com/nxp-mcuxpresso/mcuxsdk-manifests.git mcuxpresso-sdk +cd mcuxpresso-sdk +west update_board --set board frdmmcxw71 + +deactivate +``` ### MCX W: Configuring and compiling diff --git a/test-app/Makefile b/test-app/Makefile index f1e34ada..bc363731 100644 --- a/test-app/Makefile +++ b/test-app/Makefile @@ -351,7 +351,7 @@ endif ifeq ($(TARGET),mcxa) LSCRIPT_TEMPLATE=ARM-mcxa.ld - APP_OBJS+=$(MCUXPRESSO_DRIVERS)/project_template/clock_config.o + APP_OBJS+=$(MCUXPRESSO_PROJECT_TEMPLATE)/clock_config.o APP_OBJS+=$(MCUXPRESSO_DRIVERS)/drivers/fsl_clock.o APP_OBJS+=$(MCUXPRESSO_DRIVERS)/drivers/fsl_reset.o APP_OBJS+=$(MCUXPRESSO)/drivers/gpio/fsl_gpio.o @@ -378,9 +378,9 @@ ifeq ($(TARGET),mcxw) APP_OBJS+=$(MCUXPRESSO_DRIVERS)/drivers/fsl_clock.o APP_OBJS+=$(MCUXPRESSO)/drivers/gpio/fsl_gpio.o APP_OBJS+=$(MCUXPRESSO)/drivers/spc/fsl_spc.o - APP_OBJS+=$(MCUXPRESSO_DRIVERS)/project_template/clock_config.o + APP_OBJS+=$(MCUXPRESSO_PROJECT_TEMPLATE)/clock_config.o APP_OBJS+=$(MCUXPRESSO)/drivers/ccm32k/fsl_ccm32k.o - APP_OBJS+=$(MCUXPRESSO_DRIVERS)/drivers/fsl_romapi.o + APP_OBJS+=$(MCUXPRESSO_DRIVERS)/drivers/romapi/fsl_romapi.o LDFLAGS+=--specs=nosys.specs endif