ESP-IDF, multicore & freeRTOS confusion
Posted: Sun Feb 26, 2017 9:22 am
I am completely new to ESP32 development and I am still looking around.
To sum up my assumptions about ESP32 I make, when asking this question:
- ESP32 contains two identical cores, one is PRO_CPU and the second is APP_CPU.
- ESP-IDF is build on top FreeRTOS. That means that handling of WiFi and other stuff is handled as RTOS task.
- ESP-IDF is the lowest-possible API officially supported
My confusion is about details concerning the two cores.
- Which peripheral (timer) is freeRTOS using to implement scheduler? Or does it support only cooperative multitasking?
- Does it utilize both cores? If so, what is the scheduling algorithm?
- Is it possible to use ESP-IDF without RTOS? E.g. I want statically to allocate one job on one CPU (doing background stuff, handling WiFi, etc.) and run another job on the second one?
- Is it possible to run FreeRTOS on one CPU and dedicate the second core to a single job? If so, how to achieve it?
- How to use sleep modes? Is it possible to use sleep modes per-cpu?
To sum up my assumptions about ESP32 I make, when asking this question:
- ESP32 contains two identical cores, one is PRO_CPU and the second is APP_CPU.
- ESP-IDF is build on top FreeRTOS. That means that handling of WiFi and other stuff is handled as RTOS task.
- ESP-IDF is the lowest-possible API officially supported
My confusion is about details concerning the two cores.
- Which peripheral (timer) is freeRTOS using to implement scheduler? Or does it support only cooperative multitasking?
- Does it utilize both cores? If so, what is the scheduling algorithm?
- Is it possible to use ESP-IDF without RTOS? E.g. I want statically to allocate one job on one CPU (doing background stuff, handling WiFi, etc.) and run another job on the second one?
- Is it possible to run FreeRTOS on one CPU and dedicate the second core to a single job? If so, how to achieve it?
- How to use sleep modes? Is it possible to use sleep modes per-cpu?