Просмотр исходного кода

esp_hw_support: allow writing in IRAM when CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT is not set for esp32C2

when CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT is not set, the PMP rule for esp32c2 shoud allow write access.
Fix esp_cpu_configure_region_protection() in cpu.c accordingly.
Guillaume Souchere 3 лет назад
Родитель
Сommit
b5bacffbd3
2 измененных файлов с 8 добавлено и 0 удалено
  1. 7 0
      components/esp_hw_support/cpu.c
  2. 1 0
      components/heap/test_apps/sdkconfig.defaults

+ 7 - 0
components/esp_hw_support/cpu.c

@@ -454,11 +454,13 @@ extern int _data_start;
 #define CONDITIONAL_NONE        0x0
 #define CONDITIONAL_RX          PMP_R | PMP_X
 #define CONDITIONAL_RW          PMP_R | PMP_W
+#define CONDITIONAL_RWX         PMP_R | PMP_W | PMP_X
 #else
 // With L bit set
 #define CONDITIONAL_NONE        NONE
 #define CONDITIONAL_RX          RX
 #define CONDITIONAL_RW          RW
+#define CONDITIONAL_RWX         RWX
 #endif
 
 void esp_cpu_configure_region_protection(void)
@@ -525,7 +527,12 @@ void esp_cpu_configure_region_protection(void)
     } else {
         // 1. IRAM
         PMP_ENTRY_SET(0, SOC_DIRAM_IRAM_LOW, CONDITIONAL_NONE);
+
+#if CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT
         PMP_ENTRY_SET(1, IRAM_END, PMP_TOR | CONDITIONAL_RX);
+#else
+        PMP_ENTRY_SET(1, IRAM_END, PMP_TOR | CONDITIONAL_RWX);
+#endif
 
         // 2. DRAM
         PMP_ENTRY_SET(2, DRAM_START, CONDITIONAL_NONE);

+ 1 - 0
components/heap/test_apps/sdkconfig.defaults

@@ -1,6 +1,7 @@
 CONFIG_COMPILER_DUMP_RTL_FILES=y
 CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=n
 CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n # memory protection needs to be disabled for certain tests
+CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT=n # for c2 and c6 this config must be disabled for certain tests
 
 CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
 CONFIG_COMPILER_STACK_CHECK=y