From c9f5a28cd41ad5808dc6872fcc2afa6bfba4e8c9 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Wed, 5 Mar 2025 11:52:34 +0000 Subject: [PATCH] CI: Refactor to match our other tooling. Retarget pimoroni-pico to feature/picovector2-and-layers. --- .github/workflows/micropython.yml | 142 +++++++----------- .gitignore | 39 +++++ boards/common.cmake | 37 +++++ .../board => boards}/manifest_pico2.py | 3 +- .../pimoroni_pico_plus2}/board.json | 0 .../pimoroni_pico_plus2}/manifest.py | 0 .../pimoroni_pico_plus2}/mpconfigboard.cmake | 0 .../pimoroni_pico_plus2}/mpconfigboard.h | 0 .../pimoroni_pico_plus2w_rp2350.h | 0 .../pimoroni_pico_plus2}/pins.csv | 0 boards/pimoroni_pico_plus2/usermodules.cmake | 3 + .../pimoroni_plasma2350}/board.json | 0 .../pimoroni_plasma2350}/manifest.py | 0 .../pimoroni_plasma2350}/mpconfigboard.cmake | 0 .../pimoroni_plasma2350}/mpconfigboard.h | 0 .../pimoroni_plasma2350w.h | 0 .../pimoroni_plasma2350}/pins.csv | 0 boards/pimoroni_plasma2350/usermodules.cmake | 3 + .../pimoroni_tiny2350}/board.json | 0 .../pimoroni_tiny2350}/manifest.py | 0 .../pimoroni_tiny2350}/mpconfigboard.cmake | 0 .../pimoroni_tiny2350}/mpconfigboard.h | 0 boards/pimoroni_tiny2350/usermodules.cmake | 3 + .../rpi_pico2}/manifest.py | 0 .../rpi_pico2}/mpconfigboard.cmake | 0 .../rpi_pico2}/mpconfigboard.h | 0 .../RPI_PICO2 => boards/rpi_pico2}/pins.csv | 0 boards/rpi_pico2/usermodules.cmake | 3 + .../rpi_pico2_w}/manifest.py | 0 .../rpi_pico2_w}/mpconfigboard.cmake | 0 .../rpi_pico2_w}/mpconfigboard.h | 0 .../rpi_pico2_w}/pins.csv | 0 boards/rpi_pico2_w/usermodules.cmake | 3 + .../rpi_pico2b}/board.json | 0 .../rpi_pico2b}/manifest.py | 0 .../rpi_pico2b}/mpconfigboard.cmake | 0 .../rpi_pico2b}/mpconfigboard.h | 0 .../RPI_PICO2B => boards/rpi_pico2b}/pico2b.h | 0 .../RPI_PICO2B => boards/rpi_pico2b}/pins.csv | 0 boards/rpi_pico2b/usermodules.cmake | 3 + .../usermod-common.cmake | 0 ci/micropython.sh | 113 +++++++++++--- .../pico_jumbo/big_blink.py | 0 .../pico_jumbo/big_button.py | 0 .../pico_jumbo/big_toggle.py | 0 .../pico_plus_2/breakouts/bme68x-breakout.py | 0 .../pico_plus_2/breakouts/lte-astronauts.py | 0 .../pico_plus_2/breakouts/lte-breakout.py | 0 .../pico_plus_2/breakouts/lte-catfacts.py | 0 .../breakouts/rm2-breakout-catfacts.py | 0 .../pico_plus_2/breakouts/scd41-breakout.py | 0 .../pico_plus_2/breakouts/secrets.py | 0 .../pico_plus_2/button.py | 0 .../pico_plus_2/onboard_led.py | 0 .../pico_plus_2_w/astronauts.py | 0 .../pico_plus_2_w/button.py | 0 .../pico_plus_2_w/catfacts.py | 0 .../pico_plus_2_w/onboard_led.py | 0 .../pico_plus_2_w/secrets.py | 0 .../breakouts/rm2-breakout-catfacts.py | 0 .../plasma_2350/breakouts/secrets.py | 0 .../breakouts/trackball-breakout.py | 0 .../plasma_2350/button_control.py | 0 .../plasma_2350/buttons.py | 0 .../plasma_2350/rainbow.py | 0 .../plasma_2350/rgb_led.py | 0 .../plasma_2350/single_colour.py | 0 .../plasma_2350_w/cheerlights.py | 0 .../plasma_2350_w/html/index.html | 0 .../plasma_2350_w/secrets.py | 0 .../plasma_2350_w/webpage.py | 0 .../tiny_2350/breakouts/bme688-breakout.py | 0 .../tiny_2350/breakouts/scd41-breakout.py | 0 .../tiny_2350/buttons.py | 0 .../tiny_2350/rgb_led.py | 0 75 files changed, 246 insertions(+), 106 deletions(-) create mode 100644 .gitignore create mode 100644 boards/common.cmake rename {micropython/board => boards}/manifest_pico2.py (60%) rename {micropython/board/PIMORONI_PICO_PLUS2 => boards/pimoroni_pico_plus2}/board.json (100%) rename {micropython/board/PIMORONI_PICO_PLUS2 => boards/pimoroni_pico_plus2}/manifest.py (100%) rename {micropython/board/PIMORONI_PICO_PLUS2 => boards/pimoroni_pico_plus2}/mpconfigboard.cmake (100%) rename {micropython/board/PIMORONI_PICO_PLUS2 => boards/pimoroni_pico_plus2}/mpconfigboard.h (100%) rename {micropython/board/PIMORONI_PICO_PLUS2 => boards/pimoroni_pico_plus2}/pimoroni_pico_plus2w_rp2350.h (100%) rename {micropython/board/PIMORONI_PICO_PLUS2 => boards/pimoroni_pico_plus2}/pins.csv (100%) create mode 100644 boards/pimoroni_pico_plus2/usermodules.cmake rename {micropython/board/PIMORONI_PLASMA2350 => boards/pimoroni_plasma2350}/board.json (100%) rename {micropython/board/PIMORONI_PLASMA2350 => boards/pimoroni_plasma2350}/manifest.py (100%) rename {micropython/board/PIMORONI_PLASMA2350 => boards/pimoroni_plasma2350}/mpconfigboard.cmake (100%) rename {micropython/board/PIMORONI_PLASMA2350 => boards/pimoroni_plasma2350}/mpconfigboard.h (100%) rename {micropython/board/PIMORONI_PLASMA2350 => boards/pimoroni_plasma2350}/pimoroni_plasma2350w.h (100%) rename {micropython/board/PIMORONI_PLASMA2350 => boards/pimoroni_plasma2350}/pins.csv (100%) create mode 100644 boards/pimoroni_plasma2350/usermodules.cmake rename {micropython/board/PIMORONI_TINY2350 => boards/pimoroni_tiny2350}/board.json (100%) rename {micropython/board/PIMORONI_TINY2350 => boards/pimoroni_tiny2350}/manifest.py (100%) rename {micropython/board/PIMORONI_TINY2350 => boards/pimoroni_tiny2350}/mpconfigboard.cmake (100%) rename {micropython/board/PIMORONI_TINY2350 => boards/pimoroni_tiny2350}/mpconfigboard.h (100%) create mode 100644 boards/pimoroni_tiny2350/usermodules.cmake rename {micropython/board/RPI_PICO2 => boards/rpi_pico2}/manifest.py (100%) rename {micropython/board/RPI_PICO2 => boards/rpi_pico2}/mpconfigboard.cmake (100%) rename {micropython/board/RPI_PICO2 => boards/rpi_pico2}/mpconfigboard.h (100%) rename {micropython/board/RPI_PICO2 => boards/rpi_pico2}/pins.csv (100%) create mode 100644 boards/rpi_pico2/usermodules.cmake rename {micropython/board/RPI_PICO2_W => boards/rpi_pico2_w}/manifest.py (100%) rename {micropython/board/RPI_PICO2_W => boards/rpi_pico2_w}/mpconfigboard.cmake (100%) rename {micropython/board/RPI_PICO2_W => boards/rpi_pico2_w}/mpconfigboard.h (100%) rename {micropython/board/RPI_PICO2_W => boards/rpi_pico2_w}/pins.csv (100%) create mode 100644 boards/rpi_pico2_w/usermodules.cmake rename {micropython/board/RPI_PICO2B => boards/rpi_pico2b}/board.json (100%) rename {micropython/board/RPI_PICO2B => boards/rpi_pico2b}/manifest.py (100%) rename {micropython/board/RPI_PICO2B => boards/rpi_pico2b}/mpconfigboard.cmake (100%) rename {micropython/board/RPI_PICO2B => boards/rpi_pico2b}/mpconfigboard.h (100%) rename {micropython/board/RPI_PICO2B => boards/rpi_pico2b}/pico2b.h (100%) rename {micropython/board/RPI_PICO2B => boards/rpi_pico2b}/pins.csv (100%) create mode 100644 boards/rpi_pico2b/usermodules.cmake rename micropython/micropython-pico2.cmake => boards/usermod-common.cmake (100%) rename {micropython/examples => examples}/pico_jumbo/big_blink.py (100%) rename {micropython/examples => examples}/pico_jumbo/big_button.py (100%) rename {micropython/examples => examples}/pico_jumbo/big_toggle.py (100%) rename {micropython/examples => examples}/pico_plus_2/breakouts/bme68x-breakout.py (100%) rename {micropython/examples => examples}/pico_plus_2/breakouts/lte-astronauts.py (100%) rename {micropython/examples => examples}/pico_plus_2/breakouts/lte-breakout.py (100%) rename {micropython/examples => examples}/pico_plus_2/breakouts/lte-catfacts.py (100%) rename {micropython/examples => examples}/pico_plus_2/breakouts/rm2-breakout-catfacts.py (100%) rename {micropython/examples => examples}/pico_plus_2/breakouts/scd41-breakout.py (100%) rename {micropython/examples => examples}/pico_plus_2/breakouts/secrets.py (100%) rename {micropython/examples => examples}/pico_plus_2/button.py (100%) rename {micropython/examples => examples}/pico_plus_2/onboard_led.py (100%) rename {micropython/examples => examples}/pico_plus_2_w/astronauts.py (100%) rename {micropython/examples => examples}/pico_plus_2_w/button.py (100%) rename {micropython/examples => examples}/pico_plus_2_w/catfacts.py (100%) rename {micropython/examples => examples}/pico_plus_2_w/onboard_led.py (100%) rename {micropython/examples => examples}/pico_plus_2_w/secrets.py (100%) rename {micropython/examples => examples}/plasma_2350/breakouts/rm2-breakout-catfacts.py (100%) rename {micropython/examples => examples}/plasma_2350/breakouts/secrets.py (100%) rename {micropython/examples => examples}/plasma_2350/breakouts/trackball-breakout.py (100%) rename {micropython/examples => examples}/plasma_2350/button_control.py (100%) rename {micropython/examples => examples}/plasma_2350/buttons.py (100%) rename {micropython/examples => examples}/plasma_2350/rainbow.py (100%) rename {micropython/examples => examples}/plasma_2350/rgb_led.py (100%) rename {micropython/examples => examples}/plasma_2350/single_colour.py (100%) rename {micropython/examples => examples}/plasma_2350_w/cheerlights.py (100%) rename {micropython/examples => examples}/plasma_2350_w/html/index.html (100%) rename {micropython/examples => examples}/plasma_2350_w/secrets.py (100%) rename {micropython/examples => examples}/plasma_2350_w/webpage.py (100%) rename {micropython/examples => examples}/tiny_2350/breakouts/bme688-breakout.py (100%) rename {micropython/examples => examples}/tiny_2350/breakouts/scd41-breakout.py (100%) rename {micropython/examples => examples}/tiny_2350/buttons.py (100%) rename {micropython/examples => examples}/tiny_2350/rgb_led.py (100%) diff --git a/.github/workflows/micropython.yml b/.github/workflows/micropython.yml index 8fcfe7d..eefbda6 100644 --- a/.github/workflows/micropython.yml +++ b/.github/workflows/micropython.yml @@ -6,46 +6,34 @@ on: release: types: [created] -env: - MICROPYTHON_VERSION: feature/pico2_w_2025 - MICROPYTHON_FLAVOUR: pimoroni - PIMORONI_PICO_VERSION: main - jobs: build: - name: ${{ matrix.name }} (${{ matrix.board }}) - runs-on: ubuntu-20.04 + name: MicroPython ${{ matrix.name }} + runs-on: ubuntu-24.04 continue-on-error: true strategy: matrix: include: - - name: pico2 - board: RPI_PICO2 - - name: pico2_w - board: RPI_PICO2_W - - name: pico2b_rp2350 - board: RPI_PICO2B - - name: plasma2350 - board: PIMORONI_PLASMA2350 - - name: tiny2350 - board: PIMORONI_TINY2350 - - name: pico_plus2_rp2350 - board: PIMORONI_PICO_PLUS2 + - name: rpi_pico2 + - name: rpi_pico2_w + - name: rpi_pico2b + - name: pimoroni_plasma2350 + - name: pimoroni_tiny2350 + - name: pimoroni_pico_plus2 env: # MicroPython version will be contained in github.event.release.tag_name for releases - RELEASE_FILE: ${{ matrix.name }}-${{ github.event.release.tag_name || github.sha }}-pimoroni-micropython - PIMORONI_PICO_DIR: "${{ github.workspace }}/pimoroni-pico" - MICROPY_BOARD_DIR: "${{ github.workspace }}/pimoroni-pico-rp2350-${{ github.sha }}/micropython/board/${{ matrix.BOARD }}" - USER_C_MODULES: "${{ github.workspace }}/pimoroni-pico-rp2350-${{ github.sha }}/micropython/micropython-pico2.cmake" - TAG_OR_SHA: ${{ github.event.release.tag_name || github.sha }} - MICROPY_BOARD: ${{ matrix.board }} - MICROPY_BOARD_VARIANT: ${{ matrix.variant }} - BOARD_NAME: ${{ matrix.name }} - BUILD_TOOLS: pimoroni-pico-rp2350-${{ github.sha }}/ci/micropython.sh + RELEASE_FILE: ${{ matrix.name }}-${{ github.event.release.tag_name || github.sha }}-micropython + CI_PROJECT_ROOT: ${{ github.workspace }}/src-${{ github.sha }} + CI_BUILD_ROOT: ${{ github.workspace }} + CI_USE_ENV: 1 steps: - - name: Compiler Cache + - name: Compiler Cache Fixup + run: | + mkdir -p /home/runner/.ccache + + - name: "CCache: Restore saved cache" uses: actions/cache@v4 with: path: /home/runner/.ccache @@ -54,76 +42,62 @@ jobs: ccache-micropython-${{ matrix.name }}-${{ github.ref }} ccache-micropython-${{ matrix.name }}- - - uses: actions/checkout@v4 + - name: "Checkout Project" + uses: actions/checkout@v4 with: submodules: true - path: pimoroni-pico-rp2350-${{ github.sha }} + path: ${{ env.CI_PROJECT_ROOT }} - - uses: actions/checkout@v4 - with: - repository: pimoroni/pimoroni-pico - ref: ${{env.PIMORONI_PICO_VERSION}} - submodules: true - path: pimoroni-pico - - - name: Install Arm GNU Toolchain (arm-none-eabi-gcc) + - name: "Install Arm GNU Toolchain (arm-none-eabi-gcc)" uses: carlosperate/arm-none-eabi-gcc-action@v1 with: release: '13.3.Rel1' - - name: Install CCache - run: | - source $BUILD_TOOLS - apt_install_build_deps - - - name: Checkout MicroPython & Submodules - run: | - source $BUILD_TOOLS - micropython_clone - - - name: "Py_Decl: Checkout py_decl" - uses: actions/checkout@v4 - with: - repository: gadgetoid/py_decl - ref: v0.0.2 - path: py_decl - - - name: Build MPY Cross - run: | - source $BUILD_TOOLS - micropython_build_mpy_cross - - - name: Configure MicroPython + - name: "Prepare tools & dependencies" shell: bash run: | - source $BUILD_TOOLS + source $CI_PROJECT_ROOT/ci/micropython.sh && ci_debug + mkdir -p $CI_BUILD_ROOT + ci_apt_install_build_deps + ci_prepare_all + + - name: "MicroPython: Configure" + shell: bash + run: | + source $CI_PROJECT_ROOT/ci/micropython.sh && ci_debug micropython_version - cmake_configure + ci_cmake_configure ${{ matrix.name }} - - name: Build MicroPython + - name: "MicroPython: Build" shell: bash run: | - source $BUILD_TOOLS - cmake_build + source $CI_PROJECT_ROOT/ci/micropython.sh && ci_debug + python3 -m venv "$CI_BUILD_ROOT/.dir2uf2" + source "$CI_BUILD_ROOT/.dir2uf2/bin/activate" + ci_cmake_build ${{ matrix.name }} + mv "$CI_BUILD_ROOT/${{ matrix.name }}.uf2" "$CI_BUILD_ROOT/$RELEASE_FILE.uf2" + mv "$CI_BUILD_ROOT/${{ matrix.name }}-with-filesystem.uf2" "$CI_BUILD_ROOT/$RELEASE_FILE-with-filesystem.uf2" - - name: "Py_Decl: Verify UF2" - shell: bash - run: | - python3 py_decl/py_decl.py --to-json --verify build-${{ matrix.name }}/${{ env.RELEASE_FILE }}.uf2 - - - name: Store .uf2 as artifact + - name: "Artifacts: Upload .uf2" uses: actions/upload-artifact@v4 with: name: ${{ env.RELEASE_FILE }}.uf2 - path: build-${{ matrix.name }}/${{ env.RELEASE_FILE }}.uf2 - - - name: Upload .uf2 - if: github.event_name == 'release' - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + path: ${{ env.CI_BUILD_ROOT }}/${{ env.RELEASE_FILE }}.uf2 + + - name: "Artifacts: Upload .uf2 (With Filesystem)" + uses: actions/upload-artifact@v4 with: - asset_path: build-${{ matrix.name }}/firmware.uf2 - upload_url: ${{ github.event.release.upload_url }} - asset_name: ${{ env.RELEASE_FILE }}.uf2 - asset_content_type: application/octet-stream \ No newline at end of file + name: ${{ env.RELEASE_FILE }}-with-filesystem.uf2 + path: ${{ env.CI_BUILD_ROOT }}/${{ env.RELEASE_FILE }}-with-filesystem.uf2 + + - name: "Release: Upload .uf2" + if: github.event_name == 'release' + uses: softprops/action-gh-release@v1 + with: + files: ${{ env.CI_BUILD_ROOT }}/${{ env.RELEASE_FILE }}.uf2 + + - name: "Release: Upload .uf2 (With Filesystem)" + if: github.event_name == 'release' + uses: softprops/action-gh-release@v1 + with: + files: ${{ env.CI_BUILD_ROOT }}/${{ env.RELEASE_FILE }}-with-filesystem.uf2 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..920b6f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +**/build +.vscode + +# Apple filesystem cruft +.DS_Store +venv \ No newline at end of file diff --git a/boards/common.cmake b/boards/common.cmake new file mode 100644 index 0000000..50bac0f --- /dev/null +++ b/boards/common.cmake @@ -0,0 +1,37 @@ +# Make sure we get our VirtualEnv Python +set(Python_FIND_VIRTUALENV "FIRST") +set(Python_FIND_UNVERSIONED_NAMES "FIRST") +set(Python_FIND_STRATEGY "LOCATION") +find_package (Python COMPONENTS Interpreter Development) + +message("dir2uf2/py_decl: Using Python ${Python_EXECUTABLE}") +MESSAGE("dir2uf2/py_decl: Using pimoroni tools dir ${PIMORONI_TOOLS_DIR}") + +# Convert supplies paths to absolute, for a quieter life +get_filename_component(PIMORONI_UF2_MANIFEST ${PIMORONI_UF2_MANIFEST} REALPATH) +get_filename_component(PIMORONI_UF2_DIR ${PIMORONI_UF2_DIR} REALPATH) + +if (EXISTS "${PIMORONI_TOOLS_DIR}/py_decl/py_decl.py") + MESSAGE("py_decl: py_decl.py found, will verify uf2.") + add_custom_target("${MICROPY_TARGET}-verify" ALL + COMMAND ${Python_EXECUTABLE} "${PIMORONI_TOOLS_DIR}/py_decl/py_decl.py" --to-json --verify "${CMAKE_CURRENT_BINARY_DIR}/${MICROPY_TARGET}.uf2" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "pydecl: Verifying ${MICROPY_TARGET}.uf2" + DEPENDS ${MICROPY_TARGET} + ) +endif() + +if (EXISTS "${PIMORONI_TOOLS_DIR}/dir2uf2/dir2uf2" AND EXISTS "${PIMORONI_UF2_MANIFEST}" AND EXISTS "${PIMORONI_UF2_DIR}") + MESSAGE("dir2uf2: Using manifest ${PIMORONI_UF2_MANIFEST}.") + MESSAGE("dir2uf2: Using root ${PIMORONI_UF2_DIR}.") + add_custom_target("${MICROPY_TARGET}-with-filesystem.uf2" ALL + COMMAND ${Python_EXECUTABLE} "${PIMORONI_TOOLS_DIR}/dir2uf2/dir2uf2" --fs-compact --sparse --append-to "${MICROPY_TARGET}.uf2" --manifest "${PIMORONI_UF2_MANIFEST}" --filename with-filesystem.uf2 "${PIMORONI_UF2_DIR}" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "dir2uf2: Appending filesystem to ${MICROPY_TARGET}.uf2." + DEPENDS ${MICROPY_TARGET} + DEPENDS "${MICROPY_TARGET}-verify" + ) +else() + MESSAGE("dir2uf2: Could not find manifest ${PIMORONI_UF2_MANIFEST}") + MESSAGE(" and/or root ${PIMORONI_UF2_DIR}.") +endif() \ No newline at end of file diff --git a/micropython/board/manifest_pico2.py b/boards/manifest_pico2.py similarity index 60% rename from micropython/board/manifest_pico2.py rename to boards/manifest_pico2.py index 8a52513..ca9171f 100644 --- a/micropython/board/manifest_pico2.py +++ b/boards/manifest_pico2.py @@ -1,4 +1,5 @@ -MODULES_PY = "../../../pimoroni-pico/micropython/modules_py" +# micropython/ports/rp2/../../../ +MODULES_PY = "{PORT_DIR}/../../../pimoroni-pico/micropython/modules_py" # SD Card require("sdcard") diff --git a/micropython/board/PIMORONI_PICO_PLUS2/board.json b/boards/pimoroni_pico_plus2/board.json similarity index 100% rename from micropython/board/PIMORONI_PICO_PLUS2/board.json rename to boards/pimoroni_pico_plus2/board.json diff --git a/micropython/board/PIMORONI_PICO_PLUS2/manifest.py b/boards/pimoroni_pico_plus2/manifest.py similarity index 100% rename from micropython/board/PIMORONI_PICO_PLUS2/manifest.py rename to boards/pimoroni_pico_plus2/manifest.py diff --git a/micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.cmake b/boards/pimoroni_pico_plus2/mpconfigboard.cmake similarity index 100% rename from micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.cmake rename to boards/pimoroni_pico_plus2/mpconfigboard.cmake diff --git a/micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.h b/boards/pimoroni_pico_plus2/mpconfigboard.h similarity index 100% rename from micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.h rename to boards/pimoroni_pico_plus2/mpconfigboard.h diff --git a/micropython/board/PIMORONI_PICO_PLUS2/pimoroni_pico_plus2w_rp2350.h b/boards/pimoroni_pico_plus2/pimoroni_pico_plus2w_rp2350.h similarity index 100% rename from micropython/board/PIMORONI_PICO_PLUS2/pimoroni_pico_plus2w_rp2350.h rename to boards/pimoroni_pico_plus2/pimoroni_pico_plus2w_rp2350.h diff --git a/micropython/board/PIMORONI_PICO_PLUS2/pins.csv b/boards/pimoroni_pico_plus2/pins.csv similarity index 100% rename from micropython/board/PIMORONI_PICO_PLUS2/pins.csv rename to boards/pimoroni_pico_plus2/pins.csv diff --git a/boards/pimoroni_pico_plus2/usermodules.cmake b/boards/pimoroni_pico_plus2/usermodules.cmake new file mode 100644 index 0000000..d3f340d --- /dev/null +++ b/boards/pimoroni_pico_plus2/usermodules.cmake @@ -0,0 +1,3 @@ +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../") + +include(usermod-common) \ No newline at end of file diff --git a/micropython/board/PIMORONI_PLASMA2350/board.json b/boards/pimoroni_plasma2350/board.json similarity index 100% rename from micropython/board/PIMORONI_PLASMA2350/board.json rename to boards/pimoroni_plasma2350/board.json diff --git a/micropython/board/PIMORONI_PLASMA2350/manifest.py b/boards/pimoroni_plasma2350/manifest.py similarity index 100% rename from micropython/board/PIMORONI_PLASMA2350/manifest.py rename to boards/pimoroni_plasma2350/manifest.py diff --git a/micropython/board/PIMORONI_PLASMA2350/mpconfigboard.cmake b/boards/pimoroni_plasma2350/mpconfigboard.cmake similarity index 100% rename from micropython/board/PIMORONI_PLASMA2350/mpconfigboard.cmake rename to boards/pimoroni_plasma2350/mpconfigboard.cmake diff --git a/micropython/board/PIMORONI_PLASMA2350/mpconfigboard.h b/boards/pimoroni_plasma2350/mpconfigboard.h similarity index 100% rename from micropython/board/PIMORONI_PLASMA2350/mpconfigboard.h rename to boards/pimoroni_plasma2350/mpconfigboard.h diff --git a/micropython/board/PIMORONI_PLASMA2350/pimoroni_plasma2350w.h b/boards/pimoroni_plasma2350/pimoroni_plasma2350w.h similarity index 100% rename from micropython/board/PIMORONI_PLASMA2350/pimoroni_plasma2350w.h rename to boards/pimoroni_plasma2350/pimoroni_plasma2350w.h diff --git a/micropython/board/PIMORONI_PLASMA2350/pins.csv b/boards/pimoroni_plasma2350/pins.csv similarity index 100% rename from micropython/board/PIMORONI_PLASMA2350/pins.csv rename to boards/pimoroni_plasma2350/pins.csv diff --git a/boards/pimoroni_plasma2350/usermodules.cmake b/boards/pimoroni_plasma2350/usermodules.cmake new file mode 100644 index 0000000..d3f340d --- /dev/null +++ b/boards/pimoroni_plasma2350/usermodules.cmake @@ -0,0 +1,3 @@ +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../") + +include(usermod-common) \ No newline at end of file diff --git a/micropython/board/PIMORONI_TINY2350/board.json b/boards/pimoroni_tiny2350/board.json similarity index 100% rename from micropython/board/PIMORONI_TINY2350/board.json rename to boards/pimoroni_tiny2350/board.json diff --git a/micropython/board/PIMORONI_TINY2350/manifest.py b/boards/pimoroni_tiny2350/manifest.py similarity index 100% rename from micropython/board/PIMORONI_TINY2350/manifest.py rename to boards/pimoroni_tiny2350/manifest.py diff --git a/micropython/board/PIMORONI_TINY2350/mpconfigboard.cmake b/boards/pimoroni_tiny2350/mpconfigboard.cmake similarity index 100% rename from micropython/board/PIMORONI_TINY2350/mpconfigboard.cmake rename to boards/pimoroni_tiny2350/mpconfigboard.cmake diff --git a/micropython/board/PIMORONI_TINY2350/mpconfigboard.h b/boards/pimoroni_tiny2350/mpconfigboard.h similarity index 100% rename from micropython/board/PIMORONI_TINY2350/mpconfigboard.h rename to boards/pimoroni_tiny2350/mpconfigboard.h diff --git a/boards/pimoroni_tiny2350/usermodules.cmake b/boards/pimoroni_tiny2350/usermodules.cmake new file mode 100644 index 0000000..d3f340d --- /dev/null +++ b/boards/pimoroni_tiny2350/usermodules.cmake @@ -0,0 +1,3 @@ +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../") + +include(usermod-common) \ No newline at end of file diff --git a/micropython/board/RPI_PICO2/manifest.py b/boards/rpi_pico2/manifest.py similarity index 100% rename from micropython/board/RPI_PICO2/manifest.py rename to boards/rpi_pico2/manifest.py diff --git a/micropython/board/RPI_PICO2/mpconfigboard.cmake b/boards/rpi_pico2/mpconfigboard.cmake similarity index 100% rename from micropython/board/RPI_PICO2/mpconfigboard.cmake rename to boards/rpi_pico2/mpconfigboard.cmake diff --git a/micropython/board/RPI_PICO2/mpconfigboard.h b/boards/rpi_pico2/mpconfigboard.h similarity index 100% rename from micropython/board/RPI_PICO2/mpconfigboard.h rename to boards/rpi_pico2/mpconfigboard.h diff --git a/micropython/board/RPI_PICO2/pins.csv b/boards/rpi_pico2/pins.csv similarity index 100% rename from micropython/board/RPI_PICO2/pins.csv rename to boards/rpi_pico2/pins.csv diff --git a/boards/rpi_pico2/usermodules.cmake b/boards/rpi_pico2/usermodules.cmake new file mode 100644 index 0000000..d3f340d --- /dev/null +++ b/boards/rpi_pico2/usermodules.cmake @@ -0,0 +1,3 @@ +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../") + +include(usermod-common) \ No newline at end of file diff --git a/micropython/board/RPI_PICO2_W/manifest.py b/boards/rpi_pico2_w/manifest.py similarity index 100% rename from micropython/board/RPI_PICO2_W/manifest.py rename to boards/rpi_pico2_w/manifest.py diff --git a/micropython/board/RPI_PICO2_W/mpconfigboard.cmake b/boards/rpi_pico2_w/mpconfigboard.cmake similarity index 100% rename from micropython/board/RPI_PICO2_W/mpconfigboard.cmake rename to boards/rpi_pico2_w/mpconfigboard.cmake diff --git a/micropython/board/RPI_PICO2_W/mpconfigboard.h b/boards/rpi_pico2_w/mpconfigboard.h similarity index 100% rename from micropython/board/RPI_PICO2_W/mpconfigboard.h rename to boards/rpi_pico2_w/mpconfigboard.h diff --git a/micropython/board/RPI_PICO2_W/pins.csv b/boards/rpi_pico2_w/pins.csv similarity index 100% rename from micropython/board/RPI_PICO2_W/pins.csv rename to boards/rpi_pico2_w/pins.csv diff --git a/boards/rpi_pico2_w/usermodules.cmake b/boards/rpi_pico2_w/usermodules.cmake new file mode 100644 index 0000000..d3f340d --- /dev/null +++ b/boards/rpi_pico2_w/usermodules.cmake @@ -0,0 +1,3 @@ +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../") + +include(usermod-common) \ No newline at end of file diff --git a/micropython/board/RPI_PICO2B/board.json b/boards/rpi_pico2b/board.json similarity index 100% rename from micropython/board/RPI_PICO2B/board.json rename to boards/rpi_pico2b/board.json diff --git a/micropython/board/RPI_PICO2B/manifest.py b/boards/rpi_pico2b/manifest.py similarity index 100% rename from micropython/board/RPI_PICO2B/manifest.py rename to boards/rpi_pico2b/manifest.py diff --git a/micropython/board/RPI_PICO2B/mpconfigboard.cmake b/boards/rpi_pico2b/mpconfigboard.cmake similarity index 100% rename from micropython/board/RPI_PICO2B/mpconfigboard.cmake rename to boards/rpi_pico2b/mpconfigboard.cmake diff --git a/micropython/board/RPI_PICO2B/mpconfigboard.h b/boards/rpi_pico2b/mpconfigboard.h similarity index 100% rename from micropython/board/RPI_PICO2B/mpconfigboard.h rename to boards/rpi_pico2b/mpconfigboard.h diff --git a/micropython/board/RPI_PICO2B/pico2b.h b/boards/rpi_pico2b/pico2b.h similarity index 100% rename from micropython/board/RPI_PICO2B/pico2b.h rename to boards/rpi_pico2b/pico2b.h diff --git a/micropython/board/RPI_PICO2B/pins.csv b/boards/rpi_pico2b/pins.csv similarity index 100% rename from micropython/board/RPI_PICO2B/pins.csv rename to boards/rpi_pico2b/pins.csv diff --git a/boards/rpi_pico2b/usermodules.cmake b/boards/rpi_pico2b/usermodules.cmake new file mode 100644 index 0000000..d3f340d --- /dev/null +++ b/boards/rpi_pico2b/usermodules.cmake @@ -0,0 +1,3 @@ +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../") + +include(usermod-common) \ No newline at end of file diff --git a/micropython/micropython-pico2.cmake b/boards/usermod-common.cmake similarity index 100% rename from micropython/micropython-pico2.cmake rename to boards/usermod-common.cmake diff --git a/ci/micropython.sh b/ci/micropython.sh index f1a24c4..4b6565b 100644 --- a/ci/micropython.sh +++ b/ci/micropython.sh @@ -1,5 +1,15 @@ export TERM=${TERM:="xterm-256color"} +MICROPYTHON_FLAVOUR="pimoroni" +MICROPYTHON_VERSION="feature/pico2_w_2025" + +PIMORONI_PICO_FLAVOUR="pimoroni" +PIMORONI_PICO_VERSION="feature/picovector2-and-layers" + +PY_DECL_VERSION="v0.0.3" +DIR2UF2_VERSION="v0.0.9" + + function log_success { echo -e "$(tput setaf 2)$1$(tput sgr0)" } @@ -12,10 +22,19 @@ function log_warning { echo -e "$(tput setaf 1)$1$(tput sgr0)" } -function micropython_clone { - log_inform "Using MicroPython $MICROPYTHON_VERSION" - git clone https://github.com/$MICROPYTHON_FLAVOUR/micropython - cd micropython +function ci_pimoroni_pico_clone { + log_inform "Using Pimoroni Pico $PIMORONI_PICO_FLAVOUR/$PIMORONI_PICO_VERSION" + git clone https://github.com/$PIMORONI_PICO_FLAVOUR/pimoroni-pico "$CI_BUILD_ROOT/pimoroni-pico" + cd "$CI_BUILD_ROOT/pimoroni-pico" || return 1 + git checkout $PIMORONI_PICO_VERSION + git submodule update --init + cd "$CI_BUILD_ROOT" +} + +function ci_micropython_clone { + log_inform "Using MicroPython $MICROPYTHON_FLAVOUR/$MICROPYTHON_VERSION" + git clone https://github.com/$MICROPYTHON_FLAVOUR/micropython "$CI_BUILD_ROOT/micropython" + cd "$CI_BUILD_ROOT/micropython" || return 1 git checkout $MICROPYTHON_VERSION git submodule update --init lib/pico-sdk git submodule update --init lib/cyw43-driver @@ -24,42 +43,94 @@ function micropython_clone { git submodule update --init lib/micropython-lib git submodule update --init lib/tinyusb git submodule update --init lib/btstack - cd ../ + cd "$CI_BUILD_ROOT" } -function micropython_build_mpy_cross { - cd micropython/mpy-cross +function ci_tools_clone { + mkdir -p "$CI_BUILD_ROOT/tools" + git clone https://github.com/gadgetoid/py_decl -b "$PY_DECL_VERSION" "$CI_BUILD_ROOT/tools/py_decl" + git clone https://github.com/gadgetoid/dir2uf2 -b "$DIR2UF2_VERSION" "$CI_BUILD_ROOT/tools/dir2uf2" + python3 -m pip install littlefs-python==0.12.0 +} + +function ci_micropython_build_mpy_cross { + cd "$CI_BUILD_ROOT/micropython/mpy-cross" || return 1 ccache --zero-stats || true - CROSS_COMPILE="ccache " USER_C_MODULES= make + CROSS_COMPILE="ccache " make ccache --show-stats || true - cd ../../ + cd "$CI_BUILD_ROOT" } -function apt_install_build_deps { +function ci_apt_install_build_deps { sudo apt update && sudo apt install ccache } +function ci_prepare_all { + ci_tools_clone + ci_micropython_clone + ci_pimoroni_pico_clone + ci_micropython_build_mpy_cross +} + +function ci_debug { + log_inform "Project root: $CI_PROJECT_ROOT" + log_inform "Build root: $CI_BUILD_ROOT" +} + function micropython_version { - echo "MICROPY_GIT_TAG=$MICROPYTHON_VERSION, $BOARD_NAME $TAG_OR_SHA" >> $GITHUB_ENV + BOARD=$1 + echo "MICROPY_GIT_TAG=$MICROPYTHON_VERSION, $BOARD $TAG_OR_SHA" >> $GITHUB_ENV echo "MICROPY_GIT_HASH=$MICROPYTHON_VERSION-$TAG_OR_SHA" >> $GITHUB_ENV } -function cmake_configure { - cmake -S micropython/ports/rp2 -B build-$BOARD_NAME \ +function ci_cmake_configure { + BOARD=$1 + TOOLS_DIR="$CI_BUILD_ROOT/tools" + MICROPY_BOARD_DIR=$CI_PROJECT_ROOT/boards/$BOARD + if [ ! -f "$MICROPY_BOARD_DIR/mpconfigboard.cmake" ]; then + log_warning "Invalid board: \"$BOARD\". Run with ci_cmake_configure ." + return 1 + fi + BUILD_DIR="$CI_BUILD_ROOT/build-$BOARD" + cmake -S $CI_BUILD_ROOT/micropython/ports/rp2 -B "$BUILD_DIR" \ + -DPICOTOOL_FORCE_FETCH_FROM_GIT=1 \ -DPICO_BUILD_DOCS=0 \ -DPICO_NO_COPRO_DIS=1 \ - -DUSER_C_MODULES=$USER_C_MODULES \ - -DMICROPY_BOARD_DIR=$MICROPY_BOARD_DIR \ - -DMICROPY_BOARD=$MICROPY_BOARD \ - -DMICROPY_BOARD_VARIANT=$MICROPY_BOARD_VARIANT \ + -DPICOTOOL_FETCH_FROM_GIT_PATH="$TOOLS_DIR/picotool" \ + -DPIMORONI_PICO_PATH="$CI_BUILD_ROOT/pimoroni-pico" \ + -DPIMORONI_TOOLS_DIR="$TOOLS_DIR" \ + -DUSER_C_MODULES="$MICROPY_BOARD_DIR/usermodules.cmake" \ + -DMICROPY_BOARD_DIR="$MICROPY_BOARD_DIR" \ + -DMICROPY_BOARD="$BOARD" \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache } -function cmake_build { +function ci_cmake_build { + BOARD=$1 + MICROPY_BOARD_DIR=$CI_PROJECT_ROOT/boards/$BOARD + if [ ! -f "$MICROPY_BOARD_DIR/mpconfigboard.cmake" ]; then + log_warning "Invalid board: \"$BOARD\". Run with ci_cmake_build ." + return 1 + fi + BUILD_DIR="$CI_BUILD_ROOT/build-$BOARD" ccache --zero-stats || true - cmake --build build-$BOARD_NAME -j 2 + cmake --build $BUILD_DIR -j 2 ccache --show-stats || true - cd build-$BOARD_NAME - cp firmware.uf2 $RELEASE_FILE.uf2 + + log_inform "Copying .uf2 to $(pwd)/$BOARD.uf2" + cp "$BUILD_DIR/firmware.uf2" $BOARD.uf2 + + if [ -f "$BUILD_DIR/firmware-with-filesystem.uf2" ]; then + log_inform "Copying -with-filesystem .uf2 to $(pwd)/$BOARD-with-filesystem.uf2" + cp "$BUILD_DIR/firmware-with-filesystem.uf2" $BOARD-with-filesystem.uf2 + fi } + +if [ -z ${CI_USE_ENV+x} ] || [ -z ${CI_PROJECT_ROOT+x} ] || [ -z ${CI_BUILD_ROOT+x} ]; then + SCRIPT_PATH="$(dirname $0)" + CI_PROJECT_ROOT=$(realpath "$SCRIPT_PATH/..") + CI_BUILD_ROOT=$(pwd) +fi + +ci_debug \ No newline at end of file diff --git a/micropython/examples/pico_jumbo/big_blink.py b/examples/pico_jumbo/big_blink.py similarity index 100% rename from micropython/examples/pico_jumbo/big_blink.py rename to examples/pico_jumbo/big_blink.py diff --git a/micropython/examples/pico_jumbo/big_button.py b/examples/pico_jumbo/big_button.py similarity index 100% rename from micropython/examples/pico_jumbo/big_button.py rename to examples/pico_jumbo/big_button.py diff --git a/micropython/examples/pico_jumbo/big_toggle.py b/examples/pico_jumbo/big_toggle.py similarity index 100% rename from micropython/examples/pico_jumbo/big_toggle.py rename to examples/pico_jumbo/big_toggle.py diff --git a/micropython/examples/pico_plus_2/breakouts/bme68x-breakout.py b/examples/pico_plus_2/breakouts/bme68x-breakout.py similarity index 100% rename from micropython/examples/pico_plus_2/breakouts/bme68x-breakout.py rename to examples/pico_plus_2/breakouts/bme68x-breakout.py diff --git a/micropython/examples/pico_plus_2/breakouts/lte-astronauts.py b/examples/pico_plus_2/breakouts/lte-astronauts.py similarity index 100% rename from micropython/examples/pico_plus_2/breakouts/lte-astronauts.py rename to examples/pico_plus_2/breakouts/lte-astronauts.py diff --git a/micropython/examples/pico_plus_2/breakouts/lte-breakout.py b/examples/pico_plus_2/breakouts/lte-breakout.py similarity index 100% rename from micropython/examples/pico_plus_2/breakouts/lte-breakout.py rename to examples/pico_plus_2/breakouts/lte-breakout.py diff --git a/micropython/examples/pico_plus_2/breakouts/lte-catfacts.py b/examples/pico_plus_2/breakouts/lte-catfacts.py similarity index 100% rename from micropython/examples/pico_plus_2/breakouts/lte-catfacts.py rename to examples/pico_plus_2/breakouts/lte-catfacts.py diff --git a/micropython/examples/pico_plus_2/breakouts/rm2-breakout-catfacts.py b/examples/pico_plus_2/breakouts/rm2-breakout-catfacts.py similarity index 100% rename from micropython/examples/pico_plus_2/breakouts/rm2-breakout-catfacts.py rename to examples/pico_plus_2/breakouts/rm2-breakout-catfacts.py diff --git a/micropython/examples/pico_plus_2/breakouts/scd41-breakout.py b/examples/pico_plus_2/breakouts/scd41-breakout.py similarity index 100% rename from micropython/examples/pico_plus_2/breakouts/scd41-breakout.py rename to examples/pico_plus_2/breakouts/scd41-breakout.py diff --git a/micropython/examples/pico_plus_2/breakouts/secrets.py b/examples/pico_plus_2/breakouts/secrets.py similarity index 100% rename from micropython/examples/pico_plus_2/breakouts/secrets.py rename to examples/pico_plus_2/breakouts/secrets.py diff --git a/micropython/examples/pico_plus_2/button.py b/examples/pico_plus_2/button.py similarity index 100% rename from micropython/examples/pico_plus_2/button.py rename to examples/pico_plus_2/button.py diff --git a/micropython/examples/pico_plus_2/onboard_led.py b/examples/pico_plus_2/onboard_led.py similarity index 100% rename from micropython/examples/pico_plus_2/onboard_led.py rename to examples/pico_plus_2/onboard_led.py diff --git a/micropython/examples/pico_plus_2_w/astronauts.py b/examples/pico_plus_2_w/astronauts.py similarity index 100% rename from micropython/examples/pico_plus_2_w/astronauts.py rename to examples/pico_plus_2_w/astronauts.py diff --git a/micropython/examples/pico_plus_2_w/button.py b/examples/pico_plus_2_w/button.py similarity index 100% rename from micropython/examples/pico_plus_2_w/button.py rename to examples/pico_plus_2_w/button.py diff --git a/micropython/examples/pico_plus_2_w/catfacts.py b/examples/pico_plus_2_w/catfacts.py similarity index 100% rename from micropython/examples/pico_plus_2_w/catfacts.py rename to examples/pico_plus_2_w/catfacts.py diff --git a/micropython/examples/pico_plus_2_w/onboard_led.py b/examples/pico_plus_2_w/onboard_led.py similarity index 100% rename from micropython/examples/pico_plus_2_w/onboard_led.py rename to examples/pico_plus_2_w/onboard_led.py diff --git a/micropython/examples/pico_plus_2_w/secrets.py b/examples/pico_plus_2_w/secrets.py similarity index 100% rename from micropython/examples/pico_plus_2_w/secrets.py rename to examples/pico_plus_2_w/secrets.py diff --git a/micropython/examples/plasma_2350/breakouts/rm2-breakout-catfacts.py b/examples/plasma_2350/breakouts/rm2-breakout-catfacts.py similarity index 100% rename from micropython/examples/plasma_2350/breakouts/rm2-breakout-catfacts.py rename to examples/plasma_2350/breakouts/rm2-breakout-catfacts.py diff --git a/micropython/examples/plasma_2350/breakouts/secrets.py b/examples/plasma_2350/breakouts/secrets.py similarity index 100% rename from micropython/examples/plasma_2350/breakouts/secrets.py rename to examples/plasma_2350/breakouts/secrets.py diff --git a/micropython/examples/plasma_2350/breakouts/trackball-breakout.py b/examples/plasma_2350/breakouts/trackball-breakout.py similarity index 100% rename from micropython/examples/plasma_2350/breakouts/trackball-breakout.py rename to examples/plasma_2350/breakouts/trackball-breakout.py diff --git a/micropython/examples/plasma_2350/button_control.py b/examples/plasma_2350/button_control.py similarity index 100% rename from micropython/examples/plasma_2350/button_control.py rename to examples/plasma_2350/button_control.py diff --git a/micropython/examples/plasma_2350/buttons.py b/examples/plasma_2350/buttons.py similarity index 100% rename from micropython/examples/plasma_2350/buttons.py rename to examples/plasma_2350/buttons.py diff --git a/micropython/examples/plasma_2350/rainbow.py b/examples/plasma_2350/rainbow.py similarity index 100% rename from micropython/examples/plasma_2350/rainbow.py rename to examples/plasma_2350/rainbow.py diff --git a/micropython/examples/plasma_2350/rgb_led.py b/examples/plasma_2350/rgb_led.py similarity index 100% rename from micropython/examples/plasma_2350/rgb_led.py rename to examples/plasma_2350/rgb_led.py diff --git a/micropython/examples/plasma_2350/single_colour.py b/examples/plasma_2350/single_colour.py similarity index 100% rename from micropython/examples/plasma_2350/single_colour.py rename to examples/plasma_2350/single_colour.py diff --git a/micropython/examples/plasma_2350_w/cheerlights.py b/examples/plasma_2350_w/cheerlights.py similarity index 100% rename from micropython/examples/plasma_2350_w/cheerlights.py rename to examples/plasma_2350_w/cheerlights.py diff --git a/micropython/examples/plasma_2350_w/html/index.html b/examples/plasma_2350_w/html/index.html similarity index 100% rename from micropython/examples/plasma_2350_w/html/index.html rename to examples/plasma_2350_w/html/index.html diff --git a/micropython/examples/plasma_2350_w/secrets.py b/examples/plasma_2350_w/secrets.py similarity index 100% rename from micropython/examples/plasma_2350_w/secrets.py rename to examples/plasma_2350_w/secrets.py diff --git a/micropython/examples/plasma_2350_w/webpage.py b/examples/plasma_2350_w/webpage.py similarity index 100% rename from micropython/examples/plasma_2350_w/webpage.py rename to examples/plasma_2350_w/webpage.py diff --git a/micropython/examples/tiny_2350/breakouts/bme688-breakout.py b/examples/tiny_2350/breakouts/bme688-breakout.py similarity index 100% rename from micropython/examples/tiny_2350/breakouts/bme688-breakout.py rename to examples/tiny_2350/breakouts/bme688-breakout.py diff --git a/micropython/examples/tiny_2350/breakouts/scd41-breakout.py b/examples/tiny_2350/breakouts/scd41-breakout.py similarity index 100% rename from micropython/examples/tiny_2350/breakouts/scd41-breakout.py rename to examples/tiny_2350/breakouts/scd41-breakout.py diff --git a/micropython/examples/tiny_2350/buttons.py b/examples/tiny_2350/buttons.py similarity index 100% rename from micropython/examples/tiny_2350/buttons.py rename to examples/tiny_2350/buttons.py diff --git a/micropython/examples/tiny_2350/rgb_led.py b/examples/tiny_2350/rgb_led.py similarity index 100% rename from micropython/examples/tiny_2350/rgb_led.py rename to examples/tiny_2350/rgb_led.py