From 30b42b924ad5d4dddd44678c8565d242538bd162 Mon Sep 17 00:00:00 2001 From: Eric Helgeson Date: Wed, 4 Dec 2024 21:29:40 -0600 Subject: [PATCH] build: add Pico2/Pico2W build target with universal Pico 1 & 2 uf2. --- .github/workflows/firmware_build.yml | 2 +- .gitignore | 1 + boards/rpipico2w.json | 55 +++++++++++++++++++ .../BlueSCSI_platform_network.cpp | 2 + platformio.ini | 17 +++++- utils/rename_binaries.sh | 15 +++-- 6 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 boards/rpipico2w.json diff --git a/.github/workflows/firmware_build.yml b/.github/workflows/firmware_build.yml index d60a84b6..ae3d1156 100644 --- a/.github/workflows/firmware_build.yml +++ b/.github/workflows/firmware_build.yml @@ -33,7 +33,7 @@ jobs: - name: Build firmware run: | cd BlueSCSI - pio run -v -e BlueSCSI_Pico + pio run -v -e BlueSCSI_Pico -e BlueSCSI_Pico2 - name: Rename firmware files run: | diff --git a/.gitignore b/.gitignore index a1182732..c3f7894b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ dist/ .vscode/extensions.json cc-nc-hardware/*/*-backups/ .idea/ +distrib/ diff --git a/boards/rpipico2w.json b/boards/rpipico2w.json new file mode 100644 index 00000000..b666be36 --- /dev/null +++ b/boards/rpipico2w.json @@ -0,0 +1,55 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x2E8A", + "usb_pid": "0xF00F" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_RASPBERRY_PI_PICO_2W -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 -DPICO_CYW43_SUPPORTED=1 -DCYW43_PIN_WL_DYNAMIC=1", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x2E8A", + "0xF00F" + ] + ], + "mcu": "rp2350", + "variant": "rpipico2w" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino" + ], + "name": "Pico 2W", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 4194304, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Raspberry Pi" +} \ No newline at end of file diff --git a/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_network.cpp b/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_network.cpp index 525034c4..17256787 100644 --- a/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_network.cpp +++ b/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_network.cpp @@ -37,6 +37,8 @@ static bool network_in_use = false; bool __not_in_flash_func(platform_network_supported)() { + // FIXME: This method currently incorrectly returns true on the Pico2 (non-wifi) + // Track here: https://github.com/earlephilhower/arduino-pico/issues/2671 return rp2040.isPicoW(); } diff --git a/platformio.ini b/platformio.ini index 61de4088..d2d24da5 100644 --- a/platformio.ini +++ b/platformio.ini @@ -12,7 +12,7 @@ default_envs = BlueSCSI_Pico ; BlueSCSI RP2040 hardware platform, based on the Raspberry Pi foundation RP2040 microcontroller [env:BlueSCSI_Pico] -platform = https://github.com/maxgerhardt/platform-raspberrypi.git#2d445020acf8b792768a5fa5ba1870ac9607c11c +platform = https://github.com/maxgerhardt/platform-raspberrypi.git#19e30129fb1428b823be585c787dcb4ac0d9014c platform_packages = framework-arduinopico@https://github.com/BlueSCSI/arduino-pico-internal.git#v4.1.1-DaynaPORT framework = arduino @@ -52,6 +52,21 @@ build_flags = -DCYW43_LWIP=0 -DCYW43_USE_OTP_MAC=0 +[env:BlueSCSI_Pico2] +board = rpipico2w +extends = env:BlueSCSI_Pico +platform = https://github.com/maxgerhardt/platform-raspberrypi.git#19e30129fb1428b823be585c787dcb4ac0d9014c +platform_packages = + framework-arduinopico@https://github.com/BlueSCSI/arduino-pico-internal.git#v4.3.0-DaynaPORT +build_flags = + ${env:BlueSCSI_Pico.build_flags} + -DCYW43_PIO_CLOCK_DIV_DYNAMIC=1 + -DBLUESCSI_PICO2=1 +; build flags mirroring the framework-arduinopico#v4.1.1-DaynaPORT static library build + -DPICO_CYW43_ARCH_POLL=1 + -DCYW43_LWIP=0 + -DCYW43_USE_OTP_MAC=0 + ; Experimental Audio build ; Requires separate hardware and overclock. ; For experimentation only, do not use. diff --git a/utils/rename_binaries.sh b/utils/rename_binaries.sh index ea2e3905..eb88f60e 100755 --- a/utils/rename_binaries.sh +++ b/utils/rename_binaries.sh @@ -1,16 +1,19 @@ -#!/bin/bash +#!/usr/bin/env bash # This script renames the built binaries according to version # number and platform. - +set -e +set -x mkdir -p distrib DATE=$(date +%Y-%m-%d) VERSION=$(git describe --always) -for file in $(ls .pio/build/*/*.bin .pio/build/*/*.elf .pio/build/*/*.uf2) +for file in .pio/build/*/*.bin .pio/build/*/*.elf .pio/build/*/*.uf2 do - NEWNAME=$(echo $file | sed 's|.pio/build/\([^/]*\)/\(.*\)\.\(.*\)|\1_'$DATE'_'$VERSION'.\3|') - echo $file to distrib/$NEWNAME - cp $file distrib/$NEWNAME + NEWNAME=$(echo "$file" | sed 's|.pio/build/\([^/]*\)/\(.*\)\.\(.*\)|\1_'$DATE'_'$VERSION'.\3|') + echo "$file" to distrib/"$NEWNAME" + cp "$file" distrib/"$NEWNAME" done + +cat distrib/*.uf2 > distrib/BlueSCSI_Universal_"$DATE"_"$VERSION".uf2 \ No newline at end of file