Skip to content

Commit 8541142

Browse files
authored
Merge pull request #10361 from dgarske/stm32u3
Add STM32U3 hardware crypto support
2 parents fc51a38 + 31ae5d3 commit 8541142

5 files changed

Lines changed: 30 additions & 16 deletions

File tree

.wolfssl_known_macro_extras

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,7 @@ STM32L552xx
564564
STM32L562xx
565565
STM32MP135Fxx
566566
STM32N657xx
567+
STM32U385xx
567568
STM32U575xx
568569
STM32U585xx
569570
STM32U5A9xx

IDE/STM32Cube/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ The section for "Hardware platform" may need to be adjusted depending on your pr
9797
* To enable STM32WB support define `WOLFSSL_STM32WB`.
9898
* To enable STM32WBA support define `WOLFSSL_STM32WBA`.
9999
* To enable STM32WL support define `WOLFSSL_STM32WL`.
100+
* To enable STM32U3 support define `WOLFSSL_STM32U3`.
100101
* To enable STM32U5 support define `WOLFSSL_STM32U5`.
101102
* To enable STM32H5 support define `WOLFSSL_STM32H5`.
102103
* To enable STM32MP13 support define `WOLFSSL_STM32MP13`.

IDE/STM32Cube/default_conf.ftl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,14 @@ extern ${variable.value} ${variable.name};
206206
#elif defined(STM32G491xx)
207207
#define WOLFSSL_STM32G4
208208
#define HAL_CONSOLE_UART hlpuart1
209+
#elif defined(STM32U385xx)
210+
#define WOLFSSL_STM32U3
211+
#define STM32_HAL_V2
212+
#undef NO_STM32_HASH
213+
#undef NO_STM32_CRYPTO
214+
#ifndef HAL_CONSOLE_UART
215+
#define HAL_CONSOLE_UART huart1
216+
#endif
209217
#elif defined(STM32U575xx) || defined(STM32U585xx) || defined(STM32U5A9xx)
210218
#define WOLFSSL_STM32U5
211219
#define STM32_HAL_V2
@@ -250,8 +258,8 @@ extern ${variable.value} ${variable.name};
250258
/* You need to define a CPU type, HW crypto and debug UART */
251259
/* CPU Type: WOLFSSL_STM32F1, WOLFSSL_STM32F2, WOLFSSL_STM32F4,
252260
WOLFSSL_STM32F7, WOLFSSL_STM32H7, WOLFSSL_STM32L4, WOLFSSL_STM32L5,
253-
WOLFSSL_STM32G0, WOLFSSL_STM32G4, WOLFSSL_STM32WB, WOLFSSL_STM32U5 and
254-
WOLFSSL_STM32MP13 */
261+
WOLFSSL_STM32G0, WOLFSSL_STM32G4, WOLFSSL_STM32WB, WOLFSSL_STM32U3,
262+
WOLFSSL_STM32U5 and WOLFSSL_STM32MP13 */
255263
#define WOLFSSL_STM32F4
256264

257265
/* Debug UART used for printf */

