Skip to content

Commit 3ec9821

Browse files
committed
STM32H5: added support for TrustZone
- Unified TZ support for STM32L5, STM32H5, STM32U5 - Fixed/added example configuration files - Expanded documentation - Added new configurations to automated tests
1 parent fbba5d8 commit 3ec9821

31 files changed

+748
-199
lines changed

.github/workflows/test-configs.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,12 +239,24 @@ jobs:
239239
arch: arm
240240
config-file: ./config/examples/stm32g0.config
241241

242+
stm32h5_test:
243+
uses: ./.github/workflows/test-build.yml
244+
with:
245+
arch: arm
246+
config-file: ./config/examples/stm32h5.config
247+
242248
stm32h5_dualbank_test:
243249
uses: ./.github/workflows/test-build.yml
244250
with:
245251
arch: arm
246252
config-file: ./config/examples/stm32h5-dualbank.config
247253

254+
stm32h5_wolfcrypt_tz:
255+
uses: ./.github/workflows/test-build.yml
256+
with:
257+
arch: arm
258+
config-file: ./config/examples/stm32h5-wolfcrypt-tz.config
259+
248260
stm32h7_test:
249261
uses: ./.github/workflows/test-build.yml
250262
with:
@@ -289,6 +301,12 @@ jobs:
289301
arch: arm
290302
config-file: ./config/examples/stm32l5.config
291303

304+
stm32l5_wolfcrypt_tz:
305+
uses: ./.github/workflows/test-build.yml
306+
with:
307+
arch: arm
308+
config-file: ./config/examples/stm32l5-wolfcrypt-tz.config
309+
292310
stm32u5_nonsecure_dualbank_test:
293311
uses: ./.github/workflows/test-build.yml
294312
with:
@@ -301,6 +319,12 @@ jobs:
301319
arch: arm
302320
config-file: ./config/examples/stm32u5.config
303321

322+
stm32u5_wolfcrypt_tz:
323+
uses: ./.github/workflows/test-build.yml
324+
with:
325+
arch: arm
326+
config-file: ./config/examples/stm32u5-wolfcrypt-tz.config
327+
304328
stm32wb_delta_enc_ext_test:
305329
uses: ./.github/workflows/test-build.yml
306330
with:

Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ endif
7878
MAIN_TARGET=factory.bin
7979
TARGET_H_TEMPLATE:=include/target.h.in
8080

81+
ifeq ($(TZEN),1)
8182
ifeq ($(TARGET),stm32l5)
8283
# Don't build a contiguous image
8384
MAIN_TARGET:=wolfboot.bin test-app/image_v1_signed.bin
@@ -88,6 +89,12 @@ ifeq ($(TARGET),stm32u5)
8889
MAIN_TARGET:=wolfboot.bin test-app/image_v1_signed.bin
8990
endif
9091

92+
ifeq ($(TARGET),stm32h5)
93+
# Don't build a contiguous image
94+
MAIN_TARGET:=wolfboot.bin test-app/image_v1_signed.bin
95+
endif
96+
endif # TZEN=1
97+
9198
ifeq ($(TARGET),x86_64_efi)
9299
MAIN_TARGET:=wolfboot.efi
93100
endif

arch.mk

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,6 @@ ifeq ($(ARCH),ARM)
146146
WOLFBOOT_ORIGIN=0x0C000000
147147
else
148148
WOLFBOOT_ORIGIN=0x08000000
149-
endif
150-
ifneq ($(TZEN),1)
151149
LSCRIPT_IN=hal/$(TARGET)-ns.ld
152150
endif
153151
endif
@@ -160,6 +158,7 @@ ifeq ($(ARCH),ARM)
160158
WOLFBOOT_ORIGIN=0x0C000000
161159
else
162160
WOLFBOOT_ORIGIN=0x08000000
161+
LSCRIPT_IN=hal/$(TARGET)-ns.ld
163162
endif
164163
SPI_TARGET=stm32
165164
endif
@@ -172,8 +171,6 @@ ifeq ($(ARCH),ARM)
172171
WOLFBOOT_ORIGIN=0x0C000000
173172
else
174173
WOLFBOOT_ORIGIN=0x08000000
175-
endif
176-
ifneq ($(TZEN),1)
177174
LSCRIPT_IN=hal/$(TARGET)-ns.ld
178175
endif
179176
SPI_TARGET=stm32

config/examples/stm32h5-dualbank.config

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ V?=0
1818
SPMATH?=1
1919
RAM_CODE?=0
2020
DUALBANK_SWAP?=1
21-
WOLFBOOT_PARTITION_SIZE?=0x20000
21+
WOLFBOOT_PARTITION_SIZE?=0xC0000
2222
WOLFBOOT_SECTOR_SIZE?=0x2000
23-
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08100000
24-
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x817F000
25-
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x81FE000
23+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08040000
24+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x8140000
25+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0xFFFFFFFF
2626
FLAGS_HOME=0
2727
DISABLE_BACKUP=0
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
ARCH?=ARM
2+
TZEN?=1
3+
TARGET?=stm32h5
4+
SIGN?=ECC256
5+
HASH?=SHA256
6+
DEBUG?=0
7+
VTOR?=1
8+
CORTEX_M0?=0
9+
CORTEX_M33?=1
10+
NO_ASM?=0
11+
NO_MPU=1
12+
EXT_FLASH?=0
13+
SPI_FLASH?=0
14+
ALLOW_DOWNGRADE?=0
15+
NVM_FLASH_WRITEONCE?=1
16+
WOLFBOOT_VERSION?=1
17+
V?=0
18+
SPMATH?=1
19+
RAM_CODE?=0
20+
DUALBANK_SWAP?=0
21+
WOLFBOOT_PARTITION_SIZE?=0xC0000
22+
WOLFBOOT_SECTOR_SIZE?=0x2000
23+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08040000
24+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x8140000
25+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x08010000
26+
FLAGS_HOME=0
27+
DISABLE_BACKUP=0
28+
WOLFCRYPT_TZ=1
29+
WOLFCRYPT_TZ_PKCS11=1

