Skip to main content Skip to local navigation

ESP32-C6: A RISC-V Microcontroller with JTAG on the USB

A microcontroller on a USB-C cable.

I'm more and more impressed by the selection of RISC-V processors out there. The ESP32 families of microcontrollers are found in some pretty impressive systems like M5Stack. The availability of WiFi and Bluetooth radios make them ideal development platforms for IoT.

But here is a really cool thing. The ESP32-C6 RISC-V microcontroller has a single USB connector on it. And that USB connector appears as a JTAG port to my macOS without any explicit work on my part, as you can see in this security window pop-up:

Security pop up asking if an ESP32 microcontroller with JTAG/Serial capability can connect to my Mac over USB.
Security pop up asking if an ESP32 microcontroller with JTAG/Serial capability can connect to my Mac over USB.

In the Arduino 2.0 IDE the board gets recognized as a Heltec board:

Board recognized as a Heltec WiFi board

And then the Arduino 2.0 IDE prompts me to download the ESP32 libraries:

which appears to install a number of different GNU compiler tools, including those for RISC-V and Extensa processors:

After the installation, the Arduino IDE no longer thinks that it's a Heltec board. Instead it thinks that it's a generic "ESP32 Family Device":

Arduino IDE recognizes it as a generic ESP32
Arduino IDE recognizes it as a generic ESP32

Ah, my mistake was to not add Seeed Xiao-specific library location to the Arduino IDE, as per the wiki instructions:

Then, I can access the Espressif EPS32-related Arduino package:

ESP32 files in Arduino
ESP32 support

Programming with the standard blink program worked.

But, here's the interesting part, in my mind. Under tools you have all kinds of options for adjusting the hardware and specifying how to interact with the system.

ESP32 options for the Xiao board.  Includes JTAG options.
ESP32 options for the RISCV Xiao board. Includes JTAG options.

Conclusion

So, a cheap little board with RISC-V and JTAG, programmable with the Arduino 2.x IDE. Pretty cool.


a pen

James Andrew Smith is a Professional Engineer and Associate Professor in the Electrical Engineering and Computer Science Department of York University’s Lassonde School, with degrees in Electrical and Mechanical Engineering from the University of Alberta and McGill University.  Previously a program director in biomedical engineering, his research background spans robotics, locomotion, human birth, music and engineering education. While on sabbatical in 2018-19 with his wife and kids he lived in Strasbourg, France and he taught at the INSA Strasbourg and Hochschule Karlsruhe and wrote about his personal and professional perspectives.  James is a proponent of using social media to advocate for justice, equity, diversity and inclusion as well as evidence-based applications of research in the public sphere. You can find him on Twitter.  You can find him on BlueSky. Originally from Québec City, he now lives in Toronto, Canada.