Explorar o código

soc: add test for setting mpu illegal access

Renz Bagaporo %!s(int64=5) %!d(string=hai) anos
pai
achega
d2ad5d937e
Modificáronse 1 ficheiros con 36 adicións e 0 borrados
  1. 36 0
      components/soc/test/test_mpu.c

+ 36 - 0
components/soc/test/test_mpu.c

@@ -0,0 +1,36 @@
+#include <stdio.h>
+#include <stdbool.h>
+#include "unity.h"
+
+#include "esp_attr.h"
+
+#include "hal/mpu_hal.h"
+
+volatile static int RTC_NOINIT_ATTR access = 0;
+
+static void trigger_illegal_access(void)
+{
+    access = 0;
+    intptr_t addr = 0x60000000;
+    volatile int __attribute__((unused)) val = 0;
+
+    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
+    ++access;
+
+    val = *((int*) addr); 
+    ++access;
+}
+
+void check_access(void)
+{
+    TEST_ASSERT_EQUAL(2, access);
+}
+
+TEST_CASE_MULTIPLE_STAGES("Can set illegal access regions", "[soc][mpu]",
+        trigger_illegal_access,
+        check_access);