Skip to content

Examples ​

Each example is a small firmware project with its own main/, CMakeLists.txt, and environment wrappers. Build one example at a time while learning so the logs stay short and the hardware path is obvious.

Use this pattern for ESP32-S3 examples:

sh
cd examples/esp32s3/udp
. ./env.sh
idf.py build
idf.py -p /dev/ttyACM0 flash monitor

Use the matching source ./env.fish form if your shell is fish. Run ./tools/arc-projects.py --buildable --format report from the repository root when you want the discovered project list grouped with target, experiment status, and build command.

ESP32-S3 Examples ​

ExampleWhat it teaches
examples/esp32s3/benchReal ESP32-S3 benchmark firmware with Arc, raw ESP-IDF, and optional Arduino-ESP32 surfaces in one run.
examples/esp32s3/bridgeComplementary MCPWM outputs, dead-time, and a small app::boot() surface.
examples/esp32s3/canTWAI/CAN self-test loopback without an external CAN transceiver.
examples/esp32s3/copyDMA memcpy, coherent cache handoff, and exact completion tickets.
examples/esp32s3/countRMT pulse output feeding PCNT pulse counting through a jumper.
examples/esp32s3/dspSIMD-capable buffers, DSP kernels, Core 1 compute, and snapshot reporting.
examples/esp32s3/dvpLCD_CAM DVP camera-capture skeleton.
examples/esp32s3/espnowESP-NOW raw radio transport with the same Core 0/Core 1 shape as UDP.
examples/esp32s3/i2cI2C master bus/device ownership.
examples/esp32s3/i2sDuplex I2S DMA movement and arc::Result<std::size_t> read/write paths.
examples/esp32s3/i80LCD_CAM Intel 8080 DMA display/peripheral output.
examples/esp32s3/net_clientTCP/TLS/HTTP-style client-side network building blocks.
examples/esp32s3/otaOTA slot inspection, image state, and flash capacity reporting.
examples/esp32s3/probeCycle-counter measurement, min/avg/max stats, and Core 1 reporting.
examples/esp32s3/pulseMCPWM waveform generation plus MCPWM capture timing.
examples/esp32s3/pwmLEDC hardware PWM without a pinned task or busy loop.
examples/esp32s3/scopeADC continuous DMA capture and parsed sample frames.
examples/esp32s3/sigmaSigma-Delta pulse-density output.
examples/esp32s3/sleepRTC-retained boot counter, wake causes, and deep sleep.
examples/esp32s3/spaceRuntime flash, partition, image, and heap capacity reports.
examples/esp32s3/spiSPI DMA loopback with coherent queue and finish.
examples/esp32s3/storeTyped NVS config, fixed text storage, and capacity reporting.
examples/esp32s3/tempInternal die-temperature telemetry.
examples/esp32s3/timerGPTimer alarm ISR and free-running counter logging.
examples/esp32s3/traceRMT transmit/capture loopback for symbol timing.
examples/esp32s3/uartUART ownership and byte movement.
examples/esp32s3/udpThe first full transport example: Core 1 work plus Core 0 Wi-Fi/UDP.

Portable Example ​

ExampleWhat it teaches
examples/portable/packFixed binary arc::pack records outside a full ESP32-S3 firmware build.

Experimental ESP32-S31 Scaffolds ​

These projects are present so the intended API shape is visible, but they stay gated behind ARC_TARGET=esp32s31 and ARC_EXPERIMENTAL_ESP32S31=ON until a usable ESP32-S31 ESP-IDF target exists in the pinned SDK.

They share examples/esp32s31/sdkconfig.defaults for the Korvo-class 16 MB flash layout and PSRAM auto-detect path.

Run ./tools/s31-readiness.py --format report to separate Arc scaffold drift from missing local ESP-IDF esp32s31 target metadata. Use --require-sdk only when the preview SDK target should already be present.

ExampleIntended surface
examples/esp32s31/ampESP32-S31-Korvo-1 Core0/Core1 migration policy scaffolding; true bare-core AMP remains off until an S31 policy exists.
examples/esp32s31/audioESP32-S31-Korvo-1 audio codec, PA enable pin, and DMA buffer scaffolding.
examples/esp32s31/camCamera/data-path scaffolding with ESP32-S31-Korvo-1 board topology facts.
examples/esp32s31/consoleESP32-S31-Korvo-1 UART0 console topology and guarded UART contract.
examples/esp32s31/controlESP32-S31-Korvo-1 control-loop scaffolding on the S31 core map.
examples/esp32s31/ioESP32-S31-Korvo-1 ADC button and WS2812 status LED RMT ownership facts.
examples/esp32s31/lcdESP32-S31-Korvo-1 RGB LCD topology, strap-overlapped control pins, and DMA frame ownership.
examples/esp32s31/mlESP32-S31-Korvo-1 fixed-shape ML scaffolding.
examples/esp32s31/ptpPrecision-time scaffolding; Korvo needs an external Ethernet PHY path for hardware timestamping.
examples/esp32s31/radioESP32-S31-Korvo-1 Wi-Fi 6, Bluetooth 5.4, Bluetooth Classic, BLE, IEEE 802.15.4, Zigbee 3.0, Thread 1.4, and guarded Arc ESP-NOW/BLE Mesh/Thread contracts.
examples/esp32s31/sdESP32-S31-Korvo-1 onboard microSD pin topology, strap-overlapped control GPIO, and guarded SDMMC mount contract.
examples/esp32s31/securityESP32-S31 secure boot, flash encryption, TEE, PUF, WorldGuard, and Arc SecureBoot/WorldGuard/PUF/Cloak contract scaffolding.
examples/esp32s31/usbESP32-S31-Korvo-1 USB OTG PHY ownership and USB descriptor scaffolding.

Reading Order ​

  1. Build examples/esp32s3/udp if you want the complete Arc shape.
  2. Build the smallest hardware example near your peripheral.
  3. Open Module Guide to find the matching header.
  4. Open API Reference for exact methods and failure behavior.

ESP32-S3 first. ESP-IDF native. Static ownership by default.