Skip to content

Commit 33694a1

Browse files
Add RP2350 support, new boards (earlephilhower#2337)
* Migrate RP2040-specific bits to separate dirs * Add chip to boards.txt, isolate RP2040-specifics * Add RP2350 boot2, bearssl, and libraries * Platform.IO adjust to new paths * Add RPIPICO2 JSON for P.IO * Add RP2350 to Platform.io * Update Picotool and OpenOCD for all hosts * Use picotool to generate UF2s * Build separate libpico blobs serially Thanks for the review, @aarturo182 ! * Add RP2350 to CI * Allow Ethernet/WiFi building for RP2350 * Update Adafruit TinyUSB to latest * Test skip fix * Make RP2350 Picotool work. update USB ID * Fix EEPROM/FS flash locations RP2350 adds a 4K header sector to the UF2, meaning we have 4K less total flash to work with. Adjust all constants appropriately on the RP2350. * Adds ilabs board and PSRAM support. (earlephilhower#2342) * Adds iLabs boards and basic PSRAM support. * Make PSRAM come up as part of chip init Uses SparkFun psram.cpp to set timings on clocks which are defined in the variant file. Prefix things with RP2350_PSRAM_xxx for sanity. Users don't need to call anything, PSRAM "just appears". Still need to add in malloc-type allocation. * Add board SparkFun ProMicro RP2350 Same pinout as the SparkFun ProMicro RP2040 with 8MB PSRAM and RP2350 * Add TLSF library for use w/PSRAM Fork of upstream to include add'l C++ warning fixes. * Add pmalloc/pcalloc to use PSRAM memory free() and realloc() all look at the pointer passed in and jump to the appropriate handler. Also takes care of stopping IRQs and taking the malloc mutex to support multicore and FreeRTOS (when that workd) * Fix BOOTSEL for RP2350 * Add simple rp2040.idleOtherCore test * Add Generic RP2350 and clean up PSRAM menus Commercial boards now only have 1 size PSRAM, no need to have menu for them. * Add Solder Party RP2350 Stamp boards (earlephilhower#2352) * Add PSRAM heap info helpers, mutex lock mallinfo * Add RP2350 docs * FreeRTOS and OTA unsupported warnings for RP2350
1 parent 815e17b commit 33694a1

File tree

213 files changed

+6785
-1173
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

213 files changed

+6785
-1173
lines changed

.github/workflows/pull-request.yml

+33-1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,37 @@ jobs:
7070
cd ..
7171
bash ./tests/build.sh
7272
73+
# Build all rp2350 examples on linux (core and Arduino IDE)
74+
build-rp2350-linux:
75+
name: Build RP2350 ${{ matrix.chunk }}
76+
runs-on: ubuntu-latest
77+
strategy:
78+
matrix:
79+
chunk: [0, 1, 2, 3, 4, 5]
80+
steps:
81+
- uses: actions/checkout@v4
82+
with:
83+
submodules: true
84+
- uses: actions/setup-python@v5
85+
with:
86+
python-version: '3.x'
87+
- name: Cache Linux toolchain
88+
id: cache-linux
89+
uses: actions/cache@v4
90+
with:
91+
path: ./tools/dist
92+
key: ${{ runner.os }}-${{ hashFiles('package/package_pico_index.template.json', 'tests/common.sh') }}
93+
- name: Build Sketches
94+
env:
95+
BUILD_PARITY: custom
96+
mod: 6
97+
rem: ${{ matrix.chunk }}
98+
run: |
99+
cd pico-sdk
100+
git submodule update --init
101+
cd ..
102+
bash ./tests/build-rp2350.sh
103+
73104
# Build TinyUSB examples, requires custom build command line
74105
build-tinyusb:
75106
name: Build TinyUSB Examples
@@ -199,8 +230,9 @@ jobs:
199230
pip install --upgrade platformio
200231
pio pkg install --global --platform https://github.com/maxgerhardt/platform-raspberrypi.git
201232
pio pkg install --global --tool symlink://.
233+
cp -f /home/runner/work/arduino-pico/arduino-pico/tools/json/*.json /home/runner/.platformio/platforms/raspberrypi/boards/.
202234
- name: Build Multicore Example
203-
run: pio ci --board=rpipico --board=adafruit_feather -O "platform_packages=framework-arduinopico@symlink:///home/runner/work/arduino-pico/arduino-pico" libraries/rp2040/examples/Multicore/Multicore.ino
235+
run: pio ci -v --board=rpipico --board=rpipico2 --board=adafruit_feather -O "platform_packages=framework-arduinopico@symlink:///home/runner/work/arduino-pico/arduino-pico" libraries/rp2040/examples/Multicore/Multicore.ino
204236
- name: Build Fade Example
205237
run: pio ci --board=rpipico --board=adafruit_feather -O "platform_packages=framework-arduinopico@symlink:///home/runner/work/arduino-pico/arduino-pico" libraries/rp2040/examples/Fade/Fade.ino
206238
- name: Build TinyUSB Example

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,6 @@
4343
[submodule "libraries/AsyncUDP"]
4444
path = libraries/AsyncUDP
4545
url = https://github.com/earlephilhower/AsyncUDP.git
46+
[submodule "cores/rp2040/tlsf"]
47+
path = lib/tlsf
48+
url = https://github.com/earlephilhower/tlsf.git

README.md

+16-6
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
[![Release](https://img.shields.io/github/v/release/earlephilhower/arduino-pico?style=plastic)](https://github.com/earlephilhower/arduino-pico/releases)
33
[![Gitter](https://img.shields.io/gitter/room/earlephilhower/arduino-pico?style=plastic)](https://gitter.im/arduino-pico/community)
44

5-
Raspberry Pi Pico Arduino core, for all RP2040 boards
5+
Raspberry Pi Pico Arduino core, for all RP2040 and RP2350 boards
66

7-
This is a port of the RP2040 (Raspberry Pi Pico processor) to the Arduino ecosystem. It uses the bare Raspberry Pi Pico SDK and a custom GCC 12.3/Newlib 4.0 toolchain.
7+
This is a port of Arduino to the RP2040 (Raspberry Pi Pico processor) anr RP2350 (Raspberry Pi Pico 2 processor). It uses the bare Raspberry Pi Pico SDK and a custom GCC 12.3/Newlib 4.0 toolchain.
88

99
# Documentation
1010
See https://arduino-pico.readthedocs.io/en/latest/ along with the examples for more detailed usage information.
@@ -15,6 +15,7 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo
1515
# Supported Boards
1616
* Raspberry Pi Pico
1717
* Raspberry Pi Pico W
18+
* Raspberry Pi Pico 2
1819
* 0xCB Helios
1920
* Adafruit Feather RP2040
2021
* Adafruit Feather RP2040 SCORPIO
@@ -54,6 +55,8 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo
5455
* Invector Labs Challenger RP2040 SubGHz
5556
* Invector Labs Challenger RP2040 SD/RTC
5657
* Invector Labs Challenger RP2040 UWB
58+
* Invector Labs Challenger RP2350 BConnect
59+
* Invector Labs Challenger RP2350 WiFi/BLE
5760
* Invector Labs RPICO32
5861
* Melopero Cookie RP2040
5962
* Melopero Shake RP2040
@@ -74,8 +77,11 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo
7477
* Seeed XIAO RP2040
7578
* Silicognition RP2040-Shim
7679
* Solder Party RP2040 Stamp
80+
* Solder Party RP2350 Stamp
81+
* Solder Party RP2350 Stamp XL
7782
* SparkFun MicroMod RP2040
7883
* SparkFun ProMicro RP2040
84+
* SparkFun ProMicro RP2350
7985
* SparkFun Thing Plus RP2040
8086
* uPesy RP2040 DevKit
8187
* VCC-GND YD-RP2040
@@ -90,15 +96,17 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo
9096
* WIZnet W5100S-EVB-Pico
9197
* WIZnet W5500-EVB-Pico
9298
* WIZnet WizFi360-EVB-Pico
93-
* Generic (configurable flash, I/O pins)
99+
* Generic RP2040 (configurable flash, I/O pins)
100+
* Generic RP2350 (configurable flash, I/O pins)
94101

95102
# Features
103+
* Transparent use of PSRAM globals and heap (RP2350 only)
96104
* Adafruit TinyUSB Arduino (USB mouse, keyboard, flash drive, generic HID, CDC Serial, MIDI, WebUSB, others)
97105
* Bluetooth on the PicoW (Classic and BLE) with Keyboard, Mouse, Joystick, and Virtual Serial
98106
* Bluetooth Classic and BLE HID master mode (connect to BT keyboard, mouse, or joystick)
99107
* Generic Arduino USB Serial, Keyboard, Joystick, and Mouse emulation
100108
* WiFi (Pico W, ESP32-based ESPHost, Atmel WINC1500)
101-
* Ethernet (Wired W5500, W5100, ENC28J60)
109+
* Ethernet (Wired WizNet W6100, WizNet W5500, WizNet W5100, ENC28J60)
102110
* HTTP client and server (WebServer)
103111
* SSL/TLS/HTTPS
104112
* Over-the-Air (OTA) upgrades
@@ -219,7 +227,9 @@ Under Windows a local admin user should be able to access the Picoprobe port aut
219227
220228
To set up user-level access to Picoprobes on Ubuntu (and other OSes which use `udev`):
221229
````
222-
echo 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE="0666"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
230+
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE="660", GROUP-"plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
231+
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", MODE="660", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
232+
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000f", MODE="660", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
223233
sudo udevadm control --reload
224234
sudo udevadm trigger -w -s usb
225235
````
@@ -271,7 +281,7 @@ The installed tools include a version of OpenOCD (in the pqt-openocd directory)
271281
* WebServer code modified from the [ESP32 WebServer](https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer) and is copyright (c) 2015 Ivan Grokhotkov and others.
272282
* [Xoshiro-cpp](https://github.com/Reputeless/Xoshiro-cpp) is copyright (c) 2020 Ryo Suzuki and distributed under the MIT license.
273283
* [FatFS low-level filesystem](http://elm-chan.org/fsw/ff/) code is Copyright (C) 2024, ChaN, all rights reserved.
274-
284+
* [TLSF memory manager for PSRAM from Espressif fork](https://github.com/espressif/tlsf) of [original](https://github.com/mattconte/tlsf) by Matthew Conte is copyright Matthew Conte and licensed under the MIT license.
275285
276286
-Earle F. Philhower, III
277287

0 commit comments

Comments
 (0)