Skip to content

Change esp32 to build on top of the tflite-micro-esp-examples idf component #127

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
283 changes: 156 additions & 127 deletions .github/workflows/build_esp32.yml
Original file line number Diff line number Diff line change
@@ -1,167 +1,196 @@
name: ESP32

# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule

on:
push:
pull_request:
paths-ignore:
- "examples/**"
- "README.md"
- "ci/*unix*.sh"
- ".github/workflows/build_unix.yml"
- ".github/workflows/build_*.yml"


jobs:
tensorflow_micropython_esp32_build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Prepare to Build Tensorflow Micropython Firmware for ESP32
run: |
git submodule init
git submodule update --recursive
cd micropython
git submodule update --init lib/axtls
git submodule update --init lib/berkeley-db-1.xx
cd ports/esp32
make BOARD= submodules
cd ../../..
cd tflm_esp_kernels
git submodule update --init components/esp32-camera
git submodule update --init components/esp-nn
- name: Get Cache Keys
# later get this like this: git ls-remote --heads https://github.com/espressif/esp-idf
# this commit is hard-coded in micropython/tools/ci.sh
run: |
IDF_COMMIT=142bb32c50fa9875b8b69fa539a2d59559460d72
echo "esp-idf-commit=$IDF_COMMIT" >> $GITHUB_ENV
TFLM_COMMIT=$(git submodule status tensorflow | awk '{print ($1)}')
echo "tflm-commit=$TFLM_COMMIT" >> $GITHUB_ENV
# - name: Cache esp-idf
# id: cache-esp-idf
# uses: actions/cache@v2
# env:
# cache-name: cache-esp-idf
# with:
# path: ./esp-idf
# key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.esp-idf-commit }}
- name: Setup IDF
# if: steps.cache-esp-idf.outputs.cache-hit != 'true'
uses: actions/checkout@v4

- name: Build ESP32-MICROLITE No SPIRAM - 4MB Flash
run: |
source ./micropython/tools/ci.sh && ci_esp32_setup_helper v4.3.1
- name: Cache tflm
id: cache-tflm
uses: actions/cache@v2
env:
cache-name: cache-tflm
mv * ..
cd ..
source ./scripts/build.sh && prepare_dependencies
source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup
echo "BUILDING MICROLITE"
source ./scripts/build.sh && build_esp32 "MICROLITE"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE"
ls $TARGET/build-MICROLITE
shell: bash

- name: Archive ESP32-MICROLITE No SPIRAM - 4 MB Flash firmware
uses: actions/upload-artifact@v4
with:
path: ./micropython-modules/microlite/tflm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.tflm-commit }}
- name: Setup Build for Tensorflow
# if: steps.cache-tflm.outputs.cache-hit != 'true'
run: |

source ./esp-idf/export.sh

pip3 install Pillow
pip3 install Wave

echo "Regenerating microlite/tfm directory"
rm -rf ./micropython-modules/microlite/tflm

cd ./tensorflow

../micropython-modules/microlite/prepare-tflm-esp.sh
name: microlite-esp32-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE/firmware.bin

- name: Build micropython cross compiler
- name: Build MICROLITE_C3 firmware
run: |
source ./esp-idf/export.sh
cd ./micropython
echo "make -C mpy-cross V=1 clean all"
make -C mpy-cross V=1 clean all
cd ..
echo "BUILDING MICROLITE_C3"
source ./scripts/build.sh && build_esp32 "MICROLITE_C3"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_C3"
ls $TARGET/build-MICROLITE_C3
shell: bash

- name: Archive ESP32-MICROLITE_C3 firmware
uses: actions/upload-artifact@v4
with:
name: microlite-esp32-c3-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_C3/firmware.bin

- name: Build standard non-psram 4MB Flash firmware
- name: Build MICROLITE_S2_SPIRAM firmware
run: |
source ./esp-idf/export.sh

echo "cd ./boards/esp32/MICROLITE"
cd ./boards/esp32/MICROLITE

echo "Building MICROLITE"
rm -rf builds
idf.py clean build

../../../micropython-modules/microlite/assemble-unified-image-esp.sh \
../../../micropython/ports/esp32

- name: Archive ESP32-MICROLITE firmware
uses: actions/upload-artifact@v2
cd ..
echo "BUILDING MICROLITE_S2_SPIRAM"
source ./scripts/build.sh && build_esp32 "MICROLITE_S2_SPIRAM"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S2_SPIRAM"
ls $TARGET/build-MICROLITE_S2_SPIRAM
shell: bash

- name: Archive ESP32-MICROLITE_S2_SPIRAM firmware
uses: actions/upload-artifact@v4
with:
name: microlite-esp32-firmware
path: |
boards/esp32/MICROLITE/build/firmware.bin
name: microlite-esp32-s2-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S2_SPIRAM/firmware.bin

- name: Build with psram support and 16MB Flash firmware
- name: Build MICROLITE_S3 firmware
run: |
source ./esp-idf/export.sh

echo "cd ./boards/esp32/MICROLITE_SPIRAM_16M"
cd ./boards/esp32/MICROLITE_SPIRAM_16M

echo "Building MICROLITE_SPIRAM_16M"
rm -rf build
idf.py clean build

../../../micropython-modules/microlite/assemble-unified-image-esp.sh \
../../../micropython/ports/esp32

