Skip to content

Releases: earlephilhower/arduino-pico

Release 4.1.1 - RISC-V support for the RP2350, GCC 14.2 toolchain

02 Oct 17:34
Compare
Choose a tag to compare

Overview

Hotfix for RISC-V builds under IDE installs. This release includes a new GCC version 14.2 and toolchain to support the RISC-V mode of the RP2350. Users can switch between ARM and RISC-V from the IDE or Platform.IO configuration file.

RISC-V and ARM GCC 14.2 toolchain (#2491)

  • New GCC 14.2 toolchain is required (12.4 RISC-V support is borked)
  • Build RP2350-RISCV libpico, libbearssl
  • Add RP2350-RISCV OTA build, link
  • Add RISC-V FreeRTOS files (configuration still not running, but builds)
  • Allow IDE install to call RISC-V compiler (#2513)

RP2350 Updates (#2491)

  • Fix RP2350 BearSSL library (was copied from RP2040, now built for M33)
  • Remove RP2350 BOOT2.S files, binaries (not used)
  • Newlib locking fixed prototypes
  • Manually force all runtime init code into RP2350 binaries
  • RP2350B additional ADC inputs for ADCInput (#2509)

Platform.IO

  • Update PIO USB docs, fixup used VID/PID macros (#2505)
  • Update PIO platform before compile, add RISC-V PIO build to CI (#2504)

Release 4.1.0 - RISC-V support for the RP2350, GCC 14.2 toolchain

01 Oct 16:33
Compare
Choose a tag to compare

Overview

This release includes a new GCC version 14.2 and toolchain to support the RISC-V mode of the RP2350. Users can switch between ARM and RISC-V from the IDE or Platform.IO configuration file.

RISC-V and ARM GCC 14.2 toolchain (#2491)

  • New GCC 14.2 toolchain is required (12.4 RISC-V support is borked)
  • Build RP2350-RISCV libpico, libbearssl
  • Add RP2350-RISCV OTA build, link
  • Add RISC-V FreeRTOS files (configuration still not running, but builds)

RP2350 Updates (#2491)

  • Fix RP2350 BearSSL library (was copied from RP2040, now built for M33)
  • Remove RP2350 BOOT2.S files, binaries (not used)
  • Newlib locking fixed prototypes
  • Manually force all runtime init code into RP2350 binaries

Platform.IO

  • Update PIO USB docs, fixup used VID/PID macros (#2505)
  • Update PIO platform before compile, add RISC-V PIO build to CI (#2504)

Release 4.0.3 - RP2350 updates and feature parity

24 Sep 14:12
Compare
Choose a tag to compare

Overview

Lots of RP2350 related goodness in the release, including higher performance and full FreeRTOS and OTA support with bug fixes for the RP2350B extra GPIO pins. A new toolchain build is included, moving to GCC 12.4 and Newlib 4.3.0 so be sure to run get.py on your git installations and update all submodules.

Toolchain

  • GCC to 12.4, Newlib to 4.3.0, faster RP2350 libs (#2480)
    This new toolchain speeds up many RP2350 operations by using -O2 optimization in Newlib. This speeds up memcpy over 8x(!) as well as other standard library routines, at the cost of ~10K of flash for additional code.

New Boards

  • Add Datanoise PicoADK v2 (RP2350). (#2413)
  • Add Adafruit Feather RP2350 with HSTX (#2459)

RP2350

  • Add FreeRTOS support for RP2350 (#2406)
  • Enable OTA support for RP2350 (#2472)
  • Don't realloc(nullptr) from PSRAM by default (#2473)
  • Remove CFG_TUSB_DEBUG for rp2350 (#2469)
  • Fix PICO_RP2350B define check for other peripherals (#2463)
  • Fix SerialUART RP2350B define checks
  • Support PIO2 for SoftwareSerial/SerialPIO (#2451)
  • Add "#define PICO_RP2350B 1" since this board is based on RP2350B (#2445)
  • Solderparty_rp2350_stamp_xl: Properly mark as using RP2350B (#2446)

Networking

  • Adds support for ESP Hosted to WiFi/BLE boards and adds a menu item for ESP WiFi selection (#2468)
  • Allow LWIP Ethernet HW IRQs > 32 (#2464)

Wire (I2C) / Peripherals

  • Wire probe clock stretch up to 500us (#2493)
  • I2C lib : implement "bus recovery" feature on timeout reset (#2479)
  • I2C lib: Handle timeout in write() (#2458)
  • Add new Pico SDK AON_Timer module (#2489)

Release 4.0.2 - New boards, new chips, RP2040 fixes

12 Sep 17:32
Compare
Choose a tag to compare

Overview

Important update for the Pico RP2040, including a floating point math fix. Lots of new RP2350 boards and updates (including RP2350B).

RP2350B support

  • Add RP2350B generic/Pimoroni PGA2350 support (#2433)
    All 48 GPIO pins on the RP2350B pin are now available for PIO programs and digital or analog read/write.

New boards

  • Add board Pimornoi Tiny2350 (#2426)
  • Add board Pimoroni Pico Plus 2 (#2415)
  • Add new board: IRIV IO Controller. (#2370)
  • Add Motion 2350 Pro (#2372)

RP2350 (Pico 2) specific updates

  • Fix P.IO MHZ for RP2350, fix RP2350 generic menus (#2366)
  • Fix F_CPU 125MHz setting on RP2350 (#2436)
  • Document E9 non-workaround (#2444)
  • Warn when using PSRAM on non-PSRAM boards (#2441)
  • Update P.IO board definition for PSRAM (#2387)
  • Add SHA256 SDK libs/inclues for RP2350 (#2364)
  • Fix Platform.IO ARDUINO_ARCH_xxx define (#2361)

RP2040 (Pico) specific updates

  • Fix RP2040 FP calls in ROM (#2411)
    The ROM floating point emulation code was not being linked in to builds after the 2.0.0 SDK release. Applications doing floating point math would end up with a panic on simple additions. This re-enables the ROM-based FP emulation code.

Pico-Debug removed

  • Remove even more pico-debug stragglers (#2425)
  • Remove straggler pico-debug references (#2422)
  • Remove pico-debug because it's archived (#2392)
    Pico-Debug is no longer actively supported in the OpenOCD we use, so remove all references. Users will need to use a standalone Debugprobe instead

FreeRTOS

  • Allow reconfiguring individual FreeRTOS config items - fixes #2398 (#2407)
  • Allow configuring maxIRQs (#2401)

Peripherals

  • Ensure sample alignment on PWMAudio example (#2437)
  • libraries/PDM/src/rp2040/pdm.pio.h: pio_gpio_init data in pin. (#2432)
  • Fix SoftwareSerial/SerialPIO inversion and build (#2423)
  • Add TwoWire::writeReadAsync (#2388)
  • Expand documentation to clarify pin notation and Servo usage (#2326)
  • Add serial inversion for UART and SerialPIO (#2395)

Toolchain updates

  • Add P.IO package.JSON to Mac/Win OpenOCD, Picotool (#2376)
  • Update PIOASM to 2.0.0 SDK version (#2369)
  • Windows Picotool add support for upload (#2363)

Release 4.0.1 - Pico 2 (RP2350) Support, SDK 2.0, new boards

26 Aug 05:12
Compare
Choose a tag to compare

Overview

This is a major release with support for the Raspberry Pi Pico 2 (RP2350) using a new SDK 2.0.0. New RP2350-based boards from iLabs, Solder Party, and SparkFun are supported in addition to the Pico 2. The full 512K of RAM and up to 8MB of PSRAM are available for applications to use.

Special thanks to @arturo182 for a great code review that helped get a working RP2350 build even before I had any chips in hand, and to @PontusO, @Architeuthis-Flux, and @gigapod for kindly supplying chips and boards before I could even order them here in the US.

Pico 2 / RP2350

  • Add RP2350 support, new boards (#2337)
    Support for the Pico 2 in ARM mode has been added. A slightly updated toolchain (new OpenOCD and Picotool to support RP2350) is included. The Pico2 support includes PSRAM as a first-class memory and is explained in the documentation. Everything that worked on the RP2040 should work on the RP2350 except for FreeRTOS (requires use of a private RPi fork of the upstream we use) and OTA (requires me to understand the new bootup sequence better). SPI, I2C, LittleFS, EEPROM, PWMAudio, LWIP-based networking, multicore, SDK USB and TinyUSB, and more have been verified.

New Boards

  • Raspberry Pi Pico 2
  • Invector Labs Challenger RP2350 BConnect, Invector Labs Challenger RP2350 WiFi/BLE
  • SparkFun ProMicro RP2350
  • Solder Party RP2350 Stamp, Solder Party RP2350 Stamp XL

New Ethernet Controllers

  • W6100 implementation based on W5500 driver (#2346)
    Driver for WizNet W6100 added, works the same as other lwip_XXX drivers

New SDK

  • Migrate to 2.0.0 SDK (#2336)
    Pico SDK 2.0 is required for RP2350 support and includes a new OpenOCD and Picotool.

Filesystems

  • Add VFS to enable POSIX file I/O operations (#2333)
    FILE-type calls like fopen() and fprintf() can now natively work with LittleFS or SDFS.
  • BREAKING: Remove FS::info64, make FS::info 64-bit (#2335)

(4.0.1 is minor hotfix to help force the IDE to download the new picotool and openocd)

Release 4.0.0 - Pico 2 (RP2350) Support, SDK 2.0, new boards

25 Aug 22:48
Compare
Choose a tag to compare

Overview

This is a major release with support for the Raspberry Pi Pico 2 (RP2350) using a new SDK 2.0.0. New RP2350-based boards from iLabs, Solder Party, and SparkFun are supported in addition to the Pico 2. The full 512K of RAM and up to 8MB of PSRAM are available for applications to use.

Special thanks to @arturo182 for a great code review that helped get a working RP2350 build even before I had any chips in hand, and to @PontusO, @Architeuthis-Flux, and @gigapod for kindly supplying chips and boards before I could even order them here in the US.

Pico 2 / RP2350

  • Add RP2350 support, new boards (#2337)
    Support for the Pico 2 in ARM mode has been added. A slightly updated toolchain (new OpenOCD and Picotool to support RP2350) is included. The Pico2 support includes PSRAM as a first-class memory and is explained in the documentation. Everything that worked on the RP2040 should work on the RP2350 except for FreeRTOS (requires use of a private RPi fork of the upstream we use) and OTA (requires me to understand the new bootup sequence better). SPI, I2C, LittleFS, EEPROM, PWMAudio, LWIP-based networking, multicore, SDK USB and TinyUSB, and more have been verified.

New Boards

  • Raspberry Pi Pico 2
  • Invector Labs Challenger RP2350 BConnect, Invector Labs Challenger RP2350 WiFi/BLE
  • SparkFun ProMicro RP2350
  • Solder Party RP2350 Stamp, Solder Party RP2350 Stamp XL

New Ethernet Controllers

  • W6100 implementation based on W5500 driver (#2346)
    Driver for WizNet W6100 added, works the same as other lwip_XXX drivers

New SDK

  • Migrate to 2.0.0 SDK (#2336)
    Pico SDK 2.0 is required for RP2350 support and includes a new OpenOCD and Picotool.

Filesystems

  • Add VFS to enable POSIX file I/O operations (#2333)
    FILE-type calls like fopen() and fprintf() can now natively work with LittleFS or SDFS.
  • BREAKING: Remove FS::info64, make FS::info 64-bit (#2335)

Release 3.9.5 - Wrap up before the new SDK and chip support

08 Aug 18:06
Compare
Choose a tag to compare

Overview

Minor update with some additional features and bug fixes, before the jump to Pico-SDK 2.0.0 and addition of support for the new Pico2/RP2350.

BT/BLE Joystick Fixes

  • Fix BT/BLE Joystick reports (#2293)

New Features

  • Add RP2040.memcpyDMA for DMA-managed memory copies (#2324)

Libraries and Documentation

  • Minor BearSSL changes for 8266/upstream (#2323)
  • Add checks for Adafruit TinyUSB to USB libs (#2319)
  • Fix minor LWIP wrapper errors (#2310)
  • LwIpIntfDev.end() check _started to prevent crash (#2304)
  • Factor out cut-n-pasted GAMEPAD16 HID structures (#2302)
  • Fix HTTPClient debug output (#2300)
  • Rename Picoprobe upload to DebugProbe new name (#2298)

Release 3.9.4 - New boards, libraries

22 Jul 19:57
Compare
Choose a tag to compare

Overview

Lots of new boards added, as well as a Ticker library for periodic tasks (instead of needing to use the low-level SDK calls). General bug fixes as well.

New Boards/Board Specific Fixes

  • Add Pintronix PinMax board (#2286)
  • Add 4 Amken boards (#2283)
  • Add board BridgeTek IDM2040-43A (#2246)
  • Add board EVN Alpha (#2263)
  • Fix D pin mapping on Adafruit IB/Feather RP2040 (#2259)

FreeRTOS

  • FreeRTOS/Arduino header include fix (#2288)
  • Add FreeRTOS functionality tests (#2257)
  • Update to latest FreeRTOS main, not SMP branch (#2250)

Ticker Library

  • On Timer::once execution, delete the alarm_id (#2245)
  • Add ESP32-compatible Ticker library (#2244)

USB/Bluetooth/HID Device

  • Add true 10- and 16-bit joystick modes (#2276)
  • Avoid deadlock BT/LE HID send when disconnected (#2252)
  • Receive GATT characteristic updates in BTStackLib (#2241)

WiFi/WebServer

  • Fix timeout in WebServer::_uploadReadByte and handleClient() (#2290)
  • Fix leak in HTTPSClient (#2256)

Core Bug Fixes

  • FixPIO assembler flags (#2255)
  • Fixed incorrect AVR compatibility macros. (#2249)

Release 3.9.3

18 Jun 16:53
Compare
Choose a tag to compare

Overview

Multiple new boards were added, alongside several Bluetooth updates (BLE support for the HID Master so you can use BLE mice for input to the PicoW; BT Classic and BLE Joystick input support, and documentation) and some WiFi updates for Windows name resolution and more powerful Webserver abstractions. TinyUSB moved to the latest release as well.

New Boards

  • Add Adafruit Adalogger Feather (#2229)
  • Add METE HOCA Akana R1 (#2230)
  • Added Raspberry Breadstick (#2205)
  • Add GroundStudio Marble Pico board (#2203)

WiFi

  • Add AsyncUDP and simple NetBIOS name lookup server (#2234)
  • Webserver: Add support for filters and removable routes (#2225)

SD card access

  • Fix crash on SD.end() without initial SD.begin() (#2222)

Bluetooth Audio and HID

  • Avoid malloc/free while in HCI callbacks (#2219)
  • For consistency, BTHID Joypad->Joystick (#2218)
  • Add basic A2DP BluetoothAudio documentation (#2217)
  • Add BluetoothHIDMaster documentation (#2216)
  • Add joypad HID master support (#2214)
  • Add BLE support to BluetoothHIDMaster (#2208)
  • Use block writes for BT audio consumers (#2204)

Audio

  • Fix PWMAudio::write(buffer, len) (#2202)

Miscellaneous

  • Remove leftover LWIP debug/redefines (#2213)
  • Upgrade to Adafruit TinyUSB 3.1.5 (#2206)

Release 3.9.2 - OTA hotfix

05 Jun 19:09
Compare
Choose a tag to compare

Overview

OTA hotfix. In 3.9.1 the app would write a LFS-2.6 format filesystem on flash, but the OTA bootloader was only compatible with the original format and so could never actually read any OTA updates. This hotfix rebuilds the OTA bootloader with LFS-2.6 (and original LFS) format support.

Lots of updates, but nothing that should break existing code.

OTA

  • Rebuild OTA bootloader for newer LittleFS version (#2199)
  • Clean up OTA example references to ESP8266 (#2200)

LittleFS Updates

Big upgrade to LittleFS, to version 2.9.3. This version is backwards compatible with the 2.5.1 we were using but will update the on-flash format after the first mount. The filename limitation of 32 characters has also been removed.

  • Move to LittleFS 2.9.3. (#2193)
  • Make LittleFS filenames support full 255 chars (#2192)

Webserver and other ESP32-borrowed fixes

Lots of patches migrated from the ESP32, with new support for cookies in the HTTP client.

  • Allow uploading huge files to WebServer (#2180)
  • Small RAM savings (128b) in WebServer (#2178)
  • Add Cookies to HTTPClient (#2186)
  • Webserver Ignore extra headers in multipart forms (#2184)
  • HTTPClient - Fix case sensitivity for header keys (#2185)
  • Fix POST form parser edge cases (#2182)
  • Fix AdvancedWebServer.ino uptime conversion (#2183)

Bluetooth classic master mode (connect to keyboard/mouse)

  • Bluetooth Master HID and musical keyboard example (#2195)
  • Split out BluetoothHCI for shared usage (#2194)

BluetoothAudio crash fix and new features

  • Add track info support for BT audio sink (#2190)
  • Fix crash on audio end from IRQ, refactor A2DP (#2189)
  • Allow setting SerialBT advertised name (#2181)

Miscellaneous

LWIP can now be allocated 2x the normal memory for cases where performance demands it. In normal operation this is very unlikely.

  • Fix folder name for Archi board (#2191)
  • Add double-mem LWIP option (#2187)
  • Add "Needs Bluetooth" compile warning (#2197)