From 9f848dcc3f7bfda4c9048c6d4c4f67ba640c5860 Mon Sep 17 00:00:00 2001 From: Erick Ahmed Date: Fri, 10 Oct 2025 22:30:32 +0200 Subject: [PATCH] Add Dockerfile and build script for ESP32 firmware --- firmware/esp32/Dockerfile | 37 +++++++++++++++++++++++++++++++++++ firmware/esp32/build-esp32.sh | 18 +++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 firmware/esp32/Dockerfile create mode 100644 firmware/esp32/build-esp32.sh diff --git a/firmware/esp32/Dockerfile b/firmware/esp32/Dockerfile new file mode 100644 index 0000000..3c490da --- /dev/null +++ b/firmware/esp32/Dockerfile @@ -0,0 +1,37 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + git \ + wget \ + flex \ + bison \ + gperf \ + python3 \ + python3-pip \ + python3-venv \ + cmake \ + ninja-build \ + ccache \ + libffi-dev \ + libssl-dev \ + dfu-util \ + libusb-1.0-0 \ + && apt-get autoremove + +WORKDIR /usr/src/ + +RUN mkdir -p ~/esp/firmware +RUN git clone --recursive https://github.com/espressif/esp-idf.git ~/esp/esp-idf +RUN cd ~/esp/esp-idf && ./install.sh esp32 +ENV IDF_PATH=~/esp/esp-idf +RUN . $IDF_PATH/export.sh + +COPY . ~/esp/firmware/ + +RUN cd ~/esp/firmware/ +RUN idf.py set-target esp32 +RUN idf.py menuconfig +RUN idf.py build diff --git a/firmware/esp32/build-esp32.sh b/firmware/esp32/build-esp32.sh new file mode 100644 index 0000000..95f84e1 --- /dev/null +++ b/firmware/esp32/build-esp32.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -e + +IMAGE_NAME="esp32-builder" +SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +DOCKERFILE="$SCRIPT_DIR/Dockerfile" +BUILD_CTX="$SCRIPT_DIR" +DEST_BIN="$SCRIPT_DIR/build/esp32.bin" + +docker build -t "$IMAGE_NAME" -f "$DOCKERFILE" "$BUILD_CTX" + +mkdir -p "$(dirname "$DEST_BIN")" + +docker run --rm "$IMAGE_NAME" \ + cat /usr/src/build/esp32.bin > "$DEST_BIN" + +esptool.py --chip esp32c3 --port /dev/ttyUSB0 --baud 115200 write_flash 0x1000 firmware.bin \ +|| { echo "To find the correct port run: ls /dev/cu.*. Then modify build-esp32.sh"; exit 1; }