forked from espressif/esp-idf
ci(esp_psram): Add a test to validate non-bootup PSRAM initialisation
- Also adds a test for the newly added PSRAM helper APIs: esp_psram_get_heap_pool_size() and esp_psram_get_effective_mapped_size()
This commit is contained in:
@@ -1,8 +1,11 @@
|
|||||||
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
|
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
|
||||||
|
|
||||||
components/esp_psram/test_apps/psram:
|
components/esp_psram/test_apps/psram:
|
||||||
|
enable:
|
||||||
|
- if: CONFIG_NAME == "psram_no_boot_init" and SOC_SPIRAM_SUPPORTED == 1
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_SPIRAM_SUPPORTED != 1
|
- if: SOC_SPIRAM_SUPPORTED != 1
|
||||||
|
- if: CONFIG_NAME == "xip_psram_no_boot_init" and SOC_SPIRAM_XIP_SUPPORTED != 1
|
||||||
depends_components:
|
depends_components:
|
||||||
- esp_psram
|
- esp_psram
|
||||||
- esp_mm
|
- esp_mm
|
||||||
|
@@ -1,10 +1,15 @@
|
|||||||
idf_build_get_property(target IDF_TARGET)
|
idf_build_get_property(target IDF_TARGET)
|
||||||
|
|
||||||
set(srcs "test_app_main.c"
|
set(srcs "test_app_main.c")
|
||||||
"test_psram.c")
|
|
||||||
|
|
||||||
if(${target} STREQUAL "esp32")
|
if(CONFIG_SPIRAM_BOOT_INIT)
|
||||||
list(APPEND srcs "test_himem.c" "test_4mpsram.c")
|
list(APPEND srcs "test_psram.c")
|
||||||
|
|
||||||
|
if(${target} STREQUAL "esp32")
|
||||||
|
list(APPEND srcs "test_himem.c" "test_4mpsram.c")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
list(APPEND srcs "test_psram_no_boot_init.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
|
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
|
||||||
|
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
|
*/
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
#include "unity.h"
|
||||||
|
#include "esp_psram.h"
|
||||||
|
#include "esp_private/esp_psram_extram.h"
|
||||||
|
|
||||||
|
TEST_CASE("test psram no boot init", "[psram_no_boot_init]")
|
||||||
|
{
|
||||||
|
#if CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION
|
||||||
|
// As PSRAM is just enabled and not initialised during the boot up, the API
|
||||||
|
// esp_psram_get_heap_size_to_protect() manually calculates the size of the PSRAM heap
|
||||||
|
size_t manually_calculated_psram_heap = esp_psram_get_heap_size_to_protect();
|
||||||
|
#endif /* CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION */
|
||||||
|
|
||||||
|
TEST_ESP_OK(esp_psram_init());
|
||||||
|
|
||||||
|
#if CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION
|
||||||
|
size_t final_psram_heap = esp_psram_get_heap_size_to_protect();
|
||||||
|
TEST_ASSERT_EQUAL(final_psram_heap, manually_calculated_psram_heap);
|
||||||
|
#endif /* CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION */
|
||||||
|
}
|
@@ -112,3 +112,29 @@ def test_psram_esp32c5(dut: Dut) -> None:
|
|||||||
@idf_parametrize('target', ['esp32c61'], indirect=['target'])
|
@idf_parametrize('target', ['esp32c61'], indirect=['target'])
|
||||||
def test_psram_esp32c61(dut: Dut) -> None:
|
def test_psram_esp32c61(dut: Dut) -> None:
|
||||||
dut.run_all_single_board_cases()
|
dut.run_all_single_board_cases()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.generic
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'config',
|
||||||
|
[
|
||||||
|
'xip_psram_no_boot_init',
|
||||||
|
],
|
||||||
|
indirect=True,
|
||||||
|
)
|
||||||
|
@idf_parametrize('target', ['esp32s2', 'esp32s3', 'esp32c5', 'esp32c61'], indirect=['target'])
|
||||||
|
def test_xip_psram_no_boot_init(dut: Dut) -> None:
|
||||||
|
dut.run_all_single_board_cases()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.generic
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'config',
|
||||||
|
[
|
||||||
|
'psram_no_boot_init',
|
||||||
|
],
|
||||||
|
indirect=True,
|
||||||
|
)
|
||||||
|
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||||
|
def test_psram_no_boot_init(dut: Dut) -> None:
|
||||||
|
dut.run_all_single_board_cases()
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
CONFIG_SPIRAM=y
|
||||||
|
CONFIG_SPIRAM_BOOT_HW_INIT=y
|
||||||
|
CONFIG_SPIRAM_BOOT_INIT=n
|
||||||
|
CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION=y
|
@@ -0,0 +1,7 @@
|
|||||||
|
CONFIG_SPIRAM=y
|
||||||
|
CONFIG_SPIRAM_XIP_FROM_PSRAM=y
|
||||||
|
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
|
||||||
|
CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY=y
|
||||||
|
CONFIG_SPIRAM_BOOT_HW_INIT=y
|
||||||
|
CONFIG_SPIRAM_BOOT_INIT=n
|
||||||
|
CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION=y
|
Reference in New Issue
Block a user