diff --git a/Makefile b/Makefile index 350f8420..2c2827f7 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,8 @@ KINETIS_CPU=MK64FN1M0VLL12 KINETIS_DRIVERS?=$(KINETIS)/devices/MK64F12 KINETIS_CMSIS?=$(KINETIS)/CMSIS FREEDOM_E_SDK?=$(HOME)/src/freedom-e-sdk +STM32CUBE?=$(HOME)/src/STM32CubeWB/STM32Cube_FW_WB_V1.2.0 + DEBUG?=0 VTOR?=1 CORTEX_M0?=0 @@ -25,8 +27,7 @@ V?=0 SPMATH?=1 RAM_CODE?=0 DUALBANK_SWAP=0 - - +PKA?=1 ## Initializers CFLAGS:=-D__WOLFBOOT -DWOLFBOOT_VERSION=$(WOLFBOOT_VERSION)UL @@ -155,7 +156,7 @@ test-app/image.bin: V=$(V) RAM_CODE=$(RAM_CODE) WOLFBOOT_VERSION=$(WOLFBOOT_VERSION)\ KINETIS=$(KINETIS) KINETIS_CPU=$(KINETIS_CPU) KINETIS_DRIVERS=$(KINETIS_DRIVERS) \ KINETIS_CMSIS=$(KINETIS_CMSIS) NVM_FLASH_WRITEONCE=$(NVM_FLASH_WRITEONCE) \ - FREEDOM_E_SDK=$(FREEDOM_E_SDK) + FREEDOM_E_SDK=$(FREEDOM_E_SDK) STM32CUBE=$(STM32CUBE) PKA=$(PKA) @rm -f src/*.o hal/*.o @$(SIZE) test-app/image.elf diff --git a/arch.mk b/arch.mk index e943e29d..3f894670 100644 --- a/arch.mk +++ b/arch.mk @@ -87,6 +87,22 @@ SIZE:=$(CROSS_COMPILE)size BOOT_IMG?=test-app/image.bin +## Hardware PKA + +ifeq ($(TARGET),stm32wb) + ifneq ($(PKA),0) + ECC_EXTRA_OBJS+= $(STM32CUBE)/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pka.o ./lib/wolfssl/wolfcrypt/src/port/st/stm32.o + ECC_EXTRA_CFLAGS+=-DWOLFSSL_STM32_PKA -I$(STM32CUBE)/Drivers/STM32WBxx_HAL_Driver/Inc \ + -Isrc -I$(STM32CUBE)/Drivers/BSP/P-NUCLEO-WB55.Nucleo/ -I$(STM32CUBE)/Drivers/CMSIS/Device/ST/STM32WBxx/Include \ + -I$(STM32CUBE)/Drivers/STM32WBxx_HAL_Driver/Inc/ \ + -I$(STM32CUBE)/Drivers/CMSIS/Include \ + -Ihal \ + -DSTM32WB55xx + endif +endif + + + ifeq ($(TARGET),kinetis) CFLAGS+= -I$(KINETIS_DRIVERS)/drivers -I$(KINETIS_DRIVERS) -DCPU_$(KINETIS_CPU) -I$(KINETIS_CMSIS)/Include -DDEBUG_CONSOLE_ASSERT_DISABLE=1 OBJS+= $(KINETIS_DRIVERS)/drivers/fsl_clock.o $(KINETIS_DRIVERS)/drivers/fsl_ftfx_flash.o $(KINETIS_DRIVERS)/drivers/fsl_ftfx_cache.o $(KINETIS_DRIVERS)/drivers/fsl_ftfx_controller.o diff --git a/hal/stm32wb.c b/hal/stm32wb.c index 332bc869..6ddda516 100644 --- a/hal/stm32wb.c +++ b/hal/stm32wb.c @@ -21,6 +21,10 @@ #include #include +#ifdef WOLFSSL_STM32_PKA +#include "stm32wbxx_hal.h" +PKA_HandleTypeDef hpka = { }; +#endif /* STM32 WB register configuration */ /* Assembly helpers */ @@ -286,6 +290,11 @@ static void clock_pll_on(void) void hal_init(void) { clock_pll_on(); +#ifdef WOLFSSL_STM32_PKA + __HAL_RCC_PKA_CLK_ENABLE(); + hpka.Instance = PKA; + HAL_PKA_Init(&hpka); +#endif } void hal_prepare_boot(void) @@ -297,3 +306,26 @@ void hal_prepare_boot(void) clock_pll_off(); } +#ifdef WOLFSSL_STM32_PKA + + +void HAL_PKA_MspInit(PKA_HandleTypeDef* hpka) +{ + if(hpka->Instance==PKA) + { + /* Peripheral clock enable */ + __HAL_RCC_PKA_CLK_ENABLE(); + } +} + +/* This value is unused, the function is never called + * as long as the timeout is 0xFFFFFFFF. + * It is defined here only to avoid a compiler error + * for a missing symbol in hal_pka_driver. + */ +uint32_t HAL_GetTick(void) +{ + return 0; +} + +#endif diff --git a/lib/wolfssl b/lib/wolfssl index 50fbdb96..c26a7ccb 160000 --- a/lib/wolfssl +++ b/lib/wolfssl @@ -1 +1 @@ -Subproject commit 50fbdb961fd8c2d8123064e567ae8ec44167732d +Subproject commit c26a7ccb6818683fff8bdad729d6de9afff91188