From a048be6fa8f8f2a6324e0f889190a969989ae0e6 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Thu, 8 Aug 2024 17:00:06 +0100 Subject: [PATCH] Initial Commit. --- .github/workflows/micropython.yml | 122 ++++++++++++++++++ README.md | 13 ++ ci/micropython.sh | 65 ++++++++++ .../board/PIMORONI_PICO_PLUS2/board.json | 19 +++ .../board/PIMORONI_PICO_PLUS2/manifest.py | 3 + .../PIMORONI_PICO_PLUS2/mpconfigboard.cmake | 9 ++ .../board/PIMORONI_PICO_PLUS2/mpconfigboard.h | 8 ++ .../PIMORONI_PICO_PLUS2/mpconfigvariant.cmake | 0 .../mpconfigvariant_PSRAM.cmake | 5 + .../board/PIMORONI_PICO_PLUS2/pins.csv | 47 +++++++ .../board/PIMORONI_PLASMA2350/board.json | 20 +++ .../board/PIMORONI_PLASMA2350/manifest.py | 3 + .../PIMORONI_PLASMA2350/mpconfigboard.cmake | 8 ++ .../board/PIMORONI_PLASMA2350/mpconfigboard.h | 7 + .../board/PIMORONI_PLASMA2350/pins.csv | 33 +++++ .../board/PIMORONI_TINY2350/board.json | 20 +++ .../board/PIMORONI_TINY2350/manifest.py | 3 + .../PIMORONI_TINY2350/mpconfigboard.cmake | 8 ++ .../board/PIMORONI_TINY2350/mpconfigboard.h | 7 + micropython/board/RPI_PICO2/board.json | 19 +++ micropython/board/RPI_PICO2/manifest.py | 3 + .../board/RPI_PICO2/mpconfigboard.cmake | 8 ++ micropython/board/RPI_PICO2/mpconfigboard.h | 3 + micropython/board/RPI_PICO2/pins.csv | 28 ++++ micropython/board/RPI_PICO2B/board.json | 19 +++ micropython/board/RPI_PICO2B/manifest.py | 3 + .../board/RPI_PICO2B/mpconfigboard.cmake | 12 ++ micropython/board/RPI_PICO2B/mpconfigboard.h | 3 + micropython/board/RPI_PICO2B/pico2b.h | 100 ++++++++++++++ micropython/board/RPI_PICO2B/pins.csv | 47 +++++++ 30 files changed, 645 insertions(+) create mode 100644 .github/workflows/micropython.yml create mode 100644 README.md create mode 100644 ci/micropython.sh create mode 100644 micropython/board/PIMORONI_PICO_PLUS2/board.json create mode 100644 micropython/board/PIMORONI_PICO_PLUS2/manifest.py create mode 100644 micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.cmake create mode 100644 micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.h create mode 100644 micropython/board/PIMORONI_PICO_PLUS2/mpconfigvariant.cmake create mode 100644 micropython/board/PIMORONI_PICO_PLUS2/mpconfigvariant_PSRAM.cmake create mode 100644 micropython/board/PIMORONI_PICO_PLUS2/pins.csv create mode 100644 micropython/board/PIMORONI_PLASMA2350/board.json create mode 100644 micropython/board/PIMORONI_PLASMA2350/manifest.py create mode 100644 micropython/board/PIMORONI_PLASMA2350/mpconfigboard.cmake create mode 100644 micropython/board/PIMORONI_PLASMA2350/mpconfigboard.h create mode 100644 micropython/board/PIMORONI_PLASMA2350/pins.csv create mode 100644 micropython/board/PIMORONI_TINY2350/board.json create mode 100644 micropython/board/PIMORONI_TINY2350/manifest.py create mode 100644 micropython/board/PIMORONI_TINY2350/mpconfigboard.cmake create mode 100644 micropython/board/PIMORONI_TINY2350/mpconfigboard.h create mode 100644 micropython/board/RPI_PICO2/board.json create mode 100644 micropython/board/RPI_PICO2/manifest.py create mode 100644 micropython/board/RPI_PICO2/mpconfigboard.cmake create mode 100644 micropython/board/RPI_PICO2/mpconfigboard.h create mode 100644 micropython/board/RPI_PICO2/pins.csv create mode 100644 micropython/board/RPI_PICO2B/board.json create mode 100644 micropython/board/RPI_PICO2B/manifest.py create mode 100644 micropython/board/RPI_PICO2B/mpconfigboard.cmake create mode 100644 micropython/board/RPI_PICO2B/mpconfigboard.h create mode 100644 micropython/board/RPI_PICO2B/pico2b.h create mode 100644 micropython/board/RPI_PICO2B/pins.csv diff --git a/.github/workflows/micropython.yml b/.github/workflows/micropython.yml new file mode 100644 index 0000000..9609f4a --- /dev/null +++ b/.github/workflows/micropython.yml @@ -0,0 +1,122 @@ +name: MicroPython + +on: + push: + pull_request: + release: + types: [created] + +env: + MICROPYTHON_VERSION: feature/psram + MICROPYTHON_FLAVOUR: pimoroni + +jobs: + build: + name: ${{ matrix.name }} (${{ matrix.board }}) + runs-on: ubuntu-20.04 + continue-on-error: true + strategy: + matrix: + include: + - name: pico2_rp2350 + board: RPI_PICO2 + - name: pico2b_rp2350 + board: RPI_PICO2B + - name: plasma2350 + board: PIMORONI_PLASMA2350 + - name: tiny2350 + board: PIMORONI_TINY2350 + - name: pico_plus2_rp2350_psram + board: PIMORONI_PICO_PLUS2 + - name: pico_plus2_rp2350 + board: PIMORONI_PICO_PLUS2 + variant: PSRAM + + 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-rp2350-${{ github.sha }}" + 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/modules/micropython-${{ matrix.name }}.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 + + steps: + - name: Compiler Cache + uses: actions/cache@v4 + with: + path: /home/runner/.ccache + key: ccache-micropython-${{ matrix.name }}-${{ github.ref }}-${{ github.sha }} + restore-keys: | + ccache-micropython-${{ matrix.name }}-${{ github.ref }} + ccache-micropython-${{ matrix.name }}- + + - uses: actions/checkout@v4 + with: + submodules: true + path: pimoroni-pico-rp2350-${{ github.sha }} + + - name: Install Arm GNU Toolchain (arm-none-eabi-gcc) + uses: carlosperate/arm-none-eabi-gcc-action@v1 + with: + release: '9-2020-q2' + + - 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.1 + path: py_decl + + - name: Build MPY Cross + run: | + source $BUILD_TOOLS + micropython_build_mpy_cross + + - name: Configure MicroPython + shell: bash + run: | + source $BUILD_TOOLS + micropython_version + cmake_configure + + - name: Build MicroPython + shell: bash + run: | + source $BUILD_TOOLS + cmake_build + + - 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 + 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 }} + 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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..d267669 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# Pimoroni Pico MicroPython for RP2350 / Pico2 boards + +This repository includes board definitions and build tooling for the Pimoroni, +batteries-included flavour of MicroPython for RP2350 / Pico2 boards. + +| Board | MicroPython Flavour | Download Link | Notes | +|-------|---------------------|---------------|-------| +| Pico Plus 2 | pico_plus2_rp2350 | TBC | Does not enable PSRAM +| Pico Plus 2 PSRAM | pico_plus2_rp2350_psram | TBC | :warning: Experimental: Enables PSRAM +| Plasma 2350 | plasma2350 | TBC | +| Tiny 2350 | tiny2350 | TBC | +| PGA2350 | pico2b_rp2350 | TBC | Requires the "B" variant for extra pins +| Pi Pico 2 | pico2_rp2350 | TBC | This gives you the Pimoroni Pico libs on a vanilla Pico 2 \ No newline at end of file diff --git a/ci/micropython.sh b/ci/micropython.sh new file mode 100644 index 0000000..0a4b53a --- /dev/null +++ b/ci/micropython.sh @@ -0,0 +1,65 @@ +export TERM=${TERM:="xterm-256color"} + +function log_success { + echo -e "$(tput setaf 2)$1$(tput sgr0)" +} + +function log_inform { + echo -e "$(tput setaf 6)$1$(tput sgr0)" +} + +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 + git checkout $MICROPYTHON_VERSION + git submodule update --init lib/pico-sdk + git submodule update --init lib/cyw43-driver + git submodule update --init lib/lwip + git submodule update --init lib/mbedtls + git submodule update --init lib/micropython-lib + git submodule update --init lib/tinyusb + git submodule update --init lib/btstack + cd ../ +} + +function micropython_build_mpy_cross { + cd micropython/mpy-cross + ccache --zero-stats || true + CROSS_COMPILE="ccache " make + ccache --show-stats || true + cd ../../ +} + +function apt_install_build_deps { + sudo apt update && sudo apt install ccache +} + +function micropython_version { + echo "MICROPY_GIT_TAG=$MICROPYTHON_VERSION, $BOARD_NAME $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 \ + -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 \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache +} + +function cmake_build { + ccache --zero-stats || true + cmake --build build-$BOARD_NAME -j 2 + ccache --show-stats || true + cd build-$BOARD_NAME + cp firmware.uf2 $RELEASE_FILE.uf2 +} \ No newline at end of file diff --git a/micropython/board/PIMORONI_PICO_PLUS2/board.json b/micropython/board/PIMORONI_PICO_PLUS2/board.json new file mode 100644 index 0000000..2b9cbc9 --- /dev/null +++ b/micropython/board/PIMORONI_PICO_PLUS2/board.json @@ -0,0 +1,19 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Dual-core", + "External Flash", + "USB" + ], + "images": [ + "rp2-picos.jpg" + ], + "mcu": "rp2350", + "product": "Pico2", + "thumbnail": "", + "url": "https://shop.pimoroni.com/products/raspberry-pi-pico-plus2/", + "vendor": "Raspberry Pi" +} diff --git a/micropython/board/PIMORONI_PICO_PLUS2/manifest.py b/micropython/board/PIMORONI_PICO_PLUS2/manifest.py new file mode 100644 index 0000000..30ce0dd --- /dev/null +++ b/micropython/board/PIMORONI_PICO_PLUS2/manifest.py @@ -0,0 +1,3 @@ +include("$(PORT_DIR)/boards/manifest.py") + +include("../manifest_pico.py") \ No newline at end of file diff --git a/micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.cmake b/micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.cmake new file mode 100644 index 0000000..9a18365 --- /dev/null +++ b/micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.cmake @@ -0,0 +1,9 @@ +# cmake file for Raspberry Pi Pico +set(PICO_BOARD "pimoroni_pico_plus2_rp2350") +set(PICO_PLATFORM "rp2350") +set(PICO_NUM_GPIOS 48) + +# Board specific version of the frozen manifest +set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) + +set(MICROPY_C_HEAP_SIZE 4096) diff --git a/micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.h b/micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.h new file mode 100644 index 0000000..6afd8ec --- /dev/null +++ b/micropython/board/PIMORONI_PICO_PLUS2/mpconfigboard.h @@ -0,0 +1,8 @@ +// Board and hardware specific configuration +#ifndef MICROPY_HW_BOARD_NAME +// Might be defined by mpconfigvariant.cmake +#define MICROPY_HW_BOARD_NAME "Pimoroni Pico Plus 2" +#endif +#define MICROPY_HW_FLASH_STORAGE_BYTES (1024 * 1024 * 15) + +#define MICROPY_HW_PSRAM_CS_PIN PIMORONI_PICO_PLUS2_PSRAM_CS_PIN diff --git a/micropython/board/PIMORONI_PICO_PLUS2/mpconfigvariant.cmake b/micropython/board/PIMORONI_PICO_PLUS2/mpconfigvariant.cmake new file mode 100644 index 0000000..e69de29 diff --git a/micropython/board/PIMORONI_PICO_PLUS2/mpconfigvariant_PSRAM.cmake b/micropython/board/PIMORONI_PICO_PLUS2/mpconfigvariant_PSRAM.cmake new file mode 100644 index 0000000..b6978de --- /dev/null +++ b/micropython/board/PIMORONI_PICO_PLUS2/mpconfigvariant_PSRAM.cmake @@ -0,0 +1,5 @@ +# Override the MicroPython board name +list(APPEND MICROPY_DEF_BOARD + "MICROPY_HW_ENABLE_PSRAM=1" + "MICROPY_HW_BOARD_NAME=\"Pimoroni Pico Plus 2 (PSRAM)\"" +) diff --git a/micropython/board/PIMORONI_PICO_PLUS2/pins.csv b/micropython/board/PIMORONI_PICO_PLUS2/pins.csv new file mode 100644 index 0000000..9d58ee8 --- /dev/null +++ b/micropython/board/PIMORONI_PICO_PLUS2/pins.csv @@ -0,0 +1,47 @@ +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 +GP29,GPIO29 +GP30,GPIO30 +GP31,GPIO31 +GP32,GPIO32 +GP33,GPIO33 +GP34,GPIO34 +GP35,GPIO35 +GP36,GPIO36 +GP37,GPIO37 +GP38,GPIO38 +GP39,GPIO39 +GP40,GPIO40 +GP41,GPIO41 +GP42,GPIO42 +GP43,GPIO43 +GP44,GPIO44 +GP45,GPIO45 +GP46,GPIO46 +GP47,GPIO47 +LED,GPIO25 \ No newline at end of file diff --git a/micropython/board/PIMORONI_PLASMA2350/board.json b/micropython/board/PIMORONI_PLASMA2350/board.json new file mode 100644 index 0000000..ee19396 --- /dev/null +++ b/micropython/board/PIMORONI_PLASMA2350/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": "rp2350", + "product": "Tiny2350", + "thumbnail": "", + "url": "https://shop.pimoroni.com/products/tiny-2350", + "vendor": "Pimoroni" +} diff --git a/micropython/board/PIMORONI_PLASMA2350/manifest.py b/micropython/board/PIMORONI_PLASMA2350/manifest.py new file mode 100644 index 0000000..30ce0dd --- /dev/null +++ b/micropython/board/PIMORONI_PLASMA2350/manifest.py @@ -0,0 +1,3 @@ +include("$(PORT_DIR)/boards/manifest.py") + +include("../manifest_pico.py") \ No newline at end of file diff --git a/micropython/board/PIMORONI_PLASMA2350/mpconfigboard.cmake b/micropython/board/PIMORONI_PLASMA2350/mpconfigboard.cmake new file mode 100644 index 0000000..7ba0af6 --- /dev/null +++ b/micropython/board/PIMORONI_PLASMA2350/mpconfigboard.cmake @@ -0,0 +1,8 @@ +# cmake file for Raspberry Pi Pico +set(PICO_BOARD "pimoroni_plasma2350") +set(PICO_PLATFORM "rp2350") + +# Board specific version of the frozen manifest +set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) + +set(MICROPY_C_HEAP_SIZE 4096) diff --git a/micropython/board/PIMORONI_PLASMA2350/mpconfigboard.h b/micropython/board/PIMORONI_PLASMA2350/mpconfigboard.h new file mode 100644 index 0000000..b50654e --- /dev/null +++ b/micropython/board/PIMORONI_PLASMA2350/mpconfigboard.h @@ -0,0 +1,7 @@ +// Board and hardware specific configuration +#define MICROPY_HW_BOARD_NAME "Pimoroni Plasma 2350" +#define MICROPY_HW_FLASH_STORAGE_BYTES (1024 * 1024 * 7) + +// I2C0 (non-default) +#define MICROPY_HW_I2C0_SCL (PLASMA2350_SDA_PIN) +#define MICROPY_HW_I2C0_SDA (PLASMA2350_SCL_PIN) \ No newline at end of file diff --git a/micropython/board/PIMORONI_PLASMA2350/pins.csv b/micropython/board/PIMORONI_PLASMA2350/pins.csv new file mode 100644 index 0000000..ca53790 --- /dev/null +++ b/micropython/board/PIMORONI_PLASMA2350/pins.csv @@ -0,0 +1,33 @@ +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 +SW_A,GPIO12 +LED,GPIO17 +LED_R,GPIO16 +LED_G,GPIO17 +LED_B,GPIO18 +USER_SW,GPIO22 \ No newline at end of file diff --git a/micropython/board/PIMORONI_TINY2350/board.json b/micropython/board/PIMORONI_TINY2350/board.json new file mode 100644 index 0000000..ee19396 --- /dev/null +++ b/micropython/board/PIMORONI_TINY2350/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": "rp2350", + "product": "Tiny2350", + "thumbnail": "", + "url": "https://shop.pimoroni.com/products/tiny-2350", + "vendor": "Pimoroni" +} diff --git a/micropython/board/PIMORONI_TINY2350/manifest.py b/micropython/board/PIMORONI_TINY2350/manifest.py new file mode 100644 index 0000000..30ce0dd --- /dev/null +++ b/micropython/board/PIMORONI_TINY2350/manifest.py @@ -0,0 +1,3 @@ +include("$(PORT_DIR)/boards/manifest.py") + +include("../manifest_pico.py") \ No newline at end of file diff --git a/micropython/board/PIMORONI_TINY2350/mpconfigboard.cmake b/micropython/board/PIMORONI_TINY2350/mpconfigboard.cmake new file mode 100644 index 0000000..db6a8b3 --- /dev/null +++ b/micropython/board/PIMORONI_TINY2350/mpconfigboard.cmake @@ -0,0 +1,8 @@ +# cmake file for Raspberry Pi Pico +set(PICO_BOARD "pimoroni_tiny2350") +set(PICO_PLATFORM "rp2350") + +# Board specific version of the frozen manifest +set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) + +set(MICROPY_C_HEAP_SIZE 4096) diff --git a/micropython/board/PIMORONI_TINY2350/mpconfigboard.h b/micropython/board/PIMORONI_TINY2350/mpconfigboard.h new file mode 100644 index 0000000..9681afc --- /dev/null +++ b/micropython/board/PIMORONI_TINY2350/mpconfigboard.h @@ -0,0 +1,7 @@ +// Board and hardware specific configuration +#define MICROPY_HW_BOARD_NAME "Pimoroni Tiny 2350" +#define MICROPY_HW_FLASH_STORAGE_BYTES (1024 * 1024 * 7) + +// I2C0 (non-default) +#define MICROPY_HW_I2C0_SCL (4) +#define MICROPY_HW_I2C0_SDA (5) \ No newline at end of file diff --git a/micropython/board/RPI_PICO2/board.json b/micropython/board/RPI_PICO2/board.json new file mode 100644 index 0000000..d27a82f --- /dev/null +++ b/micropython/board/RPI_PICO2/board.json @@ -0,0 +1,19 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Dual-core", + "External Flash", + "USB" + ], + "images": [ + "rp2-picos.jpg" + ], + "mcu": "rp2350", + "product": "Pico2", + "thumbnail": "", + "url": "https://www.raspberrypi.com/products/raspberry-pi-pico2/", + "vendor": "Raspberry Pi" +} diff --git a/micropython/board/RPI_PICO2/manifest.py b/micropython/board/RPI_PICO2/manifest.py new file mode 100644 index 0000000..30ce0dd --- /dev/null +++ b/micropython/board/RPI_PICO2/manifest.py @@ -0,0 +1,3 @@ +include("$(PORT_DIR)/boards/manifest.py") + +include("../manifest_pico.py") \ No newline at end of file diff --git a/micropython/board/RPI_PICO2/mpconfigboard.cmake b/micropython/board/RPI_PICO2/mpconfigboard.cmake new file mode 100644 index 0000000..6b4a7cc --- /dev/null +++ b/micropython/board/RPI_PICO2/mpconfigboard.cmake @@ -0,0 +1,8 @@ +# cmake file for Raspberry Pi Pico +set(PICO_BOARD "pico2") +set(PICO_PLATFORM "rp2350") + +# Board specific version of the frozen manifest +set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) + +set(MICROPY_C_HEAP_SIZE 4096) diff --git a/micropython/board/RPI_PICO2/mpconfigboard.h b/micropython/board/RPI_PICO2/mpconfigboard.h new file mode 100644 index 0000000..8534e4e --- /dev/null +++ b/micropython/board/RPI_PICO2/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/RPI_PICO2/pins.csv b/micropython/board/RPI_PICO2/pins.csv new file mode 100644 index 0000000..16e3340 --- /dev/null +++ b/micropython/board/RPI_PICO2/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 diff --git a/micropython/board/RPI_PICO2B/board.json b/micropython/board/RPI_PICO2B/board.json new file mode 100644 index 0000000..d27a82f --- /dev/null +++ b/micropython/board/RPI_PICO2B/board.json @@ -0,0 +1,19 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Dual-core", + "External Flash", + "USB" + ], + "images": [ + "rp2-picos.jpg" + ], + "mcu": "rp2350", + "product": "Pico2", + "thumbnail": "", + "url": "https://www.raspberrypi.com/products/raspberry-pi-pico2/", + "vendor": "Raspberry Pi" +} diff --git a/micropython/board/RPI_PICO2B/manifest.py b/micropython/board/RPI_PICO2B/manifest.py new file mode 100644 index 0000000..30ce0dd --- /dev/null +++ b/micropython/board/RPI_PICO2B/manifest.py @@ -0,0 +1,3 @@ +include("$(PORT_DIR)/boards/manifest.py") + +include("../manifest_pico.py") \ No newline at end of file diff --git a/micropython/board/RPI_PICO2B/mpconfigboard.cmake b/micropython/board/RPI_PICO2B/mpconfigboard.cmake new file mode 100644 index 0000000..6ff6ef9 --- /dev/null +++ b/micropython/board/RPI_PICO2B/mpconfigboard.cmake @@ -0,0 +1,12 @@ +# cmake file for Raspberry Pi Pico +set(PICO_BOARD "pico2b") +set(PICO_PLATFORM "rp2350") + +set(PICO_BOARD_HEADER_DIRS ${CMAKE_CURRENT_LIST_DIR}) + +# Board specific version of the frozen manifest +set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) + +set(MICROPY_C_HEAP_SIZE 4096) + +set(PICO_NUM_GPIOS 48) diff --git a/micropython/board/RPI_PICO2B/mpconfigboard.h b/micropython/board/RPI_PICO2B/mpconfigboard.h new file mode 100644 index 0000000..8534e4e --- /dev/null +++ b/micropython/board/RPI_PICO2B/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/RPI_PICO2B/pico2b.h b/micropython/board/RPI_PICO2B/pico2b.h new file mode 100644 index 0000000..f3da567 --- /dev/null +++ b/micropython/board/RPI_PICO2B/pico2b.h @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +// ----------------------------------------------------- +// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO +// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES +// ----------------------------------------------------- + +// This header may be included by other board headers as "boards/pico.h" + +// pico_cmake_set PICO_PLATFORM=rp2350 + +#ifndef _BOARDS_PICO2_H +#define _BOARDS_PICO2_H + +// For board detection +#define RASPBERRYPI_PICO2 + +// --- RP2350 VARIANT --- +// not PICO_RP2350A + +// --- UART --- +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +// --- LED --- +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN 25 +#endif +// no PICO_DEFAULT_WS2812_PIN + +// --- I2C --- +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 0 +#endif +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 4 +#endif +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 5 +#endif + +// --- SPI --- +#ifndef PICO_DEFAULT_SPI +#define PICO_DEFAULT_SPI 0 +#endif +#ifndef PICO_DEFAULT_SPI_SCK_PIN +#define PICO_DEFAULT_SPI_SCK_PIN 18 +#endif +#ifndef PICO_DEFAULT_SPI_TX_PIN +#define PICO_DEFAULT_SPI_TX_PIN 19 +#endif +#ifndef PICO_DEFAULT_SPI_RX_PIN +#define PICO_DEFAULT_SPI_RX_PIN 16 +#endif +#ifndef PICO_DEFAULT_SPI_CSN_PIN +#define PICO_DEFAULT_SPI_CSN_PIN 17 +#endif + +// --- FLASH --- + +#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1 + +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +// pico_cmake_set_default PICO_FLASH_SIZE_BYTES = (4 * 1024 * 1024) +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) +#endif +// Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads) +#define PICO_SMPS_MODE_PIN 23 + +// The GPIO Pin used to read VBUS to determine if the device is battery powered. +#ifndef PICO_VBUS_PIN +#define PICO_VBUS_PIN 24 +#endif + +// The GPIO Pin used to monitor VSYS. Typically you would use this with ADC. +// There is an example in adc/read_vsys in pico-examples. +#ifndef PICO_VSYS_PIN +#define PICO_VSYS_PIN 29 +#endif + +#ifndef PICO_RP2350_A2_SUPPORTED +#define PICO_RP2350_A2_SUPPORTED 1 +#endif + +#endif diff --git a/micropython/board/RPI_PICO2B/pins.csv b/micropython/board/RPI_PICO2B/pins.csv new file mode 100644 index 0000000..9d58ee8 --- /dev/null +++ b/micropython/board/RPI_PICO2B/pins.csv @@ -0,0 +1,47 @@ +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 +GP29,GPIO29 +GP30,GPIO30 +GP31,GPIO31 +GP32,GPIO32 +GP33,GPIO33 +GP34,GPIO34 +GP35,GPIO35 +GP36,GPIO36 +GP37,GPIO37 +GP38,GPIO38 +GP39,GPIO39 +GP40,GPIO40 +GP41,GPIO41 +GP42,GPIO42 +GP43,GPIO43 +GP44,GPIO44 +GP45,GPIO45 +GP46,GPIO46 +GP47,GPIO47 +LED,GPIO25 \ No newline at end of file