diff --git a/frontend/public/firmware/micropython-esp32c3.bin b/frontend/public/firmware/micropython-esp32c3.bin new file mode 100644 index 0000000..4841696 Binary files /dev/null and b/frontend/public/firmware/micropython-esp32c3.bin differ diff --git a/frontend/src/simulation/Esp32MicroPythonLoader.ts b/frontend/src/simulation/Esp32MicroPythonLoader.ts index d36adf0..8d281bb 100644 --- a/frontend/src/simulation/Esp32MicroPythonLoader.ts +++ b/frontend/src/simulation/Esp32MicroPythonLoader.ts @@ -26,13 +26,21 @@ const FIRMWARE_MAP: Record = { cacheKey: 'micropython-esp32s3-v1.20.0', fallback: '/firmware/micropython-esp32s3.bin', }, + 'esp32-c3': { + remote: 'https://micropython.org/resources/firmware/ESP32_GENERIC_C3-20230426-v1.20.0.bin', + cacheKey: 'micropython-esp32c3-v1.20.0', + fallback: '/firmware/micropython-esp32c3.bin', + }, }; /** Map any ESP32-family board kind to firmware variant key */ -function toFirmwareVariant(boardKind: BoardKind): 'esp32' | 'esp32-s3' { +function toFirmwareVariant(boardKind: BoardKind): 'esp32' | 'esp32-s3' | 'esp32-c3' { if (boardKind === 'esp32-s3' || boardKind === 'xiao-esp32-s3' || boardKind === 'arduino-nano-esp32') { return 'esp32-s3'; } + if (boardKind === 'esp32-c3' || boardKind === 'xiao-esp32-c3' || boardKind === 'aitewinrobot-esp32c3-supermini') { + return 'esp32-c3'; + } return 'esp32'; } diff --git a/frontend/src/types/board.ts b/frontend/src/types/board.ts index c4b29cc..3ecab1a 100644 --- a/frontend/src/types/board.ts +++ b/frontend/src/types/board.ts @@ -12,9 +12,9 @@ export type BoardKind = | 'esp32-s3' // Xtensa LX7, QEMU backend | 'xiao-esp32-s3' // Seeed XIAO ESP32-S3, QEMU (esp32-s3) | 'arduino-nano-esp32' // Arduino Nano ESP32 (S3), QEMU (esp32-s3) - | 'esp32-c3' // RISC-V RV32IMC, browser emulation (Esp32C3Simulator) - | 'xiao-esp32-c3' // Seeed XIAO ESP32-C3, browser emulation (Esp32C3Simulator) - | 'aitewinrobot-esp32c3-supermini' // ESP32-C3 SuperMini, browser emulation (Esp32C3Simulator) + | 'esp32-c3' // RISC-V RV32IMC, QEMU backend + | 'xiao-esp32-c3' // Seeed XIAO ESP32-C3, QEMU backend + | 'aitewinrobot-esp32c3-supermini' // ESP32-C3 SuperMini, QEMU backend | 'attiny85'; // AVR ATtiny85, browser emulation (avr8js) export type LanguageMode = 'arduino' | 'micropython'; @@ -31,6 +31,10 @@ export const BOARD_SUPPORTS_MICROPYTHON = new Set([ 'esp32-s3', 'xiao-esp32-s3', 'arduino-nano-esp32', + // ESP32-C3 RISC-V (QEMU bridge) + 'esp32-c3', + 'xiao-esp32-c3', + 'aitewinrobot-esp32c3-supermini', ]); export interface BoardInstance {