mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 19:13:21 +00:00
Merge branch 'refactor/remove_idf_test_component' into 'master'
refactor: Remove idf_test component Closes IDF-12578 See merge request espressif/esp-idf!43733
This commit is contained in:
@@ -136,7 +136,6 @@
|
||||
/components/hal/test_apps/tee/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/security
|
||||
/components/heap/ @esp-idf-codeowners/system
|
||||
/components/http_parser/ @esp-idf-codeowners/app-utilities
|
||||
/components/idf_test/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/system
|
||||
/components/ieee802154/ @esp-idf-codeowners/ieee802154
|
||||
/components/linux/ @esp-idf-codeowners/system
|
||||
/components/log/ @esp-idf-codeowners/system
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
/* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
// Chip-Specific Data
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 3
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32S2
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 6
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32S3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 4
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C2
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 3
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 5
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 5
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 10
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C61
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 5
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32H2
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 10
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32P4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 10
|
||||
|
||||
#endif
|
||||
@@ -10,6 +10,7 @@ set(srcs "test_app_main.c"
|
||||
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
|
||||
# the component can be registered as WHOLE_ARCHIVE
|
||||
idf_component_register(SRCS ${srcs}
|
||||
PRIV_INCLUDE_DIRS "../include"
|
||||
PRIV_REQUIRES esp_driver_gptimer esp_driver_gpio esp_wifi nvs_flash esp_adc test_utils efuse
|
||||
esp_driver_tsens
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "esp_log.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_cpu.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#include "hal/adc_periph.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
@@ -18,7 +19,7 @@
|
||||
#include "esp_adc/adc_continuous.h"
|
||||
#include "esp_adc/adc_filter.h"
|
||||
#include "test_common_adc.h"
|
||||
#include "idf_performance.h"
|
||||
#include "adc_performance.h"
|
||||
|
||||
__attribute__((unused)) static const char *TAG = "TEST_ADC";
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_1BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_1BIT 4000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_1BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_1BIT 4000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_SPI
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_SPI 1000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_SPI
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_SPI 1000
|
||||
#endif
|
||||
|
||||
// Chip-Specific Data
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_4BIT 12200
|
||||
#endif
|
||||
|
||||
#if !CONFIG_FREERTOS_SMP // IDF-5826
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT 11000
|
||||
#endif
|
||||
#else
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT 12200
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6
|
||||
#undef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_4BIT 9000
|
||||
#undef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT 10000
|
||||
|
||||
#endif
|
||||
+1
@@ -2,5 +2,6 @@ set(srcs "test_app_main.c"
|
||||
"test_sdio_sdhost.c")
|
||||
|
||||
idf_component_register(SRCS ${srcs}
|
||||
PRIV_INCLUDE_DIRS "../../../../include"
|
||||
PRIV_REQUIRES unity esp_serial_slave_link test_utils esp_timer esp_driver_sdmmc
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
#include "soc/soc_caps.h"
|
||||
|
||||
#include "test_utils.h"
|
||||
#include "idf_performance.h"
|
||||
#include "sdio_performance.h"
|
||||
#include "test_dualboard_utils.h"
|
||||
#include "../../sdio_common_test.h"
|
||||
|
||||
|
||||
+2
@@ -6,6 +6,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
#define IDF_TARGET_MAX_SPI_CLK_FREQ 16*1000*1000
|
||||
#define IDF_TARGET_MAX_TRANS_TIME_POLL_DMA 15
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
/* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
// events dispatched per second by event loop library
|
||||
#if !CONFIG_FREERTOS_SMP // IDF-5826
|
||||
#if CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ < 100 // Allowing lesser event dispatch performance for slower CPU frequency chips
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH 11000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM 9000
|
||||
#endif
|
||||
#else
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH 25000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM 21000
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH 18000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM 14000
|
||||
#endif
|
||||
#endif
|
||||
@@ -14,6 +14,6 @@ if(NOT ${target} STREQUAL "linux")
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS ${srcs}
|
||||
PRIV_INCLUDE_DIRS . ../../private_include
|
||||
PRIV_INCLUDE_DIRS . ../../private_include ../include
|
||||
PRIV_REQUIRES ${priv_requires}
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "unity_test_utils_memory.h"
|
||||
|
||||
#include "test_utils.h"
|
||||
#include "event_performance.h"
|
||||
|
||||
static const char* TAG = "test_event";
|
||||
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
/* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
// Chip-Specific Data
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C2
|
||||
// floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C3
|
||||
// floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32H2
|
||||
// floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32S3
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#endif
|
||||
@@ -26,6 +26,7 @@ endif()
|
||||
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
|
||||
# the component can be registered as WHOLE_ARCHIVE
|
||||
idf_component_register(SRCS ${srcs}
|
||||
PRIV_INCLUDE_DIRS "../include"
|
||||
PRIV_REQUIRES unity esp_driver_gpio esp_driver_gptimer esp_driver_uart
|
||||
test_utils spi_flash esp_timer esp_hal_wdt
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "freertos/semphr.h"
|
||||
#include "unity.h"
|
||||
#include "test_utils.h"
|
||||
#include "hw_support_performance.h"
|
||||
|
||||
/* Note: these functions are included here for unit test purposes. They are not needed for writing
|
||||
* normal code. If writing standard C floating point code, libgcc should correctly include implementations
|
||||
|
||||
@@ -50,5 +50,6 @@ list(APPEND srcs "${mbedtls_test_srcs_dir}/test_apb_dport_access.c"
|
||||
"${mbedtls_test_srcs_dir}/test_mbedtls_utils.c")
|
||||
|
||||
idf_component_register(SRCS ${srcs}
|
||||
PRIV_INCLUDE_DIRS "${idf_path}/components/mbedtls/test_apps/include"
|
||||
PRIV_REQUIRES ${priv_requires}
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
/* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1000
|
||||
#endif
|
||||
|
||||
// Chip-Specific Data
|
||||
#if CONFIG_IDF_TARGET_ESP32C2
|
||||
#ifdef CONFIG_XTAL_FREQ_26
|
||||
#undef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1900
|
||||
#else
|
||||
#undef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1200
|
||||
#endif
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C5
|
||||
#undef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1200
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6
|
||||
#undef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1200
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C61
|
||||
#undef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1300
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32H2
|
||||
#undef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1900
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32H21
|
||||
#undef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1900
|
||||
|
||||
#endif
|
||||
@@ -20,6 +20,6 @@ if(CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD)
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS ${srcs}
|
||||
PRIV_INCLUDE_DIRS "../../private_include"
|
||||
PRIV_INCLUDE_DIRS "../../private_include" "../include"
|
||||
PRIV_REQUIRES cmock test_utils esp_timer spi_flash esp_psram esp_driver_gpio esp_pm
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "esp_timer.h"
|
||||
#include "esp_timer_impl.h"
|
||||
#include "unity.h"
|
||||
#include "soc/timer_group_reg.h"
|
||||
#include "soc/soc_caps.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "test_utils.h"
|
||||
#include "esp_freertos_hooks.h"
|
||||
#include "esp_rom_sys.h"
|
||||
/* include performance pass standards header file */
|
||||
#include "esp_timer_performance.h"
|
||||
|
||||
#define SEC (1000000)
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP 215
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_PSRAM
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_PSRAM 300
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_UNICORE
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_UNICORE 130
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_ISR_ENTER_CYCLES
|
||||
#define IDF_PERFORMANCE_MAX_ISR_ENTER_CYCLES 290
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_ISR_EXIT_CYCLES
|
||||
#define IDF_PERFORMANCE_MAX_ISR_EXIT_CYCLES 565
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_SCHEDULING_TIME
|
||||
#define IDF_PERFORMANCE_MAX_SCHEDULING_TIME 2000
|
||||
#endif
|
||||
|
||||
// Chip-Specific Data
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
/* Spinlock performance on esp32p4 is slower. */
|
||||
#undef IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP 400
|
||||
#undef IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_UNICORE
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_UNICORE 150
|
||||
|
||||
/* Solicited yields (portYIELD() or taskYIELD()) take longer on esp32p4. TODO: IDF-2809 */
|
||||
#undef IDF_PERFORMANCE_MAX_SCHEDULING_TIME
|
||||
#define IDF_PERFORMANCE_MAX_SCHEDULING_TIME 3200
|
||||
#endif
|
||||
@@ -3,5 +3,6 @@
|
||||
# In order for the cases defined by `TEST_CASE` in "performance" to be linked into
|
||||
# the final elf, the component can be registered as WHOLE_ARCHIVE
|
||||
idf_component_register(SRC_DIRS "."
|
||||
PRIV_INCLUDE_DIRS "../include"
|
||||
PRIV_REQUIRES unity test_utils
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "esp_cpu.h"
|
||||
#include "unity.h"
|
||||
#include "test_utils.h"
|
||||
#include "freertos_performance.h"
|
||||
|
||||
#define NUMBER_OF_ITERATIONS 1023
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#include "esp_cpu.h"
|
||||
#include "unity.h"
|
||||
#include "test_utils.h"
|
||||
#include "freertos_performance.h"
|
||||
|
||||
#if CONFIG_IDF_TARGET_ARCH_XTENSA
|
||||
#include "xtensa/hal.h"
|
||||
#include "xtensa_api.h" // Replace with interrupt allocator API (IDF-3891)
|
||||
|
||||
@@ -3,5 +3,6 @@
|
||||
# In order for the cases defined by `TEST_CASE` in "port" to be linked into
|
||||
# the final elf, the component can be registered as WHOLE_ARCHIVE
|
||||
idf_component_register(SRC_DIRS "."
|
||||
PRIV_INCLUDE_DIRS "../include"
|
||||
PRIV_REQUIRES unity test_utils
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "esp_cpu.h"
|
||||
|
||||
#include "test_utils.h"
|
||||
#include "freertos_performance.h"
|
||||
|
||||
#if !CONFIG_FREERTOS_SMP // Known issue in Amazon SMP FreeRTOS port IDF-6204
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_MALLOC_DEFAULT_AVERAGE_TIME
|
||||
#define IDF_PERFORMANCE_MAX_MALLOC_DEFAULT_AVERAGE_TIME 2600
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_FREE_DEFAULT_AVERAGE_TIME
|
||||
#define IDF_PERFORMANCE_MAX_FREE_DEFAULT_AVERAGE_TIME 950
|
||||
#endif
|
||||
@@ -1,7 +0,0 @@
|
||||
idf_build_get_property(target IDF_TARGET)
|
||||
|
||||
if(${target} STREQUAL "linux")
|
||||
return() # This component is not supported by the POSIX/Linux simulator
|
||||
endif()
|
||||
|
||||
idf_component_register(INCLUDE_DIRS "include" "include/${target}")
|
||||
@@ -1,4 +0,0 @@
|
||||
|
||||
# Note: The test cases in this folder are for Espressif internal use.
|
||||
|
||||
# Goto internal project wiki Testing page for detail about this folder.
|
||||
@@ -1,64 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
// AES-CBC hardware throughput (accounts for worst-case performance with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 8.2
|
||||
|
||||
// SHA256 hardware throughput at 240MHz, threshold set lower than worst case
|
||||
#if CONFIG_FREERTOS_SMP // IDF-5826
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 6.0
|
||||
#else
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 8.0
|
||||
#endif
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 5000
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA512_32KB 4500
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 19000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 750000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 33000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 950000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PUBLIC_OP 90000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PRIVATE_OP 3000000
|
||||
|
||||
// floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 3
|
||||
|
||||
//SDIO
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_4BIT 12200
|
||||
#endif
|
||||
|
||||
#if !CONFIG_FREERTOS_SMP // IDF-5826
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT 11000
|
||||
#endif
|
||||
#else
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT 12200
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_1BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_1BIT 4000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_1BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_1BIT 4000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_SPI
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_SPI 1000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_SPI
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_SPI 1000
|
||||
#endif
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#ifdef CONFIG_XTAL_FREQ_26
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1900
|
||||
#else
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1200
|
||||
#endif
|
||||
|
||||
// SHA256 hardware throughput at 160 MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 14
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 2500
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_MULTIPLY_OP 9000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_VERIFY_OP 300
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_MULTIPLY_OP 14000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_VERIFY_OP 300
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P192_VERIFY_OP 32000
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P256_VERIFY_OP 49000
|
||||
|
||||
// floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 3
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 43
|
||||
|
||||
// SHA256 hardware throughput at 160 MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 90
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 560
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 19000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 210000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 45000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 670000
|
||||
|
||||
// floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 5
|
||||
@@ -1,17 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1200
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 5
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1200
|
||||
|
||||
// ECC peripheral output at 160MHz
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_MULTIPLY_OP 5000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_VERIFY_OP 60
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_MULTIPLY_OP 8400
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_VERIFY_OP 70
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P192_VERIFY_OP 18000
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P256_VERIFY_OP 27000
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 10
|
||||
|
||||
//SDIO
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_4BIT 9000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_4BIT 10000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_1BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_1BIT 4000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_1BIT
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_1BIT 4000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_SPI
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_TOHOST_SPI 1000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_SPI
|
||||
#define IDF_PERFORMANCE_MIN_SDIO_THROUGHPUT_KBSEC_FRHOST_SPI 1000
|
||||
#endif
|
||||
@@ -1,17 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1300
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 5
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 5
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1900
|
||||
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 43
|
||||
|
||||
// SHA256 hardware throughput at 160 MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 90
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 560
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 19000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 210000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 45000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 670000
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_MULTIPLY_OP 11000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_VERIFY_OP 300
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_MULTIPLY_OP 19000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_VERIFY_OP 300
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P192_VERIFY_OP 44000
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P256_VERIFY_OP 67000
|
||||
|
||||
// floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 10
|
||||
@@ -1,9 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1900
|
||||
@@ -1,5 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/* Spinlock performance on esp32p4 is slower. */
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP 400
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_UNICORE 150
|
||||
|
||||
/* Solicited yields (portYIELD() or taskYIELD()) take longer on esp32p4. TODO: IDF-2809 */
|
||||
#define IDF_PERFORMANCE_MAX_SCHEDULING_TIME 3200
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 10
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 10
|
||||
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 43.0
|
||||
#define IDF_PERFORMANCE_MIN_AES_GCM_CRYPT_TAG_THROUGHPUT_MBSEC 30.0
|
||||
#define IDF_PERFORMANCE_MIN_AES_GCM_UPDATE_THROUGHPUT_MBSEC 2.1
|
||||
|
||||
// SHA256 hardware throughput at 240MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 90.0
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 900
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA512_32KB 900
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 15500
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 650000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 36000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 960000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PUBLIC_OP 62000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PRIVATE_OP 2850000
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 3
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 6
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 43
|
||||
|
||||
// SHA256 hardware throughput at 240MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 90
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 1000
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA512_32KB 900
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 23000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 700000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 45000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 1300000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PUBLIC_OP 80000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PRIVATE_OP 3500000
|
||||
|
||||
// floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV 70
|
||||
#define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT 140
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_NO_FILTER 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_2 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_4 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_8 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_16 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_CONTINUOUS_STD_ATTEN3_FILTER_64 4
|
||||
#define IDF_PERFORMANCE_MAX_ADC_ONESHOT_STD_ATTEN3 4
|
||||
@@ -1,132 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
/* put target-specific macros into include/target/idf_performance_target.h */
|
||||
#include "idf_performance_target.h"
|
||||
|
||||
/* Define default values in this file with #ifndef if the value could been overwritten in the target-specific headers
|
||||
* above. Forgetting this will produce compile-time warnings.
|
||||
*/
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP 215
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_PSRAM
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_PSRAM 300
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_UNICORE
|
||||
#define IDF_PERFORMANCE_MAX_FREERTOS_SPINLOCK_CYCLES_PER_OP_UNICORE 130
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL
|
||||
#define IDF_PERFORMANCE_MAX_ESP_TIMER_GET_TIME_PER_CALL 1000
|
||||
#endif
|
||||
|
||||
/* Due to code size & linker layout differences interacting with cache, VFS
|
||||
microbenchmark currently runs slower with PSRAM enabled. */
|
||||
#if !CONFIG_FREERTOS_SMP // IDF-5826
|
||||
#ifndef IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME
|
||||
#define IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME 20000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME_PSRAM
|
||||
#define IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME_PSRAM 25000
|
||||
#endif
|
||||
#else
|
||||
#ifndef IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME
|
||||
#define IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME 62000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME_PSRAM
|
||||
#define IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME_PSRAM 66000
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// throughput performance by iperf
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_RX_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_TCP_RX_THROUGHPUT 45
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_TX_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_TCP_TX_THROUGHPUT 40
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_RX_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_UDP_RX_THROUGHPUT 64
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_TX_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_UDP_TX_THROUGHPUT 50
|
||||
#endif
|
||||
|
||||
// throughput performance by ethernet iperf
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_RX_ETH_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_TCP_RX_ETH_THROUGHPUT 20
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_TX_ETH_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_TCP_TX_ETH_THROUGHPUT 30
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_RX_ETH_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_UDP_RX_ETH_THROUGHPUT 50
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_TX_ETH_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_UDP_TX_ETH_THROUGHPUT 70
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_RX_ETH_THROUGHPUT_SPI_ETH
|
||||
#define IDF_PERFORMANCE_MIN_TCP_RX_ETH_THROUGHPUT_SPI_ETH 6
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_TX_ETH_THROUGHPUT_SPI_ETH
|
||||
#define IDF_PERFORMANCE_MIN_TCP_TX_ETH_THROUGHPUT_SPI_ETH 8
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_RX_ETH_THROUGHPUT_SPI_ETH
|
||||
#define IDF_PERFORMANCE_MIN_UDP_RX_ETH_THROUGHPUT_SPI_ETH 8
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_TX_ETH_THROUGHPUT_SPI_ETH
|
||||
#define IDF_PERFORMANCE_MIN_UDP_TX_ETH_THROUGHPUT_SPI_ETH 10
|
||||
#endif
|
||||
|
||||
|
||||
// events dispatched per second by event loop library
|
||||
#if !CONFIG_FREERTOS_SMP // IDF-5826
|
||||
#if CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ < 100 // Allowing lesser event dispatch performance for slower CPU frequency chips
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH 11000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM 9000
|
||||
#endif
|
||||
#else
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH 25000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM 21000
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH 18000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM
|
||||
#define IDF_PERFORMANCE_MIN_EVENT_DISPATCH_PSRAM 14000
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_SPILL_REG_CYCLES
|
||||
#define IDF_PERFORMANCE_MAX_SPILL_REG_CYCLES 150
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_ISR_ENTER_CYCLES
|
||||
#define IDF_PERFORMANCE_MAX_ISR_ENTER_CYCLES 290
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_ISR_EXIT_CYCLES
|
||||
#define IDF_PERFORMANCE_MAX_ISR_EXIT_CYCLES 565
|
||||
#endif
|
||||
|
||||
//time to perform the task selection plus context switch (from task)
|
||||
#ifndef IDF_PERFORMANCE_MAX_SCHEDULING_TIME
|
||||
#define IDF_PERFORMANCE_MAX_SCHEDULING_TIME 2000
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_MALLOC_DEFAULT_AVERAGE_TIME
|
||||
#define IDF_PERFORMANCE_MAX_MALLOC_DEFAULT_AVERAGE_TIME 2600
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_FREE_DEFAULT_AVERAGE_TIME
|
||||
#define IDF_PERFORMANCE_MAX_FREE_DEFAULT_AVERAGE_TIME 950
|
||||
#endif
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
// Chip-Specific Data
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
// AES-CBC hardware throughput (accounts for worst-case performance with PSRAM workaround)
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 8.2
|
||||
|
||||
// SHA256 hardware throughput at 240MHz, threshold set lower than worst case
|
||||
#if CONFIG_FREERTOS_SMP // IDF-5826
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 6.0
|
||||
#else
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 8.0
|
||||
#endif
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 5000
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA512_32KB 4500
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 19000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 750000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 33000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 950000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PUBLIC_OP 90000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PRIVATE_OP 3000000
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32S2
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 43.0
|
||||
#define IDF_PERFORMANCE_MIN_AES_GCM_CRYPT_TAG_THROUGHPUT_MBSEC 30.0
|
||||
#define IDF_PERFORMANCE_MIN_AES_GCM_UPDATE_THROUGHPUT_MBSEC 2.1
|
||||
|
||||
// SHA256 hardware throughput at 240MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 90.0
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 900
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA512_32KB 900
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 15500
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 650000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 36000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 960000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PUBLIC_OP 62000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PRIVATE_OP 2850000
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32S3
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 43
|
||||
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 90
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 1000
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA512_32KB 900
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 23000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 700000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 45000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 1300000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PUBLIC_OP 80000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_4096KEY_PRIVATE_OP 3500000
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C2
|
||||
// SHA256 hardware throughput at 160 MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 14
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 2500
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_MULTIPLY_OP 9000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_VERIFY_OP 300
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_MULTIPLY_OP 14000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_VERIFY_OP 300
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P192_VERIFY_OP 32000
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P256_VERIFY_OP 49000
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C3
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 43
|
||||
|
||||
// SHA256 hardware throughput at 160 MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 90
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 560
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 19000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 210000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 45000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 670000
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_MULTIPLY_OP 5000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_VERIFY_OP 60
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_MULTIPLY_OP 8400
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_VERIFY_OP 70
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P192_VERIFY_OP 18000
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P256_VERIFY_OP 27000
|
||||
|
||||
#elif CONFIG_IDF_TARGET_ESP32H2
|
||||
#define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC 43
|
||||
|
||||
// SHA256 hardware throughput at 160 MHz, threshold set lower than worst case
|
||||
#define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC 90
|
||||
// esp_sha() time to process 32KB of input data from RAM
|
||||
#define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB 560
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP 19000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP 210000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP 45000
|
||||
#define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP 670000
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_MULTIPLY_OP 11000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P192_POINT_VERIFY_OP 300
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_MULTIPLY_OP 19000
|
||||
#define IDF_PERFORMANCE_MAX_ECP_P256_POINT_VERIFY_OP 300
|
||||
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P192_VERIFY_OP 44000
|
||||
#define IDF_PERFORMANCE_MAX_ECDSA_P256_VERIFY_OP 67000
|
||||
#endif
|
||||
@@ -10,7 +10,7 @@ set(TEST_CRTS "crts/server_cert_chain.pem"
|
||||
|
||||
idf_component_register(
|
||||
SRC_DIRS "."
|
||||
PRIV_INCLUDE_DIRS "."
|
||||
PRIV_INCLUDE_DIRS "." "../include"
|
||||
PRIV_REQUIRES efuse cmock test_utils mbedtls esp_timer unity spi_flash esp_psram esp_security
|
||||
EMBED_TXTFILES ${TEST_CRTS}
|
||||
WHOLE_ARCHIVE)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "esp_heap_caps.h"
|
||||
#include "test_utils.h"
|
||||
#include "ccomp_timer.h"
|
||||
#include "crypto_performance.h"
|
||||
|
||||
#if CONFIG_MBEDTLS_HARDWARE_AES
|
||||
TEST_CASE("mbedtls AES performance", "[aes][timeout=60]")
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include "test_utils.h"
|
||||
#include "ccomp_timer.h"
|
||||
#include "unity.h"
|
||||
#include "crypto_performance.h"
|
||||
|
||||
#if CONFIG_MBEDTLS_HARDWARE_ECC
|
||||
#include "hal/ecc_ll.h"
|
||||
#endif
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "ccomp_timer.h"
|
||||
#include "unity.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#include "crypto_performance.h"
|
||||
|
||||
#include "ecdsa/ecdsa_alt.h"
|
||||
#if SOC_KEY_MANAGER_SUPPORTED
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "unity.h"
|
||||
#include "ccomp_timer.h"
|
||||
#include "test_utils.h"
|
||||
#include "crypto_performance.h"
|
||||
|
||||
typedef enum {
|
||||
PSA_RSA_KEY_SIZE_2048,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "esp_log.h"
|
||||
#include "ccomp_timer.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#include "idf_performance.h"
|
||||
#include "crypto_performance.h"
|
||||
#include "esp_private/esp_clk.h"
|
||||
#include "spi_flash_mmap.h"
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include "test_utils.h"
|
||||
#include "ccomp_timer.h"
|
||||
#include "test_mbedtls_utils.h"
|
||||
#include "psa/crypto.h"
|
||||
#include "crypto_performance.h"
|
||||
|
||||
#include "psa/crypto.h"
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
/* Due to code size & linker layout differences interacting with cache, VFS
|
||||
microbenchmark currently runs slower with PSRAM enabled. */
|
||||
#if !CONFIG_FREERTOS_SMP // IDF-5826
|
||||
#ifndef IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME
|
||||
#define IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME 20000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME_PSRAM
|
||||
#define IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME_PSRAM 25000
|
||||
#endif
|
||||
#else
|
||||
#ifndef IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME
|
||||
#define IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME 62000
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME_PSRAM
|
||||
#define IDF_PERFORMANCE_MAX_VFS_OPEN_WRITE_CLOSE_TIME_PSRAM 66000
|
||||
#endif
|
||||
#endif
|
||||
@@ -7,7 +7,7 @@ set(src "test_app_main.c" "test_vfs_access.c"
|
||||
)
|
||||
|
||||
idf_component_register(SRCS ${src}
|
||||
PRIV_INCLUDE_DIRS .
|
||||
PRIV_INCLUDE_DIRS . ../include
|
||||
PRIV_REQUIRES test_utils vfs fatfs spiffs unity lwip wear_levelling cmock
|
||||
esp_driver_gptimer esp_driver_uart
|
||||
WHOLE_ARCHIVE
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "esp_log.h"
|
||||
#include "test_utils.h"
|
||||
#include "ccomp_timer.h"
|
||||
#include "vfs_performance.h"
|
||||
#include "driver/uart.h"
|
||||
#include "driver/uart_vfs.h"
|
||||
#include "lwip/sockets.h"
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MAX_SPILL_REG_CYCLES
|
||||
#define IDF_PERFORMANCE_MAX_SPILL_REG_CYCLES 150
|
||||
#endif
|
||||
-55
@@ -418,61 +418,6 @@ def log_performance(record_property: t.Callable[[str, object], None]) -> t.Calla
|
||||
return real_func
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def check_performance(idf_path: str) -> t.Callable[[str, float, str], None]:
|
||||
"""
|
||||
check if the given performance item meets the passing standard or not
|
||||
"""
|
||||
|
||||
def real_func(item: str, value: float, target: str) -> None:
|
||||
"""
|
||||
:param item: performance item name
|
||||
:param value: performance item value
|
||||
:param target: target chip
|
||||
:raise: AssertionError: if check fails
|
||||
"""
|
||||
|
||||
def _find_perf_item(operator: str, path: str) -> float:
|
||||
with open(path, encoding='utf-8') as f:
|
||||
data = f.read()
|
||||
match = re.search(rf'#define\s+IDF_PERFORMANCE_{operator}_{item.upper()}\s+([\d.]+)', data)
|
||||
return float(match.group(1)) # type: ignore
|
||||
|
||||
def _check_perf(operator: str, standard_value: float) -> None:
|
||||
if operator == 'MAX':
|
||||
ret = value <= standard_value
|
||||
else:
|
||||
ret = value >= standard_value
|
||||
if not ret:
|
||||
raise AssertionError(
|
||||
f"[Performance] {item} value is {value}, doesn't meet pass standard {standard_value}"
|
||||
)
|
||||
|
||||
path_prefix = os.path.join(idf_path, 'components', 'idf_test', 'include')
|
||||
performance_files = (
|
||||
os.path.join(path_prefix, target, 'idf_performance_target.h'),
|
||||
os.path.join(path_prefix, 'idf_performance.h'),
|
||||
)
|
||||
|
||||
found_item = False
|
||||
for op in ['MIN', 'MAX']:
|
||||
for performance_file in performance_files:
|
||||
try:
|
||||
standard = _find_perf_item(op, performance_file)
|
||||
except (OSError, AttributeError):
|
||||
# performance file doesn't exist or match is not found in it
|
||||
continue
|
||||
|
||||
_check_perf(op, standard)
|
||||
found_item = True
|
||||
break
|
||||
|
||||
if not found_item:
|
||||
raise AssertionError(f'Failed to get performance standard for {item}')
|
||||
|
||||
return real_func
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def log_minimum_free_heap_size(dut: IdfDut, config: str, idf_path: str) -> t.Callable[..., None]:
|
||||
def real_func() -> None:
|
||||
|
||||
@@ -708,7 +708,7 @@ We provide C macros ``TEST_PERFORMANCE_LESS_THAN`` and ``TEST_PERFORMANCE_GREATE
|
||||
check_performance('RSA_2048KEY_PUBLIC_OP', 123, 'esp32')
|
||||
check_performance('RSA_2048KEY_PUBLIC_OP', 19001, 'esp32')
|
||||
|
||||
The above example would first get the threshold values of the performance item ``RSA_2048KEY_PUBLIC_OP`` from :idf_file:`components/idf_test/include/idf_performance.h` and the target-specific one :idf_file:`components/idf_test/include/esp32/idf_performance_target.h`, then check if the value reached the minimum limit or exceeded the maximum limit.
|
||||
The above example would first get the threshold values of the performance item ``RSA_2048KEY_PUBLIC_OP`` from the component-specific performance header files (e.g., :idf_file:`components/esp_adc/test_apps/adc/include/adc_performance.h` for ADC performance tests), then check if the value reached the minimum limit or exceeded the maximum limit.
|
||||
|
||||
Let us assume the value of ``IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP`` is 19000. so the first ``check_performance`` line would pass and the second one would fail with warning: ``[Performance] RSA_2048KEY_PUBLIC_OP value is 19001, doesn\'t meet pass standard 19000.0``.
|
||||
|
||||
|
||||
@@ -708,7 +708,7 @@ Pytest 使用技巧
|
||||
check_performance('RSA_2048KEY_PUBLIC_OP', 123, 'esp32')
|
||||
check_performance('RSA_2048KEY_PUBLIC_OP', 19001, 'esp32')
|
||||
|
||||
以上示例会首先从 :idf_file:`components/idf_test/include/idf_performance.h` 和指定目标芯片的 :idf_file:`components/idf_test/include/esp32/idf_performance_target.h` 头文件中获取性能项 ``RSA_2048KEY_PUBLIC_OP`` 的阈值,然后检查该值是否达到了最小值或超过了最大值。
|
||||
以上示例会首先从组件特定的性能头文件中获取性能项 ``RSA_2048KEY_PUBLIC_OP`` 的阈值(例如,ADC 性能测试使用 :idf_file:`components/esp_adc/test_apps/adc/include/adc_performance.h`),然后检查该值是否达到了最小值或超过了最大值。
|
||||
|
||||
例如,假设 ``IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP`` 的值为 19000,则上例中第一行 ``check_performance`` 会通过测试,第二行会失败并警告:``[Performance] RSA_2048KEY_PUBLIC_OP value is 19001, doesn\'t meet pass standard 19000.0``。
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
// throughput performance by ethernet iperf
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_RX_ETH_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_TCP_RX_ETH_THROUGHPUT 20
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_TX_ETH_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_TCP_TX_ETH_THROUGHPUT 30
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_RX_ETH_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_UDP_RX_ETH_THROUGHPUT 50
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_TX_ETH_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_UDP_TX_ETH_THROUGHPUT 70
|
||||
#endif
|
||||
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_RX_ETH_THROUGHPUT_SPI_ETH
|
||||
#define IDF_PERFORMANCE_MIN_TCP_RX_ETH_THROUGHPUT_SPI_ETH 6
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_TX_ETH_THROUGHPUT_SPI_ETH
|
||||
#define IDF_PERFORMANCE_MIN_TCP_TX_ETH_THROUGHPUT_SPI_ETH 8
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_RX_ETH_THROUGHPUT_SPI_ETH
|
||||
#define IDF_PERFORMANCE_MIN_UDP_RX_ETH_THROUGHPUT_SPI_ETH 8
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_TX_ETH_THROUGHPUT_SPI_ETH
|
||||
#define IDF_PERFORMANCE_MIN_UDP_TX_ETH_THROUGHPUT_SPI_ETH 10
|
||||
#endif
|
||||
@@ -61,10 +61,25 @@ class IperfTestUtilityEth(IperfUtility.IperfTestUtility):
|
||||
return dut_ip, rssi
|
||||
|
||||
|
||||
# Performance thresholds (Mbps)
|
||||
ETH_IPERF_THRESHOLDS = {
|
||||
'tcp_tx_eth_throughput': 30,
|
||||
'tcp_rx_eth_throughput': 20,
|
||||
'udp_tx_eth_throughput': 70,
|
||||
'udp_rx_eth_throughput': 50,
|
||||
}
|
||||
|
||||
ETH_IPERF_THRESHOLDS_SPI_ETH = {
|
||||
'tcp_tx_eth_throughput_spi_eth': 8,
|
||||
'tcp_rx_eth_throughput_spi_eth': 6,
|
||||
'udp_tx_eth_throughput_spi_eth': 10,
|
||||
'udp_rx_eth_throughput_spi_eth': 8,
|
||||
}
|
||||
|
||||
|
||||
def test_esp_eth_iperf(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
udp_tx_bw_lim: int | None = NO_BANDWIDTH_LIMIT,
|
||||
udp_rx_bw_lim: int | None = NO_BANDWIDTH_LIMIT,
|
||||
spi_eth: bool | None = False,
|
||||
@@ -96,26 +111,27 @@ def test_esp_eth_iperf(
|
||||
test_utility.run_test('udp', 'rx', 0, udp_rx_bw_lim)
|
||||
|
||||
# 4. log performance and compare with pass standard
|
||||
thresholds = ETH_IPERF_THRESHOLDS_SPI_ETH if spi_eth else ETH_IPERF_THRESHOLDS
|
||||
for throughput_type in test_result:
|
||||
throughput_value = test_result[throughput_type].get_best_throughput()
|
||||
log_performance(
|
||||
f'{throughput_type}_throughput',
|
||||
f'{test_result[throughput_type].get_best_throughput():.02f} Mbps',
|
||||
f'{throughput_value:.02f} Mbps',
|
||||
)
|
||||
|
||||
# do check after logging, otherwise test will exit immediately if check fail, some performance can't be logged.
|
||||
for throughput_type in test_result:
|
||||
if spi_eth:
|
||||
check_performance(
|
||||
f'{throughput_type}_eth_throughput_spi_eth',
|
||||
test_result[throughput_type].get_best_throughput(),
|
||||
dut.target,
|
||||
)
|
||||
threshold_key = f'{throughput_type}_eth_throughput_spi_eth'
|
||||
else:
|
||||
check_performance(
|
||||
f'{throughput_type}_eth_throughput',
|
||||
test_result[throughput_type].get_best_throughput(),
|
||||
dut.target,
|
||||
)
|
||||
threshold_key = f'{throughput_type}_eth_throughput'
|
||||
threshold_value = thresholds.get(threshold_key)
|
||||
if threshold_value is None:
|
||||
raise ValueError(f'No threshold defined for {threshold_key}')
|
||||
throughput_value = test_result[throughput_type].get_best_throughput()
|
||||
assert throughput_value >= threshold_value, (
|
||||
f"[Performance] {threshold_key} value is {throughput_value}, doesn't meet pass standard {threshold_value}"
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.eth_ip101
|
||||
@@ -130,9 +146,8 @@ def test_esp_eth_iperf(
|
||||
def test_esp_eth_iperf_ip101(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, udp_tx_bw_lim=90)
|
||||
test_esp_eth_iperf(dut, log_performance, udp_tx_bw_lim=90)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -146,9 +161,8 @@ def test_esp_eth_iperf_ip101(
|
||||
def test_esp_eth_iperf_ip101_esp32p4(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, udp_tx_bw_lim=96)
|
||||
test_esp_eth_iperf(dut, log_performance, udp_tx_bw_lim=96)
|
||||
|
||||
|
||||
@pytest.mark.eth_lan8720
|
||||
@@ -163,9 +177,8 @@ def test_esp_eth_iperf_ip101_esp32p4(
|
||||
def test_esp_eth_iperf_lan8720(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, udp_tx_bw_lim=90)
|
||||
test_esp_eth_iperf(dut, log_performance, udp_tx_bw_lim=90)
|
||||
|
||||
|
||||
@pytest.mark.eth_rtl8201
|
||||
@@ -180,9 +193,8 @@ def test_esp_eth_iperf_lan8720(
|
||||
def test_esp_eth_iperf_rtl8201(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, udp_tx_bw_lim=90)
|
||||
test_esp_eth_iperf(dut, log_performance, udp_tx_bw_lim=90)
|
||||
|
||||
|
||||
@pytest.mark.eth_dp83848
|
||||
@@ -197,9 +209,8 @@ def test_esp_eth_iperf_rtl8201(
|
||||
def test_esp_eth_iperf_dp83848(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, udp_tx_bw_lim=90)
|
||||
test_esp_eth_iperf(dut, log_performance, udp_tx_bw_lim=90)
|
||||
|
||||
|
||||
@pytest.mark.eth_ksz8041
|
||||
@@ -214,9 +225,8 @@ def test_esp_eth_iperf_dp83848(
|
||||
def test_esp_eth_iperf_ksz8041(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, udp_tx_bw_lim=90)
|
||||
test_esp_eth_iperf(dut, log_performance, udp_tx_bw_lim=90)
|
||||
|
||||
|
||||
@pytest.mark.eth_dm9051
|
||||
@@ -231,9 +241,8 @@ def test_esp_eth_iperf_ksz8041(
|
||||
def test_esp_eth_iperf_dm9051(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, spi_eth=True, udp_rx_bw_lim=10)
|
||||
test_esp_eth_iperf(dut, log_performance, spi_eth=True, udp_rx_bw_lim=10)
|
||||
|
||||
|
||||
@pytest.mark.eth_w5500
|
||||
@@ -248,9 +257,8 @@ def test_esp_eth_iperf_dm9051(
|
||||
def test_esp_eth_iperf_w5500(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, spi_eth=True, udp_rx_bw_lim=10)
|
||||
test_esp_eth_iperf(dut, log_performance, spi_eth=True, udp_rx_bw_lim=10)
|
||||
|
||||
|
||||
@pytest.mark.eth_ksz8851snl
|
||||
@@ -265,6 +273,5 @@ def test_esp_eth_iperf_w5500(
|
||||
def test_esp_eth_iperf_ksz8851snl(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, object], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
test_esp_eth_iperf(dut, log_performance, check_performance, spi_eth=True, udp_rx_bw_lim=10)
|
||||
test_esp_eth_iperf(dut, log_performance, spi_eth=True, udp_rx_bw_lim=10)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
// throughput performance by iperf
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_RX_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_TCP_RX_THROUGHPUT 45
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_TCP_TX_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_TCP_TX_THROUGHPUT 40
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_RX_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_UDP_RX_THROUGHPUT 64
|
||||
#endif
|
||||
#ifndef IDF_PERFORMANCE_MIN_UDP_TX_THROUGHPUT
|
||||
#define IDF_PERFORMANCE_MIN_UDP_TX_THROUGHPUT 50
|
||||
#endif
|
||||
@@ -1,7 +1,5 @@
|
||||
# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
from pytest_embedded_idf.utils import idf_parametrize
|
||||
|
||||
"""
|
||||
Test case for iperf example.
|
||||
|
||||
@@ -17,14 +15,16 @@ The test env wifi_iperf do need the following config::
|
||||
pc_nic: "eth1"
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
from typing import Callable
|
||||
from collections.abc import Callable
|
||||
|
||||
import pytest
|
||||
from common_test_methods import get_env_config_variable
|
||||
from common_test_methods import get_host_ip_by_interface
|
||||
from idf_iperf_test_util import IperfUtility
|
||||
from pytest_embedded import Dut
|
||||
from pytest_embedded_idf.utils import idf_parametrize
|
||||
|
||||
# configurations
|
||||
RETRY_COUNT_FOR_BEST_PERFORMANCE = 2
|
||||
@@ -34,6 +34,15 @@ NO_BANDWIDTH_LIMIT = -1 # iperf send bandwidth is not limited
|
||||
BEST_PERFORMANCE_CONFIG = '99'
|
||||
|
||||
|
||||
# Performance thresholds (Mbps)
|
||||
WIFI_IPERF_THRESHOLDS = {
|
||||
'tcp_tx_throughput': 40,
|
||||
'tcp_rx_throughput': 45,
|
||||
'udp_tx_throughput': 50,
|
||||
'udp_rx_throughput': 64,
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s2', 'esp32c3', 'esp32s3'], reason='lack of runners (run only for ESP32)')
|
||||
@pytest.mark.timeout(1200)
|
||||
@pytest.mark.wifi_iperf
|
||||
@@ -42,7 +51,6 @@ BEST_PERFORMANCE_CONFIG = '99'
|
||||
def test_wifi_throughput_basic(
|
||||
dut: Dut,
|
||||
log_performance: Callable[[str, str], None],
|
||||
check_performance: Callable[[str, float, str], None],
|
||||
) -> None:
|
||||
"""
|
||||
steps: |
|
||||
@@ -79,13 +87,19 @@ def test_wifi_throughput_basic(
|
||||
|
||||
# 4. log performance and compare with pass standard
|
||||
for throughput_type in test_result:
|
||||
throughput_value = test_result[throughput_type].get_best_throughput()
|
||||
log_performance(
|
||||
'{}_throughput'.format(throughput_type),
|
||||
'{:.02f} Mbps'.format(test_result[throughput_type].get_best_throughput()),
|
||||
f'{throughput_type}_throughput',
|
||||
f'{throughput_value:.02f} Mbps',
|
||||
)
|
||||
|
||||
# do check after logging, otherwise test will exit immediately if check fail, some performance can't be logged.
|
||||
for throughput_type in test_result:
|
||||
check_performance(
|
||||
'{}_throughput'.format(throughput_type), test_result[throughput_type].get_best_throughput(), dut.target
|
||||
threshold_key = f'{throughput_type}_throughput'
|
||||
threshold_value = WIFI_IPERF_THRESHOLDS.get(threshold_key)
|
||||
if threshold_value is None:
|
||||
raise ValueError(f'No threshold defined for {threshold_key}')
|
||||
throughput_value = test_result[throughput_type].get_best_throughput()
|
||||
assert throughput_value >= threshold_value, (
|
||||
f"[Performance] {threshold_key} value is {throughput_value}, doesn't meet pass standard {threshold_value}"
|
||||
)
|
||||
|
||||
@@ -460,7 +460,6 @@ components/fatfs/src/ff.h
|
||||
components/fatfs/src/ffconf.h
|
||||
components/fatfs/src/ffsystem.c
|
||||
components/fatfs/src/ffunicode.c
|
||||
components/idf_test/include/idf_performance.h
|
||||
components/log/host_test/log_test/main/log_test.cpp
|
||||
components/mbedtls/esp_crt_bundle/test_gen_crt_bundle/test_gen_crt_bundle.py
|
||||
components/mbedtls/port/aes/esp_aes_xts.c
|
||||
|
||||
@@ -52,7 +52,6 @@ components/protocomm/proto-c/
|
||||
components/fatfs/vfs/vfs_fat_internal.h
|
||||
components/fatfs/src/ffconf.h
|
||||
|
||||
components/idf_test/include/idf_performance.h
|
||||
|
||||
|
||||
components/spiffs/include/spiffs_config.h
|
||||
|
||||
@@ -23,6 +23,6 @@ endif()
|
||||
|
||||
idf_component_register(SRCS ${srcs}
|
||||
INCLUDE_DIRS include
|
||||
REQUIRES esp_partition idf_test cmock
|
||||
REQUIRES esp_partition cmock
|
||||
PRIV_REQUIRES "${priv_requires}")
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format")
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
#include "sdkconfig.h"
|
||||
#include "unity.h"
|
||||
#include "soc/soc_caps.h"
|
||||
/* include performance pass standards header file */
|
||||
#include "idf_performance.h"
|
||||
#include "idf_performance_target.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
Reference in New Issue
Block a user