wolfssl/wolfcrypt/port/st/stm32.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,10 @@ int wc_Stm32_Hmac_Final(STM32_HASH_Context* stmCtx, word32 algo,
166166
#if !defined(STM32_CRYPTO_AES_GCM) && (defined(WOLFSSL_STM32F4) || \
167167
defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32L4) || \
168168
defined(WOLFSSL_STM32L5) || defined(WOLFSSL_STM32H7) || \
169-
defined(WOLFSSL_STM32U5) || defined(WOLFSSL_STM32H5) || \
170-
defined(WOLFSSL_STM32MP13) || defined(WOLFSSL_STM32H7S) || \
171-
defined(WOLFSSL_STM32N6) || defined(WOLFSSL_STM32G0))
169+
defined(WOLFSSL_STM32U5) || defined(WOLFSSL_STM32U3) || \
170+
defined(WOLFSSL_STM32H5) || defined(WOLFSSL_STM32MP13) || \
171+
defined(WOLFSSL_STM32H7S) || defined(WOLFSSL_STM32N6) || \
172+
defined(WOLFSSL_STM32G0))
172173
/* Hardware supports AES GCM acceleration */
173174
#define STM32_CRYPTO_AES_GCM
174175
#endif
@@ -184,10 +185,10 @@ int wc_Stm32_Hmac_Final(STM32_HASH_Context* stmCtx, word32 algo,
184185
#define STM32_HAL_V2
185186
#endif
186187
#if defined(WOLFSSL_STM32L4) || defined(WOLFSSL_STM32L5) || \
187-
defined(WOLFSSL_STM32U5) || defined(WOLFSSL_STM32H5) || \
188-
defined(WOLFSSL_STM32G0)
188+
defined(WOLFSSL_STM32U5) || defined(WOLFSSL_STM32U3) || \
189+
defined(WOLFSSL_STM32H5) || defined(WOLFSSL_STM32G0)
189190
#if defined(WOLFSSL_STM32L4) || defined(WOLFSSL_STM32U5) || \
190-
defined(WOLFSSL_STM32G0)
191+
defined(WOLFSSL_STM32U3) || defined(WOLFSSL_STM32G0)
191192
#define STM32_CRYPTO_AES_ONLY /* crypto engine only supports AES */
192193
#endif
193194
#if defined(WOLFSSL_STM32H5)
@@ -204,9 +205,9 @@ int wc_Stm32_Hmac_Final(STM32_HASH_Context* stmCtx, word32 algo,
204205
#if !defined(STM32_HAL_V2) && defined(CRYP_AES_GCM) && \
205206
(defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32L5) || \
206207
defined(WOLFSSL_STM32H7) || defined(WOLFSSL_STM32U5) || \
207-
defined(WOLFSSL_STM32H5) || defined(WOLFSSL_STM32MP13) || \
208-
defined(WOLFSSL_STM32H7S) || defined(WOLFSSL_STM32N6) || \
209-
defined(WOLFSSL_STM32G0))
208+
defined(WOLFSSL_STM32U3) || defined(WOLFSSL_STM32H5) || \
209+
defined(WOLFSSL_STM32MP13) || defined(WOLFSSL_STM32H7S) || \
210+
defined(WOLFSSL_STM32N6) || defined(WOLFSSL_STM32G0))
210211
#define STM32_HAL_V2
211212
#endif
212213

wolfssl/wolfcrypt/settings.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2197,10 +2197,10 @@ extern void uITRON4_free(void *p) ;
21972197
defined(WOLFSSL_STM32L4) || defined(WOLFSSL_STM32L5) || \
21982198
defined(WOLFSSL_STM32WB) || defined(WOLFSSL_STM32H7) || \
21992199
defined(WOLFSSL_STM32G0) || defined(WOLFSSL_STM32U5) || \
2200-
defined(WOLFSSL_STM32H5) || defined(WOLFSSL_STM32WL) || \
2201-
defined(WOLFSSL_STM32G4) || defined(WOLFSSL_STM32MP13) || \
2202-
defined(WOLFSSL_STM32H7S) || defined(WOLFSSL_STM32WBA) || \
2203-
defined(WOLFSSL_STM32N6)
2200+
defined(WOLFSSL_STM32U3) || defined(WOLFSSL_STM32H5) || \
2201+
defined(WOLFSSL_STM32WL) || defined(WOLFSSL_STM32G4) || \
2202+
defined(WOLFSSL_STM32MP13) || defined(WOLFSSL_STM32H7S) || \
2203+
defined(WOLFSSL_STM32WBA) || defined(WOLFSSL_STM32N6)
22042204

22052205
#define SIZEOF_LONG_LONG 8
22062206
#ifndef CHAR_BIT
@@ -2221,7 +2221,8 @@ extern void uITRON4_free(void *p) ;
22212221

22222222
#if defined(WOLFSSL_STM32L4) || defined(WOLFSSL_STM32L5) || \
22232223
defined(WOLFSSL_STM32WB) || defined(WOLFSSL_STM32U5) || \
2224-
defined(WOLFSSL_STM32WL) || defined(WOLFSSL_STM32WBA)
2224+
defined(WOLFSSL_STM32U3) || defined(WOLFSSL_STM32WL) || \
2225+
defined(WOLFSSL_STM32WBA)
22252226
#define NO_AES_192 /* hardware does not support 192-bit */
22262227
#endif
22272228
#endif
@@ -2266,6 +2267,8 @@ extern void uITRON4_free(void *p) ;
22662267
#include "stm32g4xx_hal.h"
22672268
#elif defined(WOLFSSL_STM32U5)
22682269
#include "stm32u5xx_hal.h"
2270+
#elif defined(WOLFSSL_STM32U3)
2271+
#include "stm32u3xx_hal.h"
22692272
#elif defined(WOLFSSL_STM32H5)
22702273
#include "stm32h5xx_hal.h"
22712274
#elif defined(WOLFSSL_STM32N6)

0 commit comments

Comments
 (0)