diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index d960a7e..40e66a8 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -1,6 +1,7 @@ name: ESP32 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule + on: push: pull_request: @@ -8,160 +9,188 @@ on: - "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 \ No newline at end of file diff --git a/.github/workflows/build_esp32c3.yml b/.github/workflows/build_esp32c3.yml index 3347f4c..93740c3 100644 --- a/.github/workflows/build_esp32c3.yml +++ b/.github/workflows/build_esp32c3.yml @@ -2,125 +2,35 @@ name: ESP32 C3 # 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" + paths: + - '.github/workflows/build_esp32c3.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: - tensorflow_micropython_esp32_c3_build: + tensorflow_micropython_esp32c3_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' - run: | - source ./micropython/tools/ci.sh && ci_esp32_idf44_setup - - name: Cache tflm - id: cache-tflm - uses: actions/cache@v2 - env: - cache-name: cache-tflm - 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: Build micropython cross compiler - 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 + uses: actions/checkout@v4 - - name: Build ESP32-MICROLITE_C3 + - name: Build ESP32 MICROLITE_C3 No SPIRAM - 4MB Flash run: | - - source ./esp-idf/export.sh - - echo "cd ./boards/esp32/MICROLITE_C3" - cd ./boards/esp32/MICROLITE_C3 - - echo "Building ESP32-MICROLITE_C3" - rm -rf builds - idf.py clean build - - ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - ../../../micropython/ports/esp32 - - - name: Archive ESP32-MICROLITE_C3 firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-esp32c3-firmware - path: | - boards/esp32/MICROLITE_C3/build/firmware.bin - - - name: Build ESP32-MICROLITE_C3_USB - run: | - - source ./esp-idf/export.sh - - echo "cd ./boards/esp32/MICROLITE_C3_USB" - cd ./boards/esp32/MICROLITE_C3_USB - - echo "Building ESP32 MICROLITE_C3_USB" - rm -rf builds - idf.py clean build - - ../../../micropython-modules/microlite/assemble-unified-image-esp.sh \ - ../../../micropython/ports/esp32 - - - name: Archive ESP32-MICROLITE_C3_USB firmware - uses: actions/upload-artifact@v2 + mv * .. + cd .. + source ./scripts/build.sh && prepare_dependencies + source ./dependencies/micropython/tools/ci.sh && ci_esp32_idf50_setup + 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 No SPIRAM - 4 MB Flash firmware + uses: actions/upload-artifact@v3 with: - name: microlite-esp32c3-usb-firmware - path: | - boards/esp32/MICROLITE_C3_USB/build/firmware.bin + name: microlite-esp32-firmware + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/esp32/build-MICROLITE_C3/firmware.bin diff --git a/.github/workflows/build_esp32s2.yml b/.github/workflows/build_esp32s2.yml index 251e750..9c0ef89 100644 --- a/.github/workflows/build_esp32s2.yml +++ b/.github/workflows/build_esp32s2.yml @@ -3,13 +3,11 @@ name: ESP32 S2 # 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' + paths: + - '.github/workflows/build_esp32s2.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_esp32_s2_build: diff --git a/.github/workflows/build_esp32s3.yml b/.github/workflows/build_esp32s3.yml index c14ec3b..1789e2e 100644 --- a/.github/workflows/build_esp32s3.yml +++ b/.github/workflows/build_esp32s3.yml @@ -3,13 +3,11 @@ name: ESP32 S3 # 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' + paths: + - '.github/workflows/build_esp32s3.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_esp32_s3_build: diff --git a/.github/workflows/build_rp2.yml b/.github/workflows/build_rp2.yml index 0f94610..334d113 100644 --- a/.github/workflows/build_rp2.yml +++ b/.github/workflows/build_rp2.yml @@ -3,20 +3,11 @@ name: RP2 # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*unix*.sh' - - '.github/workflows/build_unix.yml' - - '.github/workflows/build_esp32.yml' pull_request: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*unix*.sh' - - '.github/workflows/build_unix.yml' - - '.github/workflows/build_esp32.yml' + paths: + - '.github/workflows/buildrp2.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_rp2_build: @@ -27,12 +18,15 @@ jobs: uses: actions/setup-python@v1 with: python-version: 3.8 + - name: Install Pillow & Wave run: | pip install Pillow pip3 install Wave + - name: Checkout repository uses: actions/checkout@v2 + - name: Prepare to Build Tensorflow Micropython Firmware for RP2 run: | git submodule init @@ -40,10 +34,12 @@ jobs: cd micropython git submodule update --init lib/pico-sdk lib/tinyusb cd .. + - name: Get Cache Keys run: | TFLM_COMMIT=$(git submodule status tensorflow | awk '{print ($1)}') echo "tflm-commit=$TFLM_COMMIT" >> $GITHUB_ENV + - name: Setup GCC ARM run: | source ./micropython/tools/ci.sh && ci_rp2_setup @@ -56,6 +52,7 @@ jobs: # 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: | @@ -73,6 +70,7 @@ jobs: make -C ports/rp2 submodules echo "make -C mpy-cross V=1 clean all" make -C mpy-cross V=1 clean all + - name: Build RP2 run: | @@ -88,70 +86,70 @@ jobs: make cd .. - # ADAFRUIT_ITSYBITSY_RP2040 - cmake -S ports/rp2 -B build-ADAFRUIT_ITSYBITSY_RP2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=ADAFRUIT_ITSYBITSY_RP2040 \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # ADAFRUIT_ITSYBITSY_RP2040 + # cmake -S ports/rp2 -B build-ADAFRUIT_ITSYBITSY_RP2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=ADAFRUIT_ITSYBITSY_RP2040 \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-ADAFRUIT_ITSYBITSY_RP2040 - make - cd .. + # cd build-ADAFRUIT_ITSYBITSY_RP2040 + # make + # cd .. - # ADAFRUIT_QTPY_RP2040 - cmake -S ports/rp2 -B build-ADAFRUIT_QTPY_RP2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=ADAFRUIT_QTPY_RP2040 \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # ADAFRUIT_QTPY_RP2040 + # cmake -S ports/rp2 -B build-ADAFRUIT_QTPY_RP2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=ADAFRUIT_QTPY_RP2040 \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-ADAFRUIT_QTPY_RP2040 - make - cd .. + # cd build-ADAFRUIT_QTPY_RP2040 + # make + # cd .. - # PICO - cmake -S ports/rp2 -B build-PICO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PICO \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # PICO + # cmake -S ports/rp2 -B build-PICO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PICO \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-PICO - make - cd .. + # cd build-PICO + # make + # cd .. - # PIMORONI_PICOLIPO_4MB - cmake -S ports/rp2 -B build-PIMORONI_PICOLIPO_4MB -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_PICOLIPO_4MB \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # PIMORONI_PICOLIPO_4MB + # cmake -S ports/rp2 -B build-PIMORONI_PICOLIPO_4MB -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_PICOLIPO_4MB \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-PIMORONI_PICOLIPO_4MB - make - cd .. + # cd build-PIMORONI_PICOLIPO_4MB + # make + # cd .. - # PIMORONI_PICOLIPO_16MB - cmake -S ports/rp2 -B build-PIMORONI_PICOLIPO_16MB -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_PICOLIPO_16MB \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # PIMORONI_PICOLIPO_16MB + # cmake -S ports/rp2 -B build-PIMORONI_PICOLIPO_16MB -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_PICOLIPO_16MB \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-PIMORONI_PICOLIPO_16MB - make - cd .. + # cd build-PIMORONI_PICOLIPO_16MB + # make + # cd .. - # PIMORONI_TINY2040 - cmake -S ports/rp2 -B build-PIMORONI_TINY2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_TINY2040 \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # PIMORONI_TINY2040 + # cmake -S ports/rp2 -B build-PIMORONI_TINY2040 -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PIMORONI_TINY2040 \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-PIMORONI_TINY2040 - make - cd .. + # cd build-PIMORONI_TINY2040 + # make + # cd .. - # SPARKFUN_PROMICRO - cmake -S ports/rp2 -B build-SPARKFUN_PROMICRO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=SPARKFUN_PROMICRO \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # SPARKFUN_PROMICRO + # cmake -S ports/rp2 -B build-SPARKFUN_PROMICRO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=SPARKFUN_PROMICRO \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-SPARKFUN_PROMICRO - make - cd .. + # cd build-SPARKFUN_PROMICRO + # make + # cd .. - # SPARKFUN_THINGPLUS - cmake -S ports/rp2 -B build-SPARKFUN_THINGPLUS -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=SPARKFUN_THINGPLUS \ - -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake + # # SPARKFUN_THINGPLUS + # cmake -S ports/rp2 -B build-SPARKFUN_THINGPLUS -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=SPARKFUN_THINGPLUS \ + # -DUSER_C_MODULES=/home/runner/work/tensorflow-micropython-examples/tensorflow-micropython-examples/micropython-modules/micropython.cmake - cd build-SPARKFUN_THINGPLUS - make + # cd build-SPARKFUN_THINGPLUS + # make - name: Archive ADAFRUIT_FEATHER_RP2040 firmware uses: actions/upload-artifact@v2 @@ -165,97 +163,97 @@ jobs: micropython/build-ADAFRUIT_FEATHER_RP2040/firmware.hex micropython/build-ADAFRUIT_FEATHER_RP2040/firmware.uf2 - - name: Archive ADAFRUIT_ITSYBITSY_RP2040 firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-adafruit-itsybitsy-rp2040-firmware - path: | - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.elf - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.bin - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.dis - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.elf.map - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.hex - micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.uf2 - - name: Archive ADAFRUIT_QTPY_RP2040 firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-adafruit-qtpy-rp2040-firmware - path: | - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.elf - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.bin - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.dis - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.elf.map - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.hex - micropython/build-ADAFRUIT_QTPY_RP2040/firmware.uf2 - - - name: Archive PICO firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-pico-firmware - path: | - micropython/build-PICO/firmware.elf - micropython/build-PICO/firmware.bin - micropython/build-PICO/firmware.dis - micropython/build-PICO/firmware.elf.map - micropython/build-PICO/firmware.hex - micropython/build-PICO/firmware.uf2 - - - name: Archive PIMORONI_PICOLIPO_4MB firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-pimoroni-picolipo-4mb-firmware - path: | - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.elf - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.bin - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.dis - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.elf.map - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.hex - micropython/build-PIMORONI_PICOLIPO_4MB/firmware.uf2 - - - name: Archive PIMORONI_PICOLIPO_16MB firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-pimoroni-picolipo-16mb-firmware - path: | - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.elf - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.bin - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.dis - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.elf.map - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.hex - micropython/build-PIMORONI_PICOLIPO_16MB/firmware.uf2 - - - name: Archive PIMORONI_TINY2040 firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-pimoroni-tiny2040-firmware - path: | - micropython/build-PIMORONI_TINY2040/firmware.elf - micropython/build-PIMORONI_TINY2040/firmware.bin - micropython/build-PIMORONI_TINY2040/firmware.dis - micropython/build-PIMORONI_TINY2040/firmware.elf.map - micropython/build-PIMORONI_TINY2040/firmware.hex - micropython/build-PIMORONI_TINY2040/firmware.uf2 - - - name: Archive SPARKFUN_PROMICRO firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-sparkfun_promicro-firmware - path: | - micropython/build-SPARKFUN_PROMICRO/firmware.elf - micropython/build-SPARKFUN_PROMICRO/firmware.bin - micropython/build-SPARKFUN_PROMICRO/firmware.dis - micropython/build-SPARKFUN_PROMICRO/firmware.elf.map - micropython/build-SPARKFUN_PROMICRO/firmware.hex - micropython/build-SPARKFUN_PROMICRO/firmware.uf2 - - - name: Archive SPARKFUN_THINGPLUS firmware - uses: actions/upload-artifact@v2 - with: - name: microlite-rp2-sparkfun_thingplus-firmware - path: | - micropython/build-SPARKFUN_THINGPLUS/firmware.elf - micropython/build-SPARKFUN_THINGPLUS/firmware.bin - micropython/build-SPARKFUN_THINGPLUS/firmware.dis - micropython/build-SPARKFUN_THINGPLUS/firmware.elf.map - micropython/build-SPARKFUN_THINGPLUS/firmware.hex - micropython/build-SPARKFUN_THINGPLUS/firmware.uf2 \ No newline at end of file + # - name: Archive ADAFRUIT_ITSYBITSY_RP2040 firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-adafruit-itsybitsy-rp2040-firmware + # path: | + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.elf + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.bin + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.dis + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.elf.map + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.hex + # micropython/build-ADAFRUIT_ITSYBITSY_RP2040/firmware.uf2 + # - name: Archive ADAFRUIT_QTPY_RP2040 firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-adafruit-qtpy-rp2040-firmware + # path: | + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.elf + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.bin + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.dis + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.elf.map + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.hex + # micropython/build-ADAFRUIT_QTPY_RP2040/firmware.uf2 + + # - name: Archive PICO firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-pico-firmware + # path: | + # micropython/build-PICO/firmware.elf + # micropython/build-PICO/firmware.bin + # micropython/build-PICO/firmware.dis + # micropython/build-PICO/firmware.elf.map + # micropython/build-PICO/firmware.hex + # micropython/build-PICO/firmware.uf2 + + # - name: Archive PIMORONI_PICOLIPO_4MB firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-pimoroni-picolipo-4mb-firmware + # path: | + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.elf + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.bin + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.dis + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.elf.map + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.hex + # micropython/build-PIMORONI_PICOLIPO_4MB/firmware.uf2 + + # - name: Archive PIMORONI_PICOLIPO_16MB firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-pimoroni-picolipo-16mb-firmware + # path: | + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.elf + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.bin + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.dis + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.elf.map + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.hex + # micropython/build-PIMORONI_PICOLIPO_16MB/firmware.uf2 + + # - name: Archive PIMORONI_TINY2040 firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-pimoroni-tiny2040-firmware + # path: | + # micropython/build-PIMORONI_TINY2040/firmware.elf + # micropython/build-PIMORONI_TINY2040/firmware.bin + # micropython/build-PIMORONI_TINY2040/firmware.dis + # micropython/build-PIMORONI_TINY2040/firmware.elf.map + # micropython/build-PIMORONI_TINY2040/firmware.hex + # micropython/build-PIMORONI_TINY2040/firmware.uf2 + + # - name: Archive SPARKFUN_PROMICRO firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-sparkfun_promicro-firmware + # path: | + # micropython/build-SPARKFUN_PROMICRO/firmware.elf + # micropython/build-SPARKFUN_PROMICRO/firmware.bin + # micropython/build-SPARKFUN_PROMICRO/firmware.dis + # micropython/build-SPARKFUN_PROMICRO/firmware.elf.map + # micropython/build-SPARKFUN_PROMICRO/firmware.hex + # micropython/build-SPARKFUN_PROMICRO/firmware.uf2 + + # - name: Archive SPARKFUN_THINGPLUS firmware + # uses: actions/upload-artifact@v2 + # with: + # name: microlite-rp2-sparkfun_thingplus-firmware + # path: | + # micropython/build-SPARKFUN_THINGPLUS/firmware.elf + # micropython/build-SPARKFUN_THINGPLUS/firmware.bin + # micropython/build-SPARKFUN_THINGPLUS/firmware.dis + # micropython/build-SPARKFUN_THINGPLUS/firmware.elf.map + # micropython/build-SPARKFUN_THINGPLUS/firmware.hex + # micropython/build-SPARKFUN_THINGPLUS/firmware.uf2 \ No newline at end of file diff --git a/.github/workflows/build_stm32.yml b/.github/workflows/build_stm32.yml index 19f3739..39b0b18 100644 --- a/.github/workflows/build_stm32.yml +++ b/.github/workflows/build_stm32.yml @@ -3,16 +3,11 @@ name: STM32 # 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_esp32.yml' - - '.github/workflows/build_esp32s3.yml' - - '.github/workflows/build_rp2.yml' + paths: + - '.github/workflows/build_stm32.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_stm32_build: diff --git a/.github/workflows/build_unix.yml b/.github/workflows/build_unix.yml index 3f07549..ebcbd01 100644 --- a/.github/workflows/build_unix.yml +++ b/.github/workflows/build_unix.yml @@ -2,33 +2,35 @@ name: UNIX # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule on: - push: pull_request: - paths-ignore: - - 'examples/**' - - 'README.md' - - 'ci/*esp32*.sh' - - '.github/workflows/build_esp32.yml' + paths: + - '.github/workflows/build_unix.yml' + - "micropython-modules/microlite/**" + - "micropython-modules/micropython-camera-driver/**" jobs: tensorflow_micropython_unix_build: runs-on: ubuntu-latest steps: - - name: Set up Python 3.8 + - name: Set up Python 3.9 uses: actions/setup-python@v1 with: - python-version: 3.8 + python-version: 3.9 + - name: Install Pillow & Wave run: | pip install Pillow pip3 install Wave + - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 + - name: Prepare to Build Tensorflow Micropython Firmware for UNIX run: | - git submodule init - git submodule update --recursive + mv * .. + cd .. + source ./scripts/build.sh && prepare_dependencies - name: Setup Build for Tensorflow run: | @@ -36,31 +38,24 @@ jobs: echo "Regenerating microlite/tfm directory" rm -rf ./micropython-modules/microlite/tflm - cd ./tensorflow + cd ./dependencies/tflite-micro - ../micropython-modules/microlite/prepare-tflm-unix.sh + ../../scripts/prepare-tflm-unix.sh - - name: Setup micropython modules - run: | - cd ./micropython-modules - ln -s ../micropython-ulab/code ulab - - - name: Build micropython cross compiler - run: | - cd ./micropython + cd ../../micropython-modules + ln -s ../depenencies/micropython-ulab/code ulab + + cd ./dependencies/micropython echo "make -C mpy-cross V=1 clean all" make -C mpy-cross V=1 clean all - - name: Prepare to Build Tensorflow Micropython Firmware for unix - run: | - cd micropython/ports/unix + cd ports/unix make submodules make deplibs - make VARIANT_DIR=../../../boards/unix/microlite-variant VARIANT=microlite + make VARIANT_DIR=../../../../boards/unix/microlite-variant VARIANT=microlite - name: Archive Unix MICROLITE micropython interpreter uses: actions/upload-artifact@v2 with: name: microlite-unix-micropython - path: | - micropython/ports/unix/micropython + path: /home/runner/work/tensorflow-micropython-examples/dependencies/micropython/ports/unix/micropython diff --git a/.gitignore b/.gitignore index de6aeae..7ae117f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ build lib/*.a micropython-modules/microlite/tflm +dependencies +esp-idf diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 64a9d87..0000000 --- a/.gitmodules +++ /dev/null @@ -1,15 +0,0 @@ -[submodule "micropython"] - path = micropython - url = https://github.com/micropython/micropython.git -[submodule "tensorflow"] - path = tensorflow - url = https://github.com/mocleiri/tflite-micro.git -# branch = main -[submodule "micropython-ulab"] - path = micropython-ulab - url = https://github.com/v923z/micropython-ulab.git -# branch = master -[submodule "tflm_esp_kernels"] - path = tflm_esp_kernels - url = https://github.com/espressif/tflite-micro-esp-examples.git -# branch = master diff --git a/.vscode/settings.json b/.vscode/settings.json index 49f12c1..2985c52 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -63,5 +63,6 @@ } ], "cortex-debug.variableUseNaturalFormat": false, - "cmake.configureOnOpen": false + "cmake.configureOnOpen": false, + "git.ignoreLimitWarning": true } \ No newline at end of file diff --git a/boards/esp32/MICROLITE/CMakeLists.txt b/boards/esp32/MICROLITE/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE/board.json b/boards/esp32/MICROLITE/board.json new file mode 100644 index 0000000..0db38c2 --- /dev/null +++ b/boards/esp32/MICROLITE/board.json @@ -0,0 +1,26 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "BLE", + "External Flash", + "WiFi" + ], + "images": [ + "esp32_devkitc.jpg" + ], + "mcu": "esp32", + "product": "ESP32 / WROOM", + "thumbnail": "", + "url": "https://www.espressif.com/en/products/modules", + "variants": { + "IDF3": "Compiled with IDF 3.x", + "D2WD": "ESP32 D2WD", + "SPIRAM": "Support for SPIRAM / WROVER", + "UNICORE": "ESP32 Unicore", + "OTA": "Support for OTA" + }, + "vendor": "Espressif" +} diff --git a/boards/esp32/MICROLITE/board.md b/boards/esp32/MICROLITE/board.md new file mode 100644 index 0000000..8a66941 --- /dev/null +++ b/boards/esp32/MICROLITE/board.md @@ -0,0 +1,9 @@ +The following files are firmware that should work on most ESP32-based boards +with 4MiB of flash, including WROOM WROVER, SOLO, PICO, and MINI modules. + +If your board is based on a WROVER module, or otherwise has SPIRAM (also known +as PSRAM), then use the "spiram" variant. + +The "d2wd" variant is for ESP32-D2WD chips (with 2MiB flash), and "unicore" is +for single-core ESP32 chips (e.g. the "SOLO" modules). The "ota" variant sets +up the partition table to allow for Over-the-Air updates. diff --git a/boards/esp32/MICROLITE/main/CMakeLists.txt b/boards/esp32/MICROLITE/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE/mpconfigboard.cmake b/boards/esp32/MICROLITE/mpconfigboard.cmake index 645b46e..8f73275 100644 --- a/boards/esp32/MICROLITE/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE/mpconfigboard.cmake @@ -1,19 +1,56 @@ -set (IDF_TARGET esp32) - set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.partition - + boards/sdkconfig.base + boards/sdkconfig.ble + ../../../../boards/esp32/MICROLITE/sdkconfig.partition ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") +if(MICROPY_BOARD_VARIANT STREQUAL "D2WD") + set(SDKCONFIG_DEFAULTS + ${SDKCONFIG_DEFAULTS} + boards/ESP32_GENERIC/sdkconfig.d2wd + ) + + list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_MCU_NAME="ESP32-D2WD" + ) +endif() + +if(MICROPY_BOARD_VARIANT STREQUAL "OTA") + set(SDKCONFIG_DEFAULTS + ${SDKCONFIG_DEFAULTS} + boards/ESP32_GENERIC/sdkconfig.ota + ) + + list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_BOARD_NAME="Generic ESP32 module with OTA" + ) +endif() + +if(MICROPY_BOARD_VARIANT STREQUAL "SPIRAM") + set(SDKCONFIG_DEFAULTS + ${SDKCONFIG_DEFAULTS} + boards/sdkconfig.spiram + ) + + list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_BOARD_NAME="Generic ESP32 module with SPIRAM" + ) +endif() + +if(MICROPY_BOARD_VARIANT STREQUAL "UNICORE") + set(SDKCONFIG_DEFAULTS + ${SDKCONFIG_DEFAULTS} + boards/ESP32_GENERIC/sdkconfig.unicore + ) + + list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_MCU_NAME="ESP32-UNICORE" + ) +endif() + set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) \ No newline at end of file diff --git a/boards/esp32/MICROLITE/mpconfigboard.h b/boards/esp32/MICROLITE/mpconfigboard.h index d768e7e..8278987 100644 --- a/boards/esp32/MICROLITE/mpconfigboard.h +++ b/boards/esp32/MICROLITE/mpconfigboard.h @@ -1,2 +1,10 @@ -#define MICROPY_HW_BOARD_NAME "ESP32 module (microlite)" -#define MICROPY_HW_MCU_NAME "ESP32" +// Both of these can be set by mpconfigboard.cmake if a BOARD_VARIANT is +// specified. + +#ifndef MICROPY_HW_BOARD_NAME +#define MICROPY_HW_BOARD_NAME "Microlite ESP32 module" +#endif + +#ifndef MICROPY_HW_MCU_NAME +#define MICROPY_HW_MCU_NAME "Microlite ESP32" +#endif diff --git a/boards/esp32/MICROLITE/sdkconfig.d2wd b/boards/esp32/MICROLITE/sdkconfig.d2wd new file mode 100644 index 0000000..11fd27e --- /dev/null +++ b/boards/esp32/MICROLITE/sdkconfig.d2wd @@ -0,0 +1,10 @@ +# Optimise using -Os to reduce size +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_OPTIMIZATION_PERF=n +CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y + +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-4MiB.csv" diff --git a/boards/esp32/MICROLITE/sdkconfig.ota b/boards/esp32/MICROLITE/sdkconfig.ota new file mode 100644 index 0000000..4a164aa --- /dev/null +++ b/boards/esp32/MICROLITE/sdkconfig.ota @@ -0,0 +1,6 @@ +CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-4MiB-ota.csv" + +# Reduce firmware size to fit in the OTA partition. +CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y diff --git a/boards/esp32/MICROLITE/sdkconfig.partition b/boards/esp32/MICROLITE/sdkconfig.partition index 19329a6..ec73dc2 100644 --- a/boards/esp32/MICROLITE/sdkconfig.partition +++ b/boards/esp32/MICROLITE/sdkconfig.partition @@ -4,4 +4,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE/custom-partitions.csv" diff --git a/boards/esp32/MICROLITE/sdkconfig.unicore b/boards/esp32/MICROLITE/sdkconfig.unicore new file mode 100644 index 0000000..f0b0b5e --- /dev/null +++ b/boards/esp32/MICROLITE/sdkconfig.unicore @@ -0,0 +1 @@ +CONFIG_FREERTOS_UNICORE=y diff --git a/boards/esp32/MICROLITE_C3/CMakeLists.txt b/boards/esp32/MICROLITE_C3/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_C3/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_C3_USB/board.json b/boards/esp32/MICROLITE_C3/board.json similarity index 83% rename from boards/esp32/MICROLITE_C3_USB/board.json rename to boards/esp32/MICROLITE_C3/board.json index 23f9a8e..4a81d22 100644 --- a/boards/esp32/MICROLITE_C3_USB/board.json +++ b/boards/esp32/MICROLITE_C3/board.json @@ -5,14 +5,14 @@ "docs": "", "features": [ "BLE", + "External Flash", "WiFi" ], - "id": "esp32c3-usb", "images": [ "esp32c3_devkitmini.jpg" ], "mcu": "esp32c3", - "product": "ESP32-C3 with USB", + "product": "ESP32-C3", "thumbnail": "", "url": "https://www.espressif.com/en/products/modules", "vendor": "Espressif" diff --git a/boards/esp32/MICROLITE_C3/board.md b/boards/esp32/MICROLITE_C3/board.md new file mode 100644 index 0000000..1604b87 --- /dev/null +++ b/boards/esp32/MICROLITE_C3/board.md @@ -0,0 +1,7 @@ +The following files are firmware images that should work on most +ESP32-C3-based boards with 4MiB of flash, including WROOM and MINI modules, +that use the revision 3 silicon (or newer). + +USB serial/JTAG support is enabled on pin 18 and 19. Note that this +is not a full USB stack, the C3 just provides a CDC/ACM class serial +and JTAG interface. diff --git a/boards/esp32/MICROLITE_C3/main/CMakeLists.txt b/boards/esp32/MICROLITE_C3/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_C3/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_C3/mpconfigboard.cmake b/boards/esp32/MICROLITE_C3/mpconfigboard.cmake index b6f6f4b..0a76fdc 100644 --- a/boards/esp32/MICROLITE_C3/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_C3/mpconfigboard.cmake @@ -1,18 +1,14 @@ -set (IDF_TARGET esp32c3) +set(IDF_TARGET esp32c3) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_BOARD_DIR}/sdkconfig.partition - + boards/sdkconfig.base + boards/sdkconfig.ble + boards/ESP32_GENERIC_C3/sdkconfig.c3usb + ../../../../boards/esp32/MICROLITE_C3/sdkconfig.partition ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") - set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) diff --git a/boards/esp32/MICROLITE_C3/mpconfigboard.h b/boards/esp32/MICROLITE_C3/mpconfigboard.h index 02bad4c..6e2545d 100644 --- a/boards/esp32/MICROLITE_C3/mpconfigboard.h +++ b/boards/esp32/MICROLITE_C3/mpconfigboard.h @@ -1,9 +1,11 @@ // This configuration is for a generic ESP32C3 board with 4MiB (or more) of flash. -#define MICROPY_HW_BOARD_NAME "ESP32C3 module (microlite)" -#define MICROPY_HW_MCU_NAME "ESP32C3" +#define MICROPY_HW_BOARD_NAME "Microlite ESP32C3 module" +#define MICROPY_HW_MCU_NAME "Microlite ESP32C3" #define MICROPY_HW_ENABLE_SDCARD (0) #define MICROPY_PY_MACHINE_DAC (0) -// TODO: early esp-idf's didn't support i2s. check if this still applies #define MICROPY_PY_MACHINE_I2S (0) + +// Enable UART REPL for modules that have an external USB-UART and don't use native USB. +#define MICROPY_HW_ENABLE_UART_REPL (1) diff --git a/boards/esp32/MICROLITE_C3/sdkconfig.c3usb b/boards/esp32/MICROLITE_C3/sdkconfig.c3usb new file mode 100644 index 0000000..d9e7c7f --- /dev/null +++ b/boards/esp32/MICROLITE_C3/sdkconfig.c3usb @@ -0,0 +1,7 @@ +CONFIG_ESP32C3_REV_MIN_3=y +CONFIG_ESP32C3_BROWNOUT_DET=y +CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_7= +CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_4=y +CONFIG_ESP32C3_BROWNOUT_DET_LVL=4 +CONFIG_ESP_CONSOLE_UART_DEFAULT= +CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y diff --git a/boards/esp32/MICROLITE_C3/sdkconfig.partition b/boards/esp32/MICROLITE_C3/sdkconfig.partition index 2543d5b..cb13b00 100644 --- a/boards/esp32/MICROLITE_C3/sdkconfig.partition +++ b/boards/esp32/MICROLITE_C3/sdkconfig.partition @@ -4,4 +4,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_C3/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_C3/custom-partitions.csv" diff --git a/boards/esp32/MICROLITE_C3_USB/CMakeLists.txt b/boards/esp32/MICROLITE_C3_USB/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_C3_USB/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_C3_USB/custom-partitions.csv b/boards/esp32/MICROLITE_C3_USB/custom-partitions.csv deleted file mode 100644 index a3569b8..0000000 --- a/boards/esp32/MICROLITE_C3_USB/custom-partitions.csv +++ /dev/null @@ -1,10 +0,0 @@ -# Notes: the offset of the partition table itself is set in -# $ESPIDF/components/partition_table/Kconfig.projbuild and the -# offset of the factory/ota_0 partition is set in makeimg.py -# I needed to increase the size of the app partition to fit the tensorflow microlite library -# There is 1/2 as much data partition as with standard micropython on esp32 4MiB. -# Name, Type, SubType, Offset, Size, Flags -nvs, data, nvs, 0x9000, 0x6000, -phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x280000, -vfs, data, fat, 0x300000, 0x100000, diff --git a/boards/esp32/MICROLITE_C3_USB/main/CMakeLists.txt b/boards/esp32/MICROLITE_C3_USB/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_C3_USB/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_C3_USB/mpconfigboard.cmake b/boards/esp32/MICROLITE_C3_USB/mpconfigboard.cmake deleted file mode 100644 index b6f6f4b..0000000 --- a/boards/esp32/MICROLITE_C3_USB/mpconfigboard.cmake +++ /dev/null @@ -1,18 +0,0 @@ -set (IDF_TARGET esp32c3) - -set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_BOARD_DIR}/sdkconfig.partition - -) - -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") - -set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake -) - -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() diff --git a/boards/esp32/MICROLITE_C3_USB/mpconfigboard.h b/boards/esp32/MICROLITE_C3_USB/mpconfigboard.h deleted file mode 100644 index 1622db6..0000000 --- a/boards/esp32/MICROLITE_C3_USB/mpconfigboard.h +++ /dev/null @@ -1,8 +0,0 @@ -// This configuration is for a generic ESP32C3 board with 4MiB (or more) of flash. - -#define MICROPY_HW_BOARD_NAME "ESP32C3 module (microlite)" -#define MICROPY_HW_MCU_NAME "ESP32C3" - -#define MICROPY_HW_ENABLE_SDCARD (0) -#define MICROPY_PY_MACHINE_DAC (0) -#define MICROPY_PY_MACHINE_I2S (0) diff --git a/boards/esp32/MICROLITE_C3_USB/sdkconfig.partition b/boards/esp32/MICROLITE_C3_USB/sdkconfig.partition deleted file mode 100644 index 6d7decd..0000000 --- a/boards/esp32/MICROLITE_C3_USB/sdkconfig.partition +++ /dev/null @@ -1,21 +0,0 @@ -# -- from GENERIC_C3_USB start -- - -CONFIG_ESP32C3_REV_MIN_3=y -CONFIG_ESP32C3_REV_MIN=3 -CONFIG_ESP32C3_BROWNOUT_DET=y -CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_7= -CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_4=y -CONFIG_ESP32C3_BROWNOUT_DET_LVL=4 -CONFIG_ESP_CONSOLE_UART_DEFAULT= -CONFIG_ESP_CONSOLE_USB_CDC= -CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y - -# -- from GENERIC_C3_USB end -- - -# MICROLITE 4M flash partition adjustment -#CONFIG_ESPTOOLPY_FLASHMODE_DIO=y -#CONFIG_ESPTOOLPY_FLASHFREQ_40M=y -#CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y -CONFIG_PARTITION_TABLE_CUSTOM=y -# move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_C3_USB/custom-partitions.csv" diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/CMakeLists.txt b/boards/esp32/MICROLITE_S2_SPIRAM/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S2_SPIRAM/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/board.json b/boards/esp32/MICROLITE_S2_SPIRAM/board.json new file mode 100644 index 0000000..dbd3b5b --- /dev/null +++ b/boards/esp32/MICROLITE_S2_SPIRAM/board.json @@ -0,0 +1,18 @@ +{ + "deploy": [ + "../deploy_s2.md" + ], + "docs": "", + "features": [ + "BLE", + "WiFi" + ], + "images": [ + "generic_s2.jpg" + ], + "mcu": "esp32s2", + "product": "ESP32-S2", + "thumbnail": "", + "url": "https://www.espressif.com/en/products/modules", + "vendor": "Espressif" +} diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/deploy.md b/boards/esp32/MICROLITE_S2_SPIRAM/deploy.md deleted file mode 100644 index a46bc9b..0000000 --- a/boards/esp32/MICROLITE_S2_SPIRAM/deploy.md +++ /dev/null @@ -1,50 +0,0 @@ -Program your board using the esptool.py program, found [here](https://github.com/espressif/esptool). - -To flash or erase your TinyS2, you have to first put it into download mode. -To do this, follow these steps: - -- Press and hold the [BOOT] button -- Press and release the [RESET] button -- Release the [BOOT] button - -Now the board is in download mode and the native USB will have enumerated as a serial device. - -If you are putting MicroPython on your board for the first time then you should -first erase the entire flash using: - -### Linux -```bash -esptool.py --chip esp32s2 --port /dev/ttyACM0 erase_flash -``` - -### Mac -```bash -esptool.py --chip esp32s2 --port /dev/cu.usbmodem01 erase_flash -``` - -#### Windows -Change (X) to whatever COM port is being used by the board -```bash -esptool --chip esp32s2 --port COM(X) erase_flash -``` - -Now download the version of the firmware you would like to install from the options below, -then use the following command to program the firmware starting at address 0x1000, -remembering to replace `tinys2-micropython-firmware-version.bin` with the name of the -firmware you just downloaded: - -#### Linux -```bash -esptool.py --chip esp32s2 --port /dev/ttyACM0 write_flash -z 0x1000 tinys2-micropython-firmware-version.bin -``` - -#### Mac -```bash -esptool.py --chip esp32s2 --port /dev/cu.usbmodem01 write_flash -z 0x1000 tinys2-micropython-firmware-version.bin -``` - -#### Windows -Change (X) to whatever COM port is being used by the board -```bash -esptool --chip esp32s2 --port COM(X) write_flash -z 0x1000 tinys2-micropython-firmware-version.bin -``` diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/main/CMakeLists.txt b/boards/esp32/MICROLITE_S2_SPIRAM/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S2_SPIRAM/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake index 96307a6..6c974f7 100644 --- a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.cmake @@ -1,17 +1,15 @@ set(IDF_TARGET esp32s2) + set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram_sx - # ${MICROPY_PORT_DIR}/boards/sdkconfig.usb - ${MICROPY_BOARD_DIR}/sdkconfig.board + boards/sdkconfig.base + boards/sdkconfig.usb + boards/sdkconfig.spiram_sx ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h index 6d7fbd1..8eb2e13 100644 --- a/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h +++ b/boards/esp32/MICROLITE_S2_SPIRAM/mpconfigboard.h @@ -1,13 +1,9 @@ -#define MICROPY_HW_BOARD_NAME "ESP32S2 Microlite" -#define MICROPY_HW_MCU_NAME "ESP32-S2FN4R2" +// Started from upstream GENERIC_S2 +#define MICROPY_HW_BOARD_NAME "Microlite ESP32S2 module" +#define MICROPY_HW_MCU_NAME "Microlite ESP32S2" #define MICROPY_PY_BLUETOOTH (0) #define MICROPY_HW_ENABLE_SDCARD (0) -// these were from the um_tiny s2 double check if they match the ESP32S2DEVKITM1R -// #define MICROPY_HW_I2C0_SCL (9) -// #define MICROPY_HW_I2C0_SDA (8) - -// #define MICROPY_HW_SPI1_MOSI (35) -// #define MICROPY_HW_SPI1_MISO (36) -// #define MICROPY_HW_SPI1_SCK (37) +// Enable UART REPL for modules that have an external USB-UART and don't use native USB. +#define MICROPY_HW_ENABLE_UART_REPL (1) diff --git a/boards/esp32/MICROLITE_S2_SPIRAM/sdkconfig.board b/boards/esp32/MICROLITE_S2_SPIRAM/sdkconfig.board deleted file mode 100644 index 91623c6..0000000 --- a/boards/esp32/MICROLITE_S2_SPIRAM/sdkconfig.board +++ /dev/null @@ -1,9 +0,0 @@ -CONFIG_FLASHMODE_QIO=y -CONFIG_ESPTOOLPY_FLASHFREQ_80M=y -CONFIG_USB_AND_UART=y -# LWIP -# CONFIG_LWIP_LOCAL_HOSTNAME="UMTinyS2" -# end of LWIP -CONFIG_PARTITION_TABLE_CUSTOM=y -# cwd is boards/esp32/MICROLITE_S2_SPIRAM -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../micropython/ports/esp32/partitions.csv" diff --git a/boards/esp32/MICROLITE_S3/CMakeLists.txt b/boards/esp32/MICROLITE_S3/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S3/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3/board.json b/boards/esp32/MICROLITE_S3/board.json new file mode 100644 index 0000000..0db9b32 --- /dev/null +++ b/boards/esp32/MICROLITE_S3/board.json @@ -0,0 +1,18 @@ +{ + "deploy": [ + "../deploy_s3.md" + ], + "docs": "", + "features": [ + "BLE", + "WiFi" + ], + "images": [ + "generic_s3.jpg" + ], + "mcu": "esp32s3", + "product": "ESP32-S3", + "thumbnail": "", + "url": "https://www.espressif.com/en/products/modules", + "vendor": "Espressif" +} diff --git a/boards/esp32/MICROLITE_S3/main/CMakeLists.txt b/boards/esp32/MICROLITE_S3/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S3/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3/mpconfigboard.cmake b/boards/esp32/MICROLITE_S3/mpconfigboard.cmake index 969b0cd..19fd52f 100644 --- a/boards/esp32/MICROLITE_S3/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S3/mpconfigboard.cmake @@ -1,19 +1,16 @@ set(IDF_TARGET esp32s3) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.board - ${MICROPY_BOARD_DIR}/sdkconfig-8m.partition + boards/sdkconfig.base + boards/sdkconfig.usb + boards/sdkconfig.ble + boards/ESP32_GENERIC_S3/sdkconfig.board + ../../../../boards/esp32/MICROLITE_S3/sdkconfig-8m.partition ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3/mpconfigboard.h b/boards/esp32/MICROLITE_S3/mpconfigboard.h index 6705aff..c48bfd7 100644 --- a/boards/esp32/MICROLITE_S3/mpconfigboard.h +++ b/boards/esp32/MICROLITE_S3/mpconfigboard.h @@ -1,8 +1,10 @@ -#define MICROPY_HW_BOARD_NAME "ESP32S3 module (microlite)" -#define MICROPY_HW_MCU_NAME "ESP32S3" +#define MICROPY_HW_BOARD_NAME "Microlite ESP32S3 module" +#define MICROPY_HW_MCU_NAME "Microlite ESP32S3" #define MICROPY_PY_MACHINE_DAC (0) +// Enable UART REPL for modules that have an external USB-UART and don't use native USB. +#define MICROPY_HW_ENABLE_UART_REPL (1) + #define MICROPY_HW_I2C0_SCL (9) #define MICROPY_HW_I2C0_SDA (8) - diff --git a/boards/esp32/MICROLITE_S3/partitions-8MiB.csv b/boards/esp32/MICROLITE_S3/partitions-8MiB.csv index 582d3b5..e2181e6 100644 --- a/boards/esp32/MICROLITE_S3/partitions-8MiB.csv +++ b/boards/esp32/MICROLITE_S3/partitions-8MiB.csv @@ -3,5 +3,5 @@ # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x1F0000, -vfs, data, fat, 0x200000, 0x600000, +factory, app, factory, 0x10000, 0x1FB000, +vfs, data, fat, 0x20b000, 0x600000, diff --git a/boards/esp32/MICROLITE_S3/sdkconfig-8m.partition b/boards/esp32/MICROLITE_S3/sdkconfig-8m.partition index 7a31026..7897dbe 100644 --- a/boards/esp32/MICROLITE_S3/sdkconfig-8m.partition +++ b/boards/esp32/MICROLITE_S3/sdkconfig-8m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_S3/partitions-8MiB.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_S3/partitions-8MiB.csv" diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/main/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_S3_SPIRAM/mpconfigboard.cmake index 3633177..6b2346a 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S3_SPIRAM/mpconfigboard.cmake @@ -1,21 +1,18 @@ set(IDF_TARGET esp32s3) set(SDKCONFIG_DEFAULTS - - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram_sx - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.board - ${MICROPY_BOARD_DIR}/sdkconfig-8m.partition + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram_sx + boards/ESP32_GENERIC_S3/sdkconfig.board + ../../../../boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") + set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv b/boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv index aaeda83..aa1f1ed 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv +++ b/boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv @@ -3,6 +3,6 @@ # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x1F0000, -vfs, data, fat, 0x200000, 0x600000, +factory, app, factory, 0x10000, 0x1FB000, +vfs, data, fat, 0x20b000, 0x600000, diff --git a/boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition b/boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition index 8ae18f4..35c24d6 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition +++ b/boards/esp32/MICROLITE_S3_SPIRAM/sdkconfig-8m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/main/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/mpconfigboard.cmake b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/mpconfigboard.cmake index 3633177..034c7fc 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/mpconfigboard.cmake @@ -1,21 +1,22 @@ set(IDF_TARGET esp32s3) set(SDKCONFIG_DEFAULTS - - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram_sx - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.board - ${MICROPY_BOARD_DIR}/sdkconfig-8m.partition + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram_sx + ../../../../boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig.board + ../../../../boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") + set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + if(NOT MICROPY_FROZEN_MANIFEST) set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) endif() diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv index aaeda83..5d6f68d 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv +++ b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/partitions-8MiB.csv @@ -3,6 +3,6 @@ # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x1F0000, -vfs, data, fat, 0x200000, 0x600000, +factory, app, factory, 0x10000, 0x1FB000, +vfs, data, fat, 0x20b000, 0x600000, diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition index 8ae18f4..35c24d6 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition +++ b/boards/esp32/MICROLITE_S3_SPIRAM_CS_GPIO_20/sdkconfig-8m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/main/CMakeLists.txt b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/mpconfigboard.cmake b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/mpconfigboard.cmake index 3633177..c7d4138 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/mpconfigboard.cmake @@ -1,21 +1,22 @@ set(IDF_TARGET esp32s3) set(SDKCONFIG_DEFAULTS - - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram_sx - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_BOARD_DIR}/sdkconfig.board - ${MICROPY_BOARD_DIR}/sdkconfig-8m.partition + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram_sx + ../../../../boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig.board + ../../../../boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") + set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + if(NOT MICROPY_FROZEN_MANIFEST) set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) endif() diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv index aaeda83..aa1f1ed 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv +++ b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/partitions-8MiB.csv @@ -3,6 +3,6 @@ # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 0x1F0000, -vfs, data, fat, 0x200000, 0x600000, +factory, app, factory, 0x10000, 0x1FB000, +vfs, data, fat, 0x20b000, 0x600000, diff --git a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition index 8ae18f4..35c24d6 100644 --- a/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition +++ b/boards/esp32/MICROLITE_S3_SPIRAM_OCTAL/sdkconfig-8m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_S3_SPIRAM/partitions-8MiB.csv" diff --git a/boards/esp32/MICROLITE_SPIRAM/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_SPIRAM/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM/board.json b/boards/esp32/MICROLITE_SPIRAM/board.json new file mode 100644 index 0000000..afb57b2 --- /dev/null +++ b/boards/esp32/MICROLITE_SPIRAM/board.json @@ -0,0 +1,23 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "BLE", + "SPIRAM", + "WiFi" + ], + "id": "esp32spiram", + "images": [ + "esp32_psram.jpg" + ], + "mcu": "esp32", + "product": "ESP32 with SPIRAM", + "thumbnail": "", + "url": "https://www.espressif.com/en/products/modules", + "variants": { + "idf3": "Compiled with IDF 3.x" + }, + "vendor": "Espressif" +} diff --git a/boards/esp32/MICROLITE_SPIRAM/board.md b/boards/esp32/MICROLITE_SPIRAM/board.md new file mode 100644 index 0000000..3b02b90 --- /dev/null +++ b/boards/esp32/MICROLITE_SPIRAM/board.md @@ -0,0 +1,3 @@ +The following files are daily firmware for ESP32-based boards with external SPIRAM (also known as PSRAM). + +This firmware is compiled using ESP-IDF v4.x. Some older releases are also provided that are compiled with ESP-IDF v3.x. diff --git a/boards/esp32/MICROLITE_SPIRAM/main/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_SPIRAM/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.cmake index 61f9e8c..a670cec 100644 --- a/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.cmake @@ -1,20 +1,15 @@ -set (IDF_TARGET esp32) +set(IDF_TARGET esp32) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram - ${MICROPY_BOARD_DIR}/sdkconfig.partition - + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram + ../../../../boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition ) -message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) -if(NOT MICROPY_FROZEN_MANIFEST) - set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) -endif() +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) diff --git a/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h b/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h index 51c1fb2..a5982e4 100644 --- a/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h +++ b/boards/esp32/MICROLITE_SPIRAM/mpconfigboard.h @@ -1,2 +1,2 @@ -#define MICROPY_HW_BOARD_NAME "ESP32 module (microlite-spiram)" +#define MICROPY_HW_BOARD_NAME "ESP32 module (spiram)" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/boards/esp32/MICROLITE_SPIRAM/sdkconfig.board b/boards/esp32/MICROLITE_SPIRAM/sdkconfig.board new file mode 100644 index 0000000..a2859ac --- /dev/null +++ b/boards/esp32/MICROLITE_SPIRAM/sdkconfig.board @@ -0,0 +1,2 @@ +# SPIRAM increases the size of the firmware, use -Os to reduce it again to fit in iram +CONFIG_COMPILER_OPTIMIZATION_SIZE=y diff --git a/boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition b/boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition index 14b9d0d..054a1d5 100644 --- a/boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition +++ b/boards/esp32/MICROLITE_SPIRAM/sdkconfig.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_SPIRAM/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_SPIRAM/custom-partitions.csv" diff --git a/boards/esp32/MICROLITE_SPIRAM_16M/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM_16M/CMakeLists.txt deleted file mode 100644 index 1fdbb5e..0000000 --- a/boards/esp32/MICROLITE_SPIRAM_16M/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM_16M/main/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM_16M/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_SPIRAM_16M/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM_16M/mpconfigboard.cmake b/boards/esp32/MICROLITE_SPIRAM_16M/mpconfigboard.cmake index 4c25929..7f3e840 100644 --- a/boards/esp32/MICROLITE_SPIRAM_16M/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_SPIRAM_16M/mpconfigboard.cmake @@ -1,21 +1,22 @@ set (IDF_TARGET esp32) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_PORT_DIR}/boards/sdkconfig.240mhz - ${MICROPY_PORT_DIR}/boards/sdkconfig.spiram - ${MICROPY_BOARD_DIR}/sdkconfig.16m - ${MICROPY_BOARD_DIR}/sdkconfig-16m.partition - + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.240mhz + boards/sdkconfig.spiram + ../../../../boards/esp32/MICROLITE_SPIRAM/sdkconfig.16m + ../../../../boards/esp32/MICROLITE_SPIRAM/sdkconfig-16m.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake ) +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + if(NOT MICROPY_FROZEN_MANIFEST) set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) endif() diff --git a/boards/esp32/MICROLITE_SPIRAM_16M/sdkconfig-16m.partition b/boards/esp32/MICROLITE_SPIRAM_16M/sdkconfig-16m.partition index fe22392..b31db83 100644 --- a/boards/esp32/MICROLITE_SPIRAM_16M/sdkconfig-16m.partition +++ b/boards/esp32/MICROLITE_SPIRAM_16M/sdkconfig-16m.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE_SPIRAM_16M/custom-partitions-16M.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE_SPIRAM_16M/custom-partitions-16M.csv" diff --git a/boards/esp32/MICROLITE_SPIRAM_CAM/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM_CAM/CMakeLists.txt deleted file mode 100644 index e63712b..0000000 --- a/boards/esp32/MICROLITE_SPIRAM_CAM/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -# Top-level cmake file for building MicroPython on ESP32. -# Nothing in here needs to be customised, it will work for any board. - -cmake_minimum_required(VERSION 3.12) - -# Set the location of MicroPython, the esp32 port, and the board directory. -get_filename_component(PROJECT_DIR "../../.." ABSOLUTE) -set(MICROPY_PORT_DIR ${PROJECT_DIR}/micropython/ports/esp32) -get_filename_component(MICROPY_BOARD_DIR "." ABSOLUTE) - -set(EXTRA_COMPONENT_DIRS ../../../tflm_esp_kernels/components/esp32-camera) - -message (STATUS "EXTRA_COMPONENT_DIRS=${EXTRA_COMPONENT_DIRS}") -message (STATUS "PROJECT_DIR=${PROJECT_DIR}") -message (STATUS "MICROPY_PORT_DIR=${MICROPY_PORT_DIR}") -message (STATUS "MICROPY_BOARD_DIR=${MICROPY_BOARD_DIR}") - -# Define the output sdkconfig so it goes in the build directory. -set(SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig) - -# Include board config; this is expected to set SDKCONFIG_DEFAULTS (among other options). -include(${MICROPY_BOARD_DIR}/mpconfigboard.cmake) - -# Concatenate all sdkconfig files into a combined one for the IDF to use. -file(WRITE ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "") -foreach(SDKCONFIG_DEFAULT ${SDKCONFIG_DEFAULTS}) - file(READ ${SDKCONFIG_DEFAULT} CONTENTS) - file(APPEND ${CMAKE_BINARY_DIR}/sdkconfig.combined.in "${CONTENTS}") -endforeach() -configure_file(${CMAKE_BINARY_DIR}/sdkconfig.combined.in ${CMAKE_BINARY_DIR}/sdkconfig.combined COPYONLY) -set(SDKCONFIG_DEFAULTS ${CMAKE_BINARY_DIR}/sdkconfig.combined) - -# Include main IDF cmake file and define the project. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(micropython) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM_CAM/main/CMakeLists.txt b/boards/esp32/MICROLITE_SPIRAM_CAM/main/CMakeLists.txt deleted file mode 100644 index b8bec33..0000000 --- a/boards/esp32/MICROLITE_SPIRAM_CAM/main/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Include MicroPython ESP32 component. - -get_filename_component(CURRENT_DIR "." ABSOLUTE) - -message(STATUS "microlite/main/cmake: CURRENT_DIR=${CURRENT_DIR}") - -get_filename_component(MICROPY_DIR "../../../../micropython" ABSOLUTE) - - -message (STATUS "microlite/main/cmake: MICROPY_DIR=${MICROPY_DIR}") - -set(PROJECT_DIR ${MICROPY_DIR}/ports/esp32) -include(${PROJECT_DIR}/main/CMakeLists.txt) \ No newline at end of file diff --git a/boards/esp32/MICROLITE_SPIRAM_CAM/mpconfigboard.cmake b/boards/esp32/MICROLITE_SPIRAM_CAM/mpconfigboard.cmake index b0ecb25..eb0afb3 100644 --- a/boards/esp32/MICROLITE_SPIRAM_CAM/mpconfigboard.cmake +++ b/boards/esp32/MICROLITE_SPIRAM_CAM/mpconfigboard.cmake @@ -4,19 +4,21 @@ set (IDF_TARGET esp32) set(CAMERA_TYPE esp32) set(SDKCONFIG_DEFAULTS - ${MICROPY_PORT_DIR}/boards/sdkconfig.base - ${MICROPY_PORT_DIR}/boards/sdkconfig.ble - ${MICROPY_BOARD_DIR}/sdkconfig.esp32cam - ${MICROPY_BOARD_DIR}/sdkconfig.partition + boards/sdkconfig.base + boards/sdkconfig.ble + boards/sdkconfig.spiram + ../../../../boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.esp32cam + ../../../../boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition ) message (STATUS "mpconfigboard.cmake: PROJECT_DIR=${PROJECT_DIR}") set(USER_C_MODULES - ${PROJECT_DIR}/micropython-modules/micropython.cmake - ) - - + ${CMAKE_CURRENT_LIST_DIR}/../../../micropython-modules/micropython.cmake +) + +list(APPEND EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro) + if(NOT MICROPY_FROZEN_MANIFEST) set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) endif() diff --git a/boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition b/boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition index 99d7357..b368d5e 100644 --- a/boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition +++ b/boards/esp32/MICROLITE_SPIRAM_CAM/sdkconfig.partition @@ -3,4 +3,4 @@ #CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_PARTITION_TABLE_CUSTOM=y # move back up from micropython/ports/esp32 to the main project source code -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../boards/esp32/MICROLITE/custom-partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../../../../boards/esp32/MICROLITE/custom-partitions.csv" diff --git a/micropython b/micropython deleted file mode 160000 index 9b48634..0000000 --- a/micropython +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9b486340da22931cde82872f79e1c34db959548b diff --git a/micropython-modules/microlite/assemble-unified-image-esp.sh b/micropython-modules/microlite/assemble-unified-image-esp.sh deleted file mode 100755 index bedc4c1..0000000 --- a/micropython-modules/microlite/assemble-unified-image-esp.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -BASE_DIR=$1 - -if test -z "$BASE_DIR"; then - echo "USAGE: " - exit 1 -fi - - -python3 ${BASE_DIR}/makeimg.py \ -build/sdkconfig \ -build/bootloader/bootloader.bin \ -build/partition_table/partition-table.bin \ -build/micropython.bin \ -build/firmware.bin \ -build/micropython.uf2 diff --git a/micropython-modules/microlite/micropython-error-reporter.cpp b/micropython-modules/microlite/micropython-error-reporter.cpp deleted file mode 100644 index f5819da..0000000 --- a/micropython-modules/microlite/micropython-error-reporter.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of the Tensorflow Micropython Examples Project. - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Michael O'Cleirigh - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#include "micropython-error-reporter.h" - -#include - -namespace microlite { - -int MicropythonErrorReporter::Report(const char* format, ...) { - - va_list args; - va_start(args, format); - MicropythonErrorReporter::Report(format, args); - va_end(args); - - return 0; - -} - -int MicropythonErrorReporter::Report(const char* format, va_list args) { - - static constexpr int kMaxLogLen = 256; - char log_buffer[kMaxLogLen]; - - MicroVsnprintf(log_buffer, kMaxLogLen, format, args); - - mp_printf(MP_PYTHON_PRINTER, log_buffer); - mp_printf(MP_PYTHON_PRINTER, "\n"); - - return 0; - -} - -} // end microlite diff --git a/micropython-modules/microlite/micropython-error-reporter.h b/micropython-modules/microlite/micropython-error-reporter.h deleted file mode 100644 index 900746c..0000000 --- a/micropython-modules/microlite/micropython-error-reporter.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of the Tensorflow Micropython Examples Project. - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Michael O'Cleirigh - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#ifndef MICROPYTHON__ERROR_REPORTER_H_ -#define MICROPYTHON__ERROR_REPORTER_H_ - -#include - -#include "tensorflow/lite/core/api/error_reporter.h" -#include "tensorflow/lite/micro/compatibility.h" -#include "tensorflow/lite/micro/micro_string.h" - -namespace microlite { - -class MicropythonErrorReporter : public tflite::ErrorReporter { - public: - ~MicropythonErrorReporter() override {} - int Report(const char* format, va_list args) override; - int Report(const char* format, ...); - - private: - TF_LITE_REMOVE_VIRTUAL_DELETE -}; - -} // namespace tflite - -extern "C" { - // added the micropython functions used by MicropythonErrorReporter implementation here to prevent the c++ compiler - // from mangling the names which then prevents the linker from working properly. -#include "py/mpprint.h" -int mp_printf(const mp_print_t *print, const char *fmt, ...); -int mp_vprintf(const mp_print_t *print, const char *fmt, va_list args); -} - -#endif diff --git a/micropython-modules/microlite/micropython_esp.cmake b/micropython-modules/microlite/micropython_esp.cmake index 8fc3527..0a4c69a 100644 --- a/micropython-modules/microlite/micropython_esp.cmake +++ b/micropython-modules/microlite/micropython_esp.cmake @@ -1,67 +1,83 @@ -# File to contain all the source list for Espressif boards to build +# +# This file is part of the Tensorflow Micropython Examples Project. +# +# The MIT License (MIT) +# +# Copyright (c) 2021 Michael O'Cleirigh +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +#/ -if(IDF_TARGET STREQUAL "esp32") - set(MICROLITE_PLATFORM "ESP32") -endif() +add_library(microlite INTERFACE) -if(IDF_TARGET STREQUAL "esp32s2") - set(MICROLITE_PLATFORM "ESP32S2") -endif() +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") -if(IDF_TARGET STREQUAL "esp32s3") - set(MICROLITE_PLATFORM "ESP32S3") -endif() -if(IDF_TARGET STREQUAL "esp32c3") - set(MICROLITE_PLATFORM "ESP32C3") -endif() -if (MICROLITE_PLATFORM STREQUAL "ESP32" OR - MICROLITE_PLATFORM STREQUAL "ESP32S3" OR - MICROLITE_PLATFORM STREQUAL "ESP32C3" OR - MICROLITE_PLATFORM STREQUAL "ESP32S2") +target_sources(microlite INTERFACE +# microlite micropython module sources + ${CMAKE_CURRENT_LIST_DIR}/tensorflow-microlite.c + ${CMAKE_CURRENT_LIST_DIR}/audio_frontend.c + ${CMAKE_CURRENT_LIST_DIR}/openmv-libtf.cpp + ${CMAKE_CURRENT_LIST_DIR}/python_ops_resolver.cc +) + +get_filename_component(TENSORFLOW_DIR ${CMAKE_CURRENT_LIST_DIR}/../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro ABSOLUTE) +get_filename_component(TENSORFLOW_THIRD_PARTY_DIR ${CMAKE_CURRENT_LIST_DIR}/../../dependencies/tflite-micro-esp-examples/components/esp-tflite-micro/third_party ABSOLUTE) + +set (FLATBUFFERS_DIR ${TENSORFLOW_THIRD_PARTY_DIR}/flatbuffers/include) +set (GEMMLOWP_DIR ${TENSORFLOW_THIRD_PARTY_DIR}/gemmlowp) +set (KISSFFT_DIR ${TENSORFLOW_THIRD_PARTY_DIR}/kissfft) +set (RUY_DIR ${TENSORFLOW_THIRD_PARTY_DIR}/ruy) + +# ESP32 +target_include_directories(microlite INTERFACE + ${CMAKE_CURRENT_LIST_DIR} + ${TENSORFLOW_DIR} + ${FLATBUFFERS_DIR} + ${GEMMLOWP_DIR} + ${KISSFFT_DIR} + ${RUY_DIR} +) + +target_compile_definitions(microlite INTERFACE + MODULE_MICROLITE_ENABLED=1 + TF_LITE_STATIC_MEMORY=1 + TF_LITE_MCU_DEBUG_LOG + NDEBUG +) + +target_compile_options(microlite INTERFACE + -Wno-error + -Wno-error=float-conversion + -Wno-error=nonnull + -Wno-error=double-promotion + -Wno-error=pointer-arith + -Wno-error=unused-const-variable + -Wno-error=sign-compare + -Wno-error=stringop-overflow + -fno-exceptions + -O3 + -Wno-error=maybe-uninitialized +) + + +target_link_libraries(usermod INTERFACE microlite) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") - set(ESP_NN_DIR "${CMAKE_CURRENT_LIST_DIR}/../../tflm_esp_kernels/components/esp-nn") - set(ESP_NN_SRCS - "${ESP_NN_DIR}/src/activation_functions/esp_nn_relu_ansi.c" - "${ESP_NN_DIR}/src/basic_math/esp_nn_add_ansi.c" - "${ESP_NN_DIR}/src/basic_math/esp_nn_mul_ansi.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_ansi.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_opt.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_ansi.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_opt.c" - "${ESP_NN_DIR}/src/fully_connected/esp_nn_fully_connected_ansi.c" - "${ESP_NN_DIR}/src/softmax/esp_nn_softmax_ansi.c" - "${ESP_NN_DIR}/src/softmax/esp_nn_softmax_opt.c" - "${ESP_NN_DIR}/src/pooling/esp_nn_avg_pool_ansi.c" - "${ESP_NN_DIR}/src/pooling/esp_nn_max_pool_ansi.c" - ) - if(CONFIG_IDF_TARGET_ESP32S3) - list(APPEND ESP_NN_SRCS - "${ESP_NN_DIR}/src/common/esp_nn_common_functions_esp32s3.S" - "${ESP_NN_DIR}/src/common/esp_nn_multiply_by_quantized_mult_esp32s3.S" - "${ESP_NN_DIR}/src/common/esp_nn_multiply_by_quantized_mult_ver1_esp32s3.S" - "${ESP_NN_DIR}/src/activation_functions/esp_nn_relu_s8_esp32s3.S" - "${ESP_NN_DIR}/src/basic_math/esp_nn_add_s8_esp32s3.S" - "${ESP_NN_DIR}/src/basic_math/esp_nn_mul_s8_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_esp32s3.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s8_esp32s3.c" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_s16_mult8_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_s8_mult8_1x1_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_s16_mult4_1x1_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_conv_s8_filter_aligned_input_padded_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s8_mult1_3x3_padded_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult1_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult1_3x3_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult1_3x3_no_pad_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult8_3x3_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult4_esp32s3.S" - "${ESP_NN_DIR}/src/convolution/esp_nn_depthwise_conv_s16_mult8_esp32s3.S" - "${ESP_NN_DIR}/src/fully_connected/esp_nn_fully_connected_s8_esp32s3.S" - "${ESP_NN_DIR}/src/pooling/esp_nn_max_pool_s8_esp32s3.S" - "${ESP_NN_DIR}/src/pooling/esp_nn_avg_pool_s8_esp32s3.S") - endif() - set(ESP_NN_INC ${ESP_NN_DIR}/include ${ESP_NN_DIR}/src/common) -endif() diff --git a/micropython-modules/microlite/micropython.cmake b/micropython-modules/microlite/micropython_rp2.cmake similarity index 100% rename from micropython-modules/microlite/micropython.cmake rename to micropython-modules/microlite/micropython_rp2.cmake diff --git a/micropython-modules/microlite/openmv-libtf-updated.cpp b/micropython-modules/microlite/openmv-libtf-updated.cpp deleted file mode 100644 index 8bc203e..0000000 --- a/micropython-modules/microlite/openmv-libtf-updated.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* This file is part of the OpenMV project. - * Copyright (c) 2013-2019 Ibrahim Abdelkader & Kwabena W. Agyeman - * This work is licensed under the MIT license, see the file LICENSE for details. - */ - -// Copied and modified for using with newer tflite-micro sources - -#include "python_ops_resolver.h" -#include "tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h" -#include "tensorflow/lite/micro/micro_interpreter.h" -#include "tensorflow/lite/schema/schema_generated.h" - -#include "tensorflow-microlite.h" -#include "openmv-libtf.h" -#include "micropython-error-reporter.h" -#include - -extern "C" { - STATIC microlite::MicropythonErrorReporter micro_error_reporter; -/* - Return the index'th tensor - */ - TfLiteTensor *libtf_interpreter_get_input_tensor(microlite_interpreter_obj_t *microlite_interpreter, mp_uint_t index) { - - tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; - - return interpreter->input((size_t)index); - } - - TfLiteTensor *libtf_interpreter_get_output_tensor(microlite_interpreter_obj_t *microlite_interpreter, mp_uint_t index) { - - tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; - - return interpreter->output((size_t)index); - } - - // static int libtf_align_tensor_arena(uint8_t **tensor_arena, size_t *tensor_arena_size) - // { - // tflite::ErrorReporter *error_reporter = µ_error_reporter; - - // error_reporter->Report("Performing Alignment"); - // uint8_t alignment = ((uint8_t) (*tensor_arena)) % 16; - - // if (alignment) { - - // unsigned int fix = 16 - alignment; - - // if ((*tensor_arena_size) < fix) { - // return 1; - // } - - // (*tensor_arena) += fix; - // (*tensor_arena_size) -= fix; - // } - - // return 0; - // } - - - int libtf_interpreter_init(microlite_interpreter_obj_t *microlite_interpreter) { - - tflite::ErrorReporter *error_reporter = µ_error_reporter; - - const tflite::Model *model = tflite::GetModel(microlite_interpreter->model_data->items); - -// if (model->version() != TFLITE_SCHEMA_VERSION) { -// error_reporter->Report("Model provided is schema version is not equal to supported version!"); -// return 1; -// } - - // if (libtf_align_tensor_arena((uint8_t **)microlite_interpreter->tensor_area->items, µlite_interpreter->tensor_area->len)) { - // error_reporter->Report("Align failed!"); - // return 1; - // } - - - microlite_interpreter->tf_error_reporter = (mp_obj_t)error_reporter; - microlite_interpreter->tf_model = (mp_obj_t)model; - - - // tflite::MicroAllocator *allocator = tflite::MicroAllocator::Create( - // (uint8_t*)microlite_interpreter->tensor_area->items, - // microlite_interpreter->tensor_area->len, error_reporter); - - - tflite::PythonOpsResolver op_resolver; - tflite::MicroInterpreter *interpreter = new tflite::MicroInterpreter(model, - op_resolver, - (uint8_t*)microlite_interpreter->tensor_area->items, - microlite_interpreter->tensor_area->len); - - if (interpreter->AllocateTensors() != kTfLiteOk) { - MicroPrintf("AllocateTensors() failed!"); - return 1; - } - - microlite_interpreter->tf_interpreter = (mp_obj_t)interpreter; - - return 0; - } - - int libtf_interpreter_invoke(microlite_interpreter_obj_t *microlite_interpreter) - { - tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; - - mp_call_function_1(microlite_interpreter->input_callback, microlite_interpreter); - - if (interpreter->Invoke() != kTfLiteOk) { - MicroPrintf("Invoke() failed!"); - return 1; - } - - mp_call_function_1(microlite_interpreter->output_callback, microlite_interpreter); - return 0; - } -} diff --git a/micropython-modules/microlite/openmv-libtf.cpp b/micropython-modules/microlite/openmv-libtf.cpp index dca0df3..3c2c6be 100644 --- a/micropython-modules/microlite/openmv-libtf.cpp +++ b/micropython-modules/microlite/openmv-libtf.cpp @@ -3,22 +3,17 @@ * This work is licensed under the MIT license, see the file LICENSE for details. */ -#include "tensorflow/lite/micro/all_ops_resolver.h" -#include "tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h" +// Copied and modified for using with newer tflite-micro sources + +#include "python_ops_resolver.h" #include "tensorflow/lite/micro/micro_interpreter.h" #include "tensorflow/lite/schema/schema_generated.h" #include "tensorflow-microlite.h" #include "openmv-libtf.h" -#include "micropython-error-reporter.h" #include extern "C" { - - STATIC microlite::MicropythonErrorReporter micro_error_reporter; - - - /* Return the index'th tensor */ @@ -27,11 +22,10 @@ extern "C" { tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; return interpreter->input((size_t)index); - } TfLiteTensor *libtf_interpreter_get_output_tensor(microlite_interpreter_obj_t *microlite_interpreter, mp_uint_t index) { - + tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; return interpreter->output((size_t)index); @@ -62,8 +56,6 @@ extern "C" { int libtf_interpreter_init(microlite_interpreter_obj_t *microlite_interpreter) { - tflite::ErrorReporter *error_reporter = µ_error_reporter; - const tflite::Model *model = tflite::GetModel(microlite_interpreter->model_data->items); // if (model->version() != TFLITE_SCHEMA_VERSION) { @@ -77,22 +69,22 @@ extern "C" { // } - microlite_interpreter->tf_error_reporter = (mp_obj_t)error_reporter; microlite_interpreter->tf_model = (mp_obj_t)model; // tflite::MicroAllocator *allocator = tflite::MicroAllocator::Create( - // (uint8_t*)microlite_interpreter->tensor_area->items, + // (uint8_t*)microlite_interpreter->tensor_area->items, // microlite_interpreter->tensor_area->len, error_reporter); - tflite::AllOpsResolver resolver; - tflite::MicroInterpreter *interpreter = new tflite::MicroInterpreter(model, - resolver, - (uint8_t*)microlite_interpreter->tensor_area->items, + + tflite::PythonOpsResolver op_resolver; + tflite::MicroInterpreter *interpreter = new tflite::MicroInterpreter(model, + op_resolver, + (uint8_t*)microlite_interpreter->tensor_area->items, microlite_interpreter->tensor_area->len); if (interpreter->AllocateTensors() != kTfLiteOk) { - error_reporter->Report("AllocateTensors() failed!"); + MicroPrintf("AllocateTensors() failed!"); return 1; } @@ -103,21 +95,16 @@ extern "C" { int libtf_interpreter_invoke(microlite_interpreter_obj_t *microlite_interpreter) { - - tflite::ErrorReporter *error_reporter = (tflite::ErrorReporter *)microlite_interpreter->tf_error_reporter; - tflite::MicroInterpreter *interpreter = (tflite::MicroInterpreter *)microlite_interpreter->tf_interpreter; mp_call_function_1(microlite_interpreter->input_callback, microlite_interpreter); if (interpreter->Invoke() != kTfLiteOk) { - error_reporter->Report("Invoke() failed!"); + MicroPrintf("Invoke() failed!"); return 1; } mp_call_function_1(microlite_interpreter->output_callback, microlite_interpreter); - return 0; } - } diff --git a/micropython-modules/microlite/tensorflow-microlite.c b/micropython-modules/microlite/tensorflow-microlite.c index 49f4d44..24d9da3 100644 --- a/micropython-modules/microlite/tensorflow-microlite.c +++ b/micropython-modules/microlite/tensorflow-microlite.c @@ -70,7 +70,7 @@ STATIC mp_obj_t tensor_get_tensor_type (mp_obj_t self_in, mp_obj_t index_obj) { TfLiteTensor * tensor = (TfLiteTensor *)self->tf_tensor; - char *type = TfLiteTypeGetName(tensor->type); + const char *type = TfLiteTypeGetName(tensor->type); return mp_obj_new_str(type, strlen(type)); @@ -212,13 +212,13 @@ STATIC const mp_rom_map_elem_t tensor_locals_dict_table[] = { STATIC MP_DEFINE_CONST_DICT(tensor_locals_dict, tensor_locals_dict_table); -const mp_obj_type_t microlite_tensor_type = { - { &mp_type_type }, - .name = MP_QSTR_tensor, - .print = tensor_print, - .locals_dict = (mp_obj_dict_t*)&tensor_locals_dict, -}; - +MP_DEFINE_CONST_OBJ_TYPE( + microlite_tensor_type, + MP_QSTR_tensor, + MP_TYPE_FLAG_NONE, + print, tensor_print, + locals_dict,&tensor_locals_dict +); // audio_frontend STATIC mp_obj_t af_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { @@ -261,13 +261,14 @@ STATIC const mp_rom_map_elem_t audio_frontend_locals_dict_table[] = { STATIC MP_DEFINE_CONST_DICT(audio_frontend_locals_dict, audio_frontend_locals_dict_table); -const mp_obj_type_t microlite_audio_frontend_type = { - { &mp_type_type }, - .name = MP_QSTR_audio_frontend, - .make_new = af_make_new, - .print = af_print, - .locals_dict = (mp_obj_dict_t*)&audio_frontend_locals_dict, -}; +MP_DEFINE_CONST_OBJ_TYPE( + microlite_audio_frontend_type, + MP_QSTR_audio_frontend, + MP_TYPE_FLAG_NONE, + make_new, af_make_new, + print, af_print, + locals_dict, &audio_frontend_locals_dict +); // - microlite interpreter @@ -411,14 +412,14 @@ STATIC const mp_rom_map_elem_t interpreter_locals_dict_table[] = { STATIC MP_DEFINE_CONST_DICT(interpreter_locals_dict, interpreter_locals_dict_table); -const mp_obj_type_t microlite_interpreter_type = { - { &mp_type_type }, - .name = MP_QSTR_interpreter, - .print = interpreter_print, - .make_new = interpreter_make_new, - .locals_dict = (mp_obj_dict_t*)&interpreter_locals_dict, -}; - +MP_DEFINE_CONST_OBJ_TYPE( + microlite_interpreter_type, + MP_QSTR_interpreter, + MP_TYPE_FLAG_NONE, + print, interpreter_print, + make_new, interpreter_make_new, + locals_dict, &interpreter_locals_dict +); // main microlite module @@ -451,4 +452,3 @@ const mp_obj_module_t microlite_cmodule = { MP_REGISTER_MODULE(MP_QSTR_microlite, microlite_cmodule); // #endif - diff --git a/micropython-modules/micropython.cmake b/micropython-modules/micropython.cmake index 656f0e2..9ab6489 100644 --- a/micropython-modules/micropython.cmake +++ b/micropython-modules/micropython.cmake @@ -24,14 +24,26 @@ # THE SOFTWARE. # -include(${CMAKE_CURRENT_LIST_DIR}/microlite/micropython.cmake) +include(CMakePrintHelpers) + +cmake_print_variables(CMAKE_CURRENT_LIST_DIR) + +if (PICO_SDK_PATH) + include(${CMAKE_CURRENT_LIST_DIR}/microlite/micropython_rp2.cmake) +endif() + +if(IDF_TARGET) + include(${CMAKE_CURRENT_LIST_DIR}/microlite/micropython_esp.cmake) +endif() + # disabled. will be incorporated into microlite in #36 # include(${CMAKE_CURRENT_LIST_DIR}/audio_frontend/micropython.cmake) -include(${CMAKE_CURRENT_LIST_DIR}/../micropython-ulab/code/micropython.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../dependencies/micropython-ulab/code/micropython.cmake) # the camera driver -include(${CMAKE_CURRENT_LIST_DIR}/micropython-camera-driver/micropython.cmake) +#include(${CMAKE_CURRENT_LIST_DIR}/../dependencies/micropython-camera-driver/src/micropython.cmake) + diff --git a/micropython-ulab b/micropython-ulab deleted file mode 160000 index 57de23c..0000000 --- a/micropython-ulab +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 57de23c1fb434ba99aaafe1d00bd77d5cdf5d66b diff --git a/scripts/assemble-unified-image-esp.sh b/scripts/assemble-unified-image-esp.sh new file mode 100755 index 0000000..e2e3aea --- /dev/null +++ b/scripts/assemble-unified-image-esp.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +BASE_DIR=$1 +BUILD_DIR=$2 + +if test -z "$BASE_DIR"; then + echo "USAGE: " + exit 1 +fi + +if test -z "$BUILD_DIR"; then + echo "USAGE: " + exit 1 +fi + +python3 ${BASE_DIR}/makeimg.py \ +${BASE_DIR}/build-${BUILD_DIR}/sdkconfig \ +${BASE_DIR}/build-${BUILD_DIR}/bootloader/bootloader.bin \ +${BASE_DIR}/build-${BUILD_DIR}/partition_table/partition-table.bin \ +${BASE_DIR}/build-${BUILD_DIR}/micropython.bin \ +${BASE_DIR}/build-${BUILD_DIR}/firmware.bin \ +${BASE_DIR}/build-${BUILD_DIR}/micropython.uf2 diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 0000000..41d1287 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,84 @@ +#!bin/bash + +MAKEOPTS= + +# if which nproc > /dev/null; then +# MAKEOPTS="-j$(nproc)" +# else +# MAKEOPTS="-j$(sysctl -n hw.ncpu)" +# fi + +function prepare_dependencies { + + rm -rf dependencies + + mkdir dependencies + + cd dependencies + + ULAB_VERSION=6.0.12 + MICRO_PYTHON_VERSION=v1.21.0 + #MICRO_PYTHON_VERSION=master + MICROPYTHON_ESP32_CAMERA_DRIVER=master + ESP32_TFLITE_VERSION=v1.0.0 + + # ulab + git clone --depth 1 https://github.com/v923z/micropython-ulab --branch $ULAB_VERSION + + # micropython + git clone --depth 1 https://github.com/micropython/micropython --branch $MICRO_PYTHON_VERSION + + # esp32 - https://github.com/mocleiri/tensorflow-micropython-examples.git + git clone --depth 1 https://github.com/espressif/tflite-micro-esp-examples --branch $ESP32_TFLITE_VERSION + + # esp32-camera actually comes through esp package manager but we need it for the headers + git clone --depth 1 https://github.com/espressif/esp32-camera --branch master + + # micropypthon camera driver + git clone --depth 1 https://github.com/lemariva/micropython-camera-driver --branch $MICROPYTHON_ESP32_CAMERA_DRIVER + + # other platforms - get tflite-micro and run create_tflm_tree.py + # refer to + git clone --depth 1 https://github.com/tensorflow/tflite-micro + + # build : + # $ cd dependencies/micropython/ports/esp32 + # $ + # cd micropython + # git submodule init + # git submodule update --recursive + + # cd ../.. + cd .. +} + +function build_esp32 { + BOARD=$1 + if test -z "$BOARD"; then + echo "USAGE: build_esp32 " + exit 1; + fi + pwd + python --version + which python + # xargs --show-limits + source esp-idf/export.sh + cd dependencies/micropython + make ${MAKEOPTS} -C mpy-cross + cd ports/esp32 + make ${MAKEOPTS} submodules + + PWD=$(pwd) + echo "make ${MAKEOPTS} V=1 BOARD_DIR=$(pwd)/../../../../boards/esp32/${BOARD} BOARD=${BOARD} FROZEN_MANIFEST=$PWD/boards/manifest.py" + + make ${MAKEOPTS} V=1 \ + BOARD_DIR=$(pwd)/../../../../boards/esp32/${BOARD} \ + BOARD=${BOARD} + + # creates the build into dependencies/micropython/ports/esp32/build-MICROLITE + # find build-${BOARD} -ls + cd ../../../.. +} + + + diff --git a/micropython-modules/microlite/prepare-tflm-esp.sh b/scripts/prepare-tflm-esp.sh similarity index 100% rename from micropython-modules/microlite/prepare-tflm-esp.sh rename to scripts/prepare-tflm-esp.sh diff --git a/micropython-modules/microlite/prepare-tflm-rp2.sh b/scripts/prepare-tflm-rp2.sh similarity index 100% rename from micropython-modules/microlite/prepare-tflm-rp2.sh rename to scripts/prepare-tflm-rp2.sh diff --git a/micropython-modules/microlite/prepare-tflm-stm32.sh b/scripts/prepare-tflm-stm32.sh similarity index 100% rename from micropython-modules/microlite/prepare-tflm-stm32.sh rename to scripts/prepare-tflm-stm32.sh diff --git a/micropython-modules/microlite/prepare-tflm-unix.sh b/scripts/prepare-tflm-unix.sh similarity index 100% rename from micropython-modules/microlite/prepare-tflm-unix.sh rename to scripts/prepare-tflm-unix.sh diff --git a/tensorflow b/tensorflow deleted file mode 160000 index 626501f..0000000 --- a/tensorflow +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 626501f6010ce6e073bed0cdec70b692e5d38e11 diff --git a/tflm_esp_kernels b/tflm_esp_kernels deleted file mode 160000 index 2690c7a..0000000 --- a/tflm_esp_kernels +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2690c7a7a27164eea6bd7d38e6fec979e7d1b4ec