Merge branch 'feat/cpu_region_protection_h4' into 'master'

Memory region protection for ESP32-H4

Closes IDF-12588

See merge request espressif/esp-idf!47070
This commit is contained in:
Mahavir Jain
2026-08-31 17:41:52 +05:30
8 changed files with 309 additions and 152 deletions
@@ -635,8 +635,20 @@ CONFIGS_MEMPROT_IDRAM = list(
'memprot_esp32p4',
'memprot_esp32h21',
'memprot_esp32s31',
'memprot_esp32h4',
],
[
'esp32s2',
'esp32c3',
'esp32c2',
'esp32c5',
'esp32c61',
'esp32h2',
'esp32p4',
'esp32h21',
'esp32s31',
'esp32h4',
],
['esp32s2', 'esp32c3', 'esp32c2', 'esp32c5', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h21', 'esp32s31'],
)
) + [
('memprot_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
@@ -676,8 +688,9 @@ CONFIGS_MEMPROT_FLASH_IDROM = list(
'memprot_esp32p4',
'memprot_esp32h21',
'memprot_esp32s31',
'memprot_esp32h4',
],
['esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h21', 'esp32s31'],
['esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h21', 'esp32s31', 'esp32h4'],
)
) + [
('memprot_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
@@ -692,8 +705,9 @@ CONFIGS_MEMPROT_SPIRAM_XIP_IROM_ALIGNMENT_HEAP = list(
'memprot_spiram_xip_esp32c61',
'memprot_spiram_xip_esp32p4',
'memprot_spiram_xip_esp32s31',
'memprot_spiram_xip_esp32h4',
],
['esp32c5', 'esp32c61', 'esp32p4', 'esp32s31'],
['esp32c5', 'esp32c61', 'esp32p4', 'esp32s31', 'esp32h4'],
)
) + [
('memprot_spiram_xip_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
@@ -715,8 +729,9 @@ CONFIGS_MEMPROT_SPIRAM_XIP_DROM_ALIGNMENT_HEAP = list(
'memprot_spiram_xip_esp32c61',
'memprot_spiram_xip_esp32p4',
'memprot_spiram_xip_esp32s31',
'memprot_spiram_xip_esp32h4',
],
['esp32s3', 'esp32c5', 'esp32c61', 'esp32p4', 'esp32s31'],
['esp32s3', 'esp32c5', 'esp32c61', 'esp32p4', 'esp32s31', 'esp32h4'],
)
) + [
('memprot_spiram_xip_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
@@ -739,8 +754,9 @@ CONFIGS_MEMPROT_INVALID_REGION_PROTECTION_USING_PMA = list(
'memprot_esp32p4',
'memprot_esp32h21',
'memprot_esp32s31',
'memprot_esp32h4',
],
['esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h21', 'esp32s31'],
['esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h21', 'esp32s31', 'esp32h4'],
)
) + [
('memprot_esp32p4_rev_less_than_v3', 'esp32p4', P4_REV_LESS_THAN_V3_MARKER),
@@ -0,0 +1,8 @@
# Restricting to ESP32H4
CONFIG_IDF_TARGET="esp32h4"
# Enabling memory protection
CONFIG_ESP_SYSTEM_MEMPROT=y
# Enable memprot test
CONFIG_TEST_MEMPROT=y
@@ -0,0 +1,13 @@
# Restricting to ESP32H4
CONFIG_IDF_TARGET="esp32h4"
# 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