The ESP32S3 API guide reads:
My question areSMP on an ESP Target
ESP targets (such as the ESP32, ESP32-S3) are dual core SMP SoCs. These targets have the following hardware features that make them SMP capable:
- Two identical cores known as CPU0 (i.e., Protocol CPU or PRO_CPU) and CPU1 (i.e., Application CPU or APP_CPU). This means that the execution of a piece of code is identical regardless of which core it runs on.
- Symmetric memory (with some small exceptions).
(a) If multiple cores access the same memory address, their access will be serialized at the memory bus level.
(b) True atomic access to the same memory address is achieved via an atomic compare-and-swap instruction provided by the ISA.- Cross-core interrupts that allow one CPU to trigger and interrupt on another CPU. This allows cores to signal each other.
- Are (a) and (b) above automatically achieved at the framework level or as a programmer do I need to take care of that?
- Are the above answers the same for 2 processes in different CPU's or 2 event in the same CPU?
- I can see the API offers access to S32C1I/SCOMPARE1 via the esp_cpu_compare_and_set(). Is anything similar to L32AI/S32RI?