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; }