浏览代码

Merge branch 'bugfix/mpu_panic' into 'master'

Fix issue with mpu illegal access test

See merge request espressif/esp-idf!8418
Ivan Grokhotkov 5 年之前
父节点
当前提交
cd1aba595e
共有 3 个文件被更改,包括 10 次插入4 次删除
  1. 1 1
      components/esp_common/linker.lf
  2. 0 1
      components/esp_system/linker.lf
  3. 9 2
      components/soc/test/test_mpu.c

+ 1 - 1
components/esp_common/linker.lf

@@ -1,4 +1,4 @@
 [mapping:esp_common]
-archive: lib_esp_common.a
+archive: libesp_common.a
 entries:
     esp_err (noflash)

+ 0 - 1
components/esp_system/linker.lf

@@ -3,5 +3,4 @@ archive: libesp_system.a
 entries:
     panic (noflash)
     panic_handler (noflash)
-    reset_reason (noflash)
     system_api:esp_system_abort (noflash)

+ 9 - 2
components/soc/test/test_mpu.c

@@ -11,17 +11,24 @@ volatile static int RTC_NOINIT_ATTR access = 0;
 static void trigger_illegal_access(void)
 {
     access = 0;
-    intptr_t addr = 0x60000000;
+    intptr_t addr = 0x80000000; // MPU region 4
     volatile int __attribute__((unused)) val = 0;
 
+    // Marked as an illegal access region at startup in ESP32, ESP32S2.
+    // Make accessible temporarily.
+    mpu_hal_set_region_access(4, MPU_REGION_RW);
+
     val = *((int*) addr);
     ++access;
     TEST_ASSERT_EQUAL(1, access);
     printf("Sucessfully accessed location %p\r\n", (void*)addr);
 
-    mpu_hal_set_region_access(3, MPU_REGION_ILLEGAL); // 0x60000000
+    // Make access to region illegal again.
+    mpu_hal_set_region_access(4, MPU_REGION_ILLEGAL); 
     ++access;
 
+    // Since access to region is illegal, this should fail (causing a reset), and the increment
+    // to access count is not performed.
     val = *((int*) addr); 
     ++access;
 }