- name: Archive ESP32-MICROLITE-SPIRAM-16M firmware
uses: actions/upload-artifact@v2
cd ..
echo "BUILDING MICROLITE_S3"
source ./scripts/build.sh && build_esp32 "MICROLITE_S3"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S3"
ls $TARGET/build-MICROLITE_S3
shell: bash

- name: Archive ESP32-MICROLITE_S3 firmware
uses: actions/upload-artifact@v4
with:
name: microlite-spiram-16m-esp32-firmware
path: |
boards/esp32/MICROLITE_SPIRAM_16M/build/firmware.bin
name: microlite-esp32-s3-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3/firmware.bin

- name: Build with psram support
- name: Build MICROLITE_S3_SPIRAM firmware
run: |
source ./esp-idf/export.sh

echo "cd ./boards/esp32/MICROLITE_SPIRAM"
cd ./boards/esp32/MICROLITE_SPIRAM
cd ..
echo "BUILDING MICROLITE_S3_SPIRAM"
source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S3_SPIRAM"
ls $TARGET/build-MICROLITE_S3_SPIRAM
shell: bash

- name: Archive ESP32-MICROLITE_S3_SPIRAM firmware
uses: actions/upload-artifact@v4
with:
name: microlite-esp32-s3-spiram-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM/firmware.bin

echo "Building MICROLITE_SPIRAM"
rm -rf build
idf.py clean build
- name: Build MICROLITE_S3_SPIRAM_CS_GPIO_20 firmware
run: |
cd ..
echo "BUILDING MICROLITE_S3_SPIRAM_CS_GPIO_20"
source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM_CS_GPIO_20"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S3_SPIRAM_CS_GPIO_20"
ls $TARGET/build-MICROLITE_S3_SPIRAM_CS_GPIO_20
shell: bash

- name: Archive ESP32-MICROLITE_S3_SPIRAM_CS_GPIO_20 firmware
uses: actions/upload-artifact@v4
with:
name: microlite-esp32-s3-spiram-cs-gpio-20-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM_CS_GPIO_20/firmware.bin

../../../micropython-modules/microlite/assemble-unified-image-esp.sh \
../../../micropython/ports/esp32

- name: Archive ESP32-MICROLITE-SPIRAM firmware
uses: actions/upload-artifact@v2
- name: Build MICROLITE_S3_SPIRAM_OCTAL firmware
run: |
cd ..
echo "BUILDING MICROLITE_S3_SPIRAM_OCTAL"
source ./scripts/build.sh && build_esp32 "MICROLITE_S3_SPIRAM_OCTAL"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_S3_SPIRAM_OCTAL"
ls $TARGET/build-MICROLITE_S3_SPIRAM_OCTAL
shell: bash

- name: Archive ESP32-MICROLITE_S3_SPIRAM_OCTAL firmware
uses: actions/upload-artifact@v4
with:
name: microlite-spiram-esp32-firmware
path: |
boards/esp32/MICROLITE_SPIRAM/build/firmware.bin
name: microlite-esp32-s3-spiram-octal-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_S3_SPIRAM_OCTAL/firmware.bin

- name: Build MICROLITE_SPIRAM_CAM
run: |

source ./esp-idf/export.sh
- name: Build MICROLITE_SPIRAM firmware
run: |
cd ..
echo "BUILDING MICROLITE_SPIRAM"
source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_SPIRAM"
ls $TARGET/build-MICROLITE_SPIRAM
shell: bash

- name: Archive ESP32-MICROLITE_SPIRAM firmware
uses: actions/upload-artifact@v4
with:
name: microlite-esp32-spiram-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM/firmware.bin

echo "cd ./boards/esp32/MICROLITE_SPIRAM_CAM"
cd ./boards/esp32/MICROLITE_SPIRAM_CAM

echo "Building MICROLITE_SPIRAM_CAM"
rm -rf builds
idf.py clean build
- name: Build with psram support and 16MB Flash firmware
run: |
cd ..
echo "BUILDING MICROLITE_SPIRAM_16M"
source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM_16M"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_SPIRAM_16M"
ls $TARGET/build-MICROLITE_SPIRAM_16M
shell: bash

- name: Archive ESP32-MICROLITE_SPIRAM_16M firmware
uses: actions/upload-artifact@v4
with:
name: microlite-esp32-spiram-16m-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM_16M/firmware.bin

../../../micropython-modules/microlite/assemble-unified-image-esp.sh \
../../../micropython/ports/esp32
- name: Build with psram support and 16MB Flash firmware
run: |
cd ..
echo "BUILDING MICROLITE_SPIRAM_CAM"
source ./scripts/build.sh && build_esp32 "MICROLITE_SPIRAM_CAM"
TARGET=$(pwd)/dependencies/micropython/ports/esp32
echo "TARGET=$TARGET"
./scripts/assemble-unified-image-esp.sh $TARGET "MICROLITE_SPIRAM_CAM"
ls $TARGET/build-MICROLITE_SPIRAM_CAM
shell: bash

- name: Archive ESP32-MICROLITE_SPIRAM_CAM firmware
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: microlite-spiram-cam-esp32-firmware
path: |
boards/esp32/MICROLITE_SPIRAM_CAM/build/firmware.bin
name: microlite-esp32-spiram-cam-firmware
path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_SPIRAM_CAM/firmware.bin
Loading
Loading