Merge pull request #8914 from dgarske/stm32n6

Added support for STM32N6
This commit is contained in:
Daniel Pouzzner
2025-06-27 22:19:01 -05:00
committed by GitHub
5 changed files with 81 additions and 13 deletions

View File

@@ -487,6 +487,7 @@ STM32F217xx
STM32F401xE STM32F401xE
STM32F407xx STM32F407xx
STM32F437xx STM32F437xx
STM32F439xx
STM32F756xx STM32F756xx
STM32F777xx STM32F777xx
STM32G071xx STM32G071xx
@@ -502,6 +503,7 @@ STM32L4A6xx
STM32L552xx STM32L552xx
STM32L562xx STM32L562xx
STM32MP135Fxx STM32MP135Fxx
STM32N657xx
STM32U575xx STM32U575xx
STM32U585xx STM32U585xx
STM32U5A9xx STM32U5A9xx
@@ -687,7 +689,6 @@ WOLFSSL_ESPWROOM32
WOLFSSL_EVP_PRINT WOLFSSL_EVP_PRINT
WOLFSSL_EXPORT_INT WOLFSSL_EXPORT_INT
WOLFSSL_EXPORT_SPC_SZ WOLFSSL_EXPORT_SPC_SZ
WOLFSSL_EXTRA
WOLFSSL_FORCE_OCSP_NONCE_CHECK WOLFSSL_FORCE_OCSP_NONCE_CHECK
WOLFSSL_FRDM_K64 WOLFSSL_FRDM_K64
WOLFSSL_FRDM_K64_JENKINS WOLFSSL_FRDM_K64_JENKINS

View File

