Skip to content

Commit 438c250

Browse files
committed
MCXN non-TrustZone + TrustZone port
1 parent 472cab6 commit 438c250

11 files changed

Lines changed: 858 additions & 1 deletion

File tree

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@ if(NOT DEFINED ARM_TARGETS)
390390
lpc54606j512
391391
mcxa
392392
mcxw
393+
mcxn
393394
nrf52
394395
nrf52840
395396
nrf5340

arch.mk

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ else
339339
ifeq ($(WOLFCRYPT_TZ),1)
340340
CORTEXM_ARM_EXTRA_OBJS=
341341
CORTEXM_ARM_EXTRA_CFLAGS=
342-
SECURE_OBJS+=./src/wc_callable.o
342+
SECURE_OBJS+=./src/wc_callable.o $(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/random.o
343343
CFLAGS+=-DWOLFCRYPT_SECURE_MODE
344344
SECURE_LDFLAGS+=-Wl,--cmse-implib -Wl,--out-implib=./src/wc_secure_calls.o
345345
endif
@@ -732,6 +732,43 @@ ifeq ($(TARGET),mcxw)
732732
$(MCUXPRESSO_DRIVERS)/drivers/fsl_romapi.o
733733
endif
734734

735+
ifeq ($(TARGET),mcxn)
736+
CORTEX_M33=1
737+
ifneq ($(TZEN),1)
738+
LSCRIPT_IN=hal/$(TARGET)-ns.ld
739+
endif
740+
CFLAGS+=\
741+
-I$(MCUXPRESSO_DRIVERS) \
742+
-I$(MCUXPRESSO_DRIVERS)/drivers \
743+
-I$(MCUXPRESSO_DRIVERS)/drivers/romapi/flash \
744+
-I$(MCUXPRESSO_DRIVERS)/../periph \
745+
-I$(MCUXPRESSO) \
746+
-I$(MCUXPRESSO)/drivers \
747+
-I$(MCUXPRESSO)/drivers/gpio \
748+
-I$(MCUXPRESSO)/drivers/port \
749+
-I$(MCUXPRESSO)/drivers/common \
750+
-I$(MCUXPRESSO)/drivers/lpflexcomm \
751+
-I$(MCUXPRESSO)/drivers/lpuart \
752+
-I$(MCUXPRESSO_PROJECT_TEMPLATE) \
753+
-I$(MCUXPRESSO_CMSIS)/Include \
754+
-I$(MCUXPRESSO_CMSIS)/Core/Include
755+
CFLAGS+=-DCPU_$(MCUXPRESSO_CPU) -DDEBUG_CONSOLE_ASSERT_DISABLE=1
756+
CFLAGS+=-Wno-old-style-declaration
757+
CFLAGS+=-mcpu=cortex-m33 -DCORTEX_M33 -U__ARM_FEATURE_DSP
758+
LDFLAGS+=-mcpu=cortex-m33
759+
OBJS+=\
760+
$(MCUXPRESSO_DRIVERS)/drivers/fsl_clock.o \
761+
$(MCUXPRESSO_PROJECT_TEMPLATE)/clock_config.o \
762+
$(MCUXPRESSO_DRIVERS)/drivers/romapi/flash/src/fsl_flash.o
763+
764+
ifeq ($(DEBUG_UART),1)
765+
OBJS+=\
766+
$(MCUXPRESSO)/drivers/lpflexcomm/fsl_lpflexcomm.o \
767+
$(MCUXPRESSO)/drivers/lpuart/fsl_lpuart.o \
768+
$(MCUXPRESSO_DRIVERS)/drivers/fsl_reset.o
769+
endif
770+
endif
771+
735772
ifeq ($(TARGET),nrf5340)
736773
ifneq ($(TZEN), 1)
737774
LSCRIPT_IN=hal/$(TARGET)-ns.ld

config/examples/mcxn-tz.config

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
ARCH?=ARM
2+
TZEN?=1
3+
TARGET?=mcxn
4+
SIGN?=ECC384
5+
HASH?=SHA384
6+
MCUXSDK?=1
7+
MCUXPRESSO?=$(PWD)/../NXP/mcuxsdk/mcuxsdk
8+
MCUXPRESSO_CMSIS?=$(PWD)/../NXP/CMSIS_5/CMSIS
9+
MCUXPRESSO_CPU?=MCXN947VDF_cm33_core0
10+
MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/MCX/MCXN/MCXN947
11+
MCUXPRESSO_PROJECT_TEMPLATE?=$(MCUXPRESSO)/examples/_boards/frdmmcxn947/project_template
12+
DEBUG?=0
13+
DEBUG_UART?=1
14+
VTOR?=1
15+
CORTEX_M0?=0
16+
CORTEX_M33?=1
17+
NO_ASM?=0
18+
NO_MPU=1
19+
EXT_FLASH?=0
20+
SPI_FLASH?=0
21+
ALLOW_DOWNGRADE?=0
22+
NVM_FLASH_WRITEONCE?=1
23+
NO_ARM_ASM=1
24+
WOLFBOOT_VERSION?=0
25+
V?=0
26+
SPMATH?=1
27+
RAM_CODE?=1
28+
DUALBANK_SWAP?=0
29+
PKA?=1
30+
WOLFCRYPT_TZ?=1
31+
32+
# 8KB sectors
33+
WOLFBOOT_SECTOR_SIZE?=0x2000
34+
35+
# Default configuration
36+
# 64KB boot, 80KB keyvault, 8KB NSC, 60KB partitions, 8KB swap
37+
WOLFBOOT_KEYVAULT_ADDRESS?=0x10000
38+
WOLFBOOT_KEYVAULT_SIZE?=0x14000
39+
WOLFBOOT_NSC_ADDRESS?=0x24000
40+
WOLFBOOT_NSC_SIZE?=0x2000
41+
WOLFBOOT_PARTITION_SIZE?=0xF000
42+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x26000
43+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x35000
44+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x44000
45+
46+
# Alternate larger configuration for debugging or ARMASM
47+
# 128KB boot, 80KB keyvault, 8KB NSC, 60KB partitions, 8KB swap
48+
#WOLFBOOT_KEYVAULT_ADDRESS?=0x20000
49+
#WOLFBOOT_KEYVAULT_SIZE?=0x14000
50+
#WOLFBOOT_NSC_ADDRESS?=0x34000
51+
#WOLFBOOT_NSC_SIZE?=0x2000
52+
#WOLFBOOT_PARTITION_SIZE?=0xF000
53+
#WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x36000
54+
#WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x45000
55+
#WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x54000

config/examples/mcxn.config

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
ARCH?=ARM
2+
TZEN?=0
3+
TARGET?=mcxn
4+
SIGN?=ECC384
5+
HASH?=SHA384
6+
MCUXSDK?=1
7+
MCUXPRESSO?=$(PWD)/../NXP/mcuxsdk/mcuxsdk
8+
MCUXPRESSO_CMSIS?=$(PWD)/../NXP/CMSIS_5/CMSIS
9+
MCUXPRESSO_CPU?=MCXN947VDF_cm33_core0
10+
MCUXPRESSO_DRIVERS?=$(MCUXPRESSO)/devices/MCX/MCXN/MCXN947
11+
MCUXPRESSO_PROJECT_TEMPLATE?=$(MCUXPRESSO)/examples/_boards/frdmmcxn947/project_template
12+
DEBUG?=0
13+
DEBUG_UART?=1
14+
VTOR?=1
15+
CORTEX_M0?=0
16+
CORTEX_M33?=1
17+
NO_ASM?=0
18+
NO_MPU=1
19+
EXT_FLASH?=0
20+
SPI_FLASH?=0
21+
ALLOW_DOWNGRADE?=0
22+
NVM_FLASH_WRITEONCE?=1
23+
NO_ARM_ASM=1
24+
WOLFBOOT_VERSION?=0
25+
V?=0
26+
SPMATH?=1
27+
RAM_CODE?=1
28+
DUALBANK_SWAP?=0
29+
PKA?=1
30+
31+
# 8KB sectors
32+
WOLFBOOT_SECTOR_SIZE?=0x2000
33+
34+
# Default configuration
35+
# 40KB boot, 44KB partitions, 8KB swap
36+
WOLFBOOT_PARTITION_SIZE?=0xB000
37+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0xA000
38+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x15000
39+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x20000
40+
41+
# Alternate larger configuration for debugging or ARMASM
42+
# 64KB boot, 64KB partitions, 8KB swap
43+
#WOLFBOOT_PARTITION_SIZE?=0x10000
44+
#WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x12000
45+
#WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x22000
46+
#WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x32000

hal/mcxn-ns.ld

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
MEMORY
2+
{
3+
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = @BOOTLOADER_PARTITION_SIZE@
4+
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 256K
5+
}
6+
7+
SECTIONS
8+
{
9+
10+
.text :
11+
{
12+
_start_text = .;
13+
KEEP(*(.isr_vector))
14+
. = 0x200;
15+
*(.keystore*)
16+
*(.text*)
17+
*(.rodata*)
18+
*(.init*)
19+
*(.fini*)
20+
. = ALIGN(4);
21+
_end_text = .;
22+
} > FLASH
23+
24+
.edidx :
25+
{
26+
. = ALIGN(4);
27+
*(.ARM.exidx*)
28+
} > FLASH
29+
30+
_stored_data = .;
31+
32+
.data : AT (_stored_data)
33+
{
34+
_start_data = .;
35+
KEEP(*(.data*))
36+
. = ALIGN(4);
37+
_end_data = .;
38+
} > RAM
39+
40+
.bss (NOLOAD) :
41+
{
42+
_start_bss = .;
43+
__bss_start__ = .;
44+
*(.bss*)
45+
*(COMMON)
46+
. = ALIGN(4);
47+
_end_bss = .;
48+
__bss_end__ = .;
49+
_end = .;
50+
} > RAM
51+
. = ALIGN(4);
52+
}
53+
54+
END_STACK = ORIGIN(RAM) + LENGTH(RAM);

0 commit comments

Comments
 (0)