mirror of
https://github.com/espressif/esp-idf.git
synced 2026-09-22 13:01:16 +03:00
test(esp_system): run memory protection panic tests on ESP32-P4 rev < 3.0
This commit is contained in:
@@ -610,6 +610,10 @@ def test_panic_handler_crash1(dut: PanicTestDut, config: str, test_func_name: st
|
||||
|
||||
# Memprot-related tests are supported only on targets with PMS/PMA peripheral;
|
||||
# currently ESP32-S2, ESP32-C3, ESP32-C2, ESP32-H2, ESP32-H21, ESP32-C6, ESP32-P4, ESP32-C5 and ESP32-C61 are supported
|
||||
# ESP32-P4 rev < 3.0 runs on a dedicated rev 1.x runner (its binary is built for
|
||||
# and only boots on rev < 3.0 silicon), so its configs carry the esp32p4_rev1 marker.
|
||||
P4_REV_LESS_THAN_V3_MARKER = pytest.mark.esp32p4_rev1
|
||||
|
||||
CONFIGS_MEMPROT_IDRAM = list(
|
||||
zip(
|
||||
[
|
||||
@@ -624,7 +628,9 @@ CONFIGS_MEMPROT_IDRAM = list(
|
||||
],
|
||||
['esp32s2', 'esp32c3', 'esp32c2', 'esp32c5', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h21'],
|
||||
)
|
||||
)
|
||||
) + [
|
||||
('memprot_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
|
||||
]
|
||||
|
||||
CONFIGS_MEMPROT_IDRAM_L2_MEM_NON_CACHE = list(zip(['memprot_esp32p4'], ['esp32p4']))
|
||||
|
||||
@@ -643,7 +649,9 @@ CONFIGS_MEMPROT_RTC_FAST_MEM = list(
|
||||
],
|
||||
['esp32s2', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32h2', 'esp32p4', 'esp32h21'],
|
||||
)
|
||||
)
|
||||
) + [
|
||||
('memprot_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
|
||||
]
|
||||
|
||||
CONFIGS_MEMPROT_RTC_SLOW_MEM = list(zip(['memprot_esp32s2'], ['esp32s2']))
|
||||
|
||||
@@ -659,16 +667,24 @@ CONFIGS_MEMPROT_FLASH_IDROM = list(
|
||||
],
|
||||
['esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h21'],
|
||||
)
|
||||
)
|
||||
) + [
|
||||
('memprot_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
|
||||
]
|
||||
|
||||
CONFIGS_MEMPROT_FLASH_IDROM_L2_NON_CACHE = list(zip(['memprot_esp32p4'], ['esp32p4']))
|
||||
|
||||
CONFIGS_MEMPROT_SPIRAM_XIP_IROM_ALIGNMENT_HEAP = list(
|
||||
zip(
|
||||
['memprot_spiram_xip_esp32c5', 'memprot_spiram_xip_esp32c61', 'memprot_spiram_xip_esp32p4'],
|
||||
[
|
||||
'memprot_spiram_xip_esp32c5',
|
||||
'memprot_spiram_xip_esp32c61',
|
||||
'memprot_spiram_xip_esp32p4',
|
||||
],
|
||||
['esp32c5', 'esp32c61', 'esp32p4'],
|
||||
)
|
||||
)
|
||||
) + [
|
||||
('memprot_spiram_xip_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
|
||||
]
|
||||
|
||||
CONFIGS_MEMPROT_SPIRAM_XIP_IROM_ALIGNMENT_HEAP_L2_NON_CACHE = list(
|
||||
zip(
|
||||
@@ -688,7 +704,9 @@ CONFIGS_MEMPROT_SPIRAM_XIP_DROM_ALIGNMENT_HEAP = list(
|
||||
],
|
||||
['esp32s3', 'esp32c5', 'esp32c61', 'esp32p4'],
|
||||
)
|
||||
)
|
||||
) + [
|
||||
('memprot_spiram_xip_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
|
||||
]
|
||||
|
||||
CONFIGS_MEMPROT_SPIRAM_XIP_DROM_ALIGNMENT_HEAP_L2_NON_CACHE = list(
|
||||
zip(
|
||||
@@ -709,7 +727,9 @@ CONFIGS_MEMPROT_INVALID_REGION_PROTECTION_USING_PMA = list(
|
||||
],
|
||||
['esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h21'],
|
||||
)
|
||||
)
|
||||
) + [
|
||||
('memprot_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.generic
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
# Restricting to ESP32P4
|
||||
CONFIG_IDF_TARGET="esp32p4"
|
||||
|
||||
# Target the rev < 3.0 PMP layout (16 entries)
|
||||
CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y
|
||||
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=360
|
||||
|
||||
# Enabling memory protection
|
||||
CONFIG_ESP_SYSTEM_MEMPROT=y
|
||||
|
||||
# Enable memprot test
|
||||
CONFIG_TEST_MEMPROT=y
|
||||
|
||||
# Enable SPIRAM to check the alignment gap's memory protection
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_USE_CAPS_ALLOC=y
|
||||
@@ -0,0 +1,17 @@
|
||||
# Restricting to ESP32P4
|
||||
CONFIG_IDF_TARGET="esp32p4"
|
||||
|
||||
# Target the rev < 3.0 PMP layout (16 entries)
|
||||
CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y
|
||||
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=360
|
||||
|
||||
# Enabling memory protection
|
||||
CONFIG_ESP_SYSTEM_MEMPROT=y
|
||||
|
||||
# Enable memprot test
|
||||
CONFIG_TEST_MEMPROT=y
|
||||
|
||||
# Enable SPIRAM to check the alignment gap's memory protection
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_USE_CAPS_ALLOC=y
|
||||
CONFIG_SPIRAM_XIP_FROM_PSRAM=y
|
||||
@@ -68,7 +68,7 @@ class PanicTestDut(IdfDut):
|
||||
return self.target in ['esp32', 'esp32s3', 'esp32p4', 'esp32h4', 'esp32s31']
|
||||
|
||||
def run_test_func(self, test_func_name: str) -> None:
|
||||
if self.target == 'esp32p4' and not self.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'):
|
||||
if self.target == 'esp32p4':
|
||||
self.write('\n')
|
||||
self.expect_exact('Enter test name:')
|
||||
self.write(test_func_name)
|
||||
|
||||
Reference in New Issue
Block a user