@@ -75,97 +75,138 @@ extern ${variable.value} ${variable.name};
#define WOLFSSL_STM32WB #define WOLFSSL_STM32WB
#define WOLFSSL_STM32_PKA #define WOLFSSL_STM32_PKA
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart1 #define HAL_CONSOLE_UART huart1
#endif
#elif defined(STM32WBA52xx) #elif defined(STM32WBA52xx)
#define WOLFSSL_STM32WBA #define WOLFSSL_STM32WBA
#define WOLFSSL_STM32_PKA #define WOLFSSL_STM32_PKA
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
/* NUCLEO-WBA52CG USART1 (TX=PB12 / RX=PA8) */ /* NUCLEO-WBA52CG USART1 (TX=PB12 / RX=PA8) */
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart1 #define HAL_CONSOLE_UART huart1
#endif
#elif defined(STM32WL55xx) #elif defined(STM32WL55xx)
#define WOLFSSL_STM32WL #define WOLFSSL_STM32WL
#define WOLFSSL_STM32_PKA #define WOLFSSL_STM32_PKA
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart2 #define HAL_CONSOLE_UART huart2
#endif
#elif defined(STM32F407xx) #elif defined(STM32F407xx)
#define WOLFSSL_STM32F4 #define WOLFSSL_STM32F4
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart2 #define HAL_CONSOLE_UART huart2
#elif defined(STM32F437xx) #endif
#elif defined(STM32F437xx) || defined(STM32F439xx)
#define WOLFSSL_STM32F4 #define WOLFSSL_STM32F4
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#define STM32_HAL_V2 #define STM32_HAL_V2
#define HAL_CONSOLE_UART huart4 #ifndef HAL_CONSOLE_UART
#ifdef STM32F439xx
#define HAL_CONSOLE_UART huart3
#else
#define HAL_CONSOLE_UART huart4
#endif
#endif
#elif defined(STM32F777xx) #elif defined(STM32F777xx)
#define WOLFSSL_STM32F7 #define WOLFSSL_STM32F7
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#define STM32_HAL_V2 #define STM32_HAL_V2
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart2 #define HAL_CONSOLE_UART huart2
#endif
#elif defined(STM32F756xx) #elif defined(STM32F756xx)
#define WOLFSSL_STM32F7 #define WOLFSSL_STM32F7
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#define STM32_HAL_V2 #define STM32_HAL_V2
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart3 #define HAL_CONSOLE_UART huart3
#endif
#elif defined(STM32H7S3xx) #elif defined(STM32H7S3xx)
#define WOLFSSL_STM32H7S #define WOLFSSL_STM32H7S
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#define WOLFSSL_STM32_PKA #define WOLFSSL_STM32_PKA
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart3 #define HAL_CONSOLE_UART huart3
#endif
#elif defined(STM32H753xx) #elif defined(STM32H753xx)
#define WOLFSSL_STM32H7 #define WOLFSSL_STM32H7
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart3 #define HAL_CONSOLE_UART huart3
#endif
#elif defined(STM32H723xx) || defined(STM32H725xx) || defined(STM32H743xx) #elif defined(STM32H723xx) || defined(STM32H725xx) || defined(STM32H743xx)
#define WOLFSSL_STM32H7 #define WOLFSSL_STM32H7
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart3 #define HAL_CONSOLE_UART huart3
#endif
#elif defined(STM32L4A6xx) #elif defined(STM32L4A6xx)
#define WOLFSSL_STM32L4 #define WOLFSSL_STM32L4
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART hlpuart1 #define HAL_CONSOLE_UART hlpuart1
#endif
#elif defined(STM32L475xx) #elif defined(STM32L475xx)
#define WOLFSSL_STM32L4 #define WOLFSSL_STM32L4
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart1 #define HAL_CONSOLE_UART huart1
#endif
#elif defined(STM32L562xx) #elif defined(STM32L562xx)
#define WOLFSSL_STM32L5 #define WOLFSSL_STM32L5
#define WOLFSSL_STM32_PKA #define WOLFSSL_STM32_PKA
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart1 #define HAL_CONSOLE_UART huart1
#endif
#elif defined(STM32L552xx) #elif defined(STM32L552xx)
#define WOLFSSL_STM32L5 #define WOLFSSL_STM32L5
#undef NO_STM32_HASH #undef NO_STM32_HASH
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART hlpuart1 #define HAL_CONSOLE_UART hlpuart1
#endif
#elif defined(STM32F207xx) #elif defined(STM32F207xx)
#define WOLFSSL_STM32F2 #define WOLFSSL_STM32F2
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart3 #define HAL_CONSOLE_UART huart3
#endif
#elif defined(STM32F217xx) #elif defined(STM32F217xx)
#define WOLFSSL_STM32F2 #define WOLFSSL_STM32F2
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart2 #define HAL_CONSOLE_UART huart2
#endif
#elif defined(STM32F107xC) #elif defined(STM32F107xC)
#define WOLFSSL_STM32F1 #define WOLFSSL_STM32F1
#define HAL_CONSOLE_UART huart4
#define NO_STM32_RNG #define NO_STM32_RNG
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart4
#endif
#elif defined(STM32F401xE) #elif defined(STM32F401xE)
#define WOLFSSL_STM32F4 #define WOLFSSL_STM32F4
#define HAL_CONSOLE_UART huart2
#define NO_STM32_RNG #define NO_STM32_RNG
#define WOLFSSL_GENSEED_FORTEST /* no HW RNG is available use test seed */ #define WOLFSSL_GENSEED_FORTEST /* no HW RNG is available use test seed */
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart2
#endif
#elif defined(STM32G071xx) #elif defined(STM32G071xx)
#define WOLFSSL_STM32G0 #define WOLFSSL_STM32G0
#define HAL_CONSOLE_UART huart2
#define NO_STM32_RNG #define NO_STM32_RNG
#define WOLFSSL_GENSEED_FORTEST /* no HW RNG is available use test seed */ #define WOLFSSL_GENSEED_FORTEST /* no HW RNG is available use test seed */
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart2
#endif
#elif defined(STM32G491xx) #elif defined(STM32G491xx)
#define WOLFSSL_STM32G4 #define WOLFSSL_STM32G4
#define HAL_CONSOLE_UART hlpuart1 #define HAL_CONSOLE_UART hlpuart1
#elif defined(STM32U575xx) || defined(STM32U585xx) || defined(STM32U5A9xx) #elif defined(STM32U575xx) || defined(STM32U585xx) || defined(STM32U5A9xx)
#define HAL_CONSOLE_UART huart1
#define WOLFSSL_STM32U5 #define WOLFSSL_STM32U5
#define STM32_HAL_V2 #define STM32_HAL_V2
#if defined(STM32U585xx) || defined(STM32U5A9xx) #if defined(STM32U585xx) || defined(STM32U5A9xx)
@@ -173,19 +214,35 @@ extern ${variable.value} ${variable.name};
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#define WOLFSSL_STM32_PKA #define WOLFSSL_STM32_PKA
#endif #endif
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart1
#endif
#elif defined(STM32H563xx) #elif defined(STM32H563xx)
#define WOLFSSL_STM32H5 #define WOLFSSL_STM32H5
#define HAL_CONSOLE_UART huart3
#define STM32_HAL_V2 #define STM32_HAL_V2
#undef NO_STM32_HASH #undef NO_STM32_HASH
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart3
#endif
#elif defined(STM32MP135Fxx) #elif defined(STM32MP135Fxx)
#define WOLFSSL_STM32MP13 #define WOLFSSL_STM32MP13
#define HAL_CONSOLE_UART huart4
#define STM32_HAL_V2 #define STM32_HAL_V2
#undef NO_STM32_HASH #undef NO_STM32_HASH
#undef NO_STM32_CRYPTO #undef NO_STM32_CRYPTO
#define WOLFSSL_STM32_PKA #define WOLFSSL_STM32_PKA
#define WOLFSSL_STM32_PKA_V2 #define WOLFSSL_STM32_PKA_V2
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart4
#endif
#elif defined(STM32N657xx)
#define WOLFSSL_STM32N6
#define STM32_HAL_V2
#undef NO_STM32_HASH
#undef NO_STM32_CRYPTO
#define WOLFSSL_STM32_PKA
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart1
#endif
#else #else
#warning Please define a hardware platform! #warning Please define a hardware platform!
/* This means there is not a pre-defined platform for your board/CPU */ /* This means there is not a pre-defined platform for your board/CPU */
@@ -199,16 +256,19 @@ extern ${variable.value} ${variable.name};
/* Debug UART used for printf */ /* Debug UART used for printf */
/* The UART interface number varies for each board/CPU */ /* The UART interface number varies for each board/CPU */
/* Typically this is the UART attached to the ST-Link USB CDC UART port */ /* Typically this is the UART attached to the ST-Link USB CDC UART port */
#ifndef HAL_CONSOLE_UART
#define HAL_CONSOLE_UART huart4 #define HAL_CONSOLE_UART huart4
#endif
/* Hardware Crypto - uncomment as available on hardware */ /* Hardware Crypto - uncomment as available on hardware */
//#define STM32_HAL_V2
//#define WOLFSSL_STM32_PKA //#define WOLFSSL_STM32_PKA
//#define WOLFSSL_STM32_PKA_V2
//#define NO_STM32_RNG //#define NO_STM32_RNG
//#undef NO_STM32_HASH //#undef NO_STM32_HASH
//#undef NO_STM32_CRYPTO //#undef NO_STM32_CRYPTO
/* if no HW RNG is available use test seed */ /* if no HW RNG is available use test seed */
//#define WOLFSSL_GENSEED_FORTEST //#define WOLFSSL_GENSEED_FORTEST
//#define STM32_HAL_V2
#endif #endif

