Fixes to the Pi Pico build

* Don't require FreeRTOS if we are doing a bare metal bench / test build
* Make stack checking stricter and increase stack size for DH
* Set alignment to 0, this fixes LMS if that is compiled-in
* `WOLFSSL_SP_MATH` and `WOLFSSL_SP_MATH_ALL` can't be used together
* Loop the benchmark
pull/557/head
Andrew Hutchings 2026-02-12 14:56:18 +00:00
parent a2217c6e75
commit b821577eaf
5 changed files with 25 additions and 10 deletions

View File

@ -1,9 +1,13 @@
cmake_minimum_required(VERSION 3.13)
# Pull in Pico and FreeRTOS
# Pull in Pico SDK
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)
#include(pico_extras_import_optional.cmake)
include($ENV{FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/FreeRTOS_Kernel_import.cmake)
# Pull in FreeRTOS if available (required for WiFi/TCP/TLS examples)
if (DEFINED ENV{FREERTOS_KERNEL_PATH})
include($ENV{FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/FreeRTOS_Kernel_import.cmake)
endif()
if(PICO_SDK_VERSION_STRING VERSION_LESS "1.3.0")
@ -27,6 +31,10 @@ if (USE_WIFI AND NOT PICO_CYW43_SUPPORTED)
message(FATAL_ERROR "You can only set USE_WIFI when a PICO_BOARD with wifi is used")
endif()
if (USE_WIFI AND NOT DEFINED ENV{FREERTOS_KERNEL_PATH})
message(FATAL_ERROR "FREERTOS_KERNEL_PATH environment variable must be set when USE_WIFI is enabled")
endif()
### Global Include Path
include_directories(config)
include_directories(include)
@ -38,9 +46,11 @@ endif()
#include_directories(${PICO_SDK_PATH}/lib/btstack/test/embedded/)
set(WOLFSSL_ROOT $ENV{WOLFSSL_ROOT})
set(FREERTOS_KERNEL_PATH $ENV{FREERTOS_KERNEL_PATH})
include_directories(${FREERTOS_KERNEL_PATH}/include/)
include_directories(${FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/include)
if (DEFINED ENV{FREERTOS_KERNEL_PATH})
set(FREERTOS_KERNEL_PATH $ENV{FREERTOS_KERNEL_PATH})
include_directories(${FREERTOS_KERNEL_PATH}/include/)
include_directories(${FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/include)
endif()
include_directories(${WOLFSSL_ROOT})
### End of Global Include Path

View File

@ -11,6 +11,7 @@ target_link_libraries(benchmark
target_compile_definitions(benchmark PRIVATE
WOLFSSL_RPI_PICO
PICO_STACK_SIZE=4096
)
if (USE_UART)

View File

@ -45,7 +45,7 @@ extern time_t myTime(time_t *);
/* ------------------------------------------------------------------------- */
/* Platform */
/* ------------------------------------------------------------------------- */
#define WOLFSSL_GENERAL_ALIGNMENT 4
#define WOLFSSL_GENERAL_ALIGNMENT 0
#define SIZEOF_LONG_LONG 8
#if 0
#define NO_64BIT /* disable use of 64-bit variables */
@ -76,7 +76,7 @@ extern time_t myTime(time_t *);
// #define WOLFSSL_SP_384 /* Enable ECC 384-bit SECP384R1 support */
// #define WOLFSSL_SP_CACHE_RESISTANT
#define WOLFSSL_SP_MATH /* only SP math - disables integer.c/tfm.c */
//#define WOLFSSL_SP_MATH /* only SP math - disables integer.c/tfm.c */
#define WOLFSSL_SP_MATH_ALL /* use SP math for all key sizes and curves */
// #define WOLFSSL_SP_NO_MALLOC

View File

@ -37,9 +37,11 @@ int main(int argc, char **argv)
int ret;
stdio_init_all();
printf("\nSystem clock = %dMHz\n\n", clock_get_hz(clk_sys)/1000000);
ret = benchmark_test(NULL);
printf("End: %d\n", ret);
while(1) {
printf("\nSystem clock = %dMHz\n\n", clock_get_hz(clk_sys)/1000000);
ret = benchmark_test(NULL);
printf("End: %d\n", ret);
}
return ret;
}

View File

@ -31,6 +31,8 @@ target_compile_definitions(wolfssl PUBLIC
WOLFSSL_USER_SETTINGS
)
add_compile_definitions(PICO_USE_STACK_GUARDS=1)
if (${PICO_PLATFORM} STREQUAL "rp2350-arm-s")
add_compile_definitions(wolfssl WOLFSSL_SP_ARM_CORTEX_M_ASM)
elseif (${PICO_PLATFORM} STREQUAL "rp2350-riscv")