Compare commits

..
18 Commits
Author SHA1 Message Date
Earle F. Philhower, III 1bfd07c19a Update version 2023-02-11 12:34:40 -08:00
Andrew KrollandEarle F. Philhower, III 5dafbf57e9 Optimize and improve upload experience (#1136)
Stop the IDE from reporting large "Serial port not fount"-type errors after
every upload by delaying a bit before the uploader exits to give the OS/Pico
time to renegotiate.

Fixes flashing problems on certain Linux distros by checking all possible mount
locations instead of only the first one to be found.

Make 1200bps reset tickle more robust

Co-authored-by: Earle F. Philhower, III <earlephilhower@yahoo.com>
2023-02-11 12:33:44 -08:00
Earle F. Philhower, III 09db2e6c37 Apply SD.h fix from ESP8266 (#1171)
Pull in the portion of the change correcting the flag setting from
https://github.com/esp8266/Arduino/pull/8833
2023-02-11 11:57:27 -08:00
Earle F. Philhower, III b6cb2e7edc Avoid race condition in I2S/PWMAudio delete (#1163)
Fixes #1162

Disable DMA interrupts while we're tearing down an AudioBufferManager
and explicitly clear any potential leftover IRQs to avoid hangs.
2023-02-09 13:29:45 -08:00
Earle F. Philhower, III bedcbf57c6 Add ESP8266/32 WiFi.isConnected wrapper (#1166)
Fixes #1165
2023-02-09 08:39:35 -08:00
TomKong666 7df080ee92 PDM library re-port (#1160)
See #1156
2023-02-07 08:10:24 -08:00
Earle F. Philhower, III b400897ca2 Avoid initial glitch on Serial1/2 when RX high (#1154)
Fixes #1153

Set up the GPIO redirects before the UART is pulled from reset to avoid
a possible bad byte at `Serial1/2.begin()`.
2023-02-01 19:15:58 -08:00
uPesy Electronics 7573500e59 Add uPesy Tutorials using Arduino Pico port. (#1151) 2023-02-01 06:52:25 -08:00
Vishnu Mohanan 8a1e03739a Fix SPI transfer16 return value (#1148)
The SPI transfer16() function returned wrongly oriented bytes. Replaced reverseByte() with reverse16Bit().

Fixes #1146
2023-01-31 08:09:53 -08:00
Earle F. Philhower, III a1af9698ac Fix USB VID/PID setting, rationalize boards.txt (#1144)
The USB VID was always being set to the Raspberry Pi foundation code,
causing other brand boards to show up incorrectly.

Remove redundant values from the boards.txt and define a consistent
USB VID/PID and use it in the setup code.

See #1129 for more info
2023-01-28 11:10:39 -08:00
Earle F. Philhower, III af01c3cc77 Add boot2_w25q128jv to generic Pico flash menu (#1142)
Add-on to #1126
2023-01-26 16:35:16 -08:00
Earle F. Philhower, III 4c8bdc2bfc Print useful uf2conv error if executable not found (#1141)
Fixes #1140

````
Converting to uf2, output size: 134144, start address: 0x2000
ERROR: Unable to execute powershell or wmic commands, can't continue.
ERROR: Please make sure either PowerShell or WMIC is installed and in
       your %PATH%.
````
2023-01-26 11:02:07 -08:00
Conor Burns c58f94a9ba Add correct boot source to helios (#1126) 2023-01-25 14:45:51 -08:00
Earle F. Philhower, III ecaa2bd778 Fix SerialUART::overflow reporting race condition (#1133)
Fixes #1132
2023-01-21 01:38:15 -08:00
Earle F. Philhower, III d619bf0bc1 More minor ESP8266 compatibility tweaks (#1131) 2023-01-20 17:06:40 -08:00
Gavin Hurlbut 9a241b0e43 Add Serial UART break reporting (#1130)
Added SerialUART::getBreakReceived()
2023-01-20 16:54:31 -08:00
Earle F. Philhower, III e3f2f87e2d Add more ESP8266 WiFi compatibility wrappers (#1128) 2023-01-19 12:44:05 -08:00
Earle F. Philhower, III a8238cb0d4 Add the YD-RP2040 support files
Oops!
2023-01-19 07:57:26 -08:00
33 changed files with 705 additions and 232 deletions
+3
View File
@@ -191,6 +191,9 @@ Here are some links to coverage and additional tutorials for using `arduino-pico
* Adafruit Feather RP2040 running LCD + TMP117 - https://www.youtube.com/watch?v=fKDeqZiIwHg
* Demonstration of Servos and I2C in Korean - https://cafe.naver.com/arduinoshield/1201
* Home Assistant Pico W integration starter project using Arduino - https://github.com/daniloc/PicoW_HomeAssistant_Starter
* Tutorials for the Raspberry Pi Pico / uPesy RP2040 DevKit board
- English version: https://www.upesy.com/blogs/tutorials/best-tutorials-for-rpi-pi-pico-with-arduino-code
- French version: https://www.upesy.fr/blogs/tutorials/best-tutorials-for-rpi-pi-pico-with-arduino-code
# Contributing
If you want to contribute or have bugfixes, drop me a note at <earlephilhower@yahoo.com> or open an issue/PR here.
+103 -151
View File
@@ -37,7 +37,8 @@ rpipico.vid.6=0x2e8a
rpipico.pid.6=0xc00a
rpipico.vid.7=0x2e8a
rpipico.pid.7=0xc10a
rpipico.build.usbpid=-DSERIALUSB_PID=0x000a
rpipico.build.usbvid=-DUSBD_VID=0x2e8a
rpipico.build.usbpid=-DUSBD_PID=0x000a
rpipico.build.usbpwr=-DUSBD_MAX_POWER_MA=250
rpipico.build.board=RASPBERRY_PI_PICO
rpipico.build.mcu=cortex-m0plus
@@ -52,8 +53,6 @@ rpipico.build.led=
rpipico.build.core=rp2040
rpipico.build.ldscript=memmap_default.ld
rpipico.build.boot2=boot2_w25q080_2_padded_checksum
rpipico.build.vid=0x2e8a
rpipico.build.pid=0x000a
rpipico.build.usb_manufacturer="Raspberry Pi"
rpipico.build.usb_product="Pico"
rpipico.menu.flash.2097152_0=2MB (no FS)
@@ -224,7 +223,8 @@ rpipicow.vid.6=0x2e8a
rpipicow.pid.6=0xf00a
rpipicow.vid.7=0x2e8a
rpipicow.pid.7=0xf10a
rpipicow.build.usbpid=-DSERIALUSB_PID=0xf00a
rpipicow.build.usbvid=-DUSBD_VID=0x2e8a
rpipicow.build.usbpid=-DUSBD_PID=0xf00a
rpipicow.build.usbpwr=-DUSBD_MAX_POWER_MA=250
rpipicow.build.board=RASPBERRY_PI_PICO_W
rpipicow.build.mcu=cortex-m0plus
@@ -239,8 +239,6 @@ rpipicow.build.led=
rpipicow.build.core=rp2040
rpipicow.build.ldscript=memmap_default.ld
rpipicow.build.boot2=boot2_w25q080_2_padded_checksum
rpipicow.build.vid=0x2e8a
rpipicow.build.pid=0xf00a
rpipicow.build.usb_manufacturer="Raspberry Pi"
rpipicow.build.usb_product="Pico W"
rpipicow.menu.flash.2097152_0=2MB (no FS)
@@ -515,7 +513,8 @@ rpipicow.menu.uploadmethod.picodebug.upload.tool.default=picodebug
0xcb_helios.pid.6=0xcb74
0xcb_helios.vid.7=0x1209
0xcb_helios.pid.7=0xcb74
0xcb_helios.build.usbpid=-DSERIALUSB_PID=0xCB74
0xcb_helios.build.usbvid=-DUSBD_VID=0x1209
0xcb_helios.build.usbpid=-DUSBD_PID=0xCB74
0xcb_helios.build.usbpwr=-DUSBD_MAX_POWER_MA=500
0xcb_helios.build.board=0XCB_HELIOS
0xcb_helios.build.mcu=cortex-m0plus
@@ -529,9 +528,7 @@ rpipicow.menu.uploadmethod.picodebug.upload.tool.default=picodebug
0xcb_helios.build.led=
0xcb_helios.build.core=rp2040
0xcb_helios.build.ldscript=memmap_default.ld
0xcb_helios.build.boot2=boot2_w25q080_2_padded_checksum
0xcb_helios.build.vid=0x1209
0xcb_helios.build.pid=0xCB74
0xcb_helios.build.boot2=boot2_w25q128jvxq_4_padded_checksum
0xcb_helios.build.usb_manufacturer="0xCB"
0xcb_helios.build.usb_product="Helios"
0xcb_helios.menu.flash.16777216_0=16MB (no FS)
@@ -786,7 +783,8 @@ adafruit_feather.vid.6=0x239a
adafruit_feather.pid.6=0xc0f1
adafruit_feather.vid.7=0x239a
adafruit_feather.pid.7=0xc1f1
adafruit_feather.build.usbpid=-DSERIALUSB_PID=0x80f1
adafruit_feather.build.usbvid=-DUSBD_VID=0x239a
adafruit_feather.build.usbpid=-DUSBD_PID=0x80f1
adafruit_feather.build.usbpwr=-DUSBD_MAX_POWER_MA=250
adafruit_feather.build.board=ADAFRUIT_FEATHER_RP2040
adafruit_feather.build.mcu=cortex-m0plus
@@ -801,8 +799,6 @@ adafruit_feather.build.led=
adafruit_feather.build.core=rp2040
adafruit_feather.build.ldscript=memmap_default.ld
adafruit_feather.build.boot2=boot2_w25x10cl_4_padded_checksum
adafruit_feather.build.vid=0x239a
adafruit_feather.build.pid=0x80f1
adafruit_feather.build.usb_manufacturer="Adafruit"
adafruit_feather.build.usb_product="Feather RP2040"
adafruit_feather.menu.flash.8388608_0=8MB (no FS)
@@ -1009,7 +1005,8 @@ adafruit_feather_scorpio.vid.6=0x239a
adafruit_feather_scorpio.pid.6=0xc121
adafruit_feather_scorpio.vid.7=0x239a
adafruit_feather_scorpio.pid.7=0xc121
adafruit_feather_scorpio.build.usbpid=-DSERIALUSB_PID=0x8121
adafruit_feather_scorpio.build.usbvid=-DUSBD_VID=0x239a
adafruit_feather_scorpio.build.usbpid=-DUSBD_PID=0x8121
adafruit_feather_scorpio.build.usbpwr=-DUSBD_MAX_POWER_MA=250
adafruit_feather_scorpio.build.board=ADAFRUIT_FEATHER_RP2040_SCORPIO
adafruit_feather_scorpio.build.mcu=cortex-m0plus
@@ -1024,8 +1021,6 @@ adafruit_feather_scorpio.build.led=
adafruit_feather_scorpio.build.core=rp2040
adafruit_feather_scorpio.build.ldscript=memmap_default.ld
adafruit_feather_scorpio.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_feather_scorpio.build.vid=0x239a
adafruit_feather_scorpio.build.pid=0x8121
adafruit_feather_scorpio.build.usb_manufacturer="Adafruit"
adafruit_feather_scorpio.build.usb_product="Feather RP2040 SCORPIO"
adafruit_feather_scorpio.menu.flash.8388608_0=8MB (no FS)
@@ -1232,7 +1227,8 @@ adafruit_itsybitsy.vid.6=0x239a
adafruit_itsybitsy.pid.6=0xc0fd
adafruit_itsybitsy.vid.7=0x239a
adafruit_itsybitsy.pid.7=0xc1fd
adafruit_itsybitsy.build.usbpid=-DSERIALUSB_PID=0x80fd
adafruit_itsybitsy.build.usbvid=-DUSBD_VID=0x239a
adafruit_itsybitsy.build.usbpid=-DUSBD_PID=0x80fd
adafruit_itsybitsy.build.usbpwr=-DUSBD_MAX_POWER_MA=250
adafruit_itsybitsy.build.board=ADAFRUIT_ITSYBITSY_RP2040
adafruit_itsybitsy.build.mcu=cortex-m0plus
@@ -1247,8 +1243,6 @@ adafruit_itsybitsy.build.led=
adafruit_itsybitsy.build.core=rp2040
adafruit_itsybitsy.build.ldscript=memmap_default.ld
adafruit_itsybitsy.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_itsybitsy.build.vid=0x239a
adafruit_itsybitsy.build.pid=0x80fd
adafruit_itsybitsy.build.usb_manufacturer="Adafruit"
adafruit_itsybitsy.build.usb_product="ItsyBitsy RP2040"
adafruit_itsybitsy.menu.flash.8388608_0=8MB (no FS)
@@ -1455,7 +1449,8 @@ adafruit_qtpy.vid.6=0x239a
adafruit_qtpy.pid.6=0xc0f7
adafruit_qtpy.vid.7=0x239a
adafruit_qtpy.pid.7=0xc1f7
adafruit_qtpy.build.usbpid=-DSERIALUSB_PID=0x80f7
adafruit_qtpy.build.usbvid=-DUSBD_VID=0x239a
adafruit_qtpy.build.usbpid=-DUSBD_PID=0x80f7
adafruit_qtpy.build.usbpwr=-DUSBD_MAX_POWER_MA=250
adafruit_qtpy.build.board=ADAFRUIT_QTPY_RP2040
adafruit_qtpy.build.mcu=cortex-m0plus
@@ -1470,8 +1465,6 @@ adafruit_qtpy.build.led=
adafruit_qtpy.build.core=rp2040
adafruit_qtpy.build.ldscript=memmap_default.ld
adafruit_qtpy.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_qtpy.build.vid=0x239a
adafruit_qtpy.build.pid=0x80f7
adafruit_qtpy.build.usb_manufacturer="Adafruit"
adafruit_qtpy.build.usb_product="QT Py RP2040"
adafruit_qtpy.menu.flash.8388608_0=8MB (no FS)
@@ -1678,7 +1671,8 @@ adafruit_stemmafriend.vid.6=0x239a
adafruit_stemmafriend.pid.6=0xc0e3
adafruit_stemmafriend.vid.7=0x239a
adafruit_stemmafriend.pid.7=0xc1e3
adafruit_stemmafriend.build.usbpid=-DSERIALUSB_PID=0x80e3
adafruit_stemmafriend.build.usbvid=-DUSBD_VID=0x239a
adafruit_stemmafriend.build.usbpid=-DUSBD_PID=0x80e3
adafruit_stemmafriend.build.usbpwr=-DUSBD_MAX_POWER_MA=250
adafruit_stemmafriend.build.board=ADAFRUIT_STEMMAFRIEND_RP2040
adafruit_stemmafriend.build.mcu=cortex-m0plus
@@ -1693,8 +1687,6 @@ adafruit_stemmafriend.build.led=
adafruit_stemmafriend.build.core=rp2040
adafruit_stemmafriend.build.ldscript=memmap_default.ld
adafruit_stemmafriend.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_stemmafriend.build.vid=0x239a
adafruit_stemmafriend.build.pid=0x80e3
adafruit_stemmafriend.build.usb_manufacturer="Adafruit"
adafruit_stemmafriend.build.usb_product="STEMMA Friend RP2040"
adafruit_stemmafriend.menu.flash.8388608_0=8MB (no FS)
@@ -1901,7 +1893,8 @@ adafruit_trinkeyrp2040qt.vid.6=0x239a
adafruit_trinkeyrp2040qt.pid.6=0xc109
adafruit_trinkeyrp2040qt.vid.7=0x239a
adafruit_trinkeyrp2040qt.pid.7=0xc109
adafruit_trinkeyrp2040qt.build.usbpid=-DSERIALUSB_PID=0x8109
adafruit_trinkeyrp2040qt.build.usbvid=-DUSBD_VID=0x239a
adafruit_trinkeyrp2040qt.build.usbpid=-DUSBD_PID=0x8109
adafruit_trinkeyrp2040qt.build.usbpwr=-DUSBD_MAX_POWER_MA=250
adafruit_trinkeyrp2040qt.build.board=ADAFRUIT_TRINKEYQT_RP2040
adafruit_trinkeyrp2040qt.build.mcu=cortex-m0plus
@@ -1916,8 +1909,6 @@ adafruit_trinkeyrp2040qt.build.led=
adafruit_trinkeyrp2040qt.build.core=rp2040
adafruit_trinkeyrp2040qt.build.ldscript=memmap_default.ld
adafruit_trinkeyrp2040qt.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_trinkeyrp2040qt.build.vid=0x239a
adafruit_trinkeyrp2040qt.build.pid=0x8109
adafruit_trinkeyrp2040qt.build.usb_manufacturer="Adafruit"
adafruit_trinkeyrp2040qt.build.usb_product="Trinkey RP2040 QT"
adafruit_trinkeyrp2040qt.menu.flash.8388608_0=8MB (no FS)
@@ -2124,7 +2115,8 @@ adafruit_macropad2040.vid.6=0x239a
adafruit_macropad2040.pid.6=0xc107
adafruit_macropad2040.vid.7=0x239a
adafruit_macropad2040.pid.7=0xc107
adafruit_macropad2040.build.usbpid=-DSERIALUSB_PID=0x8107
adafruit_macropad2040.build.usbvid=-DUSBD_VID=0x239a
adafruit_macropad2040.build.usbpid=-DUSBD_PID=0x8107
adafruit_macropad2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
adafruit_macropad2040.build.board=ADAFRUIT_MACROPAD_RP2040
adafruit_macropad2040.build.mcu=cortex-m0plus
@@ -2139,8 +2131,6 @@ adafruit_macropad2040.build.led=
adafruit_macropad2040.build.core=rp2040
adafruit_macropad2040.build.ldscript=memmap_default.ld
adafruit_macropad2040.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_macropad2040.build.vid=0x239a
adafruit_macropad2040.build.pid=0x8107
adafruit_macropad2040.build.usb_manufacturer="Adafruit"
adafruit_macropad2040.build.usb_product="MacroPad RP2040"
adafruit_macropad2040.menu.flash.8388608_0=8MB (no FS)
@@ -2347,7 +2337,8 @@ adafruit_kb2040.vid.6=0x239a
adafruit_kb2040.pid.6=0xc105
adafruit_kb2040.vid.7=0x239a
adafruit_kb2040.pid.7=0xc105
adafruit_kb2040.build.usbpid=-DSERIALUSB_PID=0x8105
adafruit_kb2040.build.usbvid=-DUSBD_VID=0x239a
adafruit_kb2040.build.usbpid=-DUSBD_PID=0x8105
adafruit_kb2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
adafruit_kb2040.build.board=ADAFRUIT_KB2040_RP2040
adafruit_kb2040.build.mcu=cortex-m0plus
@@ -2362,8 +2353,6 @@ adafruit_kb2040.build.led=
adafruit_kb2040.build.core=rp2040
adafruit_kb2040.build.ldscript=memmap_default.ld
adafruit_kb2040.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_kb2040.build.vid=0x239a
adafruit_kb2040.build.pid=0x8105
adafruit_kb2040.build.usb_manufacturer="Adafruit"
adafruit_kb2040.build.usb_product="KB2040"
adafruit_kb2040.menu.flash.8388608_0=8MB (no FS)
@@ -2562,7 +2551,8 @@ arduino_nano_connect.vid.2=0x2341
arduino_nano_connect.pid.2=0x015e
arduino_nano_connect.vid.3=0x2341
arduino_nano_connect.pid.3=0x025e
arduino_nano_connect.build.usbpid=-DSERIALUSB_PID=0x005e
arduino_nano_connect.build.usbvid=-DUSBD_VID=0x2341
arduino_nano_connect.build.usbpid=-DUSBD_PID=0x005e
arduino_nano_connect.build.usbpwr=-DUSBD_MAX_POWER_MA=250
arduino_nano_connect.build.board=NANO_RP2040_CONNECT
arduino_nano_connect.build.mcu=cortex-m0plus
@@ -2577,8 +2567,6 @@ arduino_nano_connect.build.led=
arduino_nano_connect.build.core=rp2040
arduino_nano_connect.build.ldscript=memmap_default.ld
arduino_nano_connect.build.boot2=boot2_w25q080_2_padded_checksum
arduino_nano_connect.build.vid=0x2341
arduino_nano_connect.build.pid=0x005e
arduino_nano_connect.build.usb_manufacturer="Arduino"
arduino_nano_connect.build.usb_product="Nano RP2040 Connect"
arduino_nano_connect.menu.flash.16777216_0=16MB (no FS)
@@ -2833,7 +2821,8 @@ bridgetek_idm2040-7a.vid.6=0x2e8a
bridgetek_idm2040-7a.pid.6=0xd041
bridgetek_idm2040-7a.vid.7=0x2e8a
bridgetek_idm2040-7a.pid.7=0xd141
bridgetek_idm2040-7a.build.usbpid=-DSERIALUSB_PID=0x1041
bridgetek_idm2040-7a.build.usbvid=-DUSBD_VID=0x2e8a
bridgetek_idm2040-7a.build.usbpid=-DUSBD_PID=0x1041
bridgetek_idm2040-7a.build.usbpwr=-DUSBD_MAX_POWER_MA=250
bridgetek_idm2040-7a.build.board=BRIDGETEK_IDM2040-7A
bridgetek_idm2040-7a.build.mcu=cortex-m0plus
@@ -2848,8 +2837,6 @@ bridgetek_idm2040-7a.build.led=
bridgetek_idm2040-7a.build.core=rp2040
bridgetek_idm2040-7a.build.ldscript=memmap_default.ld
bridgetek_idm2040-7a.build.boot2=boot2_w25q080_2_padded_checksum
bridgetek_idm2040-7a.build.vid=0x2e8a
bridgetek_idm2040-7a.build.pid=0x1041
bridgetek_idm2040-7a.build.usb_manufacturer="BridgeTek"
bridgetek_idm2040-7a.build.usb_product="IDM2040-7A"
bridgetek_idm2040-7a.build.extra_flags=-DFT8XX_TYPE=BT817 -DDISPLAY_RES=WVGA -DPLATFORM_RP2040
@@ -3057,7 +3044,8 @@ cytron_maker_nano_rp2040.vid.6=0x2e8a
cytron_maker_nano_rp2040.pid.6=0xd00f
cytron_maker_nano_rp2040.vid.7=0x2e8a
cytron_maker_nano_rp2040.pid.7=0xd10f
cytron_maker_nano_rp2040.build.usbpid=-DSERIALUSB_PID=0x100f
cytron_maker_nano_rp2040.build.usbvid=-DUSBD_VID=0x2e8a
cytron_maker_nano_rp2040.build.usbpid=-DUSBD_PID=0x100f
cytron_maker_nano_rp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
cytron_maker_nano_rp2040.build.board=CYTRON_MAKER_NANO_RP2040
cytron_maker_nano_rp2040.build.mcu=cortex-m0plus
@@ -3072,8 +3060,6 @@ cytron_maker_nano_rp2040.build.led=
cytron_maker_nano_rp2040.build.core=rp2040
cytron_maker_nano_rp2040.build.ldscript=memmap_default.ld
cytron_maker_nano_rp2040.build.boot2=boot2_w25q080_2_padded_checksum
cytron_maker_nano_rp2040.build.vid=0x2e8a
cytron_maker_nano_rp2040.build.pid=0x100f
cytron_maker_nano_rp2040.build.usb_manufacturer="Cytron"
cytron_maker_nano_rp2040.build.usb_product="Maker Nano RP2040"
cytron_maker_nano_rp2040.menu.flash.2097152_0=2MB (no FS)
@@ -3244,7 +3230,8 @@ cytron_maker_pi_rp2040.vid.6=0x2e8a
cytron_maker_pi_rp2040.pid.6=0xd000
cytron_maker_pi_rp2040.vid.7=0x2e8a
cytron_maker_pi_rp2040.pid.7=0xd100
cytron_maker_pi_rp2040.build.usbpid=-DSERIALUSB_PID=0x1000
cytron_maker_pi_rp2040.build.usbvid=-DUSBD_VID=0x2e8a
cytron_maker_pi_rp2040.build.usbpid=-DUSBD_PID=0x1000
cytron_maker_pi_rp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
cytron_maker_pi_rp2040.build.board=CYTRON_MAKER_PI_RP2040
cytron_maker_pi_rp2040.build.mcu=cortex-m0plus
@@ -3259,8 +3246,6 @@ cytron_maker_pi_rp2040.build.led=
cytron_maker_pi_rp2040.build.core=rp2040
cytron_maker_pi_rp2040.build.ldscript=memmap_default.ld
cytron_maker_pi_rp2040.build.boot2=boot2_w25q080_2_padded_checksum
cytron_maker_pi_rp2040.build.vid=0x2e8a
cytron_maker_pi_rp2040.build.pid=0x1000
cytron_maker_pi_rp2040.build.usb_manufacturer="Cytron"
cytron_maker_pi_rp2040.build.usb_product="Maker Pi RP2040"
cytron_maker_pi_rp2040.menu.flash.2097152_0=2MB (no FS)
@@ -3431,7 +3416,8 @@ datanoisetv_picoadk.vid.6=0x2e8a
datanoisetv_picoadk.pid.6=0xc00a
datanoisetv_picoadk.vid.7=0x2e8a
datanoisetv_picoadk.pid.7=0xc10a
datanoisetv_picoadk.build.usbpid=-DSERIALUSB_PID=0x000a
datanoisetv_picoadk.build.usbvid=-DUSBD_VID=0x2e8a
datanoisetv_picoadk.build.usbpid=-DUSBD_PID=0x000a
datanoisetv_picoadk.build.usbpwr=-DUSBD_MAX_POWER_MA=250
datanoisetv_picoadk.build.board=DATANOISETV_PICOADK
datanoisetv_picoadk.build.mcu=cortex-m0plus
@@ -3446,8 +3432,6 @@ datanoisetv_picoadk.build.led=
datanoisetv_picoadk.build.core=rp2040
datanoisetv_picoadk.build.ldscript=memmap_default.ld
datanoisetv_picoadk.build.boot2=boot2_w25q080_2_padded_checksum
datanoisetv_picoadk.build.vid=0x2e8a
datanoisetv_picoadk.build.pid=0x000a
datanoisetv_picoadk.build.usb_manufacturer="DatanoiseTV"
datanoisetv_picoadk.build.usb_product="PicoADK"
datanoisetv_picoadk.menu.flash.2097152_0=2MB (no FS)
@@ -3618,7 +3602,8 @@ flyboard2040_core.vid.6=0x2e8a
flyboard2040_core.pid.6=0xc08a
flyboard2040_core.vid.7=0x2e8a
flyboard2040_core.pid.7=0xc18a
flyboard2040_core.build.usbpid=-DSERIALUSB_PID=0x008a
flyboard2040_core.build.usbvid=-DUSBD_VID=0x2e8a
flyboard2040_core.build.usbpid=-DUSBD_PID=0x008a
flyboard2040_core.build.usbpwr=-DUSBD_MAX_POWER_MA=500
flyboard2040_core.build.board=FLYBOARD2040_CORE
flyboard2040_core.build.mcu=cortex-m0plus
@@ -3633,8 +3618,6 @@ flyboard2040_core.build.led=
flyboard2040_core.build.core=rp2040
flyboard2040_core.build.ldscript=memmap_default.ld
flyboard2040_core.build.boot2=boot2_w25q080_2_padded_checksum
flyboard2040_core.build.vid=0x2e8a
flyboard2040_core.build.pid=0x008a
flyboard2040_core.build.usb_manufacturer="DeRuiLab"
flyboard2040_core.build.usb_product="FlyBoard2040Core"
flyboard2040_core.menu.flash.4194304_0=4MB (no FS)
@@ -3817,7 +3800,8 @@ dfrobot_beetle_rp2040.vid.6=0x3343
dfrobot_beetle_rp2040.pid.6=0xc253
dfrobot_beetle_rp2040.vid.7=0x3343
dfrobot_beetle_rp2040.pid.7=0xc353
dfrobot_beetle_rp2040.build.usbpid=-DSERIALUSB_PID=0x4253
dfrobot_beetle_rp2040.build.usbvid=-DUSBD_VID=0x3343
dfrobot_beetle_rp2040.build.usbpid=-DUSBD_PID=0x4253
dfrobot_beetle_rp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
dfrobot_beetle_rp2040.build.board=DFROBOT_BEETLE_RP2040
dfrobot_beetle_rp2040.build.mcu=cortex-m0plus
@@ -3832,8 +3816,6 @@ dfrobot_beetle_rp2040.build.led=
dfrobot_beetle_rp2040.build.core=rp2040
dfrobot_beetle_rp2040.build.ldscript=memmap_default.ld
dfrobot_beetle_rp2040.build.boot2=boot2_w25q080_2_padded_checksum
dfrobot_beetle_rp2040.build.vid=0x3343
dfrobot_beetle_rp2040.build.pid=0x4253
dfrobot_beetle_rp2040.build.usb_manufacturer="DFRobot"
dfrobot_beetle_rp2040.build.usb_product="Beetle RP2040"
dfrobot_beetle_rp2040.menu.flash.2097152_0=2MB (no FS)
@@ -4004,7 +3986,8 @@ electroniccats_huntercat_nfc.vid.6=0x2E8A
electroniccats_huntercat_nfc.pid.6=0xd037
electroniccats_huntercat_nfc.vid.7=0x2E8A
electroniccats_huntercat_nfc.pid.7=0xd137
electroniccats_huntercat_nfc.build.usbpid=-DSERIALUSB_PID=0x1037
electroniccats_huntercat_nfc.build.usbvid=-DUSBD_VID=0x2E8A
electroniccats_huntercat_nfc.build.usbpid=-DUSBD_PID=0x1037
electroniccats_huntercat_nfc.build.usbpwr=-DUSBD_MAX_POWER_MA=500
electroniccats_huntercat_nfc.build.board=ELECTRONICCATS_HUNTERCAT_NFC
electroniccats_huntercat_nfc.build.mcu=cortex-m0plus
@@ -4019,8 +4002,6 @@ electroniccats_huntercat_nfc.build.led=
electroniccats_huntercat_nfc.build.core=rp2040
electroniccats_huntercat_nfc.build.ldscript=memmap_default.ld
electroniccats_huntercat_nfc.build.boot2=boot2_w25q080_2_padded_checksum
electroniccats_huntercat_nfc.build.vid=0x2E8A
electroniccats_huntercat_nfc.build.pid=0x1037
electroniccats_huntercat_nfc.build.usb_manufacturer="ElectronicCats"
electroniccats_huntercat_nfc.build.usb_product="HunterCat NFC RP2040"
electroniccats_huntercat_nfc.menu.flash.2097152_0=2MB (no FS)
@@ -4191,7 +4172,8 @@ extelec_rc2040.vid.6=0x2e8a
extelec_rc2040.pid.6=0xee20
extelec_rc2040.vid.7=0x2e8a
extelec_rc2040.pid.7=0xef20
extelec_rc2040.build.usbpid=-DSERIALUSB_PID=0xee20
extelec_rc2040.build.usbvid=-DUSBD_VID=0x2e8a
extelec_rc2040.build.usbpid=-DUSBD_PID=0xee20
extelec_rc2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
extelec_rc2040.build.board=EXTREMEELEXTRONICS_RC2040
extelec_rc2040.build.mcu=cortex-m0plus
@@ -4206,8 +4188,6 @@ extelec_rc2040.build.led=
extelec_rc2040.build.core=rp2040
extelec_rc2040.build.ldscript=memmap_default.ld
extelec_rc2040.build.boot2=boot2_w25q080_2_padded_checksum
extelec_rc2040.build.vid=0x2e8a
extelec_rc2040.build.pid=0xee20
extelec_rc2040.build.usb_manufacturer="ExtremeElectronics"
extelec_rc2040.build.usb_product="RC2040"
extelec_rc2040.menu.flash.2097152_0=2MB (no FS)
@@ -4378,7 +4358,8 @@ challenger_2040_lte.vid.6=0x2e8a
challenger_2040_lte.pid.6=0xd00b
challenger_2040_lte.vid.7=0x2e8a
challenger_2040_lte.pid.7=0xd10b
challenger_2040_lte.build.usbpid=-DSERIALUSB_PID=0x100b
challenger_2040_lte.build.usbvid=-DUSBD_VID=0x2e8a
challenger_2040_lte.build.usbpid=-DUSBD_PID=0x100b
challenger_2040_lte.build.usbpwr=-DUSBD_MAX_POWER_MA=500
challenger_2040_lte.build.board=CHALLENGER_2040_LTE_RP2040
challenger_2040_lte.build.mcu=cortex-m0plus
@@ -4393,8 +4374,6 @@ challenger_2040_lte.build.led=
challenger_2040_lte.build.core=rp2040
challenger_2040_lte.build.ldscript=memmap_default.ld
challenger_2040_lte.build.boot2=boot2_w25q080_2_padded_checksum
challenger_2040_lte.build.vid=0x2e8a
challenger_2040_lte.build.pid=0x100b
challenger_2040_lte.build.usb_manufacturer="iLabs"
challenger_2040_lte.build.usb_product="Challenger 2040 LTE"
challenger_2040_lte.menu.flash.8388608_0=8MB (no FS)
@@ -4601,7 +4580,8 @@ challenger_2040_lora.vid.6=0x2e8a
challenger_2040_lora.pid.6=0xd023
challenger_2040_lora.vid.7=0x2e8a
challenger_2040_lora.pid.7=0xd123
challenger_2040_lora.build.usbpid=-DSERIALUSB_PID=0x1023
challenger_2040_lora.build.usbvid=-DUSBD_VID=0x2e8a
challenger_2040_lora.build.usbpid=-DUSBD_PID=0x1023
challenger_2040_lora.build.usbpwr=-DUSBD_MAX_POWER_MA=250
challenger_2040_lora.build.board=CHALLENGER_2040_LORA_RP2040
challenger_2040_lora.build.mcu=cortex-m0plus
@@ -4616,8 +4596,6 @@ challenger_2040_lora.build.led=
challenger_2040_lora.build.core=rp2040
challenger_2040_lora.build.ldscript=memmap_default.ld
challenger_2040_lora.build.boot2=boot2_w25q080_2_padded_checksum
challenger_2040_lora.build.vid=0x2e8a
challenger_2040_lora.build.pid=0x1023
challenger_2040_lora.build.usb_manufacturer="iLabs"
challenger_2040_lora.build.usb_product="Challenger 2040 LoRa"
challenger_2040_lora.menu.flash.8388608_0=8MB (no FS)
@@ -4824,7 +4802,8 @@ challenger_2040_subghz.vid.6=0x2e8a
challenger_2040_subghz.pid.6=0xd032
challenger_2040_subghz.vid.7=0x2e8a
challenger_2040_subghz.pid.7=0xd132
challenger_2040_subghz.build.usbpid=-DSERIALUSB_PID=0x1032
challenger_2040_subghz.build.usbvid=-DUSBD_VID=0x2e8a
challenger_2040_subghz.build.usbpid=-DUSBD_PID=0x1032
challenger_2040_subghz.build.usbpwr=-DUSBD_MAX_POWER_MA=250
challenger_2040_subghz.build.board=CHALLENGER_2040_SUBGHZ_RP2040
challenger_2040_subghz.build.mcu=cortex-m0plus
@@ -4839,8 +4818,6 @@ challenger_2040_subghz.build.led=
challenger_2040_subghz.build.core=rp2040
challenger_2040_subghz.build.ldscript=memmap_default.ld
challenger_2040_subghz.build.boot2=boot2_w25q080_2_padded_checksum
challenger_2040_subghz.build.vid=0x2e8a
challenger_2040_subghz.build.pid=0x1032
challenger_2040_subghz.build.usb_manufacturer="iLabs"
challenger_2040_subghz.build.usb_product="Challenger 2040 SubGHz"
challenger_2040_subghz.menu.flash.8388608_0=8MB (no FS)
@@ -5047,7 +5024,8 @@ challenger_2040_wifi.vid.6=0x2e8a
challenger_2040_wifi.pid.6=0xd006
challenger_2040_wifi.vid.7=0x2e8a
challenger_2040_wifi.pid.7=0xd106
challenger_2040_wifi.build.usbpid=-DSERIALUSB_PID=0x1006
challenger_2040_wifi.build.usbvid=-DUSBD_VID=0x2e8a
challenger_2040_wifi.build.usbpid=-DUSBD_PID=0x1006
challenger_2040_wifi.build.usbpwr=-DUSBD_MAX_POWER_MA=250
challenger_2040_wifi.build.board=CHALLENGER_2040_WIFI_RP2040
challenger_2040_wifi.build.mcu=cortex-m0plus
@@ -5062,8 +5040,6 @@ challenger_2040_wifi.build.led=
challenger_2040_wifi.build.core=rp2040
challenger_2040_wifi.build.ldscript=memmap_default.ld
challenger_2040_wifi.build.boot2=boot2_w25q080_2_padded_checksum
challenger_2040_wifi.build.vid=0x2e8a
challenger_2040_wifi.build.pid=0x1006
challenger_2040_wifi.build.usb_manufacturer="iLabs"
challenger_2040_wifi.build.usb_product="Challenger 2040 WiFi"
challenger_2040_wifi.build.extra_flags=-DWIFIESPAT2
@@ -5271,7 +5247,8 @@ challenger_2040_wifi_ble.vid.6=0x2e8a
challenger_2040_wifi_ble.pid.6=0xd02c
challenger_2040_wifi_ble.vid.7=0x2e8a
challenger_2040_wifi_ble.pid.7=0xd12c
challenger_2040_wifi_ble.build.usbpid=-DSERIALUSB_PID=0x102C
challenger_2040_wifi_ble.build.usbvid=-DUSBD_VID=0x2e8a
challenger_2040_wifi_ble.build.usbpid=-DUSBD_PID=0x102C
challenger_2040_wifi_ble.build.usbpwr=-DUSBD_MAX_POWER_MA=500
challenger_2040_wifi_ble.build.board=CHALLENGER_2040_WIFI_BLE_RP2040
challenger_2040_wifi_ble.build.mcu=cortex-m0plus
@@ -5286,8 +5263,6 @@ challenger_2040_wifi_ble.build.led=
challenger_2040_wifi_ble.build.core=rp2040
challenger_2040_wifi_ble.build.ldscript=memmap_default.ld
challenger_2040_wifi_ble.build.boot2=boot2_w25q080_2_padded_checksum
challenger_2040_wifi_ble.build.vid=0x2e8a
challenger_2040_wifi_ble.build.pid=0x102C
challenger_2040_wifi_ble.build.usb_manufacturer="iLabs"
challenger_2040_wifi_ble.build.usb_product="Challenger 2040 WiFi/BLE"
challenger_2040_wifi_ble.build.extra_flags=-DWIFIESPAT2
@@ -5495,7 +5470,8 @@ challenger_nb_2040_wifi.vid.6=0x2e8a
challenger_nb_2040_wifi.pid.6=0xd00d
challenger_nb_2040_wifi.vid.7=0x2e8a
challenger_nb_2040_wifi.pid.7=0xd10d
challenger_nb_2040_wifi.build.usbpid=-DSERIALUSB_PID=0x100d
challenger_nb_2040_wifi.build.usbvid=-DUSBD_VID=0x2e8a
challenger_nb_2040_wifi.build.usbpid=-DUSBD_PID=0x100d
challenger_nb_2040_wifi.build.usbpwr=-DUSBD_MAX_POWER_MA=500
challenger_nb_2040_wifi.build.board=CHALLENGER_NB_2040_WIFI_RP2040
challenger_nb_2040_wifi.build.mcu=cortex-m0plus
@@ -5510,8 +5486,6 @@ challenger_nb_2040_wifi.build.led=
challenger_nb_2040_wifi.build.core=rp2040
challenger_nb_2040_wifi.build.ldscript=memmap_default.ld
challenger_nb_2040_wifi.build.boot2=boot2_w25q080_2_padded_checksum
challenger_nb_2040_wifi.build.vid=0x2e8a
challenger_nb_2040_wifi.build.pid=0x100d
challenger_nb_2040_wifi.build.usb_manufacturer="iLabs"
challenger_nb_2040_wifi.build.usb_product="Challenger NB 2040 WiFi"
challenger_nb_2040_wifi.build.extra_flags=-DWIFIESPAT2
@@ -5719,7 +5693,8 @@ challenger_2040_sdrtc.vid.6=0x2e8a
challenger_2040_sdrtc.pid.6=0xd02d
challenger_2040_sdrtc.vid.7=0x2e8a
challenger_2040_sdrtc.pid.7=0xd12d
challenger_2040_sdrtc.build.usbpid=-DSERIALUSB_PID=0x102d
challenger_2040_sdrtc.build.usbvid=-DUSBD_VID=0x2e8a
challenger_2040_sdrtc.build.usbpid=-DUSBD_PID=0x102d
challenger_2040_sdrtc.build.usbpwr=-DUSBD_MAX_POWER_MA=250
challenger_2040_sdrtc.build.board=CHALLENGER_NB_2040_SDRTC_RP2040
challenger_2040_sdrtc.build.mcu=cortex-m0plus
@@ -5734,8 +5709,6 @@ challenger_2040_sdrtc.build.led=
challenger_2040_sdrtc.build.core=rp2040
challenger_2040_sdrtc.build.ldscript=memmap_default.ld
challenger_2040_sdrtc.build.boot2=boot2_w25q080_2_padded_checksum
challenger_2040_sdrtc.build.vid=0x2e8a
challenger_2040_sdrtc.build.pid=0x102d
challenger_2040_sdrtc.build.usb_manufacturer="iLabs"
challenger_2040_sdrtc.build.usb_product="Challenger 2040 SD/RTC"
challenger_2040_sdrtc.menu.flash.8388608_0=8MB (no FS)
@@ -5942,7 +5915,8 @@ challenger_2040_nfc.vid.6=0x2e8a
challenger_2040_nfc.pid.6=0xd036
challenger_2040_nfc.vid.7=0x2e8a
challenger_2040_nfc.pid.7=0xd136
challenger_2040_nfc.build.usbpid=-DSERIALUSB_PID=0x1036
challenger_2040_nfc.build.usbvid=-DUSBD_VID=0x2e8a
challenger_2040_nfc.build.usbpid=-DUSBD_PID=0x1036
challenger_2040_nfc.build.usbpwr=-DUSBD_MAX_POWER_MA=250
challenger_2040_nfc.build.board=CHALLENGER_NB_2040_NFC_RP2040
challenger_2040_nfc.build.mcu=cortex-m0plus
@@ -5957,8 +5931,6 @@ challenger_2040_nfc.build.led=
challenger_2040_nfc.build.core=rp2040
challenger_2040_nfc.build.ldscript=memmap_default.ld
challenger_2040_nfc.build.boot2=boot2_w25q080_2_padded_checksum
challenger_2040_nfc.build.vid=0x2e8a
challenger_2040_nfc.build.pid=0x1036
challenger_2040_nfc.build.usb_manufacturer="iLabs"
challenger_2040_nfc.build.usb_product="Challenger 2040 NFC"
challenger_2040_nfc.menu.flash.8388608_0=8MB (no FS)
@@ -6165,7 +6137,8 @@ ilabs_rpico32.vid.6=0x2e8a
ilabs_rpico32.pid.6=0xd010
ilabs_rpico32.vid.7=0x2e8a
ilabs_rpico32.pid.7=0xd110
ilabs_rpico32.build.usbpid=-DSERIALUSB_PID=0x1010
ilabs_rpico32.build.usbvid=-DUSBD_VID=0x2e8a
ilabs_rpico32.build.usbpid=-DUSBD_PID=0x1010
ilabs_rpico32.build.usbpwr=-DUSBD_MAX_POWER_MA=250
ilabs_rpico32.build.board=ILABS_2040_RPICO32_RP2040
ilabs_rpico32.build.mcu=cortex-m0plus
@@ -6180,8 +6153,6 @@ ilabs_rpico32.build.led=
ilabs_rpico32.build.core=rp2040
ilabs_rpico32.build.ldscript=memmap_default.ld
ilabs_rpico32.build.boot2=boot2_w25q080_2_padded_checksum
ilabs_rpico32.build.vid=0x2e8a
ilabs_rpico32.build.pid=0x1010
ilabs_rpico32.build.usb_manufacturer="iLabs"
ilabs_rpico32.build.usb_product="RPICO32"
ilabs_rpico32.menu.flash.8388608_0=8MB (no FS)
@@ -6388,7 +6359,8 @@ melopero_cookie_rp2040.vid.6=0x2e8a
melopero_cookie_rp2040.pid.6=0xd011
melopero_cookie_rp2040.vid.7=0x2e8a
melopero_cookie_rp2040.pid.7=0xd111
melopero_cookie_rp2040.build.usbpid=-DSERIALUSB_PID=0x1011
melopero_cookie_rp2040.build.usbvid=-DUSBD_VID=0x2e8a
melopero_cookie_rp2040.build.usbpid=-DUSBD_PID=0x1011
melopero_cookie_rp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
melopero_cookie_rp2040.build.board=MELOPERO_COOKIE_RP2040
melopero_cookie_rp2040.build.mcu=cortex-m0plus
@@ -6403,8 +6375,6 @@ melopero_cookie_rp2040.build.led=
melopero_cookie_rp2040.build.core=rp2040
melopero_cookie_rp2040.build.ldscript=memmap_default.ld
melopero_cookie_rp2040.build.boot2=boot2_w25q080_2_padded_checksum
melopero_cookie_rp2040.build.vid=0x2e8a
melopero_cookie_rp2040.build.pid=0x1011
melopero_cookie_rp2040.build.usb_manufacturer="Melopero"
melopero_cookie_rp2040.build.usb_product="Cookie RP2040"
melopero_cookie_rp2040.menu.flash.8388608_0=8MB (no FS)
@@ -6611,7 +6581,8 @@ melopero_shake_rp2040.vid.6=0x2e8a
melopero_shake_rp2040.pid.6=0xd005
melopero_shake_rp2040.vid.7=0x2e8a
melopero_shake_rp2040.pid.7=0xd105
melopero_shake_rp2040.build.usbpid=-DSERIALUSB_PID=0x1005
melopero_shake_rp2040.build.usbvid=-DUSBD_VID=0x2e8a
melopero_shake_rp2040.build.usbpid=-DUSBD_PID=0x1005
melopero_shake_rp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
melopero_shake_rp2040.build.board=MELOPERO_SHAKE_RP2040
melopero_shake_rp2040.build.mcu=cortex-m0plus
@@ -6626,8 +6597,6 @@ melopero_shake_rp2040.build.led=
melopero_shake_rp2040.build.core=rp2040
melopero_shake_rp2040.build.ldscript=memmap_default.ld
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)
@@ -6882,7 +6851,8 @@ nullbits_bit_c_pro.vid.6=0x2e8a
nullbits_bit_c_pro.pid.6=0xee61
nullbits_bit_c_pro.vid.7=0x2e8a
nullbits_bit_c_pro.pid.7=0xef61
nullbits_bit_c_pro.build.usbpid=-DSERIALUSB_PID=0x6e61
nullbits_bit_c_pro.build.usbvid=-DUSBD_VID=0x2e8a
nullbits_bit_c_pro.build.usbpid=-DUSBD_PID=0x6e61
nullbits_bit_c_pro.build.usbpwr=-DUSBD_MAX_POWER_MA=500
nullbits_bit_c_pro.build.board=NULLBITS_BIT_C_PRO
nullbits_bit_c_pro.build.mcu=cortex-m0plus
@@ -6897,8 +6867,6 @@ nullbits_bit_c_pro.build.led=
nullbits_bit_c_pro.build.core=rp2040
nullbits_bit_c_pro.build.ldscript=memmap_default.ld
nullbits_bit_c_pro.build.boot2=boot2_w25x10cl_4_padded_checksum
nullbits_bit_c_pro.build.vid=0x2e8a
nullbits_bit_c_pro.build.pid=0x6e61
nullbits_bit_c_pro.build.usb_manufacturer="nullbits"
nullbits_bit_c_pro.build.usb_product="Bit-C PRO"
nullbits_bit_c_pro.menu.flash.4194304_0=4MB (no FS)
@@ -7081,7 +7049,8 @@ pimoroni_pga2040.vid.6=0x2e8a
pimoroni_pga2040.pid.6=0xd008
pimoroni_pga2040.vid.7=0x2e8a
pimoroni_pga2040.pid.7=0xd108
pimoroni_pga2040.build.usbpid=-DSERIALUSB_PID=0x1008
pimoroni_pga2040.build.usbvid=-DUSBD_VID=0x2e8a
pimoroni_pga2040.build.usbpid=-DUSBD_PID=0x1008
pimoroni_pga2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
pimoroni_pga2040.build.board=PIMORONI_PGA2040
pimoroni_pga2040.build.mcu=cortex-m0plus
@@ -7096,8 +7065,6 @@ pimoroni_pga2040.build.led=
pimoroni_pga2040.build.core=rp2040
pimoroni_pga2040.build.ldscript=memmap_default.ld
pimoroni_pga2040.build.boot2=boot2_w25q64jv_4_padded_checksum
pimoroni_pga2040.build.vid=0x2e8a
pimoroni_pga2040.build.pid=0x1008
pimoroni_pga2040.build.usb_manufacturer="Pimoroni"
pimoroni_pga2040.build.usb_product="PGA2040"
pimoroni_pga2040.menu.flash.8388608_0=8MB (no FS)
@@ -7304,7 +7271,8 @@ solderparty_rp2040_stamp.vid.6=0x1209
solderparty_rp2040_stamp.pid.6=0xe182
solderparty_rp2040_stamp.vid.7=0x1209
solderparty_rp2040_stamp.pid.7=0xe182
solderparty_rp2040_stamp.build.usbpid=-DSERIALUSB_PID=0xa182
solderparty_rp2040_stamp.build.usbvid=-DUSBD_VID=0x1209
solderparty_rp2040_stamp.build.usbpid=-DUSBD_PID=0xa182
solderparty_rp2040_stamp.build.usbpwr=-DUSBD_MAX_POWER_MA=500
solderparty_rp2040_stamp.build.board=SOLDERPARTY_RP2040_STAMP
solderparty_rp2040_stamp.build.mcu=cortex-m0plus
@@ -7319,8 +7287,6 @@ solderparty_rp2040_stamp.build.led=
solderparty_rp2040_stamp.build.core=rp2040
solderparty_rp2040_stamp.build.ldscript=memmap_default.ld
solderparty_rp2040_stamp.build.boot2=boot2_generic_03h_4_padded_checksum
solderparty_rp2040_stamp.build.vid=0x1209
solderparty_rp2040_stamp.build.pid=0xa182
solderparty_rp2040_stamp.build.usb_manufacturer="Solder Party"
solderparty_rp2040_stamp.build.usb_product="RP2040 Stamp"
solderparty_rp2040_stamp.menu.flash.8388608_0=8MB (no FS)
@@ -7527,7 +7493,8 @@ sparkfun_promicrorp2040.vid.6=0x1b4f
sparkfun_promicrorp2040.pid.6=0xc026
sparkfun_promicrorp2040.vid.7=0x1b4f
sparkfun_promicrorp2040.pid.7=0xc126
sparkfun_promicrorp2040.build.usbpid=-DSERIALUSB_PID=0x0026
sparkfun_promicrorp2040.build.usbvid=-DUSBD_VID=0x1b4f
sparkfun_promicrorp2040.build.usbpid=-DUSBD_PID=0x0026
sparkfun_promicrorp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
sparkfun_promicrorp2040.build.board=SPARKFUN_PROMICRO_RP2040
sparkfun_promicrorp2040.build.mcu=cortex-m0plus
@@ -7542,8 +7509,6 @@ sparkfun_promicrorp2040.build.led=
sparkfun_promicrorp2040.build.core=rp2040
sparkfun_promicrorp2040.build.ldscript=memmap_default.ld
sparkfun_promicrorp2040.build.boot2=boot2_generic_03h_4_padded_checksum
sparkfun_promicrorp2040.build.vid=0x1b4f
sparkfun_promicrorp2040.build.pid=0x0026
sparkfun_promicrorp2040.build.usb_manufacturer="SparkFun"
sparkfun_promicrorp2040.build.usb_product="ProMicro RP2040"
sparkfun_promicrorp2040.menu.flash.16777216_0=16MB (no FS)
@@ -7798,7 +7763,8 @@ sparkfun_thingplusrp2040.vid.6=0x1b4f
sparkfun_thingplusrp2040.pid.6=0xc026
sparkfun_thingplusrp2040.vid.7=0x1b4f
sparkfun_thingplusrp2040.pid.7=0xc126
sparkfun_thingplusrp2040.build.usbpid=-DSERIALUSB_PID=0x0026
sparkfun_thingplusrp2040.build.usbvid=-DUSBD_VID=0x1b4f
sparkfun_thingplusrp2040.build.usbpid=-DUSBD_PID=0x0026
sparkfun_thingplusrp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
sparkfun_thingplusrp2040.build.board=SPARKFUN_THINGPLUS_RP2040
sparkfun_thingplusrp2040.build.mcu=cortex-m0plus
@@ -7813,8 +7779,6 @@ sparkfun_thingplusrp2040.build.led=
sparkfun_thingplusrp2040.build.core=rp2040
sparkfun_thingplusrp2040.build.ldscript=memmap_default.ld
sparkfun_thingplusrp2040.build.boot2=boot2_w25q080_2_padded_checksum
sparkfun_thingplusrp2040.build.vid=0x1b4f
sparkfun_thingplusrp2040.build.pid=0x0026
sparkfun_thingplusrp2040.build.usb_manufacturer="SparkFun"
sparkfun_thingplusrp2040.build.usb_product="Thing Plus RP2040"
sparkfun_thingplusrp2040.menu.flash.16777216_0=16MB (no FS)
@@ -8069,7 +8033,8 @@ upesy_rp2040_devkit.vid.6=0x2e8a
upesy_rp2040_devkit.pid.6=0xd007
upesy_rp2040_devkit.vid.7=0x2e8a
upesy_rp2040_devkit.pid.7=0xd107
upesy_rp2040_devkit.build.usbpid=-DSERIALUSB_PID=0x1007
upesy_rp2040_devkit.build.usbvid=-DUSBD_VID=0x2e8a
upesy_rp2040_devkit.build.usbpid=-DUSBD_PID=0x1007
upesy_rp2040_devkit.build.usbpwr=-DUSBD_MAX_POWER_MA=250
upesy_rp2040_devkit.build.board=UPESY_RP2040_DEVKIT
upesy_rp2040_devkit.build.mcu=cortex-m0plus
@@ -8084,8 +8049,6 @@ upesy_rp2040_devkit.build.led=
upesy_rp2040_devkit.build.core=rp2040
upesy_rp2040_devkit.build.ldscript=memmap_default.ld
upesy_rp2040_devkit.build.boot2=boot2_w25q080_2_padded_checksum
upesy_rp2040_devkit.build.vid=0x2e8a
upesy_rp2040_devkit.build.pid=0x1007
upesy_rp2040_devkit.build.usb_manufacturer="uPesy"
upesy_rp2040_devkit.build.usb_product="RP2040 DevKit"
upesy_rp2040_devkit.menu.flash.2097152_0=2MB (no FS)
@@ -8256,7 +8219,8 @@ seeed_xiao_rp2040.vid.6=0x2e8a
seeed_xiao_rp2040.pid.6=0xc00a
seeed_xiao_rp2040.vid.7=0x2e8a
seeed_xiao_rp2040.pid.7=0xc10a
seeed_xiao_rp2040.build.usbpid=-DSERIALUSB_PID=0x000a
seeed_xiao_rp2040.build.usbvid=-DUSBD_VID=0x2e8a
seeed_xiao_rp2040.build.usbpid=-DUSBD_PID=0x000a
seeed_xiao_rp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=250
seeed_xiao_rp2040.build.board=SEEED_XIAO_RP2040
seeed_xiao_rp2040.build.mcu=cortex-m0plus
@@ -8271,8 +8235,6 @@ seeed_xiao_rp2040.build.led=
seeed_xiao_rp2040.build.core=rp2040
seeed_xiao_rp2040.build.ldscript=memmap_default.ld
seeed_xiao_rp2040.build.boot2=boot2_w25q080_2_padded_checksum
seeed_xiao_rp2040.build.vid=0x2e8a
seeed_xiao_rp2040.build.pid=0x000a
seeed_xiao_rp2040.build.usb_manufacturer="Seeed"
seeed_xiao_rp2040.build.usb_product="XIAO RP2040"
seeed_xiao_rp2040.menu.flash.2097152_0=2MB (no FS)
@@ -8443,7 +8405,8 @@ vccgnd_yd_rp2040.vid.6=0x2e8a
vccgnd_yd_rp2040.pid.6=0xc00a
vccgnd_yd_rp2040.vid.7=0x2e8a
vccgnd_yd_rp2040.pid.7=0xc10a
vccgnd_yd_rp2040.build.usbpid=-DSERIALUSB_PID=0x800a
vccgnd_yd_rp2040.build.usbvid=-DUSBD_VID=0x2e8a
vccgnd_yd_rp2040.build.usbpid=-DUSBD_PID=0x800a
vccgnd_yd_rp2040.build.usbpwr=-DUSBD_MAX_POWER_MA=500
vccgnd_yd_rp2040.build.board=YD_RP2040
vccgnd_yd_rp2040.build.mcu=cortex-m0plus
@@ -8458,8 +8421,6 @@ vccgnd_yd_rp2040.build.led=
vccgnd_yd_rp2040.build.core=rp2040
vccgnd_yd_rp2040.build.ldscript=memmap_default.ld
vccgnd_yd_rp2040.build.boot2=boot2_generic_03h_4_padded_checksum
vccgnd_yd_rp2040.build.vid=0x2e8a
vccgnd_yd_rp2040.build.pid=0x800a
vccgnd_yd_rp2040.build.usb_manufacturer="VCC-GND"
vccgnd_yd_rp2040.build.usb_product="YD RP2040"
vccgnd_yd_rp2040.menu.flash.16777216_0=16MB (no FS)
@@ -8714,7 +8675,8 @@ viyalab_mizu.vid.6=0x2e8a
viyalab_mizu.pid.6=0xc00a
viyalab_mizu.vid.7=0x2e8a
viyalab_mizu.pid.7=0xc10a
viyalab_mizu.build.usbpid=-DSERIALUSB_PID=0x000a
viyalab_mizu.build.usbvid=-DUSBD_VID=0x2e8a
viyalab_mizu.build.usbpid=-DUSBD_PID=0x000a
viyalab_mizu.build.usbpwr=-DUSBD_MAX_POWER_MA=250
viyalab_mizu.build.board=VIYALAB_MIZU_RP2040
viyalab_mizu.build.mcu=cortex-m0plus
@@ -8729,8 +8691,6 @@ viyalab_mizu.build.led=
viyalab_mizu.build.core=rp2040
viyalab_mizu.build.ldscript=memmap_default.ld
viyalab_mizu.build.boot2=boot2_generic_03h_4_padded_checksum
viyalab_mizu.build.vid=0x2e8a
viyalab_mizu.build.pid=0x000a
viyalab_mizu.build.usb_manufacturer="Viyalab"
viyalab_mizu.build.usb_product="Mizu RP2040"
viyalab_mizu.menu.flash.8388608_0=8MB (no FS)
@@ -8937,7 +8897,8 @@ waveshare_rp2040_zero.vid.6=0x2e8a
waveshare_rp2040_zero.pid.6=0xc003
waveshare_rp2040_zero.vid.7=0x2e8a
waveshare_rp2040_zero.pid.7=0xc103
waveshare_rp2040_zero.build.usbpid=-DSERIALUSB_PID=0x0003
waveshare_rp2040_zero.build.usbvid=-DUSBD_VID=0x2e8a
waveshare_rp2040_zero.build.usbpid=-DUSBD_PID=0x0003
waveshare_rp2040_zero.build.usbpwr=-DUSBD_MAX_POWER_MA=500
waveshare_rp2040_zero.build.board=WAVESHARE_RP2040_ZERO
waveshare_rp2040_zero.build.mcu=cortex-m0plus
@@ -8952,8 +8913,6 @@ waveshare_rp2040_zero.build.led=
waveshare_rp2040_zero.build.core=rp2040
waveshare_rp2040_zero.build.ldscript=memmap_default.ld
waveshare_rp2040_zero.build.boot2=boot2_w25q16jvxq_4_padded_checksum
waveshare_rp2040_zero.build.vid=0x2e8a
waveshare_rp2040_zero.build.pid=0x0003
waveshare_rp2040_zero.build.usb_manufacturer="Waveshare"
waveshare_rp2040_zero.build.usb_product="RP2040 Zero"
waveshare_rp2040_zero.menu.flash.2097152_0=2MB (no FS)
@@ -9124,7 +9083,8 @@ waveshare_rp2040_one.vid.6=0x2e8a
waveshare_rp2040_one.pid.6=0xd03a
waveshare_rp2040_one.vid.7=0x2e8a
waveshare_rp2040_one.pid.7=0xd13a
waveshare_rp2040_one.build.usbpid=-DSERIALUSB_PID=0x103a
waveshare_rp2040_one.build.usbvid=-DUSBD_VID=0x2e8a
waveshare_rp2040_one.build.usbpid=-DUSBD_PID=0x103a
waveshare_rp2040_one.build.usbpwr=-DUSBD_MAX_POWER_MA=500
waveshare_rp2040_one.build.board=WAVESHARE_RP2040_ONE
waveshare_rp2040_one.build.mcu=cortex-m0plus
@@ -9139,8 +9099,6 @@ waveshare_rp2040_one.build.led=
waveshare_rp2040_one.build.core=rp2040
waveshare_rp2040_one.build.ldscript=memmap_default.ld
waveshare_rp2040_one.build.boot2=boot2_w25q16jvxq_4_padded_checksum
waveshare_rp2040_one.build.vid=0x2e8a
waveshare_rp2040_one.build.pid=0x103a
waveshare_rp2040_one.build.usb_manufacturer="Waveshare"
waveshare_rp2040_one.build.usb_product="RP2040 One"
waveshare_rp2040_one.menu.flash.4194304_0=4MB (no FS)
@@ -9323,7 +9281,8 @@ waveshare_rp2040_plus_4mb.vid.6=0x2e8a
waveshare_rp2040_plus_4mb.pid.6=0xd020
waveshare_rp2040_plus_4mb.vid.7=0x2e8a
waveshare_rp2040_plus_4mb.pid.7=0xd120
waveshare_rp2040_plus_4mb.build.usbpid=-DSERIALUSB_PID=0x1020
waveshare_rp2040_plus_4mb.build.usbvid=-DUSBD_VID=0x2e8a
waveshare_rp2040_plus_4mb.build.usbpid=-DUSBD_PID=0x1020
waveshare_rp2040_plus_4mb.build.usbpwr=-DUSBD_MAX_POWER_MA=500
waveshare_rp2040_plus_4mb.build.board=WAVESHARE_RP2040_PLUS
waveshare_rp2040_plus_4mb.build.mcu=cortex-m0plus
@@ -9338,8 +9297,6 @@ waveshare_rp2040_plus_4mb.build.led=
waveshare_rp2040_plus_4mb.build.core=rp2040
waveshare_rp2040_plus_4mb.build.ldscript=memmap_default.ld
waveshare_rp2040_plus_4mb.build.boot2=boot2_w25q080_2_padded_checksum
waveshare_rp2040_plus_4mb.build.vid=0x2e8a
waveshare_rp2040_plus_4mb.build.pid=0x1020
waveshare_rp2040_plus_4mb.build.usb_manufacturer="Waveshare"
waveshare_rp2040_plus_4mb.build.usb_product="RP2040 Plus 4MB"
waveshare_rp2040_plus_4mb.menu.flash.4194304_0=4MB (no FS)
@@ -9522,7 +9479,8 @@ waveshare_rp2040_plus_16mb.vid.6=0x2e8a
waveshare_rp2040_plus_16mb.pid.6=0xd020
waveshare_rp2040_plus_16mb.vid.7=0x2e8a
waveshare_rp2040_plus_16mb.pid.7=0xd120
waveshare_rp2040_plus_16mb.build.usbpid=-DSERIALUSB_PID=0x1020
waveshare_rp2040_plus_16mb.build.usbvid=-DUSBD_VID=0x2e8a
waveshare_rp2040_plus_16mb.build.usbpid=-DUSBD_PID=0x1020
waveshare_rp2040_plus_16mb.build.usbpwr=-DUSBD_MAX_POWER_MA=500
waveshare_rp2040_plus_16mb.build.board=WAVESHARE_RP2040_PLUS
waveshare_rp2040_plus_16mb.build.mcu=cortex-m0plus
@@ -9537,8 +9495,6 @@ waveshare_rp2040_plus_16mb.build.led=
waveshare_rp2040_plus_16mb.build.core=rp2040
waveshare_rp2040_plus_16mb.build.ldscript=memmap_default.ld
waveshare_rp2040_plus_16mb.build.boot2=boot2_w25q080_2_padded_checksum
waveshare_rp2040_plus_16mb.build.vid=0x2e8a
waveshare_rp2040_plus_16mb.build.pid=0x1020
waveshare_rp2040_plus_16mb.build.usb_manufacturer="Waveshare"
waveshare_rp2040_plus_16mb.build.usb_product="RP2040 Plus 16MB"
waveshare_rp2040_plus_16mb.menu.flash.16777216_0=16MB (no FS)
@@ -9793,7 +9749,8 @@ waveshare_rp2040_lcd_0_96.vid.6=0x2e8a
waveshare_rp2040_lcd_0_96.pid.6=0xd021
waveshare_rp2040_lcd_0_96.vid.7=0x2e8a
waveshare_rp2040_lcd_0_96.pid.7=0xd121
waveshare_rp2040_lcd_0_96.build.usbpid=-DSERIALUSB_PID=0x1021
waveshare_rp2040_lcd_0_96.build.usbvid=-DUSBD_VID=0x2e8a
waveshare_rp2040_lcd_0_96.build.usbpid=-DUSBD_PID=0x1021
waveshare_rp2040_lcd_0_96.build.usbpwr=-DUSBD_MAX_POWER_MA=500
waveshare_rp2040_lcd_0_96.build.board=WAVESHARE_RP2040_LCD_0_96
waveshare_rp2040_lcd_0_96.build.mcu=cortex-m0plus
@@ -9808,8 +9765,6 @@ waveshare_rp2040_lcd_0_96.build.led=
waveshare_rp2040_lcd_0_96.build.core=rp2040
waveshare_rp2040_lcd_0_96.build.ldscript=memmap_default.ld
waveshare_rp2040_lcd_0_96.build.boot2=boot2_w25q16jvxq_4_padded_checksum
waveshare_rp2040_lcd_0_96.build.vid=0x2e8a
waveshare_rp2040_lcd_0_96.build.pid=0x1021
waveshare_rp2040_lcd_0_96.build.usb_manufacturer="Waveshare"
waveshare_rp2040_lcd_0_96.build.usb_product="RP2040 LCD 0.96"
waveshare_rp2040_lcd_0_96.menu.flash.2097152_0=2MB (no FS)
@@ -9980,7 +9935,8 @@ waveshare_rp2040_lcd_1_28.vid.6=0x2e8a
waveshare_rp2040_lcd_1_28.pid.6=0xd039
waveshare_rp2040_lcd_1_28.vid.7=0x2e8a
waveshare_rp2040_lcd_1_28.pid.7=0xd139
waveshare_rp2040_lcd_1_28.build.usbpid=-DSERIALUSB_PID=0x1039
waveshare_rp2040_lcd_1_28.build.usbvid=-DUSBD_VID=0x2e8a
waveshare_rp2040_lcd_1_28.build.usbpid=-DUSBD_PID=0x1039
waveshare_rp2040_lcd_1_28.build.usbpwr=-DUSBD_MAX_POWER_MA=500
waveshare_rp2040_lcd_1_28.build.board=WAVESHARE_RP2040_LCD_1_28
waveshare_rp2040_lcd_1_28.build.mcu=cortex-m0plus
@@ -9995,8 +9951,6 @@ waveshare_rp2040_lcd_1_28.build.led=
waveshare_rp2040_lcd_1_28.build.core=rp2040
waveshare_rp2040_lcd_1_28.build.ldscript=memmap_default.ld
waveshare_rp2040_lcd_1_28.build.boot2=boot2_w25q16jvxq_4_padded_checksum
waveshare_rp2040_lcd_1_28.build.vid=0x2e8a
waveshare_rp2040_lcd_1_28.build.pid=0x1039
waveshare_rp2040_lcd_1_28.build.usb_manufacturer="Waveshare"
waveshare_rp2040_lcd_1_28.build.usb_product="RP2040 LCD 1.28"
waveshare_rp2040_lcd_1_28.menu.flash.2097152_0=2MB (no FS)
@@ -10167,7 +10121,8 @@ wiznet_5100s_evb_pico.vid.6=0x2e8a
wiznet_5100s_evb_pico.pid.6=0xd027
wiznet_5100s_evb_pico.vid.7=0x2e8a
wiznet_5100s_evb_pico.pid.7=0xd127
wiznet_5100s_evb_pico.build.usbpid=-DSERIALUSB_PID=0x1027
wiznet_5100s_evb_pico.build.usbvid=-DUSBD_VID=0x2e8a
wiznet_5100s_evb_pico.build.usbpid=-DUSBD_PID=0x1027
wiznet_5100s_evb_pico.build.usbpwr=-DUSBD_MAX_POWER_MA=250
wiznet_5100s_evb_pico.build.board=WIZNET_5100S_EVB_PICO
wiznet_5100s_evb_pico.build.mcu=cortex-m0plus
@@ -10182,8 +10137,6 @@ wiznet_5100s_evb_pico.build.led=
wiznet_5100s_evb_pico.build.core=rp2040
wiznet_5100s_evb_pico.build.ldscript=memmap_default.ld
wiznet_5100s_evb_pico.build.boot2=boot2_w25q080_2_padded_checksum
wiznet_5100s_evb_pico.build.vid=0x2e8a
wiznet_5100s_evb_pico.build.pid=0x1027
wiznet_5100s_evb_pico.build.usb_manufacturer="WIZnet"
wiznet_5100s_evb_pico.build.usb_product="W5100S-EVB-Pico"
wiznet_5100s_evb_pico.menu.flash.2097152_0=2MB (no FS)
@@ -10354,7 +10307,8 @@ wiznet_wizfi360_evb_pico.vid.6=0x2e8a
wiznet_wizfi360_evb_pico.pid.6=0xd028
wiznet_wizfi360_evb_pico.vid.7=0x2e8a
wiznet_wizfi360_evb_pico.pid.7=0xd128
wiznet_wizfi360_evb_pico.build.usbpid=-DSERIALUSB_PID=0x1028
wiznet_wizfi360_evb_pico.build.usbvid=-DUSBD_VID=0x2e8a
wiznet_wizfi360_evb_pico.build.usbpid=-DUSBD_PID=0x1028
wiznet_wizfi360_evb_pico.build.usbpwr=-DUSBD_MAX_POWER_MA=250
wiznet_wizfi360_evb_pico.build.board=WIZNET_WIZFI360_EVB_PICO
wiznet_wizfi360_evb_pico.build.mcu=cortex-m0plus
@@ -10369,8 +10323,6 @@ wiznet_wizfi360_evb_pico.build.led=
wiznet_wizfi360_evb_pico.build.core=rp2040
wiznet_wizfi360_evb_pico.build.ldscript=memmap_default.ld
wiznet_wizfi360_evb_pico.build.boot2=boot2_w25q080_2_padded_checksum
wiznet_wizfi360_evb_pico.build.vid=0x2e8a
wiznet_wizfi360_evb_pico.build.pid=0x1028
wiznet_wizfi360_evb_pico.build.usb_manufacturer="WIZnet"
wiznet_wizfi360_evb_pico.build.usb_product="WizFi360-EVB-Pico"
wiznet_wizfi360_evb_pico.menu.flash.2097152_0=2MB (no FS)
@@ -10541,7 +10493,8 @@ wiznet_5500_evb_pico.vid.6=0x2e8a
wiznet_5500_evb_pico.pid.6=0xd029
wiznet_5500_evb_pico.vid.7=0x2e8a
wiznet_5500_evb_pico.pid.7=0xd129
wiznet_5500_evb_pico.build.usbpid=-DSERIALUSB_PID=0x1029
wiznet_5500_evb_pico.build.usbvid=-DUSBD_VID=0x2e8a
wiznet_5500_evb_pico.build.usbpid=-DUSBD_PID=0x1029
wiznet_5500_evb_pico.build.usbpwr=-DUSBD_MAX_POWER_MA=250
wiznet_5500_evb_pico.build.board=WIZNET_5500_EVB_PICO
wiznet_5500_evb_pico.build.mcu=cortex-m0plus
@@ -10556,8 +10509,6 @@ wiznet_5500_evb_pico.build.led=
wiznet_5500_evb_pico.build.core=rp2040
wiznet_5500_evb_pico.build.ldscript=memmap_default.ld
wiznet_5500_evb_pico.build.boot2=boot2_w25q080_2_padded_checksum
wiznet_5500_evb_pico.build.vid=0x2e8a
wiznet_5500_evb_pico.build.pid=0x1029
wiznet_5500_evb_pico.build.usb_manufacturer="WIZnet"
wiznet_5500_evb_pico.build.usb_product="W5500-EVB-Pico"
wiznet_5500_evb_pico.menu.flash.2097152_0=2MB (no FS)
@@ -10728,7 +10679,8 @@ generic.vid.6=0x2e8a
generic.pid.6=0xf00a
generic.vid.7=0x2e8a
generic.pid.7=0xf10a
generic.build.usbpid=-DSERIALUSB_PID=0xf00a
generic.build.usbvid=-DUSBD_VID=0x2e8a
generic.build.usbpid=-DUSBD_PID=0xf00a
generic.build.usbpwr=-DUSBD_MAX_POWER_MA=250
generic.build.board=GENERIC_RP2040
generic.build.mcu=cortex-m0plus
@@ -10743,8 +10695,6 @@ generic.build.led=
generic.build.core=rp2040
generic.build.ldscript=memmap_default.ld
generic.build.boot2=boot2_generic_03h_4_padded_checksum
generic.build.vid=0x2e8a
generic.build.pid=0xf00a
generic.build.usb_manufacturer="Generic"
generic.build.usb_product="RP2040"
generic.menu.flash.2097152_0=2MB (no FS)
@@ -10899,6 +10849,8 @@ generic.menu.boot2.boot2_w25q64jv_4_padded_checksum=W25Q64JV QSPI /4
generic.menu.boot2.boot2_w25q64jv_4_padded_checksum.build.boot2=boot2_w25q64jv_4_padded_checksum
generic.menu.boot2.boot2_w25q16jvxq_4_padded_checksum=W25Q16JVxQ QSPI /4
generic.menu.boot2.boot2_w25q16jvxq_4_padded_checksum.build.boot2=boot2_w25q16jvxq_4_padded_checksum
generic.menu.boot2.boot2_w25q128jvxq_4_padded_checksum=W25Q128JV QSPI /4
generic.menu.boot2.boot2_w25q128jvxq_4_padded_checksum.build.boot2=boot2_w25q128jvxq_4_padded_checksum
generic.menu.uploadmethod.default=Default (UF2)
generic.menu.uploadmethod.default.build.ram_length=256k
generic.menu.uploadmethod.default.build.debugscript=picoprobe.tcl
@@ -0,0 +1,23 @@
// Padded and checksummed version of: generated\Winbond\W25Q128JVxQ\boot2.bin by @maxgerhardt
.cpu cortex-m0plus
.thumb
.section .boot2, "ax"
.byte 0xf7, 0xb5, 0x73, 0x46, 0x21, 0x22, 0x02, 0x26, 0x01, 0x93, 0x29, 0x4b, 0xc0, 0x24, 0x5a, 0x60
.byte 0x9a, 0x68, 0x00, 0x27, 0xb2, 0x43, 0xda, 0x60, 0x9a, 0x60, 0x1a, 0x61, 0x5a, 0x61, 0x04, 0x23
.byte 0x01, 0x25, 0x64, 0x05, 0xa7, 0x60, 0x63, 0x61, 0x22, 0x4b, 0x30, 0x00, 0x1d, 0x60, 0xe0, 0x23
.byte 0xdb, 0x02, 0x23, 0x60, 0x35, 0x23, 0xa5, 0x60, 0x23, 0x66, 0x23, 0x66, 0x00, 0xf0, 0x4a, 0xf8
.byte 0xc0, 0xb2, 0xb0, 0x42, 0x12, 0xd0, 0x06, 0x23, 0x28, 0x00, 0x23, 0x66, 0x00, 0xf0, 0x42, 0xf8
.byte 0x25, 0x66, 0x03, 0x20, 0x27, 0x66, 0x26, 0x66, 0x00, 0xf0, 0x3c, 0xf8, 0x03, 0x36, 0x26, 0x66
.byte 0x02, 0x20, 0x26, 0x66, 0x00, 0xf0, 0x36, 0xf8, 0x28, 0x42, 0xf8, 0xd1, 0x00, 0x25, 0x12, 0x4b
.byte 0xa5, 0x60, 0x12, 0x4f, 0x23, 0x60, 0x12, 0x4b, 0x65, 0x60, 0x01, 0x26, 0x3b, 0x60, 0xeb, 0x23
.byte 0xa6, 0x60, 0x23, 0x66, 0x4b, 0x3b, 0x23, 0x66, 0x02, 0x20, 0x00, 0xf0, 0x23, 0xf8, 0x0d, 0x4b
.byte 0xa5, 0x60, 0x3b, 0x60, 0xa6, 0x60, 0x01, 0x9b, 0xab, 0x42, 0x08, 0xd1, 0x0a, 0x4b, 0x0b, 0x4a
.byte 0x13, 0x60, 0x1b, 0x68, 0x83, 0xf3, 0x08, 0x88, 0x09, 0x4b, 0x1b, 0x68, 0x18, 0x47, 0xf7, 0xbd
.byte 0x00, 0x00, 0x02, 0x40, 0xf0, 0x00, 0x00, 0x18, 0x00, 0x03, 0x5f, 0x00, 0xf4, 0x00, 0x00, 0x18
.byte 0x21, 0x22, 0x00, 0x00, 0x22, 0x20, 0x00, 0xa0, 0x00, 0x01, 0x00, 0x10, 0x08, 0xed, 0x00, 0xe0
.byte 0x04, 0x01, 0x00, 0x10, 0xc0, 0x22, 0x03, 0x00, 0x04, 0x21, 0x52, 0x05, 0x90, 0x6a, 0x08, 0x42
.byte 0xfc, 0xd0, 0x01, 0x21, 0x90, 0x6a, 0x08, 0x42, 0xfc, 0xd1, 0x01, 0x3b, 0xdb, 0xb2, 0x10, 0x6e
.byte 0x00, 0x2b, 0xfa, 0xd1, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xa0, 0xf0, 0x2f
+3
View File
@@ -107,6 +107,9 @@ extern bool __isFreeRTOS;
#ifdef __cplusplus
// emptyString is an ESP-ism, a constant string with ""
extern const String emptyString;
#ifdef USE_TINYUSB
// Needed for declaring Serial
#include "Adafruit_USBD_CDC.h"
+3 -4
View File
@@ -46,12 +46,11 @@ mutex_t __usb_mutex;
#define USB_TASK_INTERVAL 1000
static int __usb_task_irq;
// USB VID/PID (note that PID can change depending on the add'l interfaces)
#ifndef USBD_VID
#define USBD_VID (0x2E8A) // Raspberry Pi
#endif
#ifdef SERIALUSB_PID
#define USBD_PID (SERIALUSB_PID)
#else
#ifndef USBD_PID
#define USBD_PID (0x000a) // Raspberry Pi Pico SDK CDC
#endif
+2 -2
View File
@@ -1,5 +1,5 @@
#pragma once
#define ARDUINO_PICO_MAJOR 2
#define ARDUINO_PICO_MINOR 7
#define ARDUINO_PICO_REVISION 1
#define ARDUINO_PICO_VERSION_STR "2.7.1"
#define ARDUINO_PICO_REVISION 2
#define ARDUINO_PICO_VERSION_STR "2.7.2"
+53 -18
View File
@@ -134,6 +134,20 @@ void SerialUART::begin(unsigned long baud, uint16_t config) {
_overflow = false;
_queue = new uint8_t[_fifoSize];
_baud = baud;
_fcnTx = gpio_get_function(_tx);
_fcnRx = gpio_get_function(_rx);
gpio_set_function(_tx, GPIO_FUNC_UART);
gpio_set_function(_rx, GPIO_FUNC_UART);
if (_rts != UART_PIN_NOT_DEFINED) {
_fcnRts = gpio_get_function(_rts);
gpio_set_function(_rts, GPIO_FUNC_UART);
}
if (_cts != UART_PIN_NOT_DEFINED) {
_fcnCts = gpio_get_function(_cts);
gpio_set_function(_cts, GPIO_FUNC_UART);
}
uart_init(_uart, baud);
int bits, stop;
uart_parity_t parity;
@@ -171,18 +185,6 @@ void SerialUART::begin(unsigned long baud, uint16_t config) {
break;
}
uart_set_format(_uart, bits, stop, parity);
_fcnTx = gpio_get_function(_tx);
_fcnRx = gpio_get_function(_rx);
gpio_set_function(_tx, GPIO_FUNC_UART);
gpio_set_function(_rx, GPIO_FUNC_UART);
if (_rts != UART_PIN_NOT_DEFINED) {
_fcnRts = gpio_get_function(_rts);
gpio_set_function(_rts, GPIO_FUNC_UART);
}
if (_cts != UART_PIN_NOT_DEFINED) {
_fcnCts = gpio_get_function(_cts);
gpio_set_function(_cts, GPIO_FUNC_UART);
}
uart_set_hw_flow(_uart, _rts != UART_PIN_NOT_DEFINED, _cts != UART_PIN_NOT_DEFINED);
_writer = 0;
_reader = 0;
@@ -200,6 +202,7 @@ void SerialUART::begin(unsigned long baud, uint16_t config) {
} else {
// Polling mode has no IRQs used
}
_break = false;
_running = true;
}
@@ -288,13 +291,22 @@ int SerialUART::read() {
}
bool SerialUART::overflow() {
CoreMutex m(&_mutex);
if (!_running || !m) {
if (!_running) {
return false;
}
bool hold = _overflow;
if (_polling) {
_handleIRQ(false);
} else {
_pumpFIFO();
}
mutex_enter_blocking(&_fifoMutex);
bool ovf = _overflow;
_overflow = false;
return hold;
mutex_exit(&_fifoMutex);
return ovf;
}
int SerialUART::available() {
@@ -365,6 +377,25 @@ SerialUART::operator bool() {
return _running;
}
bool SerialUART::getBreakReceived() {
if (!_running) {
return false;
}
if (_polling) {
_handleIRQ(false);
} else {
_pumpFIFO();
}
mutex_enter_blocking(&_fifoMutex);
bool break_received = _break;
_break = false;
mutex_exit(&_fifoMutex);
return break_received;
}
void arduino::serialEvent1Run(void) {
if (serialEvent1 && Serial1.available()) {
serialEvent1();
@@ -391,8 +422,12 @@ void __not_in_flash_func(SerialUART::_handleIRQ)(bool inIRQ) {
uart_get_hw(_uart)->icr = UART_UARTICR_RTIC_BITS | UART_UARTICR_RXIC_BITS;
while (uart_is_readable(_uart)) {
uint32_t raw = uart_get_hw(_uart)->dr;
if (raw & 0x700) {
// Framing, Parity, or Break. Ignore this bad char
if (raw & 0x400) {
// break!
_break = true;
continue;
} else if (raw & 0x300) {
// Framing, Parity Error. Ignore this bad char
continue;
}
uint8_t val = raw & 0xff;
+10
View File
@@ -63,9 +63,18 @@ public:
bool overflow();
operator bool() override;
// ESP8266 compat
void setDebugOutput(bool unused) {
(void) unused;
}
// Not to be called by users, only from the IRQ handler. In public so that the C-language IQR callback can access it
void _handleIRQ(bool inIRQ = true);
// Allows the user to sleep until a break is received (self-clears the flag
// on read)
bool getBreakReceived();
private:
bool _running = false;
uart_inst_t *_uart;
@@ -76,6 +85,7 @@ private:
mutex_t _mutex;
bool _polling = false;
bool _overflow;
bool _break;
// Lockless, IRQ-handled circular queue
uint32_t _writer;
+12 -1
View File
@@ -33,6 +33,7 @@
#include "pico/mutex.h"
#include "hardware/watchdog.h"
#include "pico/unique_id.h"
#include "hardware/resets.h"
#ifndef DISABLE_USB_SERIAL
// Ensure we are installed in the USB chain
@@ -174,8 +175,18 @@ SerialUSB::operator bool() {
static bool _dtr = false;
static bool _rts = false;
static int _bps = 115200;
static bool _rebooting = false;
static void CheckSerialReset() {
if ((_bps == 1200) && (!_dtr)) {
__holdUpPendSV = 1; // Ensure we don't get swapped out by FreeRTOS
if (!_rebooting && (_bps == 1200) && (!_dtr)) {
_rebooting = true;
// Disable NVIC IRQ, so that we don't get bothered anymore
irq_set_enabled(USBCTRL_IRQ, false);
// Reset the whole USB hardware block
reset_block(RESETS_RESET_USBCTRL_BITS);
unreset_block(RESETS_RESET_USBCTRL_BITS);
// Delay a bit, so the PC can figure out that we have disconnected.
sleep_ms(3);
reset_usb_boot(0, 0);
while (1); // WDT will fire here
}
+5
View File
@@ -44,6 +44,11 @@ public:
using Print::write;
operator bool() override;
// ESP8266 compat
void setDebugOutput(bool unused) {
(void) unused;
}
private:
bool _running = false;
};
+6
View File
@@ -18,6 +18,8 @@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#pragma once
#if !defined(DEBUG_RP2040_PORT)
#define DEBUGV(...) do { } while(0)
#define DEBUGCORE(...) do { } while(0)
@@ -44,3 +46,7 @@
#define DEBUGSPI(...) do { } while(0)
#endif
#endif
#ifdef __cplusplus
extern void hexdump(const void* mem, uint32_t len, uint8_t cols = 16);
#endif
+27
View File
@@ -170,3 +170,30 @@ extern "C" struct _reent *__wrap___getreent() {
return _impure_ptr1;
}
}
// ESP8266 internal debug routine
extern void hexdump(const void* mem, uint32_t len, uint8_t cols) __attribute__((weak));
void hexdump(const void* mem, uint32_t len, uint8_t cols) {
const char* src = (const char*)mem;
printf("\n[HEXDUMP] Address: %p len: 0x%lX (%ld)", src, len, len);
while (len > 0) {
uint32_t linesize = cols > len ? len : cols;
printf("\n[%p] 0x%04x: ", src, (int)(src - (const char*)mem));
for (uint32_t i = 0; i < linesize; i++) {
printf("%02x ", *(src + i));
}
printf(" ");
for (uint32_t i = linesize; i < cols; i++) {
printf(" ");
}
for (uint32_t i = 0; i < linesize; i++) {
unsigned char c = *(src + i);
putc(isprint(c) ? c : '.', stdout);
}
src += linesize;
len -= linesize;
}
printf("\n");
}
const String emptyString = "";
+2 -2
View File
@@ -54,9 +54,9 @@ author = u'Earle F. Philhower, III'
# built documents.
#
# The short X.Y version.
version = u'2.7.1'
version = u'2.7.2'
# The full version, including alpha/beta/rc tags.
release = u'2.7.1'
release = u'2.7.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -69,6 +69,7 @@ AudioBufferManager::AudioBufferManager(size_t bufferCount, size_t bufferWords, i
}
AudioBufferManager::~AudioBufferManager() {
noInterrupts();
if (_running) {
_running = false;
for (auto i = 0; i < 2; i++) {
@@ -76,6 +77,7 @@ AudioBufferManager::~AudioBufferManager() {
__channelMap[_channelDMA[i]] = nullptr;
dma_channel_abort(_channelDMA[i]);
dma_channel_unclaim(_channelDMA[i]);
dma_channel_acknowledge_irq0(_channelDMA[i]);
}
__channelCount--;
if (!__channelCount) {
@@ -84,6 +86,7 @@ AudioBufferManager::~AudioBufferManager() {
irq_remove_handler(DMA_IRQ_0, _irq);
}
}
interrupts();
for (int i = 0; i < 2; i++) {
if (_active[i] != _silence) {
_deleteAudioBuffer(_active[i]);
+29
View File
@@ -0,0 +1,29 @@
/**
simple demo to show sha1 calculation
*/
#include <Arduino.h>
#include <Hash.h>
void setup() {
Serial.begin(115200);
}
void loop() {
// usage as String
// SHA1:a9993e364706816aba3e25717850c26c9cd0d89d
Serial.print("SHA1:");
Serial.println(sha1("abc"));
// usage as ptr
// SHA1:a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
uint8_t hash[20];
sha1("test", &hash[0]);
Serial.print("SHA1:");
for (uint16_t i = 0; i < 20; i++) { Serial.printf("%02x", hash[i]); }
Serial.println();
delay(1000);
}
+23
View File
@@ -0,0 +1,23 @@
#######################################
# Syntax Coloring Map For Hash
#######################################
#######################################
# Library (KEYWORD3)
#######################################
Hash KEYWORD3 RESERVED_WORD
#######################################
# Datatypes (KEYWORD1)
#######################################
#######################################
# Methods and Functions (KEYWORD2)
#######################################
sha1 KEYWORD2
#######################################
# Constants (LITERAL1)
#######################################
+10
View File
@@ -0,0 +1,10 @@
name=Hash
version=1.0
author=Markus Sattler
maintainer=Markus Sattler
sentence=Generate Hash from data
paragraph=
category=Data Processing
url=
architectures=rp2040
dot_a_linkage=true
+96
View File
@@ -0,0 +1,96 @@
/**
* @file Hash.cpp
* @date 20.05.2015
* @author Markus Sattler
*
* Copyright (c) 2015 Markus Sattler. All rights reserved.
* This file is part of the esp8266 core for Arduino environment.
*
* 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 <bearssl/bearssl_hash.h>
#include "Hash.h"
/**
* create a sha1 hash from data
* @param data uint8_t *
* @param size uint32_t
* @param hash uint8_t[20]
*/
void sha1(const uint8_t* data, uint32_t size, uint8_t hash[20]) {
br_sha1_context ctx;
#ifdef DEBUG_SHA1
os_printf("DATA:");
for(uint16_t i = 0; i < size; i++) {
os_printf("%02X", data[i]);
}
os_printf("\n");
os_printf("DATA:");
for(uint16_t i = 0; i < size; i++) {
os_printf("%c", data[i]);
}
os_printf("\n");
#endif
br_sha1_init(&ctx);
br_sha1_update(&ctx, data, size);
br_sha1_out(&ctx, hash);
#ifdef DEBUG_SHA1
os_printf("SHA1:");
for(uint16_t i = 0; i < 20; i++) {
os_printf("%02X", hash[i]);
}
os_printf("\n\n");
#endif
}
void sha1(const char* data, uint32_t size, uint8_t hash[20]) {
sha1((const uint8_t *) data, size, hash);
}
void sha1(const String& data, uint8_t hash[20]) {
sha1(data.c_str(), data.length(), hash);
}
String sha1(const uint8_t* data, uint32_t size) {
uint8_t hash[20];
String hashStr((const char*)nullptr);
hashStr.reserve(20 * 2 + 1);
sha1(&data[0], size, &hash[0]);
for(uint16_t i = 0; i < 20; i++) {
char hex[3];
snprintf(hex, sizeof(hex), "%02x", hash[i]);
hashStr += hex;
}
return hashStr;
}
String sha1(const char* data, uint32_t size) {
return sha1((const uint8_t*) data, size);
}
String sha1(const String& data) {
return sha1(data.c_str(), data.length());
}
+38
View File
@@ -0,0 +1,38 @@
/**
* @file Hash.h
* @date 20.05.2015
* @author Markus Sattler
*
* Copyright (c) 2015 Markus Sattler. All rights reserved.
* This file is part of the esp8266 core for Arduino environment.
*
* 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
*
*/
#ifndef HASH_H_
#define HASH_H_
//#define DEBUG_SHA1
void sha1(const uint8_t* data, uint32_t size, uint8_t hash[20]);
void sha1(const char* data, uint32_t size, uint8_t hash[20]);
void sha1(const String& data, uint8_t hash[20]);
String sha1(const uint8_t* data, uint32_t size);
String sha1(const char* data, uint32_t size);
String sha1(const String& data);
#endif /* HASH_H_ */
+3
View File
@@ -38,6 +38,7 @@ public:
//PORTENTA_H7 min -12 max 51
//NANO 33 BLE SENSe min 0 max 80
//NICLA_VISION min 0 max 8
void setGain(int gain);
void setBufferSize(int bufferSize);
size_t getBufferSize();
@@ -56,6 +57,8 @@ private:
int _gain;
int _init;
int _cutSamples;
// Hardware peripherals used
uint _dmaChannel;
PIO _pio;
+54 -19
View File
@@ -20,7 +20,7 @@ uint8_t rawBuffer1[RAW_BUFFER_SIZE];
uint8_t* rawBuffer[2] = {rawBuffer0, rawBuffer1};
volatile int rawBufferIndex = 0;
int decimation = 64;
int decimation = 128;
// final buffer is the one to be filled with PCM data
int16_t* volatile finalBuffer;
@@ -45,6 +45,7 @@ PDMClass::PDMClass(int dinPin, int clkPin, int pwrPin) :
_channels(-1),
_samplerate(-1),
_init(-1),
_cutSamples(100),
_dmaChannel(0),
_pio(nullptr),
_smIdx(-1),
@@ -55,6 +56,12 @@ PDMClass::~PDMClass() {
}
int PDMClass::begin(int channels, int sampleRate) {
if (_init == 1) {
//ERROR: please call end first
return 0;
}
//_channels = channels; // only one channel available
// clear the final buffers
@@ -63,6 +70,18 @@ int PDMClass::begin(int channels, int sampleRate) {
int finalBufferLength = _doubleBuffer.availableForWrite() / sizeof(int16_t);
_doubleBuffer.swap(0);
// The mic accepts an input clock from 1.2 to 3.25 Mhz
// Setup the decimation factor accordingly
if ((sampleRate * decimation * 2) > 3250000) {
decimation = 64;
}
// Sanity check, abort if still over 3.25Mhz
if ((sampleRate * decimation * 2) > 3250000) {
//ERROR: Sample rate too high, the mic would glitch
return -1;
}
int rawBufferLength = RAW_BUFFER_SIZE / (decimation / 8);
// Saturate number of samples. Remaining bytes are dropped.
if (rawBufferLength > finalBufferLength) {
@@ -71,6 +90,7 @@ int PDMClass::begin(int channels, int sampleRate) {
/* Initialize Open PDM library */
filter.Fs = sampleRate;
filter.MaxVolume = 1;
filter.nSamples = rawBufferLength;
filter.LP_HZ = sampleRate / 2;
filter.HP_HZ = 10;
@@ -88,7 +108,7 @@ int PDMClass::begin(int channels, int sampleRate) {
if (!_pdmPgm.prepare(&_pio, &_smIdx, &_pgmOffset)) {
// ERROR, no free slots
return -1;
return 0;
}
pdm_pio_program_init(_pio, _smIdx, _pgmOffset, _clkPin, _dinPin, clkDiv);
@@ -118,14 +138,29 @@ int PDMClass::begin(int channels, int sampleRate) {
true // Start immediately
);
_cutSamples = 100;
_init = 1;
return 1;
}
void PDMClass::end() {
if (_init != 1) {
return;
}
dma_channel_set_irq0_enabled(_dmaChannel, false);
dma_channel_abort(_dmaChannel);
dma_channel_unclaim(_dmaChannel);
irq_remove_handler(DMA_IRQ_0, dmaHandler);
pio_sm_unclaim(_pio, _smIdx);
pinMode(_clkPin, INPUT);
rawBufferIndex = 0;
_pgmOffset = -1;
_init = 0;
}
int PDMClass::available() {
@@ -163,7 +198,6 @@ void PDMClass::setBufferSize(int bufferSize) {
}
void PDMClass::IrqHandler(bool halftranfer) {
static int cutSamples = 100;
// Clear the interrupt request.
dma_hw->ints0 = 1u << _dmaChannel;
@@ -171,24 +205,25 @@ void PDMClass::IrqHandler(bool halftranfer) {
int shadowIndex = rawBufferIndex ^ 1;
dma_channel_set_write_addr(_dmaChannel, rawBuffer[shadowIndex], true);
if (_doubleBuffer.available()) {
// buffer overflow, stop
return end();
if (!_doubleBuffer.available()) {
// fill final buffer with PCM samples
if (filter.Decimation == 128) {
Open_PDM_Filter_128(rawBuffer[rawBufferIndex], finalBuffer, 1, &filter);
} else {
Open_PDM_Filter_64(rawBuffer[rawBufferIndex], finalBuffer, 1, &filter);
}
if (_cutSamples) {
memset(finalBuffer, 0, _cutSamples);
_cutSamples = 0;
}
// swap final buffer and raw buffers' indexes
finalBuffer = (int16_t*)_doubleBuffer.data();
_doubleBuffer.swap(filter.nSamples * sizeof(int16_t));
rawBufferIndex = shadowIndex;
}
// fill final buffer with PCM samples
Open_PDM_Filter_64(rawBuffer[rawBufferIndex], finalBuffer, 1, &filter);
if (cutSamples) {
memset(finalBuffer, 0, cutSamples);
cutSamples = 0;
}
// swap final buffer and raw buffers' indexes
finalBuffer = (int16_t*)_doubleBuffer.data();
_doubleBuffer.swap(filter.nSamples * sizeof(int16_t));
rawBufferIndex = shadowIndex;
if (_onReceive) {
_onReceive();
}
+17 -3
View File
@@ -162,9 +162,23 @@ public:
private:
const char *getMode(uint8_t mode) {
bool read = (mode & O_READ) ? true : false;
bool write = (mode & O_WRITE) ? true : false;
bool append = (mode & O_APPEND) ? true : false;
bool read = false;
bool write = false;
switch (mode & O_ACCMODE) {
case O_RDONLY:
read = true;
break;
case O_WRONLY:
write = true;
break;
case O_RDWR:
read = true;
write = true;
break;
}
const bool append = (mode & O_APPEND) > 0;
if (read & !write) {
return "r";
} else if (!read & write & !append) {
+1 -1
View File
@@ -125,7 +125,7 @@ uint16_t SPIClassRP2040::transfer16(uint16_t data) {
spi_set_format(_spi, 16, cpol(), cpha(), SPI_MSB_FIRST);
DEBUGSPI("SPI::transfer16(%04x), cpol=%d, cpha=%d\n", data, cpol(), cpha());
spi_write16_read16_blocking(_spi, &data, &ret, 1);
ret = (_spis.getBitOrder() == MSBFIRST) ? ret : reverseByte(ret);
ret = (_spis.getBitOrder() == MSBFIRST) ? ret : reverse16Bit(ret);
DEBUGSPI("SPI: read back %02x\n", ret);
return ret;
}
@@ -0,0 +1,4 @@
// Since things may just work, we'll redirect for now
#include "WebServer.h"
using ESP8266WebServer = WebServer;
+4
View File
@@ -0,0 +1,4 @@
// Since things may just work, we'll redirect for now
#include "WiFiMulti.h"
using ESP8266WiFiMulti = WiFiMulti;
+12
View File
@@ -86,6 +86,9 @@ public:
int begin(const char* ssid, const char *passphrase);
bool connected();
bool isConnected() {
return connected();
}
int8_t waitForConnectResult(unsigned long timeoutLength = 60000) {
uint32_t now = millis();
while (millis() - now < timeoutLength) {
@@ -381,6 +384,15 @@ public:
void setFeedWatchdogFunc(FeedHostProcessorWatchdogFuncPointer func);
void feedWatchdog();
// ESP8266 compatibility
void persistent(bool unused) {
(void) unused;
}
void hostname(const char *name) {
setHostname(name);
}
private:
int _timeout = 15000;
String _ssid;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "framework-arduinopico",
"version": "1.20701.0",
"version": "1.20702.0",
"description": "Arduino Wiring-based Framework (RPi Pico RP2040)",
"keywords": [
"framework",
+5 -5
View File
@@ -20,7 +20,7 @@
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
name=Raspberry Pi RP2040 Boards
version=2.7.1
version=2.7.2
runtime.tools.pqt-gcc.path={runtime.platform.path}/system/arm-none-eabi
runtime.tools.pqt-python3.path={runtime.platform.path}/system/python3
@@ -43,7 +43,7 @@ compiler.warning_flags.more=-Wall -Werror=return-type -Wno-ignored-qualifiers
compiler.warning_flags.all=-Wall -Wextra -Werror=return-type -Wno-ignored-qualifiers
compiler.netdefines=-DPICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 -DCYW43_LWIP=0 {build.lwipdefs} -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1
compiler.defines={build.led} {build.usbstack_flags} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {compiler.netdefines} -DARDUINO_VARIANT="{build.variant}" -DTARGET_RP2040
compiler.defines={build.led} {build.usbstack_flags} -DCFG_TUSB_MCU=OPT_MCU_RP2040 {build.usbpid} {build.usbvid} {build.usbpwr} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {compiler.netdefines} -DARDUINO_VARIANT="{build.variant}" -DTARGET_RP2040
compiler.includes="-iprefix{runtime.platform.path}/" "@{runtime.platform.path}/lib/platform_inc.txt" "-I{runtime.platform.path}/include"
compiler.flags=-march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections {build.flags.exceptions} {build.flags.stackprotect} {build.flags.cmsis} {build.picodebugflags}
compiler.wrap="@{runtime.platform.path}/lib/platform_wrap.txt"
@@ -114,13 +114,13 @@ pluggable_discovery.rp2040.pattern="{runtime.platform.path}/system/python3/pytho
recipe.hooks.sketch.prebuild.pattern="{runtime.tools.pqt-python3.path}/python3" -I "{runtime.platform.path}/tools/signing.py" --mode header --publickey "{build.source.path}/public.key" --out "{build.path}/core/Updater_Signing.h"
## Compile c files
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {includes} "{source_file}" -o "{object_file}"
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {includes} "{source_file}" -o "{object_file}"
## Compile c++ files
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" -I "{build.path}/core" {compiler.cpp.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {build.wificc} {includes} "{source_file}" -o "{object_file}"
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" -I "{build.path}/core" {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {build.wificc} {includes} "{source_file}" -o "{object_file}"
## Compile S files
recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {includes} "{source_file}" -o "{object_file}"
recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {includes} "{source_file}" -o "{object_file}"
## Create archives
# archive_file_path is needed for backwards compatibility with IDE 1.6.5 or older, IDE 1.6.6 or newer overrides this value
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"boot2_source": "boot2_w25q128jvxq_4_padded_checksum.S",
"usb_vid": "0x1209",
"usb_pid": "0xCB74"
}
+54
View File
@@ -0,0 +1,54 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x800A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_YD_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x800A"
]
],
"mcu": "rp2040",
"variant": "vccgnd_yd_rp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "YD RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "VCC-GND"
}
+6 -9
View File
@@ -70,7 +70,8 @@ def BuildBoot(name):
("IS25LP080 QSPI /2", "boot2_is25lp080_2_padded_checksum"), ("IS25LP080 QSPI /4", "boot2_is25lp080_4_padded_checksum"),
("W25Q080 QSPI /2", "boot2_w25q080_2_padded_checksum"), ("W25Q080 QSPI /4", "boot2_w25q080_4_padded_checksum"),
("W25X10CL QSPI /2", "boot2_w25x10cl_2_padded_checksum"), ("W25X10CL QSPI /4", "boot2_w25x10cl_4_padded_checksum"),
("W25Q64JV QSPI /4", "boot2_w25q64jv_4_padded_checksum"), ("W25Q16JVxQ QSPI /4", "boot2_w25q16jvxq_4_padded_checksum") ]:
("W25Q64JV QSPI /4", "boot2_w25q64jv_4_padded_checksum"), ("W25Q16JVxQ QSPI /4", "boot2_w25q16jvxq_4_padded_checksum"),
("W25Q128JV QSPI /4", "boot2_w25q128jvxq_4_padded_checksum")]:
print("%s.menu.boot2.%s=%s" % (name, l[1], l[0]))
print("%s.menu.boot2.%s.build.boot2=%s" % (name, l[1], l[1]))
@@ -141,10 +142,11 @@ def BuildHeader(name, vendor_name, product_name, vid, pid, pwr, boarddefine, var
print("%s.vid.%d=%s" % (name, usb, vid))
print("%s.pid.%d=0x%04x" % (name, usb, thispid))
usb = usb + 1
print("%s.build.usbvid=-DUSBD_VID=%s" % (name, vid))
if type(pid) == list:
print("%s.build.usbpid=-DSERIALUSB_PID=%s" % (name, pid[0]))
print("%s.build.usbpid=-DUSBD_PID=%s" % (name, pid[0]))
else:
print("%s.build.usbpid=-DSERIALUSB_PID=%s" % (name, pid))
print("%s.build.usbpid=-DUSBD_PID=%s" % (name, pid))
print("%s.build.usbpwr=-DUSBD_MAX_POWER_MA=%s" % (name, pwr))
print("%s.build.board=%s" % (name, boarddefine))
print("%s.build.mcu=cortex-m0plus" % (name))
@@ -159,11 +161,6 @@ def BuildHeader(name, vendor_name, product_name, vid, pid, pwr, boarddefine, var
print("%s.build.core=rp2040" % (name))
print("%s.build.ldscript=memmap_default.ld" % (name))
print("%s.build.boot2=%s" % (name, boot2))
print("%s.build.vid=%s" % (name, vid))
if type(pid) == list:
print("%s.build.pid=%s" % (name, pid[0]))
else:
print("%s.build.pid=%s" % (name, pid))
print('%s.build.usb_manufacturer="%s"' % (name, vendor_name))
print('%s.build.usb_product="%s"' % (name, product_name))
if extra != None:
@@ -320,7 +317,7 @@ MakeBoard("rpipico", "Raspberry Pi", "Pico", "0x2e8a", "0x000a", 250, "RASPBERRY
MakeBoard("rpipicow", "Raspberry Pi", "Pico W", "0x2e8a", "0xf00a", 250, "RASPBERRY_PI_PICO_W", 2, "boot2_w25q080_2_padded_checksum")
# 0xCB
MakeBoard("0xcb_helios", "0xCB", "Helios", "0x1209", "0xCB74", 500, "0XCB_HELIOS", 16, "boot2_w25q080_2_padded_checksum")
MakeBoard("0xcb_helios", "0xCB", "Helios", "0x1209", "0xCB74", 500, "0XCB_HELIOS", 16, "boot2_w25q128jvxq_4_padded_checksum")
# Adafruit
MakeBoard("adafruit_feather", "Adafruit", "Feather RP2040", "0x239a", "0x80f1", 250, "ADAFRUIT_FEATHER_RP2040", 8, "boot2_w25x10cl_4_padded_checksum")
+51 -15
View File
@@ -225,6 +225,23 @@ def convert_from_hex_to_uf2(buf):
def to_str(b):
return b.decode("utf-8", "replace")
def possibly_add(p, q):
if p not in q:
if os.path.isdir(p):
if os.access(p, os.W_OK):
q.append(p)
def possibly_anydir(p, q):
if os.path.isdir(p):
if os.access(p, os.R_OK):
r = glob.glob(p + "/*")
for t in r:
possibly_add(t, q)
def possibly_any(p, q, r):
possibly_anydir(p, q)
possibly_anydir(p + r, q)
def get_drives():
drives = []
if sys.platform == "win32":
@@ -248,21 +265,9 @@ def get_drives():
if len(words) >= 3 and words[1] == "2" and words[2] == "FAT":
drives.append(words[0])
else:
rootpath = "/run/media"
if not os.path.isdir(rootpath):
rootpath = "/media"
if not os.path.isdir(rootpath):
rootpath = "/opt/media"
if sys.platform == "darwin":
rootpath = "/Volumes"
possibly_anydir("/Volumes", drives)
elif sys.platform == "linux":
tmp = rootpath + "/" + os.environ["USER"]
if os.path.isdir(tmp):
rootpath = tmp
for d in os.listdir(rootpath):
drives.append(os.path.join(rootpath, d))
if (len(drives) == 0) and (sys.platform == "linux"):
globexpr = "/dev/disk/by-id/usb-RPI_RP2*-part1"
rpidisk = glob.glob(globexpr)
if len(rpidisk) > 0:
@@ -277,6 +282,19 @@ def get_drives():
except Exception as ex:
print("Exception executing udisksctl. Exception: {}".format(ex))
# If it fails, no problem since it was a heroic attempt
'''
Generate a list and scan those too.
First add the usual suspects.
Then Scan a returned list.
'''
u="/" + os.environ["USER"]
possibly_anydir("/mnt", drives)
possibly_any("/media", drives, u)
possibly_any("/opt/media", drives, u)
possibly_any("/run/media", drives, u)
possibly_any("/var/run/media", drives, u)
# Add from udisksctl info?
# Add from /proc/mounts?
def has_info(d):
try:
@@ -347,8 +365,15 @@ def main():
try:
print("Resetting " + str(args.serial))
try:
ser = serial.Serial(args.serial, 1200)
ser = serial.Serial()
ser.port = args.serial
ser.open()
ser.baudrate = 9600
ser.dtr = True
time.sleep(0.1)
ser.dtr = False
ser.baudrate = 1200
ser.close()
except:
pass # Ignore error in the case it is already in upload mode
except:
@@ -384,7 +409,7 @@ def main():
now = time.time()
drives = []
while (time.time() - now < 10.0) and (len(drives) == 0):
time.sleep(0.5) # Avoid 100% CPU use while waiting for drive to appear
time.sleep(1.0) # Avoid 100% CPU use while waiting for drive to appear
drives = get_drives()
if args.output:
@@ -396,6 +421,17 @@ def main():
print("Flashing %s (%s)" % (d, board_id(d)))
write_file(d + "/NEW.UF2", outbuf)
# Wait until serial port (if defined) re-appears, or 2s timeout unless UF2 drive direct upload
try:
if args.serial != "UF2 Board":
timeout = time.time() + 2.0
while time.time() < timeout:
if os.access(args.serial, os.W_OK):
break
time.sleep(0.2)
except:
pass
if __name__ == "__main__":
main()
+41
View File
@@ -0,0 +1,41 @@
#pragma once
// Pin definitions taken from:
// https://user-images.githubusercontent.com/57373245/211920388-d339f085-840d-433d-a575-590ace58219c.png
// LEDs
#define PIN_NEOPIXEL (23u)
#define PIN_USRKEY (24u)
#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 (16u)
#define PIN_SPI0_MOSI (19u)
#define PIN_SPI0_SCK (18u)
#define PIN_SPI0_SS (17u)
#define PIN_SPI1_MISO (12u)
#define PIN_SPI1_MOSI (15u)
#define PIN_SPI1_SCK (14u)
#define PIN_SPI1_SS (13u)
// Wire
#define PIN_WIRE0_SDA (4u)
#define PIN_WIRE0_SCL (5u)
#define PIN_WIRE1_SDA (26u)
#define PIN_WIRE1_SCL (27u)
#define SERIAL_HOWMANY (3u)
#define SPI_HOWMANY (2u)
#define WIRE_HOWMANY (2u)
#include "../generic/common.h"