Programming the ESP32C6 LP Core

So far I’m not seeing a way to program the LP core of the C6 with the Arduino IDE. Is it there and I missed it? If not, is this on the roadmap for Arduino support?


Hi there,
So AFAIK, Not supported YET! :stuck_out_tongue_winking_eye: :crossed_fingers: in arduino
it is in ver 5.2 ESP-IDF
Arduino IDE always seems to be the last guy updated…
GL :slight_smile: PJ

See my notes at New XIAO ESP32C6! - #3 by reivilo

Hi @reivilo,

I have successfully programmed the C6 with the Arduino IDE, but I would like to know how to program the LP core in addition to the HP core. It appears only the HP core is currently supported by the Arduino support. Is there a roadmap to LP core support in the Arduino support lib?


Hi there,
Not likely… or if so WAaaaay late, ESP-IDF is the only method currently available and some of the features are not enabled yet AFAIK. The GPIO wake up is though , Polling with LP to Wake the Main core on I/O change is, as well as Serial port Data wake-up. a couple other things too, but it’s fresh. :laughing: :call_me_hand:
GL :slight_smile: PJ

PLIO may get there first IMO… stay tuned.

“The ULP (Ultra Low Power) coprocessor is a simple FSM (Finite State Machine) which is designed to perform measurements using the ADC, temperature sensor, and external I2C sensors, while the main processors are in deep sleep mode. The ULP coprocessor can access the RTC_SLOW_MEM memory region, and registers in RTC_CNTL, RTC_IO, and SARADC peripherals. The ULP coprocessor uses fixed-width 32-bit instructions, 32-bit memory addressing, and has 4 general-purpose 16-bit registers.”
" The ULP coprocessor code is written in assembly and compiled using the binutils-esp32ulp toolchain."

The C6 has a full blown RISC-V LP core, not the finite state machine ULP core of other ESP32s:

  • Utilizes a 32-bit processor based on the RISC-V ISA, encompassing the standard extensions integer (I), multiplication/division (M), atomic (A), and compressed (C).
  • Interrupt controller.
  • Includes a debug module that supports external debugging via JTAG.
  • Can access all of the High-power (HP) SRAM and peripherals when the entire system is active.
  • Can access the Low-power (LP) SRAM and peripherals when the HP system is in sleep mode.
  • LP-Core code can be written in C or assembly.

1 Like

Hi there,
Correct none of them (LP cores) are supported by the Arduino IDE.
GL :slight_smile: PJ

Xiao ESP32-C6 is now officially supported by the just-released ESP32 core 3.0.0.

@reivilo thank you for the update on official support for the High Power core in Arduino ESP32 core 3.0. Please do let us know when Low Power core support may be coming to Arduino ESP32 core.

@rrrus You may open a ticket asking for the support of the low power core.

I filed this ticket for anyone who wants to follow along.