瀏覽代碼

build: add Pico2/Pico2W build target with universal Pico 1 & 2 uf2.

Eric Helgeson 10 月之前
父節點
當前提交
30b42b924a

+ 1 - 1
.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: |

+ 1 - 0
.gitignore

@@ -10,3 +10,4 @@ dist/
 .vscode/extensions.json
 cc-nc-hardware/*/*-backups/
 .idea/
+distrib/

+ 55 - 0
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"
+}

+ 2 - 0
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();
 }
 

+ 16 - 1
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.

+ 9 - 6
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