Added support for STM32WB PKA HW accelerator (ECDSA verify)

stm32-pka-hw-ecdsa
Daniele Lacamera 2019-10-09 13:59:15 +02:00
parent 45064ced50
commit 0ee2d19901
4 changed files with 53 additions and 4 deletions

View File

@ -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

16
arch.mk
View File

@ -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

View File

@ -21,6 +21,10 @@
#include <stdint.h>
#include <image.h>
#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

@ -1 +1 @@
Subproject commit 50fbdb961fd8c2d8123064e567ae8ec44167732d
Subproject commit c26a7ccb6818683fff8bdad729d6de9afff91188