View File

@@ -67,6 +67,9 @@
#elif defined(WOLFSSL_STM32WBA) #elif defined(WOLFSSL_STM32WBA)
#include <stm32wbaxx_hal_conf.h> #include <stm32wbaxx_hal_conf.h>
#include <stm32wbaxx_hal_pka.h> #include <stm32wbaxx_hal_pka.h>
#elif defined(WOLFSSL_STM32N6)
#include <stm32n6xx_hal_conf.h>
#include <stm32n6xx_hal_pka.h>
#else #else
#error Please add the hal_pk.h include #error Please add the hal_pk.h include
#endif #endif

View File

@@ -142,7 +142,8 @@ int wc_Stm32_Hash_Final(STM32_HASH_Context* stmCtx, word32 algo,
defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32L4) || \ defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32L4) || \
defined(WOLFSSL_STM32L5) || defined(WOLFSSL_STM32H7) || \ defined(WOLFSSL_STM32L5) || defined(WOLFSSL_STM32H7) || \
defined(WOLFSSL_STM32U5) || defined(WOLFSSL_STM32H5) || \ defined(WOLFSSL_STM32U5) || defined(WOLFSSL_STM32H5) || \
defined(WOLFSSL_STM32MP13) || defined(WOLFSSL_STM32H7S)) defined(WOLFSSL_STM32MP13) || defined(WOLFSSL_STM32H7S) || \
defined(WOLFSSL_STM32N6))
/* Hardware supports AES GCM acceleration */ /* Hardware supports AES GCM acceleration */
#define STM32_CRYPTO_AES_GCM #define STM32_CRYPTO_AES_GCM
#endif #endif
@@ -177,7 +178,7 @@ int wc_Stm32_Hash_Final(STM32_HASH_Context* stmCtx, word32 algo,
(defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32L5) || \ (defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32L5) || \
defined(WOLFSSL_STM32H7) || defined(WOLFSSL_STM32U5) || \ defined(WOLFSSL_STM32H7) || defined(WOLFSSL_STM32U5) || \
defined(WOLFSSL_STM32H5) || defined(WOLFSSL_STM32MP13) || \ defined(WOLFSSL_STM32H5) || defined(WOLFSSL_STM32MP13) || \
defined(WOLFSSL_STM32H7S)) defined(WOLFSSL_STM32H7S) || defined(WOLFSSL_STM32N6))
#define STM32_HAL_V2 #define STM32_HAL_V2
#endif #endif

