|
|
@@ -51,10 +51,19 @@ TEST_CASE("spi_flash_cache_enabled() works on both CPUs", "[spi_flash][esp_flash
|
|
|
vQueueDelete(result_queue);
|
|
|
}
|
|
|
|
|
|
-static const uint32_t s_in_rodata[] = { 0x12345678, 0xfedcba98 };
|
|
|
+/**
|
|
|
+ * On ESP32-C3 boards, constant data with a size less or equal to 8 bytes
|
|
|
+ * (64 bits) are placed in the DRAM.
|
|
|
+ * Let's add a third unused element to this array to force it to the DROM.
|
|
|
+ */
|
|
|
+static const uint32_t s_in_rodata[] = { 0x12345678, 0xfedcba98, 0x42 };
|
|
|
|
|
|
static void IRAM_ATTR cache_access_test_func(void* arg)
|
|
|
{
|
|
|
+ /* Assert that the array s_in_rodata is in DROM. If not, this test is
|
|
|
+ * invalid as disabling the cache wouldn't have any effect. */
|
|
|
+ TEST_ASSERT(esp_ptr_in_drom(s_in_rodata));
|
|
|
+
|
|
|
spi_flash_disable_interrupts_caches_and_other_cpu();
|
|
|
volatile uint32_t* src = (volatile uint32_t*) s_in_rodata;
|
|
|
uint32_t v1 = src[0];
|
|
|
@@ -65,9 +74,15 @@ static void IRAM_ATTR cache_access_test_func(void* arg)
|
|
|
vTaskDelete(NULL);
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_IDF_TARGET_ESP32C3
|
|
|
+#define CACHE_ERROR_REASON "Cache exception,RTC_SW_CPU_RST"
|
|
|
+#else
|
|
|
+#define CACHE_ERROR_REASON "Cache disabled,SW_RESET"
|
|
|
+#endif
|
|
|
+
|
|
|
// These tests works properly if they resets the chip with the
|
|
|
// "Cache disabled but cached memory region accessed" reason and the correct CPU is logged.
|
|
|
-TEST_CASE("invalid access to cache raises panic (PRO CPU)", "[spi_flash][ignore]")
|
|
|
+TEST_CASE("invalid access to cache raises panic (PRO CPU)", "[spi_flash][reset="CACHE_ERROR_REASON"]")
|
|
|
{
|
|
|
xTaskCreatePinnedToCore(&cache_access_test_func, "ia", 2048, NULL, 5, NULL, 0);
|
|
|
vTaskDelay(1000/portTICK_PERIOD_MS);
|
|
|
@@ -75,7 +90,7 @@ TEST_CASE("invalid access to cache raises panic (PRO CPU)", "[spi_flash][ignore]
|
|
|
|
|
|
#ifndef CONFIG_FREERTOS_UNICORE
|
|
|
|
|
|
-TEST_CASE("invalid access to cache raises panic (APP CPU)", "[spi_flash][ignore]")
|
|
|
+TEST_CASE("invalid access to cache raises panic (APP CPU)", "[spi_flash][reset=TG1WDT_SYS_RESET]")
|
|
|
{
|
|
|
xTaskCreatePinnedToCore(&cache_access_test_func, "ia", 2048, NULL, 5, NULL, 1);
|
|
|
vTaskDelay(1000/portTICK_PERIOD_MS);
|