Skip to content

Commit efa2a95

Browse files
michi-jungxiaoxiang781216
authored andcommitted
Update stm32l562e-dk:nsh
- Update TrustedFirmare-M instructions to latest version of STM32CubeL5 - Increase idle thread stack size to not overflow during system init - Select ARCH_HAVE_TRUSTZONE for STM32L5 - Set CONFIG_ARCH_TRUSTZONE_NONSECURE for stm32l562e-dk:nsh, since NuttX is running in the Non-secure world. See apache#9316 Signed-off-by: Michael Jung <michael.jung@secore.ly>
1 parent e51ec54 commit efa2a95

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

arch/arm/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,7 @@ config ARCH_CHIP_STM32L5
489489
select ARCH_HAVE_PROGMEM
490490
select ARCH_HAVE_SPI_BITORDER
491491
select ARCH_HAVE_TICKLESS
492+
select ARCH_HAVE_TRUSTZONE
492493
select ARM_HAVE_MPU_UNIFIED
493494
select ARMV8M_HAVE_STACKCHECK
494495
---help---

boards/arm/stm32l5/stm32l562e-dk/README.txt

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,15 @@ TrustedFirmware-M
107107
=================
108108

109109
You should study [UM2671] STMicroelectronics. UM2671: Getting started with
110-
STM32CubeL5 TFM application, 2nd edition, July 2020.
110+
STM32CubeL5 TFM application, 3rd edition, June 2021.
111111

112-
I was using STM32CubeL5 v1.3.1
113-
(https://github.com/STMicroelectronics/STM32CubeL5/tree/v1.3.1).
112+
I was using STM32CubeL5 v1.5.0
113+
(https://github.com/STMicroelectronics/STM32CubeL5/tree/v1.5.0).
114114

115115
Changes required to STM32CubeL5's TFM
116116
-------------------------------------
117117

118-
The following two changes to TFM have to be applied to be able to run NuttX.
118+
The following three changes to TFM have to be applied to be able to run NuttX.
119119

120120
The first one is required since NuttX issues SVC instructions while interrupts
121121
are disabled, which causes HardFaults. NuttX then detects this situation in
@@ -146,6 +146,22 @@ TrustedFirmware-M
146146
return TFM_PLAT_ERR_SUCCESS;
147147
}
148148

149+
The third chage is required, since current NuttX does not support lazy FPU
150+
register stacking any longer. Thus, this must be disabled for the TF-M secure
151+
code as well:
152+
153+
--- a/Projects/STM32L562E-DK/Applications/TFM/TFM_Appli/Secure/Src/target_cfg.c
154+
+++ b/Projects/STM32L562E-DK/Applications/TFM/TFM_Appli/Secure/Src/target_cfg.c
155+
@@ -134,7 +134,7 @@ void sau_and_idau_cfg(void)
156+
SCB->NSACR = (SCB->NSACR & ~(SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)) |
157+
((SCB_NSACR_CP10_11_VAL << SCB_NSACR_CP10_Pos) & (SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk));
158+
159+
- FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk)) |
160+
+ FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk | FPU_FPCCR_LSPEN_Msk)) |
161+
((FPU_FPCCR_TS_VAL << FPU_FPCCR_TS_Pos) & FPU_FPCCR_TS_Msk) |
162+
((FPU_FPCCR_CLRONRETS_VAL << FPU_FPCCR_CLRONRETS_Pos) & FPU_FPCCR_CLRONRETS_Msk) |
163+
((FPU_FPCCR_CLRONRET_VAL << FPU_FPCCR_CLRONRET_Pos) & FPU_FPCCR_CLRONRET_Msk);
164+
149165
Encrypting and Signing the NuttX Binary
150166
---------------------------------------
151167

boards/arm/stm32l5/stm32l562e-dk/configs/nsh/defconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ CONFIG_ARCH_CHIP_STM32L5=y
1818
CONFIG_ARCH_INTERRUPTSTACK=2048
1919
CONFIG_ARCH_IRQBUTTONS=y
2020
CONFIG_ARCH_STACKDUMP=y
21+
CONFIG_ARCH_TRUSTZONE_NONSECURE=y
2122
CONFIG_ARMV8M_STACKCHECK=y
2223
CONFIG_BOARD_LOOPSPERMSEC=8499
2324
CONFIG_BUILTIN=y
@@ -31,6 +32,7 @@ CONFIG_FS_PROCFS=y
3132
CONFIG_FS_PROCFS_REGISTER=y
3233
CONFIG_HAVE_CXX=y
3334
CONFIG_HAVE_CXXINITIALIZE=y
35+
CONFIG_IDLETHREAD_STACKSIZE=2048
3436
CONFIG_INIT_ENTRYPOINT="nsh_main"
3537
CONFIG_NSH_ARCHINIT=y
3638
CONFIG_NSH_BUILTIN_APPS=y

0 commit comments

Comments
 (0)