Skip to content

Releases: earlephilhower/arduino-pico

Release 4.4.1 - Minor refactoring and update

31 Dec 18:41
Compare
Choose a tag to compare

Overview

Minor quality-of-life release for audio output, especially PWMAudio. Precalculating values turns a 65K soft-FPU operation into a linear search of 12 entries in 99.9% of the cases.

I2S and PWMAudio and BluetoothAudio now share a common audio interface to simplify code like BackgroundAudio or ESP8266Audio.

Audio-related

  • Allow setting PWMAudio frequency before begin (#2726)
  • Properly wrap AudioBufferManager block writes (#2725)
  • Add AudioOutputBase keyword
  • Precalculate common PWMAudio dividers, avoid noise (#2714)
  • Add real block write for AudioRequestBuffer (#2712)
  • Overclock to 153.6 MHz (instead of 147.6 MHz) for I²S 48 kHz sample rate (#2708)

Infrastructure

  • Use the distributed ARM ar in libpico, not system (#2721)
  • Don't go through runtime initializers when there is no OTA command (#2697)
  • Fix issue with undefined LED_BUILTIN on Seeed Xiao RP2350 (#2704)

Release 4.4.0 - Semihosting, GProf, and bug fixes

19 Dec 02:02
Compare
Choose a tag to compare

Overview

Major new feature is Semihosting which lets the Pico read and write files (and to the terminal) on the host while debugging. It's very handy for debugging and testing. The debug console can now be directed to the host through the IDE using this capability.

GNU profiling of running applications is also available, but is most useful on the RP2350 due to the RAM requirements.

Audio interfaces are unified under a C++ interface class for easier reuse in libraries or applications like BackgroundAudio. This should be backwards compatible with the prior individual classes.

Semihosting and Profiling

  • Semihosting part of core, RISC-V support (#2685)
  • Add semihosting support (SerialSemi and SemiFS) (#2670)
  • Enable gprof onboard profiling (#2669)
  • Add -O0 optimization mode to menus (#2667)
  • GDB + mklittlefs can export on-device filesystems to the host (#2666)

New/Updated Boards

  • Add Pimoroni Plasma 2350, fix Plasma 2040 I2C (#2698)
  • Add MyMakers RP2040 board (#2692)
  • Modify EVN Alpha board (#2690)
  • Add build.mcu to board definitions (#2673)

WiFi and MDNS

  • Support setting channel for SoftAP (#2695)
  • Add MDNS.addServiceTxt() to SimpleMDNS (#2679)

Audio

  • Derive playback devices from common AudioOutputBase (#2703)
  • Allow I2S constructor to set pins, like PWMAudio (#2702)
  • PWMAudio setFrequency optimization (#2683)
  • Add optional callback parameters for I2S/PWMAudio (#2677)

Release 4.3.1 - Pico W and Pico 2W hotfixes

02 Dec 19:45
Compare
Choose a tag to compare

Overview

Minor update that fixes a busted pinMode call on the Pico W and sets the proper Pico 2 W LED so things like blink.ino will work properly. Increase to LWIP state to support simultaneous SimpleMDNS and WiFiClients.

  • Increase LWIP timeouts to avoid MDNS panics (#2653)
  • Update to Adafruit TinyUSB 3.4.1 (#2647)
  • Fix LED pin for Pico 2W (#2646)
  • Fix for cyw43_wrappers.h build with C code (#2639)
  • Fix pinMode for RP2040 PicoW (#2638)

Release 4.3.0 - Pico 2W and RP2350 WiFi

25 Nov 18:51
Compare
Choose a tag to compare

Overview

Adds WiFi support to RP2350-based boards like the Raspberry Pi Pico 2W, Sparkfun Thing Plus RP2350, and Pimoroni Pico Plus 2W. SDK update to support these new devices.

WiFi and New Boards

  • Update to SDK 2.1.0, add Pico 2W (#2629)
  • Add Adafruit Floppsy board (#2628)
  • Support WiFi/BT/BLE with RP2350 CYW43 boards (#2616)
  • WiFiUDP only emit a packet on flush if not ended (#2618)

Infrastructure

  • Clean up unused parameter warnings (#2624)
  • Avoid memory (de)allocation in GPIO ISR handler (#2623)

Release 4.2.1 - New boards, MDNS, and bug fixes

15 Nov 18:13
Compare
Choose a tag to compare

Overview

Minor update with several new boards and updates to existing ones. For FreeRTOS, a working MDNS responder has been added, and MDNS lookups (xxxx.local) now work for both bare metal and FreeRTOS. I2S input has had a timing fix applied as well.

New Boards

  • Add SparkFun Thing Plus RP2350 (#2605) -- note no WiFi support yet
  • Add wiznet_5100s_evb_pico2, wiznet_5500_evb_pico2 (#2575)
  • Correct pin definitions for XIAO RP2350 (#2591)

MDNS and FreeRTOS

  • Add SimpleMDNS, IGMP, and .local lookup (#2582)
  • SimpleMDNS: let begin return a bool (#2599)

Peripherals

  • Delay LRCK to falling edge of BCK in I2S input (#2592)
  • rp2040.enableDoubleResetBootloader only on RP2040 (#2607)

Release 4.2.0

29 Oct 14:17
Compare
Choose a tag to compare

Overview

Important updates for PSRAM-enabled devices. BLE and FreeRTOS bug fixes. Speed boost for RP2350.

New/Updated Boards

  • Add WIZnet W55RP20-EVB-Pico board (#2555)
  • Add Jumperless and Jumperless V5 to supported boards (#2514)
  • Add seeed xiao rp2350 board (#2533)

RP2350/Pico 2

  • Add ARM assembly optimized memcpy for RP2350 (#2552)
  • Fix getStackPointer() to work in RISC-V and ARM mode (#2526)
  • Update PSRAM cache flush algorithm (#2563)
  • Workaround PSRAM cache invalid'n by reading flash (#2551)
  • Preserve PSRAM QMI interface around flash ops (#2539)
  • Add PSRAM Size selection and Frequency Selection for Datanoise PicoADK V2. (#2529)
  • Document setting the PSRAM size for PlatformIO (#2527)
  • Add PSRAM size menu to Adafruit Feather RP2350 HSTX (#2521)

Bluetooth

  • Fix 2.0 SDK BLE devices (#2560)

FreeRTOS

  • FreeRTOS: Add ISR check to critical section (#2559)
  • Update FreeRTOS examples for PicoW (#2557)

General Core and Libraries

  • GPIO interrupt dispatcher, minimize blocking (#2558)
  • Remove DEBUGV for lfs_file_close (#2554)
  • Latest ESPHost, much better performance using DMA (#2545)
  • Update Adafruit TinyUSB to 3.3.4 (#2543)
  • Increase default PWMAudio buffer sizes (#2530)
  • Add getResetReason() by palmerr23 (#2516)
  • Remove 2 instructions from tone PIO program (#2515)

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)