Page 1 of 1

How do LX6 Cores of ESP32 share Serial Port

Posted: Sun Jul 23, 2023 2:41 am
by GolamMostafa
I know that there are two LX6 Processor Cores inside the ESP32 chip. I would like to get a diagram similar to the attached diagram (it is my idea) to see the sharing mechanism of ESP32's UART0 Port for onward connection to the OutputBox of the Arduino Serial Monitor.
ESP32UartController.png
ESP32UartController.png (20.9 KiB) Viewed 1170 times

Re: How do LX6 Cores of ESP32 share Serial Port

Posted: Sun Jul 23, 2023 3:25 am
by ESP_Sprite
Both cores are connected to the internal APB bus that goes to the UART. The APB bus makes sure register writes to the peripherals are serialized (as in: only one request can be sent over the bus at a time), but aside from that, both cores can happily access all UART registers at all times.

Re: How do LX6 Cores of ESP32 share Serial Port

Posted: Sun Jul 23, 2023 12:09 pm
by GolamMostafa
Does this APB (Advanced Peripheral Bus) contains --
Address Lines (how many -- 32?)
Data lines ? (how many -- 32?)
Read/write, IO-M Control lines?

Re: How do LX6 Cores of ESP32 share Serial Port

Posted: Sun Jul 23, 2023 12:59 pm
by ESP_Sprite
It's a standard - you can read the spec here. In our case DATA_WIDTH is 32 bit, and I assume ADDR_WIDTH also is 32 bit.

Re: How do LX6 Cores of ESP32 share Serial Port

Posted: Sun Jul 23, 2023 2:39 pm
by GolamMostafa
Thanks! I am gaining slowly better insight about the architecture of LX6 Processor of the ESP32 system.

Re: How do LX6 Cores of ESP32 share Serial Port

Posted: Sun Jul 23, 2023 10:58 pm
by MicroController
GolamMostafa wrote:
Sun Jul 23, 2023 2:41 am
to see the sharing mechanism of ESP32's UART0 Port
It may or may not be relevant to you that the UART driver also uses synchronization primitives (semaphores/mutexes) in software to coordinate access to the peripheral between tasks.