Skip to content

mytechnotalent/ESP32-C3_UART_Driver

Repository files navigation

FREE Reverse Engineering Self-Study Course HERE

VIDEO PROMO HERE


ESP32-C3 UART Driver

An ESP32-C3 UART driver written entirely in RISC-V Assembler.


Install ESP Toolchain

Windows Installer HERE

Linux and macOS Installer HERE


Hardware

ESP32-C3 Super Mini BUY

USB-C to USB Cable BUY

Complete Component Kit for Raspberry Pi BUY

10pc 25v 1000uF Capacitor BUY

10% PiShop DISCOUNT CODE - KVPE_HS320548_10PC


main.s Code

/*
 * FILE: main.s
 *
 * DESCRIPTION:
 * Main application entry point for ESP32-C3 bare-metal RISC-V.
 *
 * AUTHOR: Kevin Thomas
 * CREATION DATE: November 14, 2025
 * UPDATE DATE: November 17, 2025
 */

.include "inc/registers.inc"

.extern uart_init
.extern uart_echo

/**
 * @brief   Main application entry point.
 *
 * @details Initializes peripherals and enters the main application loop.
 *          Called from _start after watchdog disable and stack setup.
 *
 * @param   None
 * @retval  None
 */
.global main
.type main, %function
main:
  addi  sp, sp, -16                              # allocate stack space
  sw    ra, 12(sp)                               # save return address
  call  uart_init                                # initialize UART (USB CDC and UART0)
  call  uart_echo                                # enter echo loop (does not return)
  lw    ra, 12(sp)                               # restore return address
  addi  sp, sp, 16                               # deallocate stack space
  ret                                            # return
.size main, .-main

License

Apache License 2.0