Browse Source

startup: Add assertion checks around various initialisation sequences

These may fail if close to 192KB of static RAM is allocated (remaining early heap RAM is too small.)
Angus Gratton 8 years ago
parent
commit
99fe61716c

+ 4 - 3
components/esp32/cpu_start.c

@@ -289,9 +289,10 @@ void start_cpu0_default(void)
     esp_core_dump_init();
 #endif
 
-    xTaskCreatePinnedToCore(&main_task, "main",
-            ESP_TASK_MAIN_STACK, NULL,
-            ESP_TASK_MAIN_PRIO, NULL, 0);
+    portBASE_TYPE res = xTaskCreatePinnedToCore(&main_task, "main",
+                                                ESP_TASK_MAIN_STACK, NULL,
+                                                ESP_TASK_MAIN_PRIO, NULL, 0);
+    assert(res == pdTRUE);
     ESP_LOGI(TAG, "Starting scheduler on PRO CPU.");
     vTaskStartScheduler();
     abort(); /* Only get to here if not enough free heap to start scheduler */

+ 2 - 1
components/esp32/dport_access.c

@@ -173,7 +173,8 @@ static void dport_access_init_core(void *arg)
 /*  Defer initialisation until after scheduler is running */
 void esp_dport_access_int_init(void)
 {
-    xTaskCreatePinnedToCore(&dport_access_init_core, "dport", configMINIMAL_STACK_SIZE, NULL, 5, NULL, xPortGetCoreID());
+    portBASE_TYPE res = xTaskCreatePinnedToCore(&dport_access_init_core, "dport", configMINIMAL_STACK_SIZE, NULL, 5, NULL, xPortGetCoreID());
+    assert(res == pdTRUE);
 }
 
 void esp_dport_access_int_deinit(void)

+ 3 - 2
components/esp32/ipc.c

@@ -80,8 +80,9 @@ void esp_ipc_init()
     const char* task_names[2] = {"ipc0", "ipc1"};
     for (int i = 0; i < portNUM_PROCESSORS; ++i) {
         s_ipc_sem[i] = xSemaphoreCreateBinary();
-        xTaskCreatePinnedToCore(ipc_task, task_names[i], CONFIG_IPC_TASK_STACK_SIZE, (void*) i,
-                                configMAX_PRIORITIES - 1, &s_ipc_tasks[i], i);
+        portBASE_TYPE res = xTaskCreatePinnedToCore(ipc_task, task_names[i], CONFIG_IPC_TASK_STACK_SIZE, (void*) i,
+                                                    configMAX_PRIORITIES - 1, &s_ipc_tasks[i], i);
+        assert(res == pdTRUE);
     }
 }
 

+ 1 - 1
components/esp32/task_wdt.c

@@ -202,7 +202,7 @@ void esp_task_wdt_init() {
 #if CONFIG_TASK_WDT_CHECK_IDLE_TASK
     esp_register_freertos_idle_hook(idle_hook);
 #endif
-    esp_intr_alloc(ETS_TG0_WDT_LEVEL_INTR_SOURCE, 0, task_wdt_isr, NULL, NULL);
+    ESP_ERROR_CHECK( esp_intr_alloc(ETS_TG0_WDT_LEVEL_INTR_SOURCE, 0, task_wdt_isr, NULL, NULL) );
 }
 
 

+ 1 - 0
components/spi_flash/cache_utils.c

@@ -48,6 +48,7 @@ static volatile int s_flash_op_cpu = -1;
 void spi_flash_init_lock()
 {
     s_flash_op_mutex = xSemaphoreCreateMutex();
+    assert(s_flash_op_mutex != NULL);
 }
 
 void spi_flash_op_lock()