XIAO RP2040, RP2040 SDK and APIs

By the way, I am adapting said “core” to include also XIAO RP2040 (borads.txt and variant files) so … in the future I will use only the Earle F. Philhower “core and NOT the buggy Seeedstudio “core:wink:

Guglielmo

P.S.: Just compiled for XIAO RP2040, without errors, a test program with 3 serial, semaphores and “multi-core” control … :grin:

1 Like

Great!

Regards,
Dave

Just started using the XIAO and relatively new to arduiono/raspberry hardware - where can I find the EFP core?

You can find the Earle F. Philhower “core” HERE … follow the instructions on the page for its installation.

Basically, without modifying anything, you can use the “generic” board, obviously being very careful about which pins you use, as it is not specific to the XIAO RP2040.

Guglielmo

1 Like

Earle F. Philhower just released the v1.13.2 of the arduino-pico “core” and …
… Seeed XAIO RP2040 is officially supported (pull #538) so … it’s possible to use one of the best arduino “core” for RP2040 also with XIAO RP2040 ! :slightly_smiling_face:

Guglielmo

2 Likes

Thats great

I strongly recommend the port from Earle F. Philhower:

  • It relies on the official Raspberry Pi Pico SDK, and not the cumbersome mbedOS the Arduino port is based upon;
  • It provides macros for the GPIOs, as well as for the neopixel and the three RGB LEDs;
  • It can easily be debugged with SWD, for example the very affordable Segger Edu Mini and its excellent Ozone GUI, or a Raspberry Pi Pico turned into a programmer-debugger PicoProbe.

New release of Earle F. Philhower Arduino “core” for RP2040 … version 2.0.0 and … :smiley:

Version 2.0.0 adds FreeRTOS SMP support thanks to @hfellner.

Normal applications will still use the default, non-RTOS setup/loop and setup1/loop1, but for users who need preemptive multitasking and multiple threads, FreeRTOS SMP can be used with
a simple #include <FreeRTOS.h>

Guglielmo

New release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 2.0.1 - SoftwareSerial and FreeRTOS updates, I2S input and output support

Fix picoprobe and pico-debug upload recipes (#577)
Modify DFRobot pins_arduino.h (#573)
Fix order of bootsel IRQ/idle calls (#572)
Rewrite I2S from scratch, add I2S input support (#569)
Correct Serial1 and Serial2 pinout definitions added (#570)
Fix compile error when configSUPPORT_STATIC_ALLOCATION is set to 1 (#564) (#566)
Add invert option to SWSerial (#563)
Fix SWSerial polarity. (#560)

Guglielmo

1 Like

Again a new release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 2.0.3 - SerialPIO, UART, new WizNet boards, other board fixes

Fix XIAO RP2040, allow swapping HW units 0/1 (#606)
New WIZnet boards (#605)
Fix Wire::available() when ::requestFrom fails (#604)
Add attachInterruptParam (#602)
Modify DFRobot Beetle pin_arduinos.h (#597)
Deallocate resources on SerialPIO::end (#596)
Updated PID for WiFi/BLE board and other changes (#595)

Guglielmo

1 Like

A new release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 2.1.0 - Memory/Flash reduction, C++ exceptions, Platform.IO, bugfixes

Shrink flash and RAM usage even more (#627)
Temporary fix for muilticore realloc (#625)
Remove IRQ-level malloc from USB setup
Disable Wire slave interrupt on ::end (#621)
Activate default -Os optimization for Platform.IO (#619)
Hide get.py download percent when not interactive (#618)
Remove obsolete include paths from build.inc (#616)
Fix IDE include paths / Intellisense (#615)
Reduce flash, RAM use, reduce download/install (#613)
Add GCC stack protector support (#611)
Try and upload ASAP instead of hard-waiting 10sec (#610)
Add C++ exception option to menus (#607)
Fix WizFi360-EVB-Pico pins_arduino.h (#608)

Guglielmo

1 Like

Again new release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 2.2.0 - Multicore, Platform.IO fixes, TinyUSB update

Major bugfix for multicore standard and FreeRTOS
Add dependency file generation to build (#644)
Update to latest Adafruit_TinyUSB (#639)
Update PlatformIO builder script and docs (#633)
Add analogReadResolution() docs (#631)
Updated helper class for Challenger NB board. (#629)
Add f_cpu 120, 240 mhz option (#628)
Add Platform.IO publish to release process

Guglielmo

2 Likes

A new release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 2.3.1 - Raspberry Pi Pico W WiFi support (and bug fix)

Add Pico W WiFi support (#670)
Fixes a compile error when building non-WIFI sketches on the Pico W
Fix ::printf/etc. due to mutex size conflict (#677)
Add delay to 2nd core start for Picoprobe (#676)
Add support for new SD/RTC and SubGHz boards (#663)
Automatically update the JSON file in makeboards (#664)
Disable WiFi.begin on plain Pico, add JSON (#682)
Provide dummy CYW43 callbacks when no WiFi used (#681)

Guglielmo

1 Like

I am exploring the RTOS capabilities.

1 Like

A new release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 2.4.0 - OTA support. I2S, UART, FreeRTOS, WiFi, IPv6 bug fixes

Add OTA.o to make p.io builds function (#755)
Add OTA update support (#711)
Increase FreeRTOS timer task stack to 1024 (#752)
Udp: default local_ip to IP_ANY_TYPE when IPv6 is enabled (#750)
IPv6 initial support from @oddstr13 (#748)
Fix typo in XIAO board name (#745)
Add board ElectronicCats Hunter Cat NFC (#741)
Fix UART wrong ::available() during wraparound (#739)
Stop random crashes while writing to flash (#730)
Increase LWIP MEM_SIZE to > TCP_SND_BUF (#731)
Adjust tcp_write size when memory is tight (#729)
Fix I2S timing (#728)
Add CMSIS defines to Platform.io (#721)
platform.txt: Add compiler flags for ARM CMSIS (#717)
Added to possibility to have extra compiler directives for a board. (#713)

Guglielmo

Earle F. Philhower is always working :grin: … a new release of Arduino “core ” for RP2040 …

Release 2.5.0 - Full RP2040 Web Support - WebServer, HTTPUpdate Server added

Update version
Add ExtremeElectronics RC2040 (#799)
Add WebServer, WebServerSecure, HTTPUpdateServer, HTTPUpdateServerSecure (#791)
Fix functions in docs: RP2040 Helper Class (#793)

Guglielmo

A new release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 2.6.0 - IDE 2.0 support and bugfixes

Add TARGET_RP2040 to build defines (#898)
Support IDE 2.0, detect UF2 volumes (#897)
Allow double-reset to jump to USB bootloader (#893)
Drive pin LOW after Tone(period) timeout (#887)
Fix Serial1/2 debug output mode in CoreMutex (#883)
Allow setCTS/RTS(UART_PIN_NOT_DEFINED) (#881)
Fix deadlock during attachInterrupt (#879)
Fix typo in HttpClient HTTPS example (#876)
Allow setting the WiFi region for PicoW (#875)

Guglielmo

Again … new release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 2.7.0 - OpenOCD update, RPi 3/4 toolchain update, PWM Audio, misc fixes, and new boards

Add PWMAudio for DAC-free audio playback (#1076)
digitalRead/WriteFast to sio_hw->gpio (#1077)
Update analog.rst
Universal analogReadTemp() (#1075)
Fix I2S::flush volatile casting (#1074)
Reduce ADC memory footprint slightly (#1073)
Make the AudioRingBuffer list-based (#1064)
Speed up ADC reads by not re-initting (#1072)
Add digitalWrite/ReadFast macros (#1069)
Update to Adafruyit TinyUSB 1.17 (#1071)
Degz Mizu changed to Viyalab Mizu RP2040 (#1062)
Update to 1.5.0-a toolchain (#1060)
Add nullbits Bit-C PRO board (#1051)
Fix CI errors when more than one *.a in cache dir (#1049)

Guglielmo

New release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 3.0.0 - Bluetooth/BLE, SDK 1.5.0

Large update, focused on Bluetooth support for the Pico W

Major Updates

  • Bluetooth Classic and Bluetooth Low Energy (BLE) alpha support
  • Update to SDK 1.5
  • Use Pico-SDK CYW43 infrastructure
  • Add Bluetooth Classic HID libraries and examples
  • Add Bluetooth SPP SerialBT and examples
  • Add BLE HID libraries and examples
  • Move pico-sdk to RPI’s original version
  • More aggressive WiFiMulti, targets specific APs by BSSID

Bugfixes

  • Move PicoW auto-reassignment of LED pin to code208))
  • Always apply 5M speed to CMSIS_DAP TCL script
  • Return custom USB product and manufacturer

Guglielmo

A new release of Earle F. Philhower Arduino “core ” for RP2040 …

Release 3.3.0 - Pico SDK 1.5.1, I2S, and WebServer updates

Update to the latest Pico SDK, version 1.5.1, with a smaller TinyUSB installation and some Bluetooth bugfixes. Several minor I2S and audio related fixes when I2S is started and stopped multiple times.

Upgrades

Update to Pico-SDK 1.5.1 (#1539)

I2S / Audio

Addition ABM checks in PWMAudio and ADCInput (#1530)
I2S check for failure of ARB and PIO allocation (#1528)
Call I2S::end() in I2S destructor (#1527)
Fix for invalid __channelCount in ~AudioBufferManager() (#1519)
Enable proper reuse of PIO programs (#1526)

Other fixes and update

Linker tweaks for RAM-resident PicoDVI library functions (#1541)
WebServer: Solve HTTP request delay by dropping idle connections (#1537)
Add rebootToBootloader to reboot to bootloader from code (#1514)

Guglielmo

1 Like