Compare commits

..
9 Commits
Author SHA1 Message Date
Earle F. Philhower, III adf1c88c27 Fix spelling and update readme. Prep for 1.9.5 (#319) 2021-09-19 13:43:26 -07:00
Dan Halbert ad905ae992 Build libpico.a with PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64 (#315)
Fixes #312
2021-09-19 13:31:39 -07:00
Leonardo La Rocca 608a5da480 Adds board variant definition for Melopero Shake RP2040 (#318) 2021-09-19 13:26:33 -07:00
Maximilian Gerhardt 3df3f0741a Add PlatformIO support (#250)
* Add package.json

To make package easily integratable with PlatformIO

* Correct name back to original one

* Format package.json

* Add first shot at builder script

* Add USB stack flags, fix compile flags

* Formatting

* Add more link & USB flags

* Build Boot2 bootloader

* Formatting

* Generate linkerscript, linker fixes

* Fix linkflags, make firmware runnable

* Update USB flags and RAM size

* Correct USB flags, add dynamic sketch partitioning

* Restructure filesystem size and flash size logic into platform code

* Move C++ only flags to CXXFLAGS

* Add PlatformIO documentation

* Link to new platform.io document in the docs TOC

* Fix typos in platformio docs

* Fix one additional typo in platformio.rst

* Update docs

* Remove wrongly commited build folder
2021-09-13 21:28:07 -07:00
SirSydom 3585c58688 Reset the SDA and SCL pins to INPUT at Wire.end() to prevent multiple pins connected to I2C when changing pins (#302) 2021-09-03 08:40:18 -07:00
Earle F. Philhower, III a8121f31d4 Fix pulseIn detection (#293)
Fixes #289
2021-08-30 12:40:38 -07:00
AustinMorris 38c005c208 Fix wire defines on feather (#281) 2021-08-23 20:45:12 -07:00
Pontus Oldberg cd91d3ef0f Added minimal HW support for onboard WiFi modem. (#287) 2021-08-23 20:34:25 -07:00
Pontus Oldberg 02e8577f45 Add support for reverse numbering of analog pins. (#283) 2021-08-17 09:44:28 -07:00
20 changed files with 1253 additions and 18 deletions
+1
View File
@@ -20,6 +20,7 @@ See https://arduino-pico.readthedocs.io/en/latest/ along with the examples for m
* Arduino Nano RP2040 Connect (preliminary)
* Invector Labs Challenger RP2040 WiFi
* Invector Labs Challenger RP2040 LTE
* Melopero Shake RP2040
* SparkFun ProMicro RP2040
* Generic (configurable flash, I/O pins)
+583
View File
@@ -5429,3 +5429,586 @@ challenger_2040_ltepicodebug.menu.dbglvl.NDEBUG=NDEBUG
challenger_2040_ltepicodebug.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG
challenger_2040_ltepicodebug.menu.usbstack.nousb=No USB
challenger_2040_ltepicodebug.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico"
# -----------------------------------
# Melopero Shake RP2040
# -----------------------------------
melopero_shake_rp2040.name=Melopero Shake RP2040
melopero_shake_rp2040.vid.0=0x2e8a
melopero_shake_rp2040.pid.0=0x1005
melopero_shake_rp2040.build.usbpid=-DSERIALUSB_PID=0x1005
melopero_shake_rp2040.build.board=MELOPERO_SHAKE_RP2040
melopero_shake_rp2040.build.mcu=cortex-m0plus
melopero_shake_rp2040.build.variant=melopero_shake_rp2040
melopero_shake_rp2040.upload.tool=uf2conv
melopero_shake_rp2040.upload.maximum_size=16777216
melopero_shake_rp2040.upload.maximum_data_size=262144
melopero_shake_rp2040.upload.wait_for_upload_port=true
melopero_shake_rp2040.upload.erase_cmd=
melopero_shake_rp2040.serial.disableDTR=false
melopero_shake_rp2040.serial.disableRTS=false
melopero_shake_rp2040.build.f_cpu=125000000
melopero_shake_rp2040.build.led=
melopero_shake_rp2040.build.core=rp2040
melopero_shake_rp2040.build.mcu=rp2040
melopero_shake_rp2040.build.ldscript=memmap_default.ld
melopero_shake_rp2040.build.ram_length=256k
melopero_shake_rp2040.build.boot2=boot2_w25q080_2_padded_checksum
melopero_shake_rp2040.build.vid=0x2e8a
melopero_shake_rp2040.build.pid=0x1005
melopero_shake_rp2040.build.usb_manufacturer="Melopero"
melopero_shake_rp2040.build.usb_product="Shake RP2040"
melopero_shake_rp2040.menu.flash.16777216_0=16MB (no FS)
melopero_shake_rp2040.menu.flash.16777216_0.upload.maximum_size=16773120
melopero_shake_rp2040.menu.flash.16777216_0.build.flash_length=16773120
melopero_shake_rp2040.menu.flash.16777216_0.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_0.build.fs_start=285208576
melopero_shake_rp2040.menu.flash.16777216_0.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB)
melopero_shake_rp2040.menu.flash.16777216_65536.upload.maximum_size=16707584
melopero_shake_rp2040.menu.flash.16777216_65536.build.flash_length=16707584
melopero_shake_rp2040.menu.flash.16777216_65536.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_65536.build.fs_start=285143040
melopero_shake_rp2040.menu.flash.16777216_65536.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB)
melopero_shake_rp2040.menu.flash.16777216_131072.upload.maximum_size=16642048
melopero_shake_rp2040.menu.flash.16777216_131072.build.flash_length=16642048
melopero_shake_rp2040.menu.flash.16777216_131072.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_131072.build.fs_start=285077504
melopero_shake_rp2040.menu.flash.16777216_131072.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB)
melopero_shake_rp2040.menu.flash.16777216_262144.upload.maximum_size=16510976
melopero_shake_rp2040.menu.flash.16777216_262144.build.flash_length=16510976
melopero_shake_rp2040.menu.flash.16777216_262144.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_262144.build.fs_start=284946432
melopero_shake_rp2040.menu.flash.16777216_262144.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB)
melopero_shake_rp2040.menu.flash.16777216_524288.upload.maximum_size=16248832
melopero_shake_rp2040.menu.flash.16777216_524288.build.flash_length=16248832
melopero_shake_rp2040.menu.flash.16777216_524288.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_524288.build.fs_start=284684288
melopero_shake_rp2040.menu.flash.16777216_524288.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB)
melopero_shake_rp2040.menu.flash.16777216_1048576.upload.maximum_size=15724544
melopero_shake_rp2040.menu.flash.16777216_1048576.build.flash_length=15724544
melopero_shake_rp2040.menu.flash.16777216_1048576.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_1048576.build.fs_start=284160000
melopero_shake_rp2040.menu.flash.16777216_1048576.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB)
melopero_shake_rp2040.menu.flash.16777216_2097152.upload.maximum_size=14675968
melopero_shake_rp2040.menu.flash.16777216_2097152.build.flash_length=14675968
melopero_shake_rp2040.menu.flash.16777216_2097152.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_2097152.build.fs_start=283111424
melopero_shake_rp2040.menu.flash.16777216_2097152.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB)
melopero_shake_rp2040.menu.flash.16777216_3145728.upload.maximum_size=13627392
melopero_shake_rp2040.menu.flash.16777216_3145728.build.flash_length=13627392
melopero_shake_rp2040.menu.flash.16777216_3145728.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_3145728.build.fs_start=282062848
melopero_shake_rp2040.menu.flash.16777216_3145728.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB)
melopero_shake_rp2040.menu.flash.16777216_4194304.upload.maximum_size=12578816
melopero_shake_rp2040.menu.flash.16777216_4194304.build.flash_length=12578816
melopero_shake_rp2040.menu.flash.16777216_4194304.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_4194304.build.fs_start=281014272
melopero_shake_rp2040.menu.flash.16777216_4194304.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB)
melopero_shake_rp2040.menu.flash.16777216_5242880.upload.maximum_size=11530240
melopero_shake_rp2040.menu.flash.16777216_5242880.build.flash_length=11530240
melopero_shake_rp2040.menu.flash.16777216_5242880.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_5242880.build.fs_start=279965696
melopero_shake_rp2040.menu.flash.16777216_5242880.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB)
melopero_shake_rp2040.menu.flash.16777216_6291456.upload.maximum_size=10481664
melopero_shake_rp2040.menu.flash.16777216_6291456.build.flash_length=10481664
melopero_shake_rp2040.menu.flash.16777216_6291456.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_6291456.build.fs_start=278917120
melopero_shake_rp2040.menu.flash.16777216_6291456.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB)
melopero_shake_rp2040.menu.flash.16777216_7340032.upload.maximum_size=9433088
melopero_shake_rp2040.menu.flash.16777216_7340032.build.flash_length=9433088
melopero_shake_rp2040.menu.flash.16777216_7340032.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_7340032.build.fs_start=277868544
melopero_shake_rp2040.menu.flash.16777216_7340032.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB)
melopero_shake_rp2040.menu.flash.16777216_8388608.upload.maximum_size=8384512
melopero_shake_rp2040.menu.flash.16777216_8388608.build.flash_length=8384512
melopero_shake_rp2040.menu.flash.16777216_8388608.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_8388608.build.fs_start=276819968
melopero_shake_rp2040.menu.flash.16777216_8388608.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB)
melopero_shake_rp2040.menu.flash.16777216_9437184.upload.maximum_size=7335936
melopero_shake_rp2040.menu.flash.16777216_9437184.build.flash_length=7335936
melopero_shake_rp2040.menu.flash.16777216_9437184.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_9437184.build.fs_start=275771392
melopero_shake_rp2040.menu.flash.16777216_9437184.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB)
melopero_shake_rp2040.menu.flash.16777216_10485760.upload.maximum_size=6287360
melopero_shake_rp2040.menu.flash.16777216_10485760.build.flash_length=6287360
melopero_shake_rp2040.menu.flash.16777216_10485760.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_10485760.build.fs_start=274722816
melopero_shake_rp2040.menu.flash.16777216_10485760.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB)
melopero_shake_rp2040.menu.flash.16777216_11534336.upload.maximum_size=5238784
melopero_shake_rp2040.menu.flash.16777216_11534336.build.flash_length=5238784
melopero_shake_rp2040.menu.flash.16777216_11534336.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_11534336.build.fs_start=273674240
melopero_shake_rp2040.menu.flash.16777216_11534336.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB)
melopero_shake_rp2040.menu.flash.16777216_12582912.upload.maximum_size=4190208
melopero_shake_rp2040.menu.flash.16777216_12582912.build.flash_length=4190208
melopero_shake_rp2040.menu.flash.16777216_12582912.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_12582912.build.fs_start=272625664
melopero_shake_rp2040.menu.flash.16777216_12582912.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB)
melopero_shake_rp2040.menu.flash.16777216_13631488.upload.maximum_size=3141632
melopero_shake_rp2040.menu.flash.16777216_13631488.build.flash_length=3141632
melopero_shake_rp2040.menu.flash.16777216_13631488.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_13631488.build.fs_start=271577088
melopero_shake_rp2040.menu.flash.16777216_13631488.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB)
melopero_shake_rp2040.menu.flash.16777216_14680064.upload.maximum_size=2093056
melopero_shake_rp2040.menu.flash.16777216_14680064.build.flash_length=2093056
melopero_shake_rp2040.menu.flash.16777216_14680064.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_14680064.build.fs_start=270528512
melopero_shake_rp2040.menu.flash.16777216_14680064.build.fs_end=285208576
melopero_shake_rp2040.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB)
melopero_shake_rp2040.menu.flash.16777216_15728640.upload.maximum_size=1044480
melopero_shake_rp2040.menu.flash.16777216_15728640.build.flash_length=1044480
melopero_shake_rp2040.menu.flash.16777216_15728640.build.eeprom_start=285208576
melopero_shake_rp2040.menu.flash.16777216_15728640.build.fs_start=269479936
melopero_shake_rp2040.menu.flash.16777216_15728640.build.fs_end=285208576
melopero_shake_rp2040.menu.freq.125=125 MHz
melopero_shake_rp2040.menu.freq.125.build.f_cpu=125000000L
melopero_shake_rp2040.menu.freq.50=50 MHz
melopero_shake_rp2040.menu.freq.50.build.f_cpu=50000000L
melopero_shake_rp2040.menu.freq.100=100 MHz
melopero_shake_rp2040.menu.freq.100.build.f_cpu=100000000L
melopero_shake_rp2040.menu.freq.133=133 MHz
melopero_shake_rp2040.menu.freq.133.build.f_cpu=133000000L
melopero_shake_rp2040.menu.freq.150=150 MHz (Overclock)
melopero_shake_rp2040.menu.freq.150.build.f_cpu=150000000L
melopero_shake_rp2040.menu.freq.175=175 MHz (Overclock)
melopero_shake_rp2040.menu.freq.175.build.f_cpu=175000000L
melopero_shake_rp2040.menu.freq.200=200 MHz (Overclock)
melopero_shake_rp2040.menu.freq.200.build.f_cpu=200000000L
melopero_shake_rp2040.menu.freq.225=225 MHz (Overclock)
melopero_shake_rp2040.menu.freq.225.build.f_cpu=225000000L
melopero_shake_rp2040.menu.freq.250=250 MHz (Overclock)
melopero_shake_rp2040.menu.freq.250.build.f_cpu=250000000L
melopero_shake_rp2040.menu.freq.275=275 MHz (Overclock)
melopero_shake_rp2040.menu.freq.275.build.f_cpu=275000000L
melopero_shake_rp2040.menu.freq.300=300 MHz (Overclock)
melopero_shake_rp2040.menu.freq.300.build.f_cpu=300000000L
melopero_shake_rp2040.menu.dbgport.Disabled=Disabled
melopero_shake_rp2040.menu.dbgport.Disabled.build.debug_port=
melopero_shake_rp2040.menu.dbgport.Serial=Serial
melopero_shake_rp2040.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial
melopero_shake_rp2040.menu.dbgport.Serial1=Serial1
melopero_shake_rp2040.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1
melopero_shake_rp2040.menu.dbgport.Serial2=Serial2
melopero_shake_rp2040.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2
melopero_shake_rp2040.menu.dbglvl.None=None
melopero_shake_rp2040.menu.dbglvl.None.build.debug_level=
melopero_shake_rp2040.menu.dbglvl.Core=Core
melopero_shake_rp2040.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE
melopero_shake_rp2040.menu.dbglvl.SPI=SPI
melopero_shake_rp2040.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI
melopero_shake_rp2040.menu.dbglvl.Wire=Wire
melopero_shake_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE
melopero_shake_rp2040.menu.dbglvl.All=All
melopero_shake_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE
melopero_shake_rp2040.menu.dbglvl.NDEBUG=NDEBUG
melopero_shake_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG
melopero_shake_rp2040.menu.usbstack.picosdk=Pico SDK
melopero_shake_rp2040.menu.usbstack.picosdk.build.usbstack_flags="-I{runtime.platform.path}/tools/libpico"
melopero_shake_rp2040.menu.usbstack.tinyusb=Adafruit TinyUSB
melopero_shake_rp2040.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
# -----------------------------------
# Melopero Shake RP2040 (Picoprobe)
# -----------------------------------
melopero_shake_rp2040picoprobe.name=Melopero Shake RP2040 (Picoprobe)
melopero_shake_rp2040picoprobe.vid.0=0x2e8a
melopero_shake_rp2040picoprobe.pid.0=0x0004
melopero_shake_rp2040picoprobe.build.usbpid=-DSERIALUSB_PID=0x1005
melopero_shake_rp2040picoprobe.build.board=MELOPERO_SHAKE_RP2040
melopero_shake_rp2040picoprobe.build.mcu=cortex-m0plus
melopero_shake_rp2040picoprobe.build.variant=melopero_shake_rp2040
melopero_shake_rp2040picoprobe.upload.tool=picoprobe
melopero_shake_rp2040picoprobe.upload.maximum_size=16777216
melopero_shake_rp2040picoprobe.upload.maximum_data_size=262144
melopero_shake_rp2040picoprobe.upload.wait_for_upload_port=true
melopero_shake_rp2040picoprobe.upload.erase_cmd=
melopero_shake_rp2040picoprobe.serial.disableDTR=false
melopero_shake_rp2040picoprobe.serial.disableRTS=false
melopero_shake_rp2040picoprobe.build.f_cpu=125000000
melopero_shake_rp2040picoprobe.build.led=
melopero_shake_rp2040picoprobe.build.core=rp2040
melopero_shake_rp2040picoprobe.build.mcu=rp2040
melopero_shake_rp2040picoprobe.build.ldscript=memmap_default.ld
melopero_shake_rp2040picoprobe.build.ram_length=256k
melopero_shake_rp2040picoprobe.build.boot2=boot2_w25q080_2_padded_checksum
melopero_shake_rp2040picoprobe.build.vid=0x2e8a
melopero_shake_rp2040picoprobe.build.pid=0x1005
melopero_shake_rp2040picoprobe.build.usb_manufacturer="Melopero"
melopero_shake_rp2040picoprobe.build.usb_product="Shake RP2040 (Picoprobe)"
melopero_shake_rp2040picoprobe.menu.flash.16777216_0=16MB (no FS)
melopero_shake_rp2040picoprobe.menu.flash.16777216_0.upload.maximum_size=16773120
melopero_shake_rp2040picoprobe.menu.flash.16777216_0.build.flash_length=16773120
melopero_shake_rp2040picoprobe.menu.flash.16777216_0.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_0.build.fs_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_0.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_65536.upload.maximum_size=16707584
melopero_shake_rp2040picoprobe.menu.flash.16777216_65536.build.flash_length=16707584
melopero_shake_rp2040picoprobe.menu.flash.16777216_65536.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_65536.build.fs_start=285143040
melopero_shake_rp2040picoprobe.menu.flash.16777216_65536.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_131072.upload.maximum_size=16642048
melopero_shake_rp2040picoprobe.menu.flash.16777216_131072.build.flash_length=16642048
melopero_shake_rp2040picoprobe.menu.flash.16777216_131072.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_131072.build.fs_start=285077504
melopero_shake_rp2040picoprobe.menu.flash.16777216_131072.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_262144.upload.maximum_size=16510976
melopero_shake_rp2040picoprobe.menu.flash.16777216_262144.build.flash_length=16510976
melopero_shake_rp2040picoprobe.menu.flash.16777216_262144.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_262144.build.fs_start=284946432
melopero_shake_rp2040picoprobe.menu.flash.16777216_262144.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_524288.upload.maximum_size=16248832
melopero_shake_rp2040picoprobe.menu.flash.16777216_524288.build.flash_length=16248832
melopero_shake_rp2040picoprobe.menu.flash.16777216_524288.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_524288.build.fs_start=284684288
melopero_shake_rp2040picoprobe.menu.flash.16777216_524288.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_1048576.upload.maximum_size=15724544
melopero_shake_rp2040picoprobe.menu.flash.16777216_1048576.build.flash_length=15724544
melopero_shake_rp2040picoprobe.menu.flash.16777216_1048576.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_1048576.build.fs_start=284160000
melopero_shake_rp2040picoprobe.menu.flash.16777216_1048576.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_2097152.upload.maximum_size=14675968
melopero_shake_rp2040picoprobe.menu.flash.16777216_2097152.build.flash_length=14675968
melopero_shake_rp2040picoprobe.menu.flash.16777216_2097152.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_2097152.build.fs_start=283111424
melopero_shake_rp2040picoprobe.menu.flash.16777216_2097152.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_3145728.upload.maximum_size=13627392
melopero_shake_rp2040picoprobe.menu.flash.16777216_3145728.build.flash_length=13627392
melopero_shake_rp2040picoprobe.menu.flash.16777216_3145728.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_3145728.build.fs_start=282062848
melopero_shake_rp2040picoprobe.menu.flash.16777216_3145728.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_4194304.upload.maximum_size=12578816
melopero_shake_rp2040picoprobe.menu.flash.16777216_4194304.build.flash_length=12578816
melopero_shake_rp2040picoprobe.menu.flash.16777216_4194304.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_4194304.build.fs_start=281014272
melopero_shake_rp2040picoprobe.menu.flash.16777216_4194304.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_5242880.upload.maximum_size=11530240
melopero_shake_rp2040picoprobe.menu.flash.16777216_5242880.build.flash_length=11530240
melopero_shake_rp2040picoprobe.menu.flash.16777216_5242880.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_5242880.build.fs_start=279965696
melopero_shake_rp2040picoprobe.menu.flash.16777216_5242880.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_6291456.upload.maximum_size=10481664
melopero_shake_rp2040picoprobe.menu.flash.16777216_6291456.build.flash_length=10481664
melopero_shake_rp2040picoprobe.menu.flash.16777216_6291456.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_6291456.build.fs_start=278917120
melopero_shake_rp2040picoprobe.menu.flash.16777216_6291456.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_7340032.upload.maximum_size=9433088
melopero_shake_rp2040picoprobe.menu.flash.16777216_7340032.build.flash_length=9433088
melopero_shake_rp2040picoprobe.menu.flash.16777216_7340032.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_7340032.build.fs_start=277868544
melopero_shake_rp2040picoprobe.menu.flash.16777216_7340032.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_8388608.upload.maximum_size=8384512
melopero_shake_rp2040picoprobe.menu.flash.16777216_8388608.build.flash_length=8384512
melopero_shake_rp2040picoprobe.menu.flash.16777216_8388608.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_8388608.build.fs_start=276819968
melopero_shake_rp2040picoprobe.menu.flash.16777216_8388608.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_9437184.upload.maximum_size=7335936
melopero_shake_rp2040picoprobe.menu.flash.16777216_9437184.build.flash_length=7335936
melopero_shake_rp2040picoprobe.menu.flash.16777216_9437184.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_9437184.build.fs_start=275771392
melopero_shake_rp2040picoprobe.menu.flash.16777216_9437184.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_10485760.upload.maximum_size=6287360
melopero_shake_rp2040picoprobe.menu.flash.16777216_10485760.build.flash_length=6287360
melopero_shake_rp2040picoprobe.menu.flash.16777216_10485760.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_10485760.build.fs_start=274722816
melopero_shake_rp2040picoprobe.menu.flash.16777216_10485760.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_11534336.upload.maximum_size=5238784
melopero_shake_rp2040picoprobe.menu.flash.16777216_11534336.build.flash_length=5238784
melopero_shake_rp2040picoprobe.menu.flash.16777216_11534336.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_11534336.build.fs_start=273674240
melopero_shake_rp2040picoprobe.menu.flash.16777216_11534336.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_12582912.upload.maximum_size=4190208
melopero_shake_rp2040picoprobe.menu.flash.16777216_12582912.build.flash_length=4190208
melopero_shake_rp2040picoprobe.menu.flash.16777216_12582912.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_12582912.build.fs_start=272625664
melopero_shake_rp2040picoprobe.menu.flash.16777216_12582912.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_13631488.upload.maximum_size=3141632
melopero_shake_rp2040picoprobe.menu.flash.16777216_13631488.build.flash_length=3141632
melopero_shake_rp2040picoprobe.menu.flash.16777216_13631488.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_13631488.build.fs_start=271577088
melopero_shake_rp2040picoprobe.menu.flash.16777216_13631488.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_14680064.upload.maximum_size=2093056
melopero_shake_rp2040picoprobe.menu.flash.16777216_14680064.build.flash_length=2093056
melopero_shake_rp2040picoprobe.menu.flash.16777216_14680064.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_14680064.build.fs_start=270528512
melopero_shake_rp2040picoprobe.menu.flash.16777216_14680064.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB)
melopero_shake_rp2040picoprobe.menu.flash.16777216_15728640.upload.maximum_size=1044480
melopero_shake_rp2040picoprobe.menu.flash.16777216_15728640.build.flash_length=1044480
melopero_shake_rp2040picoprobe.menu.flash.16777216_15728640.build.eeprom_start=285208576
melopero_shake_rp2040picoprobe.menu.flash.16777216_15728640.build.fs_start=269479936
melopero_shake_rp2040picoprobe.menu.flash.16777216_15728640.build.fs_end=285208576
melopero_shake_rp2040picoprobe.menu.freq.125=125 MHz
melopero_shake_rp2040picoprobe.menu.freq.125.build.f_cpu=125000000L
melopero_shake_rp2040picoprobe.menu.freq.50=50 MHz
melopero_shake_rp2040picoprobe.menu.freq.50.build.f_cpu=50000000L
melopero_shake_rp2040picoprobe.menu.freq.100=100 MHz
melopero_shake_rp2040picoprobe.menu.freq.100.build.f_cpu=100000000L
melopero_shake_rp2040picoprobe.menu.freq.133=133 MHz
melopero_shake_rp2040picoprobe.menu.freq.133.build.f_cpu=133000000L
melopero_shake_rp2040picoprobe.menu.freq.150=150 MHz (Overclock)
melopero_shake_rp2040picoprobe.menu.freq.150.build.f_cpu=150000000L
melopero_shake_rp2040picoprobe.menu.freq.175=175 MHz (Overclock)
melopero_shake_rp2040picoprobe.menu.freq.175.build.f_cpu=175000000L
melopero_shake_rp2040picoprobe.menu.freq.200=200 MHz (Overclock)
melopero_shake_rp2040picoprobe.menu.freq.200.build.f_cpu=200000000L
melopero_shake_rp2040picoprobe.menu.freq.225=225 MHz (Overclock)
melopero_shake_rp2040picoprobe.menu.freq.225.build.f_cpu=225000000L
melopero_shake_rp2040picoprobe.menu.freq.250=250 MHz (Overclock)
melopero_shake_rp2040picoprobe.menu.freq.250.build.f_cpu=250000000L
melopero_shake_rp2040picoprobe.menu.freq.275=275 MHz (Overclock)
melopero_shake_rp2040picoprobe.menu.freq.275.build.f_cpu=275000000L
melopero_shake_rp2040picoprobe.menu.freq.300=300 MHz (Overclock)
melopero_shake_rp2040picoprobe.menu.freq.300.build.f_cpu=300000000L
melopero_shake_rp2040picoprobe.menu.dbgport.Disabled=Disabled
melopero_shake_rp2040picoprobe.menu.dbgport.Disabled.build.debug_port=
melopero_shake_rp2040picoprobe.menu.dbgport.Serial=Serial
melopero_shake_rp2040picoprobe.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial
melopero_shake_rp2040picoprobe.menu.dbgport.Serial1=Serial1
melopero_shake_rp2040picoprobe.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1
melopero_shake_rp2040picoprobe.menu.dbgport.Serial2=Serial2
melopero_shake_rp2040picoprobe.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2
melopero_shake_rp2040picoprobe.menu.dbglvl.None=None
melopero_shake_rp2040picoprobe.menu.dbglvl.None.build.debug_level=
melopero_shake_rp2040picoprobe.menu.dbglvl.Core=Core
melopero_shake_rp2040picoprobe.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE
melopero_shake_rp2040picoprobe.menu.dbglvl.SPI=SPI
melopero_shake_rp2040picoprobe.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI
melopero_shake_rp2040picoprobe.menu.dbglvl.Wire=Wire
melopero_shake_rp2040picoprobe.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE
melopero_shake_rp2040picoprobe.menu.dbglvl.All=All
melopero_shake_rp2040picoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE
melopero_shake_rp2040picoprobe.menu.dbglvl.NDEBUG=NDEBUG
melopero_shake_rp2040picoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG
melopero_shake_rp2040picoprobe.menu.usbstack.picosdk=Pico SDK
melopero_shake_rp2040picoprobe.menu.usbstack.picosdk.build.usbstack_flags="-I{runtime.platform.path}/tools/libpico"
melopero_shake_rp2040picoprobe.menu.usbstack.tinyusb=Adafruit TinyUSB
melopero_shake_rp2040picoprobe.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
# -----------------------------------
# Melopero Shake RP2040 (pico-debug)
# -----------------------------------
melopero_shake_rp2040picodebug.name=Melopero Shake RP2040 (pico-debug)
melopero_shake_rp2040picodebug.vid.0=0x1209
melopero_shake_rp2040picodebug.pid.0=0x2488
melopero_shake_rp2040picodebug.build.usbpid=-DSERIALUSB_PID=0x1005
melopero_shake_rp2040picodebug.build.board=MELOPERO_SHAKE_RP2040
melopero_shake_rp2040picodebug.build.mcu=cortex-m0plus
melopero_shake_rp2040picodebug.build.variant=melopero_shake_rp2040
melopero_shake_rp2040picodebug.upload.tool=picodebug
melopero_shake_rp2040picodebug.upload.maximum_size=16777216
melopero_shake_rp2040picodebug.upload.maximum_data_size=245760
melopero_shake_rp2040picodebug.upload.wait_for_upload_port=true
melopero_shake_rp2040picodebug.upload.erase_cmd=
melopero_shake_rp2040picodebug.serial.disableDTR=false
melopero_shake_rp2040picodebug.serial.disableRTS=false
melopero_shake_rp2040picodebug.build.f_cpu=125000000
melopero_shake_rp2040picodebug.build.led=
melopero_shake_rp2040picodebug.build.core=rp2040
melopero_shake_rp2040picodebug.build.mcu=rp2040
melopero_shake_rp2040picodebug.build.ldscript=memmap_default.ld
melopero_shake_rp2040picodebug.build.ram_length=240k
melopero_shake_rp2040picodebug.build.boot2=boot2_w25q080_2_padded_checksum
melopero_shake_rp2040picodebug.build.vid=0x2e8a
melopero_shake_rp2040picodebug.build.pid=0x1005
melopero_shake_rp2040picodebug.build.usb_manufacturer="Melopero"
melopero_shake_rp2040picodebug.build.usb_product="Shake RP2040 (pico-debug)"
melopero_shake_rp2040picodebug.menu.flash.16777216_0=16MB (no FS)
melopero_shake_rp2040picodebug.menu.flash.16777216_0.upload.maximum_size=16773120
melopero_shake_rp2040picodebug.menu.flash.16777216_0.build.flash_length=16773120
melopero_shake_rp2040picodebug.menu.flash.16777216_0.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_0.build.fs_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_0.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB)
melopero_shake_rp2040picodebug.menu.flash.16777216_65536.upload.maximum_size=16707584
melopero_shake_rp2040picodebug.menu.flash.16777216_65536.build.flash_length=16707584
melopero_shake_rp2040picodebug.menu.flash.16777216_65536.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_65536.build.fs_start=285143040
melopero_shake_rp2040picodebug.menu.flash.16777216_65536.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB)
melopero_shake_rp2040picodebug.menu.flash.16777216_131072.upload.maximum_size=16642048
melopero_shake_rp2040picodebug.menu.flash.16777216_131072.build.flash_length=16642048
melopero_shake_rp2040picodebug.menu.flash.16777216_131072.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_131072.build.fs_start=285077504
melopero_shake_rp2040picodebug.menu.flash.16777216_131072.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB)
melopero_shake_rp2040picodebug.menu.flash.16777216_262144.upload.maximum_size=16510976
melopero_shake_rp2040picodebug.menu.flash.16777216_262144.build.flash_length=16510976
melopero_shake_rp2040picodebug.menu.flash.16777216_262144.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_262144.build.fs_start=284946432
melopero_shake_rp2040picodebug.menu.flash.16777216_262144.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB)
melopero_shake_rp2040picodebug.menu.flash.16777216_524288.upload.maximum_size=16248832
melopero_shake_rp2040picodebug.menu.flash.16777216_524288.build.flash_length=16248832
melopero_shake_rp2040picodebug.menu.flash.16777216_524288.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_524288.build.fs_start=284684288
melopero_shake_rp2040picodebug.menu.flash.16777216_524288.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_1048576.upload.maximum_size=15724544
melopero_shake_rp2040picodebug.menu.flash.16777216_1048576.build.flash_length=15724544
melopero_shake_rp2040picodebug.menu.flash.16777216_1048576.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_1048576.build.fs_start=284160000
melopero_shake_rp2040picodebug.menu.flash.16777216_1048576.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_2097152.upload.maximum_size=14675968
melopero_shake_rp2040picodebug.menu.flash.16777216_2097152.build.flash_length=14675968
melopero_shake_rp2040picodebug.menu.flash.16777216_2097152.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_2097152.build.fs_start=283111424
melopero_shake_rp2040picodebug.menu.flash.16777216_2097152.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_3145728.upload.maximum_size=13627392
melopero_shake_rp2040picodebug.menu.flash.16777216_3145728.build.flash_length=13627392
melopero_shake_rp2040picodebug.menu.flash.16777216_3145728.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_3145728.build.fs_start=282062848
melopero_shake_rp2040picodebug.menu.flash.16777216_3145728.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_4194304.upload.maximum_size=12578816
melopero_shake_rp2040picodebug.menu.flash.16777216_4194304.build.flash_length=12578816
melopero_shake_rp2040picodebug.menu.flash.16777216_4194304.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_4194304.build.fs_start=281014272
melopero_shake_rp2040picodebug.menu.flash.16777216_4194304.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_5242880.upload.maximum_size=11530240
melopero_shake_rp2040picodebug.menu.flash.16777216_5242880.build.flash_length=11530240
melopero_shake_rp2040picodebug.menu.flash.16777216_5242880.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_5242880.build.fs_start=279965696
melopero_shake_rp2040picodebug.menu.flash.16777216_5242880.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_6291456.upload.maximum_size=10481664
melopero_shake_rp2040picodebug.menu.flash.16777216_6291456.build.flash_length=10481664
melopero_shake_rp2040picodebug.menu.flash.16777216_6291456.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_6291456.build.fs_start=278917120
melopero_shake_rp2040picodebug.menu.flash.16777216_6291456.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_7340032.upload.maximum_size=9433088
melopero_shake_rp2040picodebug.menu.flash.16777216_7340032.build.flash_length=9433088
melopero_shake_rp2040picodebug.menu.flash.16777216_7340032.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_7340032.build.fs_start=277868544
melopero_shake_rp2040picodebug.menu.flash.16777216_7340032.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_8388608.upload.maximum_size=8384512
melopero_shake_rp2040picodebug.menu.flash.16777216_8388608.build.flash_length=8384512
melopero_shake_rp2040picodebug.menu.flash.16777216_8388608.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_8388608.build.fs_start=276819968
melopero_shake_rp2040picodebug.menu.flash.16777216_8388608.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_9437184.upload.maximum_size=7335936
melopero_shake_rp2040picodebug.menu.flash.16777216_9437184.build.flash_length=7335936
melopero_shake_rp2040picodebug.menu.flash.16777216_9437184.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_9437184.build.fs_start=275771392
melopero_shake_rp2040picodebug.menu.flash.16777216_9437184.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_10485760.upload.maximum_size=6287360
melopero_shake_rp2040picodebug.menu.flash.16777216_10485760.build.flash_length=6287360
melopero_shake_rp2040picodebug.menu.flash.16777216_10485760.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_10485760.build.fs_start=274722816
melopero_shake_rp2040picodebug.menu.flash.16777216_10485760.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_11534336.upload.maximum_size=5238784
melopero_shake_rp2040picodebug.menu.flash.16777216_11534336.build.flash_length=5238784
melopero_shake_rp2040picodebug.menu.flash.16777216_11534336.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_11534336.build.fs_start=273674240
melopero_shake_rp2040picodebug.menu.flash.16777216_11534336.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_12582912.upload.maximum_size=4190208
melopero_shake_rp2040picodebug.menu.flash.16777216_12582912.build.flash_length=4190208
melopero_shake_rp2040picodebug.menu.flash.16777216_12582912.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_12582912.build.fs_start=272625664
melopero_shake_rp2040picodebug.menu.flash.16777216_12582912.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_13631488.upload.maximum_size=3141632
melopero_shake_rp2040picodebug.menu.flash.16777216_13631488.build.flash_length=3141632
melopero_shake_rp2040picodebug.menu.flash.16777216_13631488.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_13631488.build.fs_start=271577088
melopero_shake_rp2040picodebug.menu.flash.16777216_13631488.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_14680064.upload.maximum_size=2093056
melopero_shake_rp2040picodebug.menu.flash.16777216_14680064.build.flash_length=2093056
melopero_shake_rp2040picodebug.menu.flash.16777216_14680064.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_14680064.build.fs_start=270528512
melopero_shake_rp2040picodebug.menu.flash.16777216_14680064.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB)
melopero_shake_rp2040picodebug.menu.flash.16777216_15728640.upload.maximum_size=1044480
melopero_shake_rp2040picodebug.menu.flash.16777216_15728640.build.flash_length=1044480
melopero_shake_rp2040picodebug.menu.flash.16777216_15728640.build.eeprom_start=285208576
melopero_shake_rp2040picodebug.menu.flash.16777216_15728640.build.fs_start=269479936
melopero_shake_rp2040picodebug.menu.flash.16777216_15728640.build.fs_end=285208576
melopero_shake_rp2040picodebug.menu.freq.125=125 MHz
melopero_shake_rp2040picodebug.menu.freq.125.build.f_cpu=125000000L
melopero_shake_rp2040picodebug.menu.freq.50=50 MHz
melopero_shake_rp2040picodebug.menu.freq.50.build.f_cpu=50000000L
melopero_shake_rp2040picodebug.menu.freq.100=100 MHz
melopero_shake_rp2040picodebug.menu.freq.100.build.f_cpu=100000000L
melopero_shake_rp2040picodebug.menu.freq.133=133 MHz
melopero_shake_rp2040picodebug.menu.freq.133.build.f_cpu=133000000L
melopero_shake_rp2040picodebug.menu.freq.150=150 MHz (Overclock)
melopero_shake_rp2040picodebug.menu.freq.150.build.f_cpu=150000000L
melopero_shake_rp2040picodebug.menu.freq.175=175 MHz (Overclock)
melopero_shake_rp2040picodebug.menu.freq.175.build.f_cpu=175000000L
melopero_shake_rp2040picodebug.menu.freq.200=200 MHz (Overclock)
melopero_shake_rp2040picodebug.menu.freq.200.build.f_cpu=200000000L
melopero_shake_rp2040picodebug.menu.freq.225=225 MHz (Overclock)
melopero_shake_rp2040picodebug.menu.freq.225.build.f_cpu=225000000L
melopero_shake_rp2040picodebug.menu.freq.250=250 MHz (Overclock)
melopero_shake_rp2040picodebug.menu.freq.250.build.f_cpu=250000000L
melopero_shake_rp2040picodebug.menu.freq.275=275 MHz (Overclock)
melopero_shake_rp2040picodebug.menu.freq.275.build.f_cpu=275000000L
melopero_shake_rp2040picodebug.menu.freq.300=300 MHz (Overclock)
melopero_shake_rp2040picodebug.menu.freq.300.build.f_cpu=300000000L
melopero_shake_rp2040picodebug.menu.dbgport.Disabled=Disabled
melopero_shake_rp2040picodebug.menu.dbgport.Disabled.build.debug_port=
melopero_shake_rp2040picodebug.menu.dbgport.Serial=Serial
melopero_shake_rp2040picodebug.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial
melopero_shake_rp2040picodebug.menu.dbgport.Serial1=Serial1
melopero_shake_rp2040picodebug.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1
melopero_shake_rp2040picodebug.menu.dbgport.Serial2=Serial2
melopero_shake_rp2040picodebug.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2
melopero_shake_rp2040picodebug.menu.dbglvl.None=None
melopero_shake_rp2040picodebug.menu.dbglvl.None.build.debug_level=
melopero_shake_rp2040picodebug.menu.dbglvl.Core=Core
melopero_shake_rp2040picodebug.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE
melopero_shake_rp2040picodebug.menu.dbglvl.SPI=SPI
melopero_shake_rp2040picodebug.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI
melopero_shake_rp2040picodebug.menu.dbglvl.Wire=Wire
melopero_shake_rp2040picodebug.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE
melopero_shake_rp2040picodebug.menu.dbglvl.All=All
melopero_shake_rp2040picodebug.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE
melopero_shake_rp2040picodebug.menu.dbglvl.NDEBUG=NDEBUG
melopero_shake_rp2040picodebug.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG
melopero_shake_rp2040picodebug.menu.usbstack.nousb=No USB
melopero_shake_rp2040picodebug.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico"
+5 -2
View File
@@ -121,7 +121,10 @@ auto_init_mutex(_adcMutex);
extern "C" int analogRead(pin_size_t pin) {
CoreMutex m(&_adcMutex);
if ((pin < A0) || (pin > A3) || !m) {
pin_size_t maxPin = max(A0, A3);
pin_size_t minPin = min(A0, A3);
if ((pin < minPin) || (pin > maxPin) || !m) {
DEBUGCORE("ERROR: Illegal analogRead pin (%d)\n", pin);
return 0;
}
@@ -129,7 +132,7 @@ extern "C" int analogRead(pin_size_t pin) {
adc_init();
}
adc_gpio_init(pin);
adc_select_input(pin - A0);
adc_select_input(pin - minPin);
return adc_read();
}
+1 -1
View File
@@ -38,7 +38,7 @@ extern "C" unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeo
}
// Wait for assert
while ((!!gpio_get(pin) != !state) && (time_us_64() < abort));
while ((!!gpio_get(pin) != !!state) && (time_us_64() < abort));
uint64_t begin = time_us_64();
if (begin >= abort) {
return 0;
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

+2
View File
@@ -20,6 +20,8 @@ For the latest version, always check https://github.com/earlephilhower/arduino-p
Installation <install>
IDE Menus <ide>
Platform.IO Integration <platformio>
Pin (Re)Assignment <pins>
Analog I/O <analog>
+219
View File
@@ -0,0 +1,219 @@
Using this core with PlatformIO
===============================
What is PlatformIO?
-------------------
`PlatformIO <https://platformio.org/>`__ is a free, open-source build-tool written in Python, which also integrates into VSCode code as an extension.
PlatformIO significantly simplifies writing embedded software by offering a unified build system, yet being able to create project files for many different IDEs, including VSCode, Eclipse, CLion, etc.
Through this, PlatformIO can offer extensive features such as IntelliSense (autocomplete), debugging, unit testing etc., which not available in the standard Arduino IDE.
The Arduino IDE experience:
.. image:: images/the_arduinoide_experience.png
The PlatformIO experience:
.. image:: images/the_platformio_experience.png
Refer to the general documentation at https://docs.platformio.org/.
Especially useful is the `Getting started with VSCode + PlatformIO <https://docs.platformio.org/en/latest/integration/ide/vscode.html#installation), [CLI reference](https://docs.platformio.org/en/latest/core/index.html) and [platformio.ini options](https://docs.platformio.org/en/latest/projectconf/index.html)>`__ page.
Hereafter it is assumed that you have a basic understanding of PlatformIO in regards to project creation, project file structure and building and uploading PlatformIO projects, through reading the above pages.
Current state of development
----------------------------
At the time of writing, PlatformIO integration for this core is a work-in-progress and not yet merged into mainline PlatformIO. This is subject to change soon.
If you want to use the PlatformIO integration right now, make sure you first create a standard Raspberry Pi Pico + Arduino project within PlatformIO.
This will give you a project with the ``platformio.ini``
.. code:: ini
[env:pico]
platform = raspberrypi
board = pico
framework = arduino
Here, you need to change the `platform` to take advantage of the features described hereunder.
You *also* need to inject two PlatformIO packages, one for the compiler toolchain and one for the Arduino core package.
.. code:: ini
[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
; note that download link for toolchain is specific for OS. see https://github.com/earlephilhower/pico-quick-toolchain/releases.
platform_packages =
maxgerhardt/framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git
maxgerhardt/toolchain-pico@https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.3.1-a/x86_64-w64-mingw32.arm-none-eabi-7855b0c.210706.zip
When the support for this core has been merged into mainline PlatformIO, this notice will be removed and a standard `platformio.ini` as shown above will work as a base.
Selecting the new core
----------------------
Prerequisite for using this core is to tell PlatformIO to switch to it.
There will be board definition files where the Earle-Philhower core will
be the default since it's a board that only exists in this core (and not
the other https://github.com/arduino/ArduinoCore-mbed). To switch boards
for which this is not the default core (e.g. the standard
``board = pico``), the directive
.. code:: ini
board_build.core = earlephilhower
must be added to the ``platformio.ini``. This controls the `core
switching
logic <https://github.com/maxgerhardt/platform-raspberrypi/blob/77e0d3a29d1dbf00fd3ec3271104e3bf4820869c/builder/frameworks/arduino/arduino.py#L27-L32>`__.
Flash size
----------
Controlled via specifying the size allocated for the filesystem.
Available sketch size is calculated accordingly by using (as in
``makeboards.py``) that number and the (constant) EEPROM size (4096
bytes) and the total flash size as known to PlatformIO via the board
definition file. The expression on the right can involve "b","k","m"
(bytes/kilobytes/megabytes) and floating point numbers. This makes it
actually more flexible than in the Arduino IDE where there is a finite
list of choices. Calculations happen in `the
platform <https://github.com/maxgerhardt/platform-raspberrypi/blob/77e0d3a29d1dbf00fd3ec3271104e3bf4820869c/builder/main.py#L118-L184>`__.
.. code:: ini
; in reference to a board = pico config (2MB flash)
; Flash Size: 2MB (Sketch: 1MB, FS:1MB)
board_build.filesystem_size = 1m
; Flash Size: 2MB (No FS)
board_build.filesystem_size = 0m
; Flash Size: 2MB (Sketch: 0.5MB, FS:1.5MB)
board_build.filesystem_size = 1.5m
CPU Speed
---------
As for all other PlatformIO platforms, the ``f_cpu`` macro value (which
is passed to the core) can be changed as
`documented <https://docs.platformio.org/en/latest/boards/raspberrypi/pico.html#configuration>`__
.. code:: ini
; 133MHz
board_build.f_cpu = 133000000L
Debug Port
----------
Via
`build_flags <https://docs.platformio.org/en/latest/projectconf/section_env_build.html#build-flags>`__
as done for many other cores
(`example <https://docs.platformio.org/en/latest/platforms/ststm32.html#configuration>`__).
.. code:: ini
; Debug Port: Serial
build_flags = -DDEBUG_RP2040_PORT=Serial
; Debug Port: Serial 1
build_flags = -DDEBUG_RP2040_PORT=Serial1
; Debug Port: Serial 2
build_flags = -DDEBUG_RP2040_PORT=Serial2
Debug Level
-----------
Done again by directly adding the needed `build
flags <https://github.com/earlephilhower/arduino-pico/blob/05356da2c5552413a442f742e209c6fa92823666/boards.txt#L104-L114>`__.
When wanting to define multiple build flags, they must be accumulated in
either a sing line or a newline-separated expression.
.. code:: ini
; Debug level: Core
build_flags = -DDEBUG_RP2040_CORE
; Debug level: SPI
build_flags = -DDEBUG_RP2040_SPI
; Debug level: Wire
build_flags = -DDEBUG_RP2040_WIRE
; Debug level: All
build_flags = -DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE
; Debug level: NDEBUG
build_flags = -DNDEBUG
; example: Debug port on serial 2 and all debug output
build_flags = -DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_PORT=Serial2
; equivalent to above
build_flags =
-DDEBUG_RP2040_WIRE
-DDEBUG_RP2040_SPI
-DDEBUG_RP2040_CORE
-DDEBUG_RP2040_PORT=Serial2
USB Stack
---------
Not specifying any special build flags regarding this gives one the
default Pico SDK USB stack. To change it, add
.. code:: ini
; Adafruit TinyUSB
build_flags = -DUSE_TINYUSB
; No USB stack
build_flags = -DPIO_FRAMEWORK_ARDUINO_NO_USB
Note that the special "No USB" setting is also supported, through the
shortcut-define ``PIO_FRAMEWORK_ARDUINO_NO_USB``.
Selecting a different core version
----------------------------------
If you wish to use a different version of the core, e.g., the latest git
``master`` version, you can use a
`platform_packages <https://docs.platformio.org/en/latest/projectconf/section_env_platform.html#platform-packages>`__
directive to do so. Simply specify that the framework package
(``framework-arduinopico``) comes from a different source.
.. code:: ini
platform_packages =
framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git#master
Whereas the ``#master`` can also be replaced by a ``#branchname`` or a
``#commithash``. If left out, it will pull the default branch, which is ``master``.
The ``file://`` pseudo-protocol can also be used instead of ``https://`` to point to a
local copy of the core (with e.g. some modifications) on disk.
Note that this can only be done for versions that have the PlatformIO
builder script it in, so versions before 1.9.2 are not supported.
Examples
--------
The following example ``platformio.ini`` can be used for a Raspberry Pi Pico
and 0.5MByte filesystem.
.. code:: ini
[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
build_board.core = earlephilhower
board_build.filesystem_size = 0.5m
; note that download link for toolchain is specific for OS. see https://github.com/earlephilhower/pico-quick-toolchain/releases.
platform_packages =
maxgerhardt/framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git
maxgerhardt/toolchain-pico@https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.3.1-a/x86_64-w64-mingw32.arm-none-eabi-7855b0c.210706.zip
The initial project structure should be generated just creating a new
project for the Pico and the Arduino framework, after which the
auto-generated ``platformio.ini`` can be adapted per above.
BIN
View File
Binary file not shown.
+2
View File
@@ -181,6 +181,8 @@ void TwoWire::end() {
return;
}
i2c_deinit(_i2c);
pinMode(_sda, INPUT);
pinMode(_scl, INPUT);
_running = false;
_txBegun = false;
}
+15 -4
View File
@@ -1,6 +1,17 @@
{
"name": "framework-arduinopico",
"description": "Arduino Wiring-based Framework (RPi Pico RP2040)",
"url": "https://github.com/earlephilhower/arduino-pico",
"version": "0.9.2"
"name": "framework-arduinopico",
"version": "1.10905.0",
"description": "Arduino Wiring-based Framework (RPi Pico RP2040)",
"keywords": [
"framework",
"arduino",
"Cortex-M",
"Raspberry Pi",
"RP2040"
],
"homepage": "https://arduino-pico.readthedocs.io/en/latest/",
"repository": {
"type": "git",
"url": "https://github.com/earlephilhower/arduino-pico"
}
}
+3
View File
@@ -44,6 +44,9 @@
{
"name": "SparkFun ProMicro RP2040"
},
{
"name": "Melopero Shake RP2040"
},
{
"name": "Generic RP2040 Module"
}
+3 -1
View File
@@ -13,9 +13,11 @@ pico_sdk_init()
add_library(pico STATIC)
# Use a longer XOSC startup time, to accommodate Adafruit and other boards that may need it.
target_compile_definitions(pico PUBLIC
PICO_PRINTF_ALWAYS_INCLUDED=1
PICO_FLASH_SIZE_BYTES=16777216
PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64
)
target_compile_options(pico PUBLIC
@@ -25,7 +27,7 @@ target_compile_options(pico PUBLIC
include_directories(BEFORE ${PICO_SDK_PATH}/../tools/libpico)
target_link_libraries(pico
target_link_libraries(pico
boot_stage2
hardware_adc
hardware_base
+1
View File
@@ -145,3 +145,4 @@ MakeBoard("sparkfun_promicrorp2040", "SparkFun", "ProMicro RP2040", "0x1b4f", "0
MakeBoard("generic", "Generic", "RP2040", "0x2e8a", "0xf00a", "GENERIC_RP2040", 16, "boot2_generic_03h_4_padded_checksum")
MakeBoard("challenger_2040_wifi", "iLabs", "Challenger 2040 WiFi", "0x2e8a", "0x1006", "CHALLENGER_2040_WIFI_RP2040", 8, "boot2_w25q080_2_padded_checksum")
MakeBoard("challenger_2040_lte", "iLabs", "Challenger 2040 LTE", "0x2e8a", "0x100b", "CHALLENGER_2040_LTE_RP2040", 8, "boot2_w25q080_2_padded_checksum")
MakeBoard("melopero_shake_rp2040", "Melopero", "Shake RP2040", "0x2e8a", "0x1005", "MELOPERO_SHAKE_RP2040", 16, "boot2_w25q080_2_padded_checksum")
+228
View File
@@ -0,0 +1,228 @@
# Copyright 2021-present Maximilian Gerhardt <maximilian.gerhardt@rub.de>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os, re, sys
from SCons.Script import DefaultEnvironment, Builder, AlwaysBuild
env = DefaultEnvironment()
platform = env.PioPlatform()
board = env.BoardConfig()
upload_protocol = env.subst("$UPLOAD_PROTOCOL") or "picotool"
ram_size = board.get("upload.maximum_ram_size")
FRAMEWORK_DIR = platform.get_package_dir("framework-arduinopico")
assert os.path.isdir(FRAMEWORK_DIR)
# update progsize expression to also check for bootloader.
env.Replace(
SIZEPROGREGEXP=r"^(?:\.boot2|\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*"
)
env.Append(
ASFLAGS=env.get("CCFLAGS", [])[:],
CCFLAGS=[
"-Werror=return-type",
"-march=armv6-m",
"-mcpu=cortex-m0plus",
"-mthumb",
"-ffunction-sections",
"-fdata-sections",
"-iprefix" + os.path.join(FRAMEWORK_DIR),
"@%s" % os.path.join(FRAMEWORK_DIR, "lib", "platform_inc.txt")
],
CFLAGS=[
"-std=gnu17"
],
CXXFLAGS=[
"-std=gnu++17",
"-fno-exceptions",
"-fno-rtti",
],
CPPDEFINES=[
("ARDUINO", 10810),
"ARDUINO_ARCH_RP2040",
("F_CPU", "$BOARD_F_CPU"),
("BOARD_NAME", '\\"%s\\"' % env.subst("$BOARD")),
],
CPPPATH=[
os.path.join(FRAMEWORK_DIR, "cores", "rp2040"),
os.path.join(FRAMEWORK_DIR, "cores", "rp2040", "api", "deprecated"),
os.path.join(FRAMEWORK_DIR, "cores", "rp2040",
"api", "deprecated-avr-comp")
],
LINKFLAGS=[
"-march=armv6-m",
"-mcpu=cortex-m0plus",
"-mthumb",
"@%s" % os.path.join(FRAMEWORK_DIR, "lib", "platform_wrap.txt"),
"-u_printf_float",
"-u_scanf_float",
# no cross-reference table, heavily spams the output
# "-Wl,--cref",
"-Wl,--check-sections",
"-Wl,--gc-sections",
"-Wl,--unresolved-symbols=report-all",
"-Wl,--warn-common"
],
LIBSOURCE_DIRS=[os.path.join(FRAMEWORK_DIR, "libraries")],
LIBPATH=[
os.path.join(FRAMEWORK_DIR, "lib")
],
# link lib/libpico.a
LIBS=["pico", "m", "c", "stdc++", "c"]
)
def configure_usb_flags(cpp_defines):
global ram_size
if "USE_TINYUSB" in cpp_defines:
env.Append(CPPPATH=[os.path.join(
FRAMEWORK_DIR, "libraries", "Adafruit_TinyUSB_Arduino", "src", "arduino")])
elif "PIO_FRAMEWORK_ARDUINO_NO_USB" in cpp_defines:
env.Append(
CPPPATH=[os.path.join(FRAMEWORK_DIR, "tools", "libpico")],
CPPDEFINES=[
"NO_USB",
"DISABLE_USB_SERIAL"
]
)
# do not further add more USB flags or update sizes. no USB used.
return
else:
# standard Pico SDK USB stack used.
env.Append(CPPPATH=[os.path.join(FRAMEWORK_DIR, "tools", "libpico")])
# in any case, add standard flags
# preferably use USB information from arduino.earlephilhower section,
# but fallback to sensible values derived from other parts otherwise.
usb_pid = board.get("build.arduino.earlephilhower.usb_pid",
board.get("build.hwids", [[0, 0]])[0][1])
usb_vid = board.get("build.arduino.earlephilhower.usb_vid",
board.get("build.hwids", [[0, 0]])[0][0])
usb_manufacturer = board.get(
"build.arduino.earlephilhower.usb_manufacturer", board.get("vendor", "Raspberry Pi"))
usb_product = board.get(
"build.arduino.earlephilhower.usb_product", board.get("name", "Pico"))
# Copy logic from makeboards.py.
# Depending on whether a certain upload / debug method is used, change
# the PID/VID.
# https://github.com/earlephilhower/arduino-pico/blob/master/tools/makeboards.py
vidtouse = usb_vid
pidtouse = usb_pid
if upload_protocol == "picoprobe":
pidtouse = '0x0004'
elif upload_protocol == "picodebug":
vidtouse = '0x1209'
pidtouse = '0x2488'
ram_size = 240 * 1024
env.Append(CPPDEFINES=[
("CFG_TUSB_MCU", "OPT_MCU_RP2040"),
("USB_VID", usb_vid),
("USB_PID", usb_pid),
("USB_MANUFACTURER", '\\"%s\\"' % usb_manufacturer),
("USB_PRODUCT", '\\"%s\\"' % usb_product),
("SERIALUSB_PID", usb_pid)
])
# use vidtouse and pidtouse
# for USB PID/VID autodetection
hw_ids = board.get("build.hwids", [["0x2E8A", "0x00C0"]])
hw_ids[0][0] = vidtouse
hw_ids[0][1] = pidtouse
board.update("build.hwids", hw_ids)
board.update("upload.maximum_ram_size", ram_size)
#
# Process configuration flags
#
cpp_defines = env.Flatten(env.get("CPPDEFINES", []))
configure_usb_flags(cpp_defines)
# info about the filesystem is already parsed by the platform's main.py
# script. We can just use the info here
linkerscript_cmd = env.Command(
os.path.join("$BUILD_DIR", "memmap_default.ld"), # $TARGET
os.path.join(FRAMEWORK_DIR, "lib", "memmap_default.ld"), # $SOURCE
env.VerboseAction(" ".join([
'"$PYTHONEXE" "%s"' % os.path.join(
FRAMEWORK_DIR, "tools", "simplesub.py"),
"--input", "$SOURCE",
"--out", "$TARGET",
"--sub", "__FLASH_LENGTH__", "$PICO_FLASH_LENGTH",
"--sub", "__EEPROM_START__", "$PICO_EEPROM_START",
"--sub", "__FS_START__", "$FS_START",
"--sub", "__FS_END__", "$FS_END",
"--sub", "__RAM_LENGTH__", "%dk" % (ram_size // 1024),
]), "Generating linkerscript $BUILD_DIR/memmap_default.ld")
)
# if no custom linker script is provided, we use the command that we prepared to generate one.
if not board.get("build.ldscript", ""):
# execute fetch filesystem info stored in env to alawys have that info ready
env["fetch_fs_size"](env)
env.Depends("$BUILD_DIR/${PROGNAME}.elf", linkerscript_cmd)
env.Replace(LDSCRIPT_PATH=os.path.join("$BUILD_DIR", "memmap_default.ld"))
libs = []
variant = board.get("build.arduino.earlephilhower.variant", board.get("build.variant", None))
if variant is not None:
env.Append(CPPPATH=[
os.path.join(FRAMEWORK_DIR, "variants", variant)
])
libs.append(
env.BuildLibrary(
os.path.join("$BUILD_DIR", "FrameworkArduinoVariant"),
os.path.join(FRAMEWORK_DIR, "variants", variant)))
libs.append(
env.BuildLibrary(
os.path.join("$BUILD_DIR", "FrameworkArduino"),
os.path.join(FRAMEWORK_DIR, "cores", "rp2040")))
bootloader_src_file = board.get(
"build.arduino.earlephilhower.boot2_source", "boot2_generic_03h_2_padded_checksum.S")
# Add bootloader file (boot2.o)
# Only build the needed .S file, exclude all others via src_filter.
env.BuildSources(
os.path.join("$BUILD_DIR", "FrameworkArduinoBootloader"),
os.path.join(FRAMEWORK_DIR, "boot2"),
"-<*> +<%s>" % bootloader_src_file,
)
# Add include flags for all .S assembly file builds
env.Append(
ASFLAGS=[
"-I", os.path.join(FRAMEWORK_DIR, "pico-sdk", "src",
"rp2040", "hardware_regs", "include"),
"-I", os.path.join(FRAMEWORK_DIR, "pico-sdk", "src",
"common", "pico_binary_info", "include")
]
)
env.Prepend(LIBS=libs)
+4 -6
View File
@@ -27,12 +27,10 @@
#define PIN_SPI1_SS (31u)
// Wire
#define PIN_WIRE0_SDA (2u)
#define PIN_WIRE0_SCL (3u)
// Not pinned out
#define PIN_WIRE1_SDA (31u)
#define PIN_WIRE1_SCL (31u)
#define PIN_WIRE0_SDA (24u)
#define PIN_WIRE0_SCL (25u)
#define PIN_WIRE1_SDA (2u)
#define PIN_WIRE1_SCL (3u)
#define SERIAL_HOWMANY (2u)
#define SPI_HOWMANY (1u)
+4 -4
View File
@@ -67,9 +67,9 @@ static const uint8_t D15 = (14u);
static const uint8_t D16 = (15u);
static const uint8_t D17 = (19u);
static const uint8_t A0 = (26u);
static const uint8_t A1 = (27u);
static const uint8_t A2 = (28u);
static const uint8_t A3 = (29u);
static const uint8_t A0 = (29u);
static const uint8_t A1 = (28u);
static const uint8_t A2 = (27u);
static const uint8_t A3 = (26u);
static const uint8_t A4 = (25u);
static const uint8_t A5 = (21u);
@@ -0,0 +1,107 @@
/*
ESP8285 helper class for the Challenger RP2040 WiFi boards
Copyright (c) 2021 P. Oldberg <pontus@ilabs.se>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Arduino.h>
#include <ChallengerWiFi.h>
Challenger2040WiFiClass::Challenger2040WiFiClass() {
pinMode(PIN_ESP8285_RST, OUTPUT);
digitalWrite(PIN_ESP8285_RST, LOW); // Hold ESP8285 in reset
pinMode(PIN_ESP8285_MODE, OUTPUT);
digitalWrite(PIN_ESP8285_MODE, HIGH); // Prepare for normal start
}
// Do a HW reset by applying a low pulse to the reset line for 1mSec
void Challenger2040WiFiClass::doHWReset() {
digitalWrite(PIN_ESP8285_RST, LOW); // Hold ESP8285 in reset
delay(1);
digitalWrite(PIN_ESP8285_RST, HIGH); // Release ESP8285 reset
}
// Set the mode flag high to indicate normal run operation and do a HW
// reset.
void Challenger2040WiFiClass::runReset() { // Prepare ESP8285 for normal op
digitalWrite(PIN_ESP8285_MODE, HIGH); // Prepare for normal start
doHWReset();
}
// Set the mode flag low to indicate flash operation and do a HW
// reset.
void Challenger2040WiFiClass::flashReset() { // Prepare ESP8285 for flashing
digitalWrite(PIN_ESP8285_MODE, LOW); // Prepare for normal start
doHWReset();
}
// Wait for the modem to reply with a "ready" prompt. This can be done
// after a sw or hw reset have been performed to ensure that the AT
// interpreter is up and running.
bool Challenger2040WiFiClass::waitForReady() {
int timeout = 20; // Aprox max 2 sec
Serial2.begin(DEFAULT_ESP8285_BAUDRATE);
Serial2.setTimeout(100);
String rdy = Serial2.readStringUntil('\n');
while(!rdy.startsWith("ready") && timeout--) {
rdy = Serial2.readStringUntil('\n');
}
Serial2.setTimeout(1000); // Reset default timeout to 1000
if (timeout)
return true;
return false;
}
// Reset the ESP8285 and wait for the "ready" prompt to be returned.
bool Challenger2040WiFiClass::reset() {
runReset();
return waitForReady();
}
// Checks to see if the modem responds to the "AT" poll command.
bool Challenger2040WiFiClass::isAlive() {
int timeout = 5;
Serial2.setTimeout(250);
Serial2.println(F("AT"));
String rdy = Serial2.readStringUntil('\n');
while(!rdy.startsWith(F("OK")) && timeout--) {
rdy = Serial2.readStringUntil('\n');
}
Serial2.setTimeout(1000);
if (timeout)
return true;
return false;
}
// Change the baud rate of the ESP8285 as well as the local UART.
// No checking is done on the input baud rate so the user must know what
// baud rates are valid. The function ends by checking if the ESP8285 is
// reachable by doing an "AT" poll.
bool Challenger2040WiFiClass::changeBaudRate(int baud) {
Serial2.print(F("AT+UART_CUR="));
Serial2.print(baud);
Serial2.println(F(",8,1,0,0"));
delay(100);
Serial2.end();
Serial2.begin(baud);
return isAlive();
}
Challenger2040WiFiClass Challenger2040WiFi;
@@ -0,0 +1,36 @@
/*
ESP8285 helper class for the Challenger RP2040 WiFi boards
Copyright (c) 2021 P. Oldberg <pontus@ilabs.se>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#pragma once
#define DEFAULT_ESP8285_BAUDRATE 115200
class Challenger2040WiFiClass {
public:
Challenger2040WiFiClass();
void doHWReset();
void runReset();
void flashReset();
bool waitForReady();
bool reset();
bool isAlive();
bool changeBaudRate(int baud);
};
extern Challenger2040WiFiClass Challenger2040WiFi;
@@ -0,0 +1,39 @@
#pragma once
// Pin definitions taken from:
// https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf
// LEDs
#define PIN_LED (25u)
// Serial
#define PIN_SERIAL1_TX (0u)
#define PIN_SERIAL1_RX (1u)
#define PIN_SERIAL2_TX (8u)
#define PIN_SERIAL2_RX (9u)
// SPI
#define PIN_SPI0_MISO (20u)
#define PIN_SPI0_MOSI (19u)
#define PIN_SPI0_SCK (18u)
#define PIN_SPI0_SS (1u)
#define PIN_SPI1_MISO (12u)
#define PIN_SPI1_MOSI (11u)
#define PIN_SPI1_SCK (10u)
#define PIN_SPI1_SS (13u)
// Wire
#define PIN_WIRE0_SDA (8u)
#define PIN_WIRE0_SCL (9u)
#define PIN_WIRE1_SDA (2u)
#define PIN_WIRE1_SCL (3u)
#define SERIAL_HOWMANY (3u)
#define SPI_HOWMANY (2u)
#define WIRE_HOWMANY (2u)
#include "../generic/common.h"