config/examples/stm32h5.config

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
ARCH?=ARM
2-
TZEN?=0
2+
TZEN?=1
33
TARGET?=stm32h5
44
SIGN?=ECC256
55
HASH?=SHA256
6-
DEBUG?=1
6+
DEBUG?=0
77
VTOR?=1
88
CORTEX_M0?=0
99
CORTEX_M33?=1
@@ -18,10 +18,10 @@ V?=0
1818
SPMATH?=1
1919
RAM_CODE?=0
2020
DUALBANK_SWAP?=0
21-
WOLFBOOT_PARTITION_SIZE?=0x20000
21+
WOLFBOOT_PARTITION_SIZE?=0xC0000
2222
WOLFBOOT_SECTOR_SIZE?=0x2000
23-
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08100000
24-
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x817F000
25-
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x81FE000
23+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08040000
24+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x8140000
25+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x08010000
2626
FLAGS_HOME=0
2727
DISABLE_BACKUP=0

config/examples/stm32l5.config

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ARCH?=ARM
2-
TZEN?=1
2+
TZEN?=0
33
TARGET?=stm32l5
44
SIGN?=ECC256
55
HASH?=SHA256
@@ -17,11 +17,12 @@ WOLFBOOT_VERSION?=1
1717
V?=0
1818
SPMATH?=1
1919
RAM_CODE?=0
20-
DUALBANK_SWAP?=0
21-
WOLFBOOT_PARTITION_SIZE?=0x1F800
22-
WOLFBOOT_SECTOR_SIZE?=0x800
23-
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08040000
24-
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x805F800
25-
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x0807F000
26-
FLAGS_HOME=0
27-
DISABLE_BACKUP=0
20+
DUALBANK_SWAP?=1
21+
WOLFBOOT_PARTITION_SIZE?=0x30000
22+
WOLFBOOT_SECTOR_SIZE?=0x2000
23+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08010000
24+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x08110000
25+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0xFFFFFFFF
26+
27+
# Use a larger image header size to enforce alignment requirements for the interrupt vector table
28+
IMAGE_HEADER_SIZE?=1024

config/examples/stm32u5-nonsecure-dualbank.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ TZEN?=0
33
TARGET?=stm32u5
44
SIGN?=ECC256
55
HASH?=SHA256
6-
DEBUG?=1
6+
DEBUG?=0
77
VTOR?=1
88
CORTEX_M0?=0
99
CORTEX_M33?=1
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
ARCH?=ARM
2+
TZEN?=1
3+
TARGET?=stm32u5
4+
SIGN?=ECC256
5+
HASH?=SHA256
6+
DEBUG?=0
7+
VTOR?=1
8+
CORTEX_M0?=0
9+
CORTEX_M33?=1
10+
NO_ASM?=0
11+
NO_MPU=1
12+
EXT_FLASH?=0
13+
SPI_FLASH?=0
14+
ALLOW_DOWNGRADE?=0
15+
NVM_FLASH_WRITEONCE?=1
16+
WOLFBOOT_VERSION?=1
17+
V?=0
18+
SPMATH?=1
19+
RAM_CODE?=0
20+
DUALBANK_SWAP?=0
21+
WOLFBOOT_PARTITION_SIZE?=0x1F800
22+
WOLFBOOT_SECTOR_SIZE?=0x800
23+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08040000
24+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x805F800
25+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x0807F000
26+
FLAGS_HOME=0
27+
DISABLE_BACKUP=0
28+
WOLFCRYPT_TZ=1
29+
WOLFCRYPT_TZ_PKCS11=1

config/examples/stm32u5.config

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ TZEN?=1
33
TARGET?=stm32u5
44
SIGN?=ECC256
55
HASH?=SHA256
6-
DEBUG?=1
6+
DEBUG?=0
77
VTOR?=1
88
CORTEX_M0?=0
99
CORTEX_M33?=1
@@ -18,13 +18,10 @@ V?=0
1818
SPMATH?=1
1919
RAM_CODE?=0
2020
DUALBANK_SWAP?=0
21-
WOLFBOOT_PARTITION_SIZE?=0x20000
22-
WOLFBOOT_SECTOR_SIZE?=0x2000
23-
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08100000
24-
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x817F000
25-
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x81FE000
21+
WOLFBOOT_PARTITION_SIZE?=0x1F800
22+
WOLFBOOT_SECTOR_SIZE?=0x800
23+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08040000
24+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x805F800
25+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x0807F000
2626
FLAGS_HOME=0
2727
DISABLE_BACKUP=0
28-
29-
# Use a larger image header size to enforce alignment requirements for the interrupt vector table
30-
IMAGE_HEADER_SIZE?=1024

0 commit comments

Comments
 (0)