From e90ae33a994ade0fc428282d5e9917a2ca10e2e9 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Tue, 2 May 2023 16:17:47 +0100 Subject: [PATCH] CI: All MicroPython builds use local board dirs. Simplify the build to use *only* local (to pimoroni-pico) copies of MicroPython board config dirs. This allows us to specify MICROPY_C_HEAP_SIZE (and potentially other options) in board config rather than at build-time. --- .github/workflows/micropython.yml | 17 ++--------- micropython/board/PICO/board.json | 20 +++++++++++++ micropython/board/PICO/mpconfigboard.cmake | 2 ++ micropython/board/PICO/mpconfigboard.h | 3 ++ micropython/board/PICO/pins.csv | 28 +++++++++++++++++ micropython/board/PICO_W/board.json | 21 +++++++++++++ micropython/board/PICO_W/manifest.py | 3 ++ micropython/board/PICO_W/mpconfigboard.cmake | 8 +++++ micropython/board/PICO_W/mpconfigboard.h | 23 ++++++++++++++ micropython/board/PICO_W/pins.csv | 30 +++++++++++++++++++ micropython/board/PICO_W_ENVIRO/manifest.py | 7 ++--- .../board/PICO_W_ENVIRO/mpconfigboard.cmake | 2 ++ micropython/board/PICO_W_INKY/manifest.py | 5 ++-- .../board/PICO_W_INKY/mpconfigboard.cmake | 2 ++ .../board/PIMORONI_PICOLIPO_16MB/board.json | 22 ++++++++++++++ .../mpconfigboard.cmake | 2 ++ .../PIMORONI_PICOLIPO_16MB/mpconfigboard.h | 20 +++++++++++++ .../board/PIMORONI_PICOLIPO_4MB/board.json | 22 ++++++++++++++ .../PIMORONI_PICOLIPO_4MB/mpconfigboard.cmake | 2 ++ .../PIMORONI_PICOLIPO_4MB/mpconfigboard.h | 20 +++++++++++++ .../board/PIMORONI_TINY2040/board.json | 20 +++++++++++++ .../PIMORONI_TINY2040/mpconfigboard.cmake | 2 ++ .../board/PIMORONI_TINY2040/mpconfigboard.h | 18 +++++++++++ .../PIMORONI_TUFTY2040/mpconfigboard.cmake | 2 ++ 24 files changed, 280 insertions(+), 21 deletions(-) create mode 100644 micropython/board/PICO/board.json create mode 100644 micropython/board/PICO/mpconfigboard.cmake create mode 100644 micropython/board/PICO/mpconfigboard.h create mode 100644 micropython/board/PICO/pins.csv create mode 100644 micropython/board/PICO_W/board.json create mode 100644 micropython/board/PICO_W/manifest.py create mode 100644 micropython/board/PICO_W/mpconfigboard.cmake create mode 100644 micropython/board/PICO_W/mpconfigboard.h create mode 100644 micropython/board/PICO_W/pins.csv create mode 100644 micropython/board/PIMORONI_PICOLIPO_16MB/board.json create mode 100644 micropython/board/PIMORONI_PICOLIPO_16MB/mpconfigboard.cmake create mode 100644 micropython/board/PIMORONI_PICOLIPO_16MB/mpconfigboard.h create mode 100644 micropython/board/PIMORONI_PICOLIPO_4MB/board.json create mode 100644 micropython/board/PIMORONI_PICOLIPO_4MB/mpconfigboard.cmake create mode 100644 micropython/board/PIMORONI_PICOLIPO_4MB/mpconfigboard.h create mode 100644 micropython/board/PIMORONI_TINY2040/board.json create mode 100644 micropython/board/PIMORONI_TINY2040/mpconfigboard.cmake create mode 100644 micropython/board/PIMORONI_TINY2040/mpconfigboard.h diff --git a/.github/workflows/micropython.yml b/.github/workflows/micropython.yml index 1d217480..feb68aa7 100644 --- a/.github/workflows/micropython.yml +++ b/.github/workflows/micropython.yml @@ -78,10 +78,8 @@ jobs: board: PIMORONI_PICOLIPO_16MB - name: tufty2040 board: PIMORONI_TUFTY2040 - local_board_dir: true - name: enviro board: PICO_W_ENVIRO - local_board_dir: true patch: true - name: galactic_unicorn board: PICO_W @@ -89,7 +87,6 @@ jobs: board: PICO_W - name: inky_frame board: PICO_W_INKY - local_board_dir: true patch: true env: @@ -145,20 +142,12 @@ jobs: run: | $GITHUB_WORKSPACE/pimoroni-pico-${{ github.sha }}/micropython/board/pico-sdk-patch.sh ${{matrix.board}} - - name: Configure MicroPython (Local Board Dir) - if: matrix.local_board_dir == true + - name: Configure MicroPython shell: bash working-directory: micropython/ports/rp2 run: | - cmake -S . -B build-${{matrix.name}} -DPICO_BUILD_DOCS=0 -DUSER_C_MODULES=${{env.USER_C_MODULES}} -DMICROPY_BOARD_DIR=${{env.MICROPY_BOARD_DIR}} -DMICROPY_C_HEAP_SIZE=4096 -DMICROPY_BOARD=${{matrix.board}} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - - - name: Configure MicroPython (Upstream Board Dir) - if: matrix.local_board_dir != true - shell: bash - working-directory: micropython/ports/rp2 - run: | - cmake -S . -B build-${{matrix.name}} -DPICO_BUILD_DOCS=0 -DUSER_C_MODULES=${{env.USER_C_MODULES}} -DMICROPY_C_HEAP_SIZE=4096 -DMICROPY_BOARD=${{matrix.board}} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - + cmake -S . -B build-${{matrix.name}} -DPICO_BUILD_DOCS=0 -DUSER_C_MODULES=${{env.USER_C_MODULES}} -DMICROPY_BOARD_DIR=${{env.MICROPY_BOARD_DIR}} -DMICROPY_BOARD=${{matrix.board}} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + - name: Build MicroPython # Multiple simultaneous jobs trigger https://github.com/pimoroni/pimoroni-pico/issues/761 shell: bash working-directory: micropython/ports/rp2 diff --git a/micropython/board/PICO/board.json b/micropython/board/PICO/board.json new file mode 100644 index 00000000..5a67a25e --- /dev/null +++ b/micropython/board/PICO/board.json @@ -0,0 +1,20 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Breadboard friendly", + "Castellated Pads", + "Micro USB" + ], + "id": "rp2-pico", + "images": [ + "rp2-pico.jpg" + ], + "mcu": "rp2040", + "product": "Pico", + "thumbnail": "", + "url": "https://www.raspberrypi.com/products/raspberry-pi-pico/", + "vendor": "Raspberry Pi" +} \ No newline at end of file diff --git a/micropython/board/PICO/mpconfigboard.cmake b/micropython/board/PICO/mpconfigboard.cmake new file mode 100644 index 00000000..6512b7f3 --- /dev/null +++ b/micropython/board/PICO/mpconfigboard.cmake @@ -0,0 +1,2 @@ +# cmake file for Raspberry Pi Pico +set(MICROPY_C_HEAP_SIZE 4096) \ No newline at end of file diff --git a/micropython/board/PICO/mpconfigboard.h b/micropython/board/PICO/mpconfigboard.h new file mode 100644 index 00000000..8534e4e2 --- /dev/null +++ b/micropython/board/PICO/mpconfigboard.h @@ -0,0 +1,3 @@ +// Board and hardware specific configuration +#define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico" +#define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024) \ No newline at end of file diff --git a/micropython/board/PICO/pins.csv b/micropython/board/PICO/pins.csv new file mode 100644 index 00000000..9c40b41c --- /dev/null +++ b/micropython/board/PICO/pins.csv @@ -0,0 +1,28 @@ +GP0,GPIO0 +GP1,GPIO1 +GP2,GPIO2 +GP3,GPIO3 +GP4,GPIO4 +GP5,GPIO5 +GP6,GPIO6 +GP7,GPIO7 +GP8,GPIO8 +GP9,GPIO9 +GP10,GPIO10 +GP11,GPIO11 +GP12,GPIO12 +GP13,GPIO13 +GP14,GPIO14 +GP15,GPIO15 +GP16,GPIO16 +GP17,GPIO17 +GP18,GPIO18 +GP19,GPIO19 +GP20,GPIO20 +GP21,GPIO21 +GP22,GPIO22 +GP25,GPIO25 +GP26,GPIO26 +GP27,GPIO27 +GP28,GPIO28 +LED,GPIO25 \ No newline at end of file diff --git a/micropython/board/PICO_W/board.json b/micropython/board/PICO_W/board.json new file mode 100644 index 00000000..353072f7 --- /dev/null +++ b/micropython/board/PICO_W/board.json @@ -0,0 +1,21 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Breadboard friendly", + "Castellated Pads", + "Micro USB", + "WiFi" + ], + "id": "rp2-pico-w", + "images": [ + "rp2-pico-w.jpg" + ], + "mcu": "rp2040", + "product": "Pico W", + "thumbnail": "", + "url": "https://www.raspberrypi.com/products/raspberry-pi-pico/", + "vendor": "Raspberry Pi" +} \ No newline at end of file diff --git a/micropython/board/PICO_W/manifest.py b/micropython/board/PICO_W/manifest.py new file mode 100644 index 00000000..e8f4e278 --- /dev/null +++ b/micropython/board/PICO_W/manifest.py @@ -0,0 +1,3 @@ +include("$(PORT_DIR)/boards/manifest.py") + +require("bundle-networking") \ No newline at end of file diff --git a/micropython/board/PICO_W/mpconfigboard.cmake b/micropython/board/PICO_W/mpconfigboard.cmake new file mode 100644 index 00000000..5a158651 --- /dev/null +++ b/micropython/board/PICO_W/mpconfigboard.cmake @@ -0,0 +1,8 @@ +# cmake file for Raspberry Pi Pico W +set(MICROPY_PY_LWIP ON) +set(MICROPY_PY_NETWORK_CYW43 ON) + +# Board specific version of the frozen manifest +set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) + +set(MICROPY_C_HEAP_SIZE 4096) \ No newline at end of file diff --git a/micropython/board/PICO_W/mpconfigboard.h b/micropython/board/PICO_W/mpconfigboard.h new file mode 100644 index 00000000..a6ff8517 --- /dev/null +++ b/micropython/board/PICO_W/mpconfigboard.h @@ -0,0 +1,23 @@ +// Board and hardware specific configuration +#define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico W" + +// todo: We need something to check our binary size +#define MICROPY_HW_FLASH_STORAGE_BYTES (848 * 1024) + +// Enable networking. +#define MICROPY_PY_NETWORK 1 +#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "PicoW" + +// CYW43 driver configuration. +#define CYW43_USE_SPI (1) +#define CYW43_LWIP (1) +#define CYW43_GPIO (1) +#define CYW43_SPI_PIO (1) + +// For debugging mbedtls - also set +// Debug level (0-4) 1=warning, 2=info, 3=debug, 4=verbose +// #define MODUSSL_MBEDTLS_DEBUG_LEVEL 1 + +#define MICROPY_HW_PIN_EXT_COUNT CYW43_WL_GPIO_COUNT + +#define MICROPY_HW_PIN_RESERVED(i) ((i) == CYW43_PIN_WL_HOST_WAKE || (i) == CYW43_PIN_WL_REG_ON) \ No newline at end of file diff --git a/micropython/board/PICO_W/pins.csv b/micropython/board/PICO_W/pins.csv new file mode 100644 index 00000000..012bc7c7 --- /dev/null +++ b/micropython/board/PICO_W/pins.csv @@ -0,0 +1,30 @@ +GP0,GPIO0 +GP1,GPIO1 +GP2,GPIO2 +GP3,GPIO3 +GP4,GPIO4 +GP5,GPIO5 +GP6,GPIO6 +GP7,GPIO7 +GP8,GPIO8 +GP9,GPIO9 +GP10,GPIO10 +GP11,GPIO11 +GP12,GPIO12 +GP13,GPIO13 +GP14,GPIO14 +GP15,GPIO15 +GP16,GPIO16 +GP17,GPIO17 +GP18,GPIO18 +GP19,GPIO19 +GP20,GPIO20 +GP21,GPIO21 +GP22,GPIO22 +GP26,GPIO26 +GP27,GPIO27 +GP28,GPIO28 +WL_GPIO0,EXT_GPIO0 +WL_GPIO1,EXT_GPIO1 +WL_GPIO2,EXT_GPIO2 +LED,EXT_GPIO0 \ No newline at end of file diff --git a/micropython/board/PICO_W_ENVIRO/manifest.py b/micropython/board/PICO_W_ENVIRO/manifest.py index d81af38e..59f779eb 100644 --- a/micropython/board/PICO_W_ENVIRO/manifest.py +++ b/micropython/board/PICO_W_ENVIRO/manifest.py @@ -1,6 +1,5 @@ include("$(PORT_DIR)/boards/manifest.py") -require("mip") -require("ntptime") -require("urequests") -require("umqtt.simple") \ No newline at end of file +# https://github.com/micropython/micropython-lib/blob/master/micropython/bundles/bundle-networking/manifest.py +require("bundle-networking") +require("umqtt.simple") diff --git a/micropython/board/PICO_W_ENVIRO/mpconfigboard.cmake b/micropython/board/PICO_W_ENVIRO/mpconfigboard.cmake index acd48f26..b1241f6d 100644 --- a/micropython/board/PICO_W_ENVIRO/mpconfigboard.cmake +++ b/micropython/board/PICO_W_ENVIRO/mpconfigboard.cmake @@ -5,3 +5,5 @@ set(MICROPY_PY_LWIP ON) set(MICROPY_PY_NETWORK_CYW43 ON) set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) + +set(MICROPY_C_HEAP_SIZE 4096) \ No newline at end of file diff --git a/micropython/board/PICO_W_INKY/manifest.py b/micropython/board/PICO_W_INKY/manifest.py index bcd56662..571ec4ef 100644 --- a/micropython/board/PICO_W_INKY/manifest.py +++ b/micropython/board/PICO_W_INKY/manifest.py @@ -1,7 +1,6 @@ include("$(PORT_DIR)/boards/manifest.py") -require("mip") -require("ntptime") -require("urequests") +# https://github.com/micropython/micropython-lib/blob/master/micropython/bundles/bundle-networking/manifest.py +require("bundle-networking") require("urllib.urequest") require("umqtt.simple") \ No newline at end of file diff --git a/micropython/board/PICO_W_INKY/mpconfigboard.cmake b/micropython/board/PICO_W_INKY/mpconfigboard.cmake index 434705a0..be167d17 100644 --- a/micropython/board/PICO_W_INKY/mpconfigboard.cmake +++ b/micropython/board/PICO_W_INKY/mpconfigboard.cmake @@ -5,3 +5,5 @@ set(MICROPY_PY_LWIP ON) set(MICROPY_PY_NETWORK_CYW43 ON) set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) + +set(MICROPY_C_HEAP_SIZE 4096) \ No newline at end of file diff --git a/micropython/board/PIMORONI_PICOLIPO_16MB/board.json b/micropython/board/PIMORONI_PICOLIPO_16MB/board.json new file mode 100644 index 00000000..9121154d --- /dev/null +++ b/micropython/board/PIMORONI_PICOLIPO_16MB/board.json @@ -0,0 +1,22 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Battery Charging", + "Breadboard Friendly", + "Castellated Pads", + "SPI Flash", + "STEMMA QT/QWIIC", + "USB-C" + ], + "images": [ + "PimoroniPicoLipo_1of3_1024x1024.jpg" + ], + "mcu": "rp2040", + "product": "Pico LiPo (16MiB)", + "thumbnail": "", + "url": "https://shop.pimoroni.com/products/pimoroni-pico-lipo", + "vendor": "Pimoroni" +} diff --git a/micropython/board/PIMORONI_PICOLIPO_16MB/mpconfigboard.cmake b/micropython/board/PIMORONI_PICOLIPO_16MB/mpconfigboard.cmake new file mode 100644 index 00000000..92f79e52 --- /dev/null +++ b/micropython/board/PIMORONI_PICOLIPO_16MB/mpconfigboard.cmake @@ -0,0 +1,2 @@ +# cmake file for Pimoroni Pico LiPo 16MB +set(MICROPY_C_HEAP_SIZE 4096) diff --git a/micropython/board/PIMORONI_PICOLIPO_16MB/mpconfigboard.h b/micropython/board/PIMORONI_PICOLIPO_16MB/mpconfigboard.h new file mode 100644 index 00000000..a90ef678 --- /dev/null +++ b/micropython/board/PIMORONI_PICOLIPO_16MB/mpconfigboard.h @@ -0,0 +1,20 @@ +// https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39335427080275 + +#define MICROPY_HW_BOARD_NAME "Pimoroni Pico LiPo 16MB" +#define MICROPY_HW_FLASH_STORAGE_BYTES (15 * 1024 * 1024) + +#define MICROPY_HW_USB_VID (0x2E8A) +#define MICROPY_HW_USB_PID (0x1003) + +#define MICROPY_HW_UART1_TX (8) +#define MICROPY_HW_UART1_RX (9) +#define MICROPY_HW_UART1_CTS (10) +#define MICROPY_HW_UART1_RTS (11) + +// User LED GPIO25 + +// VBUS_SENSE GPIO24 + +// BAT_SENSE GPIO29 + +// Boot button GPIO23 diff --git a/micropython/board/PIMORONI_PICOLIPO_4MB/board.json b/micropython/board/PIMORONI_PICOLIPO_4MB/board.json new file mode 100644 index 00000000..69d85323 --- /dev/null +++ b/micropython/board/PIMORONI_PICOLIPO_4MB/board.json @@ -0,0 +1,22 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Battery Charging", + "Breadboard Friendly", + "Castellated Pads", + "SPI Flash", + "STEMMA QT/QWIIC", + "USB-C" + ], + "images": [ + "PimoroniPicoLipo_1of3_1024x1024.jpg" + ], + "mcu": "rp2040", + "product": "Pico LiPo (4MiB)", + "thumbnail": "", + "url": "https://shop.pimoroni.com/products/pimoroni-pico-lipo", + "vendor": "Pimoroni" +} diff --git a/micropython/board/PIMORONI_PICOLIPO_4MB/mpconfigboard.cmake b/micropython/board/PIMORONI_PICOLIPO_4MB/mpconfigboard.cmake new file mode 100644 index 00000000..5c2aa5c6 --- /dev/null +++ b/micropython/board/PIMORONI_PICOLIPO_4MB/mpconfigboard.cmake @@ -0,0 +1,2 @@ +# cmake file for Pimoroni Pico LiPo 4MB +set(MICROPY_C_HEAP_SIZE 4096) diff --git a/micropython/board/PIMORONI_PICOLIPO_4MB/mpconfigboard.h b/micropython/board/PIMORONI_PICOLIPO_4MB/mpconfigboard.h new file mode 100644 index 00000000..53ade729 --- /dev/null +++ b/micropython/board/PIMORONI_PICOLIPO_4MB/mpconfigboard.h @@ -0,0 +1,20 @@ +// https://shop.pimoroni.com/products/pimoroni-pico-lipo?variant=39386149093459 + +#define MICROPY_HW_BOARD_NAME "Pimoroni Pico LiPo 4MB" +#define MICROPY_HW_FLASH_STORAGE_BYTES (3 * 1024 * 1024) + +#define MICROPY_HW_USB_VID (0x2E8A) +#define MICROPY_HW_USB_PID (0x1002) + +#define MICROPY_HW_UART1_TX (8) +#define MICROPY_HW_UART1_RX (9) +#define MICROPY_HW_UART1_CTS (10) +#define MICROPY_HW_UART1_RTS (11) + +// User LED GPIO25 + +// VBUS_SENSE GPIO24 + +// BAT_SENSE GPIO29 + +// Boot button GPIO23 diff --git a/micropython/board/PIMORONI_TINY2040/board.json b/micropython/board/PIMORONI_TINY2040/board.json new file mode 100644 index 00000000..753a25be --- /dev/null +++ b/micropython/board/PIMORONI_TINY2040/board.json @@ -0,0 +1,20 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Breadboard Friendly", + "Castellated Pads", + "RGB LED", + "USB-C" + ], + "images": [ + "tiny-2040-on-white-1_1024x1024.jpg" + ], + "mcu": "rp2040", + "product": "Tiny2040", + "thumbnail": "", + "url": "https://shop.pimoroni.com/products/tiny-2040", + "vendor": "Pimoroni" +} diff --git a/micropython/board/PIMORONI_TINY2040/mpconfigboard.cmake b/micropython/board/PIMORONI_TINY2040/mpconfigboard.cmake new file mode 100644 index 00000000..7474782f --- /dev/null +++ b/micropython/board/PIMORONI_TINY2040/mpconfigboard.cmake @@ -0,0 +1,2 @@ +# cmake file for Pimoroni Tiny 2040 +set(MICROPY_C_HEAP_SIZE 4096) diff --git a/micropython/board/PIMORONI_TINY2040/mpconfigboard.h b/micropython/board/PIMORONI_TINY2040/mpconfigboard.h new file mode 100644 index 00000000..ea40a807 --- /dev/null +++ b/micropython/board/PIMORONI_TINY2040/mpconfigboard.h @@ -0,0 +1,18 @@ +// https://shop.pimoroni.com/products/tiny-2040 + +#define MICROPY_HW_BOARD_NAME "Pimoroni Tiny 2040" +#define MICROPY_HW_FLASH_STORAGE_BYTES (7 * 1024 * 1024) + +#define MICROPY_HW_USB_VID (0x16D0) +#define MICROPY_HW_USB_PID (0x08C7) + +// I2C0 (non-default) +#define MICROPY_HW_I2C0_SCL (4) +#define MICROPY_HW_I2C0_SDA (5) + +// RGB LED, active low +// Red LED 18 +// Green LED 19 +// Blue LED 20 + +// Boot button GPIO23 diff --git a/micropython/board/PIMORONI_TUFTY2040/mpconfigboard.cmake b/micropython/board/PIMORONI_TUFTY2040/mpconfigboard.cmake index f952202f..2268a6df 100644 --- a/micropython/board/PIMORONI_TUFTY2040/mpconfigboard.cmake +++ b/micropython/board/PIMORONI_TUFTY2040/mpconfigboard.cmake @@ -3,3 +3,5 @@ set(PICO_BOARD "pimoroni_tufty2040") # Allow Pico SDK to locate "pimoroni_tufty2040.h" in this directory. list(APPEND PICO_BOARD_HEADER_DIRS "${CMAKE_CURRENT_LIST_DIR}") + +set(MICROPY_C_HEAP_SIZE 4096) \ No newline at end of file