>>> prompt.
Debug both cores with gdb: a debugger per core, each in gdb-wui, in a Linux machine next to this one (a desktop browser, and a minute or two to boot).
Debugging the two cores
The debuggers' Linux machine (its console)
Inside: Pycardium calling Epicardium
| Busiest calls (last second) | Calls/s | Round trip |
|---|
Every API call Pycardium (MicroPython, core 1) makes, Epicardium (FreeRTOS, core 0) runs for it: core 1 takes the hardware semaphore, writes the call's number and arguments into the memory both cores share, sets its flag and wakes core 0 with an event (SEV), then waits (WFE). Core 0's dispatcher task runs the call, writes the result, and wakes core 1 again. Between the cores, each call is a bar from when core 1 made it to when it returned, a row per function (the latest calls drawn down to core 0 and back); orange arrows are interrupts core 0 raises on core 1 (through timer 5): Ctrl-C, serial input, sensor data.