View File

@@ -2110,7 +2110,8 @@ extern void uITRON4_free(void *p) ;
defined(WOLFSSL_STM32G0) || defined(WOLFSSL_STM32U5) || \ defined(WOLFSSL_STM32G0) || defined(WOLFSSL_STM32U5) || \
defined(WOLFSSL_STM32H5) || defined(WOLFSSL_STM32WL) || \ defined(WOLFSSL_STM32H5) || defined(WOLFSSL_STM32WL) || \
defined(WOLFSSL_STM32G4) || defined(WOLFSSL_STM32MP13) || \ defined(WOLFSSL_STM32G4) || defined(WOLFSSL_STM32MP13) || \
defined(WOLFSSL_STM32H7S) || defined(WOLFSSL_STM32WBA) defined(WOLFSSL_STM32H7S) || defined(WOLFSSL_STM32WBA) || \
defined(WOLFSSL_STM32N6)
#define SIZEOF_LONG_LONG 8 #define SIZEOF_LONG_LONG 8
#ifndef CHAR_BIT #ifndef CHAR_BIT
@@ -2174,6 +2175,8 @@ extern void uITRON4_free(void *p) ;
#include "stm32u5xx_hal.h" #include "stm32u5xx_hal.h"
#elif defined(WOLFSSL_STM32H5) #elif defined(WOLFSSL_STM32H5)
#include "stm32h5xx_hal.h" #include "stm32h5xx_hal.h"
#elif defined(WOLFSSL_STM32N6)
#include "stm32n6xx_hal.h"
#elif defined(WOLFSSL_STM32MP13) #elif defined(WOLFSSL_STM32MP13)
/* HAL headers error on our ASM files */ /* HAL headers error on our ASM files */
#ifndef __ASSEMBLER__ #ifndef __ASSEMBLER__