diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 5fcb7b92e..7deac49d6 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -10,7 +10,7 @@ jobs: # Consistent style, spelling astyle: - name: Spelling, Style, Boards, Package + name: Spelling, Style, Boards, Package, PIO runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -21,11 +21,6 @@ jobs: with: skip: ./ArduinoCore-API,./libraries/ESP8266SdFat,./libraries/Adafruit_TinyUSB_Arduino,./libraries/LittleFS/lib,./tools/pyserial,./pico-sdk,./.github,./docs/i2s.rst,./cores/rp2040/api,./libraries/FreeRTOS,./tools/libbearssl/bearssl,./include,./libraries/WiFi/examples/BearSSL_Server,./ota/uzlib,./libraries/http-parser/lib,./libraries/WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino,./libraries/HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino,./.git,./libraries/FatFS/lib/fatfs,./libraries/FatFS/src/diskio.h,./libraries/FatFS/src/ff.cpp,./libraries/FatFS/src/ffconf.h,./libraries/FatFS/src/ffsystem.cpp,./libraries/FatFS/src/ff.h,./libraries/lwIP_WINC1500/src/driver,./libraries/lwIP_WINC1500/src/common,./libraries/lwIP_WINC1500/src/bus_wrapper,./libraries/lwIP_WINC1500/src/spi_flash ignore_words_list: ser,dout,shiftIn,acount,froms - - name: Get submodules for following tests - run: git submodule update --init - - name: Check package references - run: | - ./tests/ci/pkgrefs_test.sh - name: Check boards.txt was not edited after makeboards.py run: | ./tools/makeboards.py @@ -38,6 +33,15 @@ jobs: ./tests/restyle.sh # If anything changed, GIT should return an error and fail the test git diff --exit-code + - name: Check compiled PIO files + run: | + (cd ./tools && ./get.py) + ./tools/makepio.py + # If anything changed, GIT should return an error and fail the test + git diff -w --exit-code + - name: Check package references + run: | + ./tests/ci/pkgrefs_test.sh # Build all examples on linux (core and Arduino IDE) build-linux: @@ -264,8 +268,8 @@ jobs: run: | python -m pip install --upgrade pip pip install --upgrade platformio + rm -rf ~/.platformio/platforms/raspberrypi* pio pkg install --global --platform https://github.com/maxgerhardt/platform-raspberrypi.git - pio pkg update --global --platform https://github.com/maxgerhardt/platform-raspberrypi.git pio pkg install --global --tool symlink://. cp -f /home/runner/work/arduino-pico/arduino-pico/tools/json/*.json /home/runner/.platformio/platforms/raspberrypi/boards/. - name: Build Multicore Example @@ -321,8 +325,8 @@ jobs: run: | python -m pip install --upgrade pip pip install --upgrade platformio + rm -rf ~/.platformio/platforms/raspberrypi* pio pkg install --global --platform https://github.com/maxgerhardt/platform-raspberrypi.git - pio pkg update --global --platform https://github.com/maxgerhardt/platform-raspberrypi.git pio pkg install --global --tool symlink://. cp -f /home/runner/work/arduino-pico/arduino-pico/tools/json/*.json /home/runner/.platformio/platforms/raspberrypi/boards/. - name: Build Every Variant diff --git a/.gitignore b/.gitignore index 264d39c01..2bc5a38c6 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,8 @@ docs/_build ota/build ota/build-rp2350 ota/build-rp2350-riscv -tools/libpico/build +tools/libpico/boot +tools/libpico/build-rp2040 +tools/libpico/build-rp2350 +tools/libpico/build-rp2350-riscv platform.local.txt diff --git a/.gitmodules b/.gitmodules index 0ad9b7952..8b55777d8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,9 +10,6 @@ [submodule "libraries/LittleFS/lib/littlefs"] path = libraries/LittleFS/lib/littlefs url = https://github.com/littlefs-project/littlefs.git -[submodule "libraries/SdFat"] - path = libraries/ESP8266SdFat - url = https://github.com/earlephilhower/ESP8266SdFat.git [submodule "libraries/Keyboard"] path = libraries/HID_Keyboard url = https://github.com/earlephilhower/Keyboard.git @@ -49,3 +46,6 @@ [submodule "libraries/ESPHost"] path = libraries/ESPHost url = https://github.com/Networking-for-Arduino/ESPHost.git +[submodule "libraries/SdFat"] + path = libraries/SdFat + url = https://github.com/greiman/SdFat.git diff --git a/ArduinoCore-API b/ArduinoCore-API index ece6e68f2..82928635c 160000 --- a/ArduinoCore-API +++ b/ArduinoCore-API @@ -1 +1 @@ -Subproject commit ece6e68f29c6f406a4434659bcbcfe558baaa3a9 +Subproject commit 82928635c893189343cf8eb78569f0c4136fded0 diff --git a/README.md b/README.md index fc3326d4c..3c8797a14 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo * Adafruit KB2040 * Adafruit Macropad RP2040 * Adafruit Metro RP2040 +* Adafruit Metro RP2350 * Adafruit QTPy RP2040 * Adafruit STEMMA Friend RP2040 * Adafruit Trinkey RP2040 QT @@ -68,16 +69,21 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo * Melopero Cookie RP2040 * Melopero Shake RP2040 * METE HOCA Akana R1 +* Makerbase MKSTHR36 +* Makerbase MKSTHR42 * MyMakers RP2040 * Neko Systems BL2040 Mini * Newsan Archi * nullbits Bit-C PRO +* Olimex Pico2XL +* Olimex Pico2XXL * Olimex RP2040-Pico30 * Pimoroni PGA2040 * Pimoroni Pico Plus 2 * Pimoroni Pico Plus 2W * Pimoroni Plasma2040 * Pimoroni Plasma2350 +* Pimoroni Servo2040 * Pimoroni Tiny2040 * Pimoroni Tiny2350 * Pintronix PinMax @@ -92,11 +98,13 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo * Solder Party RP2040 Stamp * Solder Party RP2350 Stamp * Solder Party RP2350 Stamp XL +* SparkFun IoT RedBoard RP2350 * SparkFun MicroMod RP2040 * SparkFun ProMicro RP2040 * SparkFun ProMicro RP2350 * SparkFun Thing Plus RP2040 * SparkFun Thing Plus RP2350 +* SparkFun XRP Controller * uPesy RP2040 DevKit * VCC-GND YD-RP2040 * Viyalab Mizu RP2040 @@ -148,7 +156,7 @@ The RP2040 PIO state machines (SMs) are used to generate jitter-free: * I2S Input * I2S Output * Software UARTs (Serial ports) - +* Software SPIs # Installing via Arduino Boards Manager ## Windows-specific Notes diff --git a/boards.txt b/boards.txt index 7cfbfef29..264ce70b4 100644 --- a/boards.txt +++ b/boards.txt @@ -125,8 +125,8 @@ rpipico.menu.flash.2097152_1048576.build.flash_length=1044480 rpipico.menu.flash.2097152_1048576.build.eeprom_start=270528512 rpipico.menu.flash.2097152_1048576.build.fs_start=269479936 rpipico.menu.flash.2097152_1048576.build.fs_end=270528512 -rpipico.menu.freq.133=133 MHz -rpipico.menu.freq.133.build.f_cpu=133000000L +rpipico.menu.freq.200=200 MHz +rpipico.menu.freq.200.build.f_cpu=200000000L rpipico.menu.freq.50=50 MHz rpipico.menu.freq.50.build.f_cpu=50000000L rpipico.menu.freq.100=100 MHz @@ -137,20 +137,20 @@ rpipico.menu.freq.125=125 MHz rpipico.menu.freq.125.build.f_cpu=125000000L rpipico.menu.freq.128=128 MHz rpipico.menu.freq.128.build.f_cpu=128000000L -rpipico.menu.freq.150=150 MHz (Overclock) +rpipico.menu.freq.133=133 MHz +rpipico.menu.freq.133.build.f_cpu=133000000L +rpipico.menu.freq.150=150 MHz rpipico.menu.freq.150.build.f_cpu=150000000L -rpipico.menu.freq.175=175 MHz (Overclock) -rpipico.menu.freq.175.build.f_cpu=175000000L -rpipico.menu.freq.200=200 MHz (Overclock) -rpipico.menu.freq.200.build.f_cpu=200000000L +rpipico.menu.freq.176=176 MHz +rpipico.menu.freq.176.build.f_cpu=176000000L rpipico.menu.freq.225=225 MHz (Overclock) rpipico.menu.freq.225.build.f_cpu=225000000L rpipico.menu.freq.240=240 MHz (Overclock) rpipico.menu.freq.240.build.f_cpu=240000000L rpipico.menu.freq.250=250 MHz (Overclock) rpipico.menu.freq.250.build.f_cpu=250000000L -rpipico.menu.freq.275=275 MHz (Overclock) -rpipico.menu.freq.275.build.f_cpu=275000000L +rpipico.menu.freq.276=276 MHz (Overclock) +rpipico.menu.freq.276.build.f_cpu=276000000L rpipico.menu.freq.300=300 MHz (Overclock) rpipico.menu.freq.300.build.f_cpu=300000000L rpipico.menu.opt.Small=Small (-Os) (standard) @@ -178,7 +178,7 @@ rpipico.menu.rtti.Enabled.build.flags.rtti= rpipico.menu.stackprotect.Disabled=Disabled rpipico.menu.stackprotect.Disabled.build.flags.stackprotect= rpipico.menu.stackprotect.Enabled=Enabled -rpipico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +rpipico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all rpipico.menu.exceptions.Disabled=Disabled rpipico.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions rpipico.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -340,8 +340,8 @@ rpipicow.menu.flash.2097152_1048576.build.flash_length=1044480 rpipicow.menu.flash.2097152_1048576.build.eeprom_start=270528512 rpipicow.menu.flash.2097152_1048576.build.fs_start=269479936 rpipicow.menu.flash.2097152_1048576.build.fs_end=270528512 -rpipicow.menu.freq.133=133 MHz -rpipicow.menu.freq.133.build.f_cpu=133000000L +rpipicow.menu.freq.200=200 MHz +rpipicow.menu.freq.200.build.f_cpu=200000000L rpipicow.menu.freq.50=50 MHz rpipicow.menu.freq.50.build.f_cpu=50000000L rpipicow.menu.freq.100=100 MHz @@ -352,20 +352,20 @@ rpipicow.menu.freq.125=125 MHz rpipicow.menu.freq.125.build.f_cpu=125000000L rpipicow.menu.freq.128=128 MHz rpipicow.menu.freq.128.build.f_cpu=128000000L -rpipicow.menu.freq.150=150 MHz (Overclock) +rpipicow.menu.freq.133=133 MHz +rpipicow.menu.freq.133.build.f_cpu=133000000L +rpipicow.menu.freq.150=150 MHz rpipicow.menu.freq.150.build.f_cpu=150000000L -rpipicow.menu.freq.175=175 MHz (Overclock) -rpipicow.menu.freq.175.build.f_cpu=175000000L -rpipicow.menu.freq.200=200 MHz (Overclock) -rpipicow.menu.freq.200.build.f_cpu=200000000L +rpipicow.menu.freq.176=176 MHz +rpipicow.menu.freq.176.build.f_cpu=176000000L rpipicow.menu.freq.225=225 MHz (Overclock) rpipicow.menu.freq.225.build.f_cpu=225000000L rpipicow.menu.freq.240=240 MHz (Overclock) rpipicow.menu.freq.240.build.f_cpu=240000000L rpipicow.menu.freq.250=250 MHz (Overclock) rpipicow.menu.freq.250.build.f_cpu=250000000L -rpipicow.menu.freq.275=275 MHz (Overclock) -rpipicow.menu.freq.275.build.f_cpu=275000000L +rpipicow.menu.freq.276=276 MHz (Overclock) +rpipicow.menu.freq.276.build.f_cpu=276000000L rpipicow.menu.freq.300=300 MHz (Overclock) rpipicow.menu.freq.300.build.f_cpu=300000000L rpipicow.menu.opt.Small=Small (-Os) (standard) @@ -393,7 +393,7 @@ rpipicow.menu.rtti.Enabled.build.flags.rtti= rpipicow.menu.stackprotect.Disabled=Disabled rpipicow.menu.stackprotect.Disabled.build.flags.stackprotect= rpipicow.menu.stackprotect.Enabled=Enabled -rpipicow.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +rpipicow.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all rpipicow.menu.exceptions.Disabled=Disabled rpipicow.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions rpipicow.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -719,8 +719,8 @@ rpipico2.menu.freq.128=128 MHz rpipico2.menu.freq.128.build.f_cpu=128000000L rpipico2.menu.freq.133=133 MHz rpipico2.menu.freq.133.build.f_cpu=133000000L -rpipico2.menu.freq.175=175 MHz (Overclock) -rpipico2.menu.freq.175.build.f_cpu=175000000L +rpipico2.menu.freq.176=176 MHz (Overclock) +rpipico2.menu.freq.176.build.f_cpu=176000000L rpipico2.menu.freq.200=200 MHz (Overclock) rpipico2.menu.freq.200.build.f_cpu=200000000L rpipico2.menu.freq.225=225 MHz (Overclock) @@ -729,8 +729,8 @@ rpipico2.menu.freq.240=240 MHz (Overclock) rpipico2.menu.freq.240.build.f_cpu=240000000L rpipico2.menu.freq.250=250 MHz (Overclock) rpipico2.menu.freq.250.build.f_cpu=250000000L -rpipico2.menu.freq.275=275 MHz (Overclock) -rpipico2.menu.freq.275.build.f_cpu=275000000L +rpipico2.menu.freq.276=276 MHz (Overclock) +rpipico2.menu.freq.276.build.f_cpu=276000000L rpipico2.menu.freq.300=300 MHz (Overclock) rpipico2.menu.freq.300.build.f_cpu=300000000L rpipico2.menu.opt.Small=Small (-Os) (standard) @@ -758,7 +758,7 @@ rpipico2.menu.rtti.Enabled.build.flags.rtti= rpipico2.menu.stackprotect.Disabled=Disabled rpipico2.menu.stackprotect.Disabled.build.flags.stackprotect= rpipico2.menu.stackprotect.Enabled=Enabled -rpipico2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +rpipico2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all rpipico2.menu.exceptions.Disabled=Disabled rpipico2.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions rpipico2.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -957,8 +957,8 @@ rpipico2w.menu.freq.128=128 MHz rpipico2w.menu.freq.128.build.f_cpu=128000000L rpipico2w.menu.freq.133=133 MHz rpipico2w.menu.freq.133.build.f_cpu=133000000L -rpipico2w.menu.freq.175=175 MHz (Overclock) -rpipico2w.menu.freq.175.build.f_cpu=175000000L +rpipico2w.menu.freq.176=176 MHz (Overclock) +rpipico2w.menu.freq.176.build.f_cpu=176000000L rpipico2w.menu.freq.200=200 MHz (Overclock) rpipico2w.menu.freq.200.build.f_cpu=200000000L rpipico2w.menu.freq.225=225 MHz (Overclock) @@ -967,8 +967,8 @@ rpipico2w.menu.freq.240=240 MHz (Overclock) rpipico2w.menu.freq.240.build.f_cpu=240000000L rpipico2w.menu.freq.250=250 MHz (Overclock) rpipico2w.menu.freq.250.build.f_cpu=250000000L -rpipico2w.menu.freq.275=275 MHz (Overclock) -rpipico2w.menu.freq.275.build.f_cpu=275000000L +rpipico2w.menu.freq.276=276 MHz (Overclock) +rpipico2w.menu.freq.276.build.f_cpu=276000000L rpipico2w.menu.freq.300=300 MHz (Overclock) rpipico2w.menu.freq.300.build.f_cpu=300000000L rpipico2w.menu.opt.Small=Small (-Os) (standard) @@ -996,7 +996,7 @@ rpipico2w.menu.rtti.Enabled.build.flags.rtti= rpipico2w.menu.stackprotect.Disabled=Disabled rpipico2w.menu.stackprotect.Disabled.build.flags.stackprotect= rpipico2w.menu.stackprotect.Enabled=Enabled -rpipico2w.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +rpipico2w.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all rpipico2w.menu.exceptions.Disabled=Disabled rpipico2w.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions rpipico2w.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -1035,6 +1035,110 @@ rpipico2w.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) rpipico2w.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" rpipico2w.menu.usbstack.nousb=No USB rpipico2w.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +rpipico2w.menu.wificountry.worldwide=Worldwide +rpipico2w.menu.wificountry.worldwide.build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE +rpipico2w.menu.wificountry.australia=Australia +rpipico2w.menu.wificountry.australia.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRALIA +rpipico2w.menu.wificountry.austria=Austria +rpipico2w.menu.wificountry.austria.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRIA +rpipico2w.menu.wificountry.belgium=Belgium +rpipico2w.menu.wificountry.belgium.build.wificc=-DWIFICC=CYW43_COUNTRY_BELGIUM +rpipico2w.menu.wificountry.brazil=Brazil +rpipico2w.menu.wificountry.brazil.build.wificc=-DWIFICC=CYW43_COUNTRY_BRAZIL +rpipico2w.menu.wificountry.canada=Canada +rpipico2w.menu.wificountry.canada.build.wificc=-DWIFICC=CYW43_COUNTRY_CANADA +rpipico2w.menu.wificountry.chile=Chile +rpipico2w.menu.wificountry.chile.build.wificc=-DWIFICC=CYW43_COUNTRY_CHILE +rpipico2w.menu.wificountry.china=China +rpipico2w.menu.wificountry.china.build.wificc=-DWIFICC=CYW43_COUNTRY_CHINA +rpipico2w.menu.wificountry.colombia=Colombia +rpipico2w.menu.wificountry.colombia.build.wificc=-DWIFICC=CYW43_COUNTRY_COLOMBIA +rpipico2w.menu.wificountry.czech_republic=Czech Republic +rpipico2w.menu.wificountry.czech_republic.build.wificc=-DWIFICC=CYW43_COUNTRY_CZECH_REPUBLIC +rpipico2w.menu.wificountry.denmark=Denmark +rpipico2w.menu.wificountry.denmark.build.wificc=-DWIFICC=CYW43_COUNTRY_DENMARK +rpipico2w.menu.wificountry.estonia=Estonia +rpipico2w.menu.wificountry.estonia.build.wificc=-DWIFICC=CYW43_COUNTRY_ESTONIA +rpipico2w.menu.wificountry.finland=Finland +rpipico2w.menu.wificountry.finland.build.wificc=-DWIFICC=CYW43_COUNTRY_FINLAND +rpipico2w.menu.wificountry.france=France +rpipico2w.menu.wificountry.france.build.wificc=-DWIFICC=CYW43_COUNTRY_FRANCE +rpipico2w.menu.wificountry.germany=Germany +rpipico2w.menu.wificountry.germany.build.wificc=-DWIFICC=CYW43_COUNTRY_GERMANY +rpipico2w.menu.wificountry.greece=Greece +rpipico2w.menu.wificountry.greece.build.wificc=-DWIFICC=CYW43_COUNTRY_GREECE +rpipico2w.menu.wificountry.hong_kong=Hong Kong +rpipico2w.menu.wificountry.hong_kong.build.wificc=-DWIFICC=CYW43_COUNTRY_HONG_KONG +rpipico2w.menu.wificountry.hungary=Hungary +rpipico2w.menu.wificountry.hungary.build.wificc=-DWIFICC=CYW43_COUNTRY_HUNGARY +rpipico2w.menu.wificountry.iceland=Iceland +rpipico2w.menu.wificountry.iceland.build.wificc=-DWIFICC=CYW43_COUNTRY_ICELAND +rpipico2w.menu.wificountry.india=India +rpipico2w.menu.wificountry.india.build.wificc=-DWIFICC=CYW43_COUNTRY_INDIA +rpipico2w.menu.wificountry.israel=Israel +rpipico2w.menu.wificountry.israel.build.wificc=-DWIFICC=CYW43_COUNTRY_ISRAEL +rpipico2w.menu.wificountry.italy=Italy +rpipico2w.menu.wificountry.italy.build.wificc=-DWIFICC=CYW43_COUNTRY_ITALY +rpipico2w.menu.wificountry.japan=Japan +rpipico2w.menu.wificountry.japan.build.wificc=-DWIFICC=CYW43_COUNTRY_JAPAN +rpipico2w.menu.wificountry.kenya=Kenya +rpipico2w.menu.wificountry.kenya.build.wificc=-DWIFICC=CYW43_COUNTRY_KENYA +rpipico2w.menu.wificountry.latvia=Latvia +rpipico2w.menu.wificountry.latvia.build.wificc=-DWIFICC=CYW43_COUNTRY_LATVIA +rpipico2w.menu.wificountry.liechtenstein=Liechtenstein +rpipico2w.menu.wificountry.liechtenstein.build.wificc=-DWIFICC=CYW43_COUNTRY_LIECHTENSTEIN +rpipico2w.menu.wificountry.lithuania=Lithuania +rpipico2w.menu.wificountry.lithuania.build.wificc=-DWIFICC=CYW43_COUNTRY_LITHUANIA +rpipico2w.menu.wificountry.luxembourg=Luxembourg +rpipico2w.menu.wificountry.luxembourg.build.wificc=-DWIFICC=CYW43_COUNTRY_LUXEMBOURG +rpipico2w.menu.wificountry.malaysia=Malaysia +rpipico2w.menu.wificountry.malaysia.build.wificc=-DWIFICC=CYW43_COUNTRY_MALAYSIA +rpipico2w.menu.wificountry.malta=Malta +rpipico2w.menu.wificountry.malta.build.wificc=-DWIFICC=CYW43_COUNTRY_MALTA +rpipico2w.menu.wificountry.mexico=Mexico +rpipico2w.menu.wificountry.mexico.build.wificc=-DWIFICC=CYW43_COUNTRY_MEXICO +rpipico2w.menu.wificountry.netherlands=Netherlands +rpipico2w.menu.wificountry.netherlands.build.wificc=-DWIFICC=CYW43_COUNTRY_NETHERLANDS +rpipico2w.menu.wificountry.new_zealand=New Zealand +rpipico2w.menu.wificountry.new_zealand.build.wificc=-DWIFICC=CYW43_COUNTRY_NEW_ZEALAND +rpipico2w.menu.wificountry.nigeria=Nigeria +rpipico2w.menu.wificountry.nigeria.build.wificc=-DWIFICC=CYW43_COUNTRY_NIGERIA +rpipico2w.menu.wificountry.norway=Norway +rpipico2w.menu.wificountry.norway.build.wificc=-DWIFICC=CYW43_COUNTRY_NORWAY +rpipico2w.menu.wificountry.peru=Peru +rpipico2w.menu.wificountry.peru.build.wificc=-DWIFICC=CYW43_COUNTRY_PERU +rpipico2w.menu.wificountry.philippines=Philippines +rpipico2w.menu.wificountry.philippines.build.wificc=-DWIFICC=CYW43_COUNTRY_PHILIPPINES +rpipico2w.menu.wificountry.poland=Poland +rpipico2w.menu.wificountry.poland.build.wificc=-DWIFICC=CYW43_COUNTRY_POLAND +rpipico2w.menu.wificountry.portugal=Portugal +rpipico2w.menu.wificountry.portugal.build.wificc=-DWIFICC=CYW43_COUNTRY_PORTUGAL +rpipico2w.menu.wificountry.singapore=Singapore +rpipico2w.menu.wificountry.singapore.build.wificc=-DWIFICC=CYW43_COUNTRY_SINGAPORE +rpipico2w.menu.wificountry.slovakia=Slovakia +rpipico2w.menu.wificountry.slovakia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVAKIA +rpipico2w.menu.wificountry.slovenia=Slovenia +rpipico2w.menu.wificountry.slovenia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVENIA +rpipico2w.menu.wificountry.south_africa=South Africa +rpipico2w.menu.wificountry.south_africa.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_AFRICA +rpipico2w.menu.wificountry.south_korea=South Korea +rpipico2w.menu.wificountry.south_korea.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_KOREA +rpipico2w.menu.wificountry.spain=Spain +rpipico2w.menu.wificountry.spain.build.wificc=-DWIFICC=CYW43_COUNTRY_SPAIN +rpipico2w.menu.wificountry.sweden=Sweden +rpipico2w.menu.wificountry.sweden.build.wificc=-DWIFICC=CYW43_COUNTRY_SWEDEN +rpipico2w.menu.wificountry.switzerland=Switzerland +rpipico2w.menu.wificountry.switzerland.build.wificc=-DWIFICC=CYW43_COUNTRY_SWITZERLAND +rpipico2w.menu.wificountry.taiwan=Taiwan +rpipico2w.menu.wificountry.taiwan.build.wificc=-DWIFICC=CYW43_COUNTRY_TAIWAN +rpipico2w.menu.wificountry.thailand=Thailand +rpipico2w.menu.wificountry.thailand.build.wificc=-DWIFICC=CYW43_COUNTRY_THAILAND +rpipico2w.menu.wificountry.turkey=Turkey +rpipico2w.menu.wificountry.turkey.build.wificc=-DWIFICC=CYW43_COUNTRY_TURKEY +rpipico2w.menu.wificountry.uk=UK +rpipico2w.menu.wificountry.uk.build.wificc=-DWIFICC=CYW43_COUNTRY_UK +rpipico2w.menu.wificountry.usa=USA +rpipico2w.menu.wificountry.usa.build.wificc=-DWIFICC=CYW43_COUNTRY_USA rpipico2w.menu.ipbtstack.ipv4only=IPv4 Only rpipico2w.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a rpipico2w.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 @@ -1251,8 +1355,8 @@ rpipico2w.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cm 0xcb_helios.menu.flash.16777216_15728640.build.eeprom_start=285208576 0xcb_helios.menu.flash.16777216_15728640.build.fs_start=269479936 0xcb_helios.menu.flash.16777216_15728640.build.fs_end=285208576 -0xcb_helios.menu.freq.133=133 MHz -0xcb_helios.menu.freq.133.build.f_cpu=133000000L +0xcb_helios.menu.freq.200=200 MHz +0xcb_helios.menu.freq.200.build.f_cpu=200000000L 0xcb_helios.menu.freq.50=50 MHz 0xcb_helios.menu.freq.50.build.f_cpu=50000000L 0xcb_helios.menu.freq.100=100 MHz @@ -1263,20 +1367,20 @@ rpipico2w.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cm 0xcb_helios.menu.freq.125.build.f_cpu=125000000L 0xcb_helios.menu.freq.128=128 MHz 0xcb_helios.menu.freq.128.build.f_cpu=128000000L -0xcb_helios.menu.freq.150=150 MHz (Overclock) +0xcb_helios.menu.freq.133=133 MHz +0xcb_helios.menu.freq.133.build.f_cpu=133000000L +0xcb_helios.menu.freq.150=150 MHz 0xcb_helios.menu.freq.150.build.f_cpu=150000000L -0xcb_helios.menu.freq.175=175 MHz (Overclock) -0xcb_helios.menu.freq.175.build.f_cpu=175000000L -0xcb_helios.menu.freq.200=200 MHz (Overclock) -0xcb_helios.menu.freq.200.build.f_cpu=200000000L +0xcb_helios.menu.freq.176=176 MHz +0xcb_helios.menu.freq.176.build.f_cpu=176000000L 0xcb_helios.menu.freq.225=225 MHz (Overclock) 0xcb_helios.menu.freq.225.build.f_cpu=225000000L 0xcb_helios.menu.freq.240=240 MHz (Overclock) 0xcb_helios.menu.freq.240.build.f_cpu=240000000L 0xcb_helios.menu.freq.250=250 MHz (Overclock) 0xcb_helios.menu.freq.250.build.f_cpu=250000000L -0xcb_helios.menu.freq.275=275 MHz (Overclock) -0xcb_helios.menu.freq.275.build.f_cpu=275000000L +0xcb_helios.menu.freq.276=276 MHz (Overclock) +0xcb_helios.menu.freq.276.build.f_cpu=276000000L 0xcb_helios.menu.freq.300=300 MHz (Overclock) 0xcb_helios.menu.freq.300.build.f_cpu=300000000L 0xcb_helios.menu.opt.Small=Small (-Os) (standard) @@ -1304,7 +1408,7 @@ rpipico2w.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cm 0xcb_helios.menu.stackprotect.Disabled=Disabled 0xcb_helios.menu.stackprotect.Disabled.build.flags.stackprotect= 0xcb_helios.menu.stackprotect.Enabled=Enabled -0xcb_helios.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +0xcb_helios.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all 0xcb_helios.menu.exceptions.Disabled=Disabled 0xcb_helios.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions 0xcb_helios.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -1515,8 +1619,8 @@ adafruit_feather.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_feather.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather.menu.freq.133=133 MHz -adafruit_feather.menu.freq.133.build.f_cpu=133000000L +adafruit_feather.menu.freq.200=200 MHz +adafruit_feather.menu.freq.200.build.f_cpu=200000000L adafruit_feather.menu.freq.50=50 MHz adafruit_feather.menu.freq.50.build.f_cpu=50000000L adafruit_feather.menu.freq.100=100 MHz @@ -1527,20 +1631,20 @@ adafruit_feather.menu.freq.125=125 MHz adafruit_feather.menu.freq.125.build.f_cpu=125000000L adafruit_feather.menu.freq.128=128 MHz adafruit_feather.menu.freq.128.build.f_cpu=128000000L -adafruit_feather.menu.freq.150=150 MHz (Overclock) +adafruit_feather.menu.freq.133=133 MHz +adafruit_feather.menu.freq.133.build.f_cpu=133000000L +adafruit_feather.menu.freq.150=150 MHz adafruit_feather.menu.freq.150.build.f_cpu=150000000L -adafruit_feather.menu.freq.175=175 MHz (Overclock) -adafruit_feather.menu.freq.175.build.f_cpu=175000000L -adafruit_feather.menu.freq.200=200 MHz (Overclock) -adafruit_feather.menu.freq.200.build.f_cpu=200000000L +adafruit_feather.menu.freq.176=176 MHz +adafruit_feather.menu.freq.176.build.f_cpu=176000000L adafruit_feather.menu.freq.225=225 MHz (Overclock) adafruit_feather.menu.freq.225.build.f_cpu=225000000L adafruit_feather.menu.freq.240=240 MHz (Overclock) adafruit_feather.menu.freq.240.build.f_cpu=240000000L adafruit_feather.menu.freq.250=250 MHz (Overclock) adafruit_feather.menu.freq.250.build.f_cpu=250000000L -adafruit_feather.menu.freq.275=275 MHz (Overclock) -adafruit_feather.menu.freq.275.build.f_cpu=275000000L +adafruit_feather.menu.freq.276=276 MHz (Overclock) +adafruit_feather.menu.freq.276.build.f_cpu=276000000L adafruit_feather.menu.freq.300=300 MHz (Overclock) adafruit_feather.menu.freq.300.build.f_cpu=300000000L adafruit_feather.menu.opt.Small=Small (-Os) (standard) @@ -1568,7 +1672,7 @@ adafruit_feather.menu.rtti.Enabled.build.flags.rtti= adafruit_feather.menu.stackprotect.Disabled=Disabled adafruit_feather.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather.menu.stackprotect.Enabled=Enabled -adafruit_feather.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather.menu.exceptions.Disabled=Disabled adafruit_feather.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -1771,8 +1875,8 @@ adafruit_feather_scorpio.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_feather_scorpio.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather_scorpio.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather_scorpio.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather_scorpio.menu.freq.133=133 MHz -adafruit_feather_scorpio.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_scorpio.menu.freq.200=200 MHz +adafruit_feather_scorpio.menu.freq.200.build.f_cpu=200000000L adafruit_feather_scorpio.menu.freq.50=50 MHz adafruit_feather_scorpio.menu.freq.50.build.f_cpu=50000000L adafruit_feather_scorpio.menu.freq.100=100 MHz @@ -1783,20 +1887,20 @@ adafruit_feather_scorpio.menu.freq.125=125 MHz adafruit_feather_scorpio.menu.freq.125.build.f_cpu=125000000L adafruit_feather_scorpio.menu.freq.128=128 MHz adafruit_feather_scorpio.menu.freq.128.build.f_cpu=128000000L -adafruit_feather_scorpio.menu.freq.150=150 MHz (Overclock) +adafruit_feather_scorpio.menu.freq.133=133 MHz +adafruit_feather_scorpio.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_scorpio.menu.freq.150=150 MHz adafruit_feather_scorpio.menu.freq.150.build.f_cpu=150000000L -adafruit_feather_scorpio.menu.freq.175=175 MHz (Overclock) -adafruit_feather_scorpio.menu.freq.175.build.f_cpu=175000000L -adafruit_feather_scorpio.menu.freq.200=200 MHz (Overclock) -adafruit_feather_scorpio.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_scorpio.menu.freq.176=176 MHz +adafruit_feather_scorpio.menu.freq.176.build.f_cpu=176000000L adafruit_feather_scorpio.menu.freq.225=225 MHz (Overclock) adafruit_feather_scorpio.menu.freq.225.build.f_cpu=225000000L adafruit_feather_scorpio.menu.freq.240=240 MHz (Overclock) adafruit_feather_scorpio.menu.freq.240.build.f_cpu=240000000L adafruit_feather_scorpio.menu.freq.250=250 MHz (Overclock) adafruit_feather_scorpio.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_scorpio.menu.freq.275=275 MHz (Overclock) -adafruit_feather_scorpio.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_scorpio.menu.freq.276=276 MHz (Overclock) +adafruit_feather_scorpio.menu.freq.276.build.f_cpu=276000000L adafruit_feather_scorpio.menu.freq.300=300 MHz (Overclock) adafruit_feather_scorpio.menu.freq.300.build.f_cpu=300000000L adafruit_feather_scorpio.menu.opt.Small=Small (-Os) (standard) @@ -1824,7 +1928,7 @@ adafruit_feather_scorpio.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_scorpio.menu.stackprotect.Disabled=Disabled adafruit_feather_scorpio.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_scorpio.menu.stackprotect.Enabled=Enabled -adafruit_feather_scorpio.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_scorpio.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_scorpio.menu.exceptions.Disabled=Disabled adafruit_feather_scorpio.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_scorpio.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -2031,8 +2135,8 @@ adafruit_feather_dvi.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_feather_dvi.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather_dvi.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather_dvi.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather_dvi.menu.freq.133=133 MHz -adafruit_feather_dvi.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_dvi.menu.freq.200=200 MHz +adafruit_feather_dvi.menu.freq.200.build.f_cpu=200000000L adafruit_feather_dvi.menu.freq.50=50 MHz adafruit_feather_dvi.menu.freq.50.build.f_cpu=50000000L adafruit_feather_dvi.menu.freq.100=100 MHz @@ -2043,20 +2147,20 @@ adafruit_feather_dvi.menu.freq.125=125 MHz adafruit_feather_dvi.menu.freq.125.build.f_cpu=125000000L adafruit_feather_dvi.menu.freq.128=128 MHz adafruit_feather_dvi.menu.freq.128.build.f_cpu=128000000L -adafruit_feather_dvi.menu.freq.150=150 MHz (Overclock) +adafruit_feather_dvi.menu.freq.133=133 MHz +adafruit_feather_dvi.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_dvi.menu.freq.150=150 MHz adafruit_feather_dvi.menu.freq.150.build.f_cpu=150000000L -adafruit_feather_dvi.menu.freq.175=175 MHz (Overclock) -adafruit_feather_dvi.menu.freq.175.build.f_cpu=175000000L -adafruit_feather_dvi.menu.freq.200=200 MHz (Overclock) -adafruit_feather_dvi.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_dvi.menu.freq.176=176 MHz +adafruit_feather_dvi.menu.freq.176.build.f_cpu=176000000L adafruit_feather_dvi.menu.freq.225=225 MHz (Overclock) adafruit_feather_dvi.menu.freq.225.build.f_cpu=225000000L adafruit_feather_dvi.menu.freq.240=240 MHz (Overclock) adafruit_feather_dvi.menu.freq.240.build.f_cpu=240000000L adafruit_feather_dvi.menu.freq.250=250 MHz (Overclock) adafruit_feather_dvi.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_dvi.menu.freq.275=275 MHz (Overclock) -adafruit_feather_dvi.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_dvi.menu.freq.276=276 MHz (Overclock) +adafruit_feather_dvi.menu.freq.276.build.f_cpu=276000000L adafruit_feather_dvi.menu.freq.300=300 MHz (Overclock) adafruit_feather_dvi.menu.freq.300.build.f_cpu=300000000L adafruit_feather_dvi.menu.opt.Small=Small (-Os) (standard) @@ -2084,7 +2188,7 @@ adafruit_feather_dvi.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_dvi.menu.stackprotect.Disabled=Disabled adafruit_feather_dvi.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_dvi.menu.stackprotect.Enabled=Enabled -adafruit_feather_dvi.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_dvi.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_dvi.menu.exceptions.Disabled=Disabled adafruit_feather_dvi.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_dvi.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -2291,8 +2395,8 @@ adafruit_feather_adalogger.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_feather_adalogger.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather_adalogger.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather_adalogger.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather_adalogger.menu.freq.133=133 MHz -adafruit_feather_adalogger.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_adalogger.menu.freq.200=200 MHz +adafruit_feather_adalogger.menu.freq.200.build.f_cpu=200000000L adafruit_feather_adalogger.menu.freq.50=50 MHz adafruit_feather_adalogger.menu.freq.50.build.f_cpu=50000000L adafruit_feather_adalogger.menu.freq.100=100 MHz @@ -2303,20 +2407,20 @@ adafruit_feather_adalogger.menu.freq.125=125 MHz adafruit_feather_adalogger.menu.freq.125.build.f_cpu=125000000L adafruit_feather_adalogger.menu.freq.128=128 MHz adafruit_feather_adalogger.menu.freq.128.build.f_cpu=128000000L -adafruit_feather_adalogger.menu.freq.150=150 MHz (Overclock) +adafruit_feather_adalogger.menu.freq.133=133 MHz +adafruit_feather_adalogger.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_adalogger.menu.freq.150=150 MHz adafruit_feather_adalogger.menu.freq.150.build.f_cpu=150000000L -adafruit_feather_adalogger.menu.freq.175=175 MHz (Overclock) -adafruit_feather_adalogger.menu.freq.175.build.f_cpu=175000000L -adafruit_feather_adalogger.menu.freq.200=200 MHz (Overclock) -adafruit_feather_adalogger.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_adalogger.menu.freq.176=176 MHz +adafruit_feather_adalogger.menu.freq.176.build.f_cpu=176000000L adafruit_feather_adalogger.menu.freq.225=225 MHz (Overclock) adafruit_feather_adalogger.menu.freq.225.build.f_cpu=225000000L adafruit_feather_adalogger.menu.freq.240=240 MHz (Overclock) adafruit_feather_adalogger.menu.freq.240.build.f_cpu=240000000L adafruit_feather_adalogger.menu.freq.250=250 MHz (Overclock) adafruit_feather_adalogger.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_adalogger.menu.freq.275=275 MHz (Overclock) -adafruit_feather_adalogger.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_adalogger.menu.freq.276=276 MHz (Overclock) +adafruit_feather_adalogger.menu.freq.276.build.f_cpu=276000000L adafruit_feather_adalogger.menu.freq.300=300 MHz (Overclock) adafruit_feather_adalogger.menu.freq.300.build.f_cpu=300000000L adafruit_feather_adalogger.menu.opt.Small=Small (-Os) (standard) @@ -2344,7 +2448,7 @@ adafruit_feather_adalogger.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_adalogger.menu.stackprotect.Disabled=Disabled adafruit_feather_adalogger.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_adalogger.menu.stackprotect.Enabled=Enabled -adafruit_feather_adalogger.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_adalogger.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_adalogger.menu.exceptions.Disabled=Disabled adafruit_feather_adalogger.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_adalogger.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -2551,8 +2655,8 @@ adafruit_feather_rfm.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_feather_rfm.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather_rfm.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather_rfm.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather_rfm.menu.freq.133=133 MHz -adafruit_feather_rfm.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_rfm.menu.freq.200=200 MHz +adafruit_feather_rfm.menu.freq.200.build.f_cpu=200000000L adafruit_feather_rfm.menu.freq.50=50 MHz adafruit_feather_rfm.menu.freq.50.build.f_cpu=50000000L adafruit_feather_rfm.menu.freq.100=100 MHz @@ -2563,20 +2667,20 @@ adafruit_feather_rfm.menu.freq.125=125 MHz adafruit_feather_rfm.menu.freq.125.build.f_cpu=125000000L adafruit_feather_rfm.menu.freq.128=128 MHz adafruit_feather_rfm.menu.freq.128.build.f_cpu=128000000L -adafruit_feather_rfm.menu.freq.150=150 MHz (Overclock) +adafruit_feather_rfm.menu.freq.133=133 MHz +adafruit_feather_rfm.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_rfm.menu.freq.150=150 MHz adafruit_feather_rfm.menu.freq.150.build.f_cpu=150000000L -adafruit_feather_rfm.menu.freq.175=175 MHz (Overclock) -adafruit_feather_rfm.menu.freq.175.build.f_cpu=175000000L -adafruit_feather_rfm.menu.freq.200=200 MHz (Overclock) -adafruit_feather_rfm.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_rfm.menu.freq.176=176 MHz +adafruit_feather_rfm.menu.freq.176.build.f_cpu=176000000L adafruit_feather_rfm.menu.freq.225=225 MHz (Overclock) adafruit_feather_rfm.menu.freq.225.build.f_cpu=225000000L adafruit_feather_rfm.menu.freq.240=240 MHz (Overclock) adafruit_feather_rfm.menu.freq.240.build.f_cpu=240000000L adafruit_feather_rfm.menu.freq.250=250 MHz (Overclock) adafruit_feather_rfm.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_rfm.menu.freq.275=275 MHz (Overclock) -adafruit_feather_rfm.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_rfm.menu.freq.276=276 MHz (Overclock) +adafruit_feather_rfm.menu.freq.276.build.f_cpu=276000000L adafruit_feather_rfm.menu.freq.300=300 MHz (Overclock) adafruit_feather_rfm.menu.freq.300.build.f_cpu=300000000L adafruit_feather_rfm.menu.opt.Small=Small (-Os) (standard) @@ -2604,7 +2708,7 @@ adafruit_feather_rfm.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_rfm.menu.stackprotect.Disabled=Disabled adafruit_feather_rfm.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_rfm.menu.stackprotect.Enabled=Enabled -adafruit_feather_rfm.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_rfm.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_rfm.menu.exceptions.Disabled=Disabled adafruit_feather_rfm.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_rfm.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -2811,8 +2915,8 @@ adafruit_feather_thinkink.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_feather_thinkink.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather_thinkink.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather_thinkink.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather_thinkink.menu.freq.133=133 MHz -adafruit_feather_thinkink.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_thinkink.menu.freq.200=200 MHz +adafruit_feather_thinkink.menu.freq.200.build.f_cpu=200000000L adafruit_feather_thinkink.menu.freq.50=50 MHz adafruit_feather_thinkink.menu.freq.50.build.f_cpu=50000000L adafruit_feather_thinkink.menu.freq.100=100 MHz @@ -2823,20 +2927,20 @@ adafruit_feather_thinkink.menu.freq.125=125 MHz adafruit_feather_thinkink.menu.freq.125.build.f_cpu=125000000L adafruit_feather_thinkink.menu.freq.128=128 MHz adafruit_feather_thinkink.menu.freq.128.build.f_cpu=128000000L -adafruit_feather_thinkink.menu.freq.150=150 MHz (Overclock) +adafruit_feather_thinkink.menu.freq.133=133 MHz +adafruit_feather_thinkink.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_thinkink.menu.freq.150=150 MHz adafruit_feather_thinkink.menu.freq.150.build.f_cpu=150000000L -adafruit_feather_thinkink.menu.freq.175=175 MHz (Overclock) -adafruit_feather_thinkink.menu.freq.175.build.f_cpu=175000000L -adafruit_feather_thinkink.menu.freq.200=200 MHz (Overclock) -adafruit_feather_thinkink.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_thinkink.menu.freq.176=176 MHz +adafruit_feather_thinkink.menu.freq.176.build.f_cpu=176000000L adafruit_feather_thinkink.menu.freq.225=225 MHz (Overclock) adafruit_feather_thinkink.menu.freq.225.build.f_cpu=225000000L adafruit_feather_thinkink.menu.freq.240=240 MHz (Overclock) adafruit_feather_thinkink.menu.freq.240.build.f_cpu=240000000L adafruit_feather_thinkink.menu.freq.250=250 MHz (Overclock) adafruit_feather_thinkink.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_thinkink.menu.freq.275=275 MHz (Overclock) -adafruit_feather_thinkink.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_thinkink.menu.freq.276=276 MHz (Overclock) +adafruit_feather_thinkink.menu.freq.276.build.f_cpu=276000000L adafruit_feather_thinkink.menu.freq.300=300 MHz (Overclock) adafruit_feather_thinkink.menu.freq.300.build.f_cpu=300000000L adafruit_feather_thinkink.menu.opt.Small=Small (-Os) (standard) @@ -2864,7 +2968,7 @@ adafruit_feather_thinkink.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_thinkink.menu.stackprotect.Disabled=Disabled adafruit_feather_thinkink.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_thinkink.menu.stackprotect.Enabled=Enabled -adafruit_feather_thinkink.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_thinkink.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_thinkink.menu.exceptions.Disabled=Disabled adafruit_feather_thinkink.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_thinkink.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -3071,8 +3175,8 @@ adafruit_feather_usb_host.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_feather_usb_host.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather_usb_host.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather_usb_host.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather_usb_host.menu.freq.133=133 MHz -adafruit_feather_usb_host.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_usb_host.menu.freq.200=200 MHz +adafruit_feather_usb_host.menu.freq.200.build.f_cpu=200000000L adafruit_feather_usb_host.menu.freq.50=50 MHz adafruit_feather_usb_host.menu.freq.50.build.f_cpu=50000000L adafruit_feather_usb_host.menu.freq.100=100 MHz @@ -3083,20 +3187,20 @@ adafruit_feather_usb_host.menu.freq.125=125 MHz adafruit_feather_usb_host.menu.freq.125.build.f_cpu=125000000L adafruit_feather_usb_host.menu.freq.128=128 MHz adafruit_feather_usb_host.menu.freq.128.build.f_cpu=128000000L -adafruit_feather_usb_host.menu.freq.150=150 MHz (Overclock) +adafruit_feather_usb_host.menu.freq.133=133 MHz +adafruit_feather_usb_host.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_usb_host.menu.freq.150=150 MHz adafruit_feather_usb_host.menu.freq.150.build.f_cpu=150000000L -adafruit_feather_usb_host.menu.freq.175=175 MHz (Overclock) -adafruit_feather_usb_host.menu.freq.175.build.f_cpu=175000000L -adafruit_feather_usb_host.menu.freq.200=200 MHz (Overclock) -adafruit_feather_usb_host.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_usb_host.menu.freq.176=176 MHz +adafruit_feather_usb_host.menu.freq.176.build.f_cpu=176000000L adafruit_feather_usb_host.menu.freq.225=225 MHz (Overclock) adafruit_feather_usb_host.menu.freq.225.build.f_cpu=225000000L adafruit_feather_usb_host.menu.freq.240=240 MHz (Overclock) adafruit_feather_usb_host.menu.freq.240.build.f_cpu=240000000L adafruit_feather_usb_host.menu.freq.250=250 MHz (Overclock) adafruit_feather_usb_host.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_usb_host.menu.freq.275=275 MHz (Overclock) -adafruit_feather_usb_host.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_usb_host.menu.freq.276=276 MHz (Overclock) +adafruit_feather_usb_host.menu.freq.276.build.f_cpu=276000000L adafruit_feather_usb_host.menu.freq.300=300 MHz (Overclock) adafruit_feather_usb_host.menu.freq.300.build.f_cpu=300000000L adafruit_feather_usb_host.menu.opt.Small=Small (-Os) (standard) @@ -3124,7 +3228,7 @@ adafruit_feather_usb_host.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_usb_host.menu.stackprotect.Disabled=Disabled adafruit_feather_usb_host.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_usb_host.menu.stackprotect.Enabled=Enabled -adafruit_feather_usb_host.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_usb_host.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_usb_host.menu.exceptions.Disabled=Disabled adafruit_feather_usb_host.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_usb_host.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -3331,8 +3435,8 @@ adafruit_feather_can.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_feather_can.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather_can.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather_can.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather_can.menu.freq.133=133 MHz -adafruit_feather_can.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_can.menu.freq.200=200 MHz +adafruit_feather_can.menu.freq.200.build.f_cpu=200000000L adafruit_feather_can.menu.freq.50=50 MHz adafruit_feather_can.menu.freq.50.build.f_cpu=50000000L adafruit_feather_can.menu.freq.100=100 MHz @@ -3343,20 +3447,20 @@ adafruit_feather_can.menu.freq.125=125 MHz adafruit_feather_can.menu.freq.125.build.f_cpu=125000000L adafruit_feather_can.menu.freq.128=128 MHz adafruit_feather_can.menu.freq.128.build.f_cpu=128000000L -adafruit_feather_can.menu.freq.150=150 MHz (Overclock) +adafruit_feather_can.menu.freq.133=133 MHz +adafruit_feather_can.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_can.menu.freq.150=150 MHz adafruit_feather_can.menu.freq.150.build.f_cpu=150000000L -adafruit_feather_can.menu.freq.175=175 MHz (Overclock) -adafruit_feather_can.menu.freq.175.build.f_cpu=175000000L -adafruit_feather_can.menu.freq.200=200 MHz (Overclock) -adafruit_feather_can.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_can.menu.freq.176=176 MHz +adafruit_feather_can.menu.freq.176.build.f_cpu=176000000L adafruit_feather_can.menu.freq.225=225 MHz (Overclock) adafruit_feather_can.menu.freq.225.build.f_cpu=225000000L adafruit_feather_can.menu.freq.240=240 MHz (Overclock) adafruit_feather_can.menu.freq.240.build.f_cpu=240000000L adafruit_feather_can.menu.freq.250=250 MHz (Overclock) adafruit_feather_can.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_can.menu.freq.275=275 MHz (Overclock) -adafruit_feather_can.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_can.menu.freq.276=276 MHz (Overclock) +adafruit_feather_can.menu.freq.276.build.f_cpu=276000000L adafruit_feather_can.menu.freq.300=300 MHz (Overclock) adafruit_feather_can.menu.freq.300.build.f_cpu=300000000L adafruit_feather_can.menu.opt.Small=Small (-Os) (standard) @@ -3384,7 +3488,7 @@ adafruit_feather_can.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_can.menu.stackprotect.Disabled=Disabled adafruit_feather_can.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_can.menu.stackprotect.Enabled=Enabled -adafruit_feather_can.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_can.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_can.menu.exceptions.Disabled=Disabled adafruit_feather_can.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_can.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -3591,8 +3695,8 @@ adafruit_feather_prop_maker.menu.flash.8388608_7340032.build.flash_length=104448 adafruit_feather_prop_maker.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_feather_prop_maker.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_feather_prop_maker.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_feather_prop_maker.menu.freq.133=133 MHz -adafruit_feather_prop_maker.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_prop_maker.menu.freq.200=200 MHz +adafruit_feather_prop_maker.menu.freq.200.build.f_cpu=200000000L adafruit_feather_prop_maker.menu.freq.50=50 MHz adafruit_feather_prop_maker.menu.freq.50.build.f_cpu=50000000L adafruit_feather_prop_maker.menu.freq.100=100 MHz @@ -3603,20 +3707,20 @@ adafruit_feather_prop_maker.menu.freq.125=125 MHz adafruit_feather_prop_maker.menu.freq.125.build.f_cpu=125000000L adafruit_feather_prop_maker.menu.freq.128=128 MHz adafruit_feather_prop_maker.menu.freq.128.build.f_cpu=128000000L -adafruit_feather_prop_maker.menu.freq.150=150 MHz (Overclock) +adafruit_feather_prop_maker.menu.freq.133=133 MHz +adafruit_feather_prop_maker.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_prop_maker.menu.freq.150=150 MHz adafruit_feather_prop_maker.menu.freq.150.build.f_cpu=150000000L -adafruit_feather_prop_maker.menu.freq.175=175 MHz (Overclock) -adafruit_feather_prop_maker.menu.freq.175.build.f_cpu=175000000L -adafruit_feather_prop_maker.menu.freq.200=200 MHz (Overclock) -adafruit_feather_prop_maker.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_prop_maker.menu.freq.176=176 MHz +adafruit_feather_prop_maker.menu.freq.176.build.f_cpu=176000000L adafruit_feather_prop_maker.menu.freq.225=225 MHz (Overclock) adafruit_feather_prop_maker.menu.freq.225.build.f_cpu=225000000L adafruit_feather_prop_maker.menu.freq.240=240 MHz (Overclock) adafruit_feather_prop_maker.menu.freq.240.build.f_cpu=240000000L adafruit_feather_prop_maker.menu.freq.250=250 MHz (Overclock) adafruit_feather_prop_maker.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_prop_maker.menu.freq.275=275 MHz (Overclock) -adafruit_feather_prop_maker.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_prop_maker.menu.freq.276=276 MHz (Overclock) +adafruit_feather_prop_maker.menu.freq.276.build.f_cpu=276000000L adafruit_feather_prop_maker.menu.freq.300=300 MHz (Overclock) adafruit_feather_prop_maker.menu.freq.300.build.f_cpu=300000000L adafruit_feather_prop_maker.menu.opt.Small=Small (-Os) (standard) @@ -3644,7 +3748,7 @@ adafruit_feather_prop_maker.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_prop_maker.menu.stackprotect.Disabled=Disabled adafruit_feather_prop_maker.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_prop_maker.menu.stackprotect.Enabled=Enabled -adafruit_feather_prop_maker.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_prop_maker.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_prop_maker.menu.exceptions.Disabled=Disabled adafruit_feather_prop_maker.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_prop_maker.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -3859,8 +3963,8 @@ adafruit_itsybitsy.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_itsybitsy.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_itsybitsy.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_itsybitsy.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_itsybitsy.menu.freq.133=133 MHz -adafruit_itsybitsy.menu.freq.133.build.f_cpu=133000000L +adafruit_itsybitsy.menu.freq.200=200 MHz +adafruit_itsybitsy.menu.freq.200.build.f_cpu=200000000L adafruit_itsybitsy.menu.freq.50=50 MHz adafruit_itsybitsy.menu.freq.50.build.f_cpu=50000000L adafruit_itsybitsy.menu.freq.100=100 MHz @@ -3871,20 +3975,20 @@ adafruit_itsybitsy.menu.freq.125=125 MHz adafruit_itsybitsy.menu.freq.125.build.f_cpu=125000000L adafruit_itsybitsy.menu.freq.128=128 MHz adafruit_itsybitsy.menu.freq.128.build.f_cpu=128000000L -adafruit_itsybitsy.menu.freq.150=150 MHz (Overclock) +adafruit_itsybitsy.menu.freq.133=133 MHz +adafruit_itsybitsy.menu.freq.133.build.f_cpu=133000000L +adafruit_itsybitsy.menu.freq.150=150 MHz adafruit_itsybitsy.menu.freq.150.build.f_cpu=150000000L -adafruit_itsybitsy.menu.freq.175=175 MHz (Overclock) -adafruit_itsybitsy.menu.freq.175.build.f_cpu=175000000L -adafruit_itsybitsy.menu.freq.200=200 MHz (Overclock) -adafruit_itsybitsy.menu.freq.200.build.f_cpu=200000000L +adafruit_itsybitsy.menu.freq.176=176 MHz +adafruit_itsybitsy.menu.freq.176.build.f_cpu=176000000L adafruit_itsybitsy.menu.freq.225=225 MHz (Overclock) adafruit_itsybitsy.menu.freq.225.build.f_cpu=225000000L adafruit_itsybitsy.menu.freq.240=240 MHz (Overclock) adafruit_itsybitsy.menu.freq.240.build.f_cpu=240000000L adafruit_itsybitsy.menu.freq.250=250 MHz (Overclock) adafruit_itsybitsy.menu.freq.250.build.f_cpu=250000000L -adafruit_itsybitsy.menu.freq.275=275 MHz (Overclock) -adafruit_itsybitsy.menu.freq.275.build.f_cpu=275000000L +adafruit_itsybitsy.menu.freq.276=276 MHz (Overclock) +adafruit_itsybitsy.menu.freq.276.build.f_cpu=276000000L adafruit_itsybitsy.menu.freq.300=300 MHz (Overclock) adafruit_itsybitsy.menu.freq.300.build.f_cpu=300000000L adafruit_itsybitsy.menu.opt.Small=Small (-Os) (standard) @@ -3912,7 +4016,7 @@ adafruit_itsybitsy.menu.rtti.Enabled.build.flags.rtti= adafruit_itsybitsy.menu.stackprotect.Disabled=Disabled adafruit_itsybitsy.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_itsybitsy.menu.stackprotect.Enabled=Enabled -adafruit_itsybitsy.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_itsybitsy.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_itsybitsy.menu.exceptions.Disabled=Disabled adafruit_itsybitsy.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_itsybitsy.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -4175,8 +4279,8 @@ adafruit_metro.menu.flash.16777216_15728640.build.flash_length=1044480 adafruit_metro.menu.flash.16777216_15728640.build.eeprom_start=285208576 adafruit_metro.menu.flash.16777216_15728640.build.fs_start=269479936 adafruit_metro.menu.flash.16777216_15728640.build.fs_end=285208576 -adafruit_metro.menu.freq.133=133 MHz -adafruit_metro.menu.freq.133.build.f_cpu=133000000L +adafruit_metro.menu.freq.200=200 MHz +adafruit_metro.menu.freq.200.build.f_cpu=200000000L adafruit_metro.menu.freq.50=50 MHz adafruit_metro.menu.freq.50.build.f_cpu=50000000L adafruit_metro.menu.freq.100=100 MHz @@ -4187,20 +4291,20 @@ adafruit_metro.menu.freq.125=125 MHz adafruit_metro.menu.freq.125.build.f_cpu=125000000L adafruit_metro.menu.freq.128=128 MHz adafruit_metro.menu.freq.128.build.f_cpu=128000000L -adafruit_metro.menu.freq.150=150 MHz (Overclock) +adafruit_metro.menu.freq.133=133 MHz +adafruit_metro.menu.freq.133.build.f_cpu=133000000L +adafruit_metro.menu.freq.150=150 MHz adafruit_metro.menu.freq.150.build.f_cpu=150000000L -adafruit_metro.menu.freq.175=175 MHz (Overclock) -adafruit_metro.menu.freq.175.build.f_cpu=175000000L -adafruit_metro.menu.freq.200=200 MHz (Overclock) -adafruit_metro.menu.freq.200.build.f_cpu=200000000L +adafruit_metro.menu.freq.176=176 MHz +adafruit_metro.menu.freq.176.build.f_cpu=176000000L adafruit_metro.menu.freq.225=225 MHz (Overclock) adafruit_metro.menu.freq.225.build.f_cpu=225000000L adafruit_metro.menu.freq.240=240 MHz (Overclock) adafruit_metro.menu.freq.240.build.f_cpu=240000000L adafruit_metro.menu.freq.250=250 MHz (Overclock) adafruit_metro.menu.freq.250.build.f_cpu=250000000L -adafruit_metro.menu.freq.275=275 MHz (Overclock) -adafruit_metro.menu.freq.275.build.f_cpu=275000000L +adafruit_metro.menu.freq.276=276 MHz (Overclock) +adafruit_metro.menu.freq.276.build.f_cpu=276000000L adafruit_metro.menu.freq.300=300 MHz (Overclock) adafruit_metro.menu.freq.300.build.f_cpu=300000000L adafruit_metro.menu.opt.Small=Small (-Os) (standard) @@ -4228,7 +4332,7 @@ adafruit_metro.menu.rtti.Enabled.build.flags.rtti= adafruit_metro.menu.stackprotect.Disabled=Disabled adafruit_metro.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_metro.menu.stackprotect.Enabled=Enabled -adafruit_metro.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_metro.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_metro.menu.exceptions.Disabled=Disabled adafruit_metro.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_metro.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -4443,8 +4547,8 @@ adafruit_qtpy.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_qtpy.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_qtpy.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_qtpy.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_qtpy.menu.freq.133=133 MHz -adafruit_qtpy.menu.freq.133.build.f_cpu=133000000L +adafruit_qtpy.menu.freq.200=200 MHz +adafruit_qtpy.menu.freq.200.build.f_cpu=200000000L adafruit_qtpy.menu.freq.50=50 MHz adafruit_qtpy.menu.freq.50.build.f_cpu=50000000L adafruit_qtpy.menu.freq.100=100 MHz @@ -4455,20 +4559,20 @@ adafruit_qtpy.menu.freq.125=125 MHz adafruit_qtpy.menu.freq.125.build.f_cpu=125000000L adafruit_qtpy.menu.freq.128=128 MHz adafruit_qtpy.menu.freq.128.build.f_cpu=128000000L -adafruit_qtpy.menu.freq.150=150 MHz (Overclock) +adafruit_qtpy.menu.freq.133=133 MHz +adafruit_qtpy.menu.freq.133.build.f_cpu=133000000L +adafruit_qtpy.menu.freq.150=150 MHz adafruit_qtpy.menu.freq.150.build.f_cpu=150000000L -adafruit_qtpy.menu.freq.175=175 MHz (Overclock) -adafruit_qtpy.menu.freq.175.build.f_cpu=175000000L -adafruit_qtpy.menu.freq.200=200 MHz (Overclock) -adafruit_qtpy.menu.freq.200.build.f_cpu=200000000L +adafruit_qtpy.menu.freq.176=176 MHz +adafruit_qtpy.menu.freq.176.build.f_cpu=176000000L adafruit_qtpy.menu.freq.225=225 MHz (Overclock) adafruit_qtpy.menu.freq.225.build.f_cpu=225000000L adafruit_qtpy.menu.freq.240=240 MHz (Overclock) adafruit_qtpy.menu.freq.240.build.f_cpu=240000000L adafruit_qtpy.menu.freq.250=250 MHz (Overclock) adafruit_qtpy.menu.freq.250.build.f_cpu=250000000L -adafruit_qtpy.menu.freq.275=275 MHz (Overclock) -adafruit_qtpy.menu.freq.275.build.f_cpu=275000000L +adafruit_qtpy.menu.freq.276=276 MHz (Overclock) +adafruit_qtpy.menu.freq.276.build.f_cpu=276000000L adafruit_qtpy.menu.freq.300=300 MHz (Overclock) adafruit_qtpy.menu.freq.300.build.f_cpu=300000000L adafruit_qtpy.menu.opt.Small=Small (-Os) (standard) @@ -4496,7 +4600,7 @@ adafruit_qtpy.menu.rtti.Enabled.build.flags.rtti= adafruit_qtpy.menu.stackprotect.Disabled=Disabled adafruit_qtpy.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_qtpy.menu.stackprotect.Enabled=Enabled -adafruit_qtpy.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_qtpy.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_qtpy.menu.exceptions.Disabled=Disabled adafruit_qtpy.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_qtpy.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -4711,8 +4815,8 @@ adafruit_stemmafriend.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_stemmafriend.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_stemmafriend.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_stemmafriend.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_stemmafriend.menu.freq.133=133 MHz -adafruit_stemmafriend.menu.freq.133.build.f_cpu=133000000L +adafruit_stemmafriend.menu.freq.200=200 MHz +adafruit_stemmafriend.menu.freq.200.build.f_cpu=200000000L adafruit_stemmafriend.menu.freq.50=50 MHz adafruit_stemmafriend.menu.freq.50.build.f_cpu=50000000L adafruit_stemmafriend.menu.freq.100=100 MHz @@ -4723,20 +4827,20 @@ adafruit_stemmafriend.menu.freq.125=125 MHz adafruit_stemmafriend.menu.freq.125.build.f_cpu=125000000L adafruit_stemmafriend.menu.freq.128=128 MHz adafruit_stemmafriend.menu.freq.128.build.f_cpu=128000000L -adafruit_stemmafriend.menu.freq.150=150 MHz (Overclock) +adafruit_stemmafriend.menu.freq.133=133 MHz +adafruit_stemmafriend.menu.freq.133.build.f_cpu=133000000L +adafruit_stemmafriend.menu.freq.150=150 MHz adafruit_stemmafriend.menu.freq.150.build.f_cpu=150000000L -adafruit_stemmafriend.menu.freq.175=175 MHz (Overclock) -adafruit_stemmafriend.menu.freq.175.build.f_cpu=175000000L -adafruit_stemmafriend.menu.freq.200=200 MHz (Overclock) -adafruit_stemmafriend.menu.freq.200.build.f_cpu=200000000L +adafruit_stemmafriend.menu.freq.176=176 MHz +adafruit_stemmafriend.menu.freq.176.build.f_cpu=176000000L adafruit_stemmafriend.menu.freq.225=225 MHz (Overclock) adafruit_stemmafriend.menu.freq.225.build.f_cpu=225000000L adafruit_stemmafriend.menu.freq.240=240 MHz (Overclock) adafruit_stemmafriend.menu.freq.240.build.f_cpu=240000000L adafruit_stemmafriend.menu.freq.250=250 MHz (Overclock) adafruit_stemmafriend.menu.freq.250.build.f_cpu=250000000L -adafruit_stemmafriend.menu.freq.275=275 MHz (Overclock) -adafruit_stemmafriend.menu.freq.275.build.f_cpu=275000000L +adafruit_stemmafriend.menu.freq.276=276 MHz (Overclock) +adafruit_stemmafriend.menu.freq.276.build.f_cpu=276000000L adafruit_stemmafriend.menu.freq.300=300 MHz (Overclock) adafruit_stemmafriend.menu.freq.300.build.f_cpu=300000000L adafruit_stemmafriend.menu.opt.Small=Small (-Os) (standard) @@ -4764,7 +4868,7 @@ adafruit_stemmafriend.menu.rtti.Enabled.build.flags.rtti= adafruit_stemmafriend.menu.stackprotect.Disabled=Disabled adafruit_stemmafriend.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_stemmafriend.menu.stackprotect.Enabled=Enabled -adafruit_stemmafriend.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_stemmafriend.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_stemmafriend.menu.exceptions.Disabled=Disabled adafruit_stemmafriend.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_stemmafriend.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -4971,8 +5075,8 @@ adafruit_trinkeyrp2040qt.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_trinkeyrp2040qt.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_trinkeyrp2040qt.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_trinkeyrp2040qt.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_trinkeyrp2040qt.menu.freq.133=133 MHz -adafruit_trinkeyrp2040qt.menu.freq.133.build.f_cpu=133000000L +adafruit_trinkeyrp2040qt.menu.freq.200=200 MHz +adafruit_trinkeyrp2040qt.menu.freq.200.build.f_cpu=200000000L adafruit_trinkeyrp2040qt.menu.freq.50=50 MHz adafruit_trinkeyrp2040qt.menu.freq.50.build.f_cpu=50000000L adafruit_trinkeyrp2040qt.menu.freq.100=100 MHz @@ -4983,20 +5087,20 @@ adafruit_trinkeyrp2040qt.menu.freq.125=125 MHz adafruit_trinkeyrp2040qt.menu.freq.125.build.f_cpu=125000000L adafruit_trinkeyrp2040qt.menu.freq.128=128 MHz adafruit_trinkeyrp2040qt.menu.freq.128.build.f_cpu=128000000L -adafruit_trinkeyrp2040qt.menu.freq.150=150 MHz (Overclock) +adafruit_trinkeyrp2040qt.menu.freq.133=133 MHz +adafruit_trinkeyrp2040qt.menu.freq.133.build.f_cpu=133000000L +adafruit_trinkeyrp2040qt.menu.freq.150=150 MHz adafruit_trinkeyrp2040qt.menu.freq.150.build.f_cpu=150000000L -adafruit_trinkeyrp2040qt.menu.freq.175=175 MHz (Overclock) -adafruit_trinkeyrp2040qt.menu.freq.175.build.f_cpu=175000000L -adafruit_trinkeyrp2040qt.menu.freq.200=200 MHz (Overclock) -adafruit_trinkeyrp2040qt.menu.freq.200.build.f_cpu=200000000L +adafruit_trinkeyrp2040qt.menu.freq.176=176 MHz +adafruit_trinkeyrp2040qt.menu.freq.176.build.f_cpu=176000000L adafruit_trinkeyrp2040qt.menu.freq.225=225 MHz (Overclock) adafruit_trinkeyrp2040qt.menu.freq.225.build.f_cpu=225000000L adafruit_trinkeyrp2040qt.menu.freq.240=240 MHz (Overclock) adafruit_trinkeyrp2040qt.menu.freq.240.build.f_cpu=240000000L adafruit_trinkeyrp2040qt.menu.freq.250=250 MHz (Overclock) adafruit_trinkeyrp2040qt.menu.freq.250.build.f_cpu=250000000L -adafruit_trinkeyrp2040qt.menu.freq.275=275 MHz (Overclock) -adafruit_trinkeyrp2040qt.menu.freq.275.build.f_cpu=275000000L +adafruit_trinkeyrp2040qt.menu.freq.276=276 MHz (Overclock) +adafruit_trinkeyrp2040qt.menu.freq.276.build.f_cpu=276000000L adafruit_trinkeyrp2040qt.menu.freq.300=300 MHz (Overclock) adafruit_trinkeyrp2040qt.menu.freq.300.build.f_cpu=300000000L adafruit_trinkeyrp2040qt.menu.opt.Small=Small (-Os) (standard) @@ -5024,7 +5128,7 @@ adafruit_trinkeyrp2040qt.menu.rtti.Enabled.build.flags.rtti= adafruit_trinkeyrp2040qt.menu.stackprotect.Disabled=Disabled adafruit_trinkeyrp2040qt.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_trinkeyrp2040qt.menu.stackprotect.Enabled=Enabled -adafruit_trinkeyrp2040qt.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_trinkeyrp2040qt.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_trinkeyrp2040qt.menu.exceptions.Disabled=Disabled adafruit_trinkeyrp2040qt.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_trinkeyrp2040qt.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -5231,8 +5335,8 @@ adafruit_macropad2040.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_macropad2040.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_macropad2040.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_macropad2040.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_macropad2040.menu.freq.133=133 MHz -adafruit_macropad2040.menu.freq.133.build.f_cpu=133000000L +adafruit_macropad2040.menu.freq.200=200 MHz +adafruit_macropad2040.menu.freq.200.build.f_cpu=200000000L adafruit_macropad2040.menu.freq.50=50 MHz adafruit_macropad2040.menu.freq.50.build.f_cpu=50000000L adafruit_macropad2040.menu.freq.100=100 MHz @@ -5243,20 +5347,20 @@ adafruit_macropad2040.menu.freq.125=125 MHz adafruit_macropad2040.menu.freq.125.build.f_cpu=125000000L adafruit_macropad2040.menu.freq.128=128 MHz adafruit_macropad2040.menu.freq.128.build.f_cpu=128000000L -adafruit_macropad2040.menu.freq.150=150 MHz (Overclock) +adafruit_macropad2040.menu.freq.133=133 MHz +adafruit_macropad2040.menu.freq.133.build.f_cpu=133000000L +adafruit_macropad2040.menu.freq.150=150 MHz adafruit_macropad2040.menu.freq.150.build.f_cpu=150000000L -adafruit_macropad2040.menu.freq.175=175 MHz (Overclock) -adafruit_macropad2040.menu.freq.175.build.f_cpu=175000000L -adafruit_macropad2040.menu.freq.200=200 MHz (Overclock) -adafruit_macropad2040.menu.freq.200.build.f_cpu=200000000L +adafruit_macropad2040.menu.freq.176=176 MHz +adafruit_macropad2040.menu.freq.176.build.f_cpu=176000000L adafruit_macropad2040.menu.freq.225=225 MHz (Overclock) adafruit_macropad2040.menu.freq.225.build.f_cpu=225000000L adafruit_macropad2040.menu.freq.240=240 MHz (Overclock) adafruit_macropad2040.menu.freq.240.build.f_cpu=240000000L adafruit_macropad2040.menu.freq.250=250 MHz (Overclock) adafruit_macropad2040.menu.freq.250.build.f_cpu=250000000L -adafruit_macropad2040.menu.freq.275=275 MHz (Overclock) -adafruit_macropad2040.menu.freq.275.build.f_cpu=275000000L +adafruit_macropad2040.menu.freq.276=276 MHz (Overclock) +adafruit_macropad2040.menu.freq.276.build.f_cpu=276000000L adafruit_macropad2040.menu.freq.300=300 MHz (Overclock) adafruit_macropad2040.menu.freq.300.build.f_cpu=300000000L adafruit_macropad2040.menu.opt.Small=Small (-Os) (standard) @@ -5284,7 +5388,7 @@ adafruit_macropad2040.menu.rtti.Enabled.build.flags.rtti= adafruit_macropad2040.menu.stackprotect.Disabled=Disabled adafruit_macropad2040.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_macropad2040.menu.stackprotect.Enabled=Enabled -adafruit_macropad2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_macropad2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_macropad2040.menu.exceptions.Disabled=Disabled adafruit_macropad2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_macropad2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -5491,8 +5595,8 @@ adafruit_kb2040.menu.flash.8388608_7340032.build.flash_length=1044480 adafruit_kb2040.menu.flash.8388608_7340032.build.eeprom_start=276819968 adafruit_kb2040.menu.flash.8388608_7340032.build.fs_start=269479936 adafruit_kb2040.menu.flash.8388608_7340032.build.fs_end=276819968 -adafruit_kb2040.menu.freq.133=133 MHz -adafruit_kb2040.menu.freq.133.build.f_cpu=133000000L +adafruit_kb2040.menu.freq.200=200 MHz +adafruit_kb2040.menu.freq.200.build.f_cpu=200000000L adafruit_kb2040.menu.freq.50=50 MHz adafruit_kb2040.menu.freq.50.build.f_cpu=50000000L adafruit_kb2040.menu.freq.100=100 MHz @@ -5503,20 +5607,20 @@ adafruit_kb2040.menu.freq.125=125 MHz adafruit_kb2040.menu.freq.125.build.f_cpu=125000000L adafruit_kb2040.menu.freq.128=128 MHz adafruit_kb2040.menu.freq.128.build.f_cpu=128000000L -adafruit_kb2040.menu.freq.150=150 MHz (Overclock) +adafruit_kb2040.menu.freq.133=133 MHz +adafruit_kb2040.menu.freq.133.build.f_cpu=133000000L +adafruit_kb2040.menu.freq.150=150 MHz adafruit_kb2040.menu.freq.150.build.f_cpu=150000000L -adafruit_kb2040.menu.freq.175=175 MHz (Overclock) -adafruit_kb2040.menu.freq.175.build.f_cpu=175000000L -adafruit_kb2040.menu.freq.200=200 MHz (Overclock) -adafruit_kb2040.menu.freq.200.build.f_cpu=200000000L +adafruit_kb2040.menu.freq.176=176 MHz +adafruit_kb2040.menu.freq.176.build.f_cpu=176000000L adafruit_kb2040.menu.freq.225=225 MHz (Overclock) adafruit_kb2040.menu.freq.225.build.f_cpu=225000000L adafruit_kb2040.menu.freq.240=240 MHz (Overclock) adafruit_kb2040.menu.freq.240.build.f_cpu=240000000L adafruit_kb2040.menu.freq.250=250 MHz (Overclock) adafruit_kb2040.menu.freq.250.build.f_cpu=250000000L -adafruit_kb2040.menu.freq.275=275 MHz (Overclock) -adafruit_kb2040.menu.freq.275.build.f_cpu=275000000L +adafruit_kb2040.menu.freq.276=276 MHz (Overclock) +adafruit_kb2040.menu.freq.276.build.f_cpu=276000000L adafruit_kb2040.menu.freq.300=300 MHz (Overclock) adafruit_kb2040.menu.freq.300.build.f_cpu=300000000L adafruit_kb2040.menu.opt.Small=Small (-Os) (standard) @@ -5544,7 +5648,7 @@ adafruit_kb2040.menu.rtti.Enabled.build.flags.rtti= adafruit_kb2040.menu.stackprotect.Disabled=Disabled adafruit_kb2040.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_kb2040.menu.stackprotect.Enabled=Enabled -adafruit_kb2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_kb2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_kb2040.menu.exceptions.Disabled=Disabled adafruit_kb2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_kb2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -5632,6 +5736,271 @@ adafruit_kb2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=2 adafruit_kb2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap adafruit_kb2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +# ----------------------------------- +# Adafruit Feather RP2350 Adalogger +# ----------------------------------- +adafruit_feather_rp2350_adalogger.name=Adafruit Feather RP2350 Adalogger +adafruit_feather_rp2350_adalogger.vid.0=0x239a +adafruit_feather_rp2350_adalogger.pid.0=0x816d +adafruit_feather_rp2350_adalogger.vid.1=0x239a +adafruit_feather_rp2350_adalogger.pid.1=0xc16d +adafruit_feather_rp2350_adalogger.upload_port.0.vid=0x239a +adafruit_feather_rp2350_adalogger.upload_port.0.pid=0x816d +adafruit_feather_rp2350_adalogger.upload_port.1.vid=0x239a +adafruit_feather_rp2350_adalogger.upload_port.1.pid=0xc16d +adafruit_feather_rp2350_adalogger.build.usbvid=-DUSBD_VID=0x239a +adafruit_feather_rp2350_adalogger.build.usbpid=-DUSBD_PID=0x816d +adafruit_feather_rp2350_adalogger.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +adafruit_feather_rp2350_adalogger.build.board=ADAFRUIT_FEATHER_RP2350_ADALOGGER +adafruit_feather_rp2350_adalogger.build.variant=adafruit_feather_rp2350_adalogger +adafruit_feather_rp2350_adalogger.upload.maximum_size=8388608 +adafruit_feather_rp2350_adalogger.upload.wait_for_upload_port=true +adafruit_feather_rp2350_adalogger.upload.erase_cmd= +adafruit_feather_rp2350_adalogger.serial.disableDTR=false +adafruit_feather_rp2350_adalogger.serial.disableRTS=false +adafruit_feather_rp2350_adalogger.build.f_cpu=125000000 +adafruit_feather_rp2350_adalogger.build.led= +adafruit_feather_rp2350_adalogger.build.core=rp2040 +adafruit_feather_rp2350_adalogger.build.ldscript=memmap_default.ld +adafruit_feather_rp2350_adalogger.build.boot2=none +adafruit_feather_rp2350_adalogger.build.usb_manufacturer="Adafruit" +adafruit_feather_rp2350_adalogger.build.usb_product="Feather RP2350 Adalogger" +adafruit_feather_rp2350_adalogger.build.psram_length=0x000000 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_0=8MB (no FS) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_0.upload.maximum_size=8380416 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_0.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_0.build.flash_length=8380416 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_0.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_0.build.fs_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_0.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_65536=8MB (Sketch: 8128KB, FS: 64KB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_65536.upload.maximum_size=8314880 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_65536.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_65536.build.flash_length=8314880 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_65536.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_65536.build.fs_start=276750336 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_65536.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_131072=8MB (Sketch: 8064KB, FS: 128KB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_131072.upload.maximum_size=8249344 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_131072.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_131072.build.flash_length=8249344 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_131072.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_131072.build.fs_start=276684800 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_131072.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_262144=8MB (Sketch: 7936KB, FS: 256KB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_262144.upload.maximum_size=8118272 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_262144.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_262144.build.flash_length=8118272 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_262144.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_262144.build.fs_start=276553728 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_262144.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_524288=8MB (Sketch: 7680KB, FS: 512KB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_524288.upload.maximum_size=7856128 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_524288.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_524288.build.flash_length=7856128 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_524288.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_524288.build.fs_start=276291584 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_524288.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_1048576=8MB (Sketch: 7MB, FS: 1MB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_1048576.upload.maximum_size=7331840 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_1048576.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_1048576.build.flash_length=7331840 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_1048576.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_1048576.build.fs_start=275767296 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_1048576.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_2097152=8MB (Sketch: 6MB, FS: 2MB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_2097152.upload.maximum_size=6283264 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_2097152.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_2097152.build.flash_length=6283264 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_2097152.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_2097152.build.fs_start=274718720 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_2097152.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_3145728=8MB (Sketch: 5MB, FS: 3MB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_3145728.upload.maximum_size=5234688 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_3145728.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_3145728.build.flash_length=5234688 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_3145728.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_3145728.build.fs_start=273670144 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_3145728.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_4194304=8MB (Sketch: 4MB, FS: 4MB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_4194304.upload.maximum_size=4186112 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_4194304.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_4194304.build.flash_length=4186112 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_4194304.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_4194304.build.fs_start=272621568 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_4194304.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_5242880=8MB (Sketch: 3MB, FS: 5MB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_5242880.upload.maximum_size=3137536 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_5242880.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_5242880.build.flash_length=3137536 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_5242880.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_5242880.build.fs_start=271572992 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_5242880.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_6291456=8MB (Sketch: 2MB, FS: 6MB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_6291456.upload.maximum_size=2088960 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_6291456.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_6291456.build.flash_length=2088960 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_6291456.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_6291456.build.fs_start=270524416 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_6291456.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_7340032=8MB (Sketch: 1MB, FS: 7MB) +adafruit_feather_rp2350_adalogger.menu.flash.8388608_7340032.upload.maximum_size=1040384 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_7340032.build.flash_total=8388608 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_7340032.build.flash_length=1040384 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_7340032.build.eeprom_start=276815872 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_7340032.build.fs_start=269475840 +adafruit_feather_rp2350_adalogger.menu.flash.8388608_7340032.build.fs_end=276815872 +adafruit_feather_rp2350_adalogger.menu.arch.arm=ARM +adafruit_feather_rp2350_adalogger.menu.arch.arm.build.chip=rp2350 +adafruit_feather_rp2350_adalogger.menu.arch.arm.build.toolchain=arm-none-eabi +adafruit_feather_rp2350_adalogger.menu.arch.arm.build.toolchainpkg=pqt-gcc +adafruit_feather_rp2350_adalogger.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +adafruit_feather_rp2350_adalogger.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +adafruit_feather_rp2350_adalogger.menu.arch.arm.build.mcu=cortex-m33 +adafruit_feather_rp2350_adalogger.menu.arch.riscv=RISC-V +adafruit_feather_rp2350_adalogger.menu.arch.riscv.build.chip=rp2350-riscv +adafruit_feather_rp2350_adalogger.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +adafruit_feather_rp2350_adalogger.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +adafruit_feather_rp2350_adalogger.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +adafruit_feather_rp2350_adalogger.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +adafruit_feather_rp2350_adalogger.menu.arch.riscv.build.mcu=rv32imac +adafruit_feather_rp2350_adalogger.menu.freq.150=150 MHz +adafruit_feather_rp2350_adalogger.menu.freq.150.build.f_cpu=150000000L +adafruit_feather_rp2350_adalogger.menu.freq.50=50 MHz +adafruit_feather_rp2350_adalogger.menu.freq.50.build.f_cpu=50000000L +adafruit_feather_rp2350_adalogger.menu.freq.100=100 MHz +adafruit_feather_rp2350_adalogger.menu.freq.100.build.f_cpu=100000000L +adafruit_feather_rp2350_adalogger.menu.freq.120=120 MHz +adafruit_feather_rp2350_adalogger.menu.freq.120.build.f_cpu=120000000L +adafruit_feather_rp2350_adalogger.menu.freq.125=125 MHz +adafruit_feather_rp2350_adalogger.menu.freq.125.build.f_cpu=125000000L +adafruit_feather_rp2350_adalogger.menu.freq.128=128 MHz +adafruit_feather_rp2350_adalogger.menu.freq.128.build.f_cpu=128000000L +adafruit_feather_rp2350_adalogger.menu.freq.133=133 MHz +adafruit_feather_rp2350_adalogger.menu.freq.133.build.f_cpu=133000000L +adafruit_feather_rp2350_adalogger.menu.freq.176=176 MHz (Overclock) +adafruit_feather_rp2350_adalogger.menu.freq.176.build.f_cpu=176000000L +adafruit_feather_rp2350_adalogger.menu.freq.200=200 MHz (Overclock) +adafruit_feather_rp2350_adalogger.menu.freq.200.build.f_cpu=200000000L +adafruit_feather_rp2350_adalogger.menu.freq.225=225 MHz (Overclock) +adafruit_feather_rp2350_adalogger.menu.freq.225.build.f_cpu=225000000L +adafruit_feather_rp2350_adalogger.menu.freq.240=240 MHz (Overclock) +adafruit_feather_rp2350_adalogger.menu.freq.240.build.f_cpu=240000000L +adafruit_feather_rp2350_adalogger.menu.freq.250=250 MHz (Overclock) +adafruit_feather_rp2350_adalogger.menu.freq.250.build.f_cpu=250000000L +adafruit_feather_rp2350_adalogger.menu.freq.276=276 MHz (Overclock) +adafruit_feather_rp2350_adalogger.menu.freq.276.build.f_cpu=276000000L +adafruit_feather_rp2350_adalogger.menu.freq.300=300 MHz (Overclock) +adafruit_feather_rp2350_adalogger.menu.freq.300.build.f_cpu=300000000L +adafruit_feather_rp2350_adalogger.menu.opt.Small=Small (-Os) (standard) +adafruit_feather_rp2350_adalogger.menu.opt.Small.build.flags.optimize=-Os +adafruit_feather_rp2350_adalogger.menu.opt.Optimize=Optimize (-O) +adafruit_feather_rp2350_adalogger.menu.opt.Optimize.build.flags.optimize=-O +adafruit_feather_rp2350_adalogger.menu.opt.Optimize2=Optimize More (-O2) +adafruit_feather_rp2350_adalogger.menu.opt.Optimize2.build.flags.optimize=-O2 +adafruit_feather_rp2350_adalogger.menu.opt.Optimize3=Optimize Even More (-O3) +adafruit_feather_rp2350_adalogger.menu.opt.Optimize3.build.flags.optimize=-O3 +adafruit_feather_rp2350_adalogger.menu.opt.Fast=Fast (-Ofast) (maybe slower) +adafruit_feather_rp2350_adalogger.menu.opt.Fast.build.flags.optimize=-Ofast +adafruit_feather_rp2350_adalogger.menu.opt.Debug=Debug (-Og) +adafruit_feather_rp2350_adalogger.menu.opt.Debug.build.flags.optimize=-Og +adafruit_feather_rp2350_adalogger.menu.opt.Disabled=Disabled (-O0) +adafruit_feather_rp2350_adalogger.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_rp2350_adalogger.menu.profile.Disabled=Disabled +adafruit_feather_rp2350_adalogger.menu.profile.Disabled.build.flags.profile= +adafruit_feather_rp2350_adalogger.menu.profile.Enabled=Enabled +adafruit_feather_rp2350_adalogger.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +adafruit_feather_rp2350_adalogger.menu.rtti.Disabled=Disabled +adafruit_feather_rp2350_adalogger.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +adafruit_feather_rp2350_adalogger.menu.rtti.Enabled=Enabled +adafruit_feather_rp2350_adalogger.menu.rtti.Enabled.build.flags.rtti= +adafruit_feather_rp2350_adalogger.menu.stackprotect.Disabled=Disabled +adafruit_feather_rp2350_adalogger.menu.stackprotect.Disabled.build.flags.stackprotect= +adafruit_feather_rp2350_adalogger.menu.stackprotect.Enabled=Enabled +adafruit_feather_rp2350_adalogger.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +adafruit_feather_rp2350_adalogger.menu.exceptions.Disabled=Disabled +adafruit_feather_rp2350_adalogger.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +adafruit_feather_rp2350_adalogger.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +adafruit_feather_rp2350_adalogger.menu.exceptions.Enabled=Enabled +adafruit_feather_rp2350_adalogger.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +adafruit_feather_rp2350_adalogger.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +adafruit_feather_rp2350_adalogger.menu.dbgport.Disabled=Disabled +adafruit_feather_rp2350_adalogger.menu.dbgport.Disabled.build.debug_port= +adafruit_feather_rp2350_adalogger.menu.dbgport.Serial=Serial +adafruit_feather_rp2350_adalogger.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +adafruit_feather_rp2350_adalogger.menu.dbgport.Serial1=Serial1 +adafruit_feather_rp2350_adalogger.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +adafruit_feather_rp2350_adalogger.menu.dbgport.Serial2=Serial2 +adafruit_feather_rp2350_adalogger.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +adafruit_feather_rp2350_adalogger.menu.dbgport.SerialSemi=SerialSemi +adafruit_feather_rp2350_adalogger.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +adafruit_feather_rp2350_adalogger.menu.dbglvl.None=None +adafruit_feather_rp2350_adalogger.menu.dbglvl.None.build.debug_level= +adafruit_feather_rp2350_adalogger.menu.dbglvl.Core=Core +adafruit_feather_rp2350_adalogger.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +adafruit_feather_rp2350_adalogger.menu.dbglvl.SPI=SPI +adafruit_feather_rp2350_adalogger.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +adafruit_feather_rp2350_adalogger.menu.dbglvl.Wire=Wire +adafruit_feather_rp2350_adalogger.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +adafruit_feather_rp2350_adalogger.menu.dbglvl.Bluetooth=Bluetooth +adafruit_feather_rp2350_adalogger.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_rp2350_adalogger.menu.dbglvl.All=All +adafruit_feather_rp2350_adalogger.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_rp2350_adalogger.menu.dbglvl.NDEBUG=NDEBUG +adafruit_feather_rp2350_adalogger.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +adafruit_feather_rp2350_adalogger.menu.usbstack.picosdk=Pico SDK +adafruit_feather_rp2350_adalogger.menu.usbstack.picosdk.build.usbstack_flags= +adafruit_feather_rp2350_adalogger.menu.usbstack.tinyusb=Adafruit TinyUSB +adafruit_feather_rp2350_adalogger.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +adafruit_feather_rp2350_adalogger.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +adafruit_feather_rp2350_adalogger.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +adafruit_feather_rp2350_adalogger.menu.usbstack.nousb=No USB +adafruit_feather_rp2350_adalogger.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4only=IPv4 Only +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +adafruit_feather_rp2350_adalogger.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +adafruit_feather_rp2350_adalogger.menu.uploadmethod.default=Default (UF2) +adafruit_feather_rp2350_adalogger.menu.uploadmethod.default.build.ram_length=512k +adafruit_feather_rp2350_adalogger.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +adafruit_feather_rp2350_adalogger.menu.uploadmethod.default.upload.maximum_data_size=524288 +adafruit_feather_rp2350_adalogger.menu.uploadmethod.default.upload.tool=uf2conv +adafruit_feather_rp2350_adalogger.menu.uploadmethod.default.upload.tool.default=uf2conv +adafruit_feather_rp2350_adalogger.menu.uploadmethod.default.upload.tool.network=uf2conv-network +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picotool=Picotool +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picotool.build.ram_length=512k +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picotool.upload.tool=picotool +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picotool.upload.tool.default=picotool +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +adafruit_feather_rp2350_adalogger.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + # ----------------------------------- # Adafruit Feather RP2350 HSTX # ----------------------------------- @@ -5774,8 +6143,8 @@ adafruit_feather_rp2350_hstx.menu.freq.128=128 MHz adafruit_feather_rp2350_hstx.menu.freq.128.build.f_cpu=128000000L adafruit_feather_rp2350_hstx.menu.freq.133=133 MHz adafruit_feather_rp2350_hstx.menu.freq.133.build.f_cpu=133000000L -adafruit_feather_rp2350_hstx.menu.freq.175=175 MHz (Overclock) -adafruit_feather_rp2350_hstx.menu.freq.175.build.f_cpu=175000000L +adafruit_feather_rp2350_hstx.menu.freq.176=176 MHz (Overclock) +adafruit_feather_rp2350_hstx.menu.freq.176.build.f_cpu=176000000L adafruit_feather_rp2350_hstx.menu.freq.200=200 MHz (Overclock) adafruit_feather_rp2350_hstx.menu.freq.200.build.f_cpu=200000000L adafruit_feather_rp2350_hstx.menu.freq.225=225 MHz (Overclock) @@ -5784,8 +6153,8 @@ adafruit_feather_rp2350_hstx.menu.freq.240=240 MHz (Overclock) adafruit_feather_rp2350_hstx.menu.freq.240.build.f_cpu=240000000L adafruit_feather_rp2350_hstx.menu.freq.250=250 MHz (Overclock) adafruit_feather_rp2350_hstx.menu.freq.250.build.f_cpu=250000000L -adafruit_feather_rp2350_hstx.menu.freq.275=275 MHz (Overclock) -adafruit_feather_rp2350_hstx.menu.freq.275.build.f_cpu=275000000L +adafruit_feather_rp2350_hstx.menu.freq.276=276 MHz (Overclock) +adafruit_feather_rp2350_hstx.menu.freq.276.build.f_cpu=276000000L adafruit_feather_rp2350_hstx.menu.freq.300=300 MHz (Overclock) adafruit_feather_rp2350_hstx.menu.freq.300.build.f_cpu=300000000L adafruit_feather_rp2350_hstx.menu.psram.0mb=0MByte PSRAM @@ -5821,7 +6190,7 @@ adafruit_feather_rp2350_hstx.menu.rtti.Enabled.build.flags.rtti= adafruit_feather_rp2350_hstx.menu.stackprotect.Disabled=Disabled adafruit_feather_rp2350_hstx.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_feather_rp2350_hstx.menu.stackprotect.Enabled=Enabled -adafruit_feather_rp2350_hstx.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_feather_rp2350_hstx.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_feather_rp2350_hstx.menu.exceptions.Disabled=Disabled adafruit_feather_rp2350_hstx.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_feather_rp2350_hstx.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -6080,8 +6449,8 @@ adafruit_floppsy.menu.flash.16777216_15728640.build.flash_length=1044480 adafruit_floppsy.menu.flash.16777216_15728640.build.eeprom_start=285208576 adafruit_floppsy.menu.flash.16777216_15728640.build.fs_start=269479936 adafruit_floppsy.menu.flash.16777216_15728640.build.fs_end=285208576 -adafruit_floppsy.menu.freq.133=133 MHz -adafruit_floppsy.menu.freq.133.build.f_cpu=133000000L +adafruit_floppsy.menu.freq.200=200 MHz +adafruit_floppsy.menu.freq.200.build.f_cpu=200000000L adafruit_floppsy.menu.freq.50=50 MHz adafruit_floppsy.menu.freq.50.build.f_cpu=50000000L adafruit_floppsy.menu.freq.100=100 MHz @@ -6092,20 +6461,20 @@ adafruit_floppsy.menu.freq.125=125 MHz adafruit_floppsy.menu.freq.125.build.f_cpu=125000000L adafruit_floppsy.menu.freq.128=128 MHz adafruit_floppsy.menu.freq.128.build.f_cpu=128000000L -adafruit_floppsy.menu.freq.150=150 MHz (Overclock) +adafruit_floppsy.menu.freq.133=133 MHz +adafruit_floppsy.menu.freq.133.build.f_cpu=133000000L +adafruit_floppsy.menu.freq.150=150 MHz adafruit_floppsy.menu.freq.150.build.f_cpu=150000000L -adafruit_floppsy.menu.freq.175=175 MHz (Overclock) -adafruit_floppsy.menu.freq.175.build.f_cpu=175000000L -adafruit_floppsy.menu.freq.200=200 MHz (Overclock) -adafruit_floppsy.menu.freq.200.build.f_cpu=200000000L +adafruit_floppsy.menu.freq.176=176 MHz +adafruit_floppsy.menu.freq.176.build.f_cpu=176000000L adafruit_floppsy.menu.freq.225=225 MHz (Overclock) adafruit_floppsy.menu.freq.225.build.f_cpu=225000000L adafruit_floppsy.menu.freq.240=240 MHz (Overclock) adafruit_floppsy.menu.freq.240.build.f_cpu=240000000L adafruit_floppsy.menu.freq.250=250 MHz (Overclock) adafruit_floppsy.menu.freq.250.build.f_cpu=250000000L -adafruit_floppsy.menu.freq.275=275 MHz (Overclock) -adafruit_floppsy.menu.freq.275.build.f_cpu=275000000L +adafruit_floppsy.menu.freq.276=276 MHz (Overclock) +adafruit_floppsy.menu.freq.276.build.f_cpu=276000000L adafruit_floppsy.menu.freq.300=300 MHz (Overclock) adafruit_floppsy.menu.freq.300.build.f_cpu=300000000L adafruit_floppsy.menu.opt.Small=Small (-Os) (standard) @@ -6133,7 +6502,7 @@ adafruit_floppsy.menu.rtti.Enabled.build.flags.rtti= adafruit_floppsy.menu.stackprotect.Disabled=Disabled adafruit_floppsy.menu.stackprotect.Disabled.build.flags.stackprotect= adafruit_floppsy.menu.stackprotect.Enabled=Enabled -adafruit_floppsy.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +adafruit_floppsy.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all adafruit_floppsy.menu.exceptions.Disabled=Disabled adafruit_floppsy.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions adafruit_floppsy.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -6221,6 +6590,656 @@ adafruit_floppsy.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size= adafruit_floppsy.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap adafruit_floppsy.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +# ----------------------------------- +# Adafruit Metro RP2350 +# ----------------------------------- +adafruit_metro_rp2350.name=Adafruit Metro RP2350 +adafruit_metro_rp2350.vid.0=0x239a +adafruit_metro_rp2350.pid.0=0x814d +adafruit_metro_rp2350.vid.1=0x239a +adafruit_metro_rp2350.pid.1=0xc14d +adafruit_metro_rp2350.upload_port.0.vid=0x239a +adafruit_metro_rp2350.upload_port.0.pid=0x814d +adafruit_metro_rp2350.upload_port.1.vid=0x239a +adafruit_metro_rp2350.upload_port.1.pid=0xc14d +adafruit_metro_rp2350.build.usbvid=-DUSBD_VID=0x239a +adafruit_metro_rp2350.build.usbpid=-DUSBD_PID=0x814d +adafruit_metro_rp2350.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +adafruit_metro_rp2350.build.board=ADAFRUIT_METRO_RP2350 +adafruit_metro_rp2350.build.variant=adafruit_metro_rp2350 +adafruit_metro_rp2350.upload.maximum_size=16777216 +adafruit_metro_rp2350.upload.wait_for_upload_port=true +adafruit_metro_rp2350.upload.erase_cmd= +adafruit_metro_rp2350.serial.disableDTR=false +adafruit_metro_rp2350.serial.disableRTS=false +adafruit_metro_rp2350.build.f_cpu=125000000 +adafruit_metro_rp2350.build.led= +adafruit_metro_rp2350.build.core=rp2040 +adafruit_metro_rp2350.build.ldscript=memmap_default.ld +adafruit_metro_rp2350.build.boot2=none +adafruit_metro_rp2350.build.usb_manufacturer="Adafruit" +adafruit_metro_rp2350.build.usb_product="Metro RP2350" +adafruit_metro_rp2350.build.psram_length=0x000000 +adafruit_metro_rp2350.menu.flash.16777216_0=16MB (no FS) +adafruit_metro_rp2350.menu.flash.16777216_0.upload.maximum_size=16769024 +adafruit_metro_rp2350.menu.flash.16777216_0.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_0.build.flash_length=16769024 +adafruit_metro_rp2350.menu.flash.16777216_0.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_0.build.fs_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_0.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB) +adafruit_metro_rp2350.menu.flash.16777216_65536.upload.maximum_size=16703488 +adafruit_metro_rp2350.menu.flash.16777216_65536.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_65536.build.flash_length=16703488 +adafruit_metro_rp2350.menu.flash.16777216_65536.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_65536.build.fs_start=285138944 +adafruit_metro_rp2350.menu.flash.16777216_65536.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB) +adafruit_metro_rp2350.menu.flash.16777216_131072.upload.maximum_size=16637952 +adafruit_metro_rp2350.menu.flash.16777216_131072.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_131072.build.flash_length=16637952 +adafruit_metro_rp2350.menu.flash.16777216_131072.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_131072.build.fs_start=285073408 +adafruit_metro_rp2350.menu.flash.16777216_131072.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB) +adafruit_metro_rp2350.menu.flash.16777216_262144.upload.maximum_size=16506880 +adafruit_metro_rp2350.menu.flash.16777216_262144.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_262144.build.flash_length=16506880 +adafruit_metro_rp2350.menu.flash.16777216_262144.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_262144.build.fs_start=284942336 +adafruit_metro_rp2350.menu.flash.16777216_262144.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB) +adafruit_metro_rp2350.menu.flash.16777216_524288.upload.maximum_size=16244736 +adafruit_metro_rp2350.menu.flash.16777216_524288.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_524288.build.flash_length=16244736 +adafruit_metro_rp2350.menu.flash.16777216_524288.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_524288.build.fs_start=284680192 +adafruit_metro_rp2350.menu.flash.16777216_524288.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB) +adafruit_metro_rp2350.menu.flash.16777216_1048576.upload.maximum_size=15720448 +adafruit_metro_rp2350.menu.flash.16777216_1048576.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_1048576.build.flash_length=15720448 +adafruit_metro_rp2350.menu.flash.16777216_1048576.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_1048576.build.fs_start=284155904 +adafruit_metro_rp2350.menu.flash.16777216_1048576.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) +adafruit_metro_rp2350.menu.flash.16777216_2097152.upload.maximum_size=14671872 +adafruit_metro_rp2350.menu.flash.16777216_2097152.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_2097152.build.flash_length=14671872 +adafruit_metro_rp2350.menu.flash.16777216_2097152.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_2097152.build.fs_start=283107328 +adafruit_metro_rp2350.menu.flash.16777216_2097152.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB) +adafruit_metro_rp2350.menu.flash.16777216_3145728.upload.maximum_size=13623296 +adafruit_metro_rp2350.menu.flash.16777216_3145728.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_3145728.build.flash_length=13623296 +adafruit_metro_rp2350.menu.flash.16777216_3145728.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_3145728.build.fs_start=282058752 +adafruit_metro_rp2350.menu.flash.16777216_3145728.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) +adafruit_metro_rp2350.menu.flash.16777216_4194304.upload.maximum_size=12574720 +adafruit_metro_rp2350.menu.flash.16777216_4194304.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_4194304.build.flash_length=12574720 +adafruit_metro_rp2350.menu.flash.16777216_4194304.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_4194304.build.fs_start=281010176 +adafruit_metro_rp2350.menu.flash.16777216_4194304.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB) +adafruit_metro_rp2350.menu.flash.16777216_5242880.upload.maximum_size=11526144 +adafruit_metro_rp2350.menu.flash.16777216_5242880.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_5242880.build.flash_length=11526144 +adafruit_metro_rp2350.menu.flash.16777216_5242880.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_5242880.build.fs_start=279961600 +adafruit_metro_rp2350.menu.flash.16777216_5242880.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB) +adafruit_metro_rp2350.menu.flash.16777216_6291456.upload.maximum_size=10477568 +adafruit_metro_rp2350.menu.flash.16777216_6291456.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_6291456.build.flash_length=10477568 +adafruit_metro_rp2350.menu.flash.16777216_6291456.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_6291456.build.fs_start=278913024 +adafruit_metro_rp2350.menu.flash.16777216_6291456.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB) +adafruit_metro_rp2350.menu.flash.16777216_7340032.upload.maximum_size=9428992 +adafruit_metro_rp2350.menu.flash.16777216_7340032.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_7340032.build.flash_length=9428992 +adafruit_metro_rp2350.menu.flash.16777216_7340032.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_7340032.build.fs_start=277864448 +adafruit_metro_rp2350.menu.flash.16777216_7340032.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) +adafruit_metro_rp2350.menu.flash.16777216_8388608.upload.maximum_size=8380416 +adafruit_metro_rp2350.menu.flash.16777216_8388608.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_8388608.build.flash_length=8380416 +adafruit_metro_rp2350.menu.flash.16777216_8388608.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_8388608.build.fs_start=276815872 +adafruit_metro_rp2350.menu.flash.16777216_8388608.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB) +adafruit_metro_rp2350.menu.flash.16777216_9437184.upload.maximum_size=7331840 +adafruit_metro_rp2350.menu.flash.16777216_9437184.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_9437184.build.flash_length=7331840 +adafruit_metro_rp2350.menu.flash.16777216_9437184.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_9437184.build.fs_start=275767296 +adafruit_metro_rp2350.menu.flash.16777216_9437184.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB) +adafruit_metro_rp2350.menu.flash.16777216_10485760.upload.maximum_size=6283264 +adafruit_metro_rp2350.menu.flash.16777216_10485760.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_10485760.build.flash_length=6283264 +adafruit_metro_rp2350.menu.flash.16777216_10485760.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_10485760.build.fs_start=274718720 +adafruit_metro_rp2350.menu.flash.16777216_10485760.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB) +adafruit_metro_rp2350.menu.flash.16777216_11534336.upload.maximum_size=5234688 +adafruit_metro_rp2350.menu.flash.16777216_11534336.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_11534336.build.flash_length=5234688 +adafruit_metro_rp2350.menu.flash.16777216_11534336.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_11534336.build.fs_start=273670144 +adafruit_metro_rp2350.menu.flash.16777216_11534336.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) +adafruit_metro_rp2350.menu.flash.16777216_12582912.upload.maximum_size=4186112 +adafruit_metro_rp2350.menu.flash.16777216_12582912.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_12582912.build.flash_length=4186112 +adafruit_metro_rp2350.menu.flash.16777216_12582912.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_12582912.build.fs_start=272621568 +adafruit_metro_rp2350.menu.flash.16777216_12582912.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB) +adafruit_metro_rp2350.menu.flash.16777216_13631488.upload.maximum_size=3137536 +adafruit_metro_rp2350.menu.flash.16777216_13631488.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_13631488.build.flash_length=3137536 +adafruit_metro_rp2350.menu.flash.16777216_13631488.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_13631488.build.fs_start=271572992 +adafruit_metro_rp2350.menu.flash.16777216_13631488.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) +adafruit_metro_rp2350.menu.flash.16777216_14680064.upload.maximum_size=2088960 +adafruit_metro_rp2350.menu.flash.16777216_14680064.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_14680064.build.flash_length=2088960 +adafruit_metro_rp2350.menu.flash.16777216_14680064.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_14680064.build.fs_start=270524416 +adafruit_metro_rp2350.menu.flash.16777216_14680064.build.fs_end=285204480 +adafruit_metro_rp2350.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) +adafruit_metro_rp2350.menu.flash.16777216_15728640.upload.maximum_size=1040384 +adafruit_metro_rp2350.menu.flash.16777216_15728640.build.flash_total=16777216 +adafruit_metro_rp2350.menu.flash.16777216_15728640.build.flash_length=1040384 +adafruit_metro_rp2350.menu.flash.16777216_15728640.build.eeprom_start=285204480 +adafruit_metro_rp2350.menu.flash.16777216_15728640.build.fs_start=269475840 +adafruit_metro_rp2350.menu.flash.16777216_15728640.build.fs_end=285204480 +adafruit_metro_rp2350.menu.arch.arm=ARM +adafruit_metro_rp2350.menu.arch.arm.build.chip=rp2350 +adafruit_metro_rp2350.menu.arch.arm.build.toolchain=arm-none-eabi +adafruit_metro_rp2350.menu.arch.arm.build.toolchainpkg=pqt-gcc +adafruit_metro_rp2350.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +adafruit_metro_rp2350.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +adafruit_metro_rp2350.menu.arch.arm.build.mcu=cortex-m33 +adafruit_metro_rp2350.menu.arch.riscv=RISC-V +adafruit_metro_rp2350.menu.arch.riscv.build.chip=rp2350-riscv +adafruit_metro_rp2350.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +adafruit_metro_rp2350.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +adafruit_metro_rp2350.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +adafruit_metro_rp2350.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +adafruit_metro_rp2350.menu.arch.riscv.build.mcu=rv32imac +adafruit_metro_rp2350.menu.freq.150=150 MHz +adafruit_metro_rp2350.menu.freq.150.build.f_cpu=150000000L +adafruit_metro_rp2350.menu.freq.50=50 MHz +adafruit_metro_rp2350.menu.freq.50.build.f_cpu=50000000L +adafruit_metro_rp2350.menu.freq.100=100 MHz +adafruit_metro_rp2350.menu.freq.100.build.f_cpu=100000000L +adafruit_metro_rp2350.menu.freq.120=120 MHz +adafruit_metro_rp2350.menu.freq.120.build.f_cpu=120000000L +adafruit_metro_rp2350.menu.freq.125=125 MHz +adafruit_metro_rp2350.menu.freq.125.build.f_cpu=125000000L +adafruit_metro_rp2350.menu.freq.128=128 MHz +adafruit_metro_rp2350.menu.freq.128.build.f_cpu=128000000L +adafruit_metro_rp2350.menu.freq.133=133 MHz +adafruit_metro_rp2350.menu.freq.133.build.f_cpu=133000000L +adafruit_metro_rp2350.menu.freq.176=176 MHz (Overclock) +adafruit_metro_rp2350.menu.freq.176.build.f_cpu=176000000L +adafruit_metro_rp2350.menu.freq.200=200 MHz (Overclock) +adafruit_metro_rp2350.menu.freq.200.build.f_cpu=200000000L +adafruit_metro_rp2350.menu.freq.225=225 MHz (Overclock) +adafruit_metro_rp2350.menu.freq.225.build.f_cpu=225000000L +adafruit_metro_rp2350.menu.freq.240=240 MHz (Overclock) +adafruit_metro_rp2350.menu.freq.240.build.f_cpu=240000000L +adafruit_metro_rp2350.menu.freq.250=250 MHz (Overclock) +adafruit_metro_rp2350.menu.freq.250.build.f_cpu=250000000L +adafruit_metro_rp2350.menu.freq.276=276 MHz (Overclock) +adafruit_metro_rp2350.menu.freq.276.build.f_cpu=276000000L +adafruit_metro_rp2350.menu.freq.300=300 MHz (Overclock) +adafruit_metro_rp2350.menu.freq.300.build.f_cpu=300000000L +adafruit_metro_rp2350.menu.psram.0mb=0MByte PSRAM +adafruit_metro_rp2350.menu.psram.0mb.build.psram_length=0x000000 +adafruit_metro_rp2350.menu.psram.2mb=2MByte PSRAM +adafruit_metro_rp2350.menu.psram.2mb.build.psram_length=0x200000 +adafruit_metro_rp2350.menu.psram.4mb=4MByte PSRAM +adafruit_metro_rp2350.menu.psram.4mb.build.psram_length=0x400000 +adafruit_metro_rp2350.menu.psram.8mb=8MByte PSRAM +adafruit_metro_rp2350.menu.psram.8mb.build.psram_length=0x800000 +adafruit_metro_rp2350.menu.opt.Small=Small (-Os) (standard) +adafruit_metro_rp2350.menu.opt.Small.build.flags.optimize=-Os +adafruit_metro_rp2350.menu.opt.Optimize=Optimize (-O) +adafruit_metro_rp2350.menu.opt.Optimize.build.flags.optimize=-O +adafruit_metro_rp2350.menu.opt.Optimize2=Optimize More (-O2) +adafruit_metro_rp2350.menu.opt.Optimize2.build.flags.optimize=-O2 +adafruit_metro_rp2350.menu.opt.Optimize3=Optimize Even More (-O3) +adafruit_metro_rp2350.menu.opt.Optimize3.build.flags.optimize=-O3 +adafruit_metro_rp2350.menu.opt.Fast=Fast (-Ofast) (maybe slower) +adafruit_metro_rp2350.menu.opt.Fast.build.flags.optimize=-Ofast +adafruit_metro_rp2350.menu.opt.Debug=Debug (-Og) +adafruit_metro_rp2350.menu.opt.Debug.build.flags.optimize=-Og +adafruit_metro_rp2350.menu.opt.Disabled=Disabled (-O0) +adafruit_metro_rp2350.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_metro_rp2350.menu.profile.Disabled=Disabled +adafruit_metro_rp2350.menu.profile.Disabled.build.flags.profile= +adafruit_metro_rp2350.menu.profile.Enabled=Enabled +adafruit_metro_rp2350.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +adafruit_metro_rp2350.menu.rtti.Disabled=Disabled +adafruit_metro_rp2350.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +adafruit_metro_rp2350.menu.rtti.Enabled=Enabled +adafruit_metro_rp2350.menu.rtti.Enabled.build.flags.rtti= +adafruit_metro_rp2350.menu.stackprotect.Disabled=Disabled +adafruit_metro_rp2350.menu.stackprotect.Disabled.build.flags.stackprotect= +adafruit_metro_rp2350.menu.stackprotect.Enabled=Enabled +adafruit_metro_rp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +adafruit_metro_rp2350.menu.exceptions.Disabled=Disabled +adafruit_metro_rp2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +adafruit_metro_rp2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +adafruit_metro_rp2350.menu.exceptions.Enabled=Enabled +adafruit_metro_rp2350.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +adafruit_metro_rp2350.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +adafruit_metro_rp2350.menu.dbgport.Disabled=Disabled +adafruit_metro_rp2350.menu.dbgport.Disabled.build.debug_port= +adafruit_metro_rp2350.menu.dbgport.Serial=Serial +adafruit_metro_rp2350.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +adafruit_metro_rp2350.menu.dbgport.Serial1=Serial1 +adafruit_metro_rp2350.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +adafruit_metro_rp2350.menu.dbgport.Serial2=Serial2 +adafruit_metro_rp2350.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +adafruit_metro_rp2350.menu.dbgport.SerialSemi=SerialSemi +adafruit_metro_rp2350.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +adafruit_metro_rp2350.menu.dbglvl.None=None +adafruit_metro_rp2350.menu.dbglvl.None.build.debug_level= +adafruit_metro_rp2350.menu.dbglvl.Core=Core +adafruit_metro_rp2350.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +adafruit_metro_rp2350.menu.dbglvl.SPI=SPI +adafruit_metro_rp2350.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +adafruit_metro_rp2350.menu.dbglvl.Wire=Wire +adafruit_metro_rp2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +adafruit_metro_rp2350.menu.dbglvl.Bluetooth=Bluetooth +adafruit_metro_rp2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_metro_rp2350.menu.dbglvl.All=All +adafruit_metro_rp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_metro_rp2350.menu.dbglvl.NDEBUG=NDEBUG +adafruit_metro_rp2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +adafruit_metro_rp2350.menu.usbstack.picosdk=Pico SDK +adafruit_metro_rp2350.menu.usbstack.picosdk.build.usbstack_flags= +adafruit_metro_rp2350.menu.usbstack.tinyusb=Adafruit TinyUSB +adafruit_metro_rp2350.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +adafruit_metro_rp2350.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +adafruit_metro_rp2350.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +adafruit_metro_rp2350.menu.usbstack.nousb=No USB +adafruit_metro_rp2350.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +adafruit_metro_rp2350.menu.ipbtstack.ipv4only=IPv4 Only +adafruit_metro_rp2350.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +adafruit_metro_rp2350.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +adafruit_metro_rp2350.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +adafruit_metro_rp2350.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +adafruit_metro_rp2350.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +adafruit_metro_rp2350.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +adafruit_metro_rp2350.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +adafruit_metro_rp2350.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +adafruit_metro_rp2350.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +adafruit_metro_rp2350.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +adafruit_metro_rp2350.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +adafruit_metro_rp2350.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +adafruit_metro_rp2350.menu.uploadmethod.default=Default (UF2) +adafruit_metro_rp2350.menu.uploadmethod.default.build.ram_length=512k +adafruit_metro_rp2350.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +adafruit_metro_rp2350.menu.uploadmethod.default.upload.maximum_data_size=524288 +adafruit_metro_rp2350.menu.uploadmethod.default.upload.tool=uf2conv +adafruit_metro_rp2350.menu.uploadmethod.default.upload.tool.default=uf2conv +adafruit_metro_rp2350.menu.uploadmethod.default.upload.tool.network=uf2conv-network +adafruit_metro_rp2350.menu.uploadmethod.picotool=Picotool +adafruit_metro_rp2350.menu.uploadmethod.picotool.build.ram_length=512k +adafruit_metro_rp2350.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +adafruit_metro_rp2350.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +adafruit_metro_rp2350.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +adafruit_metro_rp2350.menu.uploadmethod.picotool.upload.tool=picotool +adafruit_metro_rp2350.menu.uploadmethod.picotool.upload.tool.default=picotool +adafruit_metro_rp2350.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +adafruit_metro_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +adafruit_metro_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +adafruit_metro_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +adafruit_metro_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +adafruit_metro_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + +# ----------------------------------- +# Adafruit Fruit Jam RP2350 +# ----------------------------------- +adafruit_fruitjam.name=Adafruit Fruit Jam RP2350 +adafruit_fruitjam.vid.0=0x239a +adafruit_fruitjam.pid.0=0x816b +adafruit_fruitjam.vid.1=0x239a +adafruit_fruitjam.pid.1=0xc16b +adafruit_fruitjam.upload_port.0.vid=0x239a +adafruit_fruitjam.upload_port.0.pid=0x816b +adafruit_fruitjam.upload_port.1.vid=0x239a +adafruit_fruitjam.upload_port.1.pid=0xc16b +adafruit_fruitjam.build.usbvid=-DUSBD_VID=0x239a +adafruit_fruitjam.build.usbpid=-DUSBD_PID=0x816b +adafruit_fruitjam.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +adafruit_fruitjam.build.board=ADAFRUIT_FRUITJAM_RP2350 +adafruit_fruitjam.build.variant=adafruit_fruitjam +adafruit_fruitjam.upload.maximum_size=16777216 +adafruit_fruitjam.upload.wait_for_upload_port=true +adafruit_fruitjam.upload.erase_cmd= +adafruit_fruitjam.serial.disableDTR=false +adafruit_fruitjam.serial.disableRTS=false +adafruit_fruitjam.build.f_cpu=125000000 +adafruit_fruitjam.build.led= +adafruit_fruitjam.build.core=rp2040 +adafruit_fruitjam.build.ldscript=memmap_default.ld +adafruit_fruitjam.build.boot2=none +adafruit_fruitjam.build.usb_manufacturer="Adafruit" +adafruit_fruitjam.build.usb_product="Fruit Jam RP2350" +adafruit_fruitjam.build.psram_length=0x800000 +adafruit_fruitjam.menu.flash.16777216_0=16MB (no FS) +adafruit_fruitjam.menu.flash.16777216_0.upload.maximum_size=16769024 +adafruit_fruitjam.menu.flash.16777216_0.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_0.build.flash_length=16769024 +adafruit_fruitjam.menu.flash.16777216_0.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_0.build.fs_start=285204480 +adafruit_fruitjam.menu.flash.16777216_0.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB) +adafruit_fruitjam.menu.flash.16777216_65536.upload.maximum_size=16703488 +adafruit_fruitjam.menu.flash.16777216_65536.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_65536.build.flash_length=16703488 +adafruit_fruitjam.menu.flash.16777216_65536.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_65536.build.fs_start=285138944 +adafruit_fruitjam.menu.flash.16777216_65536.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB) +adafruit_fruitjam.menu.flash.16777216_131072.upload.maximum_size=16637952 +adafruit_fruitjam.menu.flash.16777216_131072.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_131072.build.flash_length=16637952 +adafruit_fruitjam.menu.flash.16777216_131072.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_131072.build.fs_start=285073408 +adafruit_fruitjam.menu.flash.16777216_131072.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB) +adafruit_fruitjam.menu.flash.16777216_262144.upload.maximum_size=16506880 +adafruit_fruitjam.menu.flash.16777216_262144.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_262144.build.flash_length=16506880 +adafruit_fruitjam.menu.flash.16777216_262144.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_262144.build.fs_start=284942336 +adafruit_fruitjam.menu.flash.16777216_262144.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB) +adafruit_fruitjam.menu.flash.16777216_524288.upload.maximum_size=16244736 +adafruit_fruitjam.menu.flash.16777216_524288.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_524288.build.flash_length=16244736 +adafruit_fruitjam.menu.flash.16777216_524288.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_524288.build.fs_start=284680192 +adafruit_fruitjam.menu.flash.16777216_524288.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB) +adafruit_fruitjam.menu.flash.16777216_1048576.upload.maximum_size=15720448 +adafruit_fruitjam.menu.flash.16777216_1048576.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_1048576.build.flash_length=15720448 +adafruit_fruitjam.menu.flash.16777216_1048576.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_1048576.build.fs_start=284155904 +adafruit_fruitjam.menu.flash.16777216_1048576.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) +adafruit_fruitjam.menu.flash.16777216_2097152.upload.maximum_size=14671872 +adafruit_fruitjam.menu.flash.16777216_2097152.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_2097152.build.flash_length=14671872 +adafruit_fruitjam.menu.flash.16777216_2097152.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_2097152.build.fs_start=283107328 +adafruit_fruitjam.menu.flash.16777216_2097152.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB) +adafruit_fruitjam.menu.flash.16777216_3145728.upload.maximum_size=13623296 +adafruit_fruitjam.menu.flash.16777216_3145728.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_3145728.build.flash_length=13623296 +adafruit_fruitjam.menu.flash.16777216_3145728.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_3145728.build.fs_start=282058752 +adafruit_fruitjam.menu.flash.16777216_3145728.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) +adafruit_fruitjam.menu.flash.16777216_4194304.upload.maximum_size=12574720 +adafruit_fruitjam.menu.flash.16777216_4194304.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_4194304.build.flash_length=12574720 +adafruit_fruitjam.menu.flash.16777216_4194304.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_4194304.build.fs_start=281010176 +adafruit_fruitjam.menu.flash.16777216_4194304.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB) +adafruit_fruitjam.menu.flash.16777216_5242880.upload.maximum_size=11526144 +adafruit_fruitjam.menu.flash.16777216_5242880.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_5242880.build.flash_length=11526144 +adafruit_fruitjam.menu.flash.16777216_5242880.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_5242880.build.fs_start=279961600 +adafruit_fruitjam.menu.flash.16777216_5242880.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB) +adafruit_fruitjam.menu.flash.16777216_6291456.upload.maximum_size=10477568 +adafruit_fruitjam.menu.flash.16777216_6291456.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_6291456.build.flash_length=10477568 +adafruit_fruitjam.menu.flash.16777216_6291456.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_6291456.build.fs_start=278913024 +adafruit_fruitjam.menu.flash.16777216_6291456.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB) +adafruit_fruitjam.menu.flash.16777216_7340032.upload.maximum_size=9428992 +adafruit_fruitjam.menu.flash.16777216_7340032.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_7340032.build.flash_length=9428992 +adafruit_fruitjam.menu.flash.16777216_7340032.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_7340032.build.fs_start=277864448 +adafruit_fruitjam.menu.flash.16777216_7340032.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) +adafruit_fruitjam.menu.flash.16777216_8388608.upload.maximum_size=8380416 +adafruit_fruitjam.menu.flash.16777216_8388608.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_8388608.build.flash_length=8380416 +adafruit_fruitjam.menu.flash.16777216_8388608.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_8388608.build.fs_start=276815872 +adafruit_fruitjam.menu.flash.16777216_8388608.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB) +adafruit_fruitjam.menu.flash.16777216_9437184.upload.maximum_size=7331840 +adafruit_fruitjam.menu.flash.16777216_9437184.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_9437184.build.flash_length=7331840 +adafruit_fruitjam.menu.flash.16777216_9437184.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_9437184.build.fs_start=275767296 +adafruit_fruitjam.menu.flash.16777216_9437184.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB) +adafruit_fruitjam.menu.flash.16777216_10485760.upload.maximum_size=6283264 +adafruit_fruitjam.menu.flash.16777216_10485760.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_10485760.build.flash_length=6283264 +adafruit_fruitjam.menu.flash.16777216_10485760.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_10485760.build.fs_start=274718720 +adafruit_fruitjam.menu.flash.16777216_10485760.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB) +adafruit_fruitjam.menu.flash.16777216_11534336.upload.maximum_size=5234688 +adafruit_fruitjam.menu.flash.16777216_11534336.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_11534336.build.flash_length=5234688 +adafruit_fruitjam.menu.flash.16777216_11534336.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_11534336.build.fs_start=273670144 +adafruit_fruitjam.menu.flash.16777216_11534336.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) +adafruit_fruitjam.menu.flash.16777216_12582912.upload.maximum_size=4186112 +adafruit_fruitjam.menu.flash.16777216_12582912.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_12582912.build.flash_length=4186112 +adafruit_fruitjam.menu.flash.16777216_12582912.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_12582912.build.fs_start=272621568 +adafruit_fruitjam.menu.flash.16777216_12582912.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB) +adafruit_fruitjam.menu.flash.16777216_13631488.upload.maximum_size=3137536 +adafruit_fruitjam.menu.flash.16777216_13631488.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_13631488.build.flash_length=3137536 +adafruit_fruitjam.menu.flash.16777216_13631488.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_13631488.build.fs_start=271572992 +adafruit_fruitjam.menu.flash.16777216_13631488.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) +adafruit_fruitjam.menu.flash.16777216_14680064.upload.maximum_size=2088960 +adafruit_fruitjam.menu.flash.16777216_14680064.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_14680064.build.flash_length=2088960 +adafruit_fruitjam.menu.flash.16777216_14680064.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_14680064.build.fs_start=270524416 +adafruit_fruitjam.menu.flash.16777216_14680064.build.fs_end=285204480 +adafruit_fruitjam.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) +adafruit_fruitjam.menu.flash.16777216_15728640.upload.maximum_size=1040384 +adafruit_fruitjam.menu.flash.16777216_15728640.build.flash_total=16777216 +adafruit_fruitjam.menu.flash.16777216_15728640.build.flash_length=1040384 +adafruit_fruitjam.menu.flash.16777216_15728640.build.eeprom_start=285204480 +adafruit_fruitjam.menu.flash.16777216_15728640.build.fs_start=269475840 +adafruit_fruitjam.menu.flash.16777216_15728640.build.fs_end=285204480 +adafruit_fruitjam.menu.arch.arm=ARM +adafruit_fruitjam.menu.arch.arm.build.chip=rp2350 +adafruit_fruitjam.menu.arch.arm.build.toolchain=arm-none-eabi +adafruit_fruitjam.menu.arch.arm.build.toolchainpkg=pqt-gcc +adafruit_fruitjam.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +adafruit_fruitjam.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +adafruit_fruitjam.menu.arch.arm.build.mcu=cortex-m33 +adafruit_fruitjam.menu.arch.riscv=RISC-V +adafruit_fruitjam.menu.arch.riscv.build.chip=rp2350-riscv +adafruit_fruitjam.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +adafruit_fruitjam.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +adafruit_fruitjam.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +adafruit_fruitjam.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +adafruit_fruitjam.menu.arch.riscv.build.mcu=rv32imac +adafruit_fruitjam.menu.freq.150=150 MHz +adafruit_fruitjam.menu.freq.150.build.f_cpu=150000000L +adafruit_fruitjam.menu.freq.50=50 MHz +adafruit_fruitjam.menu.freq.50.build.f_cpu=50000000L +adafruit_fruitjam.menu.freq.100=100 MHz +adafruit_fruitjam.menu.freq.100.build.f_cpu=100000000L +adafruit_fruitjam.menu.freq.120=120 MHz +adafruit_fruitjam.menu.freq.120.build.f_cpu=120000000L +adafruit_fruitjam.menu.freq.125=125 MHz +adafruit_fruitjam.menu.freq.125.build.f_cpu=125000000L +adafruit_fruitjam.menu.freq.128=128 MHz +adafruit_fruitjam.menu.freq.128.build.f_cpu=128000000L +adafruit_fruitjam.menu.freq.133=133 MHz +adafruit_fruitjam.menu.freq.133.build.f_cpu=133000000L +adafruit_fruitjam.menu.freq.176=176 MHz (Overclock) +adafruit_fruitjam.menu.freq.176.build.f_cpu=176000000L +adafruit_fruitjam.menu.freq.200=200 MHz (Overclock) +adafruit_fruitjam.menu.freq.200.build.f_cpu=200000000L +adafruit_fruitjam.menu.freq.225=225 MHz (Overclock) +adafruit_fruitjam.menu.freq.225.build.f_cpu=225000000L +adafruit_fruitjam.menu.freq.240=240 MHz (Overclock) +adafruit_fruitjam.menu.freq.240.build.f_cpu=240000000L +adafruit_fruitjam.menu.freq.250=250 MHz (Overclock) +adafruit_fruitjam.menu.freq.250.build.f_cpu=250000000L +adafruit_fruitjam.menu.freq.276=276 MHz (Overclock) +adafruit_fruitjam.menu.freq.276.build.f_cpu=276000000L +adafruit_fruitjam.menu.freq.300=300 MHz (Overclock) +adafruit_fruitjam.menu.freq.300.build.f_cpu=300000000L +adafruit_fruitjam.menu.opt.Small=Small (-Os) (standard) +adafruit_fruitjam.menu.opt.Small.build.flags.optimize=-Os +adafruit_fruitjam.menu.opt.Optimize=Optimize (-O) +adafruit_fruitjam.menu.opt.Optimize.build.flags.optimize=-O +adafruit_fruitjam.menu.opt.Optimize2=Optimize More (-O2) +adafruit_fruitjam.menu.opt.Optimize2.build.flags.optimize=-O2 +adafruit_fruitjam.menu.opt.Optimize3=Optimize Even More (-O3) +adafruit_fruitjam.menu.opt.Optimize3.build.flags.optimize=-O3 +adafruit_fruitjam.menu.opt.Fast=Fast (-Ofast) (maybe slower) +adafruit_fruitjam.menu.opt.Fast.build.flags.optimize=-Ofast +adafruit_fruitjam.menu.opt.Debug=Debug (-Og) +adafruit_fruitjam.menu.opt.Debug.build.flags.optimize=-Og +adafruit_fruitjam.menu.opt.Disabled=Disabled (-O0) +adafruit_fruitjam.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_fruitjam.menu.profile.Disabled=Disabled +adafruit_fruitjam.menu.profile.Disabled.build.flags.profile= +adafruit_fruitjam.menu.profile.Enabled=Enabled +adafruit_fruitjam.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +adafruit_fruitjam.menu.rtti.Disabled=Disabled +adafruit_fruitjam.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +adafruit_fruitjam.menu.rtti.Enabled=Enabled +adafruit_fruitjam.menu.rtti.Enabled.build.flags.rtti= +adafruit_fruitjam.menu.stackprotect.Disabled=Disabled +adafruit_fruitjam.menu.stackprotect.Disabled.build.flags.stackprotect= +adafruit_fruitjam.menu.stackprotect.Enabled=Enabled +adafruit_fruitjam.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +adafruit_fruitjam.menu.exceptions.Disabled=Disabled +adafruit_fruitjam.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +adafruit_fruitjam.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +adafruit_fruitjam.menu.exceptions.Enabled=Enabled +adafruit_fruitjam.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +adafruit_fruitjam.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +adafruit_fruitjam.menu.dbgport.Disabled=Disabled +adafruit_fruitjam.menu.dbgport.Disabled.build.debug_port= +adafruit_fruitjam.menu.dbgport.Serial=Serial +adafruit_fruitjam.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +adafruit_fruitjam.menu.dbgport.Serial1=Serial1 +adafruit_fruitjam.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +adafruit_fruitjam.menu.dbgport.Serial2=Serial2 +adafruit_fruitjam.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +adafruit_fruitjam.menu.dbgport.SerialSemi=SerialSemi +adafruit_fruitjam.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +adafruit_fruitjam.menu.dbglvl.None=None +adafruit_fruitjam.menu.dbglvl.None.build.debug_level= +adafruit_fruitjam.menu.dbglvl.Core=Core +adafruit_fruitjam.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +adafruit_fruitjam.menu.dbglvl.SPI=SPI +adafruit_fruitjam.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +adafruit_fruitjam.menu.dbglvl.Wire=Wire +adafruit_fruitjam.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +adafruit_fruitjam.menu.dbglvl.Bluetooth=Bluetooth +adafruit_fruitjam.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_fruitjam.menu.dbglvl.All=All +adafruit_fruitjam.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_fruitjam.menu.dbglvl.NDEBUG=NDEBUG +adafruit_fruitjam.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +adafruit_fruitjam.menu.usbstack.picosdk=Pico SDK +adafruit_fruitjam.menu.usbstack.picosdk.build.usbstack_flags= +adafruit_fruitjam.menu.usbstack.tinyusb=Adafruit TinyUSB +adafruit_fruitjam.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +adafruit_fruitjam.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +adafruit_fruitjam.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +adafruit_fruitjam.menu.usbstack.nousb=No USB +adafruit_fruitjam.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +adafruit_fruitjam.menu.ipbtstack.ipv4only=IPv4 Only +adafruit_fruitjam.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +adafruit_fruitjam.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +adafruit_fruitjam.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +adafruit_fruitjam.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +adafruit_fruitjam.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +adafruit_fruitjam.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +adafruit_fruitjam.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +adafruit_fruitjam.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +adafruit_fruitjam.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +adafruit_fruitjam.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +adafruit_fruitjam.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +adafruit_fruitjam.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +adafruit_fruitjam.menu.uploadmethod.default=Default (UF2) +adafruit_fruitjam.menu.uploadmethod.default.build.ram_length=512k +adafruit_fruitjam.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +adafruit_fruitjam.menu.uploadmethod.default.upload.maximum_data_size=524288 +adafruit_fruitjam.menu.uploadmethod.default.upload.tool=uf2conv +adafruit_fruitjam.menu.uploadmethod.default.upload.tool.default=uf2conv +adafruit_fruitjam.menu.uploadmethod.default.upload.tool.network=uf2conv-network +adafruit_fruitjam.menu.uploadmethod.picotool=Picotool +adafruit_fruitjam.menu.uploadmethod.picotool.build.ram_length=512k +adafruit_fruitjam.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +adafruit_fruitjam.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +adafruit_fruitjam.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +adafruit_fruitjam.menu.uploadmethod.picotool.upload.tool=picotool +adafruit_fruitjam.menu.uploadmethod.picotool.upload.tool.default=picotool +adafruit_fruitjam.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +adafruit_fruitjam.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +adafruit_fruitjam.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +adafruit_fruitjam.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +adafruit_fruitjam.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +adafruit_fruitjam.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + # ----------------------------------- # Amken BunnyBoard # ----------------------------------- @@ -7177,8 +8196,8 @@ amken_bunny.menu.flash.134217728_133169152.build.flash_length=1044480 amken_bunny.menu.flash.134217728_133169152.build.eeprom_start=402649088 amken_bunny.menu.flash.134217728_133169152.build.fs_start=269479936 amken_bunny.menu.flash.134217728_133169152.build.fs_end=402649088 -amken_bunny.menu.freq.133=133 MHz -amken_bunny.menu.freq.133.build.f_cpu=133000000L +amken_bunny.menu.freq.200=200 MHz +amken_bunny.menu.freq.200.build.f_cpu=200000000L amken_bunny.menu.freq.50=50 MHz amken_bunny.menu.freq.50.build.f_cpu=50000000L amken_bunny.menu.freq.100=100 MHz @@ -7189,20 +8208,20 @@ amken_bunny.menu.freq.125=125 MHz amken_bunny.menu.freq.125.build.f_cpu=125000000L amken_bunny.menu.freq.128=128 MHz amken_bunny.menu.freq.128.build.f_cpu=128000000L -amken_bunny.menu.freq.150=150 MHz (Overclock) +amken_bunny.menu.freq.133=133 MHz +amken_bunny.menu.freq.133.build.f_cpu=133000000L +amken_bunny.menu.freq.150=150 MHz amken_bunny.menu.freq.150.build.f_cpu=150000000L -amken_bunny.menu.freq.175=175 MHz (Overclock) -amken_bunny.menu.freq.175.build.f_cpu=175000000L -amken_bunny.menu.freq.200=200 MHz (Overclock) -amken_bunny.menu.freq.200.build.f_cpu=200000000L +amken_bunny.menu.freq.176=176 MHz +amken_bunny.menu.freq.176.build.f_cpu=176000000L amken_bunny.menu.freq.225=225 MHz (Overclock) amken_bunny.menu.freq.225.build.f_cpu=225000000L amken_bunny.menu.freq.240=240 MHz (Overclock) amken_bunny.menu.freq.240.build.f_cpu=240000000L amken_bunny.menu.freq.250=250 MHz (Overclock) amken_bunny.menu.freq.250.build.f_cpu=250000000L -amken_bunny.menu.freq.275=275 MHz (Overclock) -amken_bunny.menu.freq.275.build.f_cpu=275000000L +amken_bunny.menu.freq.276=276 MHz (Overclock) +amken_bunny.menu.freq.276.build.f_cpu=276000000L amken_bunny.menu.freq.300=300 MHz (Overclock) amken_bunny.menu.freq.300.build.f_cpu=300000000L amken_bunny.menu.opt.Small=Small (-Os) (standard) @@ -7230,7 +8249,7 @@ amken_bunny.menu.rtti.Enabled.build.flags.rtti= amken_bunny.menu.stackprotect.Disabled=Disabled amken_bunny.menu.stackprotect.Disabled.build.flags.stackprotect= amken_bunny.menu.stackprotect.Enabled=Enabled -amken_bunny.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +amken_bunny.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all amken_bunny.menu.exceptions.Disabled=Disabled amken_bunny.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions amken_bunny.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -7598,8 +8617,8 @@ amken_revelop.menu.flash.33554432_32505856.build.flash_length=1044480 amken_revelop.menu.flash.33554432_32505856.build.eeprom_start=301985792 amken_revelop.menu.flash.33554432_32505856.build.fs_start=269479936 amken_revelop.menu.flash.33554432_32505856.build.fs_end=301985792 -amken_revelop.menu.freq.133=133 MHz -amken_revelop.menu.freq.133.build.f_cpu=133000000L +amken_revelop.menu.freq.200=200 MHz +amken_revelop.menu.freq.200.build.f_cpu=200000000L amken_revelop.menu.freq.50=50 MHz amken_revelop.menu.freq.50.build.f_cpu=50000000L amken_revelop.menu.freq.100=100 MHz @@ -7610,20 +8629,20 @@ amken_revelop.menu.freq.125=125 MHz amken_revelop.menu.freq.125.build.f_cpu=125000000L amken_revelop.menu.freq.128=128 MHz amken_revelop.menu.freq.128.build.f_cpu=128000000L -amken_revelop.menu.freq.150=150 MHz (Overclock) +amken_revelop.menu.freq.133=133 MHz +amken_revelop.menu.freq.133.build.f_cpu=133000000L +amken_revelop.menu.freq.150=150 MHz amken_revelop.menu.freq.150.build.f_cpu=150000000L -amken_revelop.menu.freq.175=175 MHz (Overclock) -amken_revelop.menu.freq.175.build.f_cpu=175000000L -amken_revelop.menu.freq.200=200 MHz (Overclock) -amken_revelop.menu.freq.200.build.f_cpu=200000000L +amken_revelop.menu.freq.176=176 MHz +amken_revelop.menu.freq.176.build.f_cpu=176000000L amken_revelop.menu.freq.225=225 MHz (Overclock) amken_revelop.menu.freq.225.build.f_cpu=225000000L amken_revelop.menu.freq.240=240 MHz (Overclock) amken_revelop.menu.freq.240.build.f_cpu=240000000L amken_revelop.menu.freq.250=250 MHz (Overclock) amken_revelop.menu.freq.250.build.f_cpu=250000000L -amken_revelop.menu.freq.275=275 MHz (Overclock) -amken_revelop.menu.freq.275.build.f_cpu=275000000L +amken_revelop.menu.freq.276=276 MHz (Overclock) +amken_revelop.menu.freq.276.build.f_cpu=276000000L amken_revelop.menu.freq.300=300 MHz (Overclock) amken_revelop.menu.freq.300.build.f_cpu=300000000L amken_revelop.menu.opt.Small=Small (-Os) (standard) @@ -7651,7 +8670,7 @@ amken_revelop.menu.rtti.Enabled.build.flags.rtti= amken_revelop.menu.stackprotect.Disabled=Disabled amken_revelop.menu.stackprotect.Disabled.build.flags.stackprotect= amken_revelop.menu.stackprotect.Enabled=Enabled -amken_revelop.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +amken_revelop.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all amken_revelop.menu.exceptions.Disabled=Disabled amken_revelop.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions amken_revelop.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -8019,8 +9038,8 @@ amken_revelop_plus.menu.flash.33554432_32505856.build.flash_length=1044480 amken_revelop_plus.menu.flash.33554432_32505856.build.eeprom_start=301985792 amken_revelop_plus.menu.flash.33554432_32505856.build.fs_start=269479936 amken_revelop_plus.menu.flash.33554432_32505856.build.fs_end=301985792 -amken_revelop_plus.menu.freq.133=133 MHz -amken_revelop_plus.menu.freq.133.build.f_cpu=133000000L +amken_revelop_plus.menu.freq.200=200 MHz +amken_revelop_plus.menu.freq.200.build.f_cpu=200000000L amken_revelop_plus.menu.freq.50=50 MHz amken_revelop_plus.menu.freq.50.build.f_cpu=50000000L amken_revelop_plus.menu.freq.100=100 MHz @@ -8031,20 +9050,20 @@ amken_revelop_plus.menu.freq.125=125 MHz amken_revelop_plus.menu.freq.125.build.f_cpu=125000000L amken_revelop_plus.menu.freq.128=128 MHz amken_revelop_plus.menu.freq.128.build.f_cpu=128000000L -amken_revelop_plus.menu.freq.150=150 MHz (Overclock) +amken_revelop_plus.menu.freq.133=133 MHz +amken_revelop_plus.menu.freq.133.build.f_cpu=133000000L +amken_revelop_plus.menu.freq.150=150 MHz amken_revelop_plus.menu.freq.150.build.f_cpu=150000000L -amken_revelop_plus.menu.freq.175=175 MHz (Overclock) -amken_revelop_plus.menu.freq.175.build.f_cpu=175000000L -amken_revelop_plus.menu.freq.200=200 MHz (Overclock) -amken_revelop_plus.menu.freq.200.build.f_cpu=200000000L +amken_revelop_plus.menu.freq.176=176 MHz +amken_revelop_plus.menu.freq.176.build.f_cpu=176000000L amken_revelop_plus.menu.freq.225=225 MHz (Overclock) amken_revelop_plus.menu.freq.225.build.f_cpu=225000000L amken_revelop_plus.menu.freq.240=240 MHz (Overclock) amken_revelop_plus.menu.freq.240.build.f_cpu=240000000L amken_revelop_plus.menu.freq.250=250 MHz (Overclock) amken_revelop_plus.menu.freq.250.build.f_cpu=250000000L -amken_revelop_plus.menu.freq.275=275 MHz (Overclock) -amken_revelop_plus.menu.freq.275.build.f_cpu=275000000L +amken_revelop_plus.menu.freq.276=276 MHz (Overclock) +amken_revelop_plus.menu.freq.276.build.f_cpu=276000000L amken_revelop_plus.menu.freq.300=300 MHz (Overclock) amken_revelop_plus.menu.freq.300.build.f_cpu=300000000L amken_revelop_plus.menu.opt.Small=Small (-Os) (standard) @@ -8072,7 +9091,7 @@ amken_revelop_plus.menu.rtti.Enabled.build.flags.rtti= amken_revelop_plus.menu.stackprotect.Disabled=Disabled amken_revelop_plus.menu.stackprotect.Disabled.build.flags.stackprotect= amken_revelop_plus.menu.stackprotect.Enabled=Enabled -amken_revelop_plus.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +amken_revelop_plus.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all amken_revelop_plus.menu.exceptions.Disabled=Disabled amken_revelop_plus.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions amken_revelop_plus.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -8328,8 +9347,8 @@ amken_revelop_es.menu.flash.16777216_15728640.build.flash_length=1044480 amken_revelop_es.menu.flash.16777216_15728640.build.eeprom_start=285208576 amken_revelop_es.menu.flash.16777216_15728640.build.fs_start=269479936 amken_revelop_es.menu.flash.16777216_15728640.build.fs_end=285208576 -amken_revelop_es.menu.freq.133=133 MHz -amken_revelop_es.menu.freq.133.build.f_cpu=133000000L +amken_revelop_es.menu.freq.200=200 MHz +amken_revelop_es.menu.freq.200.build.f_cpu=200000000L amken_revelop_es.menu.freq.50=50 MHz amken_revelop_es.menu.freq.50.build.f_cpu=50000000L amken_revelop_es.menu.freq.100=100 MHz @@ -8340,20 +9359,20 @@ amken_revelop_es.menu.freq.125=125 MHz amken_revelop_es.menu.freq.125.build.f_cpu=125000000L amken_revelop_es.menu.freq.128=128 MHz amken_revelop_es.menu.freq.128.build.f_cpu=128000000L -amken_revelop_es.menu.freq.150=150 MHz (Overclock) +amken_revelop_es.menu.freq.133=133 MHz +amken_revelop_es.menu.freq.133.build.f_cpu=133000000L +amken_revelop_es.menu.freq.150=150 MHz amken_revelop_es.menu.freq.150.build.f_cpu=150000000L -amken_revelop_es.menu.freq.175=175 MHz (Overclock) -amken_revelop_es.menu.freq.175.build.f_cpu=175000000L -amken_revelop_es.menu.freq.200=200 MHz (Overclock) -amken_revelop_es.menu.freq.200.build.f_cpu=200000000L +amken_revelop_es.menu.freq.176=176 MHz +amken_revelop_es.menu.freq.176.build.f_cpu=176000000L amken_revelop_es.menu.freq.225=225 MHz (Overclock) amken_revelop_es.menu.freq.225.build.f_cpu=225000000L amken_revelop_es.menu.freq.240=240 MHz (Overclock) amken_revelop_es.menu.freq.240.build.f_cpu=240000000L amken_revelop_es.menu.freq.250=250 MHz (Overclock) amken_revelop_es.menu.freq.250.build.f_cpu=250000000L -amken_revelop_es.menu.freq.275=275 MHz (Overclock) -amken_revelop_es.menu.freq.275.build.f_cpu=275000000L +amken_revelop_es.menu.freq.276=276 MHz (Overclock) +amken_revelop_es.menu.freq.276.build.f_cpu=276000000L amken_revelop_es.menu.freq.300=300 MHz (Overclock) amken_revelop_es.menu.freq.300.build.f_cpu=300000000L amken_revelop_es.menu.opt.Small=Small (-Os) (standard) @@ -8381,7 +9400,7 @@ amken_revelop_es.menu.rtti.Enabled.build.flags.rtti= amken_revelop_es.menu.stackprotect.Disabled=Disabled amken_revelop_es.menu.stackprotect.Disabled.build.flags.stackprotect= amken_revelop_es.menu.stackprotect.Enabled=Enabled -amken_revelop_es.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +amken_revelop_es.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all amken_revelop_es.menu.exceptions.Disabled=Disabled amken_revelop_es.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions amken_revelop_es.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -8649,8 +9668,8 @@ jumperless_v1.menu.flash.16777216_15728640.build.flash_length=1044480 jumperless_v1.menu.flash.16777216_15728640.build.eeprom_start=285208576 jumperless_v1.menu.flash.16777216_15728640.build.fs_start=269479936 jumperless_v1.menu.flash.16777216_15728640.build.fs_end=285208576 -jumperless_v1.menu.freq.133=133 MHz -jumperless_v1.menu.freq.133.build.f_cpu=133000000L +jumperless_v1.menu.freq.200=200 MHz +jumperless_v1.menu.freq.200.build.f_cpu=200000000L jumperless_v1.menu.freq.50=50 MHz jumperless_v1.menu.freq.50.build.f_cpu=50000000L jumperless_v1.menu.freq.100=100 MHz @@ -8661,20 +9680,20 @@ jumperless_v1.menu.freq.125=125 MHz jumperless_v1.menu.freq.125.build.f_cpu=125000000L jumperless_v1.menu.freq.128=128 MHz jumperless_v1.menu.freq.128.build.f_cpu=128000000L -jumperless_v1.menu.freq.150=150 MHz (Overclock) +jumperless_v1.menu.freq.133=133 MHz +jumperless_v1.menu.freq.133.build.f_cpu=133000000L +jumperless_v1.menu.freq.150=150 MHz jumperless_v1.menu.freq.150.build.f_cpu=150000000L -jumperless_v1.menu.freq.175=175 MHz (Overclock) -jumperless_v1.menu.freq.175.build.f_cpu=175000000L -jumperless_v1.menu.freq.200=200 MHz (Overclock) -jumperless_v1.menu.freq.200.build.f_cpu=200000000L +jumperless_v1.menu.freq.176=176 MHz +jumperless_v1.menu.freq.176.build.f_cpu=176000000L jumperless_v1.menu.freq.225=225 MHz (Overclock) jumperless_v1.menu.freq.225.build.f_cpu=225000000L jumperless_v1.menu.freq.240=240 MHz (Overclock) jumperless_v1.menu.freq.240.build.f_cpu=240000000L jumperless_v1.menu.freq.250=250 MHz (Overclock) jumperless_v1.menu.freq.250.build.f_cpu=250000000L -jumperless_v1.menu.freq.275=275 MHz (Overclock) -jumperless_v1.menu.freq.275.build.f_cpu=275000000L +jumperless_v1.menu.freq.276=276 MHz (Overclock) +jumperless_v1.menu.freq.276.build.f_cpu=276000000L jumperless_v1.menu.freq.300=300 MHz (Overclock) jumperless_v1.menu.freq.300.build.f_cpu=300000000L jumperless_v1.menu.opt.Small=Small (-Os) (standard) @@ -8702,7 +9721,7 @@ jumperless_v1.menu.rtti.Enabled.build.flags.rtti= jumperless_v1.menu.stackprotect.Disabled=Disabled jumperless_v1.menu.stackprotect.Disabled.build.flags.stackprotect= jumperless_v1.menu.stackprotect.Enabled=Enabled -jumperless_v1.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +jumperless_v1.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all jumperless_v1.menu.exceptions.Disabled=Disabled jumperless_v1.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions jumperless_v1.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -8993,8 +10012,8 @@ jumperless_v5.menu.freq.128=128 MHz jumperless_v5.menu.freq.128.build.f_cpu=128000000L jumperless_v5.menu.freq.133=133 MHz jumperless_v5.menu.freq.133.build.f_cpu=133000000L -jumperless_v5.menu.freq.175=175 MHz (Overclock) -jumperless_v5.menu.freq.175.build.f_cpu=175000000L +jumperless_v5.menu.freq.176=176 MHz (Overclock) +jumperless_v5.menu.freq.176.build.f_cpu=176000000L jumperless_v5.menu.freq.200=200 MHz (Overclock) jumperless_v5.menu.freq.200.build.f_cpu=200000000L jumperless_v5.menu.freq.225=225 MHz (Overclock) @@ -9003,8 +10022,8 @@ jumperless_v5.menu.freq.240=240 MHz (Overclock) jumperless_v5.menu.freq.240.build.f_cpu=240000000L jumperless_v5.menu.freq.250=250 MHz (Overclock) jumperless_v5.menu.freq.250.build.f_cpu=250000000L -jumperless_v5.menu.freq.275=275 MHz (Overclock) -jumperless_v5.menu.freq.275.build.f_cpu=275000000L +jumperless_v5.menu.freq.276=276 MHz (Overclock) +jumperless_v5.menu.freq.276.build.f_cpu=276000000L jumperless_v5.menu.freq.300=300 MHz (Overclock) jumperless_v5.menu.freq.300.build.f_cpu=300000000L jumperless_v5.menu.opt.Small=Small (-Os) (standard) @@ -9032,7 +10051,7 @@ jumperless_v5.menu.rtti.Enabled.build.flags.rtti= jumperless_v5.menu.stackprotect.Disabled=Disabled jumperless_v5.menu.stackprotect.Disabled.build.flags.stackprotect= jumperless_v5.menu.stackprotect.Enabled=Enabled -jumperless_v5.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +jumperless_v5.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all jumperless_v5.menu.exceptions.Disabled=Disabled jumperless_v5.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions jumperless_v5.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -9299,8 +10318,8 @@ arduino_nano_connect.menu.flash.16777216_15728640.build.flash_length=1044480 arduino_nano_connect.menu.flash.16777216_15728640.build.eeprom_start=285208576 arduino_nano_connect.menu.flash.16777216_15728640.build.fs_start=269479936 arduino_nano_connect.menu.flash.16777216_15728640.build.fs_end=285208576 -arduino_nano_connect.menu.freq.133=133 MHz -arduino_nano_connect.menu.freq.133.build.f_cpu=133000000L +arduino_nano_connect.menu.freq.200=200 MHz +arduino_nano_connect.menu.freq.200.build.f_cpu=200000000L arduino_nano_connect.menu.freq.50=50 MHz arduino_nano_connect.menu.freq.50.build.f_cpu=50000000L arduino_nano_connect.menu.freq.100=100 MHz @@ -9311,20 +10330,20 @@ arduino_nano_connect.menu.freq.125=125 MHz arduino_nano_connect.menu.freq.125.build.f_cpu=125000000L arduino_nano_connect.menu.freq.128=128 MHz arduino_nano_connect.menu.freq.128.build.f_cpu=128000000L -arduino_nano_connect.menu.freq.150=150 MHz (Overclock) +arduino_nano_connect.menu.freq.133=133 MHz +arduino_nano_connect.menu.freq.133.build.f_cpu=133000000L +arduino_nano_connect.menu.freq.150=150 MHz arduino_nano_connect.menu.freq.150.build.f_cpu=150000000L -arduino_nano_connect.menu.freq.175=175 MHz (Overclock) -arduino_nano_connect.menu.freq.175.build.f_cpu=175000000L -arduino_nano_connect.menu.freq.200=200 MHz (Overclock) -arduino_nano_connect.menu.freq.200.build.f_cpu=200000000L +arduino_nano_connect.menu.freq.176=176 MHz +arduino_nano_connect.menu.freq.176.build.f_cpu=176000000L arduino_nano_connect.menu.freq.225=225 MHz (Overclock) arduino_nano_connect.menu.freq.225.build.f_cpu=225000000L arduino_nano_connect.menu.freq.240=240 MHz (Overclock) arduino_nano_connect.menu.freq.240.build.f_cpu=240000000L arduino_nano_connect.menu.freq.250=250 MHz (Overclock) arduino_nano_connect.menu.freq.250.build.f_cpu=250000000L -arduino_nano_connect.menu.freq.275=275 MHz (Overclock) -arduino_nano_connect.menu.freq.275.build.f_cpu=275000000L +arduino_nano_connect.menu.freq.276=276 MHz (Overclock) +arduino_nano_connect.menu.freq.276.build.f_cpu=276000000L arduino_nano_connect.menu.freq.300=300 MHz (Overclock) arduino_nano_connect.menu.freq.300.build.f_cpu=300000000L arduino_nano_connect.menu.opt.Small=Small (-Os) (standard) @@ -9352,7 +10371,7 @@ arduino_nano_connect.menu.rtti.Enabled.build.flags.rtti= arduino_nano_connect.menu.stackprotect.Disabled=Disabled arduino_nano_connect.menu.stackprotect.Disabled.build.flags.stackprotect= arduino_nano_connect.menu.stackprotect.Enabled=Enabled -arduino_nano_connect.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +arduino_nano_connect.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all arduino_nano_connect.menu.exceptions.Disabled=Disabled arduino_nano_connect.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions arduino_nano_connect.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -9537,8 +10556,8 @@ artronshop_rp2_nano.menu.flash.2097152_1048576.build.flash_length=1044480 artronshop_rp2_nano.menu.flash.2097152_1048576.build.eeprom_start=270528512 artronshop_rp2_nano.menu.flash.2097152_1048576.build.fs_start=269479936 artronshop_rp2_nano.menu.flash.2097152_1048576.build.fs_end=270528512 -artronshop_rp2_nano.menu.freq.133=133 MHz -artronshop_rp2_nano.menu.freq.133.build.f_cpu=133000000L +artronshop_rp2_nano.menu.freq.200=200 MHz +artronshop_rp2_nano.menu.freq.200.build.f_cpu=200000000L artronshop_rp2_nano.menu.freq.50=50 MHz artronshop_rp2_nano.menu.freq.50.build.f_cpu=50000000L artronshop_rp2_nano.menu.freq.100=100 MHz @@ -9549,20 +10568,20 @@ artronshop_rp2_nano.menu.freq.125=125 MHz artronshop_rp2_nano.menu.freq.125.build.f_cpu=125000000L artronshop_rp2_nano.menu.freq.128=128 MHz artronshop_rp2_nano.menu.freq.128.build.f_cpu=128000000L -artronshop_rp2_nano.menu.freq.150=150 MHz (Overclock) +artronshop_rp2_nano.menu.freq.133=133 MHz +artronshop_rp2_nano.menu.freq.133.build.f_cpu=133000000L +artronshop_rp2_nano.menu.freq.150=150 MHz artronshop_rp2_nano.menu.freq.150.build.f_cpu=150000000L -artronshop_rp2_nano.menu.freq.175=175 MHz (Overclock) -artronshop_rp2_nano.menu.freq.175.build.f_cpu=175000000L -artronshop_rp2_nano.menu.freq.200=200 MHz (Overclock) -artronshop_rp2_nano.menu.freq.200.build.f_cpu=200000000L +artronshop_rp2_nano.menu.freq.176=176 MHz +artronshop_rp2_nano.menu.freq.176.build.f_cpu=176000000L artronshop_rp2_nano.menu.freq.225=225 MHz (Overclock) artronshop_rp2_nano.menu.freq.225.build.f_cpu=225000000L artronshop_rp2_nano.menu.freq.240=240 MHz (Overclock) artronshop_rp2_nano.menu.freq.240.build.f_cpu=240000000L artronshop_rp2_nano.menu.freq.250=250 MHz (Overclock) artronshop_rp2_nano.menu.freq.250.build.f_cpu=250000000L -artronshop_rp2_nano.menu.freq.275=275 MHz (Overclock) -artronshop_rp2_nano.menu.freq.275.build.f_cpu=275000000L +artronshop_rp2_nano.menu.freq.276=276 MHz (Overclock) +artronshop_rp2_nano.menu.freq.276.build.f_cpu=276000000L artronshop_rp2_nano.menu.freq.300=300 MHz (Overclock) artronshop_rp2_nano.menu.freq.300.build.f_cpu=300000000L artronshop_rp2_nano.menu.opt.Small=Small (-Os) (standard) @@ -9590,7 +10609,7 @@ artronshop_rp2_nano.menu.rtti.Enabled.build.flags.rtti= artronshop_rp2_nano.menu.stackprotect.Disabled=Disabled artronshop_rp2_nano.menu.stackprotect.Disabled.build.flags.stackprotect= artronshop_rp2_nano.menu.stackprotect.Enabled=Enabled -artronshop_rp2_nano.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +artronshop_rp2_nano.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all artronshop_rp2_nano.menu.exceptions.Disabled=Disabled artronshop_rp2_nano.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions artronshop_rp2_nano.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -9873,8 +10892,8 @@ breadstick_raspberry.menu.flash.16777216_15728640.build.flash_length=1044480 breadstick_raspberry.menu.flash.16777216_15728640.build.eeprom_start=285208576 breadstick_raspberry.menu.flash.16777216_15728640.build.fs_start=269479936 breadstick_raspberry.menu.flash.16777216_15728640.build.fs_end=285208576 -breadstick_raspberry.menu.freq.133=133 MHz -breadstick_raspberry.menu.freq.133.build.f_cpu=133000000L +breadstick_raspberry.menu.freq.200=200 MHz +breadstick_raspberry.menu.freq.200.build.f_cpu=200000000L breadstick_raspberry.menu.freq.50=50 MHz breadstick_raspberry.menu.freq.50.build.f_cpu=50000000L breadstick_raspberry.menu.freq.100=100 MHz @@ -9885,20 +10904,20 @@ breadstick_raspberry.menu.freq.125=125 MHz breadstick_raspberry.menu.freq.125.build.f_cpu=125000000L breadstick_raspberry.menu.freq.128=128 MHz breadstick_raspberry.menu.freq.128.build.f_cpu=128000000L -breadstick_raspberry.menu.freq.150=150 MHz (Overclock) +breadstick_raspberry.menu.freq.133=133 MHz +breadstick_raspberry.menu.freq.133.build.f_cpu=133000000L +breadstick_raspberry.menu.freq.150=150 MHz breadstick_raspberry.menu.freq.150.build.f_cpu=150000000L -breadstick_raspberry.menu.freq.175=175 MHz (Overclock) -breadstick_raspberry.menu.freq.175.build.f_cpu=175000000L -breadstick_raspberry.menu.freq.200=200 MHz (Overclock) -breadstick_raspberry.menu.freq.200.build.f_cpu=200000000L +breadstick_raspberry.menu.freq.176=176 MHz +breadstick_raspberry.menu.freq.176.build.f_cpu=176000000L breadstick_raspberry.menu.freq.225=225 MHz (Overclock) breadstick_raspberry.menu.freq.225.build.f_cpu=225000000L breadstick_raspberry.menu.freq.240=240 MHz (Overclock) breadstick_raspberry.menu.freq.240.build.f_cpu=240000000L breadstick_raspberry.menu.freq.250=250 MHz (Overclock) breadstick_raspberry.menu.freq.250.build.f_cpu=250000000L -breadstick_raspberry.menu.freq.275=275 MHz (Overclock) -breadstick_raspberry.menu.freq.275.build.f_cpu=275000000L +breadstick_raspberry.menu.freq.276=276 MHz (Overclock) +breadstick_raspberry.menu.freq.276.build.f_cpu=276000000L breadstick_raspberry.menu.freq.300=300 MHz (Overclock) breadstick_raspberry.menu.freq.300.build.f_cpu=300000000L breadstick_raspberry.menu.opt.Small=Small (-Os) (standard) @@ -9926,7 +10945,7 @@ breadstick_raspberry.menu.rtti.Enabled.build.flags.rtti= breadstick_raspberry.menu.stackprotect.Disabled=Disabled breadstick_raspberry.menu.stackprotect.Disabled.build.flags.stackprotect= breadstick_raspberry.menu.stackprotect.Enabled=Enabled -breadstick_raspberry.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +breadstick_raspberry.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all breadstick_raspberry.menu.exceptions.Disabled=Disabled breadstick_raspberry.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions breadstick_raspberry.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -10154,8 +11173,8 @@ bridgetek_idm2040_7a.menu.flash.8388608_7340032.build.flash_length=1044480 bridgetek_idm2040_7a.menu.flash.8388608_7340032.build.eeprom_start=276819968 bridgetek_idm2040_7a.menu.flash.8388608_7340032.build.fs_start=269479936 bridgetek_idm2040_7a.menu.flash.8388608_7340032.build.fs_end=276819968 -bridgetek_idm2040_7a.menu.freq.133=133 MHz -bridgetek_idm2040_7a.menu.freq.133.build.f_cpu=133000000L +bridgetek_idm2040_7a.menu.freq.200=200 MHz +bridgetek_idm2040_7a.menu.freq.200.build.f_cpu=200000000L bridgetek_idm2040_7a.menu.freq.50=50 MHz bridgetek_idm2040_7a.menu.freq.50.build.f_cpu=50000000L bridgetek_idm2040_7a.menu.freq.100=100 MHz @@ -10166,20 +11185,20 @@ bridgetek_idm2040_7a.menu.freq.125=125 MHz bridgetek_idm2040_7a.menu.freq.125.build.f_cpu=125000000L bridgetek_idm2040_7a.menu.freq.128=128 MHz bridgetek_idm2040_7a.menu.freq.128.build.f_cpu=128000000L -bridgetek_idm2040_7a.menu.freq.150=150 MHz (Overclock) +bridgetek_idm2040_7a.menu.freq.133=133 MHz +bridgetek_idm2040_7a.menu.freq.133.build.f_cpu=133000000L +bridgetek_idm2040_7a.menu.freq.150=150 MHz bridgetek_idm2040_7a.menu.freq.150.build.f_cpu=150000000L -bridgetek_idm2040_7a.menu.freq.175=175 MHz (Overclock) -bridgetek_idm2040_7a.menu.freq.175.build.f_cpu=175000000L -bridgetek_idm2040_7a.menu.freq.200=200 MHz (Overclock) -bridgetek_idm2040_7a.menu.freq.200.build.f_cpu=200000000L +bridgetek_idm2040_7a.menu.freq.176=176 MHz +bridgetek_idm2040_7a.menu.freq.176.build.f_cpu=176000000L bridgetek_idm2040_7a.menu.freq.225=225 MHz (Overclock) bridgetek_idm2040_7a.menu.freq.225.build.f_cpu=225000000L bridgetek_idm2040_7a.menu.freq.240=240 MHz (Overclock) bridgetek_idm2040_7a.menu.freq.240.build.f_cpu=240000000L bridgetek_idm2040_7a.menu.freq.250=250 MHz (Overclock) bridgetek_idm2040_7a.menu.freq.250.build.f_cpu=250000000L -bridgetek_idm2040_7a.menu.freq.275=275 MHz (Overclock) -bridgetek_idm2040_7a.menu.freq.275.build.f_cpu=275000000L +bridgetek_idm2040_7a.menu.freq.276=276 MHz (Overclock) +bridgetek_idm2040_7a.menu.freq.276.build.f_cpu=276000000L bridgetek_idm2040_7a.menu.freq.300=300 MHz (Overclock) bridgetek_idm2040_7a.menu.freq.300.build.f_cpu=300000000L bridgetek_idm2040_7a.menu.opt.Small=Small (-Os) (standard) @@ -10207,7 +11226,7 @@ bridgetek_idm2040_7a.menu.rtti.Enabled.build.flags.rtti= bridgetek_idm2040_7a.menu.stackprotect.Disabled=Disabled bridgetek_idm2040_7a.menu.stackprotect.Disabled.build.flags.stackprotect= bridgetek_idm2040_7a.menu.stackprotect.Enabled=Enabled -bridgetek_idm2040_7a.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +bridgetek_idm2040_7a.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all bridgetek_idm2040_7a.menu.exceptions.Disabled=Disabled bridgetek_idm2040_7a.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions bridgetek_idm2040_7a.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -10411,8 +11430,8 @@ bridgetek_idm2040_43a.menu.flash.8388608_7340032.build.flash_length=1044480 bridgetek_idm2040_43a.menu.flash.8388608_7340032.build.eeprom_start=276819968 bridgetek_idm2040_43a.menu.flash.8388608_7340032.build.fs_start=269479936 bridgetek_idm2040_43a.menu.flash.8388608_7340032.build.fs_end=276819968 -bridgetek_idm2040_43a.menu.freq.133=133 MHz -bridgetek_idm2040_43a.menu.freq.133.build.f_cpu=133000000L +bridgetek_idm2040_43a.menu.freq.200=200 MHz +bridgetek_idm2040_43a.menu.freq.200.build.f_cpu=200000000L bridgetek_idm2040_43a.menu.freq.50=50 MHz bridgetek_idm2040_43a.menu.freq.50.build.f_cpu=50000000L bridgetek_idm2040_43a.menu.freq.100=100 MHz @@ -10423,20 +11442,20 @@ bridgetek_idm2040_43a.menu.freq.125=125 MHz bridgetek_idm2040_43a.menu.freq.125.build.f_cpu=125000000L bridgetek_idm2040_43a.menu.freq.128=128 MHz bridgetek_idm2040_43a.menu.freq.128.build.f_cpu=128000000L -bridgetek_idm2040_43a.menu.freq.150=150 MHz (Overclock) +bridgetek_idm2040_43a.menu.freq.133=133 MHz +bridgetek_idm2040_43a.menu.freq.133.build.f_cpu=133000000L +bridgetek_idm2040_43a.menu.freq.150=150 MHz bridgetek_idm2040_43a.menu.freq.150.build.f_cpu=150000000L -bridgetek_idm2040_43a.menu.freq.175=175 MHz (Overclock) -bridgetek_idm2040_43a.menu.freq.175.build.f_cpu=175000000L -bridgetek_idm2040_43a.menu.freq.200=200 MHz (Overclock) -bridgetek_idm2040_43a.menu.freq.200.build.f_cpu=200000000L +bridgetek_idm2040_43a.menu.freq.176=176 MHz +bridgetek_idm2040_43a.menu.freq.176.build.f_cpu=176000000L bridgetek_idm2040_43a.menu.freq.225=225 MHz (Overclock) bridgetek_idm2040_43a.menu.freq.225.build.f_cpu=225000000L bridgetek_idm2040_43a.menu.freq.240=240 MHz (Overclock) bridgetek_idm2040_43a.menu.freq.240.build.f_cpu=240000000L bridgetek_idm2040_43a.menu.freq.250=250 MHz (Overclock) bridgetek_idm2040_43a.menu.freq.250.build.f_cpu=250000000L -bridgetek_idm2040_43a.menu.freq.275=275 MHz (Overclock) -bridgetek_idm2040_43a.menu.freq.275.build.f_cpu=275000000L +bridgetek_idm2040_43a.menu.freq.276=276 MHz (Overclock) +bridgetek_idm2040_43a.menu.freq.276.build.f_cpu=276000000L bridgetek_idm2040_43a.menu.freq.300=300 MHz (Overclock) bridgetek_idm2040_43a.menu.freq.300.build.f_cpu=300000000L bridgetek_idm2040_43a.menu.opt.Small=Small (-Os) (standard) @@ -10464,7 +11483,7 @@ bridgetek_idm2040_43a.menu.rtti.Enabled.build.flags.rtti= bridgetek_idm2040_43a.menu.stackprotect.Disabled=Disabled bridgetek_idm2040_43a.menu.stackprotect.Disabled.build.flags.stackprotect= bridgetek_idm2040_43a.menu.stackprotect.Enabled=Enabled -bridgetek_idm2040_43a.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +bridgetek_idm2040_43a.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all bridgetek_idm2040_43a.menu.exceptions.Disabled=Disabled bridgetek_idm2040_43a.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions bridgetek_idm2040_43a.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -10672,8 +11691,8 @@ cytron_iriv_io_controller.menu.freq.128=128 MHz cytron_iriv_io_controller.menu.freq.128.build.f_cpu=128000000L cytron_iriv_io_controller.menu.freq.133=133 MHz cytron_iriv_io_controller.menu.freq.133.build.f_cpu=133000000L -cytron_iriv_io_controller.menu.freq.175=175 MHz (Overclock) -cytron_iriv_io_controller.menu.freq.175.build.f_cpu=175000000L +cytron_iriv_io_controller.menu.freq.176=176 MHz (Overclock) +cytron_iriv_io_controller.menu.freq.176.build.f_cpu=176000000L cytron_iriv_io_controller.menu.freq.200=200 MHz (Overclock) cytron_iriv_io_controller.menu.freq.200.build.f_cpu=200000000L cytron_iriv_io_controller.menu.freq.225=225 MHz (Overclock) @@ -10682,8 +11701,8 @@ cytron_iriv_io_controller.menu.freq.240=240 MHz (Overclock) cytron_iriv_io_controller.menu.freq.240.build.f_cpu=240000000L cytron_iriv_io_controller.menu.freq.250=250 MHz (Overclock) cytron_iriv_io_controller.menu.freq.250.build.f_cpu=250000000L -cytron_iriv_io_controller.menu.freq.275=275 MHz (Overclock) -cytron_iriv_io_controller.menu.freq.275.build.f_cpu=275000000L +cytron_iriv_io_controller.menu.freq.276=276 MHz (Overclock) +cytron_iriv_io_controller.menu.freq.276.build.f_cpu=276000000L cytron_iriv_io_controller.menu.freq.300=300 MHz (Overclock) cytron_iriv_io_controller.menu.freq.300.build.f_cpu=300000000L cytron_iriv_io_controller.menu.opt.Small=Small (-Os) (standard) @@ -10711,7 +11730,7 @@ cytron_iriv_io_controller.menu.rtti.Enabled.build.flags.rtti= cytron_iriv_io_controller.menu.stackprotect.Disabled=Disabled cytron_iriv_io_controller.menu.stackprotect.Disabled.build.flags.stackprotect= cytron_iriv_io_controller.menu.stackprotect.Enabled=Enabled -cytron_iriv_io_controller.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +cytron_iriv_io_controller.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all cytron_iriv_io_controller.menu.exceptions.Disabled=Disabled cytron_iriv_io_controller.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions cytron_iriv_io_controller.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -10896,8 +11915,8 @@ cytron_maker_nano_rp2040.menu.flash.2097152_1048576.build.flash_length=1044480 cytron_maker_nano_rp2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 cytron_maker_nano_rp2040.menu.flash.2097152_1048576.build.fs_start=269479936 cytron_maker_nano_rp2040.menu.flash.2097152_1048576.build.fs_end=270528512 -cytron_maker_nano_rp2040.menu.freq.133=133 MHz -cytron_maker_nano_rp2040.menu.freq.133.build.f_cpu=133000000L +cytron_maker_nano_rp2040.menu.freq.200=200 MHz +cytron_maker_nano_rp2040.menu.freq.200.build.f_cpu=200000000L cytron_maker_nano_rp2040.menu.freq.50=50 MHz cytron_maker_nano_rp2040.menu.freq.50.build.f_cpu=50000000L cytron_maker_nano_rp2040.menu.freq.100=100 MHz @@ -10908,20 +11927,20 @@ cytron_maker_nano_rp2040.menu.freq.125=125 MHz cytron_maker_nano_rp2040.menu.freq.125.build.f_cpu=125000000L cytron_maker_nano_rp2040.menu.freq.128=128 MHz cytron_maker_nano_rp2040.menu.freq.128.build.f_cpu=128000000L -cytron_maker_nano_rp2040.menu.freq.150=150 MHz (Overclock) +cytron_maker_nano_rp2040.menu.freq.133=133 MHz +cytron_maker_nano_rp2040.menu.freq.133.build.f_cpu=133000000L +cytron_maker_nano_rp2040.menu.freq.150=150 MHz cytron_maker_nano_rp2040.menu.freq.150.build.f_cpu=150000000L -cytron_maker_nano_rp2040.menu.freq.175=175 MHz (Overclock) -cytron_maker_nano_rp2040.menu.freq.175.build.f_cpu=175000000L -cytron_maker_nano_rp2040.menu.freq.200=200 MHz (Overclock) -cytron_maker_nano_rp2040.menu.freq.200.build.f_cpu=200000000L +cytron_maker_nano_rp2040.menu.freq.176=176 MHz +cytron_maker_nano_rp2040.menu.freq.176.build.f_cpu=176000000L cytron_maker_nano_rp2040.menu.freq.225=225 MHz (Overclock) cytron_maker_nano_rp2040.menu.freq.225.build.f_cpu=225000000L cytron_maker_nano_rp2040.menu.freq.240=240 MHz (Overclock) cytron_maker_nano_rp2040.menu.freq.240.build.f_cpu=240000000L cytron_maker_nano_rp2040.menu.freq.250=250 MHz (Overclock) cytron_maker_nano_rp2040.menu.freq.250.build.f_cpu=250000000L -cytron_maker_nano_rp2040.menu.freq.275=275 MHz (Overclock) -cytron_maker_nano_rp2040.menu.freq.275.build.f_cpu=275000000L +cytron_maker_nano_rp2040.menu.freq.276=276 MHz (Overclock) +cytron_maker_nano_rp2040.menu.freq.276.build.f_cpu=276000000L cytron_maker_nano_rp2040.menu.freq.300=300 MHz (Overclock) cytron_maker_nano_rp2040.menu.freq.300.build.f_cpu=300000000L cytron_maker_nano_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -10949,7 +11968,7 @@ cytron_maker_nano_rp2040.menu.rtti.Enabled.build.flags.rtti= cytron_maker_nano_rp2040.menu.stackprotect.Disabled=Disabled cytron_maker_nano_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= cytron_maker_nano_rp2040.menu.stackprotect.Enabled=Enabled -cytron_maker_nano_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +cytron_maker_nano_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all cytron_maker_nano_rp2040.menu.exceptions.Disabled=Disabled cytron_maker_nano_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions cytron_maker_nano_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -11134,8 +12153,8 @@ cytron_maker_pi_rp2040.menu.flash.2097152_1048576.build.flash_length=1044480 cytron_maker_pi_rp2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 cytron_maker_pi_rp2040.menu.flash.2097152_1048576.build.fs_start=269479936 cytron_maker_pi_rp2040.menu.flash.2097152_1048576.build.fs_end=270528512 -cytron_maker_pi_rp2040.menu.freq.133=133 MHz -cytron_maker_pi_rp2040.menu.freq.133.build.f_cpu=133000000L +cytron_maker_pi_rp2040.menu.freq.200=200 MHz +cytron_maker_pi_rp2040.menu.freq.200.build.f_cpu=200000000L cytron_maker_pi_rp2040.menu.freq.50=50 MHz cytron_maker_pi_rp2040.menu.freq.50.build.f_cpu=50000000L cytron_maker_pi_rp2040.menu.freq.100=100 MHz @@ -11146,20 +12165,20 @@ cytron_maker_pi_rp2040.menu.freq.125=125 MHz cytron_maker_pi_rp2040.menu.freq.125.build.f_cpu=125000000L cytron_maker_pi_rp2040.menu.freq.128=128 MHz cytron_maker_pi_rp2040.menu.freq.128.build.f_cpu=128000000L -cytron_maker_pi_rp2040.menu.freq.150=150 MHz (Overclock) +cytron_maker_pi_rp2040.menu.freq.133=133 MHz +cytron_maker_pi_rp2040.menu.freq.133.build.f_cpu=133000000L +cytron_maker_pi_rp2040.menu.freq.150=150 MHz cytron_maker_pi_rp2040.menu.freq.150.build.f_cpu=150000000L -cytron_maker_pi_rp2040.menu.freq.175=175 MHz (Overclock) -cytron_maker_pi_rp2040.menu.freq.175.build.f_cpu=175000000L -cytron_maker_pi_rp2040.menu.freq.200=200 MHz (Overclock) -cytron_maker_pi_rp2040.menu.freq.200.build.f_cpu=200000000L +cytron_maker_pi_rp2040.menu.freq.176=176 MHz +cytron_maker_pi_rp2040.menu.freq.176.build.f_cpu=176000000L cytron_maker_pi_rp2040.menu.freq.225=225 MHz (Overclock) cytron_maker_pi_rp2040.menu.freq.225.build.f_cpu=225000000L cytron_maker_pi_rp2040.menu.freq.240=240 MHz (Overclock) cytron_maker_pi_rp2040.menu.freq.240.build.f_cpu=240000000L cytron_maker_pi_rp2040.menu.freq.250=250 MHz (Overclock) cytron_maker_pi_rp2040.menu.freq.250.build.f_cpu=250000000L -cytron_maker_pi_rp2040.menu.freq.275=275 MHz (Overclock) -cytron_maker_pi_rp2040.menu.freq.275.build.f_cpu=275000000L +cytron_maker_pi_rp2040.menu.freq.276=276 MHz (Overclock) +cytron_maker_pi_rp2040.menu.freq.276.build.f_cpu=276000000L cytron_maker_pi_rp2040.menu.freq.300=300 MHz (Overclock) cytron_maker_pi_rp2040.menu.freq.300.build.f_cpu=300000000L cytron_maker_pi_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -11187,7 +12206,7 @@ cytron_maker_pi_rp2040.menu.rtti.Enabled.build.flags.rtti= cytron_maker_pi_rp2040.menu.stackprotect.Disabled=Disabled cytron_maker_pi_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= cytron_maker_pi_rp2040.menu.stackprotect.Enabled=Enabled -cytron_maker_pi_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +cytron_maker_pi_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all cytron_maker_pi_rp2040.menu.exceptions.Disabled=Disabled cytron_maker_pi_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions cytron_maker_pi_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -11372,8 +12391,8 @@ cytron_maker_uno_rp2040.menu.flash.2097152_1048576.build.flash_length=1044480 cytron_maker_uno_rp2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 cytron_maker_uno_rp2040.menu.flash.2097152_1048576.build.fs_start=269479936 cytron_maker_uno_rp2040.menu.flash.2097152_1048576.build.fs_end=270528512 -cytron_maker_uno_rp2040.menu.freq.133=133 MHz -cytron_maker_uno_rp2040.menu.freq.133.build.f_cpu=133000000L +cytron_maker_uno_rp2040.menu.freq.200=200 MHz +cytron_maker_uno_rp2040.menu.freq.200.build.f_cpu=200000000L cytron_maker_uno_rp2040.menu.freq.50=50 MHz cytron_maker_uno_rp2040.menu.freq.50.build.f_cpu=50000000L cytron_maker_uno_rp2040.menu.freq.100=100 MHz @@ -11384,20 +12403,20 @@ cytron_maker_uno_rp2040.menu.freq.125=125 MHz cytron_maker_uno_rp2040.menu.freq.125.build.f_cpu=125000000L cytron_maker_uno_rp2040.menu.freq.128=128 MHz cytron_maker_uno_rp2040.menu.freq.128.build.f_cpu=128000000L -cytron_maker_uno_rp2040.menu.freq.150=150 MHz (Overclock) +cytron_maker_uno_rp2040.menu.freq.133=133 MHz +cytron_maker_uno_rp2040.menu.freq.133.build.f_cpu=133000000L +cytron_maker_uno_rp2040.menu.freq.150=150 MHz cytron_maker_uno_rp2040.menu.freq.150.build.f_cpu=150000000L -cytron_maker_uno_rp2040.menu.freq.175=175 MHz (Overclock) -cytron_maker_uno_rp2040.menu.freq.175.build.f_cpu=175000000L -cytron_maker_uno_rp2040.menu.freq.200=200 MHz (Overclock) -cytron_maker_uno_rp2040.menu.freq.200.build.f_cpu=200000000L +cytron_maker_uno_rp2040.menu.freq.176=176 MHz +cytron_maker_uno_rp2040.menu.freq.176.build.f_cpu=176000000L cytron_maker_uno_rp2040.menu.freq.225=225 MHz (Overclock) cytron_maker_uno_rp2040.menu.freq.225.build.f_cpu=225000000L cytron_maker_uno_rp2040.menu.freq.240=240 MHz (Overclock) cytron_maker_uno_rp2040.menu.freq.240.build.f_cpu=240000000L cytron_maker_uno_rp2040.menu.freq.250=250 MHz (Overclock) cytron_maker_uno_rp2040.menu.freq.250.build.f_cpu=250000000L -cytron_maker_uno_rp2040.menu.freq.275=275 MHz (Overclock) -cytron_maker_uno_rp2040.menu.freq.275.build.f_cpu=275000000L +cytron_maker_uno_rp2040.menu.freq.276=276 MHz (Overclock) +cytron_maker_uno_rp2040.menu.freq.276.build.f_cpu=276000000L cytron_maker_uno_rp2040.menu.freq.300=300 MHz (Overclock) cytron_maker_uno_rp2040.menu.freq.300.build.f_cpu=300000000L cytron_maker_uno_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -11425,7 +12444,7 @@ cytron_maker_uno_rp2040.menu.rtti.Enabled.build.flags.rtti= cytron_maker_uno_rp2040.menu.stackprotect.Disabled=Disabled cytron_maker_uno_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= cytron_maker_uno_rp2040.menu.stackprotect.Enabled=Enabled -cytron_maker_uno_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +cytron_maker_uno_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all cytron_maker_uno_rp2040.menu.exceptions.Disabled=Disabled cytron_maker_uno_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions cytron_maker_uno_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -11633,8 +12652,8 @@ cytron_motion_2350_pro.menu.freq.128=128 MHz cytron_motion_2350_pro.menu.freq.128.build.f_cpu=128000000L cytron_motion_2350_pro.menu.freq.133=133 MHz cytron_motion_2350_pro.menu.freq.133.build.f_cpu=133000000L -cytron_motion_2350_pro.menu.freq.175=175 MHz (Overclock) -cytron_motion_2350_pro.menu.freq.175.build.f_cpu=175000000L +cytron_motion_2350_pro.menu.freq.176=176 MHz (Overclock) +cytron_motion_2350_pro.menu.freq.176.build.f_cpu=176000000L cytron_motion_2350_pro.menu.freq.200=200 MHz (Overclock) cytron_motion_2350_pro.menu.freq.200.build.f_cpu=200000000L cytron_motion_2350_pro.menu.freq.225=225 MHz (Overclock) @@ -11643,8 +12662,8 @@ cytron_motion_2350_pro.menu.freq.240=240 MHz (Overclock) cytron_motion_2350_pro.menu.freq.240.build.f_cpu=240000000L cytron_motion_2350_pro.menu.freq.250=250 MHz (Overclock) cytron_motion_2350_pro.menu.freq.250.build.f_cpu=250000000L -cytron_motion_2350_pro.menu.freq.275=275 MHz (Overclock) -cytron_motion_2350_pro.menu.freq.275.build.f_cpu=275000000L +cytron_motion_2350_pro.menu.freq.276=276 MHz (Overclock) +cytron_motion_2350_pro.menu.freq.276.build.f_cpu=276000000L cytron_motion_2350_pro.menu.freq.300=300 MHz (Overclock) cytron_motion_2350_pro.menu.freq.300.build.f_cpu=300000000L cytron_motion_2350_pro.menu.opt.Small=Small (-Os) (standard) @@ -11672,7 +12691,7 @@ cytron_motion_2350_pro.menu.rtti.Enabled.build.flags.rtti= cytron_motion_2350_pro.menu.stackprotect.Disabled=Disabled cytron_motion_2350_pro.menu.stackprotect.Disabled.build.flags.stackprotect= cytron_motion_2350_pro.menu.stackprotect.Enabled=Enabled -cytron_motion_2350_pro.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +cytron_motion_2350_pro.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all cytron_motion_2350_pro.menu.exceptions.Disabled=Disabled cytron_motion_2350_pro.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions cytron_motion_2350_pro.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -11857,8 +12876,8 @@ datanoisetv_picoadk.menu.flash.2097152_1048576.build.flash_length=1044480 datanoisetv_picoadk.menu.flash.2097152_1048576.build.eeprom_start=270528512 datanoisetv_picoadk.menu.flash.2097152_1048576.build.fs_start=269479936 datanoisetv_picoadk.menu.flash.2097152_1048576.build.fs_end=270528512 -datanoisetv_picoadk.menu.freq.133=133 MHz -datanoisetv_picoadk.menu.freq.133.build.f_cpu=133000000L +datanoisetv_picoadk.menu.freq.200=200 MHz +datanoisetv_picoadk.menu.freq.200.build.f_cpu=200000000L datanoisetv_picoadk.menu.freq.50=50 MHz datanoisetv_picoadk.menu.freq.50.build.f_cpu=50000000L datanoisetv_picoadk.menu.freq.100=100 MHz @@ -11869,20 +12888,20 @@ datanoisetv_picoadk.menu.freq.125=125 MHz datanoisetv_picoadk.menu.freq.125.build.f_cpu=125000000L datanoisetv_picoadk.menu.freq.128=128 MHz datanoisetv_picoadk.menu.freq.128.build.f_cpu=128000000L -datanoisetv_picoadk.menu.freq.150=150 MHz (Overclock) +datanoisetv_picoadk.menu.freq.133=133 MHz +datanoisetv_picoadk.menu.freq.133.build.f_cpu=133000000L +datanoisetv_picoadk.menu.freq.150=150 MHz datanoisetv_picoadk.menu.freq.150.build.f_cpu=150000000L -datanoisetv_picoadk.menu.freq.175=175 MHz (Overclock) -datanoisetv_picoadk.menu.freq.175.build.f_cpu=175000000L -datanoisetv_picoadk.menu.freq.200=200 MHz (Overclock) -datanoisetv_picoadk.menu.freq.200.build.f_cpu=200000000L +datanoisetv_picoadk.menu.freq.176=176 MHz +datanoisetv_picoadk.menu.freq.176.build.f_cpu=176000000L datanoisetv_picoadk.menu.freq.225=225 MHz (Overclock) datanoisetv_picoadk.menu.freq.225.build.f_cpu=225000000L datanoisetv_picoadk.menu.freq.240=240 MHz (Overclock) datanoisetv_picoadk.menu.freq.240.build.f_cpu=240000000L datanoisetv_picoadk.menu.freq.250=250 MHz (Overclock) datanoisetv_picoadk.menu.freq.250.build.f_cpu=250000000L -datanoisetv_picoadk.menu.freq.275=275 MHz (Overclock) -datanoisetv_picoadk.menu.freq.275.build.f_cpu=275000000L +datanoisetv_picoadk.menu.freq.276=276 MHz (Overclock) +datanoisetv_picoadk.menu.freq.276.build.f_cpu=276000000L datanoisetv_picoadk.menu.freq.300=300 MHz (Overclock) datanoisetv_picoadk.menu.freq.300.build.f_cpu=300000000L datanoisetv_picoadk.menu.opt.Small=Small (-Os) (standard) @@ -11910,7 +12929,7 @@ datanoisetv_picoadk.menu.rtti.Enabled.build.flags.rtti= datanoisetv_picoadk.menu.stackprotect.Disabled=Disabled datanoisetv_picoadk.menu.stackprotect.Disabled.build.flags.stackprotect= datanoisetv_picoadk.menu.stackprotect.Enabled=Enabled -datanoisetv_picoadk.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +datanoisetv_picoadk.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all datanoisetv_picoadk.menu.exceptions.Disabled=Disabled datanoisetv_picoadk.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions datanoisetv_picoadk.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -12132,8 +13151,8 @@ datanoisetv_picoadk_v2.menu.freq.128=128 MHz datanoisetv_picoadk_v2.menu.freq.128.build.f_cpu=128000000L datanoisetv_picoadk_v2.menu.freq.133=133 MHz datanoisetv_picoadk_v2.menu.freq.133.build.f_cpu=133000000L -datanoisetv_picoadk_v2.menu.freq.175=175 MHz (Overclock) -datanoisetv_picoadk_v2.menu.freq.175.build.f_cpu=175000000L +datanoisetv_picoadk_v2.menu.freq.176=176 MHz (Overclock) +datanoisetv_picoadk_v2.menu.freq.176.build.f_cpu=176000000L datanoisetv_picoadk_v2.menu.freq.200=200 MHz (Overclock) datanoisetv_picoadk_v2.menu.freq.200.build.f_cpu=200000000L datanoisetv_picoadk_v2.menu.freq.225=225 MHz (Overclock) @@ -12142,8 +13161,8 @@ datanoisetv_picoadk_v2.menu.freq.240=240 MHz (Overclock) datanoisetv_picoadk_v2.menu.freq.240.build.f_cpu=240000000L datanoisetv_picoadk_v2.menu.freq.250=250 MHz (Overclock) datanoisetv_picoadk_v2.menu.freq.250.build.f_cpu=250000000L -datanoisetv_picoadk_v2.menu.freq.275=275 MHz (Overclock) -datanoisetv_picoadk_v2.menu.freq.275.build.f_cpu=275000000L +datanoisetv_picoadk_v2.menu.freq.276=276 MHz (Overclock) +datanoisetv_picoadk_v2.menu.freq.276.build.f_cpu=276000000L datanoisetv_picoadk_v2.menu.freq.300=300 MHz (Overclock) datanoisetv_picoadk_v2.menu.freq.300.build.f_cpu=300000000L datanoisetv_picoadk_v2.menu.psram.0mb=0MByte PSRAM @@ -12183,7 +13202,7 @@ datanoisetv_picoadk_v2.menu.rtti.Enabled.build.flags.rtti= datanoisetv_picoadk_v2.menu.stackprotect.Disabled=Disabled datanoisetv_picoadk_v2.menu.stackprotect.Disabled.build.flags.stackprotect= datanoisetv_picoadk_v2.menu.stackprotect.Enabled=Enabled -datanoisetv_picoadk_v2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +datanoisetv_picoadk_v2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all datanoisetv_picoadk_v2.menu.exceptions.Disabled=Disabled datanoisetv_picoadk_v2.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions datanoisetv_picoadk_v2.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -12442,8 +13461,8 @@ degz_suibo.menu.flash.16777216_15728640.build.flash_length=1044480 degz_suibo.menu.flash.16777216_15728640.build.eeprom_start=285208576 degz_suibo.menu.flash.16777216_15728640.build.fs_start=269479936 degz_suibo.menu.flash.16777216_15728640.build.fs_end=285208576 -degz_suibo.menu.freq.133=133 MHz -degz_suibo.menu.freq.133.build.f_cpu=133000000L +degz_suibo.menu.freq.200=200 MHz +degz_suibo.menu.freq.200.build.f_cpu=200000000L degz_suibo.menu.freq.50=50 MHz degz_suibo.menu.freq.50.build.f_cpu=50000000L degz_suibo.menu.freq.100=100 MHz @@ -12454,20 +13473,20 @@ degz_suibo.menu.freq.125=125 MHz degz_suibo.menu.freq.125.build.f_cpu=125000000L degz_suibo.menu.freq.128=128 MHz degz_suibo.menu.freq.128.build.f_cpu=128000000L -degz_suibo.menu.freq.150=150 MHz (Overclock) +degz_suibo.menu.freq.133=133 MHz +degz_suibo.menu.freq.133.build.f_cpu=133000000L +degz_suibo.menu.freq.150=150 MHz degz_suibo.menu.freq.150.build.f_cpu=150000000L -degz_suibo.menu.freq.175=175 MHz (Overclock) -degz_suibo.menu.freq.175.build.f_cpu=175000000L -degz_suibo.menu.freq.200=200 MHz (Overclock) -degz_suibo.menu.freq.200.build.f_cpu=200000000L +degz_suibo.menu.freq.176=176 MHz +degz_suibo.menu.freq.176.build.f_cpu=176000000L degz_suibo.menu.freq.225=225 MHz (Overclock) degz_suibo.menu.freq.225.build.f_cpu=225000000L degz_suibo.menu.freq.240=240 MHz (Overclock) degz_suibo.menu.freq.240.build.f_cpu=240000000L degz_suibo.menu.freq.250=250 MHz (Overclock) degz_suibo.menu.freq.250.build.f_cpu=250000000L -degz_suibo.menu.freq.275=275 MHz (Overclock) -degz_suibo.menu.freq.275.build.f_cpu=275000000L +degz_suibo.menu.freq.276=276 MHz (Overclock) +degz_suibo.menu.freq.276.build.f_cpu=276000000L degz_suibo.menu.freq.300=300 MHz (Overclock) degz_suibo.menu.freq.300.build.f_cpu=300000000L degz_suibo.menu.opt.Small=Small (-Os) (standard) @@ -12495,7 +13514,7 @@ degz_suibo.menu.rtti.Enabled.build.flags.rtti= degz_suibo.menu.stackprotect.Disabled=Disabled degz_suibo.menu.stackprotect.Disabled.build.flags.stackprotect= degz_suibo.menu.stackprotect.Enabled=Enabled -degz_suibo.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +degz_suibo.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all degz_suibo.menu.exceptions.Disabled=Disabled degz_suibo.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions degz_suibo.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -12694,8 +13713,8 @@ flyboard2040_core.menu.flash.4194304_3145728.build.flash_length=1044480 flyboard2040_core.menu.flash.4194304_3145728.build.eeprom_start=272625664 flyboard2040_core.menu.flash.4194304_3145728.build.fs_start=269479936 flyboard2040_core.menu.flash.4194304_3145728.build.fs_end=272625664 -flyboard2040_core.menu.freq.133=133 MHz -flyboard2040_core.menu.freq.133.build.f_cpu=133000000L +flyboard2040_core.menu.freq.200=200 MHz +flyboard2040_core.menu.freq.200.build.f_cpu=200000000L flyboard2040_core.menu.freq.50=50 MHz flyboard2040_core.menu.freq.50.build.f_cpu=50000000L flyboard2040_core.menu.freq.100=100 MHz @@ -12706,20 +13725,20 @@ flyboard2040_core.menu.freq.125=125 MHz flyboard2040_core.menu.freq.125.build.f_cpu=125000000L flyboard2040_core.menu.freq.128=128 MHz flyboard2040_core.menu.freq.128.build.f_cpu=128000000L -flyboard2040_core.menu.freq.150=150 MHz (Overclock) +flyboard2040_core.menu.freq.133=133 MHz +flyboard2040_core.menu.freq.133.build.f_cpu=133000000L +flyboard2040_core.menu.freq.150=150 MHz flyboard2040_core.menu.freq.150.build.f_cpu=150000000L -flyboard2040_core.menu.freq.175=175 MHz (Overclock) -flyboard2040_core.menu.freq.175.build.f_cpu=175000000L -flyboard2040_core.menu.freq.200=200 MHz (Overclock) -flyboard2040_core.menu.freq.200.build.f_cpu=200000000L +flyboard2040_core.menu.freq.176=176 MHz +flyboard2040_core.menu.freq.176.build.f_cpu=176000000L flyboard2040_core.menu.freq.225=225 MHz (Overclock) flyboard2040_core.menu.freq.225.build.f_cpu=225000000L flyboard2040_core.menu.freq.240=240 MHz (Overclock) flyboard2040_core.menu.freq.240.build.f_cpu=240000000L flyboard2040_core.menu.freq.250=250 MHz (Overclock) flyboard2040_core.menu.freq.250.build.f_cpu=250000000L -flyboard2040_core.menu.freq.275=275 MHz (Overclock) -flyboard2040_core.menu.freq.275.build.f_cpu=275000000L +flyboard2040_core.menu.freq.276=276 MHz (Overclock) +flyboard2040_core.menu.freq.276.build.f_cpu=276000000L flyboard2040_core.menu.freq.300=300 MHz (Overclock) flyboard2040_core.menu.freq.300.build.f_cpu=300000000L flyboard2040_core.menu.opt.Small=Small (-Os) (standard) @@ -12747,7 +13766,7 @@ flyboard2040_core.menu.rtti.Enabled.build.flags.rtti= flyboard2040_core.menu.stackprotect.Disabled=Disabled flyboard2040_core.menu.stackprotect.Disabled.build.flags.stackprotect= flyboard2040_core.menu.stackprotect.Enabled=Enabled -flyboard2040_core.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +flyboard2040_core.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all flyboard2040_core.menu.exceptions.Disabled=Disabled flyboard2040_core.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions flyboard2040_core.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -12916,8 +13935,8 @@ dfrobot_beetle_rp2040.menu.flash.2097152_1048576.build.flash_length=1044480 dfrobot_beetle_rp2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 dfrobot_beetle_rp2040.menu.flash.2097152_1048576.build.fs_start=269479936 dfrobot_beetle_rp2040.menu.flash.2097152_1048576.build.fs_end=270528512 -dfrobot_beetle_rp2040.menu.freq.133=133 MHz -dfrobot_beetle_rp2040.menu.freq.133.build.f_cpu=133000000L +dfrobot_beetle_rp2040.menu.freq.200=200 MHz +dfrobot_beetle_rp2040.menu.freq.200.build.f_cpu=200000000L dfrobot_beetle_rp2040.menu.freq.50=50 MHz dfrobot_beetle_rp2040.menu.freq.50.build.f_cpu=50000000L dfrobot_beetle_rp2040.menu.freq.100=100 MHz @@ -12928,20 +13947,20 @@ dfrobot_beetle_rp2040.menu.freq.125=125 MHz dfrobot_beetle_rp2040.menu.freq.125.build.f_cpu=125000000L dfrobot_beetle_rp2040.menu.freq.128=128 MHz dfrobot_beetle_rp2040.menu.freq.128.build.f_cpu=128000000L -dfrobot_beetle_rp2040.menu.freq.150=150 MHz (Overclock) +dfrobot_beetle_rp2040.menu.freq.133=133 MHz +dfrobot_beetle_rp2040.menu.freq.133.build.f_cpu=133000000L +dfrobot_beetle_rp2040.menu.freq.150=150 MHz dfrobot_beetle_rp2040.menu.freq.150.build.f_cpu=150000000L -dfrobot_beetle_rp2040.menu.freq.175=175 MHz (Overclock) -dfrobot_beetle_rp2040.menu.freq.175.build.f_cpu=175000000L -dfrobot_beetle_rp2040.menu.freq.200=200 MHz (Overclock) -dfrobot_beetle_rp2040.menu.freq.200.build.f_cpu=200000000L +dfrobot_beetle_rp2040.menu.freq.176=176 MHz +dfrobot_beetle_rp2040.menu.freq.176.build.f_cpu=176000000L dfrobot_beetle_rp2040.menu.freq.225=225 MHz (Overclock) dfrobot_beetle_rp2040.menu.freq.225.build.f_cpu=225000000L dfrobot_beetle_rp2040.menu.freq.240=240 MHz (Overclock) dfrobot_beetle_rp2040.menu.freq.240.build.f_cpu=240000000L dfrobot_beetle_rp2040.menu.freq.250=250 MHz (Overclock) dfrobot_beetle_rp2040.menu.freq.250.build.f_cpu=250000000L -dfrobot_beetle_rp2040.menu.freq.275=275 MHz (Overclock) -dfrobot_beetle_rp2040.menu.freq.275.build.f_cpu=275000000L +dfrobot_beetle_rp2040.menu.freq.276=276 MHz (Overclock) +dfrobot_beetle_rp2040.menu.freq.276.build.f_cpu=276000000L dfrobot_beetle_rp2040.menu.freq.300=300 MHz (Overclock) dfrobot_beetle_rp2040.menu.freq.300.build.f_cpu=300000000L dfrobot_beetle_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -12969,7 +13988,7 @@ dfrobot_beetle_rp2040.menu.rtti.Enabled.build.flags.rtti= dfrobot_beetle_rp2040.menu.stackprotect.Disabled=Disabled dfrobot_beetle_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= dfrobot_beetle_rp2040.menu.stackprotect.Enabled=Enabled -dfrobot_beetle_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +dfrobot_beetle_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all dfrobot_beetle_rp2040.menu.exceptions.Disabled=Disabled dfrobot_beetle_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions dfrobot_beetle_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -13168,8 +14187,8 @@ DudesCab.menu.flash.4194304_3145728.build.flash_length=1044480 DudesCab.menu.flash.4194304_3145728.build.eeprom_start=272625664 DudesCab.menu.flash.4194304_3145728.build.fs_start=269479936 DudesCab.menu.flash.4194304_3145728.build.fs_end=272625664 -DudesCab.menu.freq.133=133 MHz -DudesCab.menu.freq.133.build.f_cpu=133000000L +DudesCab.menu.freq.200=200 MHz +DudesCab.menu.freq.200.build.f_cpu=200000000L DudesCab.menu.freq.50=50 MHz DudesCab.menu.freq.50.build.f_cpu=50000000L DudesCab.menu.freq.100=100 MHz @@ -13180,20 +14199,20 @@ DudesCab.menu.freq.125=125 MHz DudesCab.menu.freq.125.build.f_cpu=125000000L DudesCab.menu.freq.128=128 MHz DudesCab.menu.freq.128.build.f_cpu=128000000L -DudesCab.menu.freq.150=150 MHz (Overclock) +DudesCab.menu.freq.133=133 MHz +DudesCab.menu.freq.133.build.f_cpu=133000000L +DudesCab.menu.freq.150=150 MHz DudesCab.menu.freq.150.build.f_cpu=150000000L -DudesCab.menu.freq.175=175 MHz (Overclock) -DudesCab.menu.freq.175.build.f_cpu=175000000L -DudesCab.menu.freq.200=200 MHz (Overclock) -DudesCab.menu.freq.200.build.f_cpu=200000000L +DudesCab.menu.freq.176=176 MHz +DudesCab.menu.freq.176.build.f_cpu=176000000L DudesCab.menu.freq.225=225 MHz (Overclock) DudesCab.menu.freq.225.build.f_cpu=225000000L DudesCab.menu.freq.240=240 MHz (Overclock) DudesCab.menu.freq.240.build.f_cpu=240000000L DudesCab.menu.freq.250=250 MHz (Overclock) DudesCab.menu.freq.250.build.f_cpu=250000000L -DudesCab.menu.freq.275=275 MHz (Overclock) -DudesCab.menu.freq.275.build.f_cpu=275000000L +DudesCab.menu.freq.276=276 MHz (Overclock) +DudesCab.menu.freq.276.build.f_cpu=276000000L DudesCab.menu.freq.300=300 MHz (Overclock) DudesCab.menu.freq.300.build.f_cpu=300000000L DudesCab.menu.opt.Small=Small (-Os) (standard) @@ -13221,7 +14240,7 @@ DudesCab.menu.rtti.Enabled.build.flags.rtti= DudesCab.menu.stackprotect.Disabled=Disabled DudesCab.menu.stackprotect.Disabled.build.flags.stackprotect= DudesCab.menu.stackprotect.Enabled=Enabled -DudesCab.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +DudesCab.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all DudesCab.menu.exceptions.Disabled=Disabled DudesCab.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions DudesCab.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -13406,8 +14425,8 @@ electroniccats_huntercat_nfc.menu.flash.2097152_1048576.build.flash_length=10444 electroniccats_huntercat_nfc.menu.flash.2097152_1048576.build.eeprom_start=270528512 electroniccats_huntercat_nfc.menu.flash.2097152_1048576.build.fs_start=269479936 electroniccats_huntercat_nfc.menu.flash.2097152_1048576.build.fs_end=270528512 -electroniccats_huntercat_nfc.menu.freq.133=133 MHz -electroniccats_huntercat_nfc.menu.freq.133.build.f_cpu=133000000L +electroniccats_huntercat_nfc.menu.freq.200=200 MHz +electroniccats_huntercat_nfc.menu.freq.200.build.f_cpu=200000000L electroniccats_huntercat_nfc.menu.freq.50=50 MHz electroniccats_huntercat_nfc.menu.freq.50.build.f_cpu=50000000L electroniccats_huntercat_nfc.menu.freq.100=100 MHz @@ -13418,20 +14437,20 @@ electroniccats_huntercat_nfc.menu.freq.125=125 MHz electroniccats_huntercat_nfc.menu.freq.125.build.f_cpu=125000000L electroniccats_huntercat_nfc.menu.freq.128=128 MHz electroniccats_huntercat_nfc.menu.freq.128.build.f_cpu=128000000L -electroniccats_huntercat_nfc.menu.freq.150=150 MHz (Overclock) +electroniccats_huntercat_nfc.menu.freq.133=133 MHz +electroniccats_huntercat_nfc.menu.freq.133.build.f_cpu=133000000L +electroniccats_huntercat_nfc.menu.freq.150=150 MHz electroniccats_huntercat_nfc.menu.freq.150.build.f_cpu=150000000L -electroniccats_huntercat_nfc.menu.freq.175=175 MHz (Overclock) -electroniccats_huntercat_nfc.menu.freq.175.build.f_cpu=175000000L -electroniccats_huntercat_nfc.menu.freq.200=200 MHz (Overclock) -electroniccats_huntercat_nfc.menu.freq.200.build.f_cpu=200000000L +electroniccats_huntercat_nfc.menu.freq.176=176 MHz +electroniccats_huntercat_nfc.menu.freq.176.build.f_cpu=176000000L electroniccats_huntercat_nfc.menu.freq.225=225 MHz (Overclock) electroniccats_huntercat_nfc.menu.freq.225.build.f_cpu=225000000L electroniccats_huntercat_nfc.menu.freq.240=240 MHz (Overclock) electroniccats_huntercat_nfc.menu.freq.240.build.f_cpu=240000000L electroniccats_huntercat_nfc.menu.freq.250=250 MHz (Overclock) electroniccats_huntercat_nfc.menu.freq.250.build.f_cpu=250000000L -electroniccats_huntercat_nfc.menu.freq.275=275 MHz (Overclock) -electroniccats_huntercat_nfc.menu.freq.275.build.f_cpu=275000000L +electroniccats_huntercat_nfc.menu.freq.276=276 MHz (Overclock) +electroniccats_huntercat_nfc.menu.freq.276.build.f_cpu=276000000L electroniccats_huntercat_nfc.menu.freq.300=300 MHz (Overclock) electroniccats_huntercat_nfc.menu.freq.300.build.f_cpu=300000000L electroniccats_huntercat_nfc.menu.opt.Small=Small (-Os) (standard) @@ -13459,7 +14478,7 @@ electroniccats_huntercat_nfc.menu.rtti.Enabled.build.flags.rtti= electroniccats_huntercat_nfc.menu.stackprotect.Disabled=Disabled electroniccats_huntercat_nfc.menu.stackprotect.Disabled.build.flags.stackprotect= electroniccats_huntercat_nfc.menu.stackprotect.Enabled=Enabled -electroniccats_huntercat_nfc.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +electroniccats_huntercat_nfc.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all electroniccats_huntercat_nfc.menu.exceptions.Disabled=Disabled electroniccats_huntercat_nfc.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions electroniccats_huntercat_nfc.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -13718,8 +14737,8 @@ evn_alpha.menu.flash.16777216_15728640.build.flash_length=1044480 evn_alpha.menu.flash.16777216_15728640.build.eeprom_start=285208576 evn_alpha.menu.flash.16777216_15728640.build.fs_start=269479936 evn_alpha.menu.flash.16777216_15728640.build.fs_end=285208576 -evn_alpha.menu.freq.133=133 MHz -evn_alpha.menu.freq.133.build.f_cpu=133000000L +evn_alpha.menu.freq.200=200 MHz +evn_alpha.menu.freq.200.build.f_cpu=200000000L evn_alpha.menu.freq.50=50 MHz evn_alpha.menu.freq.50.build.f_cpu=50000000L evn_alpha.menu.freq.100=100 MHz @@ -13730,20 +14749,20 @@ evn_alpha.menu.freq.125=125 MHz evn_alpha.menu.freq.125.build.f_cpu=125000000L evn_alpha.menu.freq.128=128 MHz evn_alpha.menu.freq.128.build.f_cpu=128000000L -evn_alpha.menu.freq.150=150 MHz (Overclock) +evn_alpha.menu.freq.133=133 MHz +evn_alpha.menu.freq.133.build.f_cpu=133000000L +evn_alpha.menu.freq.150=150 MHz evn_alpha.menu.freq.150.build.f_cpu=150000000L -evn_alpha.menu.freq.175=175 MHz (Overclock) -evn_alpha.menu.freq.175.build.f_cpu=175000000L -evn_alpha.menu.freq.200=200 MHz (Overclock) -evn_alpha.menu.freq.200.build.f_cpu=200000000L +evn_alpha.menu.freq.176=176 MHz +evn_alpha.menu.freq.176.build.f_cpu=176000000L evn_alpha.menu.freq.225=225 MHz (Overclock) evn_alpha.menu.freq.225.build.f_cpu=225000000L evn_alpha.menu.freq.240=240 MHz (Overclock) evn_alpha.menu.freq.240.build.f_cpu=240000000L evn_alpha.menu.freq.250=250 MHz (Overclock) evn_alpha.menu.freq.250.build.f_cpu=250000000L -evn_alpha.menu.freq.275=275 MHz (Overclock) -evn_alpha.menu.freq.275.build.f_cpu=275000000L +evn_alpha.menu.freq.276=276 MHz (Overclock) +evn_alpha.menu.freq.276.build.f_cpu=276000000L evn_alpha.menu.freq.300=300 MHz (Overclock) evn_alpha.menu.freq.300.build.f_cpu=300000000L evn_alpha.menu.opt.Small=Small (-Os) (standard) @@ -13771,7 +14790,7 @@ evn_alpha.menu.rtti.Enabled.build.flags.rtti= evn_alpha.menu.stackprotect.Disabled=Disabled evn_alpha.menu.stackprotect.Disabled.build.flags.stackprotect= evn_alpha.menu.stackprotect.Enabled=Enabled -evn_alpha.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +evn_alpha.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all evn_alpha.menu.exceptions.Disabled=Disabled evn_alpha.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions evn_alpha.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -13932,8 +14951,8 @@ extelec_rc2040.menu.flash.2097152_1048576.build.flash_length=1044480 extelec_rc2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 extelec_rc2040.menu.flash.2097152_1048576.build.fs_start=269479936 extelec_rc2040.menu.flash.2097152_1048576.build.fs_end=270528512 -extelec_rc2040.menu.freq.133=133 MHz -extelec_rc2040.menu.freq.133.build.f_cpu=133000000L +extelec_rc2040.menu.freq.200=200 MHz +extelec_rc2040.menu.freq.200.build.f_cpu=200000000L extelec_rc2040.menu.freq.50=50 MHz extelec_rc2040.menu.freq.50.build.f_cpu=50000000L extelec_rc2040.menu.freq.100=100 MHz @@ -13944,20 +14963,20 @@ extelec_rc2040.menu.freq.125=125 MHz extelec_rc2040.menu.freq.125.build.f_cpu=125000000L extelec_rc2040.menu.freq.128=128 MHz extelec_rc2040.menu.freq.128.build.f_cpu=128000000L -extelec_rc2040.menu.freq.150=150 MHz (Overclock) +extelec_rc2040.menu.freq.133=133 MHz +extelec_rc2040.menu.freq.133.build.f_cpu=133000000L +extelec_rc2040.menu.freq.150=150 MHz extelec_rc2040.menu.freq.150.build.f_cpu=150000000L -extelec_rc2040.menu.freq.175=175 MHz (Overclock) -extelec_rc2040.menu.freq.175.build.f_cpu=175000000L -extelec_rc2040.menu.freq.200=200 MHz (Overclock) -extelec_rc2040.menu.freq.200.build.f_cpu=200000000L +extelec_rc2040.menu.freq.176=176 MHz +extelec_rc2040.menu.freq.176.build.f_cpu=176000000L extelec_rc2040.menu.freq.225=225 MHz (Overclock) extelec_rc2040.menu.freq.225.build.f_cpu=225000000L extelec_rc2040.menu.freq.240=240 MHz (Overclock) extelec_rc2040.menu.freq.240.build.f_cpu=240000000L extelec_rc2040.menu.freq.250=250 MHz (Overclock) extelec_rc2040.menu.freq.250.build.f_cpu=250000000L -extelec_rc2040.menu.freq.275=275 MHz (Overclock) -extelec_rc2040.menu.freq.275.build.f_cpu=275000000L +extelec_rc2040.menu.freq.276=276 MHz (Overclock) +extelec_rc2040.menu.freq.276.build.f_cpu=276000000L extelec_rc2040.menu.freq.300=300 MHz (Overclock) extelec_rc2040.menu.freq.300.build.f_cpu=300000000L extelec_rc2040.menu.opt.Small=Small (-Os) (standard) @@ -13985,7 +15004,7 @@ extelec_rc2040.menu.rtti.Enabled.build.flags.rtti= extelec_rc2040.menu.stackprotect.Disabled=Disabled extelec_rc2040.menu.stackprotect.Disabled.build.flags.stackprotect= extelec_rc2040.menu.stackprotect.Enabled=Enabled -extelec_rc2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +extelec_rc2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all extelec_rc2040.menu.exceptions.Disabled=Disabled extelec_rc2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions extelec_rc2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -14212,8 +15231,8 @@ groundstudio_marble_pico.menu.flash.8388608_7340032.build.flash_length=1044480 groundstudio_marble_pico.menu.flash.8388608_7340032.build.eeprom_start=276819968 groundstudio_marble_pico.menu.flash.8388608_7340032.build.fs_start=269479936 groundstudio_marble_pico.menu.flash.8388608_7340032.build.fs_end=276819968 -groundstudio_marble_pico.menu.freq.133=133 MHz -groundstudio_marble_pico.menu.freq.133.build.f_cpu=133000000L +groundstudio_marble_pico.menu.freq.200=200 MHz +groundstudio_marble_pico.menu.freq.200.build.f_cpu=200000000L groundstudio_marble_pico.menu.freq.50=50 MHz groundstudio_marble_pico.menu.freq.50.build.f_cpu=50000000L groundstudio_marble_pico.menu.freq.100=100 MHz @@ -14224,20 +15243,20 @@ groundstudio_marble_pico.menu.freq.125=125 MHz groundstudio_marble_pico.menu.freq.125.build.f_cpu=125000000L groundstudio_marble_pico.menu.freq.128=128 MHz groundstudio_marble_pico.menu.freq.128.build.f_cpu=128000000L -groundstudio_marble_pico.menu.freq.150=150 MHz (Overclock) +groundstudio_marble_pico.menu.freq.133=133 MHz +groundstudio_marble_pico.menu.freq.133.build.f_cpu=133000000L +groundstudio_marble_pico.menu.freq.150=150 MHz groundstudio_marble_pico.menu.freq.150.build.f_cpu=150000000L -groundstudio_marble_pico.menu.freq.175=175 MHz (Overclock) -groundstudio_marble_pico.menu.freq.175.build.f_cpu=175000000L -groundstudio_marble_pico.menu.freq.200=200 MHz (Overclock) -groundstudio_marble_pico.menu.freq.200.build.f_cpu=200000000L +groundstudio_marble_pico.menu.freq.176=176 MHz +groundstudio_marble_pico.menu.freq.176.build.f_cpu=176000000L groundstudio_marble_pico.menu.freq.225=225 MHz (Overclock) groundstudio_marble_pico.menu.freq.225.build.f_cpu=225000000L groundstudio_marble_pico.menu.freq.240=240 MHz (Overclock) groundstudio_marble_pico.menu.freq.240.build.f_cpu=240000000L groundstudio_marble_pico.menu.freq.250=250 MHz (Overclock) groundstudio_marble_pico.menu.freq.250.build.f_cpu=250000000L -groundstudio_marble_pico.menu.freq.275=275 MHz (Overclock) -groundstudio_marble_pico.menu.freq.275.build.f_cpu=275000000L +groundstudio_marble_pico.menu.freq.276=276 MHz (Overclock) +groundstudio_marble_pico.menu.freq.276.build.f_cpu=276000000L groundstudio_marble_pico.menu.freq.300=300 MHz (Overclock) groundstudio_marble_pico.menu.freq.300.build.f_cpu=300000000L groundstudio_marble_pico.menu.opt.Small=Small (-Os) (standard) @@ -14265,7 +15284,7 @@ groundstudio_marble_pico.menu.rtti.Enabled.build.flags.rtti= groundstudio_marble_pico.menu.stackprotect.Disabled=Disabled groundstudio_marble_pico.menu.stackprotect.Disabled.build.flags.stackprotect= groundstudio_marble_pico.menu.stackprotect.Enabled=Enabled -groundstudio_marble_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +groundstudio_marble_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all groundstudio_marble_pico.menu.exceptions.Disabled=Disabled groundstudio_marble_pico.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions groundstudio_marble_pico.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -14492,8 +15511,8 @@ challenger_2040_lte.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_2040_lte.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_2040_lte.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_2040_lte.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_2040_lte.menu.freq.133=133 MHz -challenger_2040_lte.menu.freq.133.build.f_cpu=133000000L +challenger_2040_lte.menu.freq.200=200 MHz +challenger_2040_lte.menu.freq.200.build.f_cpu=200000000L challenger_2040_lte.menu.freq.50=50 MHz challenger_2040_lte.menu.freq.50.build.f_cpu=50000000L challenger_2040_lte.menu.freq.100=100 MHz @@ -14504,20 +15523,20 @@ challenger_2040_lte.menu.freq.125=125 MHz challenger_2040_lte.menu.freq.125.build.f_cpu=125000000L challenger_2040_lte.menu.freq.128=128 MHz challenger_2040_lte.menu.freq.128.build.f_cpu=128000000L -challenger_2040_lte.menu.freq.150=150 MHz (Overclock) +challenger_2040_lte.menu.freq.133=133 MHz +challenger_2040_lte.menu.freq.133.build.f_cpu=133000000L +challenger_2040_lte.menu.freq.150=150 MHz challenger_2040_lte.menu.freq.150.build.f_cpu=150000000L -challenger_2040_lte.menu.freq.175=175 MHz (Overclock) -challenger_2040_lte.menu.freq.175.build.f_cpu=175000000L -challenger_2040_lte.menu.freq.200=200 MHz (Overclock) -challenger_2040_lte.menu.freq.200.build.f_cpu=200000000L +challenger_2040_lte.menu.freq.176=176 MHz +challenger_2040_lte.menu.freq.176.build.f_cpu=176000000L challenger_2040_lte.menu.freq.225=225 MHz (Overclock) challenger_2040_lte.menu.freq.225.build.f_cpu=225000000L challenger_2040_lte.menu.freq.240=240 MHz (Overclock) challenger_2040_lte.menu.freq.240.build.f_cpu=240000000L challenger_2040_lte.menu.freq.250=250 MHz (Overclock) challenger_2040_lte.menu.freq.250.build.f_cpu=250000000L -challenger_2040_lte.menu.freq.275=275 MHz (Overclock) -challenger_2040_lte.menu.freq.275.build.f_cpu=275000000L +challenger_2040_lte.menu.freq.276=276 MHz (Overclock) +challenger_2040_lte.menu.freq.276.build.f_cpu=276000000L challenger_2040_lte.menu.freq.300=300 MHz (Overclock) challenger_2040_lte.menu.freq.300.build.f_cpu=300000000L challenger_2040_lte.menu.opt.Small=Small (-Os) (standard) @@ -14545,7 +15564,7 @@ challenger_2040_lte.menu.rtti.Enabled.build.flags.rtti= challenger_2040_lte.menu.stackprotect.Disabled=Disabled challenger_2040_lte.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_lte.menu.stackprotect.Enabled=Enabled -challenger_2040_lte.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_lte.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_lte.menu.exceptions.Disabled=Disabled challenger_2040_lte.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_lte.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -14772,8 +15791,8 @@ challenger_2040_lora.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_2040_lora.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_2040_lora.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_2040_lora.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_2040_lora.menu.freq.133=133 MHz -challenger_2040_lora.menu.freq.133.build.f_cpu=133000000L +challenger_2040_lora.menu.freq.200=200 MHz +challenger_2040_lora.menu.freq.200.build.f_cpu=200000000L challenger_2040_lora.menu.freq.50=50 MHz challenger_2040_lora.menu.freq.50.build.f_cpu=50000000L challenger_2040_lora.menu.freq.100=100 MHz @@ -14784,20 +15803,20 @@ challenger_2040_lora.menu.freq.125=125 MHz challenger_2040_lora.menu.freq.125.build.f_cpu=125000000L challenger_2040_lora.menu.freq.128=128 MHz challenger_2040_lora.menu.freq.128.build.f_cpu=128000000L -challenger_2040_lora.menu.freq.150=150 MHz (Overclock) +challenger_2040_lora.menu.freq.133=133 MHz +challenger_2040_lora.menu.freq.133.build.f_cpu=133000000L +challenger_2040_lora.menu.freq.150=150 MHz challenger_2040_lora.menu.freq.150.build.f_cpu=150000000L -challenger_2040_lora.menu.freq.175=175 MHz (Overclock) -challenger_2040_lora.menu.freq.175.build.f_cpu=175000000L -challenger_2040_lora.menu.freq.200=200 MHz (Overclock) -challenger_2040_lora.menu.freq.200.build.f_cpu=200000000L +challenger_2040_lora.menu.freq.176=176 MHz +challenger_2040_lora.menu.freq.176.build.f_cpu=176000000L challenger_2040_lora.menu.freq.225=225 MHz (Overclock) challenger_2040_lora.menu.freq.225.build.f_cpu=225000000L challenger_2040_lora.menu.freq.240=240 MHz (Overclock) challenger_2040_lora.menu.freq.240.build.f_cpu=240000000L challenger_2040_lora.menu.freq.250=250 MHz (Overclock) challenger_2040_lora.menu.freq.250.build.f_cpu=250000000L -challenger_2040_lora.menu.freq.275=275 MHz (Overclock) -challenger_2040_lora.menu.freq.275.build.f_cpu=275000000L +challenger_2040_lora.menu.freq.276=276 MHz (Overclock) +challenger_2040_lora.menu.freq.276.build.f_cpu=276000000L challenger_2040_lora.menu.freq.300=300 MHz (Overclock) challenger_2040_lora.menu.freq.300.build.f_cpu=300000000L challenger_2040_lora.menu.opt.Small=Small (-Os) (standard) @@ -14825,7 +15844,7 @@ challenger_2040_lora.menu.rtti.Enabled.build.flags.rtti= challenger_2040_lora.menu.stackprotect.Disabled=Disabled challenger_2040_lora.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_lora.menu.stackprotect.Enabled=Enabled -challenger_2040_lora.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_lora.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_lora.menu.exceptions.Disabled=Disabled challenger_2040_lora.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_lora.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -15052,8 +16071,8 @@ challenger_2040_subghz.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_2040_subghz.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_2040_subghz.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_2040_subghz.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_2040_subghz.menu.freq.133=133 MHz -challenger_2040_subghz.menu.freq.133.build.f_cpu=133000000L +challenger_2040_subghz.menu.freq.200=200 MHz +challenger_2040_subghz.menu.freq.200.build.f_cpu=200000000L challenger_2040_subghz.menu.freq.50=50 MHz challenger_2040_subghz.menu.freq.50.build.f_cpu=50000000L challenger_2040_subghz.menu.freq.100=100 MHz @@ -15064,20 +16083,20 @@ challenger_2040_subghz.menu.freq.125=125 MHz challenger_2040_subghz.menu.freq.125.build.f_cpu=125000000L challenger_2040_subghz.menu.freq.128=128 MHz challenger_2040_subghz.menu.freq.128.build.f_cpu=128000000L -challenger_2040_subghz.menu.freq.150=150 MHz (Overclock) +challenger_2040_subghz.menu.freq.133=133 MHz +challenger_2040_subghz.menu.freq.133.build.f_cpu=133000000L +challenger_2040_subghz.menu.freq.150=150 MHz challenger_2040_subghz.menu.freq.150.build.f_cpu=150000000L -challenger_2040_subghz.menu.freq.175=175 MHz (Overclock) -challenger_2040_subghz.menu.freq.175.build.f_cpu=175000000L -challenger_2040_subghz.menu.freq.200=200 MHz (Overclock) -challenger_2040_subghz.menu.freq.200.build.f_cpu=200000000L +challenger_2040_subghz.menu.freq.176=176 MHz +challenger_2040_subghz.menu.freq.176.build.f_cpu=176000000L challenger_2040_subghz.menu.freq.225=225 MHz (Overclock) challenger_2040_subghz.menu.freq.225.build.f_cpu=225000000L challenger_2040_subghz.menu.freq.240=240 MHz (Overclock) challenger_2040_subghz.menu.freq.240.build.f_cpu=240000000L challenger_2040_subghz.menu.freq.250=250 MHz (Overclock) challenger_2040_subghz.menu.freq.250.build.f_cpu=250000000L -challenger_2040_subghz.menu.freq.275=275 MHz (Overclock) -challenger_2040_subghz.menu.freq.275.build.f_cpu=275000000L +challenger_2040_subghz.menu.freq.276=276 MHz (Overclock) +challenger_2040_subghz.menu.freq.276.build.f_cpu=276000000L challenger_2040_subghz.menu.freq.300=300 MHz (Overclock) challenger_2040_subghz.menu.freq.300.build.f_cpu=300000000L challenger_2040_subghz.menu.opt.Small=Small (-Os) (standard) @@ -15105,7 +16124,7 @@ challenger_2040_subghz.menu.rtti.Enabled.build.flags.rtti= challenger_2040_subghz.menu.stackprotect.Disabled=Disabled challenger_2040_subghz.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_subghz.menu.stackprotect.Enabled=Enabled -challenger_2040_subghz.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_subghz.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_subghz.menu.exceptions.Disabled=Disabled challenger_2040_subghz.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_subghz.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -15333,8 +16352,8 @@ challenger_2040_wifi.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_2040_wifi.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_2040_wifi.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_2040_wifi.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_2040_wifi.menu.freq.133=133 MHz -challenger_2040_wifi.menu.freq.133.build.f_cpu=133000000L +challenger_2040_wifi.menu.freq.200=200 MHz +challenger_2040_wifi.menu.freq.200.build.f_cpu=200000000L challenger_2040_wifi.menu.freq.50=50 MHz challenger_2040_wifi.menu.freq.50.build.f_cpu=50000000L challenger_2040_wifi.menu.freq.100=100 MHz @@ -15345,20 +16364,20 @@ challenger_2040_wifi.menu.freq.125=125 MHz challenger_2040_wifi.menu.freq.125.build.f_cpu=125000000L challenger_2040_wifi.menu.freq.128=128 MHz challenger_2040_wifi.menu.freq.128.build.f_cpu=128000000L -challenger_2040_wifi.menu.freq.150=150 MHz (Overclock) +challenger_2040_wifi.menu.freq.133=133 MHz +challenger_2040_wifi.menu.freq.133.build.f_cpu=133000000L +challenger_2040_wifi.menu.freq.150=150 MHz challenger_2040_wifi.menu.freq.150.build.f_cpu=150000000L -challenger_2040_wifi.menu.freq.175=175 MHz (Overclock) -challenger_2040_wifi.menu.freq.175.build.f_cpu=175000000L -challenger_2040_wifi.menu.freq.200=200 MHz (Overclock) -challenger_2040_wifi.menu.freq.200.build.f_cpu=200000000L +challenger_2040_wifi.menu.freq.176=176 MHz +challenger_2040_wifi.menu.freq.176.build.f_cpu=176000000L challenger_2040_wifi.menu.freq.225=225 MHz (Overclock) challenger_2040_wifi.menu.freq.225.build.f_cpu=225000000L challenger_2040_wifi.menu.freq.240=240 MHz (Overclock) challenger_2040_wifi.menu.freq.240.build.f_cpu=240000000L challenger_2040_wifi.menu.freq.250=250 MHz (Overclock) challenger_2040_wifi.menu.freq.250.build.f_cpu=250000000L -challenger_2040_wifi.menu.freq.275=275 MHz (Overclock) -challenger_2040_wifi.menu.freq.275.build.f_cpu=275000000L +challenger_2040_wifi.menu.freq.276=276 MHz (Overclock) +challenger_2040_wifi.menu.freq.276.build.f_cpu=276000000L challenger_2040_wifi.menu.freq.300=300 MHz (Overclock) challenger_2040_wifi.menu.freq.300.build.f_cpu=300000000L challenger_2040_wifi.menu.opt.Small=Small (-Os) (standard) @@ -15386,7 +16405,7 @@ challenger_2040_wifi.menu.rtti.Enabled.build.flags.rtti= challenger_2040_wifi.menu.stackprotect.Disabled=Disabled challenger_2040_wifi.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_wifi.menu.stackprotect.Enabled=Enabled -challenger_2040_wifi.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_wifi.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_wifi.menu.exceptions.Disabled=Disabled challenger_2040_wifi.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_wifi.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -15714,8 +16733,8 @@ challenger_2040_wifi_ble.menu.flash.16777216_2097152.build.flash_length=14675968 challenger_2040_wifi_ble.menu.flash.16777216_2097152.build.eeprom_start=285208576 challenger_2040_wifi_ble.menu.flash.16777216_2097152.build.fs_start=283111424 challenger_2040_wifi_ble.menu.flash.16777216_2097152.build.fs_end=285208576 -challenger_2040_wifi_ble.menu.freq.133=133 MHz -challenger_2040_wifi_ble.menu.freq.133.build.f_cpu=133000000L +challenger_2040_wifi_ble.menu.freq.200=200 MHz +challenger_2040_wifi_ble.menu.freq.200.build.f_cpu=200000000L challenger_2040_wifi_ble.menu.freq.50=50 MHz challenger_2040_wifi_ble.menu.freq.50.build.f_cpu=50000000L challenger_2040_wifi_ble.menu.freq.100=100 MHz @@ -15726,20 +16745,20 @@ challenger_2040_wifi_ble.menu.freq.125=125 MHz challenger_2040_wifi_ble.menu.freq.125.build.f_cpu=125000000L challenger_2040_wifi_ble.menu.freq.128=128 MHz challenger_2040_wifi_ble.menu.freq.128.build.f_cpu=128000000L -challenger_2040_wifi_ble.menu.freq.150=150 MHz (Overclock) +challenger_2040_wifi_ble.menu.freq.133=133 MHz +challenger_2040_wifi_ble.menu.freq.133.build.f_cpu=133000000L +challenger_2040_wifi_ble.menu.freq.150=150 MHz challenger_2040_wifi_ble.menu.freq.150.build.f_cpu=150000000L -challenger_2040_wifi_ble.menu.freq.175=175 MHz (Overclock) -challenger_2040_wifi_ble.menu.freq.175.build.f_cpu=175000000L -challenger_2040_wifi_ble.menu.freq.200=200 MHz (Overclock) -challenger_2040_wifi_ble.menu.freq.200.build.f_cpu=200000000L +challenger_2040_wifi_ble.menu.freq.176=176 MHz +challenger_2040_wifi_ble.menu.freq.176.build.f_cpu=176000000L challenger_2040_wifi_ble.menu.freq.225=225 MHz (Overclock) challenger_2040_wifi_ble.menu.freq.225.build.f_cpu=225000000L challenger_2040_wifi_ble.menu.freq.240=240 MHz (Overclock) challenger_2040_wifi_ble.menu.freq.240.build.f_cpu=240000000L challenger_2040_wifi_ble.menu.freq.250=250 MHz (Overclock) challenger_2040_wifi_ble.menu.freq.250.build.f_cpu=250000000L -challenger_2040_wifi_ble.menu.freq.275=275 MHz (Overclock) -challenger_2040_wifi_ble.menu.freq.275.build.f_cpu=275000000L +challenger_2040_wifi_ble.menu.freq.276=276 MHz (Overclock) +challenger_2040_wifi_ble.menu.freq.276.build.f_cpu=276000000L challenger_2040_wifi_ble.menu.freq.300=300 MHz (Overclock) challenger_2040_wifi_ble.menu.freq.300.build.f_cpu=300000000L challenger_2040_wifi_ble.menu.opt.Small=Small (-Os) (standard) @@ -15767,7 +16786,7 @@ challenger_2040_wifi_ble.menu.rtti.Enabled.build.flags.rtti= challenger_2040_wifi_ble.menu.stackprotect.Disabled=Disabled challenger_2040_wifi_ble.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_wifi_ble.menu.stackprotect.Enabled=Enabled -challenger_2040_wifi_ble.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_wifi_ble.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_wifi_ble.menu.exceptions.Disabled=Disabled challenger_2040_wifi_ble.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_wifi_ble.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -15995,8 +17014,8 @@ challenger_2040_wifi6_ble.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_2040_wifi6_ble.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_2040_wifi6_ble.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_2040_wifi6_ble.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_2040_wifi6_ble.menu.freq.133=133 MHz -challenger_2040_wifi6_ble.menu.freq.133.build.f_cpu=133000000L +challenger_2040_wifi6_ble.menu.freq.200=200 MHz +challenger_2040_wifi6_ble.menu.freq.200.build.f_cpu=200000000L challenger_2040_wifi6_ble.menu.freq.50=50 MHz challenger_2040_wifi6_ble.menu.freq.50.build.f_cpu=50000000L challenger_2040_wifi6_ble.menu.freq.100=100 MHz @@ -16007,20 +17026,20 @@ challenger_2040_wifi6_ble.menu.freq.125=125 MHz challenger_2040_wifi6_ble.menu.freq.125.build.f_cpu=125000000L challenger_2040_wifi6_ble.menu.freq.128=128 MHz challenger_2040_wifi6_ble.menu.freq.128.build.f_cpu=128000000L -challenger_2040_wifi6_ble.menu.freq.150=150 MHz (Overclock) +challenger_2040_wifi6_ble.menu.freq.133=133 MHz +challenger_2040_wifi6_ble.menu.freq.133.build.f_cpu=133000000L +challenger_2040_wifi6_ble.menu.freq.150=150 MHz challenger_2040_wifi6_ble.menu.freq.150.build.f_cpu=150000000L -challenger_2040_wifi6_ble.menu.freq.175=175 MHz (Overclock) -challenger_2040_wifi6_ble.menu.freq.175.build.f_cpu=175000000L -challenger_2040_wifi6_ble.menu.freq.200=200 MHz (Overclock) -challenger_2040_wifi6_ble.menu.freq.200.build.f_cpu=200000000L +challenger_2040_wifi6_ble.menu.freq.176=176 MHz +challenger_2040_wifi6_ble.menu.freq.176.build.f_cpu=176000000L challenger_2040_wifi6_ble.menu.freq.225=225 MHz (Overclock) challenger_2040_wifi6_ble.menu.freq.225.build.f_cpu=225000000L challenger_2040_wifi6_ble.menu.freq.240=240 MHz (Overclock) challenger_2040_wifi6_ble.menu.freq.240.build.f_cpu=240000000L challenger_2040_wifi6_ble.menu.freq.250=250 MHz (Overclock) challenger_2040_wifi6_ble.menu.freq.250.build.f_cpu=250000000L -challenger_2040_wifi6_ble.menu.freq.275=275 MHz (Overclock) -challenger_2040_wifi6_ble.menu.freq.275.build.f_cpu=275000000L +challenger_2040_wifi6_ble.menu.freq.276=276 MHz (Overclock) +challenger_2040_wifi6_ble.menu.freq.276.build.f_cpu=276000000L challenger_2040_wifi6_ble.menu.freq.300=300 MHz (Overclock) challenger_2040_wifi6_ble.menu.freq.300.build.f_cpu=300000000L challenger_2040_wifi6_ble.menu.opt.Small=Small (-Os) (standard) @@ -16048,7 +17067,7 @@ challenger_2040_wifi6_ble.menu.rtti.Enabled.build.flags.rtti= challenger_2040_wifi6_ble.menu.stackprotect.Disabled=Disabled challenger_2040_wifi6_ble.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_wifi6_ble.menu.stackprotect.Enabled=Enabled -challenger_2040_wifi6_ble.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_wifi6_ble.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_wifi6_ble.menu.exceptions.Disabled=Disabled challenger_2040_wifi6_ble.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_wifi6_ble.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -16276,8 +17295,8 @@ challenger_nb_2040_wifi.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_nb_2040_wifi.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_nb_2040_wifi.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_nb_2040_wifi.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_nb_2040_wifi.menu.freq.133=133 MHz -challenger_nb_2040_wifi.menu.freq.133.build.f_cpu=133000000L +challenger_nb_2040_wifi.menu.freq.200=200 MHz +challenger_nb_2040_wifi.menu.freq.200.build.f_cpu=200000000L challenger_nb_2040_wifi.menu.freq.50=50 MHz challenger_nb_2040_wifi.menu.freq.50.build.f_cpu=50000000L challenger_nb_2040_wifi.menu.freq.100=100 MHz @@ -16288,20 +17307,20 @@ challenger_nb_2040_wifi.menu.freq.125=125 MHz challenger_nb_2040_wifi.menu.freq.125.build.f_cpu=125000000L challenger_nb_2040_wifi.menu.freq.128=128 MHz challenger_nb_2040_wifi.menu.freq.128.build.f_cpu=128000000L -challenger_nb_2040_wifi.menu.freq.150=150 MHz (Overclock) +challenger_nb_2040_wifi.menu.freq.133=133 MHz +challenger_nb_2040_wifi.menu.freq.133.build.f_cpu=133000000L +challenger_nb_2040_wifi.menu.freq.150=150 MHz challenger_nb_2040_wifi.menu.freq.150.build.f_cpu=150000000L -challenger_nb_2040_wifi.menu.freq.175=175 MHz (Overclock) -challenger_nb_2040_wifi.menu.freq.175.build.f_cpu=175000000L -challenger_nb_2040_wifi.menu.freq.200=200 MHz (Overclock) -challenger_nb_2040_wifi.menu.freq.200.build.f_cpu=200000000L +challenger_nb_2040_wifi.menu.freq.176=176 MHz +challenger_nb_2040_wifi.menu.freq.176.build.f_cpu=176000000L challenger_nb_2040_wifi.menu.freq.225=225 MHz (Overclock) challenger_nb_2040_wifi.menu.freq.225.build.f_cpu=225000000L challenger_nb_2040_wifi.menu.freq.240=240 MHz (Overclock) challenger_nb_2040_wifi.menu.freq.240.build.f_cpu=240000000L challenger_nb_2040_wifi.menu.freq.250=250 MHz (Overclock) challenger_nb_2040_wifi.menu.freq.250.build.f_cpu=250000000L -challenger_nb_2040_wifi.menu.freq.275=275 MHz (Overclock) -challenger_nb_2040_wifi.menu.freq.275.build.f_cpu=275000000L +challenger_nb_2040_wifi.menu.freq.276=276 MHz (Overclock) +challenger_nb_2040_wifi.menu.freq.276.build.f_cpu=276000000L challenger_nb_2040_wifi.menu.freq.300=300 MHz (Overclock) challenger_nb_2040_wifi.menu.freq.300.build.f_cpu=300000000L challenger_nb_2040_wifi.menu.opt.Small=Small (-Os) (standard) @@ -16329,7 +17348,7 @@ challenger_nb_2040_wifi.menu.rtti.Enabled.build.flags.rtti= challenger_nb_2040_wifi.menu.stackprotect.Disabled=Disabled challenger_nb_2040_wifi.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_nb_2040_wifi.menu.stackprotect.Enabled=Enabled -challenger_nb_2040_wifi.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_nb_2040_wifi.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_nb_2040_wifi.menu.exceptions.Disabled=Disabled challenger_nb_2040_wifi.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_nb_2040_wifi.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -16556,8 +17575,8 @@ challenger_2040_sdrtc.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_2040_sdrtc.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_2040_sdrtc.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_2040_sdrtc.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_2040_sdrtc.menu.freq.133=133 MHz -challenger_2040_sdrtc.menu.freq.133.build.f_cpu=133000000L +challenger_2040_sdrtc.menu.freq.200=200 MHz +challenger_2040_sdrtc.menu.freq.200.build.f_cpu=200000000L challenger_2040_sdrtc.menu.freq.50=50 MHz challenger_2040_sdrtc.menu.freq.50.build.f_cpu=50000000L challenger_2040_sdrtc.menu.freq.100=100 MHz @@ -16568,20 +17587,20 @@ challenger_2040_sdrtc.menu.freq.125=125 MHz challenger_2040_sdrtc.menu.freq.125.build.f_cpu=125000000L challenger_2040_sdrtc.menu.freq.128=128 MHz challenger_2040_sdrtc.menu.freq.128.build.f_cpu=128000000L -challenger_2040_sdrtc.menu.freq.150=150 MHz (Overclock) +challenger_2040_sdrtc.menu.freq.133=133 MHz +challenger_2040_sdrtc.menu.freq.133.build.f_cpu=133000000L +challenger_2040_sdrtc.menu.freq.150=150 MHz challenger_2040_sdrtc.menu.freq.150.build.f_cpu=150000000L -challenger_2040_sdrtc.menu.freq.175=175 MHz (Overclock) -challenger_2040_sdrtc.menu.freq.175.build.f_cpu=175000000L -challenger_2040_sdrtc.menu.freq.200=200 MHz (Overclock) -challenger_2040_sdrtc.menu.freq.200.build.f_cpu=200000000L +challenger_2040_sdrtc.menu.freq.176=176 MHz +challenger_2040_sdrtc.menu.freq.176.build.f_cpu=176000000L challenger_2040_sdrtc.menu.freq.225=225 MHz (Overclock) challenger_2040_sdrtc.menu.freq.225.build.f_cpu=225000000L challenger_2040_sdrtc.menu.freq.240=240 MHz (Overclock) challenger_2040_sdrtc.menu.freq.240.build.f_cpu=240000000L challenger_2040_sdrtc.menu.freq.250=250 MHz (Overclock) challenger_2040_sdrtc.menu.freq.250.build.f_cpu=250000000L -challenger_2040_sdrtc.menu.freq.275=275 MHz (Overclock) -challenger_2040_sdrtc.menu.freq.275.build.f_cpu=275000000L +challenger_2040_sdrtc.menu.freq.276=276 MHz (Overclock) +challenger_2040_sdrtc.menu.freq.276.build.f_cpu=276000000L challenger_2040_sdrtc.menu.freq.300=300 MHz (Overclock) challenger_2040_sdrtc.menu.freq.300.build.f_cpu=300000000L challenger_2040_sdrtc.menu.opt.Small=Small (-Os) (standard) @@ -16609,7 +17628,7 @@ challenger_2040_sdrtc.menu.rtti.Enabled.build.flags.rtti= challenger_2040_sdrtc.menu.stackprotect.Disabled=Disabled challenger_2040_sdrtc.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_sdrtc.menu.stackprotect.Enabled=Enabled -challenger_2040_sdrtc.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_sdrtc.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_sdrtc.menu.exceptions.Disabled=Disabled challenger_2040_sdrtc.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_sdrtc.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -16836,8 +17855,8 @@ challenger_2040_nfc.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_2040_nfc.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_2040_nfc.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_2040_nfc.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_2040_nfc.menu.freq.133=133 MHz -challenger_2040_nfc.menu.freq.133.build.f_cpu=133000000L +challenger_2040_nfc.menu.freq.200=200 MHz +challenger_2040_nfc.menu.freq.200.build.f_cpu=200000000L challenger_2040_nfc.menu.freq.50=50 MHz challenger_2040_nfc.menu.freq.50.build.f_cpu=50000000L challenger_2040_nfc.menu.freq.100=100 MHz @@ -16848,20 +17867,20 @@ challenger_2040_nfc.menu.freq.125=125 MHz challenger_2040_nfc.menu.freq.125.build.f_cpu=125000000L challenger_2040_nfc.menu.freq.128=128 MHz challenger_2040_nfc.menu.freq.128.build.f_cpu=128000000L -challenger_2040_nfc.menu.freq.150=150 MHz (Overclock) +challenger_2040_nfc.menu.freq.133=133 MHz +challenger_2040_nfc.menu.freq.133.build.f_cpu=133000000L +challenger_2040_nfc.menu.freq.150=150 MHz challenger_2040_nfc.menu.freq.150.build.f_cpu=150000000L -challenger_2040_nfc.menu.freq.175=175 MHz (Overclock) -challenger_2040_nfc.menu.freq.175.build.f_cpu=175000000L -challenger_2040_nfc.menu.freq.200=200 MHz (Overclock) -challenger_2040_nfc.menu.freq.200.build.f_cpu=200000000L +challenger_2040_nfc.menu.freq.176=176 MHz +challenger_2040_nfc.menu.freq.176.build.f_cpu=176000000L challenger_2040_nfc.menu.freq.225=225 MHz (Overclock) challenger_2040_nfc.menu.freq.225.build.f_cpu=225000000L challenger_2040_nfc.menu.freq.240=240 MHz (Overclock) challenger_2040_nfc.menu.freq.240.build.f_cpu=240000000L challenger_2040_nfc.menu.freq.250=250 MHz (Overclock) challenger_2040_nfc.menu.freq.250.build.f_cpu=250000000L -challenger_2040_nfc.menu.freq.275=275 MHz (Overclock) -challenger_2040_nfc.menu.freq.275.build.f_cpu=275000000L +challenger_2040_nfc.menu.freq.276=276 MHz (Overclock) +challenger_2040_nfc.menu.freq.276.build.f_cpu=276000000L challenger_2040_nfc.menu.freq.300=300 MHz (Overclock) challenger_2040_nfc.menu.freq.300.build.f_cpu=300000000L challenger_2040_nfc.menu.opt.Small=Small (-Os) (standard) @@ -16889,7 +17908,7 @@ challenger_2040_nfc.menu.rtti.Enabled.build.flags.rtti= challenger_2040_nfc.menu.stackprotect.Disabled=Disabled challenger_2040_nfc.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_nfc.menu.stackprotect.Enabled=Enabled -challenger_2040_nfc.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_nfc.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_nfc.menu.exceptions.Disabled=Disabled challenger_2040_nfc.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_nfc.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -17116,8 +18135,8 @@ challenger_2040_uwb.menu.flash.8388608_7340032.build.flash_length=1044480 challenger_2040_uwb.menu.flash.8388608_7340032.build.eeprom_start=276819968 challenger_2040_uwb.menu.flash.8388608_7340032.build.fs_start=269479936 challenger_2040_uwb.menu.flash.8388608_7340032.build.fs_end=276819968 -challenger_2040_uwb.menu.freq.133=133 MHz -challenger_2040_uwb.menu.freq.133.build.f_cpu=133000000L +challenger_2040_uwb.menu.freq.200=200 MHz +challenger_2040_uwb.menu.freq.200.build.f_cpu=200000000L challenger_2040_uwb.menu.freq.50=50 MHz challenger_2040_uwb.menu.freq.50.build.f_cpu=50000000L challenger_2040_uwb.menu.freq.100=100 MHz @@ -17128,20 +18147,20 @@ challenger_2040_uwb.menu.freq.125=125 MHz challenger_2040_uwb.menu.freq.125.build.f_cpu=125000000L challenger_2040_uwb.menu.freq.128=128 MHz challenger_2040_uwb.menu.freq.128.build.f_cpu=128000000L -challenger_2040_uwb.menu.freq.150=150 MHz (Overclock) +challenger_2040_uwb.menu.freq.133=133 MHz +challenger_2040_uwb.menu.freq.133.build.f_cpu=133000000L +challenger_2040_uwb.menu.freq.150=150 MHz challenger_2040_uwb.menu.freq.150.build.f_cpu=150000000L -challenger_2040_uwb.menu.freq.175=175 MHz (Overclock) -challenger_2040_uwb.menu.freq.175.build.f_cpu=175000000L -challenger_2040_uwb.menu.freq.200=200 MHz (Overclock) -challenger_2040_uwb.menu.freq.200.build.f_cpu=200000000L +challenger_2040_uwb.menu.freq.176=176 MHz +challenger_2040_uwb.menu.freq.176.build.f_cpu=176000000L challenger_2040_uwb.menu.freq.225=225 MHz (Overclock) challenger_2040_uwb.menu.freq.225.build.f_cpu=225000000L challenger_2040_uwb.menu.freq.240=240 MHz (Overclock) challenger_2040_uwb.menu.freq.240.build.f_cpu=240000000L challenger_2040_uwb.menu.freq.250=250 MHz (Overclock) challenger_2040_uwb.menu.freq.250.build.f_cpu=250000000L -challenger_2040_uwb.menu.freq.275=275 MHz (Overclock) -challenger_2040_uwb.menu.freq.275.build.f_cpu=275000000L +challenger_2040_uwb.menu.freq.276=276 MHz (Overclock) +challenger_2040_uwb.menu.freq.276.build.f_cpu=276000000L challenger_2040_uwb.menu.freq.300=300 MHz (Overclock) challenger_2040_uwb.menu.freq.300.build.f_cpu=300000000L challenger_2040_uwb.menu.opt.Small=Small (-Os) (standard) @@ -17169,7 +18188,7 @@ challenger_2040_uwb.menu.rtti.Enabled.build.flags.rtti= challenger_2040_uwb.menu.stackprotect.Disabled=Disabled challenger_2040_uwb.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2040_uwb.menu.stackprotect.Enabled=Enabled -challenger_2040_uwb.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2040_uwb.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2040_uwb.menu.exceptions.Disabled=Disabled challenger_2040_uwb.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2040_uwb.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -17397,8 +18416,8 @@ connectivity_2040_lte_wifi_ble.menu.flash.8388608_7340032.build.flash_length=104 connectivity_2040_lte_wifi_ble.menu.flash.8388608_7340032.build.eeprom_start=276819968 connectivity_2040_lte_wifi_ble.menu.flash.8388608_7340032.build.fs_start=269479936 connectivity_2040_lte_wifi_ble.menu.flash.8388608_7340032.build.fs_end=276819968 -connectivity_2040_lte_wifi_ble.menu.freq.133=133 MHz -connectivity_2040_lte_wifi_ble.menu.freq.133.build.f_cpu=133000000L +connectivity_2040_lte_wifi_ble.menu.freq.200=200 MHz +connectivity_2040_lte_wifi_ble.menu.freq.200.build.f_cpu=200000000L connectivity_2040_lte_wifi_ble.menu.freq.50=50 MHz connectivity_2040_lte_wifi_ble.menu.freq.50.build.f_cpu=50000000L connectivity_2040_lte_wifi_ble.menu.freq.100=100 MHz @@ -17409,20 +18428,20 @@ connectivity_2040_lte_wifi_ble.menu.freq.125=125 MHz connectivity_2040_lte_wifi_ble.menu.freq.125.build.f_cpu=125000000L connectivity_2040_lte_wifi_ble.menu.freq.128=128 MHz connectivity_2040_lte_wifi_ble.menu.freq.128.build.f_cpu=128000000L -connectivity_2040_lte_wifi_ble.menu.freq.150=150 MHz (Overclock) +connectivity_2040_lte_wifi_ble.menu.freq.133=133 MHz +connectivity_2040_lte_wifi_ble.menu.freq.133.build.f_cpu=133000000L +connectivity_2040_lte_wifi_ble.menu.freq.150=150 MHz connectivity_2040_lte_wifi_ble.menu.freq.150.build.f_cpu=150000000L -connectivity_2040_lte_wifi_ble.menu.freq.175=175 MHz (Overclock) -connectivity_2040_lte_wifi_ble.menu.freq.175.build.f_cpu=175000000L -connectivity_2040_lte_wifi_ble.menu.freq.200=200 MHz (Overclock) -connectivity_2040_lte_wifi_ble.menu.freq.200.build.f_cpu=200000000L +connectivity_2040_lte_wifi_ble.menu.freq.176=176 MHz +connectivity_2040_lte_wifi_ble.menu.freq.176.build.f_cpu=176000000L connectivity_2040_lte_wifi_ble.menu.freq.225=225 MHz (Overclock) connectivity_2040_lte_wifi_ble.menu.freq.225.build.f_cpu=225000000L connectivity_2040_lte_wifi_ble.menu.freq.240=240 MHz (Overclock) connectivity_2040_lte_wifi_ble.menu.freq.240.build.f_cpu=240000000L connectivity_2040_lte_wifi_ble.menu.freq.250=250 MHz (Overclock) connectivity_2040_lte_wifi_ble.menu.freq.250.build.f_cpu=250000000L -connectivity_2040_lte_wifi_ble.menu.freq.275=275 MHz (Overclock) -connectivity_2040_lte_wifi_ble.menu.freq.275.build.f_cpu=275000000L +connectivity_2040_lte_wifi_ble.menu.freq.276=276 MHz (Overclock) +connectivity_2040_lte_wifi_ble.menu.freq.276.build.f_cpu=276000000L connectivity_2040_lte_wifi_ble.menu.freq.300=300 MHz (Overclock) connectivity_2040_lte_wifi_ble.menu.freq.300.build.f_cpu=300000000L connectivity_2040_lte_wifi_ble.menu.opt.Small=Small (-Os) (standard) @@ -17450,7 +18469,7 @@ connectivity_2040_lte_wifi_ble.menu.rtti.Enabled.build.flags.rtti= connectivity_2040_lte_wifi_ble.menu.stackprotect.Disabled=Disabled connectivity_2040_lte_wifi_ble.menu.stackprotect.Disabled.build.flags.stackprotect= connectivity_2040_lte_wifi_ble.menu.stackprotect.Enabled=Enabled -connectivity_2040_lte_wifi_ble.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +connectivity_2040_lte_wifi_ble.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all connectivity_2040_lte_wifi_ble.menu.exceptions.Disabled=Disabled connectivity_2040_lte_wifi_ble.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions connectivity_2040_lte_wifi_ble.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -17678,8 +18697,8 @@ ilabs_rpico32.menu.flash.8388608_7340032.build.flash_length=1044480 ilabs_rpico32.menu.flash.8388608_7340032.build.eeprom_start=276819968 ilabs_rpico32.menu.flash.8388608_7340032.build.fs_start=269479936 ilabs_rpico32.menu.flash.8388608_7340032.build.fs_end=276819968 -ilabs_rpico32.menu.freq.133=133 MHz -ilabs_rpico32.menu.freq.133.build.f_cpu=133000000L +ilabs_rpico32.menu.freq.200=200 MHz +ilabs_rpico32.menu.freq.200.build.f_cpu=200000000L ilabs_rpico32.menu.freq.50=50 MHz ilabs_rpico32.menu.freq.50.build.f_cpu=50000000L ilabs_rpico32.menu.freq.100=100 MHz @@ -17690,20 +18709,20 @@ ilabs_rpico32.menu.freq.125=125 MHz ilabs_rpico32.menu.freq.125.build.f_cpu=125000000L ilabs_rpico32.menu.freq.128=128 MHz ilabs_rpico32.menu.freq.128.build.f_cpu=128000000L -ilabs_rpico32.menu.freq.150=150 MHz (Overclock) +ilabs_rpico32.menu.freq.133=133 MHz +ilabs_rpico32.menu.freq.133.build.f_cpu=133000000L +ilabs_rpico32.menu.freq.150=150 MHz ilabs_rpico32.menu.freq.150.build.f_cpu=150000000L -ilabs_rpico32.menu.freq.175=175 MHz (Overclock) -ilabs_rpico32.menu.freq.175.build.f_cpu=175000000L -ilabs_rpico32.menu.freq.200=200 MHz (Overclock) -ilabs_rpico32.menu.freq.200.build.f_cpu=200000000L +ilabs_rpico32.menu.freq.176=176 MHz +ilabs_rpico32.menu.freq.176.build.f_cpu=176000000L ilabs_rpico32.menu.freq.225=225 MHz (Overclock) ilabs_rpico32.menu.freq.225.build.f_cpu=225000000L ilabs_rpico32.menu.freq.240=240 MHz (Overclock) ilabs_rpico32.menu.freq.240.build.f_cpu=240000000L ilabs_rpico32.menu.freq.250=250 MHz (Overclock) ilabs_rpico32.menu.freq.250.build.f_cpu=250000000L -ilabs_rpico32.menu.freq.275=275 MHz (Overclock) -ilabs_rpico32.menu.freq.275.build.f_cpu=275000000L +ilabs_rpico32.menu.freq.276=276 MHz (Overclock) +ilabs_rpico32.menu.freq.276.build.f_cpu=276000000L ilabs_rpico32.menu.freq.300=300 MHz (Overclock) ilabs_rpico32.menu.freq.300.build.f_cpu=300000000L ilabs_rpico32.menu.opt.Small=Small (-Os) (standard) @@ -17731,7 +18750,7 @@ ilabs_rpico32.menu.rtti.Enabled.build.flags.rtti= ilabs_rpico32.menu.stackprotect.Disabled=Disabled ilabs_rpico32.menu.stackprotect.Disabled.build.flags.stackprotect= ilabs_rpico32.menu.stackprotect.Enabled=Enabled -ilabs_rpico32.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +ilabs_rpico32.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all ilabs_rpico32.menu.exceptions.Disabled=Disabled ilabs_rpico32.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions ilabs_rpico32.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -18082,8 +19101,8 @@ challenger_2350_wifi6_ble5.menu.freq.128=128 MHz challenger_2350_wifi6_ble5.menu.freq.128.build.f_cpu=128000000L challenger_2350_wifi6_ble5.menu.freq.133=133 MHz challenger_2350_wifi6_ble5.menu.freq.133.build.f_cpu=133000000L -challenger_2350_wifi6_ble5.menu.freq.175=175 MHz (Overclock) -challenger_2350_wifi6_ble5.menu.freq.175.build.f_cpu=175000000L +challenger_2350_wifi6_ble5.menu.freq.176=176 MHz (Overclock) +challenger_2350_wifi6_ble5.menu.freq.176.build.f_cpu=176000000L challenger_2350_wifi6_ble5.menu.freq.200=200 MHz (Overclock) challenger_2350_wifi6_ble5.menu.freq.200.build.f_cpu=200000000L challenger_2350_wifi6_ble5.menu.freq.225=225 MHz (Overclock) @@ -18092,8 +19111,8 @@ challenger_2350_wifi6_ble5.menu.freq.240=240 MHz (Overclock) challenger_2350_wifi6_ble5.menu.freq.240.build.f_cpu=240000000L challenger_2350_wifi6_ble5.menu.freq.250=250 MHz (Overclock) challenger_2350_wifi6_ble5.menu.freq.250.build.f_cpu=250000000L -challenger_2350_wifi6_ble5.menu.freq.275=275 MHz (Overclock) -challenger_2350_wifi6_ble5.menu.freq.275.build.f_cpu=275000000L +challenger_2350_wifi6_ble5.menu.freq.276=276 MHz (Overclock) +challenger_2350_wifi6_ble5.menu.freq.276.build.f_cpu=276000000L challenger_2350_wifi6_ble5.menu.freq.300=300 MHz (Overclock) challenger_2350_wifi6_ble5.menu.freq.300.build.f_cpu=300000000L challenger_2350_wifi6_ble5.menu.opt.Small=Small (-Os) (standard) @@ -18121,7 +19140,7 @@ challenger_2350_wifi6_ble5.menu.rtti.Enabled.build.flags.rtti= challenger_2350_wifi6_ble5.menu.stackprotect.Disabled=Disabled challenger_2350_wifi6_ble5.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2350_wifi6_ble5.menu.stackprotect.Enabled=Enabled -challenger_2350_wifi6_ble5.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2350_wifi6_ble5.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2350_wifi6_ble5.menu.exceptions.Disabled=Disabled challenger_2350_wifi6_ble5.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2350_wifi6_ble5.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -18371,8 +19390,8 @@ challenger_2350_bconnect.menu.freq.128=128 MHz challenger_2350_bconnect.menu.freq.128.build.f_cpu=128000000L challenger_2350_bconnect.menu.freq.133=133 MHz challenger_2350_bconnect.menu.freq.133.build.f_cpu=133000000L -challenger_2350_bconnect.menu.freq.175=175 MHz (Overclock) -challenger_2350_bconnect.menu.freq.175.build.f_cpu=175000000L +challenger_2350_bconnect.menu.freq.176=176 MHz (Overclock) +challenger_2350_bconnect.menu.freq.176.build.f_cpu=176000000L challenger_2350_bconnect.menu.freq.200=200 MHz (Overclock) challenger_2350_bconnect.menu.freq.200.build.f_cpu=200000000L challenger_2350_bconnect.menu.freq.225=225 MHz (Overclock) @@ -18381,8 +19400,8 @@ challenger_2350_bconnect.menu.freq.240=240 MHz (Overclock) challenger_2350_bconnect.menu.freq.240.build.f_cpu=240000000L challenger_2350_bconnect.menu.freq.250=250 MHz (Overclock) challenger_2350_bconnect.menu.freq.250.build.f_cpu=250000000L -challenger_2350_bconnect.menu.freq.275=275 MHz (Overclock) -challenger_2350_bconnect.menu.freq.275.build.f_cpu=275000000L +challenger_2350_bconnect.menu.freq.276=276 MHz (Overclock) +challenger_2350_bconnect.menu.freq.276.build.f_cpu=276000000L challenger_2350_bconnect.menu.freq.300=300 MHz (Overclock) challenger_2350_bconnect.menu.freq.300.build.f_cpu=300000000L challenger_2350_bconnect.menu.opt.Small=Small (-Os) (standard) @@ -18410,7 +19429,7 @@ challenger_2350_bconnect.menu.rtti.Enabled.build.flags.rtti= challenger_2350_bconnect.menu.stackprotect.Disabled=Disabled challenger_2350_bconnect.menu.stackprotect.Disabled.build.flags.stackprotect= challenger_2350_bconnect.menu.stackprotect.Enabled=Enabled -challenger_2350_bconnect.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +challenger_2350_bconnect.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all challenger_2350_bconnect.menu.exceptions.Disabled=Disabled challenger_2350_bconnect.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions challenger_2350_bconnect.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -18494,6 +19513,468 @@ challenger_2350_bconnect.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_da challenger_2350_bconnect.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap challenger_2350_bconnect.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +# ----------------------------------- +# Makerbase MKS THR36 +# ----------------------------------- +mksthr36.name=Makerbase MKS THR36 +mksthr36.vid.0=0x2e8a +mksthr36.pid.0=0x000a +mksthr36.vid.1=0x2e8a +mksthr36.pid.1=0x010a +mksthr36.vid.2=0x2e8a +mksthr36.pid.2=0x400a +mksthr36.vid.3=0x2e8a +mksthr36.pid.3=0x410a +mksthr36.vid.4=0x2e8a +mksthr36.pid.4=0x800a +mksthr36.vid.5=0x2e8a +mksthr36.pid.5=0x810a +mksthr36.vid.6=0x2e8a +mksthr36.pid.6=0xc00a +mksthr36.vid.7=0x2e8a +mksthr36.pid.7=0xc10a +mksthr36.upload_port.0.vid=0x2e8a +mksthr36.upload_port.0.pid=0x000a +mksthr36.upload_port.1.vid=0x2e8a +mksthr36.upload_port.1.pid=0x010a +mksthr36.upload_port.2.vid=0x2e8a +mksthr36.upload_port.2.pid=0x400a +mksthr36.upload_port.3.vid=0x2e8a +mksthr36.upload_port.3.pid=0x410a +mksthr36.upload_port.4.vid=0x2e8a +mksthr36.upload_port.4.pid=0x800a +mksthr36.upload_port.5.vid=0x2e8a +mksthr36.upload_port.5.pid=0x810a +mksthr36.upload_port.6.vid=0x2e8a +mksthr36.upload_port.6.pid=0xc00a +mksthr36.upload_port.7.vid=0x2e8a +mksthr36.upload_port.7.pid=0xc10a +mksthr36.build.usbvid=-DUSBD_VID=0x2e8a +mksthr36.build.usbpid=-DUSBD_PID=0x000a +mksthr36.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +mksthr36.build.board=MAKERBASE_MKSTHR36 +mksthr36.build.mcu=cortex-m0plus +mksthr36.build.chip=rp2040 +mksthr36.build.toolchain=arm-none-eabi +mksthr36.build.toolchainpkg=pqt-gcc +mksthr36.build.toolchainopts=-march=armv6-m -mcpu=cortex-m0plus -mthumb +mksthr36.build.uf2family=--family rp2040 +mksthr36.build.variant=mksthr36 +mksthr36.upload.maximum_size=1048576 +mksthr36.upload.wait_for_upload_port=true +mksthr36.upload.erase_cmd= +mksthr36.serial.disableDTR=false +mksthr36.serial.disableRTS=false +mksthr36.build.f_cpu=125000000 +mksthr36.build.led= +mksthr36.build.core=rp2040 +mksthr36.build.ldscript=memmap_default.ld +mksthr36.build.boot2=boot2_w25q080_2_padded_checksum +mksthr36.build.usb_manufacturer="Makerbase" +mksthr36.build.usb_product="MKS THR36" +mksthr36.menu.flash.1048576_0=1MB (no FS) +mksthr36.menu.flash.1048576_0.upload.maximum_size=1044480 +mksthr36.menu.flash.1048576_0.build.flash_total=1048576 +mksthr36.menu.flash.1048576_0.build.flash_length=1044480 +mksthr36.menu.flash.1048576_0.build.eeprom_start=269479936 +mksthr36.menu.flash.1048576_0.build.fs_start=269479936 +mksthr36.menu.flash.1048576_0.build.fs_end=269479936 +mksthr36.menu.flash.1048576_65536=1MB (Sketch: 960KB, FS: 64KB) +mksthr36.menu.flash.1048576_65536.upload.maximum_size=978944 +mksthr36.menu.flash.1048576_65536.build.flash_total=1048576 +mksthr36.menu.flash.1048576_65536.build.flash_length=978944 +mksthr36.menu.flash.1048576_65536.build.eeprom_start=269479936 +mksthr36.menu.flash.1048576_65536.build.fs_start=269414400 +mksthr36.menu.flash.1048576_65536.build.fs_end=269479936 +mksthr36.menu.flash.1048576_131072=1MB (Sketch: 896KB, FS: 128KB) +mksthr36.menu.flash.1048576_131072.upload.maximum_size=913408 +mksthr36.menu.flash.1048576_131072.build.flash_total=1048576 +mksthr36.menu.flash.1048576_131072.build.flash_length=913408 +mksthr36.menu.flash.1048576_131072.build.eeprom_start=269479936 +mksthr36.menu.flash.1048576_131072.build.fs_start=269348864 +mksthr36.menu.flash.1048576_131072.build.fs_end=269479936 +mksthr36.menu.flash.1048576_262144=1MB (Sketch: 768KB, FS: 256KB) +mksthr36.menu.flash.1048576_262144.upload.maximum_size=782336 +mksthr36.menu.flash.1048576_262144.build.flash_total=1048576 +mksthr36.menu.flash.1048576_262144.build.flash_length=782336 +mksthr36.menu.flash.1048576_262144.build.eeprom_start=269479936 +mksthr36.menu.flash.1048576_262144.build.fs_start=269217792 +mksthr36.menu.flash.1048576_262144.build.fs_end=269479936 +mksthr36.menu.flash.1048576_524288=1MB (Sketch: 512KB, FS: 512KB) +mksthr36.menu.flash.1048576_524288.upload.maximum_size=520192 +mksthr36.menu.flash.1048576_524288.build.flash_total=1048576 +mksthr36.menu.flash.1048576_524288.build.flash_length=520192 +mksthr36.menu.flash.1048576_524288.build.eeprom_start=269479936 +mksthr36.menu.flash.1048576_524288.build.fs_start=268955648 +mksthr36.menu.flash.1048576_524288.build.fs_end=269479936 +mksthr36.menu.freq.200=200 MHz +mksthr36.menu.freq.200.build.f_cpu=200000000L +mksthr36.menu.freq.50=50 MHz +mksthr36.menu.freq.50.build.f_cpu=50000000L +mksthr36.menu.freq.100=100 MHz +mksthr36.menu.freq.100.build.f_cpu=100000000L +mksthr36.menu.freq.120=120 MHz +mksthr36.menu.freq.120.build.f_cpu=120000000L +mksthr36.menu.freq.125=125 MHz +mksthr36.menu.freq.125.build.f_cpu=125000000L +mksthr36.menu.freq.128=128 MHz +mksthr36.menu.freq.128.build.f_cpu=128000000L +mksthr36.menu.freq.133=133 MHz +mksthr36.menu.freq.133.build.f_cpu=133000000L +mksthr36.menu.freq.150=150 MHz +mksthr36.menu.freq.150.build.f_cpu=150000000L +mksthr36.menu.freq.176=176 MHz +mksthr36.menu.freq.176.build.f_cpu=176000000L +mksthr36.menu.freq.225=225 MHz (Overclock) +mksthr36.menu.freq.225.build.f_cpu=225000000L +mksthr36.menu.freq.240=240 MHz (Overclock) +mksthr36.menu.freq.240.build.f_cpu=240000000L +mksthr36.menu.freq.250=250 MHz (Overclock) +mksthr36.menu.freq.250.build.f_cpu=250000000L +mksthr36.menu.freq.276=276 MHz (Overclock) +mksthr36.menu.freq.276.build.f_cpu=276000000L +mksthr36.menu.freq.300=300 MHz (Overclock) +mksthr36.menu.freq.300.build.f_cpu=300000000L +mksthr36.menu.opt.Small=Small (-Os) (standard) +mksthr36.menu.opt.Small.build.flags.optimize=-Os +mksthr36.menu.opt.Optimize=Optimize (-O) +mksthr36.menu.opt.Optimize.build.flags.optimize=-O +mksthr36.menu.opt.Optimize2=Optimize More (-O2) +mksthr36.menu.opt.Optimize2.build.flags.optimize=-O2 +mksthr36.menu.opt.Optimize3=Optimize Even More (-O3) +mksthr36.menu.opt.Optimize3.build.flags.optimize=-O3 +mksthr36.menu.opt.Fast=Fast (-Ofast) (maybe slower) +mksthr36.menu.opt.Fast.build.flags.optimize=-Ofast +mksthr36.menu.opt.Debug=Debug (-Og) +mksthr36.menu.opt.Debug.build.flags.optimize=-Og +mksthr36.menu.opt.Disabled=Disabled (-O0) +mksthr36.menu.opt.Disabled.build.flags.optimize=-O0 +mksthr36.menu.profile.Disabled=Disabled +mksthr36.menu.profile.Disabled.build.flags.profile= +mksthr36.menu.profile.Enabled=Enabled +mksthr36.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +mksthr36.menu.rtti.Disabled=Disabled +mksthr36.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +mksthr36.menu.rtti.Enabled=Enabled +mksthr36.menu.rtti.Enabled.build.flags.rtti= +mksthr36.menu.stackprotect.Disabled=Disabled +mksthr36.menu.stackprotect.Disabled.build.flags.stackprotect= +mksthr36.menu.stackprotect.Enabled=Enabled +mksthr36.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +mksthr36.menu.exceptions.Disabled=Disabled +mksthr36.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +mksthr36.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +mksthr36.menu.exceptions.Enabled=Enabled +mksthr36.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +mksthr36.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +mksthr36.menu.dbgport.Disabled=Disabled +mksthr36.menu.dbgport.Disabled.build.debug_port= +mksthr36.menu.dbgport.Serial=Serial +mksthr36.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +mksthr36.menu.dbgport.Serial1=Serial1 +mksthr36.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +mksthr36.menu.dbgport.Serial2=Serial2 +mksthr36.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +mksthr36.menu.dbgport.SerialSemi=SerialSemi +mksthr36.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +mksthr36.menu.dbglvl.None=None +mksthr36.menu.dbglvl.None.build.debug_level= +mksthr36.menu.dbglvl.Core=Core +mksthr36.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +mksthr36.menu.dbglvl.SPI=SPI +mksthr36.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +mksthr36.menu.dbglvl.Wire=Wire +mksthr36.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +mksthr36.menu.dbglvl.Bluetooth=Bluetooth +mksthr36.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +mksthr36.menu.dbglvl.All=All +mksthr36.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +mksthr36.menu.dbglvl.NDEBUG=NDEBUG +mksthr36.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +mksthr36.menu.usbstack.picosdk=Pico SDK +mksthr36.menu.usbstack.picosdk.build.usbstack_flags= +mksthr36.menu.usbstack.tinyusb=Adafruit TinyUSB +mksthr36.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +mksthr36.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +mksthr36.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +mksthr36.menu.usbstack.nousb=No USB +mksthr36.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +mksthr36.menu.ipbtstack.ipv4only=IPv4 Only +mksthr36.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +mksthr36.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +mksthr36.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +mksthr36.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +mksthr36.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +mksthr36.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +mksthr36.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +mksthr36.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +mksthr36.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +mksthr36.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +mksthr36.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +mksthr36.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +mksthr36.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +mksthr36.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +mksthr36.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +mksthr36.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +mksthr36.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +mksthr36.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +mksthr36.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +mksthr36.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +mksthr36.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +mksthr36.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +mksthr36.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +mksthr36.menu.uploadmethod.default=Default (UF2) +mksthr36.menu.uploadmethod.default.build.ram_length=256k +mksthr36.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +mksthr36.menu.uploadmethod.default.upload.maximum_data_size=262144 +mksthr36.menu.uploadmethod.default.upload.tool=uf2conv +mksthr36.menu.uploadmethod.default.upload.tool.default=uf2conv +mksthr36.menu.uploadmethod.default.upload.tool.network=uf2conv-network +mksthr36.menu.uploadmethod.picotool=Picotool +mksthr36.menu.uploadmethod.picotool.build.ram_length=256k +mksthr36.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +mksthr36.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +mksthr36.menu.uploadmethod.picotool.upload.maximum_data_size=262144 +mksthr36.menu.uploadmethod.picotool.upload.tool=picotool +mksthr36.menu.uploadmethod.picotool.upload.tool.default=picotool +mksthr36.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +mksthr36.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k +mksthr36.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +mksthr36.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 +mksthr36.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +mksthr36.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + +# ----------------------------------- +# Makerbase MKS THR42 +# ----------------------------------- +mksthr42.name=Makerbase MKS THR42 +mksthr42.vid.0=0x2e8a +mksthr42.pid.0=0x000a +mksthr42.vid.1=0x2e8a +mksthr42.pid.1=0x010a +mksthr42.vid.2=0x2e8a +mksthr42.pid.2=0x400a +mksthr42.vid.3=0x2e8a +mksthr42.pid.3=0x410a +mksthr42.vid.4=0x2e8a +mksthr42.pid.4=0x800a +mksthr42.vid.5=0x2e8a +mksthr42.pid.5=0x810a +mksthr42.vid.6=0x2e8a +mksthr42.pid.6=0xc00a +mksthr42.vid.7=0x2e8a +mksthr42.pid.7=0xc10a +mksthr42.upload_port.0.vid=0x2e8a +mksthr42.upload_port.0.pid=0x000a +mksthr42.upload_port.1.vid=0x2e8a +mksthr42.upload_port.1.pid=0x010a +mksthr42.upload_port.2.vid=0x2e8a +mksthr42.upload_port.2.pid=0x400a +mksthr42.upload_port.3.vid=0x2e8a +mksthr42.upload_port.3.pid=0x410a +mksthr42.upload_port.4.vid=0x2e8a +mksthr42.upload_port.4.pid=0x800a +mksthr42.upload_port.5.vid=0x2e8a +mksthr42.upload_port.5.pid=0x810a +mksthr42.upload_port.6.vid=0x2e8a +mksthr42.upload_port.6.pid=0xc00a +mksthr42.upload_port.7.vid=0x2e8a +mksthr42.upload_port.7.pid=0xc10a +mksthr42.build.usbvid=-DUSBD_VID=0x2e8a +mksthr42.build.usbpid=-DUSBD_PID=0x000a +mksthr42.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +mksthr42.build.board=MAKERBASE_MKSTHR42 +mksthr42.build.mcu=cortex-m0plus +mksthr42.build.chip=rp2040 +mksthr42.build.toolchain=arm-none-eabi +mksthr42.build.toolchainpkg=pqt-gcc +mksthr42.build.toolchainopts=-march=armv6-m -mcpu=cortex-m0plus -mthumb +mksthr42.build.uf2family=--family rp2040 +mksthr42.build.variant=mksthr42 +mksthr42.upload.maximum_size=1048576 +mksthr42.upload.wait_for_upload_port=true +mksthr42.upload.erase_cmd= +mksthr42.serial.disableDTR=false +mksthr42.serial.disableRTS=false +mksthr42.build.f_cpu=125000000 +mksthr42.build.led= +mksthr42.build.core=rp2040 +mksthr42.build.ldscript=memmap_default.ld +mksthr42.build.boot2=boot2_w25q080_2_padded_checksum +mksthr42.build.usb_manufacturer="Makerbase" +mksthr42.build.usb_product="MKS THR42" +mksthr42.menu.flash.1048576_0=1MB (no FS) +mksthr42.menu.flash.1048576_0.upload.maximum_size=1044480 +mksthr42.menu.flash.1048576_0.build.flash_total=1048576 +mksthr42.menu.flash.1048576_0.build.flash_length=1044480 +mksthr42.menu.flash.1048576_0.build.eeprom_start=269479936 +mksthr42.menu.flash.1048576_0.build.fs_start=269479936 +mksthr42.menu.flash.1048576_0.build.fs_end=269479936 +mksthr42.menu.flash.1048576_65536=1MB (Sketch: 960KB, FS: 64KB) +mksthr42.menu.flash.1048576_65536.upload.maximum_size=978944 +mksthr42.menu.flash.1048576_65536.build.flash_total=1048576 +mksthr42.menu.flash.1048576_65536.build.flash_length=978944 +mksthr42.menu.flash.1048576_65536.build.eeprom_start=269479936 +mksthr42.menu.flash.1048576_65536.build.fs_start=269414400 +mksthr42.menu.flash.1048576_65536.build.fs_end=269479936 +mksthr42.menu.flash.1048576_131072=1MB (Sketch: 896KB, FS: 128KB) +mksthr42.menu.flash.1048576_131072.upload.maximum_size=913408 +mksthr42.menu.flash.1048576_131072.build.flash_total=1048576 +mksthr42.menu.flash.1048576_131072.build.flash_length=913408 +mksthr42.menu.flash.1048576_131072.build.eeprom_start=269479936 +mksthr42.menu.flash.1048576_131072.build.fs_start=269348864 +mksthr42.menu.flash.1048576_131072.build.fs_end=269479936 +mksthr42.menu.flash.1048576_262144=1MB (Sketch: 768KB, FS: 256KB) +mksthr42.menu.flash.1048576_262144.upload.maximum_size=782336 +mksthr42.menu.flash.1048576_262144.build.flash_total=1048576 +mksthr42.menu.flash.1048576_262144.build.flash_length=782336 +mksthr42.menu.flash.1048576_262144.build.eeprom_start=269479936 +mksthr42.menu.flash.1048576_262144.build.fs_start=269217792 +mksthr42.menu.flash.1048576_262144.build.fs_end=269479936 +mksthr42.menu.flash.1048576_524288=1MB (Sketch: 512KB, FS: 512KB) +mksthr42.menu.flash.1048576_524288.upload.maximum_size=520192 +mksthr42.menu.flash.1048576_524288.build.flash_total=1048576 +mksthr42.menu.flash.1048576_524288.build.flash_length=520192 +mksthr42.menu.flash.1048576_524288.build.eeprom_start=269479936 +mksthr42.menu.flash.1048576_524288.build.fs_start=268955648 +mksthr42.menu.flash.1048576_524288.build.fs_end=269479936 +mksthr42.menu.freq.200=200 MHz +mksthr42.menu.freq.200.build.f_cpu=200000000L +mksthr42.menu.freq.50=50 MHz +mksthr42.menu.freq.50.build.f_cpu=50000000L +mksthr42.menu.freq.100=100 MHz +mksthr42.menu.freq.100.build.f_cpu=100000000L +mksthr42.menu.freq.120=120 MHz +mksthr42.menu.freq.120.build.f_cpu=120000000L +mksthr42.menu.freq.125=125 MHz +mksthr42.menu.freq.125.build.f_cpu=125000000L +mksthr42.menu.freq.128=128 MHz +mksthr42.menu.freq.128.build.f_cpu=128000000L +mksthr42.menu.freq.133=133 MHz +mksthr42.menu.freq.133.build.f_cpu=133000000L +mksthr42.menu.freq.150=150 MHz +mksthr42.menu.freq.150.build.f_cpu=150000000L +mksthr42.menu.freq.176=176 MHz +mksthr42.menu.freq.176.build.f_cpu=176000000L +mksthr42.menu.freq.225=225 MHz (Overclock) +mksthr42.menu.freq.225.build.f_cpu=225000000L +mksthr42.menu.freq.240=240 MHz (Overclock) +mksthr42.menu.freq.240.build.f_cpu=240000000L +mksthr42.menu.freq.250=250 MHz (Overclock) +mksthr42.menu.freq.250.build.f_cpu=250000000L +mksthr42.menu.freq.276=276 MHz (Overclock) +mksthr42.menu.freq.276.build.f_cpu=276000000L +mksthr42.menu.freq.300=300 MHz (Overclock) +mksthr42.menu.freq.300.build.f_cpu=300000000L +mksthr42.menu.opt.Small=Small (-Os) (standard) +mksthr42.menu.opt.Small.build.flags.optimize=-Os +mksthr42.menu.opt.Optimize=Optimize (-O) +mksthr42.menu.opt.Optimize.build.flags.optimize=-O +mksthr42.menu.opt.Optimize2=Optimize More (-O2) +mksthr42.menu.opt.Optimize2.build.flags.optimize=-O2 +mksthr42.menu.opt.Optimize3=Optimize Even More (-O3) +mksthr42.menu.opt.Optimize3.build.flags.optimize=-O3 +mksthr42.menu.opt.Fast=Fast (-Ofast) (maybe slower) +mksthr42.menu.opt.Fast.build.flags.optimize=-Ofast +mksthr42.menu.opt.Debug=Debug (-Og) +mksthr42.menu.opt.Debug.build.flags.optimize=-Og +mksthr42.menu.opt.Disabled=Disabled (-O0) +mksthr42.menu.opt.Disabled.build.flags.optimize=-O0 +mksthr42.menu.profile.Disabled=Disabled +mksthr42.menu.profile.Disabled.build.flags.profile= +mksthr42.menu.profile.Enabled=Enabled +mksthr42.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +mksthr42.menu.rtti.Disabled=Disabled +mksthr42.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +mksthr42.menu.rtti.Enabled=Enabled +mksthr42.menu.rtti.Enabled.build.flags.rtti= +mksthr42.menu.stackprotect.Disabled=Disabled +mksthr42.menu.stackprotect.Disabled.build.flags.stackprotect= +mksthr42.menu.stackprotect.Enabled=Enabled +mksthr42.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +mksthr42.menu.exceptions.Disabled=Disabled +mksthr42.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +mksthr42.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +mksthr42.menu.exceptions.Enabled=Enabled +mksthr42.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +mksthr42.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +mksthr42.menu.dbgport.Disabled=Disabled +mksthr42.menu.dbgport.Disabled.build.debug_port= +mksthr42.menu.dbgport.Serial=Serial +mksthr42.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +mksthr42.menu.dbgport.Serial1=Serial1 +mksthr42.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +mksthr42.menu.dbgport.Serial2=Serial2 +mksthr42.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +mksthr42.menu.dbgport.SerialSemi=SerialSemi +mksthr42.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +mksthr42.menu.dbglvl.None=None +mksthr42.menu.dbglvl.None.build.debug_level= +mksthr42.menu.dbglvl.Core=Core +mksthr42.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +mksthr42.menu.dbglvl.SPI=SPI +mksthr42.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +mksthr42.menu.dbglvl.Wire=Wire +mksthr42.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +mksthr42.menu.dbglvl.Bluetooth=Bluetooth +mksthr42.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +mksthr42.menu.dbglvl.All=All +mksthr42.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +mksthr42.menu.dbglvl.NDEBUG=NDEBUG +mksthr42.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +mksthr42.menu.usbstack.picosdk=Pico SDK +mksthr42.menu.usbstack.picosdk.build.usbstack_flags= +mksthr42.menu.usbstack.tinyusb=Adafruit TinyUSB +mksthr42.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +mksthr42.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +mksthr42.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +mksthr42.menu.usbstack.nousb=No USB +mksthr42.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +mksthr42.menu.ipbtstack.ipv4only=IPv4 Only +mksthr42.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +mksthr42.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +mksthr42.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +mksthr42.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +mksthr42.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +mksthr42.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +mksthr42.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +mksthr42.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +mksthr42.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +mksthr42.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +mksthr42.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +mksthr42.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +mksthr42.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +mksthr42.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +mksthr42.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +mksthr42.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +mksthr42.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +mksthr42.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +mksthr42.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +mksthr42.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +mksthr42.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +mksthr42.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +mksthr42.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +mksthr42.menu.uploadmethod.default=Default (UF2) +mksthr42.menu.uploadmethod.default.build.ram_length=256k +mksthr42.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +mksthr42.menu.uploadmethod.default.upload.maximum_data_size=262144 +mksthr42.menu.uploadmethod.default.upload.tool=uf2conv +mksthr42.menu.uploadmethod.default.upload.tool.default=uf2conv +mksthr42.menu.uploadmethod.default.upload.tool.network=uf2conv-network +mksthr42.menu.uploadmethod.picotool=Picotool +mksthr42.menu.uploadmethod.picotool.build.ram_length=256k +mksthr42.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +mksthr42.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +mksthr42.menu.uploadmethod.picotool.upload.maximum_data_size=262144 +mksthr42.menu.uploadmethod.picotool.upload.tool=picotool +mksthr42.menu.uploadmethod.picotool.upload.tool.default=picotool +mksthr42.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +mksthr42.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k +mksthr42.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +mksthr42.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 +mksthr42.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +mksthr42.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + # ----------------------------------- # Melopero Cookie RP2040 # ----------------------------------- @@ -18637,8 +20118,8 @@ melopero_cookie_rp2040.menu.flash.8388608_7340032.build.flash_length=1044480 melopero_cookie_rp2040.menu.flash.8388608_7340032.build.eeprom_start=276819968 melopero_cookie_rp2040.menu.flash.8388608_7340032.build.fs_start=269479936 melopero_cookie_rp2040.menu.flash.8388608_7340032.build.fs_end=276819968 -melopero_cookie_rp2040.menu.freq.133=133 MHz -melopero_cookie_rp2040.menu.freq.133.build.f_cpu=133000000L +melopero_cookie_rp2040.menu.freq.200=200 MHz +melopero_cookie_rp2040.menu.freq.200.build.f_cpu=200000000L melopero_cookie_rp2040.menu.freq.50=50 MHz melopero_cookie_rp2040.menu.freq.50.build.f_cpu=50000000L melopero_cookie_rp2040.menu.freq.100=100 MHz @@ -18649,20 +20130,20 @@ melopero_cookie_rp2040.menu.freq.125=125 MHz melopero_cookie_rp2040.menu.freq.125.build.f_cpu=125000000L melopero_cookie_rp2040.menu.freq.128=128 MHz melopero_cookie_rp2040.menu.freq.128.build.f_cpu=128000000L -melopero_cookie_rp2040.menu.freq.150=150 MHz (Overclock) +melopero_cookie_rp2040.menu.freq.133=133 MHz +melopero_cookie_rp2040.menu.freq.133.build.f_cpu=133000000L +melopero_cookie_rp2040.menu.freq.150=150 MHz melopero_cookie_rp2040.menu.freq.150.build.f_cpu=150000000L -melopero_cookie_rp2040.menu.freq.175=175 MHz (Overclock) -melopero_cookie_rp2040.menu.freq.175.build.f_cpu=175000000L -melopero_cookie_rp2040.menu.freq.200=200 MHz (Overclock) -melopero_cookie_rp2040.menu.freq.200.build.f_cpu=200000000L +melopero_cookie_rp2040.menu.freq.176=176 MHz +melopero_cookie_rp2040.menu.freq.176.build.f_cpu=176000000L melopero_cookie_rp2040.menu.freq.225=225 MHz (Overclock) melopero_cookie_rp2040.menu.freq.225.build.f_cpu=225000000L melopero_cookie_rp2040.menu.freq.240=240 MHz (Overclock) melopero_cookie_rp2040.menu.freq.240.build.f_cpu=240000000L melopero_cookie_rp2040.menu.freq.250=250 MHz (Overclock) melopero_cookie_rp2040.menu.freq.250.build.f_cpu=250000000L -melopero_cookie_rp2040.menu.freq.275=275 MHz (Overclock) -melopero_cookie_rp2040.menu.freq.275.build.f_cpu=275000000L +melopero_cookie_rp2040.menu.freq.276=276 MHz (Overclock) +melopero_cookie_rp2040.menu.freq.276.build.f_cpu=276000000L melopero_cookie_rp2040.menu.freq.300=300 MHz (Overclock) melopero_cookie_rp2040.menu.freq.300.build.f_cpu=300000000L melopero_cookie_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -18690,7 +20171,7 @@ melopero_cookie_rp2040.menu.rtti.Enabled.build.flags.rtti= melopero_cookie_rp2040.menu.stackprotect.Disabled=Disabled melopero_cookie_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= melopero_cookie_rp2040.menu.stackprotect.Enabled=Enabled -melopero_cookie_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +melopero_cookie_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all melopero_cookie_rp2040.menu.exceptions.Disabled=Disabled melopero_cookie_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions melopero_cookie_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -18973,8 +20454,8 @@ 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.133=133 MHz -melopero_shake_rp2040.menu.freq.133.build.f_cpu=133000000L +melopero_shake_rp2040.menu.freq.200=200 MHz +melopero_shake_rp2040.menu.freq.200.build.f_cpu=200000000L 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 @@ -18985,20 +20466,20 @@ melopero_shake_rp2040.menu.freq.125=125 MHz melopero_shake_rp2040.menu.freq.125.build.f_cpu=125000000L melopero_shake_rp2040.menu.freq.128=128 MHz melopero_shake_rp2040.menu.freq.128.build.f_cpu=128000000L -melopero_shake_rp2040.menu.freq.150=150 MHz (Overclock) +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 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.176=176 MHz +melopero_shake_rp2040.menu.freq.176.build.f_cpu=176000000L melopero_shake_rp2040.menu.freq.225=225 MHz (Overclock) melopero_shake_rp2040.menu.freq.225.build.f_cpu=225000000L melopero_shake_rp2040.menu.freq.240=240 MHz (Overclock) melopero_shake_rp2040.menu.freq.240.build.f_cpu=240000000L 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.276=276 MHz (Overclock) +melopero_shake_rp2040.menu.freq.276.build.f_cpu=276000000L melopero_shake_rp2040.menu.freq.300=300 MHz (Overclock) melopero_shake_rp2040.menu.freq.300.build.f_cpu=300000000L melopero_shake_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -19026,7 +20507,7 @@ melopero_shake_rp2040.menu.rtti.Enabled.build.flags.rtti= melopero_shake_rp2040.menu.stackprotect.Disabled=Disabled melopero_shake_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= melopero_shake_rp2040.menu.stackprotect.Enabled=Enabled -melopero_shake_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +melopero_shake_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all melopero_shake_rp2040.menu.exceptions.Disabled=Disabled melopero_shake_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions melopero_shake_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -19176,6 +20657,34 @@ akana_r1.menu.flash.2097152_0.build.flash_length=2093056 akana_r1.menu.flash.2097152_0.build.eeprom_start=270528512 akana_r1.menu.flash.2097152_0.build.fs_start=270528512 akana_r1.menu.flash.2097152_0.build.fs_end=270528512 +akana_r1.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +akana_r1.menu.flash.2097152_65536.upload.maximum_size=2027520 +akana_r1.menu.flash.2097152_65536.build.flash_total=2097152 +akana_r1.menu.flash.2097152_65536.build.flash_length=2027520 +akana_r1.menu.flash.2097152_65536.build.eeprom_start=270528512 +akana_r1.menu.flash.2097152_65536.build.fs_start=270462976 +akana_r1.menu.flash.2097152_65536.build.fs_end=270528512 +akana_r1.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +akana_r1.menu.flash.2097152_131072.upload.maximum_size=1961984 +akana_r1.menu.flash.2097152_131072.build.flash_total=2097152 +akana_r1.menu.flash.2097152_131072.build.flash_length=1961984 +akana_r1.menu.flash.2097152_131072.build.eeprom_start=270528512 +akana_r1.menu.flash.2097152_131072.build.fs_start=270397440 +akana_r1.menu.flash.2097152_131072.build.fs_end=270528512 +akana_r1.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +akana_r1.menu.flash.2097152_262144.upload.maximum_size=1830912 +akana_r1.menu.flash.2097152_262144.build.flash_total=2097152 +akana_r1.menu.flash.2097152_262144.build.flash_length=1830912 +akana_r1.menu.flash.2097152_262144.build.eeprom_start=270528512 +akana_r1.menu.flash.2097152_262144.build.fs_start=270266368 +akana_r1.menu.flash.2097152_262144.build.fs_end=270528512 +akana_r1.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +akana_r1.menu.flash.2097152_524288.upload.maximum_size=1568768 +akana_r1.menu.flash.2097152_524288.build.flash_total=2097152 +akana_r1.menu.flash.2097152_524288.build.flash_length=1568768 +akana_r1.menu.flash.2097152_524288.build.eeprom_start=270528512 +akana_r1.menu.flash.2097152_524288.build.fs_start=270004224 +akana_r1.menu.flash.2097152_524288.build.fs_end=270528512 akana_r1.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) akana_r1.menu.flash.2097152_1048576.upload.maximum_size=1044480 akana_r1.menu.flash.2097152_1048576.build.flash_total=2097152 @@ -19260,8 +20769,8 @@ akana_r1.menu.flash.16777216_2097152.build.flash_length=14675968 akana_r1.menu.flash.16777216_2097152.build.eeprom_start=285208576 akana_r1.menu.flash.16777216_2097152.build.fs_start=283111424 akana_r1.menu.flash.16777216_2097152.build.fs_end=285208576 -akana_r1.menu.freq.133=133 MHz -akana_r1.menu.freq.133.build.f_cpu=133000000L +akana_r1.menu.freq.200=200 MHz +akana_r1.menu.freq.200.build.f_cpu=200000000L akana_r1.menu.freq.50=50 MHz akana_r1.menu.freq.50.build.f_cpu=50000000L akana_r1.menu.freq.100=100 MHz @@ -19272,20 +20781,20 @@ akana_r1.menu.freq.125=125 MHz akana_r1.menu.freq.125.build.f_cpu=125000000L akana_r1.menu.freq.128=128 MHz akana_r1.menu.freq.128.build.f_cpu=128000000L -akana_r1.menu.freq.150=150 MHz (Overclock) +akana_r1.menu.freq.133=133 MHz +akana_r1.menu.freq.133.build.f_cpu=133000000L +akana_r1.menu.freq.150=150 MHz akana_r1.menu.freq.150.build.f_cpu=150000000L -akana_r1.menu.freq.175=175 MHz (Overclock) -akana_r1.menu.freq.175.build.f_cpu=175000000L -akana_r1.menu.freq.200=200 MHz (Overclock) -akana_r1.menu.freq.200.build.f_cpu=200000000L +akana_r1.menu.freq.176=176 MHz +akana_r1.menu.freq.176.build.f_cpu=176000000L akana_r1.menu.freq.225=225 MHz (Overclock) akana_r1.menu.freq.225.build.f_cpu=225000000L akana_r1.menu.freq.240=240 MHz (Overclock) akana_r1.menu.freq.240.build.f_cpu=240000000L akana_r1.menu.freq.250=250 MHz (Overclock) akana_r1.menu.freq.250.build.f_cpu=250000000L -akana_r1.menu.freq.275=275 MHz (Overclock) -akana_r1.menu.freq.275.build.f_cpu=275000000L +akana_r1.menu.freq.276=276 MHz (Overclock) +akana_r1.menu.freq.276.build.f_cpu=276000000L akana_r1.menu.freq.300=300 MHz (Overclock) akana_r1.menu.freq.300.build.f_cpu=300000000L akana_r1.menu.opt.Small=Small (-Os) (standard) @@ -19313,7 +20822,7 @@ akana_r1.menu.rtti.Enabled.build.flags.rtti= akana_r1.menu.stackprotect.Disabled=Disabled akana_r1.menu.stackprotect.Disabled.build.flags.stackprotect= akana_r1.menu.stackprotect.Enabled=Enabled -akana_r1.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +akana_r1.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all akana_r1.menu.exceptions.Disabled=Disabled akana_r1.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions akana_r1.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -19498,8 +21007,8 @@ MyRP_bot.menu.flash.2097152_1048576.build.flash_length=1044480 MyRP_bot.menu.flash.2097152_1048576.build.eeprom_start=270528512 MyRP_bot.menu.flash.2097152_1048576.build.fs_start=269479936 MyRP_bot.menu.flash.2097152_1048576.build.fs_end=270528512 -MyRP_bot.menu.freq.133=133 MHz -MyRP_bot.menu.freq.133.build.f_cpu=133000000L +MyRP_bot.menu.freq.200=200 MHz +MyRP_bot.menu.freq.200.build.f_cpu=200000000L MyRP_bot.menu.freq.50=50 MHz MyRP_bot.menu.freq.50.build.f_cpu=50000000L MyRP_bot.menu.freq.100=100 MHz @@ -19510,20 +21019,20 @@ MyRP_bot.menu.freq.125=125 MHz MyRP_bot.menu.freq.125.build.f_cpu=125000000L MyRP_bot.menu.freq.128=128 MHz MyRP_bot.menu.freq.128.build.f_cpu=128000000L -MyRP_bot.menu.freq.150=150 MHz (Overclock) +MyRP_bot.menu.freq.133=133 MHz +MyRP_bot.menu.freq.133.build.f_cpu=133000000L +MyRP_bot.menu.freq.150=150 MHz MyRP_bot.menu.freq.150.build.f_cpu=150000000L -MyRP_bot.menu.freq.175=175 MHz (Overclock) -MyRP_bot.menu.freq.175.build.f_cpu=175000000L -MyRP_bot.menu.freq.200=200 MHz (Overclock) -MyRP_bot.menu.freq.200.build.f_cpu=200000000L +MyRP_bot.menu.freq.176=176 MHz +MyRP_bot.menu.freq.176.build.f_cpu=176000000L MyRP_bot.menu.freq.225=225 MHz (Overclock) MyRP_bot.menu.freq.225.build.f_cpu=225000000L MyRP_bot.menu.freq.240=240 MHz (Overclock) MyRP_bot.menu.freq.240.build.f_cpu=240000000L MyRP_bot.menu.freq.250=250 MHz (Overclock) MyRP_bot.menu.freq.250.build.f_cpu=250000000L -MyRP_bot.menu.freq.275=275 MHz (Overclock) -MyRP_bot.menu.freq.275.build.f_cpu=275000000L +MyRP_bot.menu.freq.276=276 MHz (Overclock) +MyRP_bot.menu.freq.276.build.f_cpu=276000000L MyRP_bot.menu.freq.300=300 MHz (Overclock) MyRP_bot.menu.freq.300.build.f_cpu=300000000L MyRP_bot.menu.opt.Small=Small (-Os) (standard) @@ -19551,7 +21060,7 @@ MyRP_bot.menu.rtti.Enabled.build.flags.rtti= MyRP_bot.menu.stackprotect.Disabled=Disabled MyRP_bot.menu.stackprotect.Disabled.build.flags.stackprotect= MyRP_bot.menu.stackprotect.Enabled=Enabled -MyRP_bot.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +MyRP_bot.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all MyRP_bot.menu.exceptions.Disabled=Disabled MyRP_bot.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions MyRP_bot.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -19750,8 +21259,8 @@ nekosystems_bl2040_mini.menu.flash.4194304_3145728.build.flash_length=1044480 nekosystems_bl2040_mini.menu.flash.4194304_3145728.build.eeprom_start=272625664 nekosystems_bl2040_mini.menu.flash.4194304_3145728.build.fs_start=269479936 nekosystems_bl2040_mini.menu.flash.4194304_3145728.build.fs_end=272625664 -nekosystems_bl2040_mini.menu.freq.133=133 MHz -nekosystems_bl2040_mini.menu.freq.133.build.f_cpu=133000000L +nekosystems_bl2040_mini.menu.freq.200=200 MHz +nekosystems_bl2040_mini.menu.freq.200.build.f_cpu=200000000L nekosystems_bl2040_mini.menu.freq.50=50 MHz nekosystems_bl2040_mini.menu.freq.50.build.f_cpu=50000000L nekosystems_bl2040_mini.menu.freq.100=100 MHz @@ -19762,20 +21271,20 @@ nekosystems_bl2040_mini.menu.freq.125=125 MHz nekosystems_bl2040_mini.menu.freq.125.build.f_cpu=125000000L nekosystems_bl2040_mini.menu.freq.128=128 MHz nekosystems_bl2040_mini.menu.freq.128.build.f_cpu=128000000L -nekosystems_bl2040_mini.menu.freq.150=150 MHz (Overclock) +nekosystems_bl2040_mini.menu.freq.133=133 MHz +nekosystems_bl2040_mini.menu.freq.133.build.f_cpu=133000000L +nekosystems_bl2040_mini.menu.freq.150=150 MHz nekosystems_bl2040_mini.menu.freq.150.build.f_cpu=150000000L -nekosystems_bl2040_mini.menu.freq.175=175 MHz (Overclock) -nekosystems_bl2040_mini.menu.freq.175.build.f_cpu=175000000L -nekosystems_bl2040_mini.menu.freq.200=200 MHz (Overclock) -nekosystems_bl2040_mini.menu.freq.200.build.f_cpu=200000000L +nekosystems_bl2040_mini.menu.freq.176=176 MHz +nekosystems_bl2040_mini.menu.freq.176.build.f_cpu=176000000L nekosystems_bl2040_mini.menu.freq.225=225 MHz (Overclock) nekosystems_bl2040_mini.menu.freq.225.build.f_cpu=225000000L nekosystems_bl2040_mini.menu.freq.240=240 MHz (Overclock) nekosystems_bl2040_mini.menu.freq.240.build.f_cpu=240000000L nekosystems_bl2040_mini.menu.freq.250=250 MHz (Overclock) nekosystems_bl2040_mini.menu.freq.250.build.f_cpu=250000000L -nekosystems_bl2040_mini.menu.freq.275=275 MHz (Overclock) -nekosystems_bl2040_mini.menu.freq.275.build.f_cpu=275000000L +nekosystems_bl2040_mini.menu.freq.276=276 MHz (Overclock) +nekosystems_bl2040_mini.menu.freq.276.build.f_cpu=276000000L nekosystems_bl2040_mini.menu.freq.300=300 MHz (Overclock) nekosystems_bl2040_mini.menu.freq.300.build.f_cpu=300000000L nekosystems_bl2040_mini.menu.opt.Small=Small (-Os) (standard) @@ -19803,7 +21312,7 @@ nekosystems_bl2040_mini.menu.rtti.Enabled.build.flags.rtti= nekosystems_bl2040_mini.menu.stackprotect.Disabled=Disabled nekosystems_bl2040_mini.menu.stackprotect.Disabled.build.flags.stackprotect= nekosystems_bl2040_mini.menu.stackprotect.Enabled=Enabled -nekosystems_bl2040_mini.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +nekosystems_bl2040_mini.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all nekosystems_bl2040_mini.menu.exceptions.Disabled=Disabled nekosystems_bl2040_mini.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions nekosystems_bl2040_mini.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -20002,8 +21511,8 @@ newsan_archi.menu.flash.4194304_3145728.build.flash_length=1044480 newsan_archi.menu.flash.4194304_3145728.build.eeprom_start=272625664 newsan_archi.menu.flash.4194304_3145728.build.fs_start=269479936 newsan_archi.menu.flash.4194304_3145728.build.fs_end=272625664 -newsan_archi.menu.freq.133=133 MHz -newsan_archi.menu.freq.133.build.f_cpu=133000000L +newsan_archi.menu.freq.200=200 MHz +newsan_archi.menu.freq.200.build.f_cpu=200000000L newsan_archi.menu.freq.50=50 MHz newsan_archi.menu.freq.50.build.f_cpu=50000000L newsan_archi.menu.freq.100=100 MHz @@ -20014,20 +21523,20 @@ newsan_archi.menu.freq.125=125 MHz newsan_archi.menu.freq.125.build.f_cpu=125000000L newsan_archi.menu.freq.128=128 MHz newsan_archi.menu.freq.128.build.f_cpu=128000000L -newsan_archi.menu.freq.150=150 MHz (Overclock) +newsan_archi.menu.freq.133=133 MHz +newsan_archi.menu.freq.133.build.f_cpu=133000000L +newsan_archi.menu.freq.150=150 MHz newsan_archi.menu.freq.150.build.f_cpu=150000000L -newsan_archi.menu.freq.175=175 MHz (Overclock) -newsan_archi.menu.freq.175.build.f_cpu=175000000L -newsan_archi.menu.freq.200=200 MHz (Overclock) -newsan_archi.menu.freq.200.build.f_cpu=200000000L +newsan_archi.menu.freq.176=176 MHz +newsan_archi.menu.freq.176.build.f_cpu=176000000L newsan_archi.menu.freq.225=225 MHz (Overclock) newsan_archi.menu.freq.225.build.f_cpu=225000000L newsan_archi.menu.freq.240=240 MHz (Overclock) newsan_archi.menu.freq.240.build.f_cpu=240000000L newsan_archi.menu.freq.250=250 MHz (Overclock) newsan_archi.menu.freq.250.build.f_cpu=250000000L -newsan_archi.menu.freq.275=275 MHz (Overclock) -newsan_archi.menu.freq.275.build.f_cpu=275000000L +newsan_archi.menu.freq.276=276 MHz (Overclock) +newsan_archi.menu.freq.276.build.f_cpu=276000000L newsan_archi.menu.freq.300=300 MHz (Overclock) newsan_archi.menu.freq.300.build.f_cpu=300000000L newsan_archi.menu.opt.Small=Small (-Os) (standard) @@ -20055,7 +21564,7 @@ newsan_archi.menu.rtti.Enabled.build.flags.rtti= newsan_archi.menu.stackprotect.Disabled=Disabled newsan_archi.menu.stackprotect.Disabled.build.flags.stackprotect= newsan_archi.menu.stackprotect.Enabled=Enabled -newsan_archi.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +newsan_archi.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all newsan_archi.menu.exceptions.Disabled=Disabled newsan_archi.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions newsan_archi.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -20238,8 +21747,8 @@ nullbits_bit_c_pro.menu.flash.4194304_3145728.build.flash_length=1044480 nullbits_bit_c_pro.menu.flash.4194304_3145728.build.eeprom_start=272625664 nullbits_bit_c_pro.menu.flash.4194304_3145728.build.fs_start=269479936 nullbits_bit_c_pro.menu.flash.4194304_3145728.build.fs_end=272625664 -nullbits_bit_c_pro.menu.freq.133=133 MHz -nullbits_bit_c_pro.menu.freq.133.build.f_cpu=133000000L +nullbits_bit_c_pro.menu.freq.200=200 MHz +nullbits_bit_c_pro.menu.freq.200.build.f_cpu=200000000L nullbits_bit_c_pro.menu.freq.50=50 MHz nullbits_bit_c_pro.menu.freq.50.build.f_cpu=50000000L nullbits_bit_c_pro.menu.freq.100=100 MHz @@ -20250,20 +21759,20 @@ nullbits_bit_c_pro.menu.freq.125=125 MHz nullbits_bit_c_pro.menu.freq.125.build.f_cpu=125000000L nullbits_bit_c_pro.menu.freq.128=128 MHz nullbits_bit_c_pro.menu.freq.128.build.f_cpu=128000000L -nullbits_bit_c_pro.menu.freq.150=150 MHz (Overclock) +nullbits_bit_c_pro.menu.freq.133=133 MHz +nullbits_bit_c_pro.menu.freq.133.build.f_cpu=133000000L +nullbits_bit_c_pro.menu.freq.150=150 MHz nullbits_bit_c_pro.menu.freq.150.build.f_cpu=150000000L -nullbits_bit_c_pro.menu.freq.175=175 MHz (Overclock) -nullbits_bit_c_pro.menu.freq.175.build.f_cpu=175000000L -nullbits_bit_c_pro.menu.freq.200=200 MHz (Overclock) -nullbits_bit_c_pro.menu.freq.200.build.f_cpu=200000000L +nullbits_bit_c_pro.menu.freq.176=176 MHz +nullbits_bit_c_pro.menu.freq.176.build.f_cpu=176000000L nullbits_bit_c_pro.menu.freq.225=225 MHz (Overclock) nullbits_bit_c_pro.menu.freq.225.build.f_cpu=225000000L nullbits_bit_c_pro.menu.freq.240=240 MHz (Overclock) nullbits_bit_c_pro.menu.freq.240.build.f_cpu=240000000L nullbits_bit_c_pro.menu.freq.250=250 MHz (Overclock) nullbits_bit_c_pro.menu.freq.250.build.f_cpu=250000000L -nullbits_bit_c_pro.menu.freq.275=275 MHz (Overclock) -nullbits_bit_c_pro.menu.freq.275.build.f_cpu=275000000L +nullbits_bit_c_pro.menu.freq.276=276 MHz (Overclock) +nullbits_bit_c_pro.menu.freq.276.build.f_cpu=276000000L nullbits_bit_c_pro.menu.freq.300=300 MHz (Overclock) nullbits_bit_c_pro.menu.freq.300.build.f_cpu=300000000L nullbits_bit_c_pro.menu.opt.Small=Small (-Os) (standard) @@ -20291,7 +21800,7 @@ nullbits_bit_c_pro.menu.rtti.Enabled.build.flags.rtti= nullbits_bit_c_pro.menu.stackprotect.Disabled=Disabled nullbits_bit_c_pro.menu.stackprotect.Disabled.build.flags.stackprotect= nullbits_bit_c_pro.menu.stackprotect.Enabled=Enabled -nullbits_bit_c_pro.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +nullbits_bit_c_pro.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all nullbits_bit_c_pro.menu.exceptions.Disabled=Disabled nullbits_bit_c_pro.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions nullbits_bit_c_pro.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -20376,578 +21885,883 @@ nullbits_bit_c_pro.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_c nullbits_bit_c_pro.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap # ----------------------------------- -# Olimex RP2040-Pico30 2MB +# Olimex Pico2XL # ----------------------------------- -olimex_rp2040pico30_2mb.name=Olimex RP2040-Pico30 2MB -olimex_rp2040pico30_2mb.vid.0=0x15ba -olimex_rp2040pico30_2mb.pid.0=0x0026 -olimex_rp2040pico30_2mb.vid.1=0x15ba -olimex_rp2040pico30_2mb.pid.1=0x0126 -olimex_rp2040pico30_2mb.vid.2=0x15ba -olimex_rp2040pico30_2mb.pid.2=0x4026 -olimex_rp2040pico30_2mb.vid.3=0x15ba -olimex_rp2040pico30_2mb.pid.3=0x4126 -olimex_rp2040pico30_2mb.vid.4=0x15ba -olimex_rp2040pico30_2mb.pid.4=0x8026 -olimex_rp2040pico30_2mb.vid.5=0x15ba -olimex_rp2040pico30_2mb.pid.5=0x8126 -olimex_rp2040pico30_2mb.vid.6=0x15ba -olimex_rp2040pico30_2mb.pid.6=0xc026 -olimex_rp2040pico30_2mb.vid.7=0x15ba -olimex_rp2040pico30_2mb.pid.7=0xc126 -olimex_rp2040pico30_2mb.upload_port.0.vid=0x15ba -olimex_rp2040pico30_2mb.upload_port.0.pid=0x0026 -olimex_rp2040pico30_2mb.upload_port.1.vid=0x15ba -olimex_rp2040pico30_2mb.upload_port.1.pid=0x0126 -olimex_rp2040pico30_2mb.upload_port.2.vid=0x15ba -olimex_rp2040pico30_2mb.upload_port.2.pid=0x4026 -olimex_rp2040pico30_2mb.upload_port.3.vid=0x15ba -olimex_rp2040pico30_2mb.upload_port.3.pid=0x4126 -olimex_rp2040pico30_2mb.upload_port.4.vid=0x15ba -olimex_rp2040pico30_2mb.upload_port.4.pid=0x8026 -olimex_rp2040pico30_2mb.upload_port.5.vid=0x15ba -olimex_rp2040pico30_2mb.upload_port.5.pid=0x8126 -olimex_rp2040pico30_2mb.upload_port.6.vid=0x15ba -olimex_rp2040pico30_2mb.upload_port.6.pid=0xc026 -olimex_rp2040pico30_2mb.upload_port.7.vid=0x15ba -olimex_rp2040pico30_2mb.upload_port.7.pid=0xc126 -olimex_rp2040pico30_2mb.build.usbvid=-DUSBD_VID=0x15ba -olimex_rp2040pico30_2mb.build.usbpid=-DUSBD_PID=0x0026 -olimex_rp2040pico30_2mb.build.usbpwr=-DUSBD_MAX_POWER_MA=250 -olimex_rp2040pico30_2mb.build.board=OLIMEX_RP2040_PICO30_2MB -olimex_rp2040pico30_2mb.build.mcu=cortex-m0plus -olimex_rp2040pico30_2mb.build.chip=rp2040 -olimex_rp2040pico30_2mb.build.toolchain=arm-none-eabi -olimex_rp2040pico30_2mb.build.toolchainpkg=pqt-gcc -olimex_rp2040pico30_2mb.build.toolchainopts=-march=armv6-m -mcpu=cortex-m0plus -mthumb -olimex_rp2040pico30_2mb.build.uf2family=--family rp2040 -olimex_rp2040pico30_2mb.build.variant=olimex_rp2040pico30_2mb -olimex_rp2040pico30_2mb.upload.maximum_size=2097152 -olimex_rp2040pico30_2mb.upload.wait_for_upload_port=true -olimex_rp2040pico30_2mb.upload.erase_cmd= -olimex_rp2040pico30_2mb.serial.disableDTR=false -olimex_rp2040pico30_2mb.serial.disableRTS=false -olimex_rp2040pico30_2mb.build.f_cpu=125000000 -olimex_rp2040pico30_2mb.build.led= -olimex_rp2040pico30_2mb.build.core=rp2040 -olimex_rp2040pico30_2mb.build.ldscript=memmap_default.ld -olimex_rp2040pico30_2mb.build.boot2=boot2_w25q080_2_padded_checksum -olimex_rp2040pico30_2mb.build.usb_manufacturer="Olimex" -olimex_rp2040pico30_2mb.build.usb_product="RP2040-Pico30 2MB" -olimex_rp2040pico30_2mb.menu.flash.2097152_0=2MB (no FS) -olimex_rp2040pico30_2mb.menu.flash.2097152_0.upload.maximum_size=2093056 -olimex_rp2040pico30_2mb.menu.flash.2097152_0.build.flash_total=2097152 -olimex_rp2040pico30_2mb.menu.flash.2097152_0.build.flash_length=2093056 -olimex_rp2040pico30_2mb.menu.flash.2097152_0.build.eeprom_start=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_0.build.fs_start=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_0.build.fs_end=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) -olimex_rp2040pico30_2mb.menu.flash.2097152_65536.upload.maximum_size=2027520 -olimex_rp2040pico30_2mb.menu.flash.2097152_65536.build.flash_total=2097152 -olimex_rp2040pico30_2mb.menu.flash.2097152_65536.build.flash_length=2027520 -olimex_rp2040pico30_2mb.menu.flash.2097152_65536.build.eeprom_start=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_65536.build.fs_start=270462976 -olimex_rp2040pico30_2mb.menu.flash.2097152_65536.build.fs_end=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) -olimex_rp2040pico30_2mb.menu.flash.2097152_131072.upload.maximum_size=1961984 -olimex_rp2040pico30_2mb.menu.flash.2097152_131072.build.flash_total=2097152 -olimex_rp2040pico30_2mb.menu.flash.2097152_131072.build.flash_length=1961984 -olimex_rp2040pico30_2mb.menu.flash.2097152_131072.build.eeprom_start=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_131072.build.fs_start=270397440 -olimex_rp2040pico30_2mb.menu.flash.2097152_131072.build.fs_end=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) -olimex_rp2040pico30_2mb.menu.flash.2097152_262144.upload.maximum_size=1830912 -olimex_rp2040pico30_2mb.menu.flash.2097152_262144.build.flash_total=2097152 -olimex_rp2040pico30_2mb.menu.flash.2097152_262144.build.flash_length=1830912 -olimex_rp2040pico30_2mb.menu.flash.2097152_262144.build.eeprom_start=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_262144.build.fs_start=270266368 -olimex_rp2040pico30_2mb.menu.flash.2097152_262144.build.fs_end=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) -olimex_rp2040pico30_2mb.menu.flash.2097152_524288.upload.maximum_size=1568768 -olimex_rp2040pico30_2mb.menu.flash.2097152_524288.build.flash_total=2097152 -olimex_rp2040pico30_2mb.menu.flash.2097152_524288.build.flash_length=1568768 -olimex_rp2040pico30_2mb.menu.flash.2097152_524288.build.eeprom_start=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_524288.build.fs_start=270004224 -olimex_rp2040pico30_2mb.menu.flash.2097152_524288.build.fs_end=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) -olimex_rp2040pico30_2mb.menu.flash.2097152_1048576.upload.maximum_size=1044480 -olimex_rp2040pico30_2mb.menu.flash.2097152_1048576.build.flash_total=2097152 -olimex_rp2040pico30_2mb.menu.flash.2097152_1048576.build.flash_length=1044480 -olimex_rp2040pico30_2mb.menu.flash.2097152_1048576.build.eeprom_start=270528512 -olimex_rp2040pico30_2mb.menu.flash.2097152_1048576.build.fs_start=269479936 -olimex_rp2040pico30_2mb.menu.flash.2097152_1048576.build.fs_end=270528512 -olimex_rp2040pico30_2mb.menu.freq.133=133 MHz -olimex_rp2040pico30_2mb.menu.freq.133.build.f_cpu=133000000L -olimex_rp2040pico30_2mb.menu.freq.50=50 MHz -olimex_rp2040pico30_2mb.menu.freq.50.build.f_cpu=50000000L -olimex_rp2040pico30_2mb.menu.freq.100=100 MHz -olimex_rp2040pico30_2mb.menu.freq.100.build.f_cpu=100000000L -olimex_rp2040pico30_2mb.menu.freq.120=120 MHz -olimex_rp2040pico30_2mb.menu.freq.120.build.f_cpu=120000000L -olimex_rp2040pico30_2mb.menu.freq.125=125 MHz -olimex_rp2040pico30_2mb.menu.freq.125.build.f_cpu=125000000L -olimex_rp2040pico30_2mb.menu.freq.128=128 MHz -olimex_rp2040pico30_2mb.menu.freq.128.build.f_cpu=128000000L -olimex_rp2040pico30_2mb.menu.freq.150=150 MHz (Overclock) -olimex_rp2040pico30_2mb.menu.freq.150.build.f_cpu=150000000L -olimex_rp2040pico30_2mb.menu.freq.175=175 MHz (Overclock) -olimex_rp2040pico30_2mb.menu.freq.175.build.f_cpu=175000000L -olimex_rp2040pico30_2mb.menu.freq.200=200 MHz (Overclock) -olimex_rp2040pico30_2mb.menu.freq.200.build.f_cpu=200000000L -olimex_rp2040pico30_2mb.menu.freq.225=225 MHz (Overclock) -olimex_rp2040pico30_2mb.menu.freq.225.build.f_cpu=225000000L -olimex_rp2040pico30_2mb.menu.freq.240=240 MHz (Overclock) -olimex_rp2040pico30_2mb.menu.freq.240.build.f_cpu=240000000L -olimex_rp2040pico30_2mb.menu.freq.250=250 MHz (Overclock) -olimex_rp2040pico30_2mb.menu.freq.250.build.f_cpu=250000000L -olimex_rp2040pico30_2mb.menu.freq.275=275 MHz (Overclock) -olimex_rp2040pico30_2mb.menu.freq.275.build.f_cpu=275000000L -olimex_rp2040pico30_2mb.menu.freq.300=300 MHz (Overclock) -olimex_rp2040pico30_2mb.menu.freq.300.build.f_cpu=300000000L -olimex_rp2040pico30_2mb.menu.opt.Small=Small (-Os) (standard) -olimex_rp2040pico30_2mb.menu.opt.Small.build.flags.optimize=-Os -olimex_rp2040pico30_2mb.menu.opt.Optimize=Optimize (-O) -olimex_rp2040pico30_2mb.menu.opt.Optimize.build.flags.optimize=-O -olimex_rp2040pico30_2mb.menu.opt.Optimize2=Optimize More (-O2) -olimex_rp2040pico30_2mb.menu.opt.Optimize2.build.flags.optimize=-O2 -olimex_rp2040pico30_2mb.menu.opt.Optimize3=Optimize Even More (-O3) -olimex_rp2040pico30_2mb.menu.opt.Optimize3.build.flags.optimize=-O3 -olimex_rp2040pico30_2mb.menu.opt.Fast=Fast (-Ofast) (maybe slower) -olimex_rp2040pico30_2mb.menu.opt.Fast.build.flags.optimize=-Ofast -olimex_rp2040pico30_2mb.menu.opt.Debug=Debug (-Og) -olimex_rp2040pico30_2mb.menu.opt.Debug.build.flags.optimize=-Og -olimex_rp2040pico30_2mb.menu.opt.Disabled=Disabled (-O0) -olimex_rp2040pico30_2mb.menu.opt.Disabled.build.flags.optimize=-O0 -olimex_rp2040pico30_2mb.menu.profile.Disabled=Disabled -olimex_rp2040pico30_2mb.menu.profile.Disabled.build.flags.profile= -olimex_rp2040pico30_2mb.menu.profile.Enabled=Enabled -olimex_rp2040pico30_2mb.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE -olimex_rp2040pico30_2mb.menu.rtti.Disabled=Disabled -olimex_rp2040pico30_2mb.menu.rtti.Disabled.build.flags.rtti=-fno-rtti -olimex_rp2040pico30_2mb.menu.rtti.Enabled=Enabled -olimex_rp2040pico30_2mb.menu.rtti.Enabled.build.flags.rtti= -olimex_rp2040pico30_2mb.menu.stackprotect.Disabled=Disabled -olimex_rp2040pico30_2mb.menu.stackprotect.Disabled.build.flags.stackprotect= -olimex_rp2040pico30_2mb.menu.stackprotect.Enabled=Enabled -olimex_rp2040pico30_2mb.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector -olimex_rp2040pico30_2mb.menu.exceptions.Disabled=Disabled -olimex_rp2040pico30_2mb.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions -olimex_rp2040pico30_2mb.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ -olimex_rp2040pico30_2mb.menu.exceptions.Enabled=Enabled -olimex_rp2040pico30_2mb.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions -olimex_rp2040pico30_2mb.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc -olimex_rp2040pico30_2mb.menu.dbgport.Disabled=Disabled -olimex_rp2040pico30_2mb.menu.dbgport.Disabled.build.debug_port= -olimex_rp2040pico30_2mb.menu.dbgport.Serial=Serial -olimex_rp2040pico30_2mb.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial -olimex_rp2040pico30_2mb.menu.dbgport.Serial1=Serial1 -olimex_rp2040pico30_2mb.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 -olimex_rp2040pico30_2mb.menu.dbgport.Serial2=Serial2 -olimex_rp2040pico30_2mb.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 -olimex_rp2040pico30_2mb.menu.dbgport.SerialSemi=SerialSemi -olimex_rp2040pico30_2mb.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi -olimex_rp2040pico30_2mb.menu.dbglvl.None=None -olimex_rp2040pico30_2mb.menu.dbglvl.None.build.debug_level= -olimex_rp2040pico30_2mb.menu.dbglvl.Core=Core -olimex_rp2040pico30_2mb.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE -olimex_rp2040pico30_2mb.menu.dbglvl.SPI=SPI -olimex_rp2040pico30_2mb.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI -olimex_rp2040pico30_2mb.menu.dbglvl.Wire=Wire -olimex_rp2040pico30_2mb.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE -olimex_rp2040pico30_2mb.menu.dbglvl.Bluetooth=Bluetooth -olimex_rp2040pico30_2mb.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH -olimex_rp2040pico30_2mb.menu.dbglvl.All=All -olimex_rp2040pico30_2mb.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -olimex_rp2040pico30_2mb.menu.dbglvl.NDEBUG=NDEBUG -olimex_rp2040pico30_2mb.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG -olimex_rp2040pico30_2mb.menu.usbstack.picosdk=Pico SDK -olimex_rp2040pico30_2mb.menu.usbstack.picosdk.build.usbstack_flags= -olimex_rp2040pico30_2mb.menu.usbstack.tinyusb=Adafruit TinyUSB -olimex_rp2040pico30_2mb.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" -olimex_rp2040pico30_2mb.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) -olimex_rp2040pico30_2mb.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" -olimex_rp2040pico30_2mb.menu.usbstack.nousb=No USB -olimex_rp2040pico30_2mb.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4only=IPv4 Only -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a -olimex_rp2040pico30_2mb.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 -olimex_rp2040pico30_2mb.menu.uploadmethod.default=Default (UF2) -olimex_rp2040pico30_2mb.menu.uploadmethod.default.build.ram_length=256k -olimex_rp2040pico30_2mb.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl -olimex_rp2040pico30_2mb.menu.uploadmethod.default.upload.maximum_data_size=262144 -olimex_rp2040pico30_2mb.menu.uploadmethod.default.upload.tool=uf2conv -olimex_rp2040pico30_2mb.menu.uploadmethod.default.upload.tool.default=uf2conv -olimex_rp2040pico30_2mb.menu.uploadmethod.default.upload.tool.network=uf2conv-network -olimex_rp2040pico30_2mb.menu.uploadmethod.picotool=Picotool -olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.build.ram_length=256k -olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl -olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB -olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.upload.maximum_data_size=262144 -olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.upload.tool=picotool -olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.upload.tool.default=picotool -olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) -olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k -olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl -olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 -olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap -olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +olimex_pico2xl.name=Olimex Pico2XL +olimex_pico2xl.vid.0=0x15ba +olimex_pico2xl.pid.0=0x0026 +olimex_pico2xl.vid.1=0x15ba +olimex_pico2xl.pid.1=0x0126 +olimex_pico2xl.vid.2=0x15ba +olimex_pico2xl.pid.2=0x4026 +olimex_pico2xl.vid.3=0x15ba +olimex_pico2xl.pid.3=0x4126 +olimex_pico2xl.vid.4=0x15ba +olimex_pico2xl.pid.4=0x8026 +olimex_pico2xl.vid.5=0x15ba +olimex_pico2xl.pid.5=0x8126 +olimex_pico2xl.vid.6=0x15ba +olimex_pico2xl.pid.6=0xc026 +olimex_pico2xl.vid.7=0x15ba +olimex_pico2xl.pid.7=0xc126 +olimex_pico2xl.upload_port.0.vid=0x15ba +olimex_pico2xl.upload_port.0.pid=0x0026 +olimex_pico2xl.upload_port.1.vid=0x15ba +olimex_pico2xl.upload_port.1.pid=0x0126 +olimex_pico2xl.upload_port.2.vid=0x15ba +olimex_pico2xl.upload_port.2.pid=0x4026 +olimex_pico2xl.upload_port.3.vid=0x15ba +olimex_pico2xl.upload_port.3.pid=0x4126 +olimex_pico2xl.upload_port.4.vid=0x15ba +olimex_pico2xl.upload_port.4.pid=0x8026 +olimex_pico2xl.upload_port.5.vid=0x15ba +olimex_pico2xl.upload_port.5.pid=0x8126 +olimex_pico2xl.upload_port.6.vid=0x15ba +olimex_pico2xl.upload_port.6.pid=0xc026 +olimex_pico2xl.upload_port.7.vid=0x15ba +olimex_pico2xl.upload_port.7.pid=0xc126 +olimex_pico2xl.build.usbvid=-DUSBD_VID=0x15ba +olimex_pico2xl.build.usbpid=-DUSBD_PID=0x0026 +olimex_pico2xl.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +olimex_pico2xl.build.board=OLIMEX_PICO2XL +olimex_pico2xl.build.variant=olimex_pico2xl +olimex_pico2xl.upload.maximum_size=2097152 +olimex_pico2xl.upload.wait_for_upload_port=true +olimex_pico2xl.upload.erase_cmd= +olimex_pico2xl.serial.disableDTR=false +olimex_pico2xl.serial.disableRTS=false +olimex_pico2xl.build.f_cpu=125000000 +olimex_pico2xl.build.led= +olimex_pico2xl.build.core=rp2040 +olimex_pico2xl.build.ldscript=memmap_default.ld +olimex_pico2xl.build.boot2=none +olimex_pico2xl.build.usb_manufacturer="Olimex" +olimex_pico2xl.build.usb_product="Pico2XL" +olimex_pico2xl.build.psram_length=0x000000 +olimex_pico2xl.menu.flash.2097152_0=2MB (no FS) +olimex_pico2xl.menu.flash.2097152_0.upload.maximum_size=2088960 +olimex_pico2xl.menu.flash.2097152_0.build.flash_total=2097152 +olimex_pico2xl.menu.flash.2097152_0.build.flash_length=2088960 +olimex_pico2xl.menu.flash.2097152_0.build.eeprom_start=270524416 +olimex_pico2xl.menu.flash.2097152_0.build.fs_start=270524416 +olimex_pico2xl.menu.flash.2097152_0.build.fs_end=270524416 +olimex_pico2xl.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +olimex_pico2xl.menu.flash.2097152_65536.upload.maximum_size=2023424 +olimex_pico2xl.menu.flash.2097152_65536.build.flash_total=2097152 +olimex_pico2xl.menu.flash.2097152_65536.build.flash_length=2023424 +olimex_pico2xl.menu.flash.2097152_65536.build.eeprom_start=270524416 +olimex_pico2xl.menu.flash.2097152_65536.build.fs_start=270458880 +olimex_pico2xl.menu.flash.2097152_65536.build.fs_end=270524416 +olimex_pico2xl.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +olimex_pico2xl.menu.flash.2097152_131072.upload.maximum_size=1957888 +olimex_pico2xl.menu.flash.2097152_131072.build.flash_total=2097152 +olimex_pico2xl.menu.flash.2097152_131072.build.flash_length=1957888 +olimex_pico2xl.menu.flash.2097152_131072.build.eeprom_start=270524416 +olimex_pico2xl.menu.flash.2097152_131072.build.fs_start=270393344 +olimex_pico2xl.menu.flash.2097152_131072.build.fs_end=270524416 +olimex_pico2xl.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +olimex_pico2xl.menu.flash.2097152_262144.upload.maximum_size=1826816 +olimex_pico2xl.menu.flash.2097152_262144.build.flash_total=2097152 +olimex_pico2xl.menu.flash.2097152_262144.build.flash_length=1826816 +olimex_pico2xl.menu.flash.2097152_262144.build.eeprom_start=270524416 +olimex_pico2xl.menu.flash.2097152_262144.build.fs_start=270262272 +olimex_pico2xl.menu.flash.2097152_262144.build.fs_end=270524416 +olimex_pico2xl.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +olimex_pico2xl.menu.flash.2097152_524288.upload.maximum_size=1564672 +olimex_pico2xl.menu.flash.2097152_524288.build.flash_total=2097152 +olimex_pico2xl.menu.flash.2097152_524288.build.flash_length=1564672 +olimex_pico2xl.menu.flash.2097152_524288.build.eeprom_start=270524416 +olimex_pico2xl.menu.flash.2097152_524288.build.fs_start=270000128 +olimex_pico2xl.menu.flash.2097152_524288.build.fs_end=270524416 +olimex_pico2xl.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) +olimex_pico2xl.menu.flash.2097152_1048576.upload.maximum_size=1040384 +olimex_pico2xl.menu.flash.2097152_1048576.build.flash_total=2097152 +olimex_pico2xl.menu.flash.2097152_1048576.build.flash_length=1040384 +olimex_pico2xl.menu.flash.2097152_1048576.build.eeprom_start=270524416 +olimex_pico2xl.menu.flash.2097152_1048576.build.fs_start=269475840 +olimex_pico2xl.menu.flash.2097152_1048576.build.fs_end=270524416 +olimex_pico2xl.menu.arch.arm=ARM +olimex_pico2xl.menu.arch.arm.build.chip=rp2350 +olimex_pico2xl.menu.arch.arm.build.toolchain=arm-none-eabi +olimex_pico2xl.menu.arch.arm.build.toolchainpkg=pqt-gcc +olimex_pico2xl.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +olimex_pico2xl.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +olimex_pico2xl.menu.arch.arm.build.mcu=cortex-m33 +olimex_pico2xl.menu.arch.riscv=RISC-V +olimex_pico2xl.menu.arch.riscv.build.chip=rp2350-riscv +olimex_pico2xl.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +olimex_pico2xl.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +olimex_pico2xl.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +olimex_pico2xl.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +olimex_pico2xl.menu.arch.riscv.build.mcu=rv32imac +olimex_pico2xl.menu.freq.150=150 MHz +olimex_pico2xl.menu.freq.150.build.f_cpu=150000000L +olimex_pico2xl.menu.freq.50=50 MHz +olimex_pico2xl.menu.freq.50.build.f_cpu=50000000L +olimex_pico2xl.menu.freq.100=100 MHz +olimex_pico2xl.menu.freq.100.build.f_cpu=100000000L +olimex_pico2xl.menu.freq.120=120 MHz +olimex_pico2xl.menu.freq.120.build.f_cpu=120000000L +olimex_pico2xl.menu.freq.125=125 MHz +olimex_pico2xl.menu.freq.125.build.f_cpu=125000000L +olimex_pico2xl.menu.freq.128=128 MHz +olimex_pico2xl.menu.freq.128.build.f_cpu=128000000L +olimex_pico2xl.menu.freq.133=133 MHz +olimex_pico2xl.menu.freq.133.build.f_cpu=133000000L +olimex_pico2xl.menu.freq.176=176 MHz (Overclock) +olimex_pico2xl.menu.freq.176.build.f_cpu=176000000L +olimex_pico2xl.menu.freq.200=200 MHz (Overclock) +olimex_pico2xl.menu.freq.200.build.f_cpu=200000000L +olimex_pico2xl.menu.freq.225=225 MHz (Overclock) +olimex_pico2xl.menu.freq.225.build.f_cpu=225000000L +olimex_pico2xl.menu.freq.240=240 MHz (Overclock) +olimex_pico2xl.menu.freq.240.build.f_cpu=240000000L +olimex_pico2xl.menu.freq.250=250 MHz (Overclock) +olimex_pico2xl.menu.freq.250.build.f_cpu=250000000L +olimex_pico2xl.menu.freq.276=276 MHz (Overclock) +olimex_pico2xl.menu.freq.276.build.f_cpu=276000000L +olimex_pico2xl.menu.freq.300=300 MHz (Overclock) +olimex_pico2xl.menu.freq.300.build.f_cpu=300000000L +olimex_pico2xl.menu.opt.Small=Small (-Os) (standard) +olimex_pico2xl.menu.opt.Small.build.flags.optimize=-Os +olimex_pico2xl.menu.opt.Optimize=Optimize (-O) +olimex_pico2xl.menu.opt.Optimize.build.flags.optimize=-O +olimex_pico2xl.menu.opt.Optimize2=Optimize More (-O2) +olimex_pico2xl.menu.opt.Optimize2.build.flags.optimize=-O2 +olimex_pico2xl.menu.opt.Optimize3=Optimize Even More (-O3) +olimex_pico2xl.menu.opt.Optimize3.build.flags.optimize=-O3 +olimex_pico2xl.menu.opt.Fast=Fast (-Ofast) (maybe slower) +olimex_pico2xl.menu.opt.Fast.build.flags.optimize=-Ofast +olimex_pico2xl.menu.opt.Debug=Debug (-Og) +olimex_pico2xl.menu.opt.Debug.build.flags.optimize=-Og +olimex_pico2xl.menu.opt.Disabled=Disabled (-O0) +olimex_pico2xl.menu.opt.Disabled.build.flags.optimize=-O0 +olimex_pico2xl.menu.profile.Disabled=Disabled +olimex_pico2xl.menu.profile.Disabled.build.flags.profile= +olimex_pico2xl.menu.profile.Enabled=Enabled +olimex_pico2xl.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +olimex_pico2xl.menu.rtti.Disabled=Disabled +olimex_pico2xl.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +olimex_pico2xl.menu.rtti.Enabled=Enabled +olimex_pico2xl.menu.rtti.Enabled.build.flags.rtti= +olimex_pico2xl.menu.stackprotect.Disabled=Disabled +olimex_pico2xl.menu.stackprotect.Disabled.build.flags.stackprotect= +olimex_pico2xl.menu.stackprotect.Enabled=Enabled +olimex_pico2xl.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +olimex_pico2xl.menu.exceptions.Disabled=Disabled +olimex_pico2xl.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +olimex_pico2xl.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +olimex_pico2xl.menu.exceptions.Enabled=Enabled +olimex_pico2xl.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +olimex_pico2xl.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +olimex_pico2xl.menu.dbgport.Disabled=Disabled +olimex_pico2xl.menu.dbgport.Disabled.build.debug_port= +olimex_pico2xl.menu.dbgport.Serial=Serial +olimex_pico2xl.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +olimex_pico2xl.menu.dbgport.Serial1=Serial1 +olimex_pico2xl.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +olimex_pico2xl.menu.dbgport.Serial2=Serial2 +olimex_pico2xl.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +olimex_pico2xl.menu.dbgport.SerialSemi=SerialSemi +olimex_pico2xl.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +olimex_pico2xl.menu.dbglvl.None=None +olimex_pico2xl.menu.dbglvl.None.build.debug_level= +olimex_pico2xl.menu.dbglvl.Core=Core +olimex_pico2xl.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +olimex_pico2xl.menu.dbglvl.SPI=SPI +olimex_pico2xl.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +olimex_pico2xl.menu.dbglvl.Wire=Wire +olimex_pico2xl.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +olimex_pico2xl.menu.dbglvl.Bluetooth=Bluetooth +olimex_pico2xl.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +olimex_pico2xl.menu.dbglvl.All=All +olimex_pico2xl.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +olimex_pico2xl.menu.dbglvl.NDEBUG=NDEBUG +olimex_pico2xl.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +olimex_pico2xl.menu.usbstack.picosdk=Pico SDK +olimex_pico2xl.menu.usbstack.picosdk.build.usbstack_flags= +olimex_pico2xl.menu.usbstack.tinyusb=Adafruit TinyUSB +olimex_pico2xl.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +olimex_pico2xl.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +olimex_pico2xl.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +olimex_pico2xl.menu.usbstack.nousb=No USB +olimex_pico2xl.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +olimex_pico2xl.menu.ipbtstack.ipv4only=IPv4 Only +olimex_pico2xl.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +olimex_pico2xl.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +olimex_pico2xl.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +olimex_pico2xl.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +olimex_pico2xl.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +olimex_pico2xl.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +olimex_pico2xl.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +olimex_pico2xl.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +olimex_pico2xl.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +olimex_pico2xl.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +olimex_pico2xl.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +olimex_pico2xl.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +olimex_pico2xl.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +olimex_pico2xl.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +olimex_pico2xl.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +olimex_pico2xl.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +olimex_pico2xl.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +olimex_pico2xl.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +olimex_pico2xl.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +olimex_pico2xl.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +olimex_pico2xl.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +olimex_pico2xl.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +olimex_pico2xl.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +olimex_pico2xl.menu.uploadmethod.default=Default (UF2) +olimex_pico2xl.menu.uploadmethod.default.build.ram_length=512k +olimex_pico2xl.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +olimex_pico2xl.menu.uploadmethod.default.upload.maximum_data_size=524288 +olimex_pico2xl.menu.uploadmethod.default.upload.tool=uf2conv +olimex_pico2xl.menu.uploadmethod.default.upload.tool.default=uf2conv +olimex_pico2xl.menu.uploadmethod.default.upload.tool.network=uf2conv-network +olimex_pico2xl.menu.uploadmethod.picotool=Picotool +olimex_pico2xl.menu.uploadmethod.picotool.build.ram_length=512k +olimex_pico2xl.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +olimex_pico2xl.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +olimex_pico2xl.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +olimex_pico2xl.menu.uploadmethod.picotool.upload.tool=picotool +olimex_pico2xl.menu.uploadmethod.picotool.upload.tool.default=picotool +olimex_pico2xl.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +olimex_pico2xl.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +olimex_pico2xl.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +olimex_pico2xl.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +olimex_pico2xl.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +olimex_pico2xl.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap # ----------------------------------- -# Olimex RP2040-Pico30 16MB +# Olimex Pico2XXL # ----------------------------------- -olimex_rp2040pico30_16mb.name=Olimex RP2040-Pico30 16MB -olimex_rp2040pico30_16mb.vid.0=0x15ba -olimex_rp2040pico30_16mb.pid.0=0x0026 -olimex_rp2040pico30_16mb.vid.1=0x15ba -olimex_rp2040pico30_16mb.pid.1=0x0126 -olimex_rp2040pico30_16mb.vid.2=0x15ba -olimex_rp2040pico30_16mb.pid.2=0x4026 -olimex_rp2040pico30_16mb.vid.3=0x15ba -olimex_rp2040pico30_16mb.pid.3=0x4126 -olimex_rp2040pico30_16mb.vid.4=0x15ba -olimex_rp2040pico30_16mb.pid.4=0x8026 -olimex_rp2040pico30_16mb.vid.5=0x15ba -olimex_rp2040pico30_16mb.pid.5=0x8126 -olimex_rp2040pico30_16mb.vid.6=0x15ba -olimex_rp2040pico30_16mb.pid.6=0xc026 -olimex_rp2040pico30_16mb.vid.7=0x15ba -olimex_rp2040pico30_16mb.pid.7=0xc126 -olimex_rp2040pico30_16mb.upload_port.0.vid=0x15ba -olimex_rp2040pico30_16mb.upload_port.0.pid=0x0026 -olimex_rp2040pico30_16mb.upload_port.1.vid=0x15ba -olimex_rp2040pico30_16mb.upload_port.1.pid=0x0126 -olimex_rp2040pico30_16mb.upload_port.2.vid=0x15ba -olimex_rp2040pico30_16mb.upload_port.2.pid=0x4026 -olimex_rp2040pico30_16mb.upload_port.3.vid=0x15ba -olimex_rp2040pico30_16mb.upload_port.3.pid=0x4126 -olimex_rp2040pico30_16mb.upload_port.4.vid=0x15ba -olimex_rp2040pico30_16mb.upload_port.4.pid=0x8026 -olimex_rp2040pico30_16mb.upload_port.5.vid=0x15ba -olimex_rp2040pico30_16mb.upload_port.5.pid=0x8126 -olimex_rp2040pico30_16mb.upload_port.6.vid=0x15ba -olimex_rp2040pico30_16mb.upload_port.6.pid=0xc026 -olimex_rp2040pico30_16mb.upload_port.7.vid=0x15ba -olimex_rp2040pico30_16mb.upload_port.7.pid=0xc126 -olimex_rp2040pico30_16mb.build.usbvid=-DUSBD_VID=0x15ba -olimex_rp2040pico30_16mb.build.usbpid=-DUSBD_PID=0x0026 -olimex_rp2040pico30_16mb.build.usbpwr=-DUSBD_MAX_POWER_MA=250 -olimex_rp2040pico30_16mb.build.board=OLIMEX_RP2040_PICO30_16MB -olimex_rp2040pico30_16mb.build.mcu=cortex-m0plus -olimex_rp2040pico30_16mb.build.chip=rp2040 -olimex_rp2040pico30_16mb.build.toolchain=arm-none-eabi -olimex_rp2040pico30_16mb.build.toolchainpkg=pqt-gcc -olimex_rp2040pico30_16mb.build.toolchainopts=-march=armv6-m -mcpu=cortex-m0plus -mthumb -olimex_rp2040pico30_16mb.build.uf2family=--family rp2040 -olimex_rp2040pico30_16mb.build.variant=olimex_rp2040pico30_16mb -olimex_rp2040pico30_16mb.upload.maximum_size=16777216 -olimex_rp2040pico30_16mb.upload.wait_for_upload_port=true -olimex_rp2040pico30_16mb.upload.erase_cmd= -olimex_rp2040pico30_16mb.serial.disableDTR=false -olimex_rp2040pico30_16mb.serial.disableRTS=false -olimex_rp2040pico30_16mb.build.f_cpu=125000000 -olimex_rp2040pico30_16mb.build.led= -olimex_rp2040pico30_16mb.build.core=rp2040 -olimex_rp2040pico30_16mb.build.ldscript=memmap_default.ld -olimex_rp2040pico30_16mb.build.boot2=boot2_w25q080_2_padded_checksum -olimex_rp2040pico30_16mb.build.usb_manufacturer="Olimex" -olimex_rp2040pico30_16mb.build.usb_product="RP2040-Pico30 16MB" -olimex_rp2040pico30_16mb.menu.flash.16777216_0=16MB (no FS) -olimex_rp2040pico30_16mb.menu.flash.16777216_0.upload.maximum_size=16773120 -olimex_rp2040pico30_16mb.menu.flash.16777216_0.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_0.build.flash_length=16773120 -olimex_rp2040pico30_16mb.menu.flash.16777216_0.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_0.build.fs_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_0.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB) -olimex_rp2040pico30_16mb.menu.flash.16777216_65536.upload.maximum_size=16707584 -olimex_rp2040pico30_16mb.menu.flash.16777216_65536.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_65536.build.flash_length=16707584 -olimex_rp2040pico30_16mb.menu.flash.16777216_65536.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_65536.build.fs_start=285143040 -olimex_rp2040pico30_16mb.menu.flash.16777216_65536.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB) -olimex_rp2040pico30_16mb.menu.flash.16777216_131072.upload.maximum_size=16642048 -olimex_rp2040pico30_16mb.menu.flash.16777216_131072.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_131072.build.flash_length=16642048 -olimex_rp2040pico30_16mb.menu.flash.16777216_131072.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_131072.build.fs_start=285077504 -olimex_rp2040pico30_16mb.menu.flash.16777216_131072.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB) -olimex_rp2040pico30_16mb.menu.flash.16777216_262144.upload.maximum_size=16510976 -olimex_rp2040pico30_16mb.menu.flash.16777216_262144.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_262144.build.flash_length=16510976 -olimex_rp2040pico30_16mb.menu.flash.16777216_262144.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_262144.build.fs_start=284946432 -olimex_rp2040pico30_16mb.menu.flash.16777216_262144.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB) -olimex_rp2040pico30_16mb.menu.flash.16777216_524288.upload.maximum_size=16248832 -olimex_rp2040pico30_16mb.menu.flash.16777216_524288.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_524288.build.flash_length=16248832 -olimex_rp2040pico30_16mb.menu.flash.16777216_524288.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_524288.build.fs_start=284684288 -olimex_rp2040pico30_16mb.menu.flash.16777216_524288.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_1048576.upload.maximum_size=15724544 -olimex_rp2040pico30_16mb.menu.flash.16777216_1048576.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_1048576.build.flash_length=15724544 -olimex_rp2040pico30_16mb.menu.flash.16777216_1048576.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_1048576.build.fs_start=284160000 -olimex_rp2040pico30_16mb.menu.flash.16777216_1048576.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_2097152.upload.maximum_size=14675968 -olimex_rp2040pico30_16mb.menu.flash.16777216_2097152.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_2097152.build.flash_length=14675968 -olimex_rp2040pico30_16mb.menu.flash.16777216_2097152.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_2097152.build.fs_start=283111424 -olimex_rp2040pico30_16mb.menu.flash.16777216_2097152.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_3145728.upload.maximum_size=13627392 -olimex_rp2040pico30_16mb.menu.flash.16777216_3145728.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_3145728.build.flash_length=13627392 -olimex_rp2040pico30_16mb.menu.flash.16777216_3145728.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_3145728.build.fs_start=282062848 -olimex_rp2040pico30_16mb.menu.flash.16777216_3145728.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_4194304.upload.maximum_size=12578816 -olimex_rp2040pico30_16mb.menu.flash.16777216_4194304.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_4194304.build.flash_length=12578816 -olimex_rp2040pico30_16mb.menu.flash.16777216_4194304.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_4194304.build.fs_start=281014272 -olimex_rp2040pico30_16mb.menu.flash.16777216_4194304.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_5242880.upload.maximum_size=11530240 -olimex_rp2040pico30_16mb.menu.flash.16777216_5242880.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_5242880.build.flash_length=11530240 -olimex_rp2040pico30_16mb.menu.flash.16777216_5242880.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_5242880.build.fs_start=279965696 -olimex_rp2040pico30_16mb.menu.flash.16777216_5242880.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_6291456.upload.maximum_size=10481664 -olimex_rp2040pico30_16mb.menu.flash.16777216_6291456.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_6291456.build.flash_length=10481664 -olimex_rp2040pico30_16mb.menu.flash.16777216_6291456.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_6291456.build.fs_start=278917120 -olimex_rp2040pico30_16mb.menu.flash.16777216_6291456.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_7340032.upload.maximum_size=9433088 -olimex_rp2040pico30_16mb.menu.flash.16777216_7340032.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_7340032.build.flash_length=9433088 -olimex_rp2040pico30_16mb.menu.flash.16777216_7340032.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_7340032.build.fs_start=277868544 -olimex_rp2040pico30_16mb.menu.flash.16777216_7340032.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_8388608.upload.maximum_size=8384512 -olimex_rp2040pico30_16mb.menu.flash.16777216_8388608.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_8388608.build.flash_length=8384512 -olimex_rp2040pico30_16mb.menu.flash.16777216_8388608.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_8388608.build.fs_start=276819968 -olimex_rp2040pico30_16mb.menu.flash.16777216_8388608.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_9437184.upload.maximum_size=7335936 -olimex_rp2040pico30_16mb.menu.flash.16777216_9437184.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_9437184.build.flash_length=7335936 -olimex_rp2040pico30_16mb.menu.flash.16777216_9437184.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_9437184.build.fs_start=275771392 -olimex_rp2040pico30_16mb.menu.flash.16777216_9437184.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_10485760.upload.maximum_size=6287360 -olimex_rp2040pico30_16mb.menu.flash.16777216_10485760.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_10485760.build.flash_length=6287360 -olimex_rp2040pico30_16mb.menu.flash.16777216_10485760.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_10485760.build.fs_start=274722816 -olimex_rp2040pico30_16mb.menu.flash.16777216_10485760.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_11534336.upload.maximum_size=5238784 -olimex_rp2040pico30_16mb.menu.flash.16777216_11534336.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_11534336.build.flash_length=5238784 -olimex_rp2040pico30_16mb.menu.flash.16777216_11534336.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_11534336.build.fs_start=273674240 -olimex_rp2040pico30_16mb.menu.flash.16777216_11534336.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_12582912.upload.maximum_size=4190208 -olimex_rp2040pico30_16mb.menu.flash.16777216_12582912.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_12582912.build.flash_length=4190208 -olimex_rp2040pico30_16mb.menu.flash.16777216_12582912.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_12582912.build.fs_start=272625664 -olimex_rp2040pico30_16mb.menu.flash.16777216_12582912.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_13631488.upload.maximum_size=3141632 -olimex_rp2040pico30_16mb.menu.flash.16777216_13631488.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_13631488.build.flash_length=3141632 -olimex_rp2040pico30_16mb.menu.flash.16777216_13631488.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_13631488.build.fs_start=271577088 -olimex_rp2040pico30_16mb.menu.flash.16777216_13631488.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_14680064.upload.maximum_size=2093056 -olimex_rp2040pico30_16mb.menu.flash.16777216_14680064.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_14680064.build.flash_length=2093056 -olimex_rp2040pico30_16mb.menu.flash.16777216_14680064.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_14680064.build.fs_start=270528512 -olimex_rp2040pico30_16mb.menu.flash.16777216_14680064.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) -olimex_rp2040pico30_16mb.menu.flash.16777216_15728640.upload.maximum_size=1044480 -olimex_rp2040pico30_16mb.menu.flash.16777216_15728640.build.flash_total=16777216 -olimex_rp2040pico30_16mb.menu.flash.16777216_15728640.build.flash_length=1044480 -olimex_rp2040pico30_16mb.menu.flash.16777216_15728640.build.eeprom_start=285208576 -olimex_rp2040pico30_16mb.menu.flash.16777216_15728640.build.fs_start=269479936 -olimex_rp2040pico30_16mb.menu.flash.16777216_15728640.build.fs_end=285208576 -olimex_rp2040pico30_16mb.menu.freq.133=133 MHz -olimex_rp2040pico30_16mb.menu.freq.133.build.f_cpu=133000000L -olimex_rp2040pico30_16mb.menu.freq.50=50 MHz -olimex_rp2040pico30_16mb.menu.freq.50.build.f_cpu=50000000L -olimex_rp2040pico30_16mb.menu.freq.100=100 MHz -olimex_rp2040pico30_16mb.menu.freq.100.build.f_cpu=100000000L -olimex_rp2040pico30_16mb.menu.freq.120=120 MHz -olimex_rp2040pico30_16mb.menu.freq.120.build.f_cpu=120000000L -olimex_rp2040pico30_16mb.menu.freq.125=125 MHz -olimex_rp2040pico30_16mb.menu.freq.125.build.f_cpu=125000000L -olimex_rp2040pico30_16mb.menu.freq.128=128 MHz -olimex_rp2040pico30_16mb.menu.freq.128.build.f_cpu=128000000L -olimex_rp2040pico30_16mb.menu.freq.150=150 MHz (Overclock) -olimex_rp2040pico30_16mb.menu.freq.150.build.f_cpu=150000000L -olimex_rp2040pico30_16mb.menu.freq.175=175 MHz (Overclock) -olimex_rp2040pico30_16mb.menu.freq.175.build.f_cpu=175000000L -olimex_rp2040pico30_16mb.menu.freq.200=200 MHz (Overclock) -olimex_rp2040pico30_16mb.menu.freq.200.build.f_cpu=200000000L -olimex_rp2040pico30_16mb.menu.freq.225=225 MHz (Overclock) -olimex_rp2040pico30_16mb.menu.freq.225.build.f_cpu=225000000L -olimex_rp2040pico30_16mb.menu.freq.240=240 MHz (Overclock) -olimex_rp2040pico30_16mb.menu.freq.240.build.f_cpu=240000000L -olimex_rp2040pico30_16mb.menu.freq.250=250 MHz (Overclock) -olimex_rp2040pico30_16mb.menu.freq.250.build.f_cpu=250000000L -olimex_rp2040pico30_16mb.menu.freq.275=275 MHz (Overclock) -olimex_rp2040pico30_16mb.menu.freq.275.build.f_cpu=275000000L -olimex_rp2040pico30_16mb.menu.freq.300=300 MHz (Overclock) -olimex_rp2040pico30_16mb.menu.freq.300.build.f_cpu=300000000L -olimex_rp2040pico30_16mb.menu.opt.Small=Small (-Os) (standard) -olimex_rp2040pico30_16mb.menu.opt.Small.build.flags.optimize=-Os -olimex_rp2040pico30_16mb.menu.opt.Optimize=Optimize (-O) -olimex_rp2040pico30_16mb.menu.opt.Optimize.build.flags.optimize=-O -olimex_rp2040pico30_16mb.menu.opt.Optimize2=Optimize More (-O2) -olimex_rp2040pico30_16mb.menu.opt.Optimize2.build.flags.optimize=-O2 -olimex_rp2040pico30_16mb.menu.opt.Optimize3=Optimize Even More (-O3) -olimex_rp2040pico30_16mb.menu.opt.Optimize3.build.flags.optimize=-O3 -olimex_rp2040pico30_16mb.menu.opt.Fast=Fast (-Ofast) (maybe slower) -olimex_rp2040pico30_16mb.menu.opt.Fast.build.flags.optimize=-Ofast -olimex_rp2040pico30_16mb.menu.opt.Debug=Debug (-Og) -olimex_rp2040pico30_16mb.menu.opt.Debug.build.flags.optimize=-Og -olimex_rp2040pico30_16mb.menu.opt.Disabled=Disabled (-O0) -olimex_rp2040pico30_16mb.menu.opt.Disabled.build.flags.optimize=-O0 -olimex_rp2040pico30_16mb.menu.profile.Disabled=Disabled -olimex_rp2040pico30_16mb.menu.profile.Disabled.build.flags.profile= -olimex_rp2040pico30_16mb.menu.profile.Enabled=Enabled -olimex_rp2040pico30_16mb.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE -olimex_rp2040pico30_16mb.menu.rtti.Disabled=Disabled -olimex_rp2040pico30_16mb.menu.rtti.Disabled.build.flags.rtti=-fno-rtti -olimex_rp2040pico30_16mb.menu.rtti.Enabled=Enabled -olimex_rp2040pico30_16mb.menu.rtti.Enabled.build.flags.rtti= -olimex_rp2040pico30_16mb.menu.stackprotect.Disabled=Disabled -olimex_rp2040pico30_16mb.menu.stackprotect.Disabled.build.flags.stackprotect= -olimex_rp2040pico30_16mb.menu.stackprotect.Enabled=Enabled -olimex_rp2040pico30_16mb.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector -olimex_rp2040pico30_16mb.menu.exceptions.Disabled=Disabled -olimex_rp2040pico30_16mb.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions -olimex_rp2040pico30_16mb.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ -olimex_rp2040pico30_16mb.menu.exceptions.Enabled=Enabled -olimex_rp2040pico30_16mb.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions -olimex_rp2040pico30_16mb.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc -olimex_rp2040pico30_16mb.menu.dbgport.Disabled=Disabled -olimex_rp2040pico30_16mb.menu.dbgport.Disabled.build.debug_port= -olimex_rp2040pico30_16mb.menu.dbgport.Serial=Serial -olimex_rp2040pico30_16mb.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial -olimex_rp2040pico30_16mb.menu.dbgport.Serial1=Serial1 -olimex_rp2040pico30_16mb.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 -olimex_rp2040pico30_16mb.menu.dbgport.Serial2=Serial2 -olimex_rp2040pico30_16mb.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 -olimex_rp2040pico30_16mb.menu.dbgport.SerialSemi=SerialSemi -olimex_rp2040pico30_16mb.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi -olimex_rp2040pico30_16mb.menu.dbglvl.None=None -olimex_rp2040pico30_16mb.menu.dbglvl.None.build.debug_level= -olimex_rp2040pico30_16mb.menu.dbglvl.Core=Core -olimex_rp2040pico30_16mb.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE -olimex_rp2040pico30_16mb.menu.dbglvl.SPI=SPI -olimex_rp2040pico30_16mb.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI -olimex_rp2040pico30_16mb.menu.dbglvl.Wire=Wire -olimex_rp2040pico30_16mb.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE -olimex_rp2040pico30_16mb.menu.dbglvl.Bluetooth=Bluetooth -olimex_rp2040pico30_16mb.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH -olimex_rp2040pico30_16mb.menu.dbglvl.All=All -olimex_rp2040pico30_16mb.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -olimex_rp2040pico30_16mb.menu.dbglvl.NDEBUG=NDEBUG -olimex_rp2040pico30_16mb.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG -olimex_rp2040pico30_16mb.menu.usbstack.picosdk=Pico SDK -olimex_rp2040pico30_16mb.menu.usbstack.picosdk.build.usbstack_flags= -olimex_rp2040pico30_16mb.menu.usbstack.tinyusb=Adafruit TinyUSB -olimex_rp2040pico30_16mb.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" -olimex_rp2040pico30_16mb.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) -olimex_rp2040pico30_16mb.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" -olimex_rp2040pico30_16mb.menu.usbstack.nousb=No USB -olimex_rp2040pico30_16mb.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4only=IPv4 Only -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a -olimex_rp2040pico30_16mb.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 -olimex_rp2040pico30_16mb.menu.uploadmethod.default=Default (UF2) -olimex_rp2040pico30_16mb.menu.uploadmethod.default.build.ram_length=256k -olimex_rp2040pico30_16mb.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl -olimex_rp2040pico30_16mb.menu.uploadmethod.default.upload.maximum_data_size=262144 -olimex_rp2040pico30_16mb.menu.uploadmethod.default.upload.tool=uf2conv -olimex_rp2040pico30_16mb.menu.uploadmethod.default.upload.tool.default=uf2conv -olimex_rp2040pico30_16mb.menu.uploadmethod.default.upload.tool.network=uf2conv-network -olimex_rp2040pico30_16mb.menu.uploadmethod.picotool=Picotool -olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.build.ram_length=256k -olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl -olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB -olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.upload.maximum_data_size=262144 -olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.upload.tool=picotool -olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.upload.tool.default=picotool -olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) -olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k -olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl -olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 -olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap -olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +olimex_pico2xxl.name=Olimex Pico2XXL +olimex_pico2xxl.vid.0=0x15ba +olimex_pico2xxl.pid.0=0x0026 +olimex_pico2xxl.vid.1=0x15ba +olimex_pico2xxl.pid.1=0x0126 +olimex_pico2xxl.vid.2=0x15ba +olimex_pico2xxl.pid.2=0x4026 +olimex_pico2xxl.vid.3=0x15ba +olimex_pico2xxl.pid.3=0x4126 +olimex_pico2xxl.vid.4=0x15ba +olimex_pico2xxl.pid.4=0x8026 +olimex_pico2xxl.vid.5=0x15ba +olimex_pico2xxl.pid.5=0x8126 +olimex_pico2xxl.vid.6=0x15ba +olimex_pico2xxl.pid.6=0xc026 +olimex_pico2xxl.vid.7=0x15ba +olimex_pico2xxl.pid.7=0xc126 +olimex_pico2xxl.upload_port.0.vid=0x15ba +olimex_pico2xxl.upload_port.0.pid=0x0026 +olimex_pico2xxl.upload_port.1.vid=0x15ba +olimex_pico2xxl.upload_port.1.pid=0x0126 +olimex_pico2xxl.upload_port.2.vid=0x15ba +olimex_pico2xxl.upload_port.2.pid=0x4026 +olimex_pico2xxl.upload_port.3.vid=0x15ba +olimex_pico2xxl.upload_port.3.pid=0x4126 +olimex_pico2xxl.upload_port.4.vid=0x15ba +olimex_pico2xxl.upload_port.4.pid=0x8026 +olimex_pico2xxl.upload_port.5.vid=0x15ba +olimex_pico2xxl.upload_port.5.pid=0x8126 +olimex_pico2xxl.upload_port.6.vid=0x15ba +olimex_pico2xxl.upload_port.6.pid=0xc026 +olimex_pico2xxl.upload_port.7.vid=0x15ba +olimex_pico2xxl.upload_port.7.pid=0xc126 +olimex_pico2xxl.build.usbvid=-DUSBD_VID=0x15ba +olimex_pico2xxl.build.usbpid=-DUSBD_PID=0x0026 +olimex_pico2xxl.build.usbpwr=-DUSBD_MAX_POWER_MA=500 +olimex_pico2xxl.build.board=OLIMEX_PICO2XXL +olimex_pico2xxl.build.variant=olimex_pico2xxl +olimex_pico2xxl.upload.maximum_size=16777216 +olimex_pico2xxl.upload.wait_for_upload_port=true +olimex_pico2xxl.upload.erase_cmd= +olimex_pico2xxl.serial.disableDTR=false +olimex_pico2xxl.serial.disableRTS=false +olimex_pico2xxl.build.f_cpu=125000000 +olimex_pico2xxl.build.led= +olimex_pico2xxl.build.core=rp2040 +olimex_pico2xxl.build.ldscript=memmap_default.ld +olimex_pico2xxl.build.boot2=none +olimex_pico2xxl.build.usb_manufacturer="Olimex" +olimex_pico2xxl.build.usb_product="Pico2XXL" +olimex_pico2xxl.build.psram_length=0x800000 +olimex_pico2xxl.menu.flash.16777216_0=16MB (no FS) +olimex_pico2xxl.menu.flash.16777216_0.upload.maximum_size=16769024 +olimex_pico2xxl.menu.flash.16777216_0.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_0.build.flash_length=16769024 +olimex_pico2xxl.menu.flash.16777216_0.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_0.build.fs_start=285204480 +olimex_pico2xxl.menu.flash.16777216_0.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB) +olimex_pico2xxl.menu.flash.16777216_65536.upload.maximum_size=16703488 +olimex_pico2xxl.menu.flash.16777216_65536.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_65536.build.flash_length=16703488 +olimex_pico2xxl.menu.flash.16777216_65536.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_65536.build.fs_start=285138944 +olimex_pico2xxl.menu.flash.16777216_65536.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB) +olimex_pico2xxl.menu.flash.16777216_131072.upload.maximum_size=16637952 +olimex_pico2xxl.menu.flash.16777216_131072.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_131072.build.flash_length=16637952 +olimex_pico2xxl.menu.flash.16777216_131072.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_131072.build.fs_start=285073408 +olimex_pico2xxl.menu.flash.16777216_131072.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB) +olimex_pico2xxl.menu.flash.16777216_262144.upload.maximum_size=16506880 +olimex_pico2xxl.menu.flash.16777216_262144.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_262144.build.flash_length=16506880 +olimex_pico2xxl.menu.flash.16777216_262144.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_262144.build.fs_start=284942336 +olimex_pico2xxl.menu.flash.16777216_262144.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB) +olimex_pico2xxl.menu.flash.16777216_524288.upload.maximum_size=16244736 +olimex_pico2xxl.menu.flash.16777216_524288.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_524288.build.flash_length=16244736 +olimex_pico2xxl.menu.flash.16777216_524288.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_524288.build.fs_start=284680192 +olimex_pico2xxl.menu.flash.16777216_524288.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB) +olimex_pico2xxl.menu.flash.16777216_1048576.upload.maximum_size=15720448 +olimex_pico2xxl.menu.flash.16777216_1048576.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_1048576.build.flash_length=15720448 +olimex_pico2xxl.menu.flash.16777216_1048576.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_1048576.build.fs_start=284155904 +olimex_pico2xxl.menu.flash.16777216_1048576.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) +olimex_pico2xxl.menu.flash.16777216_2097152.upload.maximum_size=14671872 +olimex_pico2xxl.menu.flash.16777216_2097152.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_2097152.build.flash_length=14671872 +olimex_pico2xxl.menu.flash.16777216_2097152.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_2097152.build.fs_start=283107328 +olimex_pico2xxl.menu.flash.16777216_2097152.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB) +olimex_pico2xxl.menu.flash.16777216_3145728.upload.maximum_size=13623296 +olimex_pico2xxl.menu.flash.16777216_3145728.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_3145728.build.flash_length=13623296 +olimex_pico2xxl.menu.flash.16777216_3145728.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_3145728.build.fs_start=282058752 +olimex_pico2xxl.menu.flash.16777216_3145728.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) +olimex_pico2xxl.menu.flash.16777216_4194304.upload.maximum_size=12574720 +olimex_pico2xxl.menu.flash.16777216_4194304.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_4194304.build.flash_length=12574720 +olimex_pico2xxl.menu.flash.16777216_4194304.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_4194304.build.fs_start=281010176 +olimex_pico2xxl.menu.flash.16777216_4194304.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB) +olimex_pico2xxl.menu.flash.16777216_5242880.upload.maximum_size=11526144 +olimex_pico2xxl.menu.flash.16777216_5242880.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_5242880.build.flash_length=11526144 +olimex_pico2xxl.menu.flash.16777216_5242880.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_5242880.build.fs_start=279961600 +olimex_pico2xxl.menu.flash.16777216_5242880.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB) +olimex_pico2xxl.menu.flash.16777216_6291456.upload.maximum_size=10477568 +olimex_pico2xxl.menu.flash.16777216_6291456.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_6291456.build.flash_length=10477568 +olimex_pico2xxl.menu.flash.16777216_6291456.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_6291456.build.fs_start=278913024 +olimex_pico2xxl.menu.flash.16777216_6291456.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB) +olimex_pico2xxl.menu.flash.16777216_7340032.upload.maximum_size=9428992 +olimex_pico2xxl.menu.flash.16777216_7340032.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_7340032.build.flash_length=9428992 +olimex_pico2xxl.menu.flash.16777216_7340032.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_7340032.build.fs_start=277864448 +olimex_pico2xxl.menu.flash.16777216_7340032.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) +olimex_pico2xxl.menu.flash.16777216_8388608.upload.maximum_size=8380416 +olimex_pico2xxl.menu.flash.16777216_8388608.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_8388608.build.flash_length=8380416 +olimex_pico2xxl.menu.flash.16777216_8388608.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_8388608.build.fs_start=276815872 +olimex_pico2xxl.menu.flash.16777216_8388608.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB) +olimex_pico2xxl.menu.flash.16777216_9437184.upload.maximum_size=7331840 +olimex_pico2xxl.menu.flash.16777216_9437184.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_9437184.build.flash_length=7331840 +olimex_pico2xxl.menu.flash.16777216_9437184.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_9437184.build.fs_start=275767296 +olimex_pico2xxl.menu.flash.16777216_9437184.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB) +olimex_pico2xxl.menu.flash.16777216_10485760.upload.maximum_size=6283264 +olimex_pico2xxl.menu.flash.16777216_10485760.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_10485760.build.flash_length=6283264 +olimex_pico2xxl.menu.flash.16777216_10485760.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_10485760.build.fs_start=274718720 +olimex_pico2xxl.menu.flash.16777216_10485760.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB) +olimex_pico2xxl.menu.flash.16777216_11534336.upload.maximum_size=5234688 +olimex_pico2xxl.menu.flash.16777216_11534336.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_11534336.build.flash_length=5234688 +olimex_pico2xxl.menu.flash.16777216_11534336.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_11534336.build.fs_start=273670144 +olimex_pico2xxl.menu.flash.16777216_11534336.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) +olimex_pico2xxl.menu.flash.16777216_12582912.upload.maximum_size=4186112 +olimex_pico2xxl.menu.flash.16777216_12582912.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_12582912.build.flash_length=4186112 +olimex_pico2xxl.menu.flash.16777216_12582912.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_12582912.build.fs_start=272621568 +olimex_pico2xxl.menu.flash.16777216_12582912.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB) +olimex_pico2xxl.menu.flash.16777216_13631488.upload.maximum_size=3137536 +olimex_pico2xxl.menu.flash.16777216_13631488.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_13631488.build.flash_length=3137536 +olimex_pico2xxl.menu.flash.16777216_13631488.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_13631488.build.fs_start=271572992 +olimex_pico2xxl.menu.flash.16777216_13631488.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) +olimex_pico2xxl.menu.flash.16777216_14680064.upload.maximum_size=2088960 +olimex_pico2xxl.menu.flash.16777216_14680064.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_14680064.build.flash_length=2088960 +olimex_pico2xxl.menu.flash.16777216_14680064.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_14680064.build.fs_start=270524416 +olimex_pico2xxl.menu.flash.16777216_14680064.build.fs_end=285204480 +olimex_pico2xxl.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) +olimex_pico2xxl.menu.flash.16777216_15728640.upload.maximum_size=1040384 +olimex_pico2xxl.menu.flash.16777216_15728640.build.flash_total=16777216 +olimex_pico2xxl.menu.flash.16777216_15728640.build.flash_length=1040384 +olimex_pico2xxl.menu.flash.16777216_15728640.build.eeprom_start=285204480 +olimex_pico2xxl.menu.flash.16777216_15728640.build.fs_start=269475840 +olimex_pico2xxl.menu.flash.16777216_15728640.build.fs_end=285204480 +olimex_pico2xxl.menu.arch.arm=ARM +olimex_pico2xxl.menu.arch.arm.build.chip=rp2350 +olimex_pico2xxl.menu.arch.arm.build.toolchain=arm-none-eabi +olimex_pico2xxl.menu.arch.arm.build.toolchainpkg=pqt-gcc +olimex_pico2xxl.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +olimex_pico2xxl.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +olimex_pico2xxl.menu.arch.arm.build.mcu=cortex-m33 +olimex_pico2xxl.menu.arch.riscv=RISC-V +olimex_pico2xxl.menu.arch.riscv.build.chip=rp2350-riscv +olimex_pico2xxl.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +olimex_pico2xxl.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +olimex_pico2xxl.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +olimex_pico2xxl.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +olimex_pico2xxl.menu.arch.riscv.build.mcu=rv32imac +olimex_pico2xxl.menu.freq.150=150 MHz +olimex_pico2xxl.menu.freq.150.build.f_cpu=150000000L +olimex_pico2xxl.menu.freq.50=50 MHz +olimex_pico2xxl.menu.freq.50.build.f_cpu=50000000L +olimex_pico2xxl.menu.freq.100=100 MHz +olimex_pico2xxl.menu.freq.100.build.f_cpu=100000000L +olimex_pico2xxl.menu.freq.120=120 MHz +olimex_pico2xxl.menu.freq.120.build.f_cpu=120000000L +olimex_pico2xxl.menu.freq.125=125 MHz +olimex_pico2xxl.menu.freq.125.build.f_cpu=125000000L +olimex_pico2xxl.menu.freq.128=128 MHz +olimex_pico2xxl.menu.freq.128.build.f_cpu=128000000L +olimex_pico2xxl.menu.freq.133=133 MHz +olimex_pico2xxl.menu.freq.133.build.f_cpu=133000000L +olimex_pico2xxl.menu.freq.176=176 MHz (Overclock) +olimex_pico2xxl.menu.freq.176.build.f_cpu=176000000L +olimex_pico2xxl.menu.freq.200=200 MHz (Overclock) +olimex_pico2xxl.menu.freq.200.build.f_cpu=200000000L +olimex_pico2xxl.menu.freq.225=225 MHz (Overclock) +olimex_pico2xxl.menu.freq.225.build.f_cpu=225000000L +olimex_pico2xxl.menu.freq.240=240 MHz (Overclock) +olimex_pico2xxl.menu.freq.240.build.f_cpu=240000000L +olimex_pico2xxl.menu.freq.250=250 MHz (Overclock) +olimex_pico2xxl.menu.freq.250.build.f_cpu=250000000L +olimex_pico2xxl.menu.freq.276=276 MHz (Overclock) +olimex_pico2xxl.menu.freq.276.build.f_cpu=276000000L +olimex_pico2xxl.menu.freq.300=300 MHz (Overclock) +olimex_pico2xxl.menu.freq.300.build.f_cpu=300000000L +olimex_pico2xxl.menu.opt.Small=Small (-Os) (standard) +olimex_pico2xxl.menu.opt.Small.build.flags.optimize=-Os +olimex_pico2xxl.menu.opt.Optimize=Optimize (-O) +olimex_pico2xxl.menu.opt.Optimize.build.flags.optimize=-O +olimex_pico2xxl.menu.opt.Optimize2=Optimize More (-O2) +olimex_pico2xxl.menu.opt.Optimize2.build.flags.optimize=-O2 +olimex_pico2xxl.menu.opt.Optimize3=Optimize Even More (-O3) +olimex_pico2xxl.menu.opt.Optimize3.build.flags.optimize=-O3 +olimex_pico2xxl.menu.opt.Fast=Fast (-Ofast) (maybe slower) +olimex_pico2xxl.menu.opt.Fast.build.flags.optimize=-Ofast +olimex_pico2xxl.menu.opt.Debug=Debug (-Og) +olimex_pico2xxl.menu.opt.Debug.build.flags.optimize=-Og +olimex_pico2xxl.menu.opt.Disabled=Disabled (-O0) +olimex_pico2xxl.menu.opt.Disabled.build.flags.optimize=-O0 +olimex_pico2xxl.menu.profile.Disabled=Disabled +olimex_pico2xxl.menu.profile.Disabled.build.flags.profile= +olimex_pico2xxl.menu.profile.Enabled=Enabled +olimex_pico2xxl.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +olimex_pico2xxl.menu.rtti.Disabled=Disabled +olimex_pico2xxl.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +olimex_pico2xxl.menu.rtti.Enabled=Enabled +olimex_pico2xxl.menu.rtti.Enabled.build.flags.rtti= +olimex_pico2xxl.menu.stackprotect.Disabled=Disabled +olimex_pico2xxl.menu.stackprotect.Disabled.build.flags.stackprotect= +olimex_pico2xxl.menu.stackprotect.Enabled=Enabled +olimex_pico2xxl.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +olimex_pico2xxl.menu.exceptions.Disabled=Disabled +olimex_pico2xxl.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +olimex_pico2xxl.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +olimex_pico2xxl.menu.exceptions.Enabled=Enabled +olimex_pico2xxl.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +olimex_pico2xxl.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +olimex_pico2xxl.menu.dbgport.Disabled=Disabled +olimex_pico2xxl.menu.dbgport.Disabled.build.debug_port= +olimex_pico2xxl.menu.dbgport.Serial=Serial +olimex_pico2xxl.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +olimex_pico2xxl.menu.dbgport.Serial1=Serial1 +olimex_pico2xxl.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +olimex_pico2xxl.menu.dbgport.Serial2=Serial2 +olimex_pico2xxl.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +olimex_pico2xxl.menu.dbgport.SerialSemi=SerialSemi +olimex_pico2xxl.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +olimex_pico2xxl.menu.dbglvl.None=None +olimex_pico2xxl.menu.dbglvl.None.build.debug_level= +olimex_pico2xxl.menu.dbglvl.Core=Core +olimex_pico2xxl.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +olimex_pico2xxl.menu.dbglvl.SPI=SPI +olimex_pico2xxl.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +olimex_pico2xxl.menu.dbglvl.Wire=Wire +olimex_pico2xxl.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +olimex_pico2xxl.menu.dbglvl.Bluetooth=Bluetooth +olimex_pico2xxl.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +olimex_pico2xxl.menu.dbglvl.All=All +olimex_pico2xxl.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +olimex_pico2xxl.menu.dbglvl.NDEBUG=NDEBUG +olimex_pico2xxl.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +olimex_pico2xxl.menu.usbstack.picosdk=Pico SDK +olimex_pico2xxl.menu.usbstack.picosdk.build.usbstack_flags= +olimex_pico2xxl.menu.usbstack.tinyusb=Adafruit TinyUSB +olimex_pico2xxl.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +olimex_pico2xxl.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +olimex_pico2xxl.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +olimex_pico2xxl.menu.usbstack.nousb=No USB +olimex_pico2xxl.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +olimex_pico2xxl.menu.ipbtstack.ipv4only=IPv4 Only +olimex_pico2xxl.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +olimex_pico2xxl.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +olimex_pico2xxl.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +olimex_pico2xxl.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +olimex_pico2xxl.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +olimex_pico2xxl.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +olimex_pico2xxl.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +olimex_pico2xxl.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +olimex_pico2xxl.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +olimex_pico2xxl.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +olimex_pico2xxl.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +olimex_pico2xxl.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +olimex_pico2xxl.menu.uploadmethod.default=Default (UF2) +olimex_pico2xxl.menu.uploadmethod.default.build.ram_length=512k +olimex_pico2xxl.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +olimex_pico2xxl.menu.uploadmethod.default.upload.maximum_data_size=524288 +olimex_pico2xxl.menu.uploadmethod.default.upload.tool=uf2conv +olimex_pico2xxl.menu.uploadmethod.default.upload.tool.default=uf2conv +olimex_pico2xxl.menu.uploadmethod.default.upload.tool.network=uf2conv-network +olimex_pico2xxl.menu.uploadmethod.picotool=Picotool +olimex_pico2xxl.menu.uploadmethod.picotool.build.ram_length=512k +olimex_pico2xxl.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +olimex_pico2xxl.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +olimex_pico2xxl.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +olimex_pico2xxl.menu.uploadmethod.picotool.upload.tool=picotool +olimex_pico2xxl.menu.uploadmethod.picotool.upload.tool.default=picotool +olimex_pico2xxl.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +olimex_pico2xxl.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +olimex_pico2xxl.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +olimex_pico2xxl.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +olimex_pico2xxl.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +olimex_pico2xxl.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + +# ----------------------------------- +# Olimex RP2040-Pico30 +# ----------------------------------- +olimex_rp2040pico30.name=Olimex RP2040-Pico30 +olimex_rp2040pico30.vid.0=0x15ba +olimex_rp2040pico30.pid.0=0x0026 +olimex_rp2040pico30.vid.1=0x15ba +olimex_rp2040pico30.pid.1=0x0126 +olimex_rp2040pico30.vid.2=0x15ba +olimex_rp2040pico30.pid.2=0x4026 +olimex_rp2040pico30.vid.3=0x15ba +olimex_rp2040pico30.pid.3=0x4126 +olimex_rp2040pico30.vid.4=0x15ba +olimex_rp2040pico30.pid.4=0x8026 +olimex_rp2040pico30.vid.5=0x15ba +olimex_rp2040pico30.pid.5=0x8126 +olimex_rp2040pico30.vid.6=0x15ba +olimex_rp2040pico30.pid.6=0xc026 +olimex_rp2040pico30.vid.7=0x15ba +olimex_rp2040pico30.pid.7=0xc126 +olimex_rp2040pico30.upload_port.0.vid=0x15ba +olimex_rp2040pico30.upload_port.0.pid=0x0026 +olimex_rp2040pico30.upload_port.1.vid=0x15ba +olimex_rp2040pico30.upload_port.1.pid=0x0126 +olimex_rp2040pico30.upload_port.2.vid=0x15ba +olimex_rp2040pico30.upload_port.2.pid=0x4026 +olimex_rp2040pico30.upload_port.3.vid=0x15ba +olimex_rp2040pico30.upload_port.3.pid=0x4126 +olimex_rp2040pico30.upload_port.4.vid=0x15ba +olimex_rp2040pico30.upload_port.4.pid=0x8026 +olimex_rp2040pico30.upload_port.5.vid=0x15ba +olimex_rp2040pico30.upload_port.5.pid=0x8126 +olimex_rp2040pico30.upload_port.6.vid=0x15ba +olimex_rp2040pico30.upload_port.6.pid=0xc026 +olimex_rp2040pico30.upload_port.7.vid=0x15ba +olimex_rp2040pico30.upload_port.7.pid=0xc126 +olimex_rp2040pico30.build.usbvid=-DUSBD_VID=0x15ba +olimex_rp2040pico30.build.usbpid=-DUSBD_PID=0x0026 +olimex_rp2040pico30.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +olimex_rp2040pico30.build.board=OLIMEX_RP2040_PICO30 +olimex_rp2040pico30.build.mcu=cortex-m0plus +olimex_rp2040pico30.build.chip=rp2040 +olimex_rp2040pico30.build.toolchain=arm-none-eabi +olimex_rp2040pico30.build.toolchainpkg=pqt-gcc +olimex_rp2040pico30.build.toolchainopts=-march=armv6-m -mcpu=cortex-m0plus -mthumb +olimex_rp2040pico30.build.uf2family=--family rp2040 +olimex_rp2040pico30.build.variant=olimex_rp2040pico30 +olimex_rp2040pico30.upload.maximum_size=2097152 +olimex_rp2040pico30.upload.wait_for_upload_port=true +olimex_rp2040pico30.upload.erase_cmd= +olimex_rp2040pico30.serial.disableDTR=false +olimex_rp2040pico30.serial.disableRTS=false +olimex_rp2040pico30.build.f_cpu=125000000 +olimex_rp2040pico30.build.led= +olimex_rp2040pico30.build.core=rp2040 +olimex_rp2040pico30.build.ldscript=memmap_default.ld +olimex_rp2040pico30.build.boot2=boot2_w25q080_2_padded_checksum +olimex_rp2040pico30.build.usb_manufacturer="Olimex" +olimex_rp2040pico30.build.usb_product="RP2040-Pico30" +olimex_rp2040pico30.menu.flash.2097152_0=2MB (no FS) +olimex_rp2040pico30.menu.flash.2097152_0.upload.maximum_size=2093056 +olimex_rp2040pico30.menu.flash.2097152_0.build.flash_total=2097152 +olimex_rp2040pico30.menu.flash.2097152_0.build.flash_length=2093056 +olimex_rp2040pico30.menu.flash.2097152_0.build.eeprom_start=270528512 +olimex_rp2040pico30.menu.flash.2097152_0.build.fs_start=270528512 +olimex_rp2040pico30.menu.flash.2097152_0.build.fs_end=270528512 +olimex_rp2040pico30.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +olimex_rp2040pico30.menu.flash.2097152_65536.upload.maximum_size=2027520 +olimex_rp2040pico30.menu.flash.2097152_65536.build.flash_total=2097152 +olimex_rp2040pico30.menu.flash.2097152_65536.build.flash_length=2027520 +olimex_rp2040pico30.menu.flash.2097152_65536.build.eeprom_start=270528512 +olimex_rp2040pico30.menu.flash.2097152_65536.build.fs_start=270462976 +olimex_rp2040pico30.menu.flash.2097152_65536.build.fs_end=270528512 +olimex_rp2040pico30.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +olimex_rp2040pico30.menu.flash.2097152_131072.upload.maximum_size=1961984 +olimex_rp2040pico30.menu.flash.2097152_131072.build.flash_total=2097152 +olimex_rp2040pico30.menu.flash.2097152_131072.build.flash_length=1961984 +olimex_rp2040pico30.menu.flash.2097152_131072.build.eeprom_start=270528512 +olimex_rp2040pico30.menu.flash.2097152_131072.build.fs_start=270397440 +olimex_rp2040pico30.menu.flash.2097152_131072.build.fs_end=270528512 +olimex_rp2040pico30.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +olimex_rp2040pico30.menu.flash.2097152_262144.upload.maximum_size=1830912 +olimex_rp2040pico30.menu.flash.2097152_262144.build.flash_total=2097152 +olimex_rp2040pico30.menu.flash.2097152_262144.build.flash_length=1830912 +olimex_rp2040pico30.menu.flash.2097152_262144.build.eeprom_start=270528512 +olimex_rp2040pico30.menu.flash.2097152_262144.build.fs_start=270266368 +olimex_rp2040pico30.menu.flash.2097152_262144.build.fs_end=270528512 +olimex_rp2040pico30.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +olimex_rp2040pico30.menu.flash.2097152_524288.upload.maximum_size=1568768 +olimex_rp2040pico30.menu.flash.2097152_524288.build.flash_total=2097152 +olimex_rp2040pico30.menu.flash.2097152_524288.build.flash_length=1568768 +olimex_rp2040pico30.menu.flash.2097152_524288.build.eeprom_start=270528512 +olimex_rp2040pico30.menu.flash.2097152_524288.build.fs_start=270004224 +olimex_rp2040pico30.menu.flash.2097152_524288.build.fs_end=270528512 +olimex_rp2040pico30.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) +olimex_rp2040pico30.menu.flash.2097152_1048576.upload.maximum_size=1044480 +olimex_rp2040pico30.menu.flash.2097152_1048576.build.flash_total=2097152 +olimex_rp2040pico30.menu.flash.2097152_1048576.build.flash_length=1044480 +olimex_rp2040pico30.menu.flash.2097152_1048576.build.eeprom_start=270528512 +olimex_rp2040pico30.menu.flash.2097152_1048576.build.fs_start=269479936 +olimex_rp2040pico30.menu.flash.2097152_1048576.build.fs_end=270528512 +olimex_rp2040pico30.menu.flash.16777216_0=16MB (no FS) +olimex_rp2040pico30.menu.flash.16777216_0.upload.maximum_size=16773120 +olimex_rp2040pico30.menu.flash.16777216_0.build.flash_total=16777216 +olimex_rp2040pico30.menu.flash.16777216_0.build.flash_length=16773120 +olimex_rp2040pico30.menu.flash.16777216_0.build.eeprom_start=285208576 +olimex_rp2040pico30.menu.flash.16777216_0.build.fs_start=285208576 +olimex_rp2040pico30.menu.flash.16777216_0.build.fs_end=285208576 +olimex_rp2040pico30.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) +olimex_rp2040pico30.menu.flash.16777216_15728640.upload.maximum_size=1044480 +olimex_rp2040pico30.menu.flash.16777216_15728640.build.flash_total=16777216 +olimex_rp2040pico30.menu.flash.16777216_15728640.build.flash_length=1044480 +olimex_rp2040pico30.menu.flash.16777216_15728640.build.eeprom_start=285208576 +olimex_rp2040pico30.menu.flash.16777216_15728640.build.fs_start=269479936 +olimex_rp2040pico30.menu.flash.16777216_15728640.build.fs_end=285208576 +olimex_rp2040pico30.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) +olimex_rp2040pico30.menu.flash.16777216_14680064.upload.maximum_size=2093056 +olimex_rp2040pico30.menu.flash.16777216_14680064.build.flash_total=16777216 +olimex_rp2040pico30.menu.flash.16777216_14680064.build.flash_length=2093056 +olimex_rp2040pico30.menu.flash.16777216_14680064.build.eeprom_start=285208576 +olimex_rp2040pico30.menu.flash.16777216_14680064.build.fs_start=270528512 +olimex_rp2040pico30.menu.flash.16777216_14680064.build.fs_end=285208576 +olimex_rp2040pico30.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) +olimex_rp2040pico30.menu.flash.16777216_12582912.upload.maximum_size=4190208 +olimex_rp2040pico30.menu.flash.16777216_12582912.build.flash_total=16777216 +olimex_rp2040pico30.menu.flash.16777216_12582912.build.flash_length=4190208 +olimex_rp2040pico30.menu.flash.16777216_12582912.build.eeprom_start=285208576 +olimex_rp2040pico30.menu.flash.16777216_12582912.build.fs_start=272625664 +olimex_rp2040pico30.menu.flash.16777216_12582912.build.fs_end=285208576 +olimex_rp2040pico30.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) +olimex_rp2040pico30.menu.flash.16777216_8388608.upload.maximum_size=8384512 +olimex_rp2040pico30.menu.flash.16777216_8388608.build.flash_total=16777216 +olimex_rp2040pico30.menu.flash.16777216_8388608.build.flash_length=8384512 +olimex_rp2040pico30.menu.flash.16777216_8388608.build.eeprom_start=285208576 +olimex_rp2040pico30.menu.flash.16777216_8388608.build.fs_start=276819968 +olimex_rp2040pico30.menu.flash.16777216_8388608.build.fs_end=285208576 +olimex_rp2040pico30.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) +olimex_rp2040pico30.menu.flash.16777216_4194304.upload.maximum_size=12578816 +olimex_rp2040pico30.menu.flash.16777216_4194304.build.flash_total=16777216 +olimex_rp2040pico30.menu.flash.16777216_4194304.build.flash_length=12578816 +olimex_rp2040pico30.menu.flash.16777216_4194304.build.eeprom_start=285208576 +olimex_rp2040pico30.menu.flash.16777216_4194304.build.fs_start=281014272 +olimex_rp2040pico30.menu.flash.16777216_4194304.build.fs_end=285208576 +olimex_rp2040pico30.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) +olimex_rp2040pico30.menu.flash.16777216_2097152.upload.maximum_size=14675968 +olimex_rp2040pico30.menu.flash.16777216_2097152.build.flash_total=16777216 +olimex_rp2040pico30.menu.flash.16777216_2097152.build.flash_length=14675968 +olimex_rp2040pico30.menu.flash.16777216_2097152.build.eeprom_start=285208576 +olimex_rp2040pico30.menu.flash.16777216_2097152.build.fs_start=283111424 +olimex_rp2040pico30.menu.flash.16777216_2097152.build.fs_end=285208576 +olimex_rp2040pico30.menu.freq.200=200 MHz +olimex_rp2040pico30.menu.freq.200.build.f_cpu=200000000L +olimex_rp2040pico30.menu.freq.50=50 MHz +olimex_rp2040pico30.menu.freq.50.build.f_cpu=50000000L +olimex_rp2040pico30.menu.freq.100=100 MHz +olimex_rp2040pico30.menu.freq.100.build.f_cpu=100000000L +olimex_rp2040pico30.menu.freq.120=120 MHz +olimex_rp2040pico30.menu.freq.120.build.f_cpu=120000000L +olimex_rp2040pico30.menu.freq.125=125 MHz +olimex_rp2040pico30.menu.freq.125.build.f_cpu=125000000L +olimex_rp2040pico30.menu.freq.128=128 MHz +olimex_rp2040pico30.menu.freq.128.build.f_cpu=128000000L +olimex_rp2040pico30.menu.freq.133=133 MHz +olimex_rp2040pico30.menu.freq.133.build.f_cpu=133000000L +olimex_rp2040pico30.menu.freq.150=150 MHz +olimex_rp2040pico30.menu.freq.150.build.f_cpu=150000000L +olimex_rp2040pico30.menu.freq.176=176 MHz +olimex_rp2040pico30.menu.freq.176.build.f_cpu=176000000L +olimex_rp2040pico30.menu.freq.225=225 MHz (Overclock) +olimex_rp2040pico30.menu.freq.225.build.f_cpu=225000000L +olimex_rp2040pico30.menu.freq.240=240 MHz (Overclock) +olimex_rp2040pico30.menu.freq.240.build.f_cpu=240000000L +olimex_rp2040pico30.menu.freq.250=250 MHz (Overclock) +olimex_rp2040pico30.menu.freq.250.build.f_cpu=250000000L +olimex_rp2040pico30.menu.freq.276=276 MHz (Overclock) +olimex_rp2040pico30.menu.freq.276.build.f_cpu=276000000L +olimex_rp2040pico30.menu.freq.300=300 MHz (Overclock) +olimex_rp2040pico30.menu.freq.300.build.f_cpu=300000000L +olimex_rp2040pico30.menu.opt.Small=Small (-Os) (standard) +olimex_rp2040pico30.menu.opt.Small.build.flags.optimize=-Os +olimex_rp2040pico30.menu.opt.Optimize=Optimize (-O) +olimex_rp2040pico30.menu.opt.Optimize.build.flags.optimize=-O +olimex_rp2040pico30.menu.opt.Optimize2=Optimize More (-O2) +olimex_rp2040pico30.menu.opt.Optimize2.build.flags.optimize=-O2 +olimex_rp2040pico30.menu.opt.Optimize3=Optimize Even More (-O3) +olimex_rp2040pico30.menu.opt.Optimize3.build.flags.optimize=-O3 +olimex_rp2040pico30.menu.opt.Fast=Fast (-Ofast) (maybe slower) +olimex_rp2040pico30.menu.opt.Fast.build.flags.optimize=-Ofast +olimex_rp2040pico30.menu.opt.Debug=Debug (-Og) +olimex_rp2040pico30.menu.opt.Debug.build.flags.optimize=-Og +olimex_rp2040pico30.menu.opt.Disabled=Disabled (-O0) +olimex_rp2040pico30.menu.opt.Disabled.build.flags.optimize=-O0 +olimex_rp2040pico30.menu.profile.Disabled=Disabled +olimex_rp2040pico30.menu.profile.Disabled.build.flags.profile= +olimex_rp2040pico30.menu.profile.Enabled=Enabled +olimex_rp2040pico30.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +olimex_rp2040pico30.menu.rtti.Disabled=Disabled +olimex_rp2040pico30.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +olimex_rp2040pico30.menu.rtti.Enabled=Enabled +olimex_rp2040pico30.menu.rtti.Enabled.build.flags.rtti= +olimex_rp2040pico30.menu.stackprotect.Disabled=Disabled +olimex_rp2040pico30.menu.stackprotect.Disabled.build.flags.stackprotect= +olimex_rp2040pico30.menu.stackprotect.Enabled=Enabled +olimex_rp2040pico30.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +olimex_rp2040pico30.menu.exceptions.Disabled=Disabled +olimex_rp2040pico30.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +olimex_rp2040pico30.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +olimex_rp2040pico30.menu.exceptions.Enabled=Enabled +olimex_rp2040pico30.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +olimex_rp2040pico30.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +olimex_rp2040pico30.menu.dbgport.Disabled=Disabled +olimex_rp2040pico30.menu.dbgport.Disabled.build.debug_port= +olimex_rp2040pico30.menu.dbgport.Serial=Serial +olimex_rp2040pico30.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +olimex_rp2040pico30.menu.dbgport.Serial1=Serial1 +olimex_rp2040pico30.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +olimex_rp2040pico30.menu.dbgport.Serial2=Serial2 +olimex_rp2040pico30.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +olimex_rp2040pico30.menu.dbgport.SerialSemi=SerialSemi +olimex_rp2040pico30.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +olimex_rp2040pico30.menu.dbglvl.None=None +olimex_rp2040pico30.menu.dbglvl.None.build.debug_level= +olimex_rp2040pico30.menu.dbglvl.Core=Core +olimex_rp2040pico30.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +olimex_rp2040pico30.menu.dbglvl.SPI=SPI +olimex_rp2040pico30.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +olimex_rp2040pico30.menu.dbglvl.Wire=Wire +olimex_rp2040pico30.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +olimex_rp2040pico30.menu.dbglvl.Bluetooth=Bluetooth +olimex_rp2040pico30.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +olimex_rp2040pico30.menu.dbglvl.All=All +olimex_rp2040pico30.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +olimex_rp2040pico30.menu.dbglvl.NDEBUG=NDEBUG +olimex_rp2040pico30.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +olimex_rp2040pico30.menu.usbstack.picosdk=Pico SDK +olimex_rp2040pico30.menu.usbstack.picosdk.build.usbstack_flags= +olimex_rp2040pico30.menu.usbstack.tinyusb=Adafruit TinyUSB +olimex_rp2040pico30.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +olimex_rp2040pico30.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +olimex_rp2040pico30.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +olimex_rp2040pico30.menu.usbstack.nousb=No USB +olimex_rp2040pico30.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +olimex_rp2040pico30.menu.ipbtstack.ipv4only=IPv4 Only +olimex_rp2040pico30.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +olimex_rp2040pico30.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +olimex_rp2040pico30.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +olimex_rp2040pico30.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +olimex_rp2040pico30.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +olimex_rp2040pico30.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +olimex_rp2040pico30.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +olimex_rp2040pico30.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +olimex_rp2040pico30.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +olimex_rp2040pico30.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +olimex_rp2040pico30.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +olimex_rp2040pico30.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +olimex_rp2040pico30.menu.uploadmethod.default=Default (UF2) +olimex_rp2040pico30.menu.uploadmethod.default.build.ram_length=256k +olimex_rp2040pico30.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +olimex_rp2040pico30.menu.uploadmethod.default.upload.maximum_data_size=262144 +olimex_rp2040pico30.menu.uploadmethod.default.upload.tool=uf2conv +olimex_rp2040pico30.menu.uploadmethod.default.upload.tool.default=uf2conv +olimex_rp2040pico30.menu.uploadmethod.default.upload.tool.network=uf2conv-network +olimex_rp2040pico30.menu.uploadmethod.picotool=Picotool +olimex_rp2040pico30.menu.uploadmethod.picotool.build.ram_length=256k +olimex_rp2040pico30.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +olimex_rp2040pico30.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +olimex_rp2040pico30.menu.uploadmethod.picotool.upload.maximum_data_size=262144 +olimex_rp2040pico30.menu.uploadmethod.picotool.upload.tool=picotool +olimex_rp2040pico30.menu.uploadmethod.picotool.upload.tool.default=picotool +olimex_rp2040pico30.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +olimex_rp2040pico30.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k +olimex_rp2040pico30.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +olimex_rp2040pico30.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 +olimex_rp2040pico30.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +olimex_rp2040pico30.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap # ----------------------------------- # Pimoroni PGA2040 @@ -21092,8 +22906,8 @@ pimoroni_pga2040.menu.flash.8388608_7340032.build.flash_length=1044480 pimoroni_pga2040.menu.flash.8388608_7340032.build.eeprom_start=276819968 pimoroni_pga2040.menu.flash.8388608_7340032.build.fs_start=269479936 pimoroni_pga2040.menu.flash.8388608_7340032.build.fs_end=276819968 -pimoroni_pga2040.menu.freq.133=133 MHz -pimoroni_pga2040.menu.freq.133.build.f_cpu=133000000L +pimoroni_pga2040.menu.freq.200=200 MHz +pimoroni_pga2040.menu.freq.200.build.f_cpu=200000000L pimoroni_pga2040.menu.freq.50=50 MHz pimoroni_pga2040.menu.freq.50.build.f_cpu=50000000L pimoroni_pga2040.menu.freq.100=100 MHz @@ -21104,20 +22918,20 @@ pimoroni_pga2040.menu.freq.125=125 MHz pimoroni_pga2040.menu.freq.125.build.f_cpu=125000000L pimoroni_pga2040.menu.freq.128=128 MHz pimoroni_pga2040.menu.freq.128.build.f_cpu=128000000L -pimoroni_pga2040.menu.freq.150=150 MHz (Overclock) +pimoroni_pga2040.menu.freq.133=133 MHz +pimoroni_pga2040.menu.freq.133.build.f_cpu=133000000L +pimoroni_pga2040.menu.freq.150=150 MHz pimoroni_pga2040.menu.freq.150.build.f_cpu=150000000L -pimoroni_pga2040.menu.freq.175=175 MHz (Overclock) -pimoroni_pga2040.menu.freq.175.build.f_cpu=175000000L -pimoroni_pga2040.menu.freq.200=200 MHz (Overclock) -pimoroni_pga2040.menu.freq.200.build.f_cpu=200000000L +pimoroni_pga2040.menu.freq.176=176 MHz +pimoroni_pga2040.menu.freq.176.build.f_cpu=176000000L pimoroni_pga2040.menu.freq.225=225 MHz (Overclock) pimoroni_pga2040.menu.freq.225.build.f_cpu=225000000L pimoroni_pga2040.menu.freq.240=240 MHz (Overclock) pimoroni_pga2040.menu.freq.240.build.f_cpu=240000000L pimoroni_pga2040.menu.freq.250=250 MHz (Overclock) pimoroni_pga2040.menu.freq.250.build.f_cpu=250000000L -pimoroni_pga2040.menu.freq.275=275 MHz (Overclock) -pimoroni_pga2040.menu.freq.275.build.f_cpu=275000000L +pimoroni_pga2040.menu.freq.276=276 MHz (Overclock) +pimoroni_pga2040.menu.freq.276.build.f_cpu=276000000L pimoroni_pga2040.menu.freq.300=300 MHz (Overclock) pimoroni_pga2040.menu.freq.300.build.f_cpu=300000000L pimoroni_pga2040.menu.opt.Small=Small (-Os) (standard) @@ -21145,7 +22959,7 @@ pimoroni_pga2040.menu.rtti.Enabled.build.flags.rtti= pimoroni_pga2040.menu.stackprotect.Disabled=Disabled pimoroni_pga2040.menu.stackprotect.Disabled.build.flags.stackprotect= pimoroni_pga2040.menu.stackprotect.Enabled=Enabled -pimoroni_pga2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_pga2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pimoroni_pga2040.menu.exceptions.Disabled=Disabled pimoroni_pga2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pimoroni_pga2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -21451,8 +23265,8 @@ pimoroni_pga2350.menu.freq.128=128 MHz pimoroni_pga2350.menu.freq.128.build.f_cpu=128000000L pimoroni_pga2350.menu.freq.133=133 MHz pimoroni_pga2350.menu.freq.133.build.f_cpu=133000000L -pimoroni_pga2350.menu.freq.175=175 MHz (Overclock) -pimoroni_pga2350.menu.freq.175.build.f_cpu=175000000L +pimoroni_pga2350.menu.freq.176=176 MHz (Overclock) +pimoroni_pga2350.menu.freq.176.build.f_cpu=176000000L pimoroni_pga2350.menu.freq.200=200 MHz (Overclock) pimoroni_pga2350.menu.freq.200.build.f_cpu=200000000L pimoroni_pga2350.menu.freq.225=225 MHz (Overclock) @@ -21461,8 +23275,8 @@ pimoroni_pga2350.menu.freq.240=240 MHz (Overclock) pimoroni_pga2350.menu.freq.240.build.f_cpu=240000000L pimoroni_pga2350.menu.freq.250=250 MHz (Overclock) pimoroni_pga2350.menu.freq.250.build.f_cpu=250000000L -pimoroni_pga2350.menu.freq.275=275 MHz (Overclock) -pimoroni_pga2350.menu.freq.275.build.f_cpu=275000000L +pimoroni_pga2350.menu.freq.276=276 MHz (Overclock) +pimoroni_pga2350.menu.freq.276.build.f_cpu=276000000L pimoroni_pga2350.menu.freq.300=300 MHz (Overclock) pimoroni_pga2350.menu.freq.300.build.f_cpu=300000000L pimoroni_pga2350.menu.opt.Small=Small (-Os) (standard) @@ -21490,7 +23304,7 @@ pimoroni_pga2350.menu.rtti.Enabled.build.flags.rtti= pimoroni_pga2350.menu.stackprotect.Disabled=Disabled pimoroni_pga2350.menu.stackprotect.Disabled.build.flags.stackprotect= pimoroni_pga2350.menu.stackprotect.Enabled=Enabled -pimoroni_pga2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_pga2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pimoroni_pga2350.menu.exceptions.Disabled=Disabled pimoroni_pga2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pimoroni_pga2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -21796,8 +23610,8 @@ pimoroni_pico_plus_2.menu.freq.128=128 MHz pimoroni_pico_plus_2.menu.freq.128.build.f_cpu=128000000L pimoroni_pico_plus_2.menu.freq.133=133 MHz pimoroni_pico_plus_2.menu.freq.133.build.f_cpu=133000000L -pimoroni_pico_plus_2.menu.freq.175=175 MHz (Overclock) -pimoroni_pico_plus_2.menu.freq.175.build.f_cpu=175000000L +pimoroni_pico_plus_2.menu.freq.176=176 MHz (Overclock) +pimoroni_pico_plus_2.menu.freq.176.build.f_cpu=176000000L pimoroni_pico_plus_2.menu.freq.200=200 MHz (Overclock) pimoroni_pico_plus_2.menu.freq.200.build.f_cpu=200000000L pimoroni_pico_plus_2.menu.freq.225=225 MHz (Overclock) @@ -21806,8 +23620,8 @@ pimoroni_pico_plus_2.menu.freq.240=240 MHz (Overclock) pimoroni_pico_plus_2.menu.freq.240.build.f_cpu=240000000L pimoroni_pico_plus_2.menu.freq.250=250 MHz (Overclock) pimoroni_pico_plus_2.menu.freq.250.build.f_cpu=250000000L -pimoroni_pico_plus_2.menu.freq.275=275 MHz (Overclock) -pimoroni_pico_plus_2.menu.freq.275.build.f_cpu=275000000L +pimoroni_pico_plus_2.menu.freq.276=276 MHz (Overclock) +pimoroni_pico_plus_2.menu.freq.276.build.f_cpu=276000000L pimoroni_pico_plus_2.menu.freq.300=300 MHz (Overclock) pimoroni_pico_plus_2.menu.freq.300.build.f_cpu=300000000L pimoroni_pico_plus_2.menu.opt.Small=Small (-Os) (standard) @@ -21835,7 +23649,7 @@ pimoroni_pico_plus_2.menu.rtti.Enabled.build.flags.rtti= pimoroni_pico_plus_2.menu.stackprotect.Disabled=Disabled pimoroni_pico_plus_2.menu.stackprotect.Disabled.build.flags.stackprotect= pimoroni_pico_plus_2.menu.stackprotect.Enabled=Enabled -pimoroni_pico_plus_2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_pico_plus_2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pimoroni_pico_plus_2.menu.exceptions.Disabled=Disabled pimoroni_pico_plus_2.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pimoroni_pico_plus_2.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -22142,8 +23956,8 @@ pimoroni_pico_plus_2w.menu.freq.128=128 MHz pimoroni_pico_plus_2w.menu.freq.128.build.f_cpu=128000000L pimoroni_pico_plus_2w.menu.freq.133=133 MHz pimoroni_pico_plus_2w.menu.freq.133.build.f_cpu=133000000L -pimoroni_pico_plus_2w.menu.freq.175=175 MHz (Overclock) -pimoroni_pico_plus_2w.menu.freq.175.build.f_cpu=175000000L +pimoroni_pico_plus_2w.menu.freq.176=176 MHz (Overclock) +pimoroni_pico_plus_2w.menu.freq.176.build.f_cpu=176000000L pimoroni_pico_plus_2w.menu.freq.200=200 MHz (Overclock) pimoroni_pico_plus_2w.menu.freq.200.build.f_cpu=200000000L pimoroni_pico_plus_2w.menu.freq.225=225 MHz (Overclock) @@ -22152,8 +23966,8 @@ pimoroni_pico_plus_2w.menu.freq.240=240 MHz (Overclock) pimoroni_pico_plus_2w.menu.freq.240.build.f_cpu=240000000L pimoroni_pico_plus_2w.menu.freq.250=250 MHz (Overclock) pimoroni_pico_plus_2w.menu.freq.250.build.f_cpu=250000000L -pimoroni_pico_plus_2w.menu.freq.275=275 MHz (Overclock) -pimoroni_pico_plus_2w.menu.freq.275.build.f_cpu=275000000L +pimoroni_pico_plus_2w.menu.freq.276=276 MHz (Overclock) +pimoroni_pico_plus_2w.menu.freq.276.build.f_cpu=276000000L pimoroni_pico_plus_2w.menu.freq.300=300 MHz (Overclock) pimoroni_pico_plus_2w.menu.freq.300.build.f_cpu=300000000L pimoroni_pico_plus_2w.menu.opt.Small=Small (-Os) (standard) @@ -22181,7 +23995,7 @@ pimoroni_pico_plus_2w.menu.rtti.Enabled.build.flags.rtti= pimoroni_pico_plus_2w.menu.stackprotect.Disabled=Disabled pimoroni_pico_plus_2w.menu.stackprotect.Disabled.build.flags.stackprotect= pimoroni_pico_plus_2w.menu.stackprotect.Enabled=Enabled -pimoroni_pico_plus_2w.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_pico_plus_2w.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pimoroni_pico_plus_2w.menu.exceptions.Disabled=Disabled pimoroni_pico_plus_2w.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pimoroni_pico_plus_2w.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -22470,8 +24284,8 @@ pimoroni_plasma2040.menu.flash.2097152_1048576.build.flash_length=1044480 pimoroni_plasma2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 pimoroni_plasma2040.menu.flash.2097152_1048576.build.fs_start=269479936 pimoroni_plasma2040.menu.flash.2097152_1048576.build.fs_end=270528512 -pimoroni_plasma2040.menu.freq.133=133 MHz -pimoroni_plasma2040.menu.freq.133.build.f_cpu=133000000L +pimoroni_plasma2040.menu.freq.200=200 MHz +pimoroni_plasma2040.menu.freq.200.build.f_cpu=200000000L pimoroni_plasma2040.menu.freq.50=50 MHz pimoroni_plasma2040.menu.freq.50.build.f_cpu=50000000L pimoroni_plasma2040.menu.freq.100=100 MHz @@ -22482,20 +24296,20 @@ pimoroni_plasma2040.menu.freq.125=125 MHz pimoroni_plasma2040.menu.freq.125.build.f_cpu=125000000L pimoroni_plasma2040.menu.freq.128=128 MHz pimoroni_plasma2040.menu.freq.128.build.f_cpu=128000000L -pimoroni_plasma2040.menu.freq.150=150 MHz (Overclock) +pimoroni_plasma2040.menu.freq.133=133 MHz +pimoroni_plasma2040.menu.freq.133.build.f_cpu=133000000L +pimoroni_plasma2040.menu.freq.150=150 MHz pimoroni_plasma2040.menu.freq.150.build.f_cpu=150000000L -pimoroni_plasma2040.menu.freq.175=175 MHz (Overclock) -pimoroni_plasma2040.menu.freq.175.build.f_cpu=175000000L -pimoroni_plasma2040.menu.freq.200=200 MHz (Overclock) -pimoroni_plasma2040.menu.freq.200.build.f_cpu=200000000L +pimoroni_plasma2040.menu.freq.176=176 MHz +pimoroni_plasma2040.menu.freq.176.build.f_cpu=176000000L pimoroni_plasma2040.menu.freq.225=225 MHz (Overclock) pimoroni_plasma2040.menu.freq.225.build.f_cpu=225000000L pimoroni_plasma2040.menu.freq.240=240 MHz (Overclock) pimoroni_plasma2040.menu.freq.240.build.f_cpu=240000000L pimoroni_plasma2040.menu.freq.250=250 MHz (Overclock) pimoroni_plasma2040.menu.freq.250.build.f_cpu=250000000L -pimoroni_plasma2040.menu.freq.275=275 MHz (Overclock) -pimoroni_plasma2040.menu.freq.275.build.f_cpu=275000000L +pimoroni_plasma2040.menu.freq.276=276 MHz (Overclock) +pimoroni_plasma2040.menu.freq.276.build.f_cpu=276000000L pimoroni_plasma2040.menu.freq.300=300 MHz (Overclock) pimoroni_plasma2040.menu.freq.300.build.f_cpu=300000000L pimoroni_plasma2040.menu.opt.Small=Small (-Os) (standard) @@ -22523,7 +24337,7 @@ pimoroni_plasma2040.menu.rtti.Enabled.build.flags.rtti= pimoroni_plasma2040.menu.stackprotect.Disabled=Disabled pimoroni_plasma2040.menu.stackprotect.Disabled.build.flags.stackprotect= pimoroni_plasma2040.menu.stackprotect.Enabled=Enabled -pimoroni_plasma2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_plasma2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pimoroni_plasma2040.menu.exceptions.Disabled=Disabled pimoroni_plasma2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pimoroni_plasma2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -22646,7 +24460,7 @@ pimoroni_plasma2350.upload_port.7.pid=0xd1a5 pimoroni_plasma2350.build.usbvid=-DUSBD_VID=0x2e8a pimoroni_plasma2350.build.usbpid=-DUSBD_PID=0x10a5 pimoroni_plasma2350.build.usbpwr=-DUSBD_MAX_POWER_MA=500 -pimoroni_plasma2350.build.board=PIMORONI_PLASMA2040 +pimoroni_plasma2350.build.board=PIMORONI_PLASMA2350 pimoroni_plasma2350.build.variant=pimoroni_plasma2350 pimoroni_plasma2350.upload.maximum_size=2097152 pimoroni_plasma2350.upload.wait_for_upload_port=true @@ -22731,8 +24545,8 @@ pimoroni_plasma2350.menu.freq.128=128 MHz pimoroni_plasma2350.menu.freq.128.build.f_cpu=128000000L pimoroni_plasma2350.menu.freq.133=133 MHz pimoroni_plasma2350.menu.freq.133.build.f_cpu=133000000L -pimoroni_plasma2350.menu.freq.175=175 MHz (Overclock) -pimoroni_plasma2350.menu.freq.175.build.f_cpu=175000000L +pimoroni_plasma2350.menu.freq.176=176 MHz (Overclock) +pimoroni_plasma2350.menu.freq.176.build.f_cpu=176000000L pimoroni_plasma2350.menu.freq.200=200 MHz (Overclock) pimoroni_plasma2350.menu.freq.200.build.f_cpu=200000000L pimoroni_plasma2350.menu.freq.225=225 MHz (Overclock) @@ -22741,8 +24555,8 @@ pimoroni_plasma2350.menu.freq.240=240 MHz (Overclock) pimoroni_plasma2350.menu.freq.240.build.f_cpu=240000000L pimoroni_plasma2350.menu.freq.250=250 MHz (Overclock) pimoroni_plasma2350.menu.freq.250.build.f_cpu=250000000L -pimoroni_plasma2350.menu.freq.275=275 MHz (Overclock) -pimoroni_plasma2350.menu.freq.275.build.f_cpu=275000000L +pimoroni_plasma2350.menu.freq.276=276 MHz (Overclock) +pimoroni_plasma2350.menu.freq.276.build.f_cpu=276000000L pimoroni_plasma2350.menu.freq.300=300 MHz (Overclock) pimoroni_plasma2350.menu.freq.300.build.f_cpu=300000000L pimoroni_plasma2350.menu.opt.Small=Small (-Os) (standard) @@ -22770,7 +24584,7 @@ pimoroni_plasma2350.menu.rtti.Enabled.build.flags.rtti= pimoroni_plasma2350.menu.stackprotect.Disabled=Disabled pimoroni_plasma2350.menu.stackprotect.Disabled.build.flags.stackprotect= pimoroni_plasma2350.menu.stackprotect.Enabled=Enabled -pimoroni_plasma2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_plasma2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pimoroni_plasma2350.menu.exceptions.Disabled=Disabled pimoroni_plasma2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pimoroni_plasma2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -22854,6 +24668,244 @@ pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_si pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +# ----------------------------------- +# Pimoroni Servo2040 +# ----------------------------------- +pimoroni_servo2040.name=Pimoroni Servo2040 +pimoroni_servo2040.vid.0=0x2e8a +pimoroni_servo2040.pid.0=0x10a5 +pimoroni_servo2040.vid.1=0x2e8a +pimoroni_servo2040.pid.1=0x11a5 +pimoroni_servo2040.vid.2=0x2e8a +pimoroni_servo2040.pid.2=0x50a5 +pimoroni_servo2040.vid.3=0x2e8a +pimoroni_servo2040.pid.3=0x51a5 +pimoroni_servo2040.vid.4=0x2e8a +pimoroni_servo2040.pid.4=0x90a5 +pimoroni_servo2040.vid.5=0x2e8a +pimoroni_servo2040.pid.5=0x91a5 +pimoroni_servo2040.vid.6=0x2e8a +pimoroni_servo2040.pid.6=0xd0a5 +pimoroni_servo2040.vid.7=0x2e8a +pimoroni_servo2040.pid.7=0xd1a5 +pimoroni_servo2040.upload_port.0.vid=0x2e8a +pimoroni_servo2040.upload_port.0.pid=0x10a5 +pimoroni_servo2040.upload_port.1.vid=0x2e8a +pimoroni_servo2040.upload_port.1.pid=0x11a5 +pimoroni_servo2040.upload_port.2.vid=0x2e8a +pimoroni_servo2040.upload_port.2.pid=0x50a5 +pimoroni_servo2040.upload_port.3.vid=0x2e8a +pimoroni_servo2040.upload_port.3.pid=0x51a5 +pimoroni_servo2040.upload_port.4.vid=0x2e8a +pimoroni_servo2040.upload_port.4.pid=0x90a5 +pimoroni_servo2040.upload_port.5.vid=0x2e8a +pimoroni_servo2040.upload_port.5.pid=0x91a5 +pimoroni_servo2040.upload_port.6.vid=0x2e8a +pimoroni_servo2040.upload_port.6.pid=0xd0a5 +pimoroni_servo2040.upload_port.7.vid=0x2e8a +pimoroni_servo2040.upload_port.7.pid=0xd1a5 +pimoroni_servo2040.build.usbvid=-DUSBD_VID=0x2e8a +pimoroni_servo2040.build.usbpid=-DUSBD_PID=0x10a5 +pimoroni_servo2040.build.usbpwr=-DUSBD_MAX_POWER_MA=500 +pimoroni_servo2040.build.board=PIMORONI_SERVO2040 +pimoroni_servo2040.build.mcu=cortex-m0plus +pimoroni_servo2040.build.chip=rp2040 +pimoroni_servo2040.build.toolchain=arm-none-eabi +pimoroni_servo2040.build.toolchainpkg=pqt-gcc +pimoroni_servo2040.build.toolchainopts=-march=armv6-m -mcpu=cortex-m0plus -mthumb +pimoroni_servo2040.build.uf2family=--family rp2040 +pimoroni_servo2040.build.variant=pimoroni_servo2040 +pimoroni_servo2040.upload.maximum_size=2097152 +pimoroni_servo2040.upload.wait_for_upload_port=true +pimoroni_servo2040.upload.erase_cmd= +pimoroni_servo2040.serial.disableDTR=false +pimoroni_servo2040.serial.disableRTS=false +pimoroni_servo2040.build.f_cpu=125000000 +pimoroni_servo2040.build.led= +pimoroni_servo2040.build.core=rp2040 +pimoroni_servo2040.build.ldscript=memmap_default.ld +pimoroni_servo2040.build.boot2=boot2_w25q080_2_padded_checksum +pimoroni_servo2040.build.usb_manufacturer="Pimoroni" +pimoroni_servo2040.build.usb_product="Servo2040" +pimoroni_servo2040.menu.flash.2097152_0=2MB (no FS) +pimoroni_servo2040.menu.flash.2097152_0.upload.maximum_size=2093056 +pimoroni_servo2040.menu.flash.2097152_0.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_0.build.flash_length=2093056 +pimoroni_servo2040.menu.flash.2097152_0.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_0.build.fs_start=270528512 +pimoroni_servo2040.menu.flash.2097152_0.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +pimoroni_servo2040.menu.flash.2097152_65536.upload.maximum_size=2027520 +pimoroni_servo2040.menu.flash.2097152_65536.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_65536.build.flash_length=2027520 +pimoroni_servo2040.menu.flash.2097152_65536.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_65536.build.fs_start=270462976 +pimoroni_servo2040.menu.flash.2097152_65536.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +pimoroni_servo2040.menu.flash.2097152_131072.upload.maximum_size=1961984 +pimoroni_servo2040.menu.flash.2097152_131072.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_131072.build.flash_length=1961984 +pimoroni_servo2040.menu.flash.2097152_131072.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_131072.build.fs_start=270397440 +pimoroni_servo2040.menu.flash.2097152_131072.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +pimoroni_servo2040.menu.flash.2097152_262144.upload.maximum_size=1830912 +pimoroni_servo2040.menu.flash.2097152_262144.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_262144.build.flash_length=1830912 +pimoroni_servo2040.menu.flash.2097152_262144.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_262144.build.fs_start=270266368 +pimoroni_servo2040.menu.flash.2097152_262144.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +pimoroni_servo2040.menu.flash.2097152_524288.upload.maximum_size=1568768 +pimoroni_servo2040.menu.flash.2097152_524288.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_524288.build.flash_length=1568768 +pimoroni_servo2040.menu.flash.2097152_524288.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_524288.build.fs_start=270004224 +pimoroni_servo2040.menu.flash.2097152_524288.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) +pimoroni_servo2040.menu.flash.2097152_1048576.upload.maximum_size=1044480 +pimoroni_servo2040.menu.flash.2097152_1048576.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_1048576.build.flash_length=1044480 +pimoroni_servo2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_1048576.build.fs_start=269479936 +pimoroni_servo2040.menu.flash.2097152_1048576.build.fs_end=270528512 +pimoroni_servo2040.menu.freq.200=200 MHz +pimoroni_servo2040.menu.freq.200.build.f_cpu=200000000L +pimoroni_servo2040.menu.freq.50=50 MHz +pimoroni_servo2040.menu.freq.50.build.f_cpu=50000000L +pimoroni_servo2040.menu.freq.100=100 MHz +pimoroni_servo2040.menu.freq.100.build.f_cpu=100000000L +pimoroni_servo2040.menu.freq.120=120 MHz +pimoroni_servo2040.menu.freq.120.build.f_cpu=120000000L +pimoroni_servo2040.menu.freq.125=125 MHz +pimoroni_servo2040.menu.freq.125.build.f_cpu=125000000L +pimoroni_servo2040.menu.freq.128=128 MHz +pimoroni_servo2040.menu.freq.128.build.f_cpu=128000000L +pimoroni_servo2040.menu.freq.133=133 MHz +pimoroni_servo2040.menu.freq.133.build.f_cpu=133000000L +pimoroni_servo2040.menu.freq.150=150 MHz +pimoroni_servo2040.menu.freq.150.build.f_cpu=150000000L +pimoroni_servo2040.menu.freq.176=176 MHz +pimoroni_servo2040.menu.freq.176.build.f_cpu=176000000L +pimoroni_servo2040.menu.freq.225=225 MHz (Overclock) +pimoroni_servo2040.menu.freq.225.build.f_cpu=225000000L +pimoroni_servo2040.menu.freq.240=240 MHz (Overclock) +pimoroni_servo2040.menu.freq.240.build.f_cpu=240000000L +pimoroni_servo2040.menu.freq.250=250 MHz (Overclock) +pimoroni_servo2040.menu.freq.250.build.f_cpu=250000000L +pimoroni_servo2040.menu.freq.276=276 MHz (Overclock) +pimoroni_servo2040.menu.freq.276.build.f_cpu=276000000L +pimoroni_servo2040.menu.freq.300=300 MHz (Overclock) +pimoroni_servo2040.menu.freq.300.build.f_cpu=300000000L +pimoroni_servo2040.menu.opt.Small=Small (-Os) (standard) +pimoroni_servo2040.menu.opt.Small.build.flags.optimize=-Os +pimoroni_servo2040.menu.opt.Optimize=Optimize (-O) +pimoroni_servo2040.menu.opt.Optimize.build.flags.optimize=-O +pimoroni_servo2040.menu.opt.Optimize2=Optimize More (-O2) +pimoroni_servo2040.menu.opt.Optimize2.build.flags.optimize=-O2 +pimoroni_servo2040.menu.opt.Optimize3=Optimize Even More (-O3) +pimoroni_servo2040.menu.opt.Optimize3.build.flags.optimize=-O3 +pimoroni_servo2040.menu.opt.Fast=Fast (-Ofast) (maybe slower) +pimoroni_servo2040.menu.opt.Fast.build.flags.optimize=-Ofast +pimoroni_servo2040.menu.opt.Debug=Debug (-Og) +pimoroni_servo2040.menu.opt.Debug.build.flags.optimize=-Og +pimoroni_servo2040.menu.opt.Disabled=Disabled (-O0) +pimoroni_servo2040.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_servo2040.menu.profile.Disabled=Disabled +pimoroni_servo2040.menu.profile.Disabled.build.flags.profile= +pimoroni_servo2040.menu.profile.Enabled=Enabled +pimoroni_servo2040.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +pimoroni_servo2040.menu.rtti.Disabled=Disabled +pimoroni_servo2040.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +pimoroni_servo2040.menu.rtti.Enabled=Enabled +pimoroni_servo2040.menu.rtti.Enabled.build.flags.rtti= +pimoroni_servo2040.menu.stackprotect.Disabled=Disabled +pimoroni_servo2040.menu.stackprotect.Disabled.build.flags.stackprotect= +pimoroni_servo2040.menu.stackprotect.Enabled=Enabled +pimoroni_servo2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +pimoroni_servo2040.menu.exceptions.Disabled=Disabled +pimoroni_servo2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +pimoroni_servo2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +pimoroni_servo2040.menu.exceptions.Enabled=Enabled +pimoroni_servo2040.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +pimoroni_servo2040.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +pimoroni_servo2040.menu.dbgport.Disabled=Disabled +pimoroni_servo2040.menu.dbgport.Disabled.build.debug_port= +pimoroni_servo2040.menu.dbgport.Serial=Serial +pimoroni_servo2040.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +pimoroni_servo2040.menu.dbgport.Serial1=Serial1 +pimoroni_servo2040.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +pimoroni_servo2040.menu.dbgport.Serial2=Serial2 +pimoroni_servo2040.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +pimoroni_servo2040.menu.dbgport.SerialSemi=SerialSemi +pimoroni_servo2040.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +pimoroni_servo2040.menu.dbglvl.None=None +pimoroni_servo2040.menu.dbglvl.None.build.debug_level= +pimoroni_servo2040.menu.dbglvl.Core=Core +pimoroni_servo2040.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +pimoroni_servo2040.menu.dbglvl.SPI=SPI +pimoroni_servo2040.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +pimoroni_servo2040.menu.dbglvl.Wire=Wire +pimoroni_servo2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +pimoroni_servo2040.menu.dbglvl.Bluetooth=Bluetooth +pimoroni_servo2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_servo2040.menu.dbglvl.All=All +pimoroni_servo2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_servo2040.menu.dbglvl.NDEBUG=NDEBUG +pimoroni_servo2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +pimoroni_servo2040.menu.usbstack.picosdk=Pico SDK +pimoroni_servo2040.menu.usbstack.picosdk.build.usbstack_flags= +pimoroni_servo2040.menu.usbstack.tinyusb=Adafruit TinyUSB +pimoroni_servo2040.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +pimoroni_servo2040.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +pimoroni_servo2040.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +pimoroni_servo2040.menu.usbstack.nousb=No USB +pimoroni_servo2040.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +pimoroni_servo2040.menu.ipbtstack.ipv4only=IPv4 Only +pimoroni_servo2040.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +pimoroni_servo2040.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +pimoroni_servo2040.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +pimoroni_servo2040.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +pimoroni_servo2040.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +pimoroni_servo2040.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +pimoroni_servo2040.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +pimoroni_servo2040.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +pimoroni_servo2040.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +pimoroni_servo2040.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +pimoroni_servo2040.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +pimoroni_servo2040.menu.uploadmethod.default=Default (UF2) +pimoroni_servo2040.menu.uploadmethod.default.build.ram_length=256k +pimoroni_servo2040.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +pimoroni_servo2040.menu.uploadmethod.default.upload.maximum_data_size=262144 +pimoroni_servo2040.menu.uploadmethod.default.upload.tool=uf2conv +pimoroni_servo2040.menu.uploadmethod.default.upload.tool.default=uf2conv +pimoroni_servo2040.menu.uploadmethod.default.upload.tool.network=uf2conv-network +pimoroni_servo2040.menu.uploadmethod.picotool=Picotool +pimoroni_servo2040.menu.uploadmethod.picotool.build.ram_length=256k +pimoroni_servo2040.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +pimoroni_servo2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +pimoroni_servo2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144 +pimoroni_servo2040.menu.uploadmethod.picotool.upload.tool=picotool +pimoroni_servo2040.menu.uploadmethod.picotool.upload.tool.default=picotool +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + # ----------------------------------- # Pimoroni Tiny2040 # ----------------------------------- @@ -22983,8 +25035,8 @@ pimoroni_tiny2040.menu.flash.8388608_2097152.build.flash_length=6287360 pimoroni_tiny2040.menu.flash.8388608_2097152.build.eeprom_start=276819968 pimoroni_tiny2040.menu.flash.8388608_2097152.build.fs_start=274722816 pimoroni_tiny2040.menu.flash.8388608_2097152.build.fs_end=276819968 -pimoroni_tiny2040.menu.freq.133=133 MHz -pimoroni_tiny2040.menu.freq.133.build.f_cpu=133000000L +pimoroni_tiny2040.menu.freq.200=200 MHz +pimoroni_tiny2040.menu.freq.200.build.f_cpu=200000000L pimoroni_tiny2040.menu.freq.50=50 MHz pimoroni_tiny2040.menu.freq.50.build.f_cpu=50000000L pimoroni_tiny2040.menu.freq.100=100 MHz @@ -22995,20 +25047,20 @@ pimoroni_tiny2040.menu.freq.125=125 MHz pimoroni_tiny2040.menu.freq.125.build.f_cpu=125000000L pimoroni_tiny2040.menu.freq.128=128 MHz pimoroni_tiny2040.menu.freq.128.build.f_cpu=128000000L -pimoroni_tiny2040.menu.freq.150=150 MHz (Overclock) +pimoroni_tiny2040.menu.freq.133=133 MHz +pimoroni_tiny2040.menu.freq.133.build.f_cpu=133000000L +pimoroni_tiny2040.menu.freq.150=150 MHz pimoroni_tiny2040.menu.freq.150.build.f_cpu=150000000L -pimoroni_tiny2040.menu.freq.175=175 MHz (Overclock) -pimoroni_tiny2040.menu.freq.175.build.f_cpu=175000000L -pimoroni_tiny2040.menu.freq.200=200 MHz (Overclock) -pimoroni_tiny2040.menu.freq.200.build.f_cpu=200000000L +pimoroni_tiny2040.menu.freq.176=176 MHz +pimoroni_tiny2040.menu.freq.176.build.f_cpu=176000000L pimoroni_tiny2040.menu.freq.225=225 MHz (Overclock) pimoroni_tiny2040.menu.freq.225.build.f_cpu=225000000L pimoroni_tiny2040.menu.freq.240=240 MHz (Overclock) pimoroni_tiny2040.menu.freq.240.build.f_cpu=240000000L pimoroni_tiny2040.menu.freq.250=250 MHz (Overclock) pimoroni_tiny2040.menu.freq.250.build.f_cpu=250000000L -pimoroni_tiny2040.menu.freq.275=275 MHz (Overclock) -pimoroni_tiny2040.menu.freq.275.build.f_cpu=275000000L +pimoroni_tiny2040.menu.freq.276=276 MHz (Overclock) +pimoroni_tiny2040.menu.freq.276.build.f_cpu=276000000L pimoroni_tiny2040.menu.freq.300=300 MHz (Overclock) pimoroni_tiny2040.menu.freq.300.build.f_cpu=300000000L pimoroni_tiny2040.menu.opt.Small=Small (-Os) (standard) @@ -23036,7 +25088,7 @@ pimoroni_tiny2040.menu.rtti.Enabled.build.flags.rtti= pimoroni_tiny2040.menu.stackprotect.Disabled=Disabled pimoroni_tiny2040.menu.stackprotect.Disabled.build.flags.stackprotect= pimoroni_tiny2040.menu.stackprotect.Enabled=Enabled -pimoroni_tiny2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_tiny2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pimoroni_tiny2040.menu.exceptions.Disabled=Disabled pimoroni_tiny2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pimoroni_tiny2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -23258,8 +25310,8 @@ pimoroni_tiny2350.menu.freq.128=128 MHz pimoroni_tiny2350.menu.freq.128.build.f_cpu=128000000L pimoroni_tiny2350.menu.freq.133=133 MHz pimoroni_tiny2350.menu.freq.133.build.f_cpu=133000000L -pimoroni_tiny2350.menu.freq.175=175 MHz (Overclock) -pimoroni_tiny2350.menu.freq.175.build.f_cpu=175000000L +pimoroni_tiny2350.menu.freq.176=176 MHz (Overclock) +pimoroni_tiny2350.menu.freq.176.build.f_cpu=176000000L pimoroni_tiny2350.menu.freq.200=200 MHz (Overclock) pimoroni_tiny2350.menu.freq.200.build.f_cpu=200000000L pimoroni_tiny2350.menu.freq.225=225 MHz (Overclock) @@ -23268,8 +25320,8 @@ pimoroni_tiny2350.menu.freq.240=240 MHz (Overclock) pimoroni_tiny2350.menu.freq.240.build.f_cpu=240000000L pimoroni_tiny2350.menu.freq.250=250 MHz (Overclock) pimoroni_tiny2350.menu.freq.250.build.f_cpu=250000000L -pimoroni_tiny2350.menu.freq.275=275 MHz (Overclock) -pimoroni_tiny2350.menu.freq.275.build.f_cpu=275000000L +pimoroni_tiny2350.menu.freq.276=276 MHz (Overclock) +pimoroni_tiny2350.menu.freq.276.build.f_cpu=276000000L pimoroni_tiny2350.menu.freq.300=300 MHz (Overclock) pimoroni_tiny2350.menu.freq.300.build.f_cpu=300000000L pimoroni_tiny2350.menu.opt.Small=Small (-Os) (standard) @@ -23297,7 +25349,7 @@ pimoroni_tiny2350.menu.rtti.Enabled.build.flags.rtti= pimoroni_tiny2350.menu.stackprotect.Disabled=Disabled pimoroni_tiny2350.menu.stackprotect.Disabled.build.flags.stackprotect= pimoroni_tiny2350.menu.stackprotect.Enabled=Enabled -pimoroni_tiny2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_tiny2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pimoroni_tiny2350.menu.exceptions.Disabled=Disabled pimoroni_tiny2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pimoroni_tiny2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -23472,8 +25524,8 @@ pintronix_pinmax.menu.flash.4194304_3145728.build.flash_length=1044480 pintronix_pinmax.menu.flash.4194304_3145728.build.eeprom_start=272625664 pintronix_pinmax.menu.flash.4194304_3145728.build.fs_start=269479936 pintronix_pinmax.menu.flash.4194304_3145728.build.fs_end=272625664 -pintronix_pinmax.menu.freq.133=133 MHz -pintronix_pinmax.menu.freq.133.build.f_cpu=133000000L +pintronix_pinmax.menu.freq.200=200 MHz +pintronix_pinmax.menu.freq.200.build.f_cpu=200000000L pintronix_pinmax.menu.freq.50=50 MHz pintronix_pinmax.menu.freq.50.build.f_cpu=50000000L pintronix_pinmax.menu.freq.100=100 MHz @@ -23484,20 +25536,20 @@ pintronix_pinmax.menu.freq.125=125 MHz pintronix_pinmax.menu.freq.125.build.f_cpu=125000000L pintronix_pinmax.menu.freq.128=128 MHz pintronix_pinmax.menu.freq.128.build.f_cpu=128000000L -pintronix_pinmax.menu.freq.150=150 MHz (Overclock) +pintronix_pinmax.menu.freq.133=133 MHz +pintronix_pinmax.menu.freq.133.build.f_cpu=133000000L +pintronix_pinmax.menu.freq.150=150 MHz pintronix_pinmax.menu.freq.150.build.f_cpu=150000000L -pintronix_pinmax.menu.freq.175=175 MHz (Overclock) -pintronix_pinmax.menu.freq.175.build.f_cpu=175000000L -pintronix_pinmax.menu.freq.200=200 MHz (Overclock) -pintronix_pinmax.menu.freq.200.build.f_cpu=200000000L +pintronix_pinmax.menu.freq.176=176 MHz +pintronix_pinmax.menu.freq.176.build.f_cpu=176000000L pintronix_pinmax.menu.freq.225=225 MHz (Overclock) pintronix_pinmax.menu.freq.225.build.f_cpu=225000000L pintronix_pinmax.menu.freq.240=240 MHz (Overclock) pintronix_pinmax.menu.freq.240.build.f_cpu=240000000L pintronix_pinmax.menu.freq.250=250 MHz (Overclock) pintronix_pinmax.menu.freq.250.build.f_cpu=250000000L -pintronix_pinmax.menu.freq.275=275 MHz (Overclock) -pintronix_pinmax.menu.freq.275.build.f_cpu=275000000L +pintronix_pinmax.menu.freq.276=276 MHz (Overclock) +pintronix_pinmax.menu.freq.276.build.f_cpu=276000000L pintronix_pinmax.menu.freq.300=300 MHz (Overclock) pintronix_pinmax.menu.freq.300.build.f_cpu=300000000L pintronix_pinmax.menu.opt.Small=Small (-Os) (standard) @@ -23525,7 +25577,7 @@ pintronix_pinmax.menu.rtti.Enabled.build.flags.rtti= pintronix_pinmax.menu.stackprotect.Disabled=Disabled pintronix_pinmax.menu.stackprotect.Disabled.build.flags.stackprotect= pintronix_pinmax.menu.stackprotect.Enabled=Enabled -pintronix_pinmax.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pintronix_pinmax.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all pintronix_pinmax.menu.exceptions.Disabled=Disabled pintronix_pinmax.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions pintronix_pinmax.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -23710,8 +25762,8 @@ rakwireless_rak11300.menu.flash.2097152_1048576.build.flash_length=1044480 rakwireless_rak11300.menu.flash.2097152_1048576.build.eeprom_start=270528512 rakwireless_rak11300.menu.flash.2097152_1048576.build.fs_start=269479936 rakwireless_rak11300.menu.flash.2097152_1048576.build.fs_end=270528512 -rakwireless_rak11300.menu.freq.133=133 MHz -rakwireless_rak11300.menu.freq.133.build.f_cpu=133000000L +rakwireless_rak11300.menu.freq.200=200 MHz +rakwireless_rak11300.menu.freq.200.build.f_cpu=200000000L rakwireless_rak11300.menu.freq.50=50 MHz rakwireless_rak11300.menu.freq.50.build.f_cpu=50000000L rakwireless_rak11300.menu.freq.100=100 MHz @@ -23722,20 +25774,20 @@ rakwireless_rak11300.menu.freq.125=125 MHz rakwireless_rak11300.menu.freq.125.build.f_cpu=125000000L rakwireless_rak11300.menu.freq.128=128 MHz rakwireless_rak11300.menu.freq.128.build.f_cpu=128000000L -rakwireless_rak11300.menu.freq.150=150 MHz (Overclock) +rakwireless_rak11300.menu.freq.133=133 MHz +rakwireless_rak11300.menu.freq.133.build.f_cpu=133000000L +rakwireless_rak11300.menu.freq.150=150 MHz rakwireless_rak11300.menu.freq.150.build.f_cpu=150000000L -rakwireless_rak11300.menu.freq.175=175 MHz (Overclock) -rakwireless_rak11300.menu.freq.175.build.f_cpu=175000000L -rakwireless_rak11300.menu.freq.200=200 MHz (Overclock) -rakwireless_rak11300.menu.freq.200.build.f_cpu=200000000L +rakwireless_rak11300.menu.freq.176=176 MHz +rakwireless_rak11300.menu.freq.176.build.f_cpu=176000000L rakwireless_rak11300.menu.freq.225=225 MHz (Overclock) rakwireless_rak11300.menu.freq.225.build.f_cpu=225000000L rakwireless_rak11300.menu.freq.240=240 MHz (Overclock) rakwireless_rak11300.menu.freq.240.build.f_cpu=240000000L rakwireless_rak11300.menu.freq.250=250 MHz (Overclock) rakwireless_rak11300.menu.freq.250.build.f_cpu=250000000L -rakwireless_rak11300.menu.freq.275=275 MHz (Overclock) -rakwireless_rak11300.menu.freq.275.build.f_cpu=275000000L +rakwireless_rak11300.menu.freq.276=276 MHz (Overclock) +rakwireless_rak11300.menu.freq.276.build.f_cpu=276000000L rakwireless_rak11300.menu.freq.300=300 MHz (Overclock) rakwireless_rak11300.menu.freq.300.build.f_cpu=300000000L rakwireless_rak11300.menu.opt.Small=Small (-Os) (standard) @@ -23763,7 +25815,7 @@ rakwireless_rak11300.menu.rtti.Enabled.build.flags.rtti= rakwireless_rak11300.menu.stackprotect.Disabled=Disabled rakwireless_rak11300.menu.stackprotect.Disabled.build.flags.stackprotect= rakwireless_rak11300.menu.stackprotect.Enabled=Enabled -rakwireless_rak11300.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +rakwireless_rak11300.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all rakwireless_rak11300.menu.exceptions.Disabled=Disabled rakwireless_rak11300.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions rakwireless_rak11300.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -24030,8 +26082,8 @@ redscorp_rp2040_eins.menu.flash.16777216_15728640.build.flash_length=1044480 redscorp_rp2040_eins.menu.flash.16777216_15728640.build.eeprom_start=285208576 redscorp_rp2040_eins.menu.flash.16777216_15728640.build.fs_start=269479936 redscorp_rp2040_eins.menu.flash.16777216_15728640.build.fs_end=285208576 -redscorp_rp2040_eins.menu.freq.133=133 MHz -redscorp_rp2040_eins.menu.freq.133.build.f_cpu=133000000L +redscorp_rp2040_eins.menu.freq.200=200 MHz +redscorp_rp2040_eins.menu.freq.200.build.f_cpu=200000000L redscorp_rp2040_eins.menu.freq.50=50 MHz redscorp_rp2040_eins.menu.freq.50.build.f_cpu=50000000L redscorp_rp2040_eins.menu.freq.100=100 MHz @@ -24042,20 +26094,20 @@ redscorp_rp2040_eins.menu.freq.125=125 MHz redscorp_rp2040_eins.menu.freq.125.build.f_cpu=125000000L redscorp_rp2040_eins.menu.freq.128=128 MHz redscorp_rp2040_eins.menu.freq.128.build.f_cpu=128000000L -redscorp_rp2040_eins.menu.freq.150=150 MHz (Overclock) +redscorp_rp2040_eins.menu.freq.133=133 MHz +redscorp_rp2040_eins.menu.freq.133.build.f_cpu=133000000L +redscorp_rp2040_eins.menu.freq.150=150 MHz redscorp_rp2040_eins.menu.freq.150.build.f_cpu=150000000L -redscorp_rp2040_eins.menu.freq.175=175 MHz (Overclock) -redscorp_rp2040_eins.menu.freq.175.build.f_cpu=175000000L -redscorp_rp2040_eins.menu.freq.200=200 MHz (Overclock) -redscorp_rp2040_eins.menu.freq.200.build.f_cpu=200000000L +redscorp_rp2040_eins.menu.freq.176=176 MHz +redscorp_rp2040_eins.menu.freq.176.build.f_cpu=176000000L redscorp_rp2040_eins.menu.freq.225=225 MHz (Overclock) redscorp_rp2040_eins.menu.freq.225.build.f_cpu=225000000L redscorp_rp2040_eins.menu.freq.240=240 MHz (Overclock) redscorp_rp2040_eins.menu.freq.240.build.f_cpu=240000000L redscorp_rp2040_eins.menu.freq.250=250 MHz (Overclock) redscorp_rp2040_eins.menu.freq.250.build.f_cpu=250000000L -redscorp_rp2040_eins.menu.freq.275=275 MHz (Overclock) -redscorp_rp2040_eins.menu.freq.275.build.f_cpu=275000000L +redscorp_rp2040_eins.menu.freq.276=276 MHz (Overclock) +redscorp_rp2040_eins.menu.freq.276.build.f_cpu=276000000L redscorp_rp2040_eins.menu.freq.300=300 MHz (Overclock) redscorp_rp2040_eins.menu.freq.300.build.f_cpu=300000000L redscorp_rp2040_eins.menu.opt.Small=Small (-Os) (standard) @@ -24083,7 +26135,7 @@ redscorp_rp2040_eins.menu.rtti.Enabled.build.flags.rtti= redscorp_rp2040_eins.menu.stackprotect.Disabled=Disabled redscorp_rp2040_eins.menu.stackprotect.Disabled.build.flags.stackprotect= redscorp_rp2040_eins.menu.stackprotect.Enabled=Enabled -redscorp_rp2040_eins.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +redscorp_rp2040_eins.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all redscorp_rp2040_eins.menu.exceptions.Disabled=Disabled redscorp_rp2040_eins.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions redscorp_rp2040_eins.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -24350,8 +26402,8 @@ redscorp_rp2040_promini.menu.flash.16777216_15728640.build.flash_length=1044480 redscorp_rp2040_promini.menu.flash.16777216_15728640.build.eeprom_start=285208576 redscorp_rp2040_promini.menu.flash.16777216_15728640.build.fs_start=269479936 redscorp_rp2040_promini.menu.flash.16777216_15728640.build.fs_end=285208576 -redscorp_rp2040_promini.menu.freq.133=133 MHz -redscorp_rp2040_promini.menu.freq.133.build.f_cpu=133000000L +redscorp_rp2040_promini.menu.freq.200=200 MHz +redscorp_rp2040_promini.menu.freq.200.build.f_cpu=200000000L redscorp_rp2040_promini.menu.freq.50=50 MHz redscorp_rp2040_promini.menu.freq.50.build.f_cpu=50000000L redscorp_rp2040_promini.menu.freq.100=100 MHz @@ -24362,20 +26414,20 @@ redscorp_rp2040_promini.menu.freq.125=125 MHz redscorp_rp2040_promini.menu.freq.125.build.f_cpu=125000000L redscorp_rp2040_promini.menu.freq.128=128 MHz redscorp_rp2040_promini.menu.freq.128.build.f_cpu=128000000L -redscorp_rp2040_promini.menu.freq.150=150 MHz (Overclock) +redscorp_rp2040_promini.menu.freq.133=133 MHz +redscorp_rp2040_promini.menu.freq.133.build.f_cpu=133000000L +redscorp_rp2040_promini.menu.freq.150=150 MHz redscorp_rp2040_promini.menu.freq.150.build.f_cpu=150000000L -redscorp_rp2040_promini.menu.freq.175=175 MHz (Overclock) -redscorp_rp2040_promini.menu.freq.175.build.f_cpu=175000000L -redscorp_rp2040_promini.menu.freq.200=200 MHz (Overclock) -redscorp_rp2040_promini.menu.freq.200.build.f_cpu=200000000L +redscorp_rp2040_promini.menu.freq.176=176 MHz +redscorp_rp2040_promini.menu.freq.176.build.f_cpu=176000000L redscorp_rp2040_promini.menu.freq.225=225 MHz (Overclock) redscorp_rp2040_promini.menu.freq.225.build.f_cpu=225000000L redscorp_rp2040_promini.menu.freq.240=240 MHz (Overclock) redscorp_rp2040_promini.menu.freq.240.build.f_cpu=240000000L redscorp_rp2040_promini.menu.freq.250=250 MHz (Overclock) redscorp_rp2040_promini.menu.freq.250.build.f_cpu=250000000L -redscorp_rp2040_promini.menu.freq.275=275 MHz (Overclock) -redscorp_rp2040_promini.menu.freq.275.build.f_cpu=275000000L +redscorp_rp2040_promini.menu.freq.276=276 MHz (Overclock) +redscorp_rp2040_promini.menu.freq.276.build.f_cpu=276000000L redscorp_rp2040_promini.menu.freq.300=300 MHz (Overclock) redscorp_rp2040_promini.menu.freq.300.build.f_cpu=300000000L redscorp_rp2040_promini.menu.opt.Small=Small (-Os) (standard) @@ -24403,7 +26455,7 @@ redscorp_rp2040_promini.menu.rtti.Enabled.build.flags.rtti= redscorp_rp2040_promini.menu.stackprotect.Disabled=Disabled redscorp_rp2040_promini.menu.stackprotect.Disabled.build.flags.stackprotect= redscorp_rp2040_promini.menu.stackprotect.Enabled=Enabled -redscorp_rp2040_promini.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +redscorp_rp2040_promini.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all redscorp_rp2040_promini.menu.exceptions.Disabled=Disabled redscorp_rp2040_promini.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions redscorp_rp2040_promini.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -24606,8 +26658,8 @@ sea_picro.menu.flash.8388608_7340032.build.flash_length=1044480 sea_picro.menu.flash.8388608_7340032.build.eeprom_start=276819968 sea_picro.menu.flash.8388608_7340032.build.fs_start=269479936 sea_picro.menu.flash.8388608_7340032.build.fs_end=276819968 -sea_picro.menu.freq.133=133 MHz -sea_picro.menu.freq.133.build.f_cpu=133000000L +sea_picro.menu.freq.200=200 MHz +sea_picro.menu.freq.200.build.f_cpu=200000000L sea_picro.menu.freq.50=50 MHz sea_picro.menu.freq.50.build.f_cpu=50000000L sea_picro.menu.freq.100=100 MHz @@ -24618,20 +26670,20 @@ sea_picro.menu.freq.125=125 MHz sea_picro.menu.freq.125.build.f_cpu=125000000L sea_picro.menu.freq.128=128 MHz sea_picro.menu.freq.128.build.f_cpu=128000000L -sea_picro.menu.freq.150=150 MHz (Overclock) +sea_picro.menu.freq.133=133 MHz +sea_picro.menu.freq.133.build.f_cpu=133000000L +sea_picro.menu.freq.150=150 MHz sea_picro.menu.freq.150.build.f_cpu=150000000L -sea_picro.menu.freq.175=175 MHz (Overclock) -sea_picro.menu.freq.175.build.f_cpu=175000000L -sea_picro.menu.freq.200=200 MHz (Overclock) -sea_picro.menu.freq.200.build.f_cpu=200000000L +sea_picro.menu.freq.176=176 MHz +sea_picro.menu.freq.176.build.f_cpu=176000000L sea_picro.menu.freq.225=225 MHz (Overclock) sea_picro.menu.freq.225.build.f_cpu=225000000L sea_picro.menu.freq.240=240 MHz (Overclock) sea_picro.menu.freq.240.build.f_cpu=240000000L sea_picro.menu.freq.250=250 MHz (Overclock) sea_picro.menu.freq.250.build.f_cpu=250000000L -sea_picro.menu.freq.275=275 MHz (Overclock) -sea_picro.menu.freq.275.build.f_cpu=275000000L +sea_picro.menu.freq.276=276 MHz (Overclock) +sea_picro.menu.freq.276.build.f_cpu=276000000L sea_picro.menu.freq.300=300 MHz (Overclock) sea_picro.menu.freq.300.build.f_cpu=300000000L sea_picro.menu.opt.Small=Small (-Os) (standard) @@ -24659,7 +26711,7 @@ sea_picro.menu.rtti.Enabled.build.flags.rtti= sea_picro.menu.stackprotect.Disabled=Disabled sea_picro.menu.stackprotect.Disabled.build.flags.stackprotect= sea_picro.menu.stackprotect.Enabled=Enabled -sea_picro.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +sea_picro.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all sea_picro.menu.exceptions.Disabled=Disabled sea_picro.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions sea_picro.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -24830,8 +26882,8 @@ silicognition_rp2040_shim.menu.flash.4194304_3145728.build.flash_length=1044480 silicognition_rp2040_shim.menu.flash.4194304_3145728.build.eeprom_start=272625664 silicognition_rp2040_shim.menu.flash.4194304_3145728.build.fs_start=269479936 silicognition_rp2040_shim.menu.flash.4194304_3145728.build.fs_end=272625664 -silicognition_rp2040_shim.menu.freq.133=133 MHz -silicognition_rp2040_shim.menu.freq.133.build.f_cpu=133000000L +silicognition_rp2040_shim.menu.freq.200=200 MHz +silicognition_rp2040_shim.menu.freq.200.build.f_cpu=200000000L silicognition_rp2040_shim.menu.freq.50=50 MHz silicognition_rp2040_shim.menu.freq.50.build.f_cpu=50000000L silicognition_rp2040_shim.menu.freq.100=100 MHz @@ -24842,20 +26894,20 @@ silicognition_rp2040_shim.menu.freq.125=125 MHz silicognition_rp2040_shim.menu.freq.125.build.f_cpu=125000000L silicognition_rp2040_shim.menu.freq.128=128 MHz silicognition_rp2040_shim.menu.freq.128.build.f_cpu=128000000L -silicognition_rp2040_shim.menu.freq.150=150 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.133=133 MHz +silicognition_rp2040_shim.menu.freq.133.build.f_cpu=133000000L +silicognition_rp2040_shim.menu.freq.150=150 MHz silicognition_rp2040_shim.menu.freq.150.build.f_cpu=150000000L -silicognition_rp2040_shim.menu.freq.175=175 MHz (Overclock) -silicognition_rp2040_shim.menu.freq.175.build.f_cpu=175000000L -silicognition_rp2040_shim.menu.freq.200=200 MHz (Overclock) -silicognition_rp2040_shim.menu.freq.200.build.f_cpu=200000000L +silicognition_rp2040_shim.menu.freq.176=176 MHz +silicognition_rp2040_shim.menu.freq.176.build.f_cpu=176000000L silicognition_rp2040_shim.menu.freq.225=225 MHz (Overclock) silicognition_rp2040_shim.menu.freq.225.build.f_cpu=225000000L silicognition_rp2040_shim.menu.freq.240=240 MHz (Overclock) silicognition_rp2040_shim.menu.freq.240.build.f_cpu=240000000L silicognition_rp2040_shim.menu.freq.250=250 MHz (Overclock) silicognition_rp2040_shim.menu.freq.250.build.f_cpu=250000000L -silicognition_rp2040_shim.menu.freq.275=275 MHz (Overclock) -silicognition_rp2040_shim.menu.freq.275.build.f_cpu=275000000L +silicognition_rp2040_shim.menu.freq.276=276 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.276.build.f_cpu=276000000L silicognition_rp2040_shim.menu.freq.300=300 MHz (Overclock) silicognition_rp2040_shim.menu.freq.300.build.f_cpu=300000000L silicognition_rp2040_shim.menu.opt.Small=Small (-Os) (standard) @@ -24883,7 +26935,7 @@ silicognition_rp2040_shim.menu.rtti.Enabled.build.flags.rtti= silicognition_rp2040_shim.menu.stackprotect.Disabled=Disabled silicognition_rp2040_shim.menu.stackprotect.Disabled.build.flags.stackprotect= silicognition_rp2040_shim.menu.stackprotect.Enabled=Enabled -silicognition_rp2040_shim.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +silicognition_rp2040_shim.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all silicognition_rp2040_shim.menu.exceptions.Disabled=Disabled silicognition_rp2040_shim.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions silicognition_rp2040_shim.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -25086,8 +27138,8 @@ solderparty_rp2040_stamp.menu.flash.8388608_7340032.build.flash_length=1044480 solderparty_rp2040_stamp.menu.flash.8388608_7340032.build.eeprom_start=276819968 solderparty_rp2040_stamp.menu.flash.8388608_7340032.build.fs_start=269479936 solderparty_rp2040_stamp.menu.flash.8388608_7340032.build.fs_end=276819968 -solderparty_rp2040_stamp.menu.freq.133=133 MHz -solderparty_rp2040_stamp.menu.freq.133.build.f_cpu=133000000L +solderparty_rp2040_stamp.menu.freq.200=200 MHz +solderparty_rp2040_stamp.menu.freq.200.build.f_cpu=200000000L solderparty_rp2040_stamp.menu.freq.50=50 MHz solderparty_rp2040_stamp.menu.freq.50.build.f_cpu=50000000L solderparty_rp2040_stamp.menu.freq.100=100 MHz @@ -25098,20 +27150,20 @@ solderparty_rp2040_stamp.menu.freq.125=125 MHz solderparty_rp2040_stamp.menu.freq.125.build.f_cpu=125000000L solderparty_rp2040_stamp.menu.freq.128=128 MHz solderparty_rp2040_stamp.menu.freq.128.build.f_cpu=128000000L -solderparty_rp2040_stamp.menu.freq.150=150 MHz (Overclock) +solderparty_rp2040_stamp.menu.freq.133=133 MHz +solderparty_rp2040_stamp.menu.freq.133.build.f_cpu=133000000L +solderparty_rp2040_stamp.menu.freq.150=150 MHz solderparty_rp2040_stamp.menu.freq.150.build.f_cpu=150000000L -solderparty_rp2040_stamp.menu.freq.175=175 MHz (Overclock) -solderparty_rp2040_stamp.menu.freq.175.build.f_cpu=175000000L -solderparty_rp2040_stamp.menu.freq.200=200 MHz (Overclock) -solderparty_rp2040_stamp.menu.freq.200.build.f_cpu=200000000L +solderparty_rp2040_stamp.menu.freq.176=176 MHz +solderparty_rp2040_stamp.menu.freq.176.build.f_cpu=176000000L solderparty_rp2040_stamp.menu.freq.225=225 MHz (Overclock) solderparty_rp2040_stamp.menu.freq.225.build.f_cpu=225000000L solderparty_rp2040_stamp.menu.freq.240=240 MHz (Overclock) solderparty_rp2040_stamp.menu.freq.240.build.f_cpu=240000000L solderparty_rp2040_stamp.menu.freq.250=250 MHz (Overclock) solderparty_rp2040_stamp.menu.freq.250.build.f_cpu=250000000L -solderparty_rp2040_stamp.menu.freq.275=275 MHz (Overclock) -solderparty_rp2040_stamp.menu.freq.275.build.f_cpu=275000000L +solderparty_rp2040_stamp.menu.freq.276=276 MHz (Overclock) +solderparty_rp2040_stamp.menu.freq.276.build.f_cpu=276000000L solderparty_rp2040_stamp.menu.freq.300=300 MHz (Overclock) solderparty_rp2040_stamp.menu.freq.300.build.f_cpu=300000000L solderparty_rp2040_stamp.menu.opt.Small=Small (-Os) (standard) @@ -25139,7 +27191,7 @@ solderparty_rp2040_stamp.menu.rtti.Enabled.build.flags.rtti= solderparty_rp2040_stamp.menu.stackprotect.Disabled=Disabled solderparty_rp2040_stamp.menu.stackprotect.Disabled.build.flags.stackprotect= solderparty_rp2040_stamp.menu.stackprotect.Enabled=Enabled -solderparty_rp2040_stamp.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +solderparty_rp2040_stamp.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all solderparty_rp2040_stamp.menu.exceptions.Disabled=Disabled solderparty_rp2040_stamp.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions solderparty_rp2040_stamp.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -25421,8 +27473,8 @@ solderparty_rp2350_stamp.menu.freq.128=128 MHz solderparty_rp2350_stamp.menu.freq.128.build.f_cpu=128000000L solderparty_rp2350_stamp.menu.freq.133=133 MHz solderparty_rp2350_stamp.menu.freq.133.build.f_cpu=133000000L -solderparty_rp2350_stamp.menu.freq.175=175 MHz (Overclock) -solderparty_rp2350_stamp.menu.freq.175.build.f_cpu=175000000L +solderparty_rp2350_stamp.menu.freq.176=176 MHz (Overclock) +solderparty_rp2350_stamp.menu.freq.176.build.f_cpu=176000000L solderparty_rp2350_stamp.menu.freq.200=200 MHz (Overclock) solderparty_rp2350_stamp.menu.freq.200.build.f_cpu=200000000L solderparty_rp2350_stamp.menu.freq.225=225 MHz (Overclock) @@ -25431,8 +27483,8 @@ solderparty_rp2350_stamp.menu.freq.240=240 MHz (Overclock) solderparty_rp2350_stamp.menu.freq.240.build.f_cpu=240000000L solderparty_rp2350_stamp.menu.freq.250=250 MHz (Overclock) solderparty_rp2350_stamp.menu.freq.250.build.f_cpu=250000000L -solderparty_rp2350_stamp.menu.freq.275=275 MHz (Overclock) -solderparty_rp2350_stamp.menu.freq.275.build.f_cpu=275000000L +solderparty_rp2350_stamp.menu.freq.276=276 MHz (Overclock) +solderparty_rp2350_stamp.menu.freq.276.build.f_cpu=276000000L solderparty_rp2350_stamp.menu.freq.300=300 MHz (Overclock) solderparty_rp2350_stamp.menu.freq.300.build.f_cpu=300000000L solderparty_rp2350_stamp.menu.opt.Small=Small (-Os) (standard) @@ -25460,7 +27512,7 @@ solderparty_rp2350_stamp.menu.rtti.Enabled.build.flags.rtti= solderparty_rp2350_stamp.menu.stackprotect.Disabled=Disabled solderparty_rp2350_stamp.menu.stackprotect.Disabled.build.flags.stackprotect= solderparty_rp2350_stamp.menu.stackprotect.Enabled=Enabled -solderparty_rp2350_stamp.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +solderparty_rp2350_stamp.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all solderparty_rp2350_stamp.menu.exceptions.Disabled=Disabled solderparty_rp2350_stamp.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions solderparty_rp2350_stamp.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -25742,8 +27794,8 @@ solderparty_rp2350_stamp_xl.menu.freq.128=128 MHz solderparty_rp2350_stamp_xl.menu.freq.128.build.f_cpu=128000000L solderparty_rp2350_stamp_xl.menu.freq.133=133 MHz solderparty_rp2350_stamp_xl.menu.freq.133.build.f_cpu=133000000L -solderparty_rp2350_stamp_xl.menu.freq.175=175 MHz (Overclock) -solderparty_rp2350_stamp_xl.menu.freq.175.build.f_cpu=175000000L +solderparty_rp2350_stamp_xl.menu.freq.176=176 MHz (Overclock) +solderparty_rp2350_stamp_xl.menu.freq.176.build.f_cpu=176000000L solderparty_rp2350_stamp_xl.menu.freq.200=200 MHz (Overclock) solderparty_rp2350_stamp_xl.menu.freq.200.build.f_cpu=200000000L solderparty_rp2350_stamp_xl.menu.freq.225=225 MHz (Overclock) @@ -25752,8 +27804,8 @@ solderparty_rp2350_stamp_xl.menu.freq.240=240 MHz (Overclock) solderparty_rp2350_stamp_xl.menu.freq.240.build.f_cpu=240000000L solderparty_rp2350_stamp_xl.menu.freq.250=250 MHz (Overclock) solderparty_rp2350_stamp_xl.menu.freq.250.build.f_cpu=250000000L -solderparty_rp2350_stamp_xl.menu.freq.275=275 MHz (Overclock) -solderparty_rp2350_stamp_xl.menu.freq.275.build.f_cpu=275000000L +solderparty_rp2350_stamp_xl.menu.freq.276=276 MHz (Overclock) +solderparty_rp2350_stamp_xl.menu.freq.276.build.f_cpu=276000000L solderparty_rp2350_stamp_xl.menu.freq.300=300 MHz (Overclock) solderparty_rp2350_stamp_xl.menu.freq.300.build.f_cpu=300000000L solderparty_rp2350_stamp_xl.menu.opt.Small=Small (-Os) (standard) @@ -25781,7 +27833,7 @@ solderparty_rp2350_stamp_xl.menu.rtti.Enabled.build.flags.rtti= solderparty_rp2350_stamp_xl.menu.stackprotect.Disabled=Disabled solderparty_rp2350_stamp_xl.menu.stackprotect.Disabled.build.flags.stackprotect= solderparty_rp2350_stamp_xl.menu.stackprotect.Enabled=Enabled -solderparty_rp2350_stamp_xl.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +solderparty_rp2350_stamp_xl.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all solderparty_rp2350_stamp_xl.menu.exceptions.Disabled=Disabled solderparty_rp2350_stamp_xl.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions solderparty_rp2350_stamp_xl.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -25865,6 +27917,352 @@ solderparty_rp2350_stamp_xl.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum solderparty_rp2350_stamp_xl.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap solderparty_rp2350_stamp_xl.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +# ----------------------------------- +# SparkFun IoT RedBoard RP2350 +# ----------------------------------- +sparkfun_iotredboard_rp2350.name=SparkFun IoT RedBoard RP2350 +sparkfun_iotredboard_rp2350.vid.0=0x1b4f +sparkfun_iotredboard_rp2350.pid.0=0x0047 +sparkfun_iotredboard_rp2350.vid.1=0x1b4f +sparkfun_iotredboard_rp2350.pid.1=0x0147 +sparkfun_iotredboard_rp2350.vid.2=0x1b4f +sparkfun_iotredboard_rp2350.pid.2=0x4047 +sparkfun_iotredboard_rp2350.vid.3=0x1b4f +sparkfun_iotredboard_rp2350.pid.3=0x4147 +sparkfun_iotredboard_rp2350.vid.4=0x1b4f +sparkfun_iotredboard_rp2350.pid.4=0x8047 +sparkfun_iotredboard_rp2350.vid.5=0x1b4f +sparkfun_iotredboard_rp2350.pid.5=0x8147 +sparkfun_iotredboard_rp2350.vid.6=0x1b4f +sparkfun_iotredboard_rp2350.pid.6=0xc047 +sparkfun_iotredboard_rp2350.vid.7=0x1b4f +sparkfun_iotredboard_rp2350.pid.7=0xc147 +sparkfun_iotredboard_rp2350.upload_port.0.vid=0x1b4f +sparkfun_iotredboard_rp2350.upload_port.0.pid=0x0047 +sparkfun_iotredboard_rp2350.upload_port.1.vid=0x1b4f +sparkfun_iotredboard_rp2350.upload_port.1.pid=0x0147 +sparkfun_iotredboard_rp2350.upload_port.2.vid=0x1b4f +sparkfun_iotredboard_rp2350.upload_port.2.pid=0x4047 +sparkfun_iotredboard_rp2350.upload_port.3.vid=0x1b4f +sparkfun_iotredboard_rp2350.upload_port.3.pid=0x4147 +sparkfun_iotredboard_rp2350.upload_port.4.vid=0x1b4f +sparkfun_iotredboard_rp2350.upload_port.4.pid=0x8047 +sparkfun_iotredboard_rp2350.upload_port.5.vid=0x1b4f +sparkfun_iotredboard_rp2350.upload_port.5.pid=0x8147 +sparkfun_iotredboard_rp2350.upload_port.6.vid=0x1b4f +sparkfun_iotredboard_rp2350.upload_port.6.pid=0xc047 +sparkfun_iotredboard_rp2350.upload_port.7.vid=0x1b4f +sparkfun_iotredboard_rp2350.upload_port.7.pid=0xc147 +sparkfun_iotredboard_rp2350.build.usbvid=-DUSBD_VID=0x1b4f +sparkfun_iotredboard_rp2350.build.usbpid=-DUSBD_PID=0x0047 +sparkfun_iotredboard_rp2350.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +sparkfun_iotredboard_rp2350.build.board=SPARKFUN_IOTREDBOARD_RP2350 +sparkfun_iotredboard_rp2350.build.variant=sparkfun_iotredboard_rp2350 +sparkfun_iotredboard_rp2350.upload.maximum_size=16777216 +sparkfun_iotredboard_rp2350.upload.wait_for_upload_port=true +sparkfun_iotredboard_rp2350.upload.erase_cmd= +sparkfun_iotredboard_rp2350.serial.disableDTR=false +sparkfun_iotredboard_rp2350.serial.disableRTS=false +sparkfun_iotredboard_rp2350.build.f_cpu=125000000 +sparkfun_iotredboard_rp2350.build.led= +sparkfun_iotredboard_rp2350.build.core=rp2040 +sparkfun_iotredboard_rp2350.build.ldscript=memmap_default.ld +sparkfun_iotredboard_rp2350.build.boot2=none +sparkfun_iotredboard_rp2350.build.usb_manufacturer="SparkFun" +sparkfun_iotredboard_rp2350.build.usb_product="IoT RedBoard RP2350" +sparkfun_iotredboard_rp2350.build.psram_length=0x800000 +sparkfun_iotredboard_rp2350.build.extra_flags=-DPICO_CYW43_SUPPORTED=1 -DCYW43_PIN_WL_DYNAMIC=1 +sparkfun_iotredboard_rp2350.menu.flash.16777216_0=16MB (no FS) +sparkfun_iotredboard_rp2350.menu.flash.16777216_0.upload.maximum_size=16769024 +sparkfun_iotredboard_rp2350.menu.flash.16777216_0.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_0.build.flash_length=16769024 +sparkfun_iotredboard_rp2350.menu.flash.16777216_0.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_0.build.fs_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_0.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_65536.upload.maximum_size=16703488 +sparkfun_iotredboard_rp2350.menu.flash.16777216_65536.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_65536.build.flash_length=16703488 +sparkfun_iotredboard_rp2350.menu.flash.16777216_65536.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_65536.build.fs_start=285138944 +sparkfun_iotredboard_rp2350.menu.flash.16777216_65536.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_131072.upload.maximum_size=16637952 +sparkfun_iotredboard_rp2350.menu.flash.16777216_131072.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_131072.build.flash_length=16637952 +sparkfun_iotredboard_rp2350.menu.flash.16777216_131072.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_131072.build.fs_start=285073408 +sparkfun_iotredboard_rp2350.menu.flash.16777216_131072.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_262144.upload.maximum_size=16506880 +sparkfun_iotredboard_rp2350.menu.flash.16777216_262144.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_262144.build.flash_length=16506880 +sparkfun_iotredboard_rp2350.menu.flash.16777216_262144.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_262144.build.fs_start=284942336 +sparkfun_iotredboard_rp2350.menu.flash.16777216_262144.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_524288.upload.maximum_size=16244736 +sparkfun_iotredboard_rp2350.menu.flash.16777216_524288.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_524288.build.flash_length=16244736 +sparkfun_iotredboard_rp2350.menu.flash.16777216_524288.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_524288.build.fs_start=284680192 +sparkfun_iotredboard_rp2350.menu.flash.16777216_524288.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_1048576.upload.maximum_size=15720448 +sparkfun_iotredboard_rp2350.menu.flash.16777216_1048576.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_1048576.build.flash_length=15720448 +sparkfun_iotredboard_rp2350.menu.flash.16777216_1048576.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_1048576.build.fs_start=284155904 +sparkfun_iotredboard_rp2350.menu.flash.16777216_1048576.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_2097152.upload.maximum_size=14671872 +sparkfun_iotredboard_rp2350.menu.flash.16777216_2097152.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_2097152.build.flash_length=14671872 +sparkfun_iotredboard_rp2350.menu.flash.16777216_2097152.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_2097152.build.fs_start=283107328 +sparkfun_iotredboard_rp2350.menu.flash.16777216_2097152.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_3145728.upload.maximum_size=13623296 +sparkfun_iotredboard_rp2350.menu.flash.16777216_3145728.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_3145728.build.flash_length=13623296 +sparkfun_iotredboard_rp2350.menu.flash.16777216_3145728.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_3145728.build.fs_start=282058752 +sparkfun_iotredboard_rp2350.menu.flash.16777216_3145728.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_4194304.upload.maximum_size=12574720 +sparkfun_iotredboard_rp2350.menu.flash.16777216_4194304.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_4194304.build.flash_length=12574720 +sparkfun_iotredboard_rp2350.menu.flash.16777216_4194304.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_4194304.build.fs_start=281010176 +sparkfun_iotredboard_rp2350.menu.flash.16777216_4194304.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_5242880.upload.maximum_size=11526144 +sparkfun_iotredboard_rp2350.menu.flash.16777216_5242880.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_5242880.build.flash_length=11526144 +sparkfun_iotredboard_rp2350.menu.flash.16777216_5242880.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_5242880.build.fs_start=279961600 +sparkfun_iotredboard_rp2350.menu.flash.16777216_5242880.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_6291456.upload.maximum_size=10477568 +sparkfun_iotredboard_rp2350.menu.flash.16777216_6291456.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_6291456.build.flash_length=10477568 +sparkfun_iotredboard_rp2350.menu.flash.16777216_6291456.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_6291456.build.fs_start=278913024 +sparkfun_iotredboard_rp2350.menu.flash.16777216_6291456.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_7340032.upload.maximum_size=9428992 +sparkfun_iotredboard_rp2350.menu.flash.16777216_7340032.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_7340032.build.flash_length=9428992 +sparkfun_iotredboard_rp2350.menu.flash.16777216_7340032.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_7340032.build.fs_start=277864448 +sparkfun_iotredboard_rp2350.menu.flash.16777216_7340032.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_8388608.upload.maximum_size=8380416 +sparkfun_iotredboard_rp2350.menu.flash.16777216_8388608.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_8388608.build.flash_length=8380416 +sparkfun_iotredboard_rp2350.menu.flash.16777216_8388608.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_8388608.build.fs_start=276815872 +sparkfun_iotredboard_rp2350.menu.flash.16777216_8388608.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_9437184.upload.maximum_size=7331840 +sparkfun_iotredboard_rp2350.menu.flash.16777216_9437184.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_9437184.build.flash_length=7331840 +sparkfun_iotredboard_rp2350.menu.flash.16777216_9437184.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_9437184.build.fs_start=275767296 +sparkfun_iotredboard_rp2350.menu.flash.16777216_9437184.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_10485760.upload.maximum_size=6283264 +sparkfun_iotredboard_rp2350.menu.flash.16777216_10485760.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_10485760.build.flash_length=6283264 +sparkfun_iotredboard_rp2350.menu.flash.16777216_10485760.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_10485760.build.fs_start=274718720 +sparkfun_iotredboard_rp2350.menu.flash.16777216_10485760.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_11534336.upload.maximum_size=5234688 +sparkfun_iotredboard_rp2350.menu.flash.16777216_11534336.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_11534336.build.flash_length=5234688 +sparkfun_iotredboard_rp2350.menu.flash.16777216_11534336.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_11534336.build.fs_start=273670144 +sparkfun_iotredboard_rp2350.menu.flash.16777216_11534336.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_12582912.upload.maximum_size=4186112 +sparkfun_iotredboard_rp2350.menu.flash.16777216_12582912.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_12582912.build.flash_length=4186112 +sparkfun_iotredboard_rp2350.menu.flash.16777216_12582912.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_12582912.build.fs_start=272621568 +sparkfun_iotredboard_rp2350.menu.flash.16777216_12582912.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_13631488.upload.maximum_size=3137536 +sparkfun_iotredboard_rp2350.menu.flash.16777216_13631488.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_13631488.build.flash_length=3137536 +sparkfun_iotredboard_rp2350.menu.flash.16777216_13631488.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_13631488.build.fs_start=271572992 +sparkfun_iotredboard_rp2350.menu.flash.16777216_13631488.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_14680064.upload.maximum_size=2088960 +sparkfun_iotredboard_rp2350.menu.flash.16777216_14680064.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_14680064.build.flash_length=2088960 +sparkfun_iotredboard_rp2350.menu.flash.16777216_14680064.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_14680064.build.fs_start=270524416 +sparkfun_iotredboard_rp2350.menu.flash.16777216_14680064.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) +sparkfun_iotredboard_rp2350.menu.flash.16777216_15728640.upload.maximum_size=1040384 +sparkfun_iotredboard_rp2350.menu.flash.16777216_15728640.build.flash_total=16777216 +sparkfun_iotredboard_rp2350.menu.flash.16777216_15728640.build.flash_length=1040384 +sparkfun_iotredboard_rp2350.menu.flash.16777216_15728640.build.eeprom_start=285204480 +sparkfun_iotredboard_rp2350.menu.flash.16777216_15728640.build.fs_start=269475840 +sparkfun_iotredboard_rp2350.menu.flash.16777216_15728640.build.fs_end=285204480 +sparkfun_iotredboard_rp2350.menu.arch.arm=ARM +sparkfun_iotredboard_rp2350.menu.arch.arm.build.chip=rp2350 +sparkfun_iotredboard_rp2350.menu.arch.arm.build.toolchain=arm-none-eabi +sparkfun_iotredboard_rp2350.menu.arch.arm.build.toolchainpkg=pqt-gcc +sparkfun_iotredboard_rp2350.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +sparkfun_iotredboard_rp2350.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +sparkfun_iotredboard_rp2350.menu.arch.arm.build.mcu=cortex-m33 +sparkfun_iotredboard_rp2350.menu.arch.riscv=RISC-V +sparkfun_iotredboard_rp2350.menu.arch.riscv.build.chip=rp2350-riscv +sparkfun_iotredboard_rp2350.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +sparkfun_iotredboard_rp2350.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +sparkfun_iotredboard_rp2350.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +sparkfun_iotredboard_rp2350.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +sparkfun_iotredboard_rp2350.menu.arch.riscv.build.mcu=rv32imac +sparkfun_iotredboard_rp2350.menu.freq.150=150 MHz +sparkfun_iotredboard_rp2350.menu.freq.150.build.f_cpu=150000000L +sparkfun_iotredboard_rp2350.menu.freq.50=50 MHz +sparkfun_iotredboard_rp2350.menu.freq.50.build.f_cpu=50000000L +sparkfun_iotredboard_rp2350.menu.freq.100=100 MHz +sparkfun_iotredboard_rp2350.menu.freq.100.build.f_cpu=100000000L +sparkfun_iotredboard_rp2350.menu.freq.120=120 MHz +sparkfun_iotredboard_rp2350.menu.freq.120.build.f_cpu=120000000L +sparkfun_iotredboard_rp2350.menu.freq.125=125 MHz +sparkfun_iotredboard_rp2350.menu.freq.125.build.f_cpu=125000000L +sparkfun_iotredboard_rp2350.menu.freq.128=128 MHz +sparkfun_iotredboard_rp2350.menu.freq.128.build.f_cpu=128000000L +sparkfun_iotredboard_rp2350.menu.freq.133=133 MHz +sparkfun_iotredboard_rp2350.menu.freq.133.build.f_cpu=133000000L +sparkfun_iotredboard_rp2350.menu.freq.176=176 MHz (Overclock) +sparkfun_iotredboard_rp2350.menu.freq.176.build.f_cpu=176000000L +sparkfun_iotredboard_rp2350.menu.freq.200=200 MHz (Overclock) +sparkfun_iotredboard_rp2350.menu.freq.200.build.f_cpu=200000000L +sparkfun_iotredboard_rp2350.menu.freq.225=225 MHz (Overclock) +sparkfun_iotredboard_rp2350.menu.freq.225.build.f_cpu=225000000L +sparkfun_iotredboard_rp2350.menu.freq.240=240 MHz (Overclock) +sparkfun_iotredboard_rp2350.menu.freq.240.build.f_cpu=240000000L +sparkfun_iotredboard_rp2350.menu.freq.250=250 MHz (Overclock) +sparkfun_iotredboard_rp2350.menu.freq.250.build.f_cpu=250000000L +sparkfun_iotredboard_rp2350.menu.freq.276=276 MHz (Overclock) +sparkfun_iotredboard_rp2350.menu.freq.276.build.f_cpu=276000000L +sparkfun_iotredboard_rp2350.menu.freq.300=300 MHz (Overclock) +sparkfun_iotredboard_rp2350.menu.freq.300.build.f_cpu=300000000L +sparkfun_iotredboard_rp2350.menu.opt.Small=Small (-Os) (standard) +sparkfun_iotredboard_rp2350.menu.opt.Small.build.flags.optimize=-Os +sparkfun_iotredboard_rp2350.menu.opt.Optimize=Optimize (-O) +sparkfun_iotredboard_rp2350.menu.opt.Optimize.build.flags.optimize=-O +sparkfun_iotredboard_rp2350.menu.opt.Optimize2=Optimize More (-O2) +sparkfun_iotredboard_rp2350.menu.opt.Optimize2.build.flags.optimize=-O2 +sparkfun_iotredboard_rp2350.menu.opt.Optimize3=Optimize Even More (-O3) +sparkfun_iotredboard_rp2350.menu.opt.Optimize3.build.flags.optimize=-O3 +sparkfun_iotredboard_rp2350.menu.opt.Fast=Fast (-Ofast) (maybe slower) +sparkfun_iotredboard_rp2350.menu.opt.Fast.build.flags.optimize=-Ofast +sparkfun_iotredboard_rp2350.menu.opt.Debug=Debug (-Og) +sparkfun_iotredboard_rp2350.menu.opt.Debug.build.flags.optimize=-Og +sparkfun_iotredboard_rp2350.menu.opt.Disabled=Disabled (-O0) +sparkfun_iotredboard_rp2350.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_iotredboard_rp2350.menu.profile.Disabled=Disabled +sparkfun_iotredboard_rp2350.menu.profile.Disabled.build.flags.profile= +sparkfun_iotredboard_rp2350.menu.profile.Enabled=Enabled +sparkfun_iotredboard_rp2350.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +sparkfun_iotredboard_rp2350.menu.rtti.Disabled=Disabled +sparkfun_iotredboard_rp2350.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +sparkfun_iotredboard_rp2350.menu.rtti.Enabled=Enabled +sparkfun_iotredboard_rp2350.menu.rtti.Enabled.build.flags.rtti= +sparkfun_iotredboard_rp2350.menu.stackprotect.Disabled=Disabled +sparkfun_iotredboard_rp2350.menu.stackprotect.Disabled.build.flags.stackprotect= +sparkfun_iotredboard_rp2350.menu.stackprotect.Enabled=Enabled +sparkfun_iotredboard_rp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +sparkfun_iotredboard_rp2350.menu.exceptions.Disabled=Disabled +sparkfun_iotredboard_rp2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +sparkfun_iotredboard_rp2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +sparkfun_iotredboard_rp2350.menu.exceptions.Enabled=Enabled +sparkfun_iotredboard_rp2350.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +sparkfun_iotredboard_rp2350.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +sparkfun_iotredboard_rp2350.menu.dbgport.Disabled=Disabled +sparkfun_iotredboard_rp2350.menu.dbgport.Disabled.build.debug_port= +sparkfun_iotredboard_rp2350.menu.dbgport.Serial=Serial +sparkfun_iotredboard_rp2350.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +sparkfun_iotredboard_rp2350.menu.dbgport.Serial1=Serial1 +sparkfun_iotredboard_rp2350.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +sparkfun_iotredboard_rp2350.menu.dbgport.Serial2=Serial2 +sparkfun_iotredboard_rp2350.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +sparkfun_iotredboard_rp2350.menu.dbgport.SerialSemi=SerialSemi +sparkfun_iotredboard_rp2350.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +sparkfun_iotredboard_rp2350.menu.dbglvl.None=None +sparkfun_iotredboard_rp2350.menu.dbglvl.None.build.debug_level= +sparkfun_iotredboard_rp2350.menu.dbglvl.Core=Core +sparkfun_iotredboard_rp2350.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +sparkfun_iotredboard_rp2350.menu.dbglvl.SPI=SPI +sparkfun_iotredboard_rp2350.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +sparkfun_iotredboard_rp2350.menu.dbglvl.Wire=Wire +sparkfun_iotredboard_rp2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +sparkfun_iotredboard_rp2350.menu.dbglvl.Bluetooth=Bluetooth +sparkfun_iotredboard_rp2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_iotredboard_rp2350.menu.dbglvl.All=All +sparkfun_iotredboard_rp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_iotredboard_rp2350.menu.dbglvl.NDEBUG=NDEBUG +sparkfun_iotredboard_rp2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +sparkfun_iotredboard_rp2350.menu.usbstack.picosdk=Pico SDK +sparkfun_iotredboard_rp2350.menu.usbstack.picosdk.build.usbstack_flags= +sparkfun_iotredboard_rp2350.menu.usbstack.tinyusb=Adafruit TinyUSB +sparkfun_iotredboard_rp2350.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +sparkfun_iotredboard_rp2350.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +sparkfun_iotredboard_rp2350.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +sparkfun_iotredboard_rp2350.menu.usbstack.nousb=No USB +sparkfun_iotredboard_rp2350.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4only=IPv4 Only +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +sparkfun_iotredboard_rp2350.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +sparkfun_iotredboard_rp2350.menu.uploadmethod.default=Default (UF2) +sparkfun_iotredboard_rp2350.menu.uploadmethod.default.build.ram_length=512k +sparkfun_iotredboard_rp2350.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +sparkfun_iotredboard_rp2350.menu.uploadmethod.default.upload.maximum_data_size=524288 +sparkfun_iotredboard_rp2350.menu.uploadmethod.default.upload.tool=uf2conv +sparkfun_iotredboard_rp2350.menu.uploadmethod.default.upload.tool.default=uf2conv +sparkfun_iotredboard_rp2350.menu.uploadmethod.default.upload.tool.network=uf2conv-network +sparkfun_iotredboard_rp2350.menu.uploadmethod.picotool=Picotool +sparkfun_iotredboard_rp2350.menu.uploadmethod.picotool.build.ram_length=512k +sparkfun_iotredboard_rp2350.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +sparkfun_iotredboard_rp2350.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +sparkfun_iotredboard_rp2350.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +sparkfun_iotredboard_rp2350.menu.uploadmethod.picotool.upload.tool=picotool +sparkfun_iotredboard_rp2350.menu.uploadmethod.picotool.upload.tool.default=picotool +sparkfun_iotredboard_rp2350.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +sparkfun_iotredboard_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +sparkfun_iotredboard_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +sparkfun_iotredboard_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +sparkfun_iotredboard_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +sparkfun_iotredboard_rp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + # ----------------------------------- # SparkFun MicroMod RP2040 # ----------------------------------- @@ -26064,8 +28462,8 @@ sparkfun_micromodrp2040.menu.flash.16777216_15728640.build.flash_length=1044480 sparkfun_micromodrp2040.menu.flash.16777216_15728640.build.eeprom_start=285208576 sparkfun_micromodrp2040.menu.flash.16777216_15728640.build.fs_start=269479936 sparkfun_micromodrp2040.menu.flash.16777216_15728640.build.fs_end=285208576 -sparkfun_micromodrp2040.menu.freq.133=133 MHz -sparkfun_micromodrp2040.menu.freq.133.build.f_cpu=133000000L +sparkfun_micromodrp2040.menu.freq.200=200 MHz +sparkfun_micromodrp2040.menu.freq.200.build.f_cpu=200000000L sparkfun_micromodrp2040.menu.freq.50=50 MHz sparkfun_micromodrp2040.menu.freq.50.build.f_cpu=50000000L sparkfun_micromodrp2040.menu.freq.100=100 MHz @@ -26076,20 +28474,20 @@ sparkfun_micromodrp2040.menu.freq.125=125 MHz sparkfun_micromodrp2040.menu.freq.125.build.f_cpu=125000000L sparkfun_micromodrp2040.menu.freq.128=128 MHz sparkfun_micromodrp2040.menu.freq.128.build.f_cpu=128000000L -sparkfun_micromodrp2040.menu.freq.150=150 MHz (Overclock) +sparkfun_micromodrp2040.menu.freq.133=133 MHz +sparkfun_micromodrp2040.menu.freq.133.build.f_cpu=133000000L +sparkfun_micromodrp2040.menu.freq.150=150 MHz sparkfun_micromodrp2040.menu.freq.150.build.f_cpu=150000000L -sparkfun_micromodrp2040.menu.freq.175=175 MHz (Overclock) -sparkfun_micromodrp2040.menu.freq.175.build.f_cpu=175000000L -sparkfun_micromodrp2040.menu.freq.200=200 MHz (Overclock) -sparkfun_micromodrp2040.menu.freq.200.build.f_cpu=200000000L +sparkfun_micromodrp2040.menu.freq.176=176 MHz +sparkfun_micromodrp2040.menu.freq.176.build.f_cpu=176000000L sparkfun_micromodrp2040.menu.freq.225=225 MHz (Overclock) sparkfun_micromodrp2040.menu.freq.225.build.f_cpu=225000000L sparkfun_micromodrp2040.menu.freq.240=240 MHz (Overclock) sparkfun_micromodrp2040.menu.freq.240.build.f_cpu=240000000L sparkfun_micromodrp2040.menu.freq.250=250 MHz (Overclock) sparkfun_micromodrp2040.menu.freq.250.build.f_cpu=250000000L -sparkfun_micromodrp2040.menu.freq.275=275 MHz (Overclock) -sparkfun_micromodrp2040.menu.freq.275.build.f_cpu=275000000L +sparkfun_micromodrp2040.menu.freq.276=276 MHz (Overclock) +sparkfun_micromodrp2040.menu.freq.276.build.f_cpu=276000000L sparkfun_micromodrp2040.menu.freq.300=300 MHz (Overclock) sparkfun_micromodrp2040.menu.freq.300.build.f_cpu=300000000L sparkfun_micromodrp2040.menu.opt.Small=Small (-Os) (standard) @@ -26117,7 +28515,7 @@ sparkfun_micromodrp2040.menu.rtti.Enabled.build.flags.rtti= sparkfun_micromodrp2040.menu.stackprotect.Disabled=Disabled sparkfun_micromodrp2040.menu.stackprotect.Disabled.build.flags.stackprotect= sparkfun_micromodrp2040.menu.stackprotect.Enabled=Enabled -sparkfun_micromodrp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +sparkfun_micromodrp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all sparkfun_micromodrp2040.menu.exceptions.Disabled=Disabled sparkfun_micromodrp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions sparkfun_micromodrp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -26400,8 +28798,8 @@ sparkfun_promicrorp2040.menu.flash.16777216_15728640.build.flash_length=1044480 sparkfun_promicrorp2040.menu.flash.16777216_15728640.build.eeprom_start=285208576 sparkfun_promicrorp2040.menu.flash.16777216_15728640.build.fs_start=269479936 sparkfun_promicrorp2040.menu.flash.16777216_15728640.build.fs_end=285208576 -sparkfun_promicrorp2040.menu.freq.133=133 MHz -sparkfun_promicrorp2040.menu.freq.133.build.f_cpu=133000000L +sparkfun_promicrorp2040.menu.freq.200=200 MHz +sparkfun_promicrorp2040.menu.freq.200.build.f_cpu=200000000L sparkfun_promicrorp2040.menu.freq.50=50 MHz sparkfun_promicrorp2040.menu.freq.50.build.f_cpu=50000000L sparkfun_promicrorp2040.menu.freq.100=100 MHz @@ -26412,20 +28810,20 @@ sparkfun_promicrorp2040.menu.freq.125=125 MHz sparkfun_promicrorp2040.menu.freq.125.build.f_cpu=125000000L sparkfun_promicrorp2040.menu.freq.128=128 MHz sparkfun_promicrorp2040.menu.freq.128.build.f_cpu=128000000L -sparkfun_promicrorp2040.menu.freq.150=150 MHz (Overclock) +sparkfun_promicrorp2040.menu.freq.133=133 MHz +sparkfun_promicrorp2040.menu.freq.133.build.f_cpu=133000000L +sparkfun_promicrorp2040.menu.freq.150=150 MHz sparkfun_promicrorp2040.menu.freq.150.build.f_cpu=150000000L -sparkfun_promicrorp2040.menu.freq.175=175 MHz (Overclock) -sparkfun_promicrorp2040.menu.freq.175.build.f_cpu=175000000L -sparkfun_promicrorp2040.menu.freq.200=200 MHz (Overclock) -sparkfun_promicrorp2040.menu.freq.200.build.f_cpu=200000000L +sparkfun_promicrorp2040.menu.freq.176=176 MHz +sparkfun_promicrorp2040.menu.freq.176.build.f_cpu=176000000L sparkfun_promicrorp2040.menu.freq.225=225 MHz (Overclock) sparkfun_promicrorp2040.menu.freq.225.build.f_cpu=225000000L sparkfun_promicrorp2040.menu.freq.240=240 MHz (Overclock) sparkfun_promicrorp2040.menu.freq.240.build.f_cpu=240000000L sparkfun_promicrorp2040.menu.freq.250=250 MHz (Overclock) sparkfun_promicrorp2040.menu.freq.250.build.f_cpu=250000000L -sparkfun_promicrorp2040.menu.freq.275=275 MHz (Overclock) -sparkfun_promicrorp2040.menu.freq.275.build.f_cpu=275000000L +sparkfun_promicrorp2040.menu.freq.276=276 MHz (Overclock) +sparkfun_promicrorp2040.menu.freq.276.build.f_cpu=276000000L sparkfun_promicrorp2040.menu.freq.300=300 MHz (Overclock) sparkfun_promicrorp2040.menu.freq.300.build.f_cpu=300000000L sparkfun_promicrorp2040.menu.opt.Small=Small (-Os) (standard) @@ -26453,7 +28851,7 @@ sparkfun_promicrorp2040.menu.rtti.Enabled.build.flags.rtti= sparkfun_promicrorp2040.menu.stackprotect.Disabled=Disabled sparkfun_promicrorp2040.menu.stackprotect.Disabled.build.flags.stackprotect= sparkfun_promicrorp2040.menu.stackprotect.Enabled=Enabled -sparkfun_promicrorp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +sparkfun_promicrorp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all sparkfun_promicrorp2040.menu.exceptions.Disabled=Disabled sparkfun_promicrorp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions sparkfun_promicrorp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -26759,8 +29157,8 @@ sparkfun_promicrorp2350.menu.freq.128=128 MHz sparkfun_promicrorp2350.menu.freq.128.build.f_cpu=128000000L sparkfun_promicrorp2350.menu.freq.133=133 MHz sparkfun_promicrorp2350.menu.freq.133.build.f_cpu=133000000L -sparkfun_promicrorp2350.menu.freq.175=175 MHz (Overclock) -sparkfun_promicrorp2350.menu.freq.175.build.f_cpu=175000000L +sparkfun_promicrorp2350.menu.freq.176=176 MHz (Overclock) +sparkfun_promicrorp2350.menu.freq.176.build.f_cpu=176000000L sparkfun_promicrorp2350.menu.freq.200=200 MHz (Overclock) sparkfun_promicrorp2350.menu.freq.200.build.f_cpu=200000000L sparkfun_promicrorp2350.menu.freq.225=225 MHz (Overclock) @@ -26769,8 +29167,8 @@ sparkfun_promicrorp2350.menu.freq.240=240 MHz (Overclock) sparkfun_promicrorp2350.menu.freq.240.build.f_cpu=240000000L sparkfun_promicrorp2350.menu.freq.250=250 MHz (Overclock) sparkfun_promicrorp2350.menu.freq.250.build.f_cpu=250000000L -sparkfun_promicrorp2350.menu.freq.275=275 MHz (Overclock) -sparkfun_promicrorp2350.menu.freq.275.build.f_cpu=275000000L +sparkfun_promicrorp2350.menu.freq.276=276 MHz (Overclock) +sparkfun_promicrorp2350.menu.freq.276.build.f_cpu=276000000L sparkfun_promicrorp2350.menu.freq.300=300 MHz (Overclock) sparkfun_promicrorp2350.menu.freq.300.build.f_cpu=300000000L sparkfun_promicrorp2350.menu.opt.Small=Small (-Os) (standard) @@ -26798,7 +29196,7 @@ sparkfun_promicrorp2350.menu.rtti.Enabled.build.flags.rtti= sparkfun_promicrorp2350.menu.stackprotect.Disabled=Disabled sparkfun_promicrorp2350.menu.stackprotect.Disabled.build.flags.stackprotect= sparkfun_promicrorp2350.menu.stackprotect.Enabled=Enabled -sparkfun_promicrorp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +sparkfun_promicrorp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all sparkfun_promicrorp2350.menu.exceptions.Disabled=Disabled sparkfun_promicrorp2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions sparkfun_promicrorp2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -27081,8 +29479,8 @@ sparkfun_thingplusrp2040.menu.flash.16777216_15728640.build.flash_length=1044480 sparkfun_thingplusrp2040.menu.flash.16777216_15728640.build.eeprom_start=285208576 sparkfun_thingplusrp2040.menu.flash.16777216_15728640.build.fs_start=269479936 sparkfun_thingplusrp2040.menu.flash.16777216_15728640.build.fs_end=285208576 -sparkfun_thingplusrp2040.menu.freq.133=133 MHz -sparkfun_thingplusrp2040.menu.freq.133.build.f_cpu=133000000L +sparkfun_thingplusrp2040.menu.freq.200=200 MHz +sparkfun_thingplusrp2040.menu.freq.200.build.f_cpu=200000000L sparkfun_thingplusrp2040.menu.freq.50=50 MHz sparkfun_thingplusrp2040.menu.freq.50.build.f_cpu=50000000L sparkfun_thingplusrp2040.menu.freq.100=100 MHz @@ -27093,20 +29491,20 @@ sparkfun_thingplusrp2040.menu.freq.125=125 MHz sparkfun_thingplusrp2040.menu.freq.125.build.f_cpu=125000000L sparkfun_thingplusrp2040.menu.freq.128=128 MHz sparkfun_thingplusrp2040.menu.freq.128.build.f_cpu=128000000L -sparkfun_thingplusrp2040.menu.freq.150=150 MHz (Overclock) +sparkfun_thingplusrp2040.menu.freq.133=133 MHz +sparkfun_thingplusrp2040.menu.freq.133.build.f_cpu=133000000L +sparkfun_thingplusrp2040.menu.freq.150=150 MHz sparkfun_thingplusrp2040.menu.freq.150.build.f_cpu=150000000L -sparkfun_thingplusrp2040.menu.freq.175=175 MHz (Overclock) -sparkfun_thingplusrp2040.menu.freq.175.build.f_cpu=175000000L -sparkfun_thingplusrp2040.menu.freq.200=200 MHz (Overclock) -sparkfun_thingplusrp2040.menu.freq.200.build.f_cpu=200000000L +sparkfun_thingplusrp2040.menu.freq.176=176 MHz +sparkfun_thingplusrp2040.menu.freq.176.build.f_cpu=176000000L sparkfun_thingplusrp2040.menu.freq.225=225 MHz (Overclock) sparkfun_thingplusrp2040.menu.freq.225.build.f_cpu=225000000L sparkfun_thingplusrp2040.menu.freq.240=240 MHz (Overclock) sparkfun_thingplusrp2040.menu.freq.240.build.f_cpu=240000000L sparkfun_thingplusrp2040.menu.freq.250=250 MHz (Overclock) sparkfun_thingplusrp2040.menu.freq.250.build.f_cpu=250000000L -sparkfun_thingplusrp2040.menu.freq.275=275 MHz (Overclock) -sparkfun_thingplusrp2040.menu.freq.275.build.f_cpu=275000000L +sparkfun_thingplusrp2040.menu.freq.276=276 MHz (Overclock) +sparkfun_thingplusrp2040.menu.freq.276.build.f_cpu=276000000L sparkfun_thingplusrp2040.menu.freq.300=300 MHz (Overclock) sparkfun_thingplusrp2040.menu.freq.300.build.f_cpu=300000000L sparkfun_thingplusrp2040.menu.opt.Small=Small (-Os) (standard) @@ -27134,7 +29532,7 @@ sparkfun_thingplusrp2040.menu.rtti.Enabled.build.flags.rtti= sparkfun_thingplusrp2040.menu.stackprotect.Disabled=Disabled sparkfun_thingplusrp2040.menu.stackprotect.Disabled.build.flags.stackprotect= sparkfun_thingplusrp2040.menu.stackprotect.Enabled=Enabled -sparkfun_thingplusrp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +sparkfun_thingplusrp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all sparkfun_thingplusrp2040.menu.exceptions.Disabled=Disabled sparkfun_thingplusrp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions sparkfun_thingplusrp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -27441,8 +29839,8 @@ sparkfun_thingplusrp2350.menu.freq.128=128 MHz sparkfun_thingplusrp2350.menu.freq.128.build.f_cpu=128000000L sparkfun_thingplusrp2350.menu.freq.133=133 MHz sparkfun_thingplusrp2350.menu.freq.133.build.f_cpu=133000000L -sparkfun_thingplusrp2350.menu.freq.175=175 MHz (Overclock) -sparkfun_thingplusrp2350.menu.freq.175.build.f_cpu=175000000L +sparkfun_thingplusrp2350.menu.freq.176=176 MHz (Overclock) +sparkfun_thingplusrp2350.menu.freq.176.build.f_cpu=176000000L sparkfun_thingplusrp2350.menu.freq.200=200 MHz (Overclock) sparkfun_thingplusrp2350.menu.freq.200.build.f_cpu=200000000L sparkfun_thingplusrp2350.menu.freq.225=225 MHz (Overclock) @@ -27451,8 +29849,8 @@ sparkfun_thingplusrp2350.menu.freq.240=240 MHz (Overclock) sparkfun_thingplusrp2350.menu.freq.240.build.f_cpu=240000000L sparkfun_thingplusrp2350.menu.freq.250=250 MHz (Overclock) sparkfun_thingplusrp2350.menu.freq.250.build.f_cpu=250000000L -sparkfun_thingplusrp2350.menu.freq.275=275 MHz (Overclock) -sparkfun_thingplusrp2350.menu.freq.275.build.f_cpu=275000000L +sparkfun_thingplusrp2350.menu.freq.276=276 MHz (Overclock) +sparkfun_thingplusrp2350.menu.freq.276.build.f_cpu=276000000L sparkfun_thingplusrp2350.menu.freq.300=300 MHz (Overclock) sparkfun_thingplusrp2350.menu.freq.300.build.f_cpu=300000000L sparkfun_thingplusrp2350.menu.opt.Small=Small (-Os) (standard) @@ -27480,7 +29878,7 @@ sparkfun_thingplusrp2350.menu.rtti.Enabled.build.flags.rtti= sparkfun_thingplusrp2350.menu.stackprotect.Disabled=Disabled sparkfun_thingplusrp2350.menu.stackprotect.Disabled.build.flags.stackprotect= sparkfun_thingplusrp2350.menu.stackprotect.Enabled=Enabled -sparkfun_thingplusrp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +sparkfun_thingplusrp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all sparkfun_thingplusrp2350.menu.exceptions.Disabled=Disabled sparkfun_thingplusrp2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions sparkfun_thingplusrp2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -27668,6 +30066,936 @@ sparkfun_thingplusrp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_da sparkfun_thingplusrp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap sparkfun_thingplusrp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +# ----------------------------------- +# SparkFun IoT Node LoRaWAN +# ----------------------------------- +sparkfun_iotnode_lorawanrp2350.name=SparkFun IoT Node LoRaWAN +sparkfun_iotnode_lorawanrp2350.vid.0=0x1b4f +sparkfun_iotnode_lorawanrp2350.pid.0=0x0044 +sparkfun_iotnode_lorawanrp2350.vid.1=0x1b4f +sparkfun_iotnode_lorawanrp2350.pid.1=0x0144 +sparkfun_iotnode_lorawanrp2350.vid.2=0x1b4f +sparkfun_iotnode_lorawanrp2350.pid.2=0x4044 +sparkfun_iotnode_lorawanrp2350.vid.3=0x1b4f +sparkfun_iotnode_lorawanrp2350.pid.3=0x4144 +sparkfun_iotnode_lorawanrp2350.vid.4=0x1b4f +sparkfun_iotnode_lorawanrp2350.pid.4=0x8044 +sparkfun_iotnode_lorawanrp2350.vid.5=0x1b4f +sparkfun_iotnode_lorawanrp2350.pid.5=0x8144 +sparkfun_iotnode_lorawanrp2350.vid.6=0x1b4f +sparkfun_iotnode_lorawanrp2350.pid.6=0xc044 +sparkfun_iotnode_lorawanrp2350.vid.7=0x1b4f +sparkfun_iotnode_lorawanrp2350.pid.7=0xc144 +sparkfun_iotnode_lorawanrp2350.upload_port.0.vid=0x1b4f +sparkfun_iotnode_lorawanrp2350.upload_port.0.pid=0x0044 +sparkfun_iotnode_lorawanrp2350.upload_port.1.vid=0x1b4f +sparkfun_iotnode_lorawanrp2350.upload_port.1.pid=0x0144 +sparkfun_iotnode_lorawanrp2350.upload_port.2.vid=0x1b4f +sparkfun_iotnode_lorawanrp2350.upload_port.2.pid=0x4044 +sparkfun_iotnode_lorawanrp2350.upload_port.3.vid=0x1b4f +sparkfun_iotnode_lorawanrp2350.upload_port.3.pid=0x4144 +sparkfun_iotnode_lorawanrp2350.upload_port.4.vid=0x1b4f +sparkfun_iotnode_lorawanrp2350.upload_port.4.pid=0x8044 +sparkfun_iotnode_lorawanrp2350.upload_port.5.vid=0x1b4f +sparkfun_iotnode_lorawanrp2350.upload_port.5.pid=0x8144 +sparkfun_iotnode_lorawanrp2350.upload_port.6.vid=0x1b4f +sparkfun_iotnode_lorawanrp2350.upload_port.6.pid=0xc044 +sparkfun_iotnode_lorawanrp2350.upload_port.7.vid=0x1b4f +sparkfun_iotnode_lorawanrp2350.upload_port.7.pid=0xc144 +sparkfun_iotnode_lorawanrp2350.build.usbvid=-DUSBD_VID=0x1b4f +sparkfun_iotnode_lorawanrp2350.build.usbpid=-DUSBD_PID=0x0044 +sparkfun_iotnode_lorawanrp2350.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +sparkfun_iotnode_lorawanrp2350.build.board=SPARKFUN_IOTNODE_LORAWAN_RP2350 +sparkfun_iotnode_lorawanrp2350.build.variant=sparkfun_iotnode_lorawanrp2350 +sparkfun_iotnode_lorawanrp2350.upload.maximum_size=16777216 +sparkfun_iotnode_lorawanrp2350.upload.wait_for_upload_port=true +sparkfun_iotnode_lorawanrp2350.upload.erase_cmd= +sparkfun_iotnode_lorawanrp2350.serial.disableDTR=false +sparkfun_iotnode_lorawanrp2350.serial.disableRTS=false +sparkfun_iotnode_lorawanrp2350.build.f_cpu=125000000 +sparkfun_iotnode_lorawanrp2350.build.led= +sparkfun_iotnode_lorawanrp2350.build.core=rp2040 +sparkfun_iotnode_lorawanrp2350.build.ldscript=memmap_default.ld +sparkfun_iotnode_lorawanrp2350.build.boot2=none +sparkfun_iotnode_lorawanrp2350.build.usb_manufacturer="SparkFun" +sparkfun_iotnode_lorawanrp2350.build.usb_product="IoT Node LoRaWAN" +sparkfun_iotnode_lorawanrp2350.build.psram_length=0x800000 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_0=16MB (no FS) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_0.upload.maximum_size=16769024 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_0.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_0.build.flash_length=16769024 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_0.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_0.build.fs_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_0.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_65536.upload.maximum_size=16703488 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_65536.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_65536.build.flash_length=16703488 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_65536.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_65536.build.fs_start=285138944 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_65536.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_131072.upload.maximum_size=16637952 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_131072.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_131072.build.flash_length=16637952 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_131072.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_131072.build.fs_start=285073408 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_131072.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_262144.upload.maximum_size=16506880 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_262144.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_262144.build.flash_length=16506880 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_262144.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_262144.build.fs_start=284942336 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_262144.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_524288.upload.maximum_size=16244736 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_524288.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_524288.build.flash_length=16244736 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_524288.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_524288.build.fs_start=284680192 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_524288.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_1048576.upload.maximum_size=15720448 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_1048576.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_1048576.build.flash_length=15720448 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_1048576.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_1048576.build.fs_start=284155904 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_1048576.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_2097152.upload.maximum_size=14671872 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_2097152.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_2097152.build.flash_length=14671872 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_2097152.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_2097152.build.fs_start=283107328 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_2097152.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_3145728.upload.maximum_size=13623296 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_3145728.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_3145728.build.flash_length=13623296 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_3145728.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_3145728.build.fs_start=282058752 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_3145728.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_4194304.upload.maximum_size=12574720 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_4194304.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_4194304.build.flash_length=12574720 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_4194304.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_4194304.build.fs_start=281010176 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_4194304.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_5242880.upload.maximum_size=11526144 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_5242880.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_5242880.build.flash_length=11526144 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_5242880.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_5242880.build.fs_start=279961600 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_5242880.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_6291456.upload.maximum_size=10477568 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_6291456.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_6291456.build.flash_length=10477568 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_6291456.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_6291456.build.fs_start=278913024 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_6291456.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_7340032.upload.maximum_size=9428992 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_7340032.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_7340032.build.flash_length=9428992 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_7340032.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_7340032.build.fs_start=277864448 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_7340032.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_8388608.upload.maximum_size=8380416 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_8388608.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_8388608.build.flash_length=8380416 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_8388608.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_8388608.build.fs_start=276815872 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_8388608.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_9437184.upload.maximum_size=7331840 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_9437184.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_9437184.build.flash_length=7331840 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_9437184.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_9437184.build.fs_start=275767296 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_9437184.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_10485760.upload.maximum_size=6283264 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_10485760.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_10485760.build.flash_length=6283264 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_10485760.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_10485760.build.fs_start=274718720 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_10485760.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_11534336.upload.maximum_size=5234688 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_11534336.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_11534336.build.flash_length=5234688 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_11534336.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_11534336.build.fs_start=273670144 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_11534336.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_12582912.upload.maximum_size=4186112 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_12582912.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_12582912.build.flash_length=4186112 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_12582912.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_12582912.build.fs_start=272621568 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_12582912.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_13631488.upload.maximum_size=3137536 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_13631488.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_13631488.build.flash_length=3137536 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_13631488.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_13631488.build.fs_start=271572992 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_13631488.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_14680064.upload.maximum_size=2088960 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_14680064.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_14680064.build.flash_length=2088960 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_14680064.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_14680064.build.fs_start=270524416 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_14680064.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_15728640.upload.maximum_size=1040384 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_15728640.build.flash_total=16777216 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_15728640.build.flash_length=1040384 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_15728640.build.eeprom_start=285204480 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_15728640.build.fs_start=269475840 +sparkfun_iotnode_lorawanrp2350.menu.flash.16777216_15728640.build.fs_end=285204480 +sparkfun_iotnode_lorawanrp2350.menu.arch.arm=ARM +sparkfun_iotnode_lorawanrp2350.menu.arch.arm.build.chip=rp2350 +sparkfun_iotnode_lorawanrp2350.menu.arch.arm.build.toolchain=arm-none-eabi +sparkfun_iotnode_lorawanrp2350.menu.arch.arm.build.toolchainpkg=pqt-gcc +sparkfun_iotnode_lorawanrp2350.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +sparkfun_iotnode_lorawanrp2350.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +sparkfun_iotnode_lorawanrp2350.menu.arch.arm.build.mcu=cortex-m33 +sparkfun_iotnode_lorawanrp2350.menu.arch.riscv=RISC-V +sparkfun_iotnode_lorawanrp2350.menu.arch.riscv.build.chip=rp2350-riscv +sparkfun_iotnode_lorawanrp2350.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +sparkfun_iotnode_lorawanrp2350.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +sparkfun_iotnode_lorawanrp2350.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +sparkfun_iotnode_lorawanrp2350.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +sparkfun_iotnode_lorawanrp2350.menu.arch.riscv.build.mcu=rv32imac +sparkfun_iotnode_lorawanrp2350.menu.freq.150=150 MHz +sparkfun_iotnode_lorawanrp2350.menu.freq.150.build.f_cpu=150000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.50=50 MHz +sparkfun_iotnode_lorawanrp2350.menu.freq.50.build.f_cpu=50000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.100=100 MHz +sparkfun_iotnode_lorawanrp2350.menu.freq.100.build.f_cpu=100000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.120=120 MHz +sparkfun_iotnode_lorawanrp2350.menu.freq.120.build.f_cpu=120000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.125=125 MHz +sparkfun_iotnode_lorawanrp2350.menu.freq.125.build.f_cpu=125000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.128=128 MHz +sparkfun_iotnode_lorawanrp2350.menu.freq.128.build.f_cpu=128000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.133=133 MHz +sparkfun_iotnode_lorawanrp2350.menu.freq.133.build.f_cpu=133000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.176=176 MHz (Overclock) +sparkfun_iotnode_lorawanrp2350.menu.freq.176.build.f_cpu=176000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.200=200 MHz (Overclock) +sparkfun_iotnode_lorawanrp2350.menu.freq.200.build.f_cpu=200000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.225=225 MHz (Overclock) +sparkfun_iotnode_lorawanrp2350.menu.freq.225.build.f_cpu=225000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.240=240 MHz (Overclock) +sparkfun_iotnode_lorawanrp2350.menu.freq.240.build.f_cpu=240000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.250=250 MHz (Overclock) +sparkfun_iotnode_lorawanrp2350.menu.freq.250.build.f_cpu=250000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.276=276 MHz (Overclock) +sparkfun_iotnode_lorawanrp2350.menu.freq.276.build.f_cpu=276000000L +sparkfun_iotnode_lorawanrp2350.menu.freq.300=300 MHz (Overclock) +sparkfun_iotnode_lorawanrp2350.menu.freq.300.build.f_cpu=300000000L +sparkfun_iotnode_lorawanrp2350.menu.opt.Small=Small (-Os) (standard) +sparkfun_iotnode_lorawanrp2350.menu.opt.Small.build.flags.optimize=-Os +sparkfun_iotnode_lorawanrp2350.menu.opt.Optimize=Optimize (-O) +sparkfun_iotnode_lorawanrp2350.menu.opt.Optimize.build.flags.optimize=-O +sparkfun_iotnode_lorawanrp2350.menu.opt.Optimize2=Optimize More (-O2) +sparkfun_iotnode_lorawanrp2350.menu.opt.Optimize2.build.flags.optimize=-O2 +sparkfun_iotnode_lorawanrp2350.menu.opt.Optimize3=Optimize Even More (-O3) +sparkfun_iotnode_lorawanrp2350.menu.opt.Optimize3.build.flags.optimize=-O3 +sparkfun_iotnode_lorawanrp2350.menu.opt.Fast=Fast (-Ofast) (maybe slower) +sparkfun_iotnode_lorawanrp2350.menu.opt.Fast.build.flags.optimize=-Ofast +sparkfun_iotnode_lorawanrp2350.menu.opt.Debug=Debug (-Og) +sparkfun_iotnode_lorawanrp2350.menu.opt.Debug.build.flags.optimize=-Og +sparkfun_iotnode_lorawanrp2350.menu.opt.Disabled=Disabled (-O0) +sparkfun_iotnode_lorawanrp2350.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_iotnode_lorawanrp2350.menu.profile.Disabled=Disabled +sparkfun_iotnode_lorawanrp2350.menu.profile.Disabled.build.flags.profile= +sparkfun_iotnode_lorawanrp2350.menu.profile.Enabled=Enabled +sparkfun_iotnode_lorawanrp2350.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +sparkfun_iotnode_lorawanrp2350.menu.rtti.Disabled=Disabled +sparkfun_iotnode_lorawanrp2350.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +sparkfun_iotnode_lorawanrp2350.menu.rtti.Enabled=Enabled +sparkfun_iotnode_lorawanrp2350.menu.rtti.Enabled.build.flags.rtti= +sparkfun_iotnode_lorawanrp2350.menu.stackprotect.Disabled=Disabled +sparkfun_iotnode_lorawanrp2350.menu.stackprotect.Disabled.build.flags.stackprotect= +sparkfun_iotnode_lorawanrp2350.menu.stackprotect.Enabled=Enabled +sparkfun_iotnode_lorawanrp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +sparkfun_iotnode_lorawanrp2350.menu.exceptions.Disabled=Disabled +sparkfun_iotnode_lorawanrp2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +sparkfun_iotnode_lorawanrp2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +sparkfun_iotnode_lorawanrp2350.menu.exceptions.Enabled=Enabled +sparkfun_iotnode_lorawanrp2350.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +sparkfun_iotnode_lorawanrp2350.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +sparkfun_iotnode_lorawanrp2350.menu.dbgport.Disabled=Disabled +sparkfun_iotnode_lorawanrp2350.menu.dbgport.Disabled.build.debug_port= +sparkfun_iotnode_lorawanrp2350.menu.dbgport.Serial=Serial +sparkfun_iotnode_lorawanrp2350.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +sparkfun_iotnode_lorawanrp2350.menu.dbgport.Serial1=Serial1 +sparkfun_iotnode_lorawanrp2350.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +sparkfun_iotnode_lorawanrp2350.menu.dbgport.Serial2=Serial2 +sparkfun_iotnode_lorawanrp2350.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +sparkfun_iotnode_lorawanrp2350.menu.dbgport.SerialSemi=SerialSemi +sparkfun_iotnode_lorawanrp2350.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.None=None +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.None.build.debug_level= +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.Core=Core +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.SPI=SPI +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.Wire=Wire +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.Bluetooth=Bluetooth +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.All=All +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.NDEBUG=NDEBUG +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +sparkfun_iotnode_lorawanrp2350.menu.usbstack.picosdk=Pico SDK +sparkfun_iotnode_lorawanrp2350.menu.usbstack.picosdk.build.usbstack_flags= +sparkfun_iotnode_lorawanrp2350.menu.usbstack.tinyusb=Adafruit TinyUSB +sparkfun_iotnode_lorawanrp2350.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +sparkfun_iotnode_lorawanrp2350.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +sparkfun_iotnode_lorawanrp2350.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +sparkfun_iotnode_lorawanrp2350.menu.usbstack.nousb=No USB +sparkfun_iotnode_lorawanrp2350.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4only=IPv4 Only +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +sparkfun_iotnode_lorawanrp2350.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.default=Default (UF2) +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.default.build.ram_length=512k +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.default.upload.maximum_data_size=524288 +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.default.upload.tool=uf2conv +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.default.upload.tool.default=uf2conv +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.default.upload.tool.network=uf2conv-network +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picotool=Picotool +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picotool.build.ram_length=512k +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picotool.upload.tool=picotool +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picotool.upload.tool.default=picotool +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +sparkfun_iotnode_lorawanrp2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + +# ----------------------------------- +# SparkFun XRP Controller (Beta) +# ----------------------------------- +sparkfun_xrp_controller_beta.name=SparkFun XRP Controller (Beta) +sparkfun_xrp_controller_beta.vid.0=0x1b4f +sparkfun_xrp_controller_beta.pid.0=0x0045 +sparkfun_xrp_controller_beta.vid.1=0x1b4f +sparkfun_xrp_controller_beta.pid.1=0x0145 +sparkfun_xrp_controller_beta.vid.2=0x1b4f +sparkfun_xrp_controller_beta.pid.2=0x4045 +sparkfun_xrp_controller_beta.vid.3=0x1b4f +sparkfun_xrp_controller_beta.pid.3=0x4145 +sparkfun_xrp_controller_beta.vid.4=0x1b4f +sparkfun_xrp_controller_beta.pid.4=0x8045 +sparkfun_xrp_controller_beta.vid.5=0x1b4f +sparkfun_xrp_controller_beta.pid.5=0x8145 +sparkfun_xrp_controller_beta.vid.6=0x1b4f +sparkfun_xrp_controller_beta.pid.6=0xc045 +sparkfun_xrp_controller_beta.vid.7=0x1b4f +sparkfun_xrp_controller_beta.pid.7=0xc145 +sparkfun_xrp_controller_beta.upload_port.0.vid=0x1b4f +sparkfun_xrp_controller_beta.upload_port.0.pid=0x0045 +sparkfun_xrp_controller_beta.upload_port.1.vid=0x1b4f +sparkfun_xrp_controller_beta.upload_port.1.pid=0x0145 +sparkfun_xrp_controller_beta.upload_port.2.vid=0x1b4f +sparkfun_xrp_controller_beta.upload_port.2.pid=0x4045 +sparkfun_xrp_controller_beta.upload_port.3.vid=0x1b4f +sparkfun_xrp_controller_beta.upload_port.3.pid=0x4145 +sparkfun_xrp_controller_beta.upload_port.4.vid=0x1b4f +sparkfun_xrp_controller_beta.upload_port.4.pid=0x8045 +sparkfun_xrp_controller_beta.upload_port.5.vid=0x1b4f +sparkfun_xrp_controller_beta.upload_port.5.pid=0x8145 +sparkfun_xrp_controller_beta.upload_port.6.vid=0x1b4f +sparkfun_xrp_controller_beta.upload_port.6.pid=0xc045 +sparkfun_xrp_controller_beta.upload_port.7.vid=0x1b4f +sparkfun_xrp_controller_beta.upload_port.7.pid=0xc145 +sparkfun_xrp_controller_beta.build.usbvid=-DUSBD_VID=0x1b4f +sparkfun_xrp_controller_beta.build.usbpid=-DUSBD_PID=0x0045 +sparkfun_xrp_controller_beta.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +sparkfun_xrp_controller_beta.build.board=SPARKFUN_XRP_CONTROLLER_BETA +sparkfun_xrp_controller_beta.build.mcu=cortex-m0plus +sparkfun_xrp_controller_beta.build.chip=rp2040 +sparkfun_xrp_controller_beta.build.toolchain=arm-none-eabi +sparkfun_xrp_controller_beta.build.toolchainpkg=pqt-gcc +sparkfun_xrp_controller_beta.build.toolchainopts=-march=armv6-m -mcpu=cortex-m0plus -mthumb +sparkfun_xrp_controller_beta.build.uf2family=--family rp2040 +sparkfun_xrp_controller_beta.build.variant=sparkfun_xrp_controller_beta +sparkfun_xrp_controller_beta.upload.maximum_size=2097152 +sparkfun_xrp_controller_beta.upload.wait_for_upload_port=true +sparkfun_xrp_controller_beta.upload.erase_cmd= +sparkfun_xrp_controller_beta.serial.disableDTR=false +sparkfun_xrp_controller_beta.serial.disableRTS=false +sparkfun_xrp_controller_beta.build.f_cpu=125000000 +sparkfun_xrp_controller_beta.build.led= +sparkfun_xrp_controller_beta.build.core=rp2040 +sparkfun_xrp_controller_beta.build.ldscript=memmap_default.ld +sparkfun_xrp_controller_beta.build.boot2=boot2_w25q080_2_padded_checksum +sparkfun_xrp_controller_beta.build.usb_manufacturer="SparkFun" +sparkfun_xrp_controller_beta.build.usb_product="XRP Controller (Beta)" +sparkfun_xrp_controller_beta.build.extra_flags=-DPICO_CYW43_SUPPORTED=1 -DCYW43_PIN_WL_DYNAMIC=1 +sparkfun_xrp_controller_beta.menu.flash.2097152_0=2MB (no FS) +sparkfun_xrp_controller_beta.menu.flash.2097152_0.upload.maximum_size=2093056 +sparkfun_xrp_controller_beta.menu.flash.2097152_0.build.flash_total=2097152 +sparkfun_xrp_controller_beta.menu.flash.2097152_0.build.flash_length=2093056 +sparkfun_xrp_controller_beta.menu.flash.2097152_0.build.eeprom_start=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_0.build.fs_start=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_0.build.fs_end=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +sparkfun_xrp_controller_beta.menu.flash.2097152_65536.upload.maximum_size=2027520 +sparkfun_xrp_controller_beta.menu.flash.2097152_65536.build.flash_total=2097152 +sparkfun_xrp_controller_beta.menu.flash.2097152_65536.build.flash_length=2027520 +sparkfun_xrp_controller_beta.menu.flash.2097152_65536.build.eeprom_start=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_65536.build.fs_start=270462976 +sparkfun_xrp_controller_beta.menu.flash.2097152_65536.build.fs_end=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +sparkfun_xrp_controller_beta.menu.flash.2097152_131072.upload.maximum_size=1961984 +sparkfun_xrp_controller_beta.menu.flash.2097152_131072.build.flash_total=2097152 +sparkfun_xrp_controller_beta.menu.flash.2097152_131072.build.flash_length=1961984 +sparkfun_xrp_controller_beta.menu.flash.2097152_131072.build.eeprom_start=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_131072.build.fs_start=270397440 +sparkfun_xrp_controller_beta.menu.flash.2097152_131072.build.fs_end=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +sparkfun_xrp_controller_beta.menu.flash.2097152_262144.upload.maximum_size=1830912 +sparkfun_xrp_controller_beta.menu.flash.2097152_262144.build.flash_total=2097152 +sparkfun_xrp_controller_beta.menu.flash.2097152_262144.build.flash_length=1830912 +sparkfun_xrp_controller_beta.menu.flash.2097152_262144.build.eeprom_start=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_262144.build.fs_start=270266368 +sparkfun_xrp_controller_beta.menu.flash.2097152_262144.build.fs_end=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +sparkfun_xrp_controller_beta.menu.flash.2097152_524288.upload.maximum_size=1568768 +sparkfun_xrp_controller_beta.menu.flash.2097152_524288.build.flash_total=2097152 +sparkfun_xrp_controller_beta.menu.flash.2097152_524288.build.flash_length=1568768 +sparkfun_xrp_controller_beta.menu.flash.2097152_524288.build.eeprom_start=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_524288.build.fs_start=270004224 +sparkfun_xrp_controller_beta.menu.flash.2097152_524288.build.fs_end=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) +sparkfun_xrp_controller_beta.menu.flash.2097152_1048576.upload.maximum_size=1044480 +sparkfun_xrp_controller_beta.menu.flash.2097152_1048576.build.flash_total=2097152 +sparkfun_xrp_controller_beta.menu.flash.2097152_1048576.build.flash_length=1044480 +sparkfun_xrp_controller_beta.menu.flash.2097152_1048576.build.eeprom_start=270528512 +sparkfun_xrp_controller_beta.menu.flash.2097152_1048576.build.fs_start=269479936 +sparkfun_xrp_controller_beta.menu.flash.2097152_1048576.build.fs_end=270528512 +sparkfun_xrp_controller_beta.menu.freq.200=200 MHz +sparkfun_xrp_controller_beta.menu.freq.200.build.f_cpu=200000000L +sparkfun_xrp_controller_beta.menu.freq.50=50 MHz +sparkfun_xrp_controller_beta.menu.freq.50.build.f_cpu=50000000L +sparkfun_xrp_controller_beta.menu.freq.100=100 MHz +sparkfun_xrp_controller_beta.menu.freq.100.build.f_cpu=100000000L +sparkfun_xrp_controller_beta.menu.freq.120=120 MHz +sparkfun_xrp_controller_beta.menu.freq.120.build.f_cpu=120000000L +sparkfun_xrp_controller_beta.menu.freq.125=125 MHz +sparkfun_xrp_controller_beta.menu.freq.125.build.f_cpu=125000000L +sparkfun_xrp_controller_beta.menu.freq.128=128 MHz +sparkfun_xrp_controller_beta.menu.freq.128.build.f_cpu=128000000L +sparkfun_xrp_controller_beta.menu.freq.133=133 MHz +sparkfun_xrp_controller_beta.menu.freq.133.build.f_cpu=133000000L +sparkfun_xrp_controller_beta.menu.freq.150=150 MHz +sparkfun_xrp_controller_beta.menu.freq.150.build.f_cpu=150000000L +sparkfun_xrp_controller_beta.menu.freq.176=176 MHz +sparkfun_xrp_controller_beta.menu.freq.176.build.f_cpu=176000000L +sparkfun_xrp_controller_beta.menu.freq.225=225 MHz (Overclock) +sparkfun_xrp_controller_beta.menu.freq.225.build.f_cpu=225000000L +sparkfun_xrp_controller_beta.menu.freq.240=240 MHz (Overclock) +sparkfun_xrp_controller_beta.menu.freq.240.build.f_cpu=240000000L +sparkfun_xrp_controller_beta.menu.freq.250=250 MHz (Overclock) +sparkfun_xrp_controller_beta.menu.freq.250.build.f_cpu=250000000L +sparkfun_xrp_controller_beta.menu.freq.276=276 MHz (Overclock) +sparkfun_xrp_controller_beta.menu.freq.276.build.f_cpu=276000000L +sparkfun_xrp_controller_beta.menu.freq.300=300 MHz (Overclock) +sparkfun_xrp_controller_beta.menu.freq.300.build.f_cpu=300000000L +sparkfun_xrp_controller_beta.menu.opt.Small=Small (-Os) (standard) +sparkfun_xrp_controller_beta.menu.opt.Small.build.flags.optimize=-Os +sparkfun_xrp_controller_beta.menu.opt.Optimize=Optimize (-O) +sparkfun_xrp_controller_beta.menu.opt.Optimize.build.flags.optimize=-O +sparkfun_xrp_controller_beta.menu.opt.Optimize2=Optimize More (-O2) +sparkfun_xrp_controller_beta.menu.opt.Optimize2.build.flags.optimize=-O2 +sparkfun_xrp_controller_beta.menu.opt.Optimize3=Optimize Even More (-O3) +sparkfun_xrp_controller_beta.menu.opt.Optimize3.build.flags.optimize=-O3 +sparkfun_xrp_controller_beta.menu.opt.Fast=Fast (-Ofast) (maybe slower) +sparkfun_xrp_controller_beta.menu.opt.Fast.build.flags.optimize=-Ofast +sparkfun_xrp_controller_beta.menu.opt.Debug=Debug (-Og) +sparkfun_xrp_controller_beta.menu.opt.Debug.build.flags.optimize=-Og +sparkfun_xrp_controller_beta.menu.opt.Disabled=Disabled (-O0) +sparkfun_xrp_controller_beta.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_xrp_controller_beta.menu.profile.Disabled=Disabled +sparkfun_xrp_controller_beta.menu.profile.Disabled.build.flags.profile= +sparkfun_xrp_controller_beta.menu.profile.Enabled=Enabled +sparkfun_xrp_controller_beta.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +sparkfun_xrp_controller_beta.menu.rtti.Disabled=Disabled +sparkfun_xrp_controller_beta.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +sparkfun_xrp_controller_beta.menu.rtti.Enabled=Enabled +sparkfun_xrp_controller_beta.menu.rtti.Enabled.build.flags.rtti= +sparkfun_xrp_controller_beta.menu.stackprotect.Disabled=Disabled +sparkfun_xrp_controller_beta.menu.stackprotect.Disabled.build.flags.stackprotect= +sparkfun_xrp_controller_beta.menu.stackprotect.Enabled=Enabled +sparkfun_xrp_controller_beta.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +sparkfun_xrp_controller_beta.menu.exceptions.Disabled=Disabled +sparkfun_xrp_controller_beta.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +sparkfun_xrp_controller_beta.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +sparkfun_xrp_controller_beta.menu.exceptions.Enabled=Enabled +sparkfun_xrp_controller_beta.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +sparkfun_xrp_controller_beta.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +sparkfun_xrp_controller_beta.menu.dbgport.Disabled=Disabled +sparkfun_xrp_controller_beta.menu.dbgport.Disabled.build.debug_port= +sparkfun_xrp_controller_beta.menu.dbgport.Serial=Serial +sparkfun_xrp_controller_beta.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +sparkfun_xrp_controller_beta.menu.dbgport.Serial1=Serial1 +sparkfun_xrp_controller_beta.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +sparkfun_xrp_controller_beta.menu.dbgport.Serial2=Serial2 +sparkfun_xrp_controller_beta.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +sparkfun_xrp_controller_beta.menu.dbgport.SerialSemi=SerialSemi +sparkfun_xrp_controller_beta.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +sparkfun_xrp_controller_beta.menu.dbglvl.None=None +sparkfun_xrp_controller_beta.menu.dbglvl.None.build.debug_level= +sparkfun_xrp_controller_beta.menu.dbglvl.Core=Core +sparkfun_xrp_controller_beta.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +sparkfun_xrp_controller_beta.menu.dbglvl.SPI=SPI +sparkfun_xrp_controller_beta.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +sparkfun_xrp_controller_beta.menu.dbglvl.Wire=Wire +sparkfun_xrp_controller_beta.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +sparkfun_xrp_controller_beta.menu.dbglvl.Bluetooth=Bluetooth +sparkfun_xrp_controller_beta.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_xrp_controller_beta.menu.dbglvl.All=All +sparkfun_xrp_controller_beta.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_xrp_controller_beta.menu.dbglvl.NDEBUG=NDEBUG +sparkfun_xrp_controller_beta.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +sparkfun_xrp_controller_beta.menu.usbstack.picosdk=Pico SDK +sparkfun_xrp_controller_beta.menu.usbstack.picosdk.build.usbstack_flags= +sparkfun_xrp_controller_beta.menu.usbstack.tinyusb=Adafruit TinyUSB +sparkfun_xrp_controller_beta.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +sparkfun_xrp_controller_beta.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +sparkfun_xrp_controller_beta.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +sparkfun_xrp_controller_beta.menu.usbstack.nousb=No USB +sparkfun_xrp_controller_beta.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4only=IPv4 Only +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +sparkfun_xrp_controller_beta.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +sparkfun_xrp_controller_beta.menu.uploadmethod.default=Default (UF2) +sparkfun_xrp_controller_beta.menu.uploadmethod.default.build.ram_length=256k +sparkfun_xrp_controller_beta.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +sparkfun_xrp_controller_beta.menu.uploadmethod.default.upload.maximum_data_size=262144 +sparkfun_xrp_controller_beta.menu.uploadmethod.default.upload.tool=uf2conv +sparkfun_xrp_controller_beta.menu.uploadmethod.default.upload.tool.default=uf2conv +sparkfun_xrp_controller_beta.menu.uploadmethod.default.upload.tool.network=uf2conv-network +sparkfun_xrp_controller_beta.menu.uploadmethod.picotool=Picotool +sparkfun_xrp_controller_beta.menu.uploadmethod.picotool.build.ram_length=256k +sparkfun_xrp_controller_beta.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +sparkfun_xrp_controller_beta.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +sparkfun_xrp_controller_beta.menu.uploadmethod.picotool.upload.maximum_data_size=262144 +sparkfun_xrp_controller_beta.menu.uploadmethod.picotool.upload.tool=picotool +sparkfun_xrp_controller_beta.menu.uploadmethod.picotool.upload.tool.default=picotool +sparkfun_xrp_controller_beta.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +sparkfun_xrp_controller_beta.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k +sparkfun_xrp_controller_beta.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +sparkfun_xrp_controller_beta.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 +sparkfun_xrp_controller_beta.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +sparkfun_xrp_controller_beta.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + +# ----------------------------------- +# SparkFun XRP Controller +# ----------------------------------- +sparkfun_xrp_controller.name=SparkFun XRP Controller +sparkfun_xrp_controller.vid.0=0x1b4f +sparkfun_xrp_controller.pid.0=0x0046 +sparkfun_xrp_controller.vid.1=0x1b4f +sparkfun_xrp_controller.pid.1=0x0146 +sparkfun_xrp_controller.vid.2=0x1b4f +sparkfun_xrp_controller.pid.2=0x4046 +sparkfun_xrp_controller.vid.3=0x1b4f +sparkfun_xrp_controller.pid.3=0x4146 +sparkfun_xrp_controller.vid.4=0x1b4f +sparkfun_xrp_controller.pid.4=0x8046 +sparkfun_xrp_controller.vid.5=0x1b4f +sparkfun_xrp_controller.pid.5=0x8146 +sparkfun_xrp_controller.vid.6=0x1b4f +sparkfun_xrp_controller.pid.6=0xc046 +sparkfun_xrp_controller.vid.7=0x1b4f +sparkfun_xrp_controller.pid.7=0xc146 +sparkfun_xrp_controller.upload_port.0.vid=0x1b4f +sparkfun_xrp_controller.upload_port.0.pid=0x0046 +sparkfun_xrp_controller.upload_port.1.vid=0x1b4f +sparkfun_xrp_controller.upload_port.1.pid=0x0146 +sparkfun_xrp_controller.upload_port.2.vid=0x1b4f +sparkfun_xrp_controller.upload_port.2.pid=0x4046 +sparkfun_xrp_controller.upload_port.3.vid=0x1b4f +sparkfun_xrp_controller.upload_port.3.pid=0x4146 +sparkfun_xrp_controller.upload_port.4.vid=0x1b4f +sparkfun_xrp_controller.upload_port.4.pid=0x8046 +sparkfun_xrp_controller.upload_port.5.vid=0x1b4f +sparkfun_xrp_controller.upload_port.5.pid=0x8146 +sparkfun_xrp_controller.upload_port.6.vid=0x1b4f +sparkfun_xrp_controller.upload_port.6.pid=0xc046 +sparkfun_xrp_controller.upload_port.7.vid=0x1b4f +sparkfun_xrp_controller.upload_port.7.pid=0xc146 +sparkfun_xrp_controller.build.usbvid=-DUSBD_VID=0x1b4f +sparkfun_xrp_controller.build.usbpid=-DUSBD_PID=0x0046 +sparkfun_xrp_controller.build.usbpwr=-DUSBD_MAX_POWER_MA=250 +sparkfun_xrp_controller.build.board=SPARKFUN_XRP_CONTROLLER +sparkfun_xrp_controller.build.variant=sparkfun_xrp_controller +sparkfun_xrp_controller.upload.maximum_size=16777216 +sparkfun_xrp_controller.upload.wait_for_upload_port=true +sparkfun_xrp_controller.upload.erase_cmd= +sparkfun_xrp_controller.serial.disableDTR=false +sparkfun_xrp_controller.serial.disableRTS=false +sparkfun_xrp_controller.build.f_cpu=125000000 +sparkfun_xrp_controller.build.led= +sparkfun_xrp_controller.build.core=rp2040 +sparkfun_xrp_controller.build.ldscript=memmap_default.ld +sparkfun_xrp_controller.build.boot2=none +sparkfun_xrp_controller.build.usb_manufacturer="SparkFun" +sparkfun_xrp_controller.build.usb_product="XRP Controller" +sparkfun_xrp_controller.build.psram_length=0x800000 +sparkfun_xrp_controller.build.extra_flags=-DPICO_CYW43_SUPPORTED=1 -DCYW43_PIN_WL_DYNAMIC=1 +sparkfun_xrp_controller.menu.flash.16777216_0=16MB (no FS) +sparkfun_xrp_controller.menu.flash.16777216_0.upload.maximum_size=16769024 +sparkfun_xrp_controller.menu.flash.16777216_0.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_0.build.flash_length=16769024 +sparkfun_xrp_controller.menu.flash.16777216_0.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_0.build.fs_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_0.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB) +sparkfun_xrp_controller.menu.flash.16777216_65536.upload.maximum_size=16703488 +sparkfun_xrp_controller.menu.flash.16777216_65536.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_65536.build.flash_length=16703488 +sparkfun_xrp_controller.menu.flash.16777216_65536.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_65536.build.fs_start=285138944 +sparkfun_xrp_controller.menu.flash.16777216_65536.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB) +sparkfun_xrp_controller.menu.flash.16777216_131072.upload.maximum_size=16637952 +sparkfun_xrp_controller.menu.flash.16777216_131072.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_131072.build.flash_length=16637952 +sparkfun_xrp_controller.menu.flash.16777216_131072.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_131072.build.fs_start=285073408 +sparkfun_xrp_controller.menu.flash.16777216_131072.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB) +sparkfun_xrp_controller.menu.flash.16777216_262144.upload.maximum_size=16506880 +sparkfun_xrp_controller.menu.flash.16777216_262144.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_262144.build.flash_length=16506880 +sparkfun_xrp_controller.menu.flash.16777216_262144.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_262144.build.fs_start=284942336 +sparkfun_xrp_controller.menu.flash.16777216_262144.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB) +sparkfun_xrp_controller.menu.flash.16777216_524288.upload.maximum_size=16244736 +sparkfun_xrp_controller.menu.flash.16777216_524288.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_524288.build.flash_length=16244736 +sparkfun_xrp_controller.menu.flash.16777216_524288.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_524288.build.fs_start=284680192 +sparkfun_xrp_controller.menu.flash.16777216_524288.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB) +sparkfun_xrp_controller.menu.flash.16777216_1048576.upload.maximum_size=15720448 +sparkfun_xrp_controller.menu.flash.16777216_1048576.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_1048576.build.flash_length=15720448 +sparkfun_xrp_controller.menu.flash.16777216_1048576.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_1048576.build.fs_start=284155904 +sparkfun_xrp_controller.menu.flash.16777216_1048576.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) +sparkfun_xrp_controller.menu.flash.16777216_2097152.upload.maximum_size=14671872 +sparkfun_xrp_controller.menu.flash.16777216_2097152.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_2097152.build.flash_length=14671872 +sparkfun_xrp_controller.menu.flash.16777216_2097152.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_2097152.build.fs_start=283107328 +sparkfun_xrp_controller.menu.flash.16777216_2097152.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB) +sparkfun_xrp_controller.menu.flash.16777216_3145728.upload.maximum_size=13623296 +sparkfun_xrp_controller.menu.flash.16777216_3145728.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_3145728.build.flash_length=13623296 +sparkfun_xrp_controller.menu.flash.16777216_3145728.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_3145728.build.fs_start=282058752 +sparkfun_xrp_controller.menu.flash.16777216_3145728.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) +sparkfun_xrp_controller.menu.flash.16777216_4194304.upload.maximum_size=12574720 +sparkfun_xrp_controller.menu.flash.16777216_4194304.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_4194304.build.flash_length=12574720 +sparkfun_xrp_controller.menu.flash.16777216_4194304.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_4194304.build.fs_start=281010176 +sparkfun_xrp_controller.menu.flash.16777216_4194304.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB) +sparkfun_xrp_controller.menu.flash.16777216_5242880.upload.maximum_size=11526144 +sparkfun_xrp_controller.menu.flash.16777216_5242880.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_5242880.build.flash_length=11526144 +sparkfun_xrp_controller.menu.flash.16777216_5242880.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_5242880.build.fs_start=279961600 +sparkfun_xrp_controller.menu.flash.16777216_5242880.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB) +sparkfun_xrp_controller.menu.flash.16777216_6291456.upload.maximum_size=10477568 +sparkfun_xrp_controller.menu.flash.16777216_6291456.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_6291456.build.flash_length=10477568 +sparkfun_xrp_controller.menu.flash.16777216_6291456.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_6291456.build.fs_start=278913024 +sparkfun_xrp_controller.menu.flash.16777216_6291456.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB) +sparkfun_xrp_controller.menu.flash.16777216_7340032.upload.maximum_size=9428992 +sparkfun_xrp_controller.menu.flash.16777216_7340032.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_7340032.build.flash_length=9428992 +sparkfun_xrp_controller.menu.flash.16777216_7340032.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_7340032.build.fs_start=277864448 +sparkfun_xrp_controller.menu.flash.16777216_7340032.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) +sparkfun_xrp_controller.menu.flash.16777216_8388608.upload.maximum_size=8380416 +sparkfun_xrp_controller.menu.flash.16777216_8388608.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_8388608.build.flash_length=8380416 +sparkfun_xrp_controller.menu.flash.16777216_8388608.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_8388608.build.fs_start=276815872 +sparkfun_xrp_controller.menu.flash.16777216_8388608.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB) +sparkfun_xrp_controller.menu.flash.16777216_9437184.upload.maximum_size=7331840 +sparkfun_xrp_controller.menu.flash.16777216_9437184.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_9437184.build.flash_length=7331840 +sparkfun_xrp_controller.menu.flash.16777216_9437184.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_9437184.build.fs_start=275767296 +sparkfun_xrp_controller.menu.flash.16777216_9437184.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB) +sparkfun_xrp_controller.menu.flash.16777216_10485760.upload.maximum_size=6283264 +sparkfun_xrp_controller.menu.flash.16777216_10485760.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_10485760.build.flash_length=6283264 +sparkfun_xrp_controller.menu.flash.16777216_10485760.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_10485760.build.fs_start=274718720 +sparkfun_xrp_controller.menu.flash.16777216_10485760.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB) +sparkfun_xrp_controller.menu.flash.16777216_11534336.upload.maximum_size=5234688 +sparkfun_xrp_controller.menu.flash.16777216_11534336.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_11534336.build.flash_length=5234688 +sparkfun_xrp_controller.menu.flash.16777216_11534336.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_11534336.build.fs_start=273670144 +sparkfun_xrp_controller.menu.flash.16777216_11534336.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) +sparkfun_xrp_controller.menu.flash.16777216_12582912.upload.maximum_size=4186112 +sparkfun_xrp_controller.menu.flash.16777216_12582912.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_12582912.build.flash_length=4186112 +sparkfun_xrp_controller.menu.flash.16777216_12582912.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_12582912.build.fs_start=272621568 +sparkfun_xrp_controller.menu.flash.16777216_12582912.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB) +sparkfun_xrp_controller.menu.flash.16777216_13631488.upload.maximum_size=3137536 +sparkfun_xrp_controller.menu.flash.16777216_13631488.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_13631488.build.flash_length=3137536 +sparkfun_xrp_controller.menu.flash.16777216_13631488.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_13631488.build.fs_start=271572992 +sparkfun_xrp_controller.menu.flash.16777216_13631488.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) +sparkfun_xrp_controller.menu.flash.16777216_14680064.upload.maximum_size=2088960 +sparkfun_xrp_controller.menu.flash.16777216_14680064.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_14680064.build.flash_length=2088960 +sparkfun_xrp_controller.menu.flash.16777216_14680064.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_14680064.build.fs_start=270524416 +sparkfun_xrp_controller.menu.flash.16777216_14680064.build.fs_end=285204480 +sparkfun_xrp_controller.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) +sparkfun_xrp_controller.menu.flash.16777216_15728640.upload.maximum_size=1040384 +sparkfun_xrp_controller.menu.flash.16777216_15728640.build.flash_total=16777216 +sparkfun_xrp_controller.menu.flash.16777216_15728640.build.flash_length=1040384 +sparkfun_xrp_controller.menu.flash.16777216_15728640.build.eeprom_start=285204480 +sparkfun_xrp_controller.menu.flash.16777216_15728640.build.fs_start=269475840 +sparkfun_xrp_controller.menu.flash.16777216_15728640.build.fs_end=285204480 +sparkfun_xrp_controller.menu.arch.arm=ARM +sparkfun_xrp_controller.menu.arch.arm.build.chip=rp2350 +sparkfun_xrp_controller.menu.arch.arm.build.toolchain=arm-none-eabi +sparkfun_xrp_controller.menu.arch.arm.build.toolchainpkg=pqt-gcc +sparkfun_xrp_controller.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +sparkfun_xrp_controller.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +sparkfun_xrp_controller.menu.arch.arm.build.mcu=cortex-m33 +sparkfun_xrp_controller.menu.arch.riscv=RISC-V +sparkfun_xrp_controller.menu.arch.riscv.build.chip=rp2350-riscv +sparkfun_xrp_controller.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +sparkfun_xrp_controller.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +sparkfun_xrp_controller.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +sparkfun_xrp_controller.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +sparkfun_xrp_controller.menu.arch.riscv.build.mcu=rv32imac +sparkfun_xrp_controller.menu.freq.150=150 MHz +sparkfun_xrp_controller.menu.freq.150.build.f_cpu=150000000L +sparkfun_xrp_controller.menu.freq.50=50 MHz +sparkfun_xrp_controller.menu.freq.50.build.f_cpu=50000000L +sparkfun_xrp_controller.menu.freq.100=100 MHz +sparkfun_xrp_controller.menu.freq.100.build.f_cpu=100000000L +sparkfun_xrp_controller.menu.freq.120=120 MHz +sparkfun_xrp_controller.menu.freq.120.build.f_cpu=120000000L +sparkfun_xrp_controller.menu.freq.125=125 MHz +sparkfun_xrp_controller.menu.freq.125.build.f_cpu=125000000L +sparkfun_xrp_controller.menu.freq.128=128 MHz +sparkfun_xrp_controller.menu.freq.128.build.f_cpu=128000000L +sparkfun_xrp_controller.menu.freq.133=133 MHz +sparkfun_xrp_controller.menu.freq.133.build.f_cpu=133000000L +sparkfun_xrp_controller.menu.freq.176=176 MHz (Overclock) +sparkfun_xrp_controller.menu.freq.176.build.f_cpu=176000000L +sparkfun_xrp_controller.menu.freq.200=200 MHz (Overclock) +sparkfun_xrp_controller.menu.freq.200.build.f_cpu=200000000L +sparkfun_xrp_controller.menu.freq.225=225 MHz (Overclock) +sparkfun_xrp_controller.menu.freq.225.build.f_cpu=225000000L +sparkfun_xrp_controller.menu.freq.240=240 MHz (Overclock) +sparkfun_xrp_controller.menu.freq.240.build.f_cpu=240000000L +sparkfun_xrp_controller.menu.freq.250=250 MHz (Overclock) +sparkfun_xrp_controller.menu.freq.250.build.f_cpu=250000000L +sparkfun_xrp_controller.menu.freq.276=276 MHz (Overclock) +sparkfun_xrp_controller.menu.freq.276.build.f_cpu=276000000L +sparkfun_xrp_controller.menu.freq.300=300 MHz (Overclock) +sparkfun_xrp_controller.menu.freq.300.build.f_cpu=300000000L +sparkfun_xrp_controller.menu.opt.Small=Small (-Os) (standard) +sparkfun_xrp_controller.menu.opt.Small.build.flags.optimize=-Os +sparkfun_xrp_controller.menu.opt.Optimize=Optimize (-O) +sparkfun_xrp_controller.menu.opt.Optimize.build.flags.optimize=-O +sparkfun_xrp_controller.menu.opt.Optimize2=Optimize More (-O2) +sparkfun_xrp_controller.menu.opt.Optimize2.build.flags.optimize=-O2 +sparkfun_xrp_controller.menu.opt.Optimize3=Optimize Even More (-O3) +sparkfun_xrp_controller.menu.opt.Optimize3.build.flags.optimize=-O3 +sparkfun_xrp_controller.menu.opt.Fast=Fast (-Ofast) (maybe slower) +sparkfun_xrp_controller.menu.opt.Fast.build.flags.optimize=-Ofast +sparkfun_xrp_controller.menu.opt.Debug=Debug (-Og) +sparkfun_xrp_controller.menu.opt.Debug.build.flags.optimize=-Og +sparkfun_xrp_controller.menu.opt.Disabled=Disabled (-O0) +sparkfun_xrp_controller.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_xrp_controller.menu.profile.Disabled=Disabled +sparkfun_xrp_controller.menu.profile.Disabled.build.flags.profile= +sparkfun_xrp_controller.menu.profile.Enabled=Enabled +sparkfun_xrp_controller.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +sparkfun_xrp_controller.menu.rtti.Disabled=Disabled +sparkfun_xrp_controller.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +sparkfun_xrp_controller.menu.rtti.Enabled=Enabled +sparkfun_xrp_controller.menu.rtti.Enabled.build.flags.rtti= +sparkfun_xrp_controller.menu.stackprotect.Disabled=Disabled +sparkfun_xrp_controller.menu.stackprotect.Disabled.build.flags.stackprotect= +sparkfun_xrp_controller.menu.stackprotect.Enabled=Enabled +sparkfun_xrp_controller.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all +sparkfun_xrp_controller.menu.exceptions.Disabled=Disabled +sparkfun_xrp_controller.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +sparkfun_xrp_controller.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +sparkfun_xrp_controller.menu.exceptions.Enabled=Enabled +sparkfun_xrp_controller.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +sparkfun_xrp_controller.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +sparkfun_xrp_controller.menu.dbgport.Disabled=Disabled +sparkfun_xrp_controller.menu.dbgport.Disabled.build.debug_port= +sparkfun_xrp_controller.menu.dbgport.Serial=Serial +sparkfun_xrp_controller.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +sparkfun_xrp_controller.menu.dbgport.Serial1=Serial1 +sparkfun_xrp_controller.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +sparkfun_xrp_controller.menu.dbgport.Serial2=Serial2 +sparkfun_xrp_controller.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +sparkfun_xrp_controller.menu.dbgport.SerialSemi=SerialSemi +sparkfun_xrp_controller.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +sparkfun_xrp_controller.menu.dbglvl.None=None +sparkfun_xrp_controller.menu.dbglvl.None.build.debug_level= +sparkfun_xrp_controller.menu.dbglvl.Core=Core +sparkfun_xrp_controller.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +sparkfun_xrp_controller.menu.dbglvl.SPI=SPI +sparkfun_xrp_controller.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +sparkfun_xrp_controller.menu.dbglvl.Wire=Wire +sparkfun_xrp_controller.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +sparkfun_xrp_controller.menu.dbglvl.Bluetooth=Bluetooth +sparkfun_xrp_controller.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_xrp_controller.menu.dbglvl.All=All +sparkfun_xrp_controller.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_xrp_controller.menu.dbglvl.NDEBUG=NDEBUG +sparkfun_xrp_controller.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +sparkfun_xrp_controller.menu.usbstack.picosdk=Pico SDK +sparkfun_xrp_controller.menu.usbstack.picosdk.build.usbstack_flags= +sparkfun_xrp_controller.menu.usbstack.tinyusb=Adafruit TinyUSB +sparkfun_xrp_controller.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +sparkfun_xrp_controller.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +sparkfun_xrp_controller.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +sparkfun_xrp_controller.menu.usbstack.nousb=No USB +sparkfun_xrp_controller.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +sparkfun_xrp_controller.menu.ipbtstack.ipv4only=IPv4 Only +sparkfun_xrp_controller.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +sparkfun_xrp_controller.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +sparkfun_xrp_controller.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +sparkfun_xrp_controller.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +sparkfun_xrp_controller.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +sparkfun_xrp_controller.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +sparkfun_xrp_controller.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +sparkfun_xrp_controller.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +sparkfun_xrp_controller.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +sparkfun_xrp_controller.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +sparkfun_xrp_controller.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +sparkfun_xrp_controller.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +sparkfun_xrp_controller.menu.uploadmethod.default=Default (UF2) +sparkfun_xrp_controller.menu.uploadmethod.default.build.ram_length=512k +sparkfun_xrp_controller.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +sparkfun_xrp_controller.menu.uploadmethod.default.upload.maximum_data_size=524288 +sparkfun_xrp_controller.menu.uploadmethod.default.upload.tool=uf2conv +sparkfun_xrp_controller.menu.uploadmethod.default.upload.tool.default=uf2conv +sparkfun_xrp_controller.menu.uploadmethod.default.upload.tool.network=uf2conv-network +sparkfun_xrp_controller.menu.uploadmethod.picotool=Picotool +sparkfun_xrp_controller.menu.uploadmethod.picotool.build.ram_length=512k +sparkfun_xrp_controller.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +sparkfun_xrp_controller.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +sparkfun_xrp_controller.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +sparkfun_xrp_controller.menu.uploadmethod.picotool.upload.tool=picotool +sparkfun_xrp_controller.menu.uploadmethod.picotool.upload.tool.default=picotool +sparkfun_xrp_controller.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +sparkfun_xrp_controller.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +sparkfun_xrp_controller.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +sparkfun_xrp_controller.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +sparkfun_xrp_controller.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +sparkfun_xrp_controller.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + # ----------------------------------- # Seeed INDICATOR RP2040 # ----------------------------------- @@ -27769,8 +31097,8 @@ seeed_indicator_rp2040.menu.flash.2097152_1048576.build.flash_length=1044480 seeed_indicator_rp2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 seeed_indicator_rp2040.menu.flash.2097152_1048576.build.fs_start=269479936 seeed_indicator_rp2040.menu.flash.2097152_1048576.build.fs_end=270528512 -seeed_indicator_rp2040.menu.freq.133=133 MHz -seeed_indicator_rp2040.menu.freq.133.build.f_cpu=133000000L +seeed_indicator_rp2040.menu.freq.200=200 MHz +seeed_indicator_rp2040.menu.freq.200.build.f_cpu=200000000L seeed_indicator_rp2040.menu.freq.50=50 MHz seeed_indicator_rp2040.menu.freq.50.build.f_cpu=50000000L seeed_indicator_rp2040.menu.freq.100=100 MHz @@ -27781,20 +31109,20 @@ seeed_indicator_rp2040.menu.freq.125=125 MHz seeed_indicator_rp2040.menu.freq.125.build.f_cpu=125000000L seeed_indicator_rp2040.menu.freq.128=128 MHz seeed_indicator_rp2040.menu.freq.128.build.f_cpu=128000000L -seeed_indicator_rp2040.menu.freq.150=150 MHz (Overclock) +seeed_indicator_rp2040.menu.freq.133=133 MHz +seeed_indicator_rp2040.menu.freq.133.build.f_cpu=133000000L +seeed_indicator_rp2040.menu.freq.150=150 MHz seeed_indicator_rp2040.menu.freq.150.build.f_cpu=150000000L -seeed_indicator_rp2040.menu.freq.175=175 MHz (Overclock) -seeed_indicator_rp2040.menu.freq.175.build.f_cpu=175000000L -seeed_indicator_rp2040.menu.freq.200=200 MHz (Overclock) -seeed_indicator_rp2040.menu.freq.200.build.f_cpu=200000000L +seeed_indicator_rp2040.menu.freq.176=176 MHz +seeed_indicator_rp2040.menu.freq.176.build.f_cpu=176000000L seeed_indicator_rp2040.menu.freq.225=225 MHz (Overclock) seeed_indicator_rp2040.menu.freq.225.build.f_cpu=225000000L seeed_indicator_rp2040.menu.freq.240=240 MHz (Overclock) seeed_indicator_rp2040.menu.freq.240.build.f_cpu=240000000L seeed_indicator_rp2040.menu.freq.250=250 MHz (Overclock) seeed_indicator_rp2040.menu.freq.250.build.f_cpu=250000000L -seeed_indicator_rp2040.menu.freq.275=275 MHz (Overclock) -seeed_indicator_rp2040.menu.freq.275.build.f_cpu=275000000L +seeed_indicator_rp2040.menu.freq.276=276 MHz (Overclock) +seeed_indicator_rp2040.menu.freq.276.build.f_cpu=276000000L seeed_indicator_rp2040.menu.freq.300=300 MHz (Overclock) seeed_indicator_rp2040.menu.freq.300.build.f_cpu=300000000L seeed_indicator_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -27822,7 +31150,7 @@ seeed_indicator_rp2040.menu.rtti.Enabled.build.flags.rtti= seeed_indicator_rp2040.menu.stackprotect.Disabled=Disabled seeed_indicator_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= seeed_indicator_rp2040.menu.stackprotect.Enabled=Enabled -seeed_indicator_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +seeed_indicator_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all seeed_indicator_rp2040.menu.exceptions.Disabled=Disabled seeed_indicator_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions seeed_indicator_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -28007,8 +31335,8 @@ seeed_xiao_rp2040.menu.flash.2097152_1048576.build.flash_length=1044480 seeed_xiao_rp2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 seeed_xiao_rp2040.menu.flash.2097152_1048576.build.fs_start=269479936 seeed_xiao_rp2040.menu.flash.2097152_1048576.build.fs_end=270528512 -seeed_xiao_rp2040.menu.freq.133=133 MHz -seeed_xiao_rp2040.menu.freq.133.build.f_cpu=133000000L +seeed_xiao_rp2040.menu.freq.200=200 MHz +seeed_xiao_rp2040.menu.freq.200.build.f_cpu=200000000L seeed_xiao_rp2040.menu.freq.50=50 MHz seeed_xiao_rp2040.menu.freq.50.build.f_cpu=50000000L seeed_xiao_rp2040.menu.freq.100=100 MHz @@ -28019,20 +31347,20 @@ seeed_xiao_rp2040.menu.freq.125=125 MHz seeed_xiao_rp2040.menu.freq.125.build.f_cpu=125000000L seeed_xiao_rp2040.menu.freq.128=128 MHz seeed_xiao_rp2040.menu.freq.128.build.f_cpu=128000000L -seeed_xiao_rp2040.menu.freq.150=150 MHz (Overclock) +seeed_xiao_rp2040.menu.freq.133=133 MHz +seeed_xiao_rp2040.menu.freq.133.build.f_cpu=133000000L +seeed_xiao_rp2040.menu.freq.150=150 MHz seeed_xiao_rp2040.menu.freq.150.build.f_cpu=150000000L -seeed_xiao_rp2040.menu.freq.175=175 MHz (Overclock) -seeed_xiao_rp2040.menu.freq.175.build.f_cpu=175000000L -seeed_xiao_rp2040.menu.freq.200=200 MHz (Overclock) -seeed_xiao_rp2040.menu.freq.200.build.f_cpu=200000000L +seeed_xiao_rp2040.menu.freq.176=176 MHz +seeed_xiao_rp2040.menu.freq.176.build.f_cpu=176000000L seeed_xiao_rp2040.menu.freq.225=225 MHz (Overclock) seeed_xiao_rp2040.menu.freq.225.build.f_cpu=225000000L seeed_xiao_rp2040.menu.freq.240=240 MHz (Overclock) seeed_xiao_rp2040.menu.freq.240.build.f_cpu=240000000L seeed_xiao_rp2040.menu.freq.250=250 MHz (Overclock) seeed_xiao_rp2040.menu.freq.250.build.f_cpu=250000000L -seeed_xiao_rp2040.menu.freq.275=275 MHz (Overclock) -seeed_xiao_rp2040.menu.freq.275.build.f_cpu=275000000L +seeed_xiao_rp2040.menu.freq.276=276 MHz (Overclock) +seeed_xiao_rp2040.menu.freq.276.build.f_cpu=276000000L seeed_xiao_rp2040.menu.freq.300=300 MHz (Overclock) seeed_xiao_rp2040.menu.freq.300.build.f_cpu=300000000L seeed_xiao_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -28060,7 +31388,7 @@ seeed_xiao_rp2040.menu.rtti.Enabled.build.flags.rtti= seeed_xiao_rp2040.menu.stackprotect.Disabled=Disabled seeed_xiao_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= seeed_xiao_rp2040.menu.stackprotect.Enabled=Enabled -seeed_xiao_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +seeed_xiao_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all seeed_xiao_rp2040.menu.exceptions.Disabled=Disabled seeed_xiao_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions seeed_xiao_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -28185,7 +31513,7 @@ seeed_xiao_rp2350.build.usbpid=-DUSBD_PID=0x0058 seeed_xiao_rp2350.build.usbpwr=-DUSBD_MAX_POWER_MA=250 seeed_xiao_rp2350.build.board=SEEED_XIAO_RP2350 seeed_xiao_rp2350.build.variant=seeed_xiao_rp2350 -seeed_xiao_rp2350.upload.maximum_size=16777216 +seeed_xiao_rp2350.upload.maximum_size=2097152 seeed_xiao_rp2350.upload.wait_for_upload_port=true seeed_xiao_rp2350.upload.erase_cmd= seeed_xiao_rp2350.serial.disableDTR=false @@ -28197,147 +31525,49 @@ seeed_xiao_rp2350.build.ldscript=memmap_default.ld seeed_xiao_rp2350.build.boot2=none seeed_xiao_rp2350.build.usb_manufacturer="Seeed" seeed_xiao_rp2350.build.usb_product="XIAO RP2350" -seeed_xiao_rp2350.build.psram_length=0x800000 -seeed_xiao_rp2350.menu.flash.16777216_0=16MB (no FS) -seeed_xiao_rp2350.menu.flash.16777216_0.upload.maximum_size=16769024 -seeed_xiao_rp2350.menu.flash.16777216_0.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_0.build.flash_length=16769024 -seeed_xiao_rp2350.menu.flash.16777216_0.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_0.build.fs_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_0.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_65536=16MB (Sketch: 16320KB, FS: 64KB) -seeed_xiao_rp2350.menu.flash.16777216_65536.upload.maximum_size=16703488 -seeed_xiao_rp2350.menu.flash.16777216_65536.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_65536.build.flash_length=16703488 -seeed_xiao_rp2350.menu.flash.16777216_65536.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_65536.build.fs_start=285138944 -seeed_xiao_rp2350.menu.flash.16777216_65536.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_131072=16MB (Sketch: 16256KB, FS: 128KB) -seeed_xiao_rp2350.menu.flash.16777216_131072.upload.maximum_size=16637952 -seeed_xiao_rp2350.menu.flash.16777216_131072.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_131072.build.flash_length=16637952 -seeed_xiao_rp2350.menu.flash.16777216_131072.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_131072.build.fs_start=285073408 -seeed_xiao_rp2350.menu.flash.16777216_131072.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_262144=16MB (Sketch: 16128KB, FS: 256KB) -seeed_xiao_rp2350.menu.flash.16777216_262144.upload.maximum_size=16506880 -seeed_xiao_rp2350.menu.flash.16777216_262144.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_262144.build.flash_length=16506880 -seeed_xiao_rp2350.menu.flash.16777216_262144.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_262144.build.fs_start=284942336 -seeed_xiao_rp2350.menu.flash.16777216_262144.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_524288=16MB (Sketch: 15872KB, FS: 512KB) -seeed_xiao_rp2350.menu.flash.16777216_524288.upload.maximum_size=16244736 -seeed_xiao_rp2350.menu.flash.16777216_524288.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_524288.build.flash_length=16244736 -seeed_xiao_rp2350.menu.flash.16777216_524288.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_524288.build.fs_start=284680192 -seeed_xiao_rp2350.menu.flash.16777216_524288.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_1048576=16MB (Sketch: 15MB, FS: 1MB) -seeed_xiao_rp2350.menu.flash.16777216_1048576.upload.maximum_size=15720448 -seeed_xiao_rp2350.menu.flash.16777216_1048576.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_1048576.build.flash_length=15720448 -seeed_xiao_rp2350.menu.flash.16777216_1048576.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_1048576.build.fs_start=284155904 -seeed_xiao_rp2350.menu.flash.16777216_1048576.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_2097152=16MB (Sketch: 14MB, FS: 2MB) -seeed_xiao_rp2350.menu.flash.16777216_2097152.upload.maximum_size=14671872 -seeed_xiao_rp2350.menu.flash.16777216_2097152.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_2097152.build.flash_length=14671872 -seeed_xiao_rp2350.menu.flash.16777216_2097152.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_2097152.build.fs_start=283107328 -seeed_xiao_rp2350.menu.flash.16777216_2097152.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_3145728=16MB (Sketch: 13MB, FS: 3MB) -seeed_xiao_rp2350.menu.flash.16777216_3145728.upload.maximum_size=13623296 -seeed_xiao_rp2350.menu.flash.16777216_3145728.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_3145728.build.flash_length=13623296 -seeed_xiao_rp2350.menu.flash.16777216_3145728.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_3145728.build.fs_start=282058752 -seeed_xiao_rp2350.menu.flash.16777216_3145728.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_4194304=16MB (Sketch: 12MB, FS: 4MB) -seeed_xiao_rp2350.menu.flash.16777216_4194304.upload.maximum_size=12574720 -seeed_xiao_rp2350.menu.flash.16777216_4194304.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_4194304.build.flash_length=12574720 -seeed_xiao_rp2350.menu.flash.16777216_4194304.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_4194304.build.fs_start=281010176 -seeed_xiao_rp2350.menu.flash.16777216_4194304.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_5242880=16MB (Sketch: 11MB, FS: 5MB) -seeed_xiao_rp2350.menu.flash.16777216_5242880.upload.maximum_size=11526144 -seeed_xiao_rp2350.menu.flash.16777216_5242880.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_5242880.build.flash_length=11526144 -seeed_xiao_rp2350.menu.flash.16777216_5242880.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_5242880.build.fs_start=279961600 -seeed_xiao_rp2350.menu.flash.16777216_5242880.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_6291456=16MB (Sketch: 10MB, FS: 6MB) -seeed_xiao_rp2350.menu.flash.16777216_6291456.upload.maximum_size=10477568 -seeed_xiao_rp2350.menu.flash.16777216_6291456.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_6291456.build.flash_length=10477568 -seeed_xiao_rp2350.menu.flash.16777216_6291456.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_6291456.build.fs_start=278913024 -seeed_xiao_rp2350.menu.flash.16777216_6291456.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_7340032=16MB (Sketch: 9MB, FS: 7MB) -seeed_xiao_rp2350.menu.flash.16777216_7340032.upload.maximum_size=9428992 -seeed_xiao_rp2350.menu.flash.16777216_7340032.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_7340032.build.flash_length=9428992 -seeed_xiao_rp2350.menu.flash.16777216_7340032.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_7340032.build.fs_start=277864448 -seeed_xiao_rp2350.menu.flash.16777216_7340032.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_8388608=16MB (Sketch: 8MB, FS: 8MB) -seeed_xiao_rp2350.menu.flash.16777216_8388608.upload.maximum_size=8380416 -seeed_xiao_rp2350.menu.flash.16777216_8388608.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_8388608.build.flash_length=8380416 -seeed_xiao_rp2350.menu.flash.16777216_8388608.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_8388608.build.fs_start=276815872 -seeed_xiao_rp2350.menu.flash.16777216_8388608.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_9437184=16MB (Sketch: 7MB, FS: 9MB) -seeed_xiao_rp2350.menu.flash.16777216_9437184.upload.maximum_size=7331840 -seeed_xiao_rp2350.menu.flash.16777216_9437184.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_9437184.build.flash_length=7331840 -seeed_xiao_rp2350.menu.flash.16777216_9437184.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_9437184.build.fs_start=275767296 -seeed_xiao_rp2350.menu.flash.16777216_9437184.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_10485760=16MB (Sketch: 6MB, FS: 10MB) -seeed_xiao_rp2350.menu.flash.16777216_10485760.upload.maximum_size=6283264 -seeed_xiao_rp2350.menu.flash.16777216_10485760.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_10485760.build.flash_length=6283264 -seeed_xiao_rp2350.menu.flash.16777216_10485760.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_10485760.build.fs_start=274718720 -seeed_xiao_rp2350.menu.flash.16777216_10485760.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_11534336=16MB (Sketch: 5MB, FS: 11MB) -seeed_xiao_rp2350.menu.flash.16777216_11534336.upload.maximum_size=5234688 -seeed_xiao_rp2350.menu.flash.16777216_11534336.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_11534336.build.flash_length=5234688 -seeed_xiao_rp2350.menu.flash.16777216_11534336.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_11534336.build.fs_start=273670144 -seeed_xiao_rp2350.menu.flash.16777216_11534336.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_12582912=16MB (Sketch: 4MB, FS: 12MB) -seeed_xiao_rp2350.menu.flash.16777216_12582912.upload.maximum_size=4186112 -seeed_xiao_rp2350.menu.flash.16777216_12582912.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_12582912.build.flash_length=4186112 -seeed_xiao_rp2350.menu.flash.16777216_12582912.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_12582912.build.fs_start=272621568 -seeed_xiao_rp2350.menu.flash.16777216_12582912.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_13631488=16MB (Sketch: 3MB, FS: 13MB) -seeed_xiao_rp2350.menu.flash.16777216_13631488.upload.maximum_size=3137536 -seeed_xiao_rp2350.menu.flash.16777216_13631488.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_13631488.build.flash_length=3137536 -seeed_xiao_rp2350.menu.flash.16777216_13631488.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_13631488.build.fs_start=271572992 -seeed_xiao_rp2350.menu.flash.16777216_13631488.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_14680064=16MB (Sketch: 2MB, FS: 14MB) -seeed_xiao_rp2350.menu.flash.16777216_14680064.upload.maximum_size=2088960 -seeed_xiao_rp2350.menu.flash.16777216_14680064.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_14680064.build.flash_length=2088960 -seeed_xiao_rp2350.menu.flash.16777216_14680064.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_14680064.build.fs_start=270524416 -seeed_xiao_rp2350.menu.flash.16777216_14680064.build.fs_end=285204480 -seeed_xiao_rp2350.menu.flash.16777216_15728640=16MB (Sketch: 1MB, FS: 15MB) -seeed_xiao_rp2350.menu.flash.16777216_15728640.upload.maximum_size=1040384 -seeed_xiao_rp2350.menu.flash.16777216_15728640.build.flash_total=16777216 -seeed_xiao_rp2350.menu.flash.16777216_15728640.build.flash_length=1040384 -seeed_xiao_rp2350.menu.flash.16777216_15728640.build.eeprom_start=285204480 -seeed_xiao_rp2350.menu.flash.16777216_15728640.build.fs_start=269475840 -seeed_xiao_rp2350.menu.flash.16777216_15728640.build.fs_end=285204480 +seeed_xiao_rp2350.build.psram_length=0x000000 +seeed_xiao_rp2350.menu.flash.2097152_0=2MB (no FS) +seeed_xiao_rp2350.menu.flash.2097152_0.upload.maximum_size=2088960 +seeed_xiao_rp2350.menu.flash.2097152_0.build.flash_total=2097152 +seeed_xiao_rp2350.menu.flash.2097152_0.build.flash_length=2088960 +seeed_xiao_rp2350.menu.flash.2097152_0.build.eeprom_start=270524416 +seeed_xiao_rp2350.menu.flash.2097152_0.build.fs_start=270524416 +seeed_xiao_rp2350.menu.flash.2097152_0.build.fs_end=270524416 +seeed_xiao_rp2350.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +seeed_xiao_rp2350.menu.flash.2097152_65536.upload.maximum_size=2023424 +seeed_xiao_rp2350.menu.flash.2097152_65536.build.flash_total=2097152 +seeed_xiao_rp2350.menu.flash.2097152_65536.build.flash_length=2023424 +seeed_xiao_rp2350.menu.flash.2097152_65536.build.eeprom_start=270524416 +seeed_xiao_rp2350.menu.flash.2097152_65536.build.fs_start=270458880 +seeed_xiao_rp2350.menu.flash.2097152_65536.build.fs_end=270524416 +seeed_xiao_rp2350.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +seeed_xiao_rp2350.menu.flash.2097152_131072.upload.maximum_size=1957888 +seeed_xiao_rp2350.menu.flash.2097152_131072.build.flash_total=2097152 +seeed_xiao_rp2350.menu.flash.2097152_131072.build.flash_length=1957888 +seeed_xiao_rp2350.menu.flash.2097152_131072.build.eeprom_start=270524416 +seeed_xiao_rp2350.menu.flash.2097152_131072.build.fs_start=270393344 +seeed_xiao_rp2350.menu.flash.2097152_131072.build.fs_end=270524416 +seeed_xiao_rp2350.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +seeed_xiao_rp2350.menu.flash.2097152_262144.upload.maximum_size=1826816 +seeed_xiao_rp2350.menu.flash.2097152_262144.build.flash_total=2097152 +seeed_xiao_rp2350.menu.flash.2097152_262144.build.flash_length=1826816 +seeed_xiao_rp2350.menu.flash.2097152_262144.build.eeprom_start=270524416 +seeed_xiao_rp2350.menu.flash.2097152_262144.build.fs_start=270262272 +seeed_xiao_rp2350.menu.flash.2097152_262144.build.fs_end=270524416 +seeed_xiao_rp2350.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +seeed_xiao_rp2350.menu.flash.2097152_524288.upload.maximum_size=1564672 +seeed_xiao_rp2350.menu.flash.2097152_524288.build.flash_total=2097152 +seeed_xiao_rp2350.menu.flash.2097152_524288.build.flash_length=1564672 +seeed_xiao_rp2350.menu.flash.2097152_524288.build.eeprom_start=270524416 +seeed_xiao_rp2350.menu.flash.2097152_524288.build.fs_start=270000128 +seeed_xiao_rp2350.menu.flash.2097152_524288.build.fs_end=270524416 +seeed_xiao_rp2350.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) +seeed_xiao_rp2350.menu.flash.2097152_1048576.upload.maximum_size=1040384 +seeed_xiao_rp2350.menu.flash.2097152_1048576.build.flash_total=2097152 +seeed_xiao_rp2350.menu.flash.2097152_1048576.build.flash_length=1040384 +seeed_xiao_rp2350.menu.flash.2097152_1048576.build.eeprom_start=270524416 +seeed_xiao_rp2350.menu.flash.2097152_1048576.build.fs_start=269475840 +seeed_xiao_rp2350.menu.flash.2097152_1048576.build.fs_end=270524416 seeed_xiao_rp2350.menu.arch.arm=ARM seeed_xiao_rp2350.menu.arch.arm.build.chip=rp2350 seeed_xiao_rp2350.menu.arch.arm.build.toolchain=arm-none-eabi @@ -28366,8 +31596,8 @@ seeed_xiao_rp2350.menu.freq.128=128 MHz seeed_xiao_rp2350.menu.freq.128.build.f_cpu=128000000L seeed_xiao_rp2350.menu.freq.133=133 MHz seeed_xiao_rp2350.menu.freq.133.build.f_cpu=133000000L -seeed_xiao_rp2350.menu.freq.175=175 MHz (Overclock) -seeed_xiao_rp2350.menu.freq.175.build.f_cpu=175000000L +seeed_xiao_rp2350.menu.freq.176=176 MHz (Overclock) +seeed_xiao_rp2350.menu.freq.176.build.f_cpu=176000000L seeed_xiao_rp2350.menu.freq.200=200 MHz (Overclock) seeed_xiao_rp2350.menu.freq.200.build.f_cpu=200000000L seeed_xiao_rp2350.menu.freq.225=225 MHz (Overclock) @@ -28376,8 +31606,8 @@ seeed_xiao_rp2350.menu.freq.240=240 MHz (Overclock) seeed_xiao_rp2350.menu.freq.240.build.f_cpu=240000000L seeed_xiao_rp2350.menu.freq.250=250 MHz (Overclock) seeed_xiao_rp2350.menu.freq.250.build.f_cpu=250000000L -seeed_xiao_rp2350.menu.freq.275=275 MHz (Overclock) -seeed_xiao_rp2350.menu.freq.275.build.f_cpu=275000000L +seeed_xiao_rp2350.menu.freq.276=276 MHz (Overclock) +seeed_xiao_rp2350.menu.freq.276.build.f_cpu=276000000L seeed_xiao_rp2350.menu.freq.300=300 MHz (Overclock) seeed_xiao_rp2350.menu.freq.300.build.f_cpu=300000000L seeed_xiao_rp2350.menu.opt.Small=Small (-Os) (standard) @@ -28405,7 +31635,7 @@ seeed_xiao_rp2350.menu.rtti.Enabled.build.flags.rtti= seeed_xiao_rp2350.menu.stackprotect.Disabled=Disabled seeed_xiao_rp2350.menu.stackprotect.Disabled.build.flags.stackprotect= seeed_xiao_rp2350.menu.stackprotect.Enabled=Enabled -seeed_xiao_rp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +seeed_xiao_rp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all seeed_xiao_rp2350.menu.exceptions.Disabled=Disabled seeed_xiao_rp2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions seeed_xiao_rp2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -28590,8 +31820,8 @@ upesy_rp2040_devkit.menu.flash.2097152_1048576.build.flash_length=1044480 upesy_rp2040_devkit.menu.flash.2097152_1048576.build.eeprom_start=270528512 upesy_rp2040_devkit.menu.flash.2097152_1048576.build.fs_start=269479936 upesy_rp2040_devkit.menu.flash.2097152_1048576.build.fs_end=270528512 -upesy_rp2040_devkit.menu.freq.133=133 MHz -upesy_rp2040_devkit.menu.freq.133.build.f_cpu=133000000L +upesy_rp2040_devkit.menu.freq.200=200 MHz +upesy_rp2040_devkit.menu.freq.200.build.f_cpu=200000000L upesy_rp2040_devkit.menu.freq.50=50 MHz upesy_rp2040_devkit.menu.freq.50.build.f_cpu=50000000L upesy_rp2040_devkit.menu.freq.100=100 MHz @@ -28602,20 +31832,20 @@ upesy_rp2040_devkit.menu.freq.125=125 MHz upesy_rp2040_devkit.menu.freq.125.build.f_cpu=125000000L upesy_rp2040_devkit.menu.freq.128=128 MHz upesy_rp2040_devkit.menu.freq.128.build.f_cpu=128000000L -upesy_rp2040_devkit.menu.freq.150=150 MHz (Overclock) +upesy_rp2040_devkit.menu.freq.133=133 MHz +upesy_rp2040_devkit.menu.freq.133.build.f_cpu=133000000L +upesy_rp2040_devkit.menu.freq.150=150 MHz upesy_rp2040_devkit.menu.freq.150.build.f_cpu=150000000L -upesy_rp2040_devkit.menu.freq.175=175 MHz (Overclock) -upesy_rp2040_devkit.menu.freq.175.build.f_cpu=175000000L -upesy_rp2040_devkit.menu.freq.200=200 MHz (Overclock) -upesy_rp2040_devkit.menu.freq.200.build.f_cpu=200000000L +upesy_rp2040_devkit.menu.freq.176=176 MHz +upesy_rp2040_devkit.menu.freq.176.build.f_cpu=176000000L upesy_rp2040_devkit.menu.freq.225=225 MHz (Overclock) upesy_rp2040_devkit.menu.freq.225.build.f_cpu=225000000L upesy_rp2040_devkit.menu.freq.240=240 MHz (Overclock) upesy_rp2040_devkit.menu.freq.240.build.f_cpu=240000000L upesy_rp2040_devkit.menu.freq.250=250 MHz (Overclock) upesy_rp2040_devkit.menu.freq.250.build.f_cpu=250000000L -upesy_rp2040_devkit.menu.freq.275=275 MHz (Overclock) -upesy_rp2040_devkit.menu.freq.275.build.f_cpu=275000000L +upesy_rp2040_devkit.menu.freq.276=276 MHz (Overclock) +upesy_rp2040_devkit.menu.freq.276.build.f_cpu=276000000L upesy_rp2040_devkit.menu.freq.300=300 MHz (Overclock) upesy_rp2040_devkit.menu.freq.300.build.f_cpu=300000000L upesy_rp2040_devkit.menu.opt.Small=Small (-Os) (standard) @@ -28643,7 +31873,7 @@ upesy_rp2040_devkit.menu.rtti.Enabled.build.flags.rtti= upesy_rp2040_devkit.menu.stackprotect.Disabled=Disabled upesy_rp2040_devkit.menu.stackprotect.Disabled.build.flags.stackprotect= upesy_rp2040_devkit.menu.stackprotect.Enabled=Enabled -upesy_rp2040_devkit.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +upesy_rp2040_devkit.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all upesy_rp2040_devkit.menu.exceptions.Disabled=Disabled upesy_rp2040_devkit.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions upesy_rp2040_devkit.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -28777,6 +32007,34 @@ vccgnd_yd_rp2040.menu.flash.2097152_0.build.flash_length=2093056 vccgnd_yd_rp2040.menu.flash.2097152_0.build.eeprom_start=270528512 vccgnd_yd_rp2040.menu.flash.2097152_0.build.fs_start=270528512 vccgnd_yd_rp2040.menu.flash.2097152_0.build.fs_end=270528512 +vccgnd_yd_rp2040.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +vccgnd_yd_rp2040.menu.flash.2097152_65536.upload.maximum_size=2027520 +vccgnd_yd_rp2040.menu.flash.2097152_65536.build.flash_total=2097152 +vccgnd_yd_rp2040.menu.flash.2097152_65536.build.flash_length=2027520 +vccgnd_yd_rp2040.menu.flash.2097152_65536.build.eeprom_start=270528512 +vccgnd_yd_rp2040.menu.flash.2097152_65536.build.fs_start=270462976 +vccgnd_yd_rp2040.menu.flash.2097152_65536.build.fs_end=270528512 +vccgnd_yd_rp2040.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +vccgnd_yd_rp2040.menu.flash.2097152_131072.upload.maximum_size=1961984 +vccgnd_yd_rp2040.menu.flash.2097152_131072.build.flash_total=2097152 +vccgnd_yd_rp2040.menu.flash.2097152_131072.build.flash_length=1961984 +vccgnd_yd_rp2040.menu.flash.2097152_131072.build.eeprom_start=270528512 +vccgnd_yd_rp2040.menu.flash.2097152_131072.build.fs_start=270397440 +vccgnd_yd_rp2040.menu.flash.2097152_131072.build.fs_end=270528512 +vccgnd_yd_rp2040.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +vccgnd_yd_rp2040.menu.flash.2097152_262144.upload.maximum_size=1830912 +vccgnd_yd_rp2040.menu.flash.2097152_262144.build.flash_total=2097152 +vccgnd_yd_rp2040.menu.flash.2097152_262144.build.flash_length=1830912 +vccgnd_yd_rp2040.menu.flash.2097152_262144.build.eeprom_start=270528512 +vccgnd_yd_rp2040.menu.flash.2097152_262144.build.fs_start=270266368 +vccgnd_yd_rp2040.menu.flash.2097152_262144.build.fs_end=270528512 +vccgnd_yd_rp2040.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +vccgnd_yd_rp2040.menu.flash.2097152_524288.upload.maximum_size=1568768 +vccgnd_yd_rp2040.menu.flash.2097152_524288.build.flash_total=2097152 +vccgnd_yd_rp2040.menu.flash.2097152_524288.build.flash_length=1568768 +vccgnd_yd_rp2040.menu.flash.2097152_524288.build.eeprom_start=270528512 +vccgnd_yd_rp2040.menu.flash.2097152_524288.build.fs_start=270004224 +vccgnd_yd_rp2040.menu.flash.2097152_524288.build.fs_end=270528512 vccgnd_yd_rp2040.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) vccgnd_yd_rp2040.menu.flash.2097152_1048576.upload.maximum_size=1044480 vccgnd_yd_rp2040.menu.flash.2097152_1048576.build.flash_total=2097152 @@ -28882,8 +32140,8 @@ vccgnd_yd_rp2040.menu.flash.16777216_2097152.build.flash_length=14675968 vccgnd_yd_rp2040.menu.flash.16777216_2097152.build.eeprom_start=285208576 vccgnd_yd_rp2040.menu.flash.16777216_2097152.build.fs_start=283111424 vccgnd_yd_rp2040.menu.flash.16777216_2097152.build.fs_end=285208576 -vccgnd_yd_rp2040.menu.freq.133=133 MHz -vccgnd_yd_rp2040.menu.freq.133.build.f_cpu=133000000L +vccgnd_yd_rp2040.menu.freq.200=200 MHz +vccgnd_yd_rp2040.menu.freq.200.build.f_cpu=200000000L vccgnd_yd_rp2040.menu.freq.50=50 MHz vccgnd_yd_rp2040.menu.freq.50.build.f_cpu=50000000L vccgnd_yd_rp2040.menu.freq.100=100 MHz @@ -28894,20 +32152,20 @@ vccgnd_yd_rp2040.menu.freq.125=125 MHz vccgnd_yd_rp2040.menu.freq.125.build.f_cpu=125000000L vccgnd_yd_rp2040.menu.freq.128=128 MHz vccgnd_yd_rp2040.menu.freq.128.build.f_cpu=128000000L -vccgnd_yd_rp2040.menu.freq.150=150 MHz (Overclock) +vccgnd_yd_rp2040.menu.freq.133=133 MHz +vccgnd_yd_rp2040.menu.freq.133.build.f_cpu=133000000L +vccgnd_yd_rp2040.menu.freq.150=150 MHz vccgnd_yd_rp2040.menu.freq.150.build.f_cpu=150000000L -vccgnd_yd_rp2040.menu.freq.175=175 MHz (Overclock) -vccgnd_yd_rp2040.menu.freq.175.build.f_cpu=175000000L -vccgnd_yd_rp2040.menu.freq.200=200 MHz (Overclock) -vccgnd_yd_rp2040.menu.freq.200.build.f_cpu=200000000L +vccgnd_yd_rp2040.menu.freq.176=176 MHz +vccgnd_yd_rp2040.menu.freq.176.build.f_cpu=176000000L vccgnd_yd_rp2040.menu.freq.225=225 MHz (Overclock) vccgnd_yd_rp2040.menu.freq.225.build.f_cpu=225000000L vccgnd_yd_rp2040.menu.freq.240=240 MHz (Overclock) vccgnd_yd_rp2040.menu.freq.240.build.f_cpu=240000000L vccgnd_yd_rp2040.menu.freq.250=250 MHz (Overclock) vccgnd_yd_rp2040.menu.freq.250.build.f_cpu=250000000L -vccgnd_yd_rp2040.menu.freq.275=275 MHz (Overclock) -vccgnd_yd_rp2040.menu.freq.275.build.f_cpu=275000000L +vccgnd_yd_rp2040.menu.freq.276=276 MHz (Overclock) +vccgnd_yd_rp2040.menu.freq.276.build.f_cpu=276000000L vccgnd_yd_rp2040.menu.freq.300=300 MHz (Overclock) vccgnd_yd_rp2040.menu.freq.300.build.f_cpu=300000000L vccgnd_yd_rp2040.menu.opt.Small=Small (-Os) (standard) @@ -28935,7 +32193,7 @@ vccgnd_yd_rp2040.menu.rtti.Enabled.build.flags.rtti= vccgnd_yd_rp2040.menu.stackprotect.Disabled=Disabled vccgnd_yd_rp2040.menu.stackprotect.Disabled.build.flags.stackprotect= vccgnd_yd_rp2040.menu.stackprotect.Enabled=Enabled -vccgnd_yd_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +vccgnd_yd_rp2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all vccgnd_yd_rp2040.menu.exceptions.Disabled=Disabled vccgnd_yd_rp2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions vccgnd_yd_rp2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -29162,8 +32420,8 @@ viyalab_mizu.menu.flash.8388608_7340032.build.flash_length=1044480 viyalab_mizu.menu.flash.8388608_7340032.build.eeprom_start=276819968 viyalab_mizu.menu.flash.8388608_7340032.build.fs_start=269479936 viyalab_mizu.menu.flash.8388608_7340032.build.fs_end=276819968 -viyalab_mizu.menu.freq.133=133 MHz -viyalab_mizu.menu.freq.133.build.f_cpu=133000000L +viyalab_mizu.menu.freq.200=200 MHz +viyalab_mizu.menu.freq.200.build.f_cpu=200000000L viyalab_mizu.menu.freq.50=50 MHz viyalab_mizu.menu.freq.50.build.f_cpu=50000000L viyalab_mizu.menu.freq.100=100 MHz @@ -29174,20 +32432,20 @@ viyalab_mizu.menu.freq.125=125 MHz viyalab_mizu.menu.freq.125.build.f_cpu=125000000L viyalab_mizu.menu.freq.128=128 MHz viyalab_mizu.menu.freq.128.build.f_cpu=128000000L -viyalab_mizu.menu.freq.150=150 MHz (Overclock) +viyalab_mizu.menu.freq.133=133 MHz +viyalab_mizu.menu.freq.133.build.f_cpu=133000000L +viyalab_mizu.menu.freq.150=150 MHz viyalab_mizu.menu.freq.150.build.f_cpu=150000000L -viyalab_mizu.menu.freq.175=175 MHz (Overclock) -viyalab_mizu.menu.freq.175.build.f_cpu=175000000L -viyalab_mizu.menu.freq.200=200 MHz (Overclock) -viyalab_mizu.menu.freq.200.build.f_cpu=200000000L +viyalab_mizu.menu.freq.176=176 MHz +viyalab_mizu.menu.freq.176.build.f_cpu=176000000L viyalab_mizu.menu.freq.225=225 MHz (Overclock) viyalab_mizu.menu.freq.225.build.f_cpu=225000000L viyalab_mizu.menu.freq.240=240 MHz (Overclock) viyalab_mizu.menu.freq.240.build.f_cpu=240000000L viyalab_mizu.menu.freq.250=250 MHz (Overclock) viyalab_mizu.menu.freq.250.build.f_cpu=250000000L -viyalab_mizu.menu.freq.275=275 MHz (Overclock) -viyalab_mizu.menu.freq.275.build.f_cpu=275000000L +viyalab_mizu.menu.freq.276=276 MHz (Overclock) +viyalab_mizu.menu.freq.276.build.f_cpu=276000000L viyalab_mizu.menu.freq.300=300 MHz (Overclock) viyalab_mizu.menu.freq.300.build.f_cpu=300000000L viyalab_mizu.menu.opt.Small=Small (-Os) (standard) @@ -29215,7 +32473,7 @@ viyalab_mizu.menu.rtti.Enabled.build.flags.rtti= viyalab_mizu.menu.stackprotect.Disabled=Disabled viyalab_mizu.menu.stackprotect.Disabled.build.flags.stackprotect= viyalab_mizu.menu.stackprotect.Enabled=Enabled -viyalab_mizu.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +viyalab_mizu.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all viyalab_mizu.menu.exceptions.Disabled=Disabled viyalab_mizu.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions viyalab_mizu.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -29400,8 +32658,8 @@ waveshare_rp2040_zero.menu.flash.2097152_1048576.build.flash_length=1044480 waveshare_rp2040_zero.menu.flash.2097152_1048576.build.eeprom_start=270528512 waveshare_rp2040_zero.menu.flash.2097152_1048576.build.fs_start=269479936 waveshare_rp2040_zero.menu.flash.2097152_1048576.build.fs_end=270528512 -waveshare_rp2040_zero.menu.freq.133=133 MHz -waveshare_rp2040_zero.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_zero.menu.freq.200=200 MHz +waveshare_rp2040_zero.menu.freq.200.build.f_cpu=200000000L waveshare_rp2040_zero.menu.freq.50=50 MHz waveshare_rp2040_zero.menu.freq.50.build.f_cpu=50000000L waveshare_rp2040_zero.menu.freq.100=100 MHz @@ -29412,20 +32670,20 @@ waveshare_rp2040_zero.menu.freq.125=125 MHz waveshare_rp2040_zero.menu.freq.125.build.f_cpu=125000000L waveshare_rp2040_zero.menu.freq.128=128 MHz waveshare_rp2040_zero.menu.freq.128.build.f_cpu=128000000L -waveshare_rp2040_zero.menu.freq.150=150 MHz (Overclock) +waveshare_rp2040_zero.menu.freq.133=133 MHz +waveshare_rp2040_zero.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_zero.menu.freq.150=150 MHz waveshare_rp2040_zero.menu.freq.150.build.f_cpu=150000000L -waveshare_rp2040_zero.menu.freq.175=175 MHz (Overclock) -waveshare_rp2040_zero.menu.freq.175.build.f_cpu=175000000L -waveshare_rp2040_zero.menu.freq.200=200 MHz (Overclock) -waveshare_rp2040_zero.menu.freq.200.build.f_cpu=200000000L +waveshare_rp2040_zero.menu.freq.176=176 MHz +waveshare_rp2040_zero.menu.freq.176.build.f_cpu=176000000L waveshare_rp2040_zero.menu.freq.225=225 MHz (Overclock) waveshare_rp2040_zero.menu.freq.225.build.f_cpu=225000000L waveshare_rp2040_zero.menu.freq.240=240 MHz (Overclock) waveshare_rp2040_zero.menu.freq.240.build.f_cpu=240000000L waveshare_rp2040_zero.menu.freq.250=250 MHz (Overclock) waveshare_rp2040_zero.menu.freq.250.build.f_cpu=250000000L -waveshare_rp2040_zero.menu.freq.275=275 MHz (Overclock) -waveshare_rp2040_zero.menu.freq.275.build.f_cpu=275000000L +waveshare_rp2040_zero.menu.freq.276=276 MHz (Overclock) +waveshare_rp2040_zero.menu.freq.276.build.f_cpu=276000000L waveshare_rp2040_zero.menu.freq.300=300 MHz (Overclock) waveshare_rp2040_zero.menu.freq.300.build.f_cpu=300000000L waveshare_rp2040_zero.menu.opt.Small=Small (-Os) (standard) @@ -29453,7 +32711,7 @@ waveshare_rp2040_zero.menu.rtti.Enabled.build.flags.rtti= waveshare_rp2040_zero.menu.stackprotect.Disabled=Disabled waveshare_rp2040_zero.menu.stackprotect.Disabled.build.flags.stackprotect= waveshare_rp2040_zero.menu.stackprotect.Enabled=Enabled -waveshare_rp2040_zero.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +waveshare_rp2040_zero.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all waveshare_rp2040_zero.menu.exceptions.Disabled=Disabled waveshare_rp2040_zero.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions waveshare_rp2040_zero.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -29652,8 +32910,8 @@ waveshare_rp2040_one.menu.flash.4194304_3145728.build.flash_length=1044480 waveshare_rp2040_one.menu.flash.4194304_3145728.build.eeprom_start=272625664 waveshare_rp2040_one.menu.flash.4194304_3145728.build.fs_start=269479936 waveshare_rp2040_one.menu.flash.4194304_3145728.build.fs_end=272625664 -waveshare_rp2040_one.menu.freq.133=133 MHz -waveshare_rp2040_one.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_one.menu.freq.200=200 MHz +waveshare_rp2040_one.menu.freq.200.build.f_cpu=200000000L waveshare_rp2040_one.menu.freq.50=50 MHz waveshare_rp2040_one.menu.freq.50.build.f_cpu=50000000L waveshare_rp2040_one.menu.freq.100=100 MHz @@ -29664,20 +32922,20 @@ waveshare_rp2040_one.menu.freq.125=125 MHz waveshare_rp2040_one.menu.freq.125.build.f_cpu=125000000L waveshare_rp2040_one.menu.freq.128=128 MHz waveshare_rp2040_one.menu.freq.128.build.f_cpu=128000000L -waveshare_rp2040_one.menu.freq.150=150 MHz (Overclock) +waveshare_rp2040_one.menu.freq.133=133 MHz +waveshare_rp2040_one.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_one.menu.freq.150=150 MHz waveshare_rp2040_one.menu.freq.150.build.f_cpu=150000000L -waveshare_rp2040_one.menu.freq.175=175 MHz (Overclock) -waveshare_rp2040_one.menu.freq.175.build.f_cpu=175000000L -waveshare_rp2040_one.menu.freq.200=200 MHz (Overclock) -waveshare_rp2040_one.menu.freq.200.build.f_cpu=200000000L +waveshare_rp2040_one.menu.freq.176=176 MHz +waveshare_rp2040_one.menu.freq.176.build.f_cpu=176000000L waveshare_rp2040_one.menu.freq.225=225 MHz (Overclock) waveshare_rp2040_one.menu.freq.225.build.f_cpu=225000000L waveshare_rp2040_one.menu.freq.240=240 MHz (Overclock) waveshare_rp2040_one.menu.freq.240.build.f_cpu=240000000L waveshare_rp2040_one.menu.freq.250=250 MHz (Overclock) waveshare_rp2040_one.menu.freq.250.build.f_cpu=250000000L -waveshare_rp2040_one.menu.freq.275=275 MHz (Overclock) -waveshare_rp2040_one.menu.freq.275.build.f_cpu=275000000L +waveshare_rp2040_one.menu.freq.276=276 MHz (Overclock) +waveshare_rp2040_one.menu.freq.276.build.f_cpu=276000000L waveshare_rp2040_one.menu.freq.300=300 MHz (Overclock) waveshare_rp2040_one.menu.freq.300.build.f_cpu=300000000L waveshare_rp2040_one.menu.opt.Small=Small (-Os) (standard) @@ -29705,7 +32963,7 @@ waveshare_rp2040_one.menu.rtti.Enabled.build.flags.rtti= waveshare_rp2040_one.menu.stackprotect.Disabled=Disabled waveshare_rp2040_one.menu.stackprotect.Disabled.build.flags.stackprotect= waveshare_rp2040_one.menu.stackprotect.Enabled=Enabled -waveshare_rp2040_one.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +waveshare_rp2040_one.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all waveshare_rp2040_one.menu.exceptions.Disabled=Disabled waveshare_rp2040_one.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions waveshare_rp2040_one.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -29890,8 +33148,8 @@ waveshare_rp2040_matrix.menu.flash.2097152_1048576.build.flash_length=1044480 waveshare_rp2040_matrix.menu.flash.2097152_1048576.build.eeprom_start=270528512 waveshare_rp2040_matrix.menu.flash.2097152_1048576.build.fs_start=269479936 waveshare_rp2040_matrix.menu.flash.2097152_1048576.build.fs_end=270528512 -waveshare_rp2040_matrix.menu.freq.133=133 MHz -waveshare_rp2040_matrix.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_matrix.menu.freq.200=200 MHz +waveshare_rp2040_matrix.menu.freq.200.build.f_cpu=200000000L waveshare_rp2040_matrix.menu.freq.50=50 MHz waveshare_rp2040_matrix.menu.freq.50.build.f_cpu=50000000L waveshare_rp2040_matrix.menu.freq.100=100 MHz @@ -29902,20 +33160,20 @@ waveshare_rp2040_matrix.menu.freq.125=125 MHz waveshare_rp2040_matrix.menu.freq.125.build.f_cpu=125000000L waveshare_rp2040_matrix.menu.freq.128=128 MHz waveshare_rp2040_matrix.menu.freq.128.build.f_cpu=128000000L -waveshare_rp2040_matrix.menu.freq.150=150 MHz (Overclock) +waveshare_rp2040_matrix.menu.freq.133=133 MHz +waveshare_rp2040_matrix.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_matrix.menu.freq.150=150 MHz waveshare_rp2040_matrix.menu.freq.150.build.f_cpu=150000000L -waveshare_rp2040_matrix.menu.freq.175=175 MHz (Overclock) -waveshare_rp2040_matrix.menu.freq.175.build.f_cpu=175000000L -waveshare_rp2040_matrix.menu.freq.200=200 MHz (Overclock) -waveshare_rp2040_matrix.menu.freq.200.build.f_cpu=200000000L +waveshare_rp2040_matrix.menu.freq.176=176 MHz +waveshare_rp2040_matrix.menu.freq.176.build.f_cpu=176000000L waveshare_rp2040_matrix.menu.freq.225=225 MHz (Overclock) waveshare_rp2040_matrix.menu.freq.225.build.f_cpu=225000000L waveshare_rp2040_matrix.menu.freq.240=240 MHz (Overclock) waveshare_rp2040_matrix.menu.freq.240.build.f_cpu=240000000L waveshare_rp2040_matrix.menu.freq.250=250 MHz (Overclock) waveshare_rp2040_matrix.menu.freq.250.build.f_cpu=250000000L -waveshare_rp2040_matrix.menu.freq.275=275 MHz (Overclock) -waveshare_rp2040_matrix.menu.freq.275.build.f_cpu=275000000L +waveshare_rp2040_matrix.menu.freq.276=276 MHz (Overclock) +waveshare_rp2040_matrix.menu.freq.276.build.f_cpu=276000000L waveshare_rp2040_matrix.menu.freq.300=300 MHz (Overclock) waveshare_rp2040_matrix.menu.freq.300.build.f_cpu=300000000L waveshare_rp2040_matrix.menu.opt.Small=Small (-Os) (standard) @@ -29943,7 +33201,7 @@ waveshare_rp2040_matrix.menu.rtti.Enabled.build.flags.rtti= waveshare_rp2040_matrix.menu.stackprotect.Disabled=Disabled waveshare_rp2040_matrix.menu.stackprotect.Disabled.build.flags.stackprotect= waveshare_rp2040_matrix.menu.stackprotect.Enabled=Enabled -waveshare_rp2040_matrix.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +waveshare_rp2040_matrix.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all waveshare_rp2040_matrix.menu.exceptions.Disabled=Disabled waveshare_rp2040_matrix.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions waveshare_rp2040_matrix.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -30226,8 +33484,8 @@ waveshare_rp2040_pizero.menu.flash.16777216_15728640.build.flash_length=1044480 waveshare_rp2040_pizero.menu.flash.16777216_15728640.build.eeprom_start=285208576 waveshare_rp2040_pizero.menu.flash.16777216_15728640.build.fs_start=269479936 waveshare_rp2040_pizero.menu.flash.16777216_15728640.build.fs_end=285208576 -waveshare_rp2040_pizero.menu.freq.133=133 MHz -waveshare_rp2040_pizero.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_pizero.menu.freq.200=200 MHz +waveshare_rp2040_pizero.menu.freq.200.build.f_cpu=200000000L waveshare_rp2040_pizero.menu.freq.50=50 MHz waveshare_rp2040_pizero.menu.freq.50.build.f_cpu=50000000L waveshare_rp2040_pizero.menu.freq.100=100 MHz @@ -30238,20 +33496,20 @@ waveshare_rp2040_pizero.menu.freq.125=125 MHz waveshare_rp2040_pizero.menu.freq.125.build.f_cpu=125000000L waveshare_rp2040_pizero.menu.freq.128=128 MHz waveshare_rp2040_pizero.menu.freq.128.build.f_cpu=128000000L -waveshare_rp2040_pizero.menu.freq.150=150 MHz (Overclock) +waveshare_rp2040_pizero.menu.freq.133=133 MHz +waveshare_rp2040_pizero.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_pizero.menu.freq.150=150 MHz waveshare_rp2040_pizero.menu.freq.150.build.f_cpu=150000000L -waveshare_rp2040_pizero.menu.freq.175=175 MHz (Overclock) -waveshare_rp2040_pizero.menu.freq.175.build.f_cpu=175000000L -waveshare_rp2040_pizero.menu.freq.200=200 MHz (Overclock) -waveshare_rp2040_pizero.menu.freq.200.build.f_cpu=200000000L +waveshare_rp2040_pizero.menu.freq.176=176 MHz +waveshare_rp2040_pizero.menu.freq.176.build.f_cpu=176000000L waveshare_rp2040_pizero.menu.freq.225=225 MHz (Overclock) waveshare_rp2040_pizero.menu.freq.225.build.f_cpu=225000000L waveshare_rp2040_pizero.menu.freq.240=240 MHz (Overclock) waveshare_rp2040_pizero.menu.freq.240.build.f_cpu=240000000L waveshare_rp2040_pizero.menu.freq.250=250 MHz (Overclock) waveshare_rp2040_pizero.menu.freq.250.build.f_cpu=250000000L -waveshare_rp2040_pizero.menu.freq.275=275 MHz (Overclock) -waveshare_rp2040_pizero.menu.freq.275.build.f_cpu=275000000L +waveshare_rp2040_pizero.menu.freq.276=276 MHz (Overclock) +waveshare_rp2040_pizero.menu.freq.276.build.f_cpu=276000000L waveshare_rp2040_pizero.menu.freq.300=300 MHz (Overclock) waveshare_rp2040_pizero.menu.freq.300.build.f_cpu=300000000L waveshare_rp2040_pizero.menu.opt.Small=Small (-Os) (standard) @@ -30279,7 +33537,7 @@ waveshare_rp2040_pizero.menu.rtti.Enabled.build.flags.rtti= waveshare_rp2040_pizero.menu.stackprotect.Disabled=Disabled waveshare_rp2040_pizero.menu.stackprotect.Disabled.build.flags.stackprotect= waveshare_rp2040_pizero.menu.stackprotect.Enabled=Enabled -waveshare_rp2040_pizero.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +waveshare_rp2040_pizero.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all waveshare_rp2040_pizero.menu.exceptions.Disabled=Disabled waveshare_rp2040_pizero.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions waveshare_rp2040_pizero.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -30478,8 +33736,8 @@ waveshare_rp2040_plus_4mb.menu.flash.4194304_3145728.build.flash_length=1044480 waveshare_rp2040_plus_4mb.menu.flash.4194304_3145728.build.eeprom_start=272625664 waveshare_rp2040_plus_4mb.menu.flash.4194304_3145728.build.fs_start=269479936 waveshare_rp2040_plus_4mb.menu.flash.4194304_3145728.build.fs_end=272625664 -waveshare_rp2040_plus_4mb.menu.freq.133=133 MHz -waveshare_rp2040_plus_4mb.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_plus_4mb.menu.freq.200=200 MHz +waveshare_rp2040_plus_4mb.menu.freq.200.build.f_cpu=200000000L waveshare_rp2040_plus_4mb.menu.freq.50=50 MHz waveshare_rp2040_plus_4mb.menu.freq.50.build.f_cpu=50000000L waveshare_rp2040_plus_4mb.menu.freq.100=100 MHz @@ -30490,20 +33748,20 @@ waveshare_rp2040_plus_4mb.menu.freq.125=125 MHz waveshare_rp2040_plus_4mb.menu.freq.125.build.f_cpu=125000000L waveshare_rp2040_plus_4mb.menu.freq.128=128 MHz waveshare_rp2040_plus_4mb.menu.freq.128.build.f_cpu=128000000L -waveshare_rp2040_plus_4mb.menu.freq.150=150 MHz (Overclock) +waveshare_rp2040_plus_4mb.menu.freq.133=133 MHz +waveshare_rp2040_plus_4mb.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_plus_4mb.menu.freq.150=150 MHz waveshare_rp2040_plus_4mb.menu.freq.150.build.f_cpu=150000000L -waveshare_rp2040_plus_4mb.menu.freq.175=175 MHz (Overclock) -waveshare_rp2040_plus_4mb.menu.freq.175.build.f_cpu=175000000L -waveshare_rp2040_plus_4mb.menu.freq.200=200 MHz (Overclock) -waveshare_rp2040_plus_4mb.menu.freq.200.build.f_cpu=200000000L +waveshare_rp2040_plus_4mb.menu.freq.176=176 MHz +waveshare_rp2040_plus_4mb.menu.freq.176.build.f_cpu=176000000L waveshare_rp2040_plus_4mb.menu.freq.225=225 MHz (Overclock) waveshare_rp2040_plus_4mb.menu.freq.225.build.f_cpu=225000000L waveshare_rp2040_plus_4mb.menu.freq.240=240 MHz (Overclock) waveshare_rp2040_plus_4mb.menu.freq.240.build.f_cpu=240000000L waveshare_rp2040_plus_4mb.menu.freq.250=250 MHz (Overclock) waveshare_rp2040_plus_4mb.menu.freq.250.build.f_cpu=250000000L -waveshare_rp2040_plus_4mb.menu.freq.275=275 MHz (Overclock) -waveshare_rp2040_plus_4mb.menu.freq.275.build.f_cpu=275000000L +waveshare_rp2040_plus_4mb.menu.freq.276=276 MHz (Overclock) +waveshare_rp2040_plus_4mb.menu.freq.276.build.f_cpu=276000000L waveshare_rp2040_plus_4mb.menu.freq.300=300 MHz (Overclock) waveshare_rp2040_plus_4mb.menu.freq.300.build.f_cpu=300000000L waveshare_rp2040_plus_4mb.menu.opt.Small=Small (-Os) (standard) @@ -30531,7 +33789,7 @@ waveshare_rp2040_plus_4mb.menu.rtti.Enabled.build.flags.rtti= waveshare_rp2040_plus_4mb.menu.stackprotect.Disabled=Disabled waveshare_rp2040_plus_4mb.menu.stackprotect.Disabled.build.flags.stackprotect= waveshare_rp2040_plus_4mb.menu.stackprotect.Enabled=Enabled -waveshare_rp2040_plus_4mb.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +waveshare_rp2040_plus_4mb.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all waveshare_rp2040_plus_4mb.menu.exceptions.Disabled=Disabled waveshare_rp2040_plus_4mb.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions waveshare_rp2040_plus_4mb.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -30814,8 +34072,8 @@ waveshare_rp2040_plus_16mb.menu.flash.16777216_15728640.build.flash_length=10444 waveshare_rp2040_plus_16mb.menu.flash.16777216_15728640.build.eeprom_start=285208576 waveshare_rp2040_plus_16mb.menu.flash.16777216_15728640.build.fs_start=269479936 waveshare_rp2040_plus_16mb.menu.flash.16777216_15728640.build.fs_end=285208576 -waveshare_rp2040_plus_16mb.menu.freq.133=133 MHz -waveshare_rp2040_plus_16mb.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_plus_16mb.menu.freq.200=200 MHz +waveshare_rp2040_plus_16mb.menu.freq.200.build.f_cpu=200000000L waveshare_rp2040_plus_16mb.menu.freq.50=50 MHz waveshare_rp2040_plus_16mb.menu.freq.50.build.f_cpu=50000000L waveshare_rp2040_plus_16mb.menu.freq.100=100 MHz @@ -30826,20 +34084,20 @@ waveshare_rp2040_plus_16mb.menu.freq.125=125 MHz waveshare_rp2040_plus_16mb.menu.freq.125.build.f_cpu=125000000L waveshare_rp2040_plus_16mb.menu.freq.128=128 MHz waveshare_rp2040_plus_16mb.menu.freq.128.build.f_cpu=128000000L -waveshare_rp2040_plus_16mb.menu.freq.150=150 MHz (Overclock) +waveshare_rp2040_plus_16mb.menu.freq.133=133 MHz +waveshare_rp2040_plus_16mb.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_plus_16mb.menu.freq.150=150 MHz waveshare_rp2040_plus_16mb.menu.freq.150.build.f_cpu=150000000L -waveshare_rp2040_plus_16mb.menu.freq.175=175 MHz (Overclock) -waveshare_rp2040_plus_16mb.menu.freq.175.build.f_cpu=175000000L -waveshare_rp2040_plus_16mb.menu.freq.200=200 MHz (Overclock) -waveshare_rp2040_plus_16mb.menu.freq.200.build.f_cpu=200000000L +waveshare_rp2040_plus_16mb.menu.freq.176=176 MHz +waveshare_rp2040_plus_16mb.menu.freq.176.build.f_cpu=176000000L waveshare_rp2040_plus_16mb.menu.freq.225=225 MHz (Overclock) waveshare_rp2040_plus_16mb.menu.freq.225.build.f_cpu=225000000L waveshare_rp2040_plus_16mb.menu.freq.240=240 MHz (Overclock) waveshare_rp2040_plus_16mb.menu.freq.240.build.f_cpu=240000000L waveshare_rp2040_plus_16mb.menu.freq.250=250 MHz (Overclock) waveshare_rp2040_plus_16mb.menu.freq.250.build.f_cpu=250000000L -waveshare_rp2040_plus_16mb.menu.freq.275=275 MHz (Overclock) -waveshare_rp2040_plus_16mb.menu.freq.275.build.f_cpu=275000000L +waveshare_rp2040_plus_16mb.menu.freq.276=276 MHz (Overclock) +waveshare_rp2040_plus_16mb.menu.freq.276.build.f_cpu=276000000L waveshare_rp2040_plus_16mb.menu.freq.300=300 MHz (Overclock) waveshare_rp2040_plus_16mb.menu.freq.300.build.f_cpu=300000000L waveshare_rp2040_plus_16mb.menu.opt.Small=Small (-Os) (standard) @@ -30867,7 +34125,7 @@ waveshare_rp2040_plus_16mb.menu.rtti.Enabled.build.flags.rtti= waveshare_rp2040_plus_16mb.menu.stackprotect.Disabled=Disabled waveshare_rp2040_plus_16mb.menu.stackprotect.Disabled.build.flags.stackprotect= waveshare_rp2040_plus_16mb.menu.stackprotect.Enabled=Enabled -waveshare_rp2040_plus_16mb.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +waveshare_rp2040_plus_16mb.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all waveshare_rp2040_plus_16mb.menu.exceptions.Disabled=Disabled waveshare_rp2040_plus_16mb.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions waveshare_rp2040_plus_16mb.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -31052,8 +34310,8 @@ waveshare_rp2040_lcd_0_96.menu.flash.2097152_1048576.build.flash_length=1044480 waveshare_rp2040_lcd_0_96.menu.flash.2097152_1048576.build.eeprom_start=270528512 waveshare_rp2040_lcd_0_96.menu.flash.2097152_1048576.build.fs_start=269479936 waveshare_rp2040_lcd_0_96.menu.flash.2097152_1048576.build.fs_end=270528512 -waveshare_rp2040_lcd_0_96.menu.freq.133=133 MHz -waveshare_rp2040_lcd_0_96.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_lcd_0_96.menu.freq.200=200 MHz +waveshare_rp2040_lcd_0_96.menu.freq.200.build.f_cpu=200000000L waveshare_rp2040_lcd_0_96.menu.freq.50=50 MHz waveshare_rp2040_lcd_0_96.menu.freq.50.build.f_cpu=50000000L waveshare_rp2040_lcd_0_96.menu.freq.100=100 MHz @@ -31064,20 +34322,20 @@ waveshare_rp2040_lcd_0_96.menu.freq.125=125 MHz waveshare_rp2040_lcd_0_96.menu.freq.125.build.f_cpu=125000000L waveshare_rp2040_lcd_0_96.menu.freq.128=128 MHz waveshare_rp2040_lcd_0_96.menu.freq.128.build.f_cpu=128000000L -waveshare_rp2040_lcd_0_96.menu.freq.150=150 MHz (Overclock) +waveshare_rp2040_lcd_0_96.menu.freq.133=133 MHz +waveshare_rp2040_lcd_0_96.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_lcd_0_96.menu.freq.150=150 MHz waveshare_rp2040_lcd_0_96.menu.freq.150.build.f_cpu=150000000L -waveshare_rp2040_lcd_0_96.menu.freq.175=175 MHz (Overclock) -waveshare_rp2040_lcd_0_96.menu.freq.175.build.f_cpu=175000000L -waveshare_rp2040_lcd_0_96.menu.freq.200=200 MHz (Overclock) -waveshare_rp2040_lcd_0_96.menu.freq.200.build.f_cpu=200000000L +waveshare_rp2040_lcd_0_96.menu.freq.176=176 MHz +waveshare_rp2040_lcd_0_96.menu.freq.176.build.f_cpu=176000000L waveshare_rp2040_lcd_0_96.menu.freq.225=225 MHz (Overclock) waveshare_rp2040_lcd_0_96.menu.freq.225.build.f_cpu=225000000L waveshare_rp2040_lcd_0_96.menu.freq.240=240 MHz (Overclock) waveshare_rp2040_lcd_0_96.menu.freq.240.build.f_cpu=240000000L waveshare_rp2040_lcd_0_96.menu.freq.250=250 MHz (Overclock) waveshare_rp2040_lcd_0_96.menu.freq.250.build.f_cpu=250000000L -waveshare_rp2040_lcd_0_96.menu.freq.275=275 MHz (Overclock) -waveshare_rp2040_lcd_0_96.menu.freq.275.build.f_cpu=275000000L +waveshare_rp2040_lcd_0_96.menu.freq.276=276 MHz (Overclock) +waveshare_rp2040_lcd_0_96.menu.freq.276.build.f_cpu=276000000L waveshare_rp2040_lcd_0_96.menu.freq.300=300 MHz (Overclock) waveshare_rp2040_lcd_0_96.menu.freq.300.build.f_cpu=300000000L waveshare_rp2040_lcd_0_96.menu.opt.Small=Small (-Os) (standard) @@ -31105,7 +34363,7 @@ waveshare_rp2040_lcd_0_96.menu.rtti.Enabled.build.flags.rtti= waveshare_rp2040_lcd_0_96.menu.stackprotect.Disabled=Disabled waveshare_rp2040_lcd_0_96.menu.stackprotect.Disabled.build.flags.stackprotect= waveshare_rp2040_lcd_0_96.menu.stackprotect.Enabled=Enabled -waveshare_rp2040_lcd_0_96.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +waveshare_rp2040_lcd_0_96.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all waveshare_rp2040_lcd_0_96.menu.exceptions.Disabled=Disabled waveshare_rp2040_lcd_0_96.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions waveshare_rp2040_lcd_0_96.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -31290,8 +34548,8 @@ waveshare_rp2040_lcd_1_28.menu.flash.2097152_1048576.build.flash_length=1044480 waveshare_rp2040_lcd_1_28.menu.flash.2097152_1048576.build.eeprom_start=270528512 waveshare_rp2040_lcd_1_28.menu.flash.2097152_1048576.build.fs_start=269479936 waveshare_rp2040_lcd_1_28.menu.flash.2097152_1048576.build.fs_end=270528512 -waveshare_rp2040_lcd_1_28.menu.freq.133=133 MHz -waveshare_rp2040_lcd_1_28.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_lcd_1_28.menu.freq.200=200 MHz +waveshare_rp2040_lcd_1_28.menu.freq.200.build.f_cpu=200000000L waveshare_rp2040_lcd_1_28.menu.freq.50=50 MHz waveshare_rp2040_lcd_1_28.menu.freq.50.build.f_cpu=50000000L waveshare_rp2040_lcd_1_28.menu.freq.100=100 MHz @@ -31302,20 +34560,20 @@ waveshare_rp2040_lcd_1_28.menu.freq.125=125 MHz waveshare_rp2040_lcd_1_28.menu.freq.125.build.f_cpu=125000000L waveshare_rp2040_lcd_1_28.menu.freq.128=128 MHz waveshare_rp2040_lcd_1_28.menu.freq.128.build.f_cpu=128000000L -waveshare_rp2040_lcd_1_28.menu.freq.150=150 MHz (Overclock) +waveshare_rp2040_lcd_1_28.menu.freq.133=133 MHz +waveshare_rp2040_lcd_1_28.menu.freq.133.build.f_cpu=133000000L +waveshare_rp2040_lcd_1_28.menu.freq.150=150 MHz waveshare_rp2040_lcd_1_28.menu.freq.150.build.f_cpu=150000000L -waveshare_rp2040_lcd_1_28.menu.freq.175=175 MHz (Overclock) -waveshare_rp2040_lcd_1_28.menu.freq.175.build.f_cpu=175000000L -waveshare_rp2040_lcd_1_28.menu.freq.200=200 MHz (Overclock) -waveshare_rp2040_lcd_1_28.menu.freq.200.build.f_cpu=200000000L +waveshare_rp2040_lcd_1_28.menu.freq.176=176 MHz +waveshare_rp2040_lcd_1_28.menu.freq.176.build.f_cpu=176000000L waveshare_rp2040_lcd_1_28.menu.freq.225=225 MHz (Overclock) waveshare_rp2040_lcd_1_28.menu.freq.225.build.f_cpu=225000000L waveshare_rp2040_lcd_1_28.menu.freq.240=240 MHz (Overclock) waveshare_rp2040_lcd_1_28.menu.freq.240.build.f_cpu=240000000L waveshare_rp2040_lcd_1_28.menu.freq.250=250 MHz (Overclock) waveshare_rp2040_lcd_1_28.menu.freq.250.build.f_cpu=250000000L -waveshare_rp2040_lcd_1_28.menu.freq.275=275 MHz (Overclock) -waveshare_rp2040_lcd_1_28.menu.freq.275.build.f_cpu=275000000L +waveshare_rp2040_lcd_1_28.menu.freq.276=276 MHz (Overclock) +waveshare_rp2040_lcd_1_28.menu.freq.276.build.f_cpu=276000000L waveshare_rp2040_lcd_1_28.menu.freq.300=300 MHz (Overclock) waveshare_rp2040_lcd_1_28.menu.freq.300.build.f_cpu=300000000L waveshare_rp2040_lcd_1_28.menu.opt.Small=Small (-Os) (standard) @@ -31343,7 +34601,7 @@ waveshare_rp2040_lcd_1_28.menu.rtti.Enabled.build.flags.rtti= waveshare_rp2040_lcd_1_28.menu.stackprotect.Disabled=Disabled waveshare_rp2040_lcd_1_28.menu.stackprotect.Disabled.build.flags.stackprotect= waveshare_rp2040_lcd_1_28.menu.stackprotect.Enabled=Enabled -waveshare_rp2040_lcd_1_28.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +waveshare_rp2040_lcd_1_28.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all waveshare_rp2040_lcd_1_28.menu.exceptions.Disabled=Disabled waveshare_rp2040_lcd_1_28.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions waveshare_rp2040_lcd_1_28.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -31528,8 +34786,8 @@ wiznet_5100s_evb_pico.menu.flash.2097152_1048576.build.flash_length=1044480 wiznet_5100s_evb_pico.menu.flash.2097152_1048576.build.eeprom_start=270528512 wiznet_5100s_evb_pico.menu.flash.2097152_1048576.build.fs_start=269479936 wiznet_5100s_evb_pico.menu.flash.2097152_1048576.build.fs_end=270528512 -wiznet_5100s_evb_pico.menu.freq.133=133 MHz -wiznet_5100s_evb_pico.menu.freq.133.build.f_cpu=133000000L +wiznet_5100s_evb_pico.menu.freq.200=200 MHz +wiznet_5100s_evb_pico.menu.freq.200.build.f_cpu=200000000L wiznet_5100s_evb_pico.menu.freq.50=50 MHz wiznet_5100s_evb_pico.menu.freq.50.build.f_cpu=50000000L wiznet_5100s_evb_pico.menu.freq.100=100 MHz @@ -31540,20 +34798,20 @@ wiznet_5100s_evb_pico.menu.freq.125=125 MHz wiznet_5100s_evb_pico.menu.freq.125.build.f_cpu=125000000L wiznet_5100s_evb_pico.menu.freq.128=128 MHz wiznet_5100s_evb_pico.menu.freq.128.build.f_cpu=128000000L -wiznet_5100s_evb_pico.menu.freq.150=150 MHz (Overclock) +wiznet_5100s_evb_pico.menu.freq.133=133 MHz +wiznet_5100s_evb_pico.menu.freq.133.build.f_cpu=133000000L +wiznet_5100s_evb_pico.menu.freq.150=150 MHz wiznet_5100s_evb_pico.menu.freq.150.build.f_cpu=150000000L -wiznet_5100s_evb_pico.menu.freq.175=175 MHz (Overclock) -wiznet_5100s_evb_pico.menu.freq.175.build.f_cpu=175000000L -wiznet_5100s_evb_pico.menu.freq.200=200 MHz (Overclock) -wiznet_5100s_evb_pico.menu.freq.200.build.f_cpu=200000000L +wiznet_5100s_evb_pico.menu.freq.176=176 MHz +wiznet_5100s_evb_pico.menu.freq.176.build.f_cpu=176000000L wiznet_5100s_evb_pico.menu.freq.225=225 MHz (Overclock) wiznet_5100s_evb_pico.menu.freq.225.build.f_cpu=225000000L wiznet_5100s_evb_pico.menu.freq.240=240 MHz (Overclock) wiznet_5100s_evb_pico.menu.freq.240.build.f_cpu=240000000L wiznet_5100s_evb_pico.menu.freq.250=250 MHz (Overclock) wiznet_5100s_evb_pico.menu.freq.250.build.f_cpu=250000000L -wiznet_5100s_evb_pico.menu.freq.275=275 MHz (Overclock) -wiznet_5100s_evb_pico.menu.freq.275.build.f_cpu=275000000L +wiznet_5100s_evb_pico.menu.freq.276=276 MHz (Overclock) +wiznet_5100s_evb_pico.menu.freq.276.build.f_cpu=276000000L wiznet_5100s_evb_pico.menu.freq.300=300 MHz (Overclock) wiznet_5100s_evb_pico.menu.freq.300.build.f_cpu=300000000L wiznet_5100s_evb_pico.menu.opt.Small=Small (-Os) (standard) @@ -31581,7 +34839,7 @@ wiznet_5100s_evb_pico.menu.rtti.Enabled.build.flags.rtti= wiznet_5100s_evb_pico.menu.stackprotect.Disabled=Disabled wiznet_5100s_evb_pico.menu.stackprotect.Disabled.build.flags.stackprotect= wiznet_5100s_evb_pico.menu.stackprotect.Enabled=Enabled -wiznet_5100s_evb_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +wiznet_5100s_evb_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all wiznet_5100s_evb_pico.menu.exceptions.Disabled=Disabled wiznet_5100s_evb_pico.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions wiznet_5100s_evb_pico.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -31789,8 +35047,8 @@ wiznet_5100s_evb_pico2.menu.freq.128=128 MHz wiznet_5100s_evb_pico2.menu.freq.128.build.f_cpu=128000000L wiznet_5100s_evb_pico2.menu.freq.133=133 MHz wiznet_5100s_evb_pico2.menu.freq.133.build.f_cpu=133000000L -wiznet_5100s_evb_pico2.menu.freq.175=175 MHz (Overclock) -wiznet_5100s_evb_pico2.menu.freq.175.build.f_cpu=175000000L +wiznet_5100s_evb_pico2.menu.freq.176=176 MHz (Overclock) +wiznet_5100s_evb_pico2.menu.freq.176.build.f_cpu=176000000L wiznet_5100s_evb_pico2.menu.freq.200=200 MHz (Overclock) wiznet_5100s_evb_pico2.menu.freq.200.build.f_cpu=200000000L wiznet_5100s_evb_pico2.menu.freq.225=225 MHz (Overclock) @@ -31799,8 +35057,8 @@ wiznet_5100s_evb_pico2.menu.freq.240=240 MHz (Overclock) wiznet_5100s_evb_pico2.menu.freq.240.build.f_cpu=240000000L wiznet_5100s_evb_pico2.menu.freq.250=250 MHz (Overclock) wiznet_5100s_evb_pico2.menu.freq.250.build.f_cpu=250000000L -wiznet_5100s_evb_pico2.menu.freq.275=275 MHz (Overclock) -wiznet_5100s_evb_pico2.menu.freq.275.build.f_cpu=275000000L +wiznet_5100s_evb_pico2.menu.freq.276=276 MHz (Overclock) +wiznet_5100s_evb_pico2.menu.freq.276.build.f_cpu=276000000L wiznet_5100s_evb_pico2.menu.freq.300=300 MHz (Overclock) wiznet_5100s_evb_pico2.menu.freq.300.build.f_cpu=300000000L wiznet_5100s_evb_pico2.menu.opt.Small=Small (-Os) (standard) @@ -31828,7 +35086,7 @@ wiznet_5100s_evb_pico2.menu.rtti.Enabled.build.flags.rtti= wiznet_5100s_evb_pico2.menu.stackprotect.Disabled=Disabled wiznet_5100s_evb_pico2.menu.stackprotect.Disabled.build.flags.stackprotect= wiznet_5100s_evb_pico2.menu.stackprotect.Enabled=Enabled -wiznet_5100s_evb_pico2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +wiznet_5100s_evb_pico2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all wiznet_5100s_evb_pico2.menu.exceptions.Disabled=Disabled wiznet_5100s_evb_pico2.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions wiznet_5100s_evb_pico2.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -32013,8 +35271,8 @@ wiznet_wizfi360_evb_pico.menu.flash.2097152_1048576.build.flash_length=1044480 wiznet_wizfi360_evb_pico.menu.flash.2097152_1048576.build.eeprom_start=270528512 wiznet_wizfi360_evb_pico.menu.flash.2097152_1048576.build.fs_start=269479936 wiznet_wizfi360_evb_pico.menu.flash.2097152_1048576.build.fs_end=270528512 -wiznet_wizfi360_evb_pico.menu.freq.133=133 MHz -wiznet_wizfi360_evb_pico.menu.freq.133.build.f_cpu=133000000L +wiznet_wizfi360_evb_pico.menu.freq.200=200 MHz +wiznet_wizfi360_evb_pico.menu.freq.200.build.f_cpu=200000000L wiznet_wizfi360_evb_pico.menu.freq.50=50 MHz wiznet_wizfi360_evb_pico.menu.freq.50.build.f_cpu=50000000L wiznet_wizfi360_evb_pico.menu.freq.100=100 MHz @@ -32025,20 +35283,20 @@ wiznet_wizfi360_evb_pico.menu.freq.125=125 MHz wiznet_wizfi360_evb_pico.menu.freq.125.build.f_cpu=125000000L wiznet_wizfi360_evb_pico.menu.freq.128=128 MHz wiznet_wizfi360_evb_pico.menu.freq.128.build.f_cpu=128000000L -wiznet_wizfi360_evb_pico.menu.freq.150=150 MHz (Overclock) +wiznet_wizfi360_evb_pico.menu.freq.133=133 MHz +wiznet_wizfi360_evb_pico.menu.freq.133.build.f_cpu=133000000L +wiznet_wizfi360_evb_pico.menu.freq.150=150 MHz wiznet_wizfi360_evb_pico.menu.freq.150.build.f_cpu=150000000L -wiznet_wizfi360_evb_pico.menu.freq.175=175 MHz (Overclock) -wiznet_wizfi360_evb_pico.menu.freq.175.build.f_cpu=175000000L -wiznet_wizfi360_evb_pico.menu.freq.200=200 MHz (Overclock) -wiznet_wizfi360_evb_pico.menu.freq.200.build.f_cpu=200000000L +wiznet_wizfi360_evb_pico.menu.freq.176=176 MHz +wiznet_wizfi360_evb_pico.menu.freq.176.build.f_cpu=176000000L wiznet_wizfi360_evb_pico.menu.freq.225=225 MHz (Overclock) wiznet_wizfi360_evb_pico.menu.freq.225.build.f_cpu=225000000L wiznet_wizfi360_evb_pico.menu.freq.240=240 MHz (Overclock) wiznet_wizfi360_evb_pico.menu.freq.240.build.f_cpu=240000000L wiznet_wizfi360_evb_pico.menu.freq.250=250 MHz (Overclock) wiznet_wizfi360_evb_pico.menu.freq.250.build.f_cpu=250000000L -wiznet_wizfi360_evb_pico.menu.freq.275=275 MHz (Overclock) -wiznet_wizfi360_evb_pico.menu.freq.275.build.f_cpu=275000000L +wiznet_wizfi360_evb_pico.menu.freq.276=276 MHz (Overclock) +wiznet_wizfi360_evb_pico.menu.freq.276.build.f_cpu=276000000L wiznet_wizfi360_evb_pico.menu.freq.300=300 MHz (Overclock) wiznet_wizfi360_evb_pico.menu.freq.300.build.f_cpu=300000000L wiznet_wizfi360_evb_pico.menu.opt.Small=Small (-Os) (standard) @@ -32066,7 +35324,7 @@ wiznet_wizfi360_evb_pico.menu.rtti.Enabled.build.flags.rtti= wiznet_wizfi360_evb_pico.menu.stackprotect.Disabled=Disabled wiznet_wizfi360_evb_pico.menu.stackprotect.Disabled.build.flags.stackprotect= wiznet_wizfi360_evb_pico.menu.stackprotect.Enabled=Enabled -wiznet_wizfi360_evb_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +wiznet_wizfi360_evb_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all wiznet_wizfi360_evb_pico.menu.exceptions.Disabled=Disabled wiznet_wizfi360_evb_pico.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions wiznet_wizfi360_evb_pico.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -32251,8 +35509,8 @@ wiznet_5500_evb_pico.menu.flash.2097152_1048576.build.flash_length=1044480 wiznet_5500_evb_pico.menu.flash.2097152_1048576.build.eeprom_start=270528512 wiznet_5500_evb_pico.menu.flash.2097152_1048576.build.fs_start=269479936 wiznet_5500_evb_pico.menu.flash.2097152_1048576.build.fs_end=270528512 -wiznet_5500_evb_pico.menu.freq.133=133 MHz -wiznet_5500_evb_pico.menu.freq.133.build.f_cpu=133000000L +wiznet_5500_evb_pico.menu.freq.200=200 MHz +wiznet_5500_evb_pico.menu.freq.200.build.f_cpu=200000000L wiznet_5500_evb_pico.menu.freq.50=50 MHz wiznet_5500_evb_pico.menu.freq.50.build.f_cpu=50000000L wiznet_5500_evb_pico.menu.freq.100=100 MHz @@ -32263,20 +35521,20 @@ wiznet_5500_evb_pico.menu.freq.125=125 MHz wiznet_5500_evb_pico.menu.freq.125.build.f_cpu=125000000L wiznet_5500_evb_pico.menu.freq.128=128 MHz wiznet_5500_evb_pico.menu.freq.128.build.f_cpu=128000000L -wiznet_5500_evb_pico.menu.freq.150=150 MHz (Overclock) +wiznet_5500_evb_pico.menu.freq.133=133 MHz +wiznet_5500_evb_pico.menu.freq.133.build.f_cpu=133000000L +wiznet_5500_evb_pico.menu.freq.150=150 MHz wiznet_5500_evb_pico.menu.freq.150.build.f_cpu=150000000L -wiznet_5500_evb_pico.menu.freq.175=175 MHz (Overclock) -wiznet_5500_evb_pico.menu.freq.175.build.f_cpu=175000000L -wiznet_5500_evb_pico.menu.freq.200=200 MHz (Overclock) -wiznet_5500_evb_pico.menu.freq.200.build.f_cpu=200000000L +wiznet_5500_evb_pico.menu.freq.176=176 MHz +wiznet_5500_evb_pico.menu.freq.176.build.f_cpu=176000000L wiznet_5500_evb_pico.menu.freq.225=225 MHz (Overclock) wiznet_5500_evb_pico.menu.freq.225.build.f_cpu=225000000L wiznet_5500_evb_pico.menu.freq.240=240 MHz (Overclock) wiznet_5500_evb_pico.menu.freq.240.build.f_cpu=240000000L wiznet_5500_evb_pico.menu.freq.250=250 MHz (Overclock) wiznet_5500_evb_pico.menu.freq.250.build.f_cpu=250000000L -wiznet_5500_evb_pico.menu.freq.275=275 MHz (Overclock) -wiznet_5500_evb_pico.menu.freq.275.build.f_cpu=275000000L +wiznet_5500_evb_pico.menu.freq.276=276 MHz (Overclock) +wiznet_5500_evb_pico.menu.freq.276.build.f_cpu=276000000L wiznet_5500_evb_pico.menu.freq.300=300 MHz (Overclock) wiznet_5500_evb_pico.menu.freq.300.build.f_cpu=300000000L wiznet_5500_evb_pico.menu.opt.Small=Small (-Os) (standard) @@ -32304,7 +35562,7 @@ wiznet_5500_evb_pico.menu.rtti.Enabled.build.flags.rtti= wiznet_5500_evb_pico.menu.stackprotect.Disabled=Disabled wiznet_5500_evb_pico.menu.stackprotect.Disabled.build.flags.stackprotect= wiznet_5500_evb_pico.menu.stackprotect.Enabled=Enabled -wiznet_5500_evb_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +wiznet_5500_evb_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all wiznet_5500_evb_pico.menu.exceptions.Disabled=Disabled wiznet_5500_evb_pico.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions wiznet_5500_evb_pico.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -32512,8 +35770,8 @@ wiznet_5500_evb_pico2.menu.freq.128=128 MHz wiznet_5500_evb_pico2.menu.freq.128.build.f_cpu=128000000L wiznet_5500_evb_pico2.menu.freq.133=133 MHz wiznet_5500_evb_pico2.menu.freq.133.build.f_cpu=133000000L -wiznet_5500_evb_pico2.menu.freq.175=175 MHz (Overclock) -wiznet_5500_evb_pico2.menu.freq.175.build.f_cpu=175000000L +wiznet_5500_evb_pico2.menu.freq.176=176 MHz (Overclock) +wiznet_5500_evb_pico2.menu.freq.176.build.f_cpu=176000000L wiznet_5500_evb_pico2.menu.freq.200=200 MHz (Overclock) wiznet_5500_evb_pico2.menu.freq.200.build.f_cpu=200000000L wiznet_5500_evb_pico2.menu.freq.225=225 MHz (Overclock) @@ -32522,8 +35780,8 @@ wiznet_5500_evb_pico2.menu.freq.240=240 MHz (Overclock) wiznet_5500_evb_pico2.menu.freq.240.build.f_cpu=240000000L wiznet_5500_evb_pico2.menu.freq.250=250 MHz (Overclock) wiznet_5500_evb_pico2.menu.freq.250.build.f_cpu=250000000L -wiznet_5500_evb_pico2.menu.freq.275=275 MHz (Overclock) -wiznet_5500_evb_pico2.menu.freq.275.build.f_cpu=275000000L +wiznet_5500_evb_pico2.menu.freq.276=276 MHz (Overclock) +wiznet_5500_evb_pico2.menu.freq.276.build.f_cpu=276000000L wiznet_5500_evb_pico2.menu.freq.300=300 MHz (Overclock) wiznet_5500_evb_pico2.menu.freq.300.build.f_cpu=300000000L wiznet_5500_evb_pico2.menu.opt.Small=Small (-Os) (standard) @@ -32551,7 +35809,7 @@ wiznet_5500_evb_pico2.menu.rtti.Enabled.build.flags.rtti= wiznet_5500_evb_pico2.menu.stackprotect.Disabled=Disabled wiznet_5500_evb_pico2.menu.stackprotect.Disabled.build.flags.stackprotect= wiznet_5500_evb_pico2.menu.stackprotect.Enabled=Enabled -wiznet_5500_evb_pico2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +wiznet_5500_evb_pico2.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all wiznet_5500_evb_pico2.menu.exceptions.Disabled=Disabled wiznet_5500_evb_pico2.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions wiznet_5500_evb_pico2.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -32736,8 +35994,8 @@ wiznet_55rp20_evb_pico.menu.flash.2097152_1048576.build.flash_length=1044480 wiznet_55rp20_evb_pico.menu.flash.2097152_1048576.build.eeprom_start=270528512 wiznet_55rp20_evb_pico.menu.flash.2097152_1048576.build.fs_start=269479936 wiznet_55rp20_evb_pico.menu.flash.2097152_1048576.build.fs_end=270528512 -wiznet_55rp20_evb_pico.menu.freq.133=133 MHz -wiznet_55rp20_evb_pico.menu.freq.133.build.f_cpu=133000000L +wiznet_55rp20_evb_pico.menu.freq.200=200 MHz +wiznet_55rp20_evb_pico.menu.freq.200.build.f_cpu=200000000L wiznet_55rp20_evb_pico.menu.freq.50=50 MHz wiznet_55rp20_evb_pico.menu.freq.50.build.f_cpu=50000000L wiznet_55rp20_evb_pico.menu.freq.100=100 MHz @@ -32748,20 +36006,20 @@ wiznet_55rp20_evb_pico.menu.freq.125=125 MHz wiznet_55rp20_evb_pico.menu.freq.125.build.f_cpu=125000000L wiznet_55rp20_evb_pico.menu.freq.128=128 MHz wiznet_55rp20_evb_pico.menu.freq.128.build.f_cpu=128000000L -wiznet_55rp20_evb_pico.menu.freq.150=150 MHz (Overclock) +wiznet_55rp20_evb_pico.menu.freq.133=133 MHz +wiznet_55rp20_evb_pico.menu.freq.133.build.f_cpu=133000000L +wiznet_55rp20_evb_pico.menu.freq.150=150 MHz wiznet_55rp20_evb_pico.menu.freq.150.build.f_cpu=150000000L -wiznet_55rp20_evb_pico.menu.freq.175=175 MHz (Overclock) -wiznet_55rp20_evb_pico.menu.freq.175.build.f_cpu=175000000L -wiznet_55rp20_evb_pico.menu.freq.200=200 MHz (Overclock) -wiznet_55rp20_evb_pico.menu.freq.200.build.f_cpu=200000000L +wiznet_55rp20_evb_pico.menu.freq.176=176 MHz +wiznet_55rp20_evb_pico.menu.freq.176.build.f_cpu=176000000L wiznet_55rp20_evb_pico.menu.freq.225=225 MHz (Overclock) wiznet_55rp20_evb_pico.menu.freq.225.build.f_cpu=225000000L wiznet_55rp20_evb_pico.menu.freq.240=240 MHz (Overclock) wiznet_55rp20_evb_pico.menu.freq.240.build.f_cpu=240000000L wiznet_55rp20_evb_pico.menu.freq.250=250 MHz (Overclock) wiznet_55rp20_evb_pico.menu.freq.250.build.f_cpu=250000000L -wiznet_55rp20_evb_pico.menu.freq.275=275 MHz (Overclock) -wiznet_55rp20_evb_pico.menu.freq.275.build.f_cpu=275000000L +wiznet_55rp20_evb_pico.menu.freq.276=276 MHz (Overclock) +wiznet_55rp20_evb_pico.menu.freq.276.build.f_cpu=276000000L wiznet_55rp20_evb_pico.menu.freq.300=300 MHz (Overclock) wiznet_55rp20_evb_pico.menu.freq.300.build.f_cpu=300000000L wiznet_55rp20_evb_pico.menu.opt.Small=Small (-Os) (standard) @@ -32789,7 +36047,7 @@ wiznet_55rp20_evb_pico.menu.rtti.Enabled.build.flags.rtti= wiznet_55rp20_evb_pico.menu.stackprotect.Disabled=Disabled wiznet_55rp20_evb_pico.menu.stackprotect.Disabled.build.flags.stackprotect= wiznet_55rp20_evb_pico.menu.stackprotect.Enabled=Enabled -wiznet_55rp20_evb_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +wiznet_55rp20_evb_pico.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all wiznet_55rp20_evb_pico.menu.exceptions.Disabled=Disabled wiznet_55rp20_evb_pico.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions wiznet_55rp20_evb_pico.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -32915,6 +36173,34 @@ generic.menu.flash.2097152_0.build.flash_length=2093056 generic.menu.flash.2097152_0.build.eeprom_start=270528512 generic.menu.flash.2097152_0.build.fs_start=270528512 generic.menu.flash.2097152_0.build.fs_end=270528512 +generic.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +generic.menu.flash.2097152_65536.upload.maximum_size=2027520 +generic.menu.flash.2097152_65536.build.flash_total=2097152 +generic.menu.flash.2097152_65536.build.flash_length=2027520 +generic.menu.flash.2097152_65536.build.eeprom_start=270528512 +generic.menu.flash.2097152_65536.build.fs_start=270462976 +generic.menu.flash.2097152_65536.build.fs_end=270528512 +generic.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +generic.menu.flash.2097152_131072.upload.maximum_size=1961984 +generic.menu.flash.2097152_131072.build.flash_total=2097152 +generic.menu.flash.2097152_131072.build.flash_length=1961984 +generic.menu.flash.2097152_131072.build.eeprom_start=270528512 +generic.menu.flash.2097152_131072.build.fs_start=270397440 +generic.menu.flash.2097152_131072.build.fs_end=270528512 +generic.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +generic.menu.flash.2097152_262144.upload.maximum_size=1830912 +generic.menu.flash.2097152_262144.build.flash_total=2097152 +generic.menu.flash.2097152_262144.build.flash_length=1830912 +generic.menu.flash.2097152_262144.build.eeprom_start=270528512 +generic.menu.flash.2097152_262144.build.fs_start=270266368 +generic.menu.flash.2097152_262144.build.fs_end=270528512 +generic.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +generic.menu.flash.2097152_524288.upload.maximum_size=1568768 +generic.menu.flash.2097152_524288.build.flash_total=2097152 +generic.menu.flash.2097152_524288.build.flash_length=1568768 +generic.menu.flash.2097152_524288.build.eeprom_start=270528512 +generic.menu.flash.2097152_524288.build.fs_start=270004224 +generic.menu.flash.2097152_524288.build.fs_end=270528512 generic.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) generic.menu.flash.2097152_1048576.upload.maximum_size=1044480 generic.menu.flash.2097152_1048576.build.flash_total=2097152 @@ -33020,8 +36306,8 @@ generic.menu.flash.16777216_2097152.build.flash_length=14675968 generic.menu.flash.16777216_2097152.build.eeprom_start=285208576 generic.menu.flash.16777216_2097152.build.fs_start=283111424 generic.menu.flash.16777216_2097152.build.fs_end=285208576 -generic.menu.freq.133=133 MHz -generic.menu.freq.133.build.f_cpu=133000000L +generic.menu.freq.200=200 MHz +generic.menu.freq.200.build.f_cpu=200000000L generic.menu.freq.50=50 MHz generic.menu.freq.50.build.f_cpu=50000000L generic.menu.freq.100=100 MHz @@ -33032,20 +36318,20 @@ generic.menu.freq.125=125 MHz generic.menu.freq.125.build.f_cpu=125000000L generic.menu.freq.128=128 MHz generic.menu.freq.128.build.f_cpu=128000000L -generic.menu.freq.150=150 MHz (Overclock) +generic.menu.freq.133=133 MHz +generic.menu.freq.133.build.f_cpu=133000000L +generic.menu.freq.150=150 MHz generic.menu.freq.150.build.f_cpu=150000000L -generic.menu.freq.175=175 MHz (Overclock) -generic.menu.freq.175.build.f_cpu=175000000L -generic.menu.freq.200=200 MHz (Overclock) -generic.menu.freq.200.build.f_cpu=200000000L +generic.menu.freq.176=176 MHz +generic.menu.freq.176.build.f_cpu=176000000L generic.menu.freq.225=225 MHz (Overclock) generic.menu.freq.225.build.f_cpu=225000000L generic.menu.freq.240=240 MHz (Overclock) generic.menu.freq.240.build.f_cpu=240000000L generic.menu.freq.250=250 MHz (Overclock) generic.menu.freq.250.build.f_cpu=250000000L -generic.menu.freq.275=275 MHz (Overclock) -generic.menu.freq.275.build.f_cpu=275000000L +generic.menu.freq.276=276 MHz (Overclock) +generic.menu.freq.276.build.f_cpu=276000000L generic.menu.freq.300=300 MHz (Overclock) generic.menu.freq.300.build.f_cpu=300000000L generic.menu.opt.Small=Small (-Os) (standard) @@ -33073,7 +36359,7 @@ generic.menu.rtti.Enabled.build.flags.rtti= generic.menu.stackprotect.Disabled=Disabled generic.menu.stackprotect.Disabled.build.flags.stackprotect= generic.menu.stackprotect.Enabled=Enabled -generic.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +generic.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all generic.menu.exceptions.Disabled=Disabled generic.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions generic.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ @@ -33215,6 +36501,34 @@ generic_rp2350.menu.flash.2097152_0.build.flash_length=2088960 generic_rp2350.menu.flash.2097152_0.build.eeprom_start=270524416 generic_rp2350.menu.flash.2097152_0.build.fs_start=270524416 generic_rp2350.menu.flash.2097152_0.build.fs_end=270524416 +generic_rp2350.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +generic_rp2350.menu.flash.2097152_65536.upload.maximum_size=2023424 +generic_rp2350.menu.flash.2097152_65536.build.flash_total=2097152 +generic_rp2350.menu.flash.2097152_65536.build.flash_length=2023424 +generic_rp2350.menu.flash.2097152_65536.build.eeprom_start=270524416 +generic_rp2350.menu.flash.2097152_65536.build.fs_start=270458880 +generic_rp2350.menu.flash.2097152_65536.build.fs_end=270524416 +generic_rp2350.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +generic_rp2350.menu.flash.2097152_131072.upload.maximum_size=1957888 +generic_rp2350.menu.flash.2097152_131072.build.flash_total=2097152 +generic_rp2350.menu.flash.2097152_131072.build.flash_length=1957888 +generic_rp2350.menu.flash.2097152_131072.build.eeprom_start=270524416 +generic_rp2350.menu.flash.2097152_131072.build.fs_start=270393344 +generic_rp2350.menu.flash.2097152_131072.build.fs_end=270524416 +generic_rp2350.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +generic_rp2350.menu.flash.2097152_262144.upload.maximum_size=1826816 +generic_rp2350.menu.flash.2097152_262144.build.flash_total=2097152 +generic_rp2350.menu.flash.2097152_262144.build.flash_length=1826816 +generic_rp2350.menu.flash.2097152_262144.build.eeprom_start=270524416 +generic_rp2350.menu.flash.2097152_262144.build.fs_start=270262272 +generic_rp2350.menu.flash.2097152_262144.build.fs_end=270524416 +generic_rp2350.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +generic_rp2350.menu.flash.2097152_524288.upload.maximum_size=1564672 +generic_rp2350.menu.flash.2097152_524288.build.flash_total=2097152 +generic_rp2350.menu.flash.2097152_524288.build.flash_length=1564672 +generic_rp2350.menu.flash.2097152_524288.build.eeprom_start=270524416 +generic_rp2350.menu.flash.2097152_524288.build.fs_start=270000128 +generic_rp2350.menu.flash.2097152_524288.build.fs_end=270524416 generic_rp2350.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) generic_rp2350.menu.flash.2097152_1048576.upload.maximum_size=1040384 generic_rp2350.menu.flash.2097152_1048576.build.flash_total=2097152 @@ -33348,8 +36662,8 @@ generic_rp2350.menu.freq.128=128 MHz generic_rp2350.menu.freq.128.build.f_cpu=128000000L generic_rp2350.menu.freq.133=133 MHz generic_rp2350.menu.freq.133.build.f_cpu=133000000L -generic_rp2350.menu.freq.175=175 MHz (Overclock) -generic_rp2350.menu.freq.175.build.f_cpu=175000000L +generic_rp2350.menu.freq.176=176 MHz (Overclock) +generic_rp2350.menu.freq.176.build.f_cpu=176000000L generic_rp2350.menu.freq.200=200 MHz (Overclock) generic_rp2350.menu.freq.200.build.f_cpu=200000000L generic_rp2350.menu.freq.225=225 MHz (Overclock) @@ -33358,14 +36672,14 @@ generic_rp2350.menu.freq.240=240 MHz (Overclock) generic_rp2350.menu.freq.240.build.f_cpu=240000000L generic_rp2350.menu.freq.250=250 MHz (Overclock) generic_rp2350.menu.freq.250.build.f_cpu=250000000L -generic_rp2350.menu.freq.275=275 MHz (Overclock) -generic_rp2350.menu.freq.275.build.f_cpu=275000000L +generic_rp2350.menu.freq.276=276 MHz (Overclock) +generic_rp2350.menu.freq.276.build.f_cpu=276000000L generic_rp2350.menu.freq.300=300 MHz (Overclock) generic_rp2350.menu.freq.300.build.f_cpu=300000000L generic_rp2350.menu.variantchip.RP2350A=RP2350A -generic_rp2350.menu.variantchip.RP2350A.build.variantdefines=-DPICO_RP2350A=1 +generic_rp2350.menu.variantchip.RP2350A.build.variantdefines=-D__PICO_RP2350A=1 generic_rp2350.menu.variantchip.RP2530B=RP2530B -generic_rp2350.menu.variantchip.RP2530B.build.variantdefines=-DPICO_RP2350B=1 +generic_rp2350.menu.variantchip.RP2530B.build.variantdefines=-D__PICO_RP2350A=0 generic_rp2350.menu.psramcs.GPIOnone=None generic_rp2350.menu.psramcs.GPIOnone.build.psram_cs= generic_rp2350.menu.psramcs.GPIO0=GPIO 0 @@ -33501,7 +36815,7 @@ generic_rp2350.menu.rtti.Enabled.build.flags.rtti= generic_rp2350.menu.stackprotect.Disabled=Disabled generic_rp2350.menu.stackprotect.Disabled.build.flags.stackprotect= generic_rp2350.menu.stackprotect.Enabled=Enabled -generic_rp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +generic_rp2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all generic_rp2350.menu.exceptions.Disabled=Disabled generic_rp2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions generic_rp2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ diff --git a/cores/rp2040/Arduino.h b/cores/rp2040/Arduino.h index b3da99555..515caf7f4 100644 --- a/cores/rp2040/Arduino.h +++ b/cores/rp2040/Arduino.h @@ -27,10 +27,23 @@ #include "RP2040Version.h" #include "api/ArduinoAPI.h" #include "api/itoa.h" // ARM toolchain doesn't provide itoa etc, provide them +#include +#undef PICO_RP2350A // Set in the RP2350 SDK boards file, overridden in the variant pins_arduino.h #include #include // Required for the port*Register macros #include "debug_internal.h" +// Chip sanity checking. SDK uses interesting way of separating 2350A from 2350B, see https://github.com/raspberrypi/pico-sdk/issues/2364 +#if (!defined(PICO_RP2040) && !defined(PICO_RP2350)) || defined(PICO_RP2040) && defined(PICO_RP2350) +#error Invalid core definition. Either PICO_RP2040 or PICO_RP2350 must be defined. +#endif +#if defined(PICO_RP2350) && !defined(PICO_RP2350A) +#error Invalid RP2350 definition. Need to set PICO_RP2350A=0/1 for A/B variant +#endif +#if defined(PICO_RP2350B) +#error Do not define PICO_RP2350B. Use PICO_RP2350A=0 to indicate RP2350B. See the SDK for more details +#endif + // Try and make the best of the old Arduino abs() macro. When in C++, use // the sane std::abs() call, but for C code use their macro since stdlib abs() // is int but their macro "works" for everything (with potential side effects) @@ -110,7 +123,7 @@ extern bool __isFreeRTOS; #endif #ifndef PGM_VOID_P -#define PGM_VOID_P void * +#define PGM_VOID_P const void * #endif #ifdef __cplusplus @@ -152,10 +165,14 @@ constexpr uint64_t __bitset(const int (&a)[N], size_t i = 0U) { #define PSRAM __attribute__((section("\".psram\""))) // General GPIO/ADC layout info -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A #define __GPIOCNT 48 #define __FIRSTANALOGGPIO 40 #else #define __GPIOCNT 30 #define __FIRSTANALOGGPIO 26 #endif + +#ifdef __cplusplus +using namespace arduino; +#endif diff --git a/cores/rp2040/Bootsel.h b/cores/rp2040/Bootsel.h index 01ccc6044..7a79487c9 100644 --- a/cores/rp2040/Bootsel.h +++ b/cores/rp2040/Bootsel.h @@ -20,10 +20,21 @@ #pragma once +/** + @brief Wrapper class for polling the BOOTSEL button +*/ class __Bootsel { public: __Bootsel() { } + /** + @brief Get state of the BOOTSEL pin + + @returns True if BOOTSEL pushed + */ operator bool(); }; +/** + @brief BOOTSEL accessor instance +*/ extern __Bootsel BOOTSEL; diff --git a/cores/rp2040/IPAddress.h b/cores/rp2040/IPAddress.h index 210a91d42..7d94d46e7 100644 --- a/cores/rp2040/IPAddress.h +++ b/cores/rp2040/IPAddress.h @@ -1 +1,2 @@ #include "api/IPAddress.h" +using arduino::IPAddress; diff --git a/cores/rp2040/PIOProgram.cpp b/cores/rp2040/PIOProgram.cpp index 42a36f199..8cbcb18d8 100644 --- a/cores/rp2040/PIOProgram.cpp +++ b/cores/rp2040/PIOProgram.cpp @@ -33,7 +33,6 @@ static std::map __pioMap[PIOCNT]; static bool __pioAllocated[PIOCNT]; -static bool __pioHighGPIO[PIOCNT]; auto_init_mutex(_pioMutex); PIOProgram::PIOProgram(const pio_program_t *pgm) { @@ -64,16 +63,16 @@ bool PIOProgram::prepare(PIO *pio, int *sm, int *offset, int start, int cnt) { return ret; #endif - bool needsHigh = (start + cnt) >= 32; - DEBUGV("PIOProgram %p: Searching for high=%d, pins %d-%d\n", _pgm, needsHigh ? 1 : 0, start, start + cnt - 1); + uint gpioBaseNeeded = ((start + cnt) >= 32) ? 16 : 0; + DEBUGV("PIOProgram %p: Searching for base=%d, pins %d-%d\n", _pgm, gpioBaseNeeded, start, start + cnt - 1); // If it's already loaded into PIO IRAM, try and allocate in that specific PIO for (int o = 0; o < PIOCNT; o++) { auto p = __pioMap[o].find(_pgm); - if ((p != __pioMap[o].end()) && (__pioHighGPIO[o] == needsHigh)) { + if ((p != __pioMap[o].end()) && (pio_get_gpio_base(pio_get_instance(o)) == gpioBaseNeeded)) { int idx = pio_claim_unused_sm(pi[o], false); if (idx >= 0) { - DEBUGV("PIOProgram %p: Reusing IMEM ON PIO %p(high=%d) for pins %d-%d\n", _pgm, pi[o], __pioHighGPIO[o] ? 1 : 0, start, start + cnt - 1); + DEBUGV("PIOProgram %p: Reusing IMEM ON PIO %p(base=%d) for pins %d-%d\n", _pgm, pi[o], pio_get_gpio_base(pio_get_instance(o)), start, start + cnt - 1); _pio = pi[o]; _sm = idx; *pio = pi[o]; @@ -86,12 +85,12 @@ bool PIOProgram::prepare(PIO *pio, int *sm, int *offset, int start, int cnt) { // Not in any PIO IRAM, so try and add for (int o = 0; o < PIOCNT; o++) { - if (__pioAllocated[o] && (__pioHighGPIO[o] == needsHigh)) { + if (__pioAllocated[o] && (pio_get_gpio_base(pio_get_instance(o)) == gpioBaseNeeded)) { DEBUGV("PIOProgram: Checking PIO %p\n", pi[o]); if (pio_can_add_program(pi[o], _pgm)) { int idx = pio_claim_unused_sm(pi[o], false); if (idx >= 0) { - DEBUGV("PIOProgram %p: Adding IMEM ON PIO %p(high=%d) for pins %d-%d\n", _pgm, pi[o], __pioHighGPIO[o] ? 1 : 0, start, start + cnt - 1); + DEBUGV("PIOProgram %p: Adding IMEM ON PIO %p(base=%d) for pins %d-%d\n", _pgm, pi[o], pio_get_gpio_base(pio_get_instance(o)), start, start + cnt - 1); int off = pio_add_program(pi[o], _pgm); __pioMap[o].insert({_pgm, off}); _pio = pi[o]; @@ -123,8 +122,7 @@ bool PIOProgram::prepare(PIO *pio, int *sm, int *offset, int start, int cnt) { } assert(!__pioAllocated[o]); __pioAllocated[o] = true; - __pioHighGPIO[o] = needsHigh; - DEBUGV("PIOProgram %p: Allocating new PIO %p(high=%d) for pins %d-%d\n", _pgm, pi[o], __pioHighGPIO[o] ? 1 : 0, start, start + cnt - 1); + DEBUGV("PIOProgram %p: Allocating new PIO %p(base=%d) for pins %d-%d\n", _pgm, pi[o], pio_get_gpio_base(pio_get_instance(o)), start, start + cnt - 1); __pioMap[o].insert({_pgm, off}); _pio = pi[o]; _sm = idx; diff --git a/cores/rp2040/RP2040Support.h b/cores/rp2040/RP2040Support.h index 45caafd84..e2c49e24b 100644 --- a/cores/rp2040/RP2040Support.h +++ b/cores/rp2040/RP2040Support.h @@ -182,13 +182,16 @@ extern "C" void loop1() __attribute__((weak)); extern "C" bool core1_separate_stack; extern "C" uint32_t* core1_separate_stack_address; +/** + @brief RP2040/RP2350 helper function for HW-specific features +*/ class RP2040 { public: RP2040() { /* noop */ } ~RP2040() { /* noop */ } - void begin() { - _epoch = 0; + void begin(int cpuid) { + _epoch[cpuid] = 0; #if !defined(__riscv) && !defined(__PROFILE) if (!__isFreeRTOS) { // Enable SYSTICK exception @@ -197,43 +200,70 @@ class RP2040 { systick_hw->rvr = 0x00FFFFFF; } else { #endif - int off = 0; - _ccountPgm = new PIOProgram(&ccount_program); - _ccountPgm->prepare(&_pio, &_sm, &off); - ccount_program_init(_pio, _sm, off); - pio_sm_set_enabled(_pio, _sm, true); + // Only start 1 instance of the PIO SM + if (cpuid == 0) { + int off = 0; + _ccountPgm = new PIOProgram(&ccount_program); + _ccountPgm->prepare(&_pio, &_sm, &off); + ccount_program_init(_pio, _sm, off); + pio_sm_set_enabled(_pio, _sm, true); + } #if !defined(__riscv) && !defined(__PROFILE) } #endif } - // Convert from microseconds to PIO clock cycles + /** + @brief Convert from microseconds to PIO clock cycles + + @returns the PIO cycles for a given microsecond delay + */ static int usToPIOCycles(int us) { // Parenthesis needed to guarantee order of operations to avoid 32bit overflow return (us * (clock_get_hz(clk_sys) / 1'000'000)); } - // Get current clock frequency + /** + @brief Gets the active CPU speed (may differ from F_CPU + + @returns CPU frequency in Hz + */ static int f_cpu() { return clock_get_hz(clk_sys); } - // Get current CPU core number + /** + @brief Get the core ID that is currently executing this code + + @returns 0 for Core 0, 1 for Core 1 + */ static int cpuid() { return sio_hw->cpuid; } - // Get CPU cycle count. Needs to do magic to extens 24b HW to something longer - volatile uint64_t _epoch = 0; + /** + @brief CPU cycle counter epoch (24-bit cycle). For internal use + */ + volatile uint64_t _epoch[2] = {}; + /** + @brief Get the count of CPU clock cycles since power on. + + @details + The 32-bit count will overflow every 4 billion cycles, so consider using ``getCycleCount64`` for + longer measurements + + @returns CPU clock cycles since power up + */ inline uint32_t getCycleCount() { #if !defined(__riscv) && !defined(__PROFILE) + // Get CPU cycle count. Needs to do magic to extend 24b HW to something longer if (!__isFreeRTOS) { uint32_t epoch; uint32_t ctr; do { - epoch = (uint32_t)_epoch; + epoch = (uint32_t)_epoch[sio_hw->cpuid]; ctr = systick_hw->cvr; - } while (epoch != (uint32_t)_epoch); + } while (epoch != (uint32_t)_epoch[sio_hw->cpuid]); return epoch + (1 << 24) - ctr; /* CTR counts down from 1<<24-1 */ } else { #endif @@ -242,16 +272,20 @@ class RP2040 { } #endif } + /** + @brief Get the count of CPU clock cycles since power on as a 64-bit quantrity + @returns CPU clock cycles since power up + */ inline uint64_t getCycleCount64() { #if !defined(__riscv) && !defined(__PROFILE) if (!__isFreeRTOS) { uint64_t epoch; uint64_t ctr; do { - epoch = _epoch; + epoch = _epoch[sio_hw->cpuid]; ctr = systick_hw->cvr; - } while (epoch != _epoch); + } while (epoch != _epoch[sio_hw->cpuid]); return epoch + (1LL << 24) - ctr; } else { #endif @@ -261,23 +295,53 @@ class RP2040 { #endif } + /** + @brief Gets total unused heap (dynamic memory) + + @details + Note that the allocations of the size of the total free heap may fail due to fragmentation. + For example, ``getFreeHeap`` can report 100KB available, but an allocation of 90KB may fail + because there may not be a contiguous 90KB space available + + @returns Free heap in bytes + */ inline int getFreeHeap() { return getTotalHeap() - getUsedHeap(); } + /** + @brief Gets total used heap (dynamic memory) + + @returns Used heap in bytes + */ inline int getUsedHeap() { struct mallinfo m = mallinfo(); return m.uordblks; } + /** + @brief Gets total heap (dynamic memory) compiled into the program + + @returns Total heap size in bytes + */ inline int getTotalHeap() { return &__StackLimit - &__bss_end__; } + /** + @brief On the RP2350, returns the amount of heap (dynamic memory) available in PSRAM + + @returns Total free heap in PSRAM, or 0 if no PSRAM present + */ inline int getFreePSRAMHeap() { return getTotalPSRAMHeap() - getUsedPSRAMHeap(); } + /** + @brief On the RP2350, returns the total amount of PSRAM heap (dynamic memory) used + + @returns Bytes used in PSRAM, or 0 if no PSRAM present + */ inline int getUsedPSRAMHeap() { #if defined(RP2350_PSRAM_CS) extern size_t __psram_total_used(); @@ -287,6 +351,11 @@ class RP2040 { #endif } + /** + @brief On the RP2350, gets total heap (dynamic memory) compiled into the program + + @returns Total PSRAM heap size in bytes, or 0 if no PSRAM present + */ inline int getTotalPSRAMHeap() { #if defined(RP2350_PSRAM_CS) extern size_t __psram_total_space(); @@ -296,6 +365,11 @@ class RP2040 { #endif } + /** + @brief Gets the current stack pointer in a ARM/RISC-V safe manner + + @returns Current SP + */ inline uint32_t getStackPointer() { uint32_t *sp; #if defined(__riscv) @@ -306,6 +380,14 @@ class RP2040 { return (uint32_t)sp; } + /** + @brief Calculates approximately how much stack space is still available for the running core. Handles multiprocessing and separate stacks. + + @details + Not valid in FreeRTOS. Use the FreeRTOS internal functions to access this information. + + @returns Approximation of the amount of stack available for use on the specific core + */ inline int getFreeStack() { const unsigned int sp = getStackPointer(); uint32_t ref = 0x20040000; @@ -319,6 +401,11 @@ class RP2040 { return sp - ref; } + /** + @brief On the RP2350, gets the size of attached PSRAM + + @returns PSRAM size in bytes, or 0 if no PSRAM present + */ inline size_t getPSRAMSize() { #if defined(RP2350_PSRAM_CS) extern size_t __psram_size; @@ -328,20 +415,48 @@ class RP2040 { #endif } + /** + @brief Freezes the other core in a flash-write-safe state. Not generally needed by applications + + @details + When the external flash chip is erasing or writing, the Pico cannot fetch instructions from it. + In this case both the core doing the writing and the other core (if active) need to run from a + routine that's contained in RAM. This call forces the other core into a tight, RAM-based loop + safe for this operation. When flash erase/write is completed, ``resumeOtherCore`` to return + it to operation. + + Be sure to disable any interrupts or task switches before calling to avoid deadlocks. + + If the second core is not started, this is a no-op. + */ void idleOtherCore() { fifo.idleOtherCore(); } + /** + @brief Resumes normal operation of the other core + */ void resumeOtherCore() { fifo.resumeOtherCore(); } + /** + @brief Hard resets the 2nd core (CORE1). + + @details + Because core1 will restart with the heap and global variables not in the same state as + power-on, this call may not work as desired and a full CPU reset may be necessary in + certain cases. + */ void restartCore1() { multicore_reset_core1(); fifo.clear(); multicore_launch_core1(main1); } + /** + @brief Warm-reboots the chip in normal mode + */ void reboot() { watchdog_reboot(0, 0, 10); while (1) { @@ -349,10 +464,16 @@ class RP2040 { } } + /** + @brief Warm-reboots the chip in normal mode + */ inline void restart() { reboot(); } + /** + @brief Warm-reboots the chip into the USB bootloader mode + */ inline void rebootToBootloader() { reset_usb_boot(0, 0); while (1) { @@ -364,16 +485,32 @@ class RP2040 { static void enableDoubleResetBootloader(); #endif + /** + @brief Starts the hardware watchdog timer. The CPU will reset if the watchdog is not fed every delay_ms + + @param [in] delay_ms Milliseconds without a wdt_reset before rebooting + */ void wdt_begin(uint32_t delay_ms) { watchdog_enable(delay_ms, 1); } + /** + @brief Feeds the watchdog timer, resetting it for another delay_ms countdown + */ void wdt_reset() { watchdog_update(); } + /** + @brief Best-effort reasons for chip reset + */ enum resetReason_t {UNKNOWN_RESET, PWRON_RESET, RUN_PIN_RESET, SOFT_RESET, WDT_RESET, DEBUG_RESET, GLITCH_RESET, BROWNOUT_RESET}; + /** + @brief Attempts to determine the reason for the last chip reset. May not always be able to determine accurately + + @returns Reason for reset + */ resetReason_t getResetReason(void) { io_rw_32 *WD_reason_reg = (io_rw_32 *)(WATCHDOG_BASE + WATCHDOG_REASON_OFFSET); @@ -427,6 +564,10 @@ class RP2040 { return UNKNOWN_RESET; } + /** + @brief Get unique ID string for the running board + @returns String with the unique board ID as determined by the SDK + */ const char *getChipID() { static char id[2 * PICO_UNIQUE_BOARD_ID_SIZE_BYTES + 1] = { 0 }; if (!id[0]) { @@ -437,6 +578,17 @@ class RP2040 { #pragma GCC push_options #pragma GCC optimize ("Os") + /** + @brief Perform a memcpy using a DMA engine for speed + + @details + Uses the DMA to copy to and from RAM. Only works on 4-byte aligned, 4-byte multiple length + sources and destination (i.e. word-aligned, word-length). Falls back to normal memcpy otherwise. + + @param [out] dest Memcpy destination, 4-byte aligned + @param [in] src Memcpy source, 4-byte aligned + @param [in] n Count in bytes to transfer (should be a multiple of 4 bytes) + */ void *memcpyDMA(void *dest, const void *src, size_t n) { // Allocate a DMA channel on 1st call, reuse it every call after if (memcpyDMAChannel < 1) { @@ -465,14 +617,32 @@ class RP2040 { } #pragma GCC pop_options - // Multicore comms FIFO + /** + @brief Multicore communications FIFO + */ _MFIFO fifo; + /** + @brief Return a 32-bit from the hardware random number generator + + @returns Random value using appropriate hardware (RP2350 has true RNG, RP2040 has a less true RNG method) + */ uint32_t hwrand32() { return get_rand_32(); } + /** + @brief Determines if code is running on a Pico or a PicoW + + @details + Code compiled for the RP2040 PicoW can run on the RP2040 Pico. This call lets an application + identify if the current device is really a Pico or PicoW and handle appropriately. For + the RP2350, this runtime detection is not available and the call returns whether it was + compiled for the CYW43 WiFi driver + + @returns True if running on a PicoW board with CYW43 WiFi chip. + */ bool isPicoW() { #if !defined(PICO_CYW43_SUPPORTED) return false; @@ -499,8 +669,8 @@ class RP2040 { private: - static void _SystickHandler() { - rp2040._epoch += 1LL << 24; + static void __no_inline_not_in_flash_func(_SystickHandler)() { + rp2040._epoch[sio_hw->cpuid] += 1LL << 24; } PIO _pio; int _sm; diff --git a/cores/rp2040/RP2040Version.h b/cores/rp2040/RP2040Version.h index 92c996ac8..c998d85de 100644 --- a/cores/rp2040/RP2040Version.h +++ b/cores/rp2040/RP2040Version.h @@ -1,5 +1,5 @@ #pragma once #define ARDUINO_PICO_MAJOR 4 -#define ARDUINO_PICO_MINOR 4 -#define ARDUINO_PICO_REVISION 0 -#define ARDUINO_PICO_VERSION_STR "4.4.0" +#define ARDUINO_PICO_MINOR 5 +#define ARDUINO_PICO_REVISION 4 +#define ARDUINO_PICO_VERSION_STR "4.5.4" diff --git a/cores/rp2040/Semihosting.h b/cores/rp2040/Semihosting.h index f0a7fc9ee..57f797c5c 100644 --- a/cores/rp2040/Semihosting.h +++ b/cores/rp2040/Semihosting.h @@ -24,7 +24,9 @@ // Input/output will be handled by OpenOCD -// From https://developer.arm.com/documentation/dui0471/g/Semihosting/Semihosting-operations?lang=en +/** + @brief Semihosting host API opcodes, from https://developer.arm.com/documentation/dui0471/g/Semihosting/Semihosting-operations?lang=en +*/ typedef enum { SEMIHOST_SYS_CLOSE = 0x02, SEMIHOST_SYS_CLOCK = 0x10, @@ -52,7 +54,13 @@ typedef enum { #ifdef __arm__ -// From https://github.com/ErichStyger/mcuoneclipse/blob/master/Examples/MCUXpresso/FRDM-K22F/FRDM-K22F_Semihosting/source/McuSemihost.c +/** + @brief Execute a semihosted request, from https://github.com/ErichStyger/mcuoneclipse/blob/master/Examples/MCUXpresso/FRDM-K22F/FRDM-K22F_Semihosting/source/McuSemihost.c + + @param [in] reason Opcode to execute + @param [in] arg Any arguments for the opcode + @returns Result of operation +*/ static inline int __attribute__((always_inline)) Semihost(int reason, void *arg) { int value; __asm volatile( @@ -69,7 +77,13 @@ static inline int __attribute__((always_inline)) Semihost(int reason, void *arg) } #else -// https://groups.google.com/a/groups.riscv.org/g/sw-dev/c/n-5VQ9PHZ4w/m/KbzH5t9MBgAJ +/** + @brief Execute a semihosted request, from https://groups.google.com/a/groups.riscv.org/g/sw-dev/c/n-5VQ9PHZ4w/m/KbzH5t9MBgAJ + + @param [in] reason Opcode to execute + @param [in] argPack Any arguments for the opcode + @returns Result of operation +*/ static inline int __attribute__((always_inline)) Semihost(int reason, void *argPack) { register int value asm("a0") = reason; register void *ptr asm("a1") = argPack; diff --git a/cores/rp2040/SerialPIO.cpp b/cores/rp2040/SerialPIO.cpp index ee980d116..32af295ac 100644 --- a/cores/rp2040/SerialPIO.cpp +++ b/cores/rp2040/SerialPIO.cpp @@ -68,13 +68,10 @@ static PIOProgram *_getRxProgram(int bits) { } // ------------------------------------------------------------------------ -// TODO - this works, but there must be a faster/better way... -static int _parity(int bits, int data) { - int p = 0; - for (int b = 0; b < bits; b++) { - p ^= (data & (1 << b)) ? 1 : 0; - } - return p; +static int __not_in_flash_func(_parity)(int data) { + data ^= data >> 4; + data &= 0xf; + return (0x6996 >> data) & 1; } // We need to cache generated SerialPIOs so we can add data to them from @@ -98,20 +95,16 @@ void __not_in_flash_func(SerialPIO::_handleIRQ)() { } while (!pio_sm_is_rx_fifo_empty(_rxPIO, _rxSM)) { uint32_t decode = _rxPIO->rxf[_rxSM]; - decode >>= 33 - _rxBits; - uint32_t val = 0; - for (int b = 0; b < _bits + 1; b++) { - val |= (decode & (1 << (b * 2))) ? 1 << b : 0; - } + uint32_t val = decode >> (32 - _rxBits - 1); if (_parity == UART_PARITY_EVEN) { - int p = ::_parity(_bits, val); + int p = ::_parity(val); int r = (val & (1 << _bits)) ? 1 : 0; if (p != r) { // TODO - parity error continue; } } else if (_parity == UART_PARITY_ODD) { - int p = ::_parity(_bits, val); + int p = ::_parity(val); int r = (val & (1 << _bits)) ? 1 : 0; if (p == r) { // TODO - parity error @@ -234,7 +227,7 @@ void SerialPIO::begin(unsigned long baud, uint16_t config) { _writer = 0; _reader = 0; - _rxBits = 2 * (_bits + _stop + (_parity != UART_PARITY_NONE ? 1 : 0) + 1) - 1; + _rxBits = _bits + (_parity != UART_PARITY_NONE ? 1 : 0); _rxPgm = _getRxProgram(_rxBits); int off; if (!_rxPgm->prepare(&_rxPIO, &_rxSM, &off, _rx, 1)) { @@ -249,7 +242,7 @@ void SerialPIO::begin(unsigned long baud, uint16_t config) { pio_sm_clear_fifos(_rxPIO, _rxSM); // Remove any existing data // Put phase divider into OSR w/o using add'l program memory - pio_sm_put_blocking(_rxPIO, _rxSM, clock_get_hz(clk_sys) / (_baud * 2) - 7 /* insns in PIO halfbit loop */); + pio_sm_put_blocking(_rxPIO, _rxSM, clock_get_hz(clk_sys) / (_baud * 2) - 3); pio_sm_exec(_rxPIO, _rxSM, pio_encode_pull(false, false)); // Join the TX FIFO to the RX one now that we don't need it @@ -378,10 +371,10 @@ size_t SerialPIO::write(uint8_t c) { if (_parity == UART_PARITY_NONE) { val |= 7 << _bits; // Set 2 stop bits, the HW will only transmit the required number } else if (_parity == UART_PARITY_EVEN) { - val |= ::_parity(_bits, c) << _bits; + val |= ::_parity(c) << _bits; val |= 7 << (_bits + 1); } else { - val |= (1 ^ ::_parity(_bits, c)) << _bits; + val |= (1 ^ ::_parity(c)) << _bits; val |= 7 << (_bits + 1); } val <<= 1; // Start bit = low diff --git a/cores/rp2040/SerialPIO.h b/cores/rp2040/SerialPIO.h index 1f029676d..36383bfca 100644 --- a/cores/rp2040/SerialPIO.h +++ b/cores/rp2040/SerialPIO.h @@ -29,7 +29,7 @@ extern "C" typedef struct uart_inst uart_inst_t; -class SerialPIO : public HardwareSerial { +class SerialPIO : public arduino::HardwareSerial { public: static const pin_size_t NOPIN = 0xff; // Use in constructor to disable RX or TX unit SerialPIO(pin_size_t tx, pin_size_t rx, size_t fifoSize = 32); diff --git a/cores/rp2040/SerialSemi.h b/cores/rp2040/SerialSemi.h index 2116265c8..298e93d00 100644 --- a/cores/rp2040/SerialSemi.h +++ b/cores/rp2040/SerialSemi.h @@ -24,7 +24,7 @@ #include "Arduino.h" #include "api/HardwareSerial.h" -class SerialSemiClass : public HardwareSerial { +class SerialSemiClass : public arduino::HardwareSerial { public: SerialSemiClass() { /* noop */ diff --git a/cores/rp2040/SerialUART.cpp b/cores/rp2040/SerialUART.cpp index ed1d27630..b755b463c 100644 --- a/cores/rp2040/SerialUART.cpp +++ b/cores/rp2040/SerialUART.cpp @@ -32,15 +32,20 @@ extern void serialEvent1() __attribute__((weak)); extern void serialEvent2() __attribute__((weak)); bool SerialUART::setRX(pin_size_t pin) { -#ifdef PICO_RP2350B - constexpr uint64_t valid[2] = { __bitset({1, 13, 17, 29, 33, 45}) /* UART0 */, - __bitset({5, 9, 21, 25, 37, 41}) /* UART1 */ +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B + constexpr uint64_t valid[2] = { __bitset({1, 3, 13, 15, 17, 19, 29, 31, 33, 35, 45, 47}) /* UART0 */, + __bitset({5, 7, 9, 11, 21, 23, 25, 27, 37, 39, 41, 43}) /* UART1 */ + }; +#elif defined(PICO_RP2350) + constexpr uint64_t valid[2] = { __bitset({1, 3, 13, 15, 17, 19, 29}) /* UART0 */, + __bitset({5, 7, 9, 11, 21, 23, 25, 27}) /* UART1 */ }; #else constexpr uint64_t valid[2] = { __bitset({1, 13, 17, 29}) /* UART0 */, __bitset({5, 9, 21, 25}) /* UART1 */ }; #endif + if ((!_running) && ((1LL << pin) & valid[uart_get_index(_uart)])) { _rx = pin; return true; @@ -59,9 +64,13 @@ bool SerialUART::setRX(pin_size_t pin) { } bool SerialUART::setTX(pin_size_t pin) { -#ifdef PICO_RP2350B - constexpr uint64_t valid[2] = { __bitset({0, 12, 16, 28, 32, 44}) /* UART0 */, - __bitset({4, 8, 20, 24, 36, 40}) /* UART1 */ +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B + constexpr uint64_t valid[2] = { __bitset({0, 2, 12, 14, 16, 18, 28, 30, 32, 34, 44, 46}) /* UART0 */, + __bitset({4, 6, 8, 10, 20, 22, 24, 26, 36, 38, 40, 42}) /* UART1 */ + }; +#elif defined(PICO_RP2350) + constexpr uint64_t valid[2] = { __bitset({0, 2, 12, 14, 16, 18, 28}) /* UART0 */, + __bitset({4, 6, 8, 10, 20, 22, 24, 26}) /* UART1 */ }; #else constexpr uint64_t valid[2] = { __bitset({0, 12, 16, 28}) /* UART0 */, @@ -86,7 +95,7 @@ bool SerialUART::setTX(pin_size_t pin) { } bool SerialUART::setRTS(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({3, 15, 19, 31, 35, 47}) /* UART0 */, __bitset({7, 11, 23, 27, 39, 43}) /* UART1 */ }; @@ -113,7 +122,7 @@ bool SerialUART::setRTS(pin_size_t pin) { } bool SerialUART::setCTS(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({2, 14, 18, 30, 34, 46}) /* UART0 */, __bitset({6, 10, 22, 26, 38, 42}) /* UART1 */ }; @@ -170,6 +179,41 @@ SerialUART::SerialUART(uart_inst_t *uart, pin_size_t tx, pin_size_t rx, pin_size static void _uart0IRQ(); static void _uart1IRQ(); +// Does the selected TX/RX need UART_AUX function (rp2350) +static gpio_function_t __gpioFunction(int pin) { + switch (pin) { +#if defined(PICO_RP2350) && !PICO_RP2350A + case 2: + case 3: + case 6: + case 7: + case 10: + case 11: + case 14: + case 15: + case 18: + case 19: + case 22: + case 23: + case 26: + case 27: + case 30: + case 31: + case 34: + case 35: + case 38: + case 39: + case 42: + case 43: + case 46: + case 47: + return GPIO_FUNC_UART_AUX; +#endif + default: + return GPIO_FUNC_UART; + } +} + void SerialUART::begin(unsigned long baud, uint16_t config) { if (_running) { end(); @@ -180,9 +224,9 @@ void SerialUART::begin(unsigned long baud, uint16_t config) { _fcnTx = gpio_get_function(_tx); _fcnRx = gpio_get_function(_rx); - gpio_set_function(_tx, GPIO_FUNC_UART); + gpio_set_function(_tx, __gpioFunction(_tx)); gpio_set_outover(_tx, _invertTX ? 1 : 0); - gpio_set_function(_rx, GPIO_FUNC_UART); + gpio_set_function(_rx, __gpioFunction(_rx)); gpio_set_inover(_rx, _invertRX ? 1 : 0); if (_rts != UART_PIN_NOT_DEFINED) { _fcnRts = gpio_get_function(_rts); diff --git a/cores/rp2040/SerialUART.h b/cores/rp2040/SerialUART.h index a29ac09b8..1483abb46 100644 --- a/cores/rp2040/SerialUART.h +++ b/cores/rp2040/SerialUART.h @@ -29,7 +29,7 @@ extern "C" typedef struct uart_inst uart_inst_t; #define UART_PIN_NOT_DEFINED (255u) -class SerialUART : public HardwareSerial { +class SerialUART : public arduino::HardwareSerial { public: SerialUART(uart_inst_t *uart, pin_size_t tx, pin_size_t rx, pin_size_t rts = UART_PIN_NOT_DEFINED, pin_size_t cts = UART_PIN_NOT_DEFINED); diff --git a/cores/rp2040/SerialUSB.h b/cores/rp2040/SerialUSB.h index 94fd00a99..31eb4a013 100644 --- a/cores/rp2040/SerialUSB.h +++ b/cores/rp2040/SerialUSB.h @@ -24,7 +24,7 @@ #include "api/HardwareSerial.h" #include -class SerialUSB : public HardwareSerial { +class SerialUSB : public arduino::HardwareSerial { public: SerialUSB() { } void begin(unsigned long baud = 115200) override; diff --git a/cores/rp2040/SoftwareSerial.h b/cores/rp2040/SoftwareSerial.h index d1857aa1f..3ef0cad3b 100644 --- a/cores/rp2040/SoftwareSerial.h +++ b/cores/rp2040/SoftwareSerial.h @@ -22,9 +22,18 @@ #include "SerialPIO.h" +/** + @brief Implements a UART port using PIO for input and output +*/ class SoftwareSerial : public SerialPIO { public: - // Note the rx/tx pins are swapped in PIO vs SWSerial + /** + @brief Constructs a PIO-based UART + + @param [in] rx GPIO for RX pin or -1 for transmit-only + @param [in] tx GPIO for TX pin or -1 for receive-only + @param [in] invert True to invert the receive and transmit lines + */ SoftwareSerial(pin_size_t rx, pin_size_t tx, bool invert = false) : SerialPIO(tx, rx) { _invert = invert; } @@ -32,18 +41,37 @@ class SoftwareSerial : public SerialPIO { ~SoftwareSerial() { } + /** + @brief Starts the PIO UART + + @param [in] baud Serial bit rate + */ virtual void begin(unsigned long baud = 115200) override { begin(baud, SERIAL_8N1); }; + /** + @brief Starts the PIO UART + + @param [in] baud Serial bit rate + @param [in] config Start/Stop/Len configuration (i.e. SERIAL_8N1 or SERIAL_7E2) + */ void begin(unsigned long baud, uint16_t config) override { setInvertTX(_invert); setInvertRX(_invert); SerialPIO::begin(baud, config); } + /** + @brief No-op on this core + */ void listen() { /* noop */ } + /** + @brief No-op on this core + + @returns True always + */ bool isListening() { return true; } diff --git a/cores/rp2040/Tone.cpp b/cores/rp2040/Tone.cpp index 114eca451..34f396453 100644 --- a/cores/rp2040/Tone.cpp +++ b/cores/rp2040/Tone.cpp @@ -71,10 +71,7 @@ void tone(uint8_t pin, unsigned int frequency, unsigned long duration) { return; // Weird deadlock case } - int us = 1'000'000 / frequency / 2; - if (us < 5) { - us = 5; - } + unsigned int delay = (RP2040::f_cpu() + frequency) / (frequency * 2) - 3; // rounded auto entry = _toneMap.find(pin); Tone *newTone; if (entry == _toneMap.end()) { @@ -99,7 +96,7 @@ void tone(uint8_t pin, unsigned int frequency, unsigned long duration) { tone2_program_init(newTone->pio, newTone->sm, newTone->off, pin); } pio_sm_clear_fifos(newTone->pio, newTone->sm); // Remove any old updates that haven't yet taken effect - pio_sm_put_blocking(newTone->pio, newTone->sm, RP2040::usToPIOCycles(us)); + pio_sm_put_blocking(newTone->pio, newTone->sm, delay); pio_sm_exec(newTone->pio, newTone->sm, pio_encode_pull(false, false)); pio_sm_exec(newTone->pio, newTone->sm, pio_encode_mov(pio_x, pio_osr)); pio_sm_set_enabled(newTone->pio, newTone->sm, true); diff --git a/cores/rp2040/main.cpp b/cores/rp2040/main.cpp index 6fe40646c..f6a264bb8 100644 --- a/cores/rp2040/main.cpp +++ b/cores/rp2040/main.cpp @@ -22,7 +22,11 @@ #include "RP2040USB.h" #include #include +#include #include +#ifdef RP2350_PSRAM_CS +#include "psram.h" +#endif RP2040 rp2040; extern "C" { @@ -47,9 +51,14 @@ void initVariant() { } // Optional 2nd core setup and loop bool core1_separate_stack __attribute__((weak)) = false; +bool core1_disable_systick __attribute__((weak)) = false; extern void setup1() __attribute__((weak)); extern void loop1() __attribute__((weak)); extern "C" void main1() { + if (!core1_disable_systick) { + // Don't install the SYSTICK exception handler. rp2040.getCycleCount will not work properly on core1 + rp2040.begin(1); + } rp2040.fifo.registerCore(); if (setup1) { setup1(); @@ -80,9 +89,41 @@ static struct _reent *_impure_ptr1 = nullptr; extern "C" int main() { #if (defined(PICO_RP2040) && (F_CPU != 125000000)) || (defined(PICO_RP2350) && (F_CPU != 150000000)) + +#if defined(PICO_RP2040) + // From runtime_init_clocks() to bump up RP2040 V for 200Mhz+ operation + if ((F_CPU > 133000000) && (vreg_get_voltage() < VREG_VOLTAGE_1_15)) { + vreg_set_voltage(VREG_VOLTAGE_1_15); + // wait for voltage to settle; must use CPU cycles as TIMER is not yet clocked correctly + busy_wait_at_least_cycles((uint32_t)((SYS_CLK_VREG_VOLTAGE_AUTO_ADJUST_DELAY_US * (uint64_t)XOSC_HZ) / 1000000)); + } +#endif + +#if defined(RP2350_PSRAM_CS) && (F_CPU > 150000000) + // Need to increase the qmi divider before upping sysclk to ensure we keep the output sck w/in legal bounds + psram_reinit_timing(F_CPU); + // Per datasheet, need to do a dummy access and memory barrier before it takes effect + extern uint8_t __psram_start__; + volatile uint8_t *x = &__psram_start__; + *x ^= 0xff; + *x ^= 0xff; + asm volatile("" ::: "memory"); +#endif + set_sys_clock_khz(F_CPU / 1000, true); + +#if defined(RP2350_PSRAM_CS) && (F_CPU < 150000000) + psram_reinit_timing(); + // Per datasheet, need to do a dummy access and memory barrier before it takes effect + extern uint8_t __psram_start__; + volatile uint8_t *x = &__psram_start__; + *x ^= 0xff; + *x ^= 0xff; + asm volatile("" ::: "memory"); #endif +#endif // over/underclock + // Let rest of core know if we're using FreeRTOS __isFreeRTOS = initFreeRTOS ? true : false; @@ -92,7 +133,7 @@ extern "C" int main() { _REENT_INIT_PTR(_impure_ptr1); } - rp2040.begin(); + rp2040.begin(0); initVariant(); @@ -203,3 +244,10 @@ void hexdump(const void* mem, uint32_t len, uint8_t cols) { } const String emptyString = ""; + +extern "C" void __attribute__((__noreturn__)) __wrap___stack_chk_fail() { + while (true) { + panic("*** stack smashing detected ***: terminated\n"); + } +} + diff --git a/cores/rp2040/pio_uart.pio b/cores/rp2040/pio_uart.pio index 629126c21..c1b16fa66 100644 --- a/cores/rp2040/pio_uart.pio +++ b/cores/rp2040/pio_uart.pio @@ -73,20 +73,25 @@ static inline void pio_tx_program_init(PIO pio, uint sm, uint offset, uint pin_t ; IN pin 0 and JMP pin are both mapped to the GPIO used as UART RX. start: - set x, 18 ; Preload bit counter...we'll shift in the start bit and stop bit, and each bit will be double-recorded (to be fixed by RP2040 code) + set x, 18 ; Preload bit counter...overwritten by the app wait 0 pin 0 ; Stall until start bit is asserted -bitloop: ; Delay until 1/2 way into the bit time mov y, osr -wait_half: - jmp y-- wait_half +wait_mid_start: + jmp y-- wait_mid_start - ; Read in the bit - in pins, 1 ; Shift data bit into ISR - jmp x-- bitloop ; Loop all bits - - push ; Stuff it and wait for next start +bitloop: + mov y, osr +bitloop1: + jmp y-- bitloop1 + mov y, osr +bitloop2: + jmp y-- bitloop2 + + in pins, 1 + jmp x-- bitloop + push % c-sdk { static inline void pio_rx_program_init(PIO pio, uint sm, uint offset, uint pin) { diff --git a/cores/rp2040/pio_uart.pio.h b/cores/rp2040/pio_uart.pio.h index 6ab4c7268..f1b4a362b 100644 --- a/cores/rp2040/pio_uart.pio.h +++ b/cores/rp2040/pio_uart.pio.h @@ -71,7 +71,7 @@ static inline void pio_tx_program_init(PIO pio, uint sm, uint offset, uint pin_t // ------ // #define pio_rx_wrap_target 0 -#define pio_rx_wrap 6 +#define pio_rx_wrap 10 #define pio_rx_pio_version 0 static const uint16_t pio_rx_program_instructions[] = { @@ -80,16 +80,20 @@ static const uint16_t pio_rx_program_instructions[] = { 0x2020, // 1: wait 0 pin, 0 0xa047, // 2: mov y, osr 0x0083, // 3: jmp y--, 3 - 0x4001, // 4: in pins, 1 - 0x0042, // 5: jmp x--, 2 - 0x8020, // 6: push block + 0xa047, // 4: mov y, osr + 0x0085, // 5: jmp y--, 5 + 0xa047, // 6: mov y, osr + 0x0087, // 7: jmp y--, 7 + 0x4001, // 8: in pins, 1 + 0x0044, // 9: jmp x--, 4 + 0x8020, // 10: push block // .wrap }; #if !PICO_NO_HARDWARE static const struct pio_program pio_rx_program = { .instructions = pio_rx_program_instructions, - .length = 7, + .length = 11, .origin = -1, .pio_version = 0, #if PICO_PIO_VERSION > 0 diff --git a/cores/rp2040/posix.cpp b/cores/rp2040/posix.cpp index e23dc8477..523f84fe0 100644 --- a/cores/rp2040/posix.cpp +++ b/cores/rp2040/posix.cpp @@ -23,6 +23,7 @@ #include #include <_syslist.h> #include +#include #include #include diff --git a/cores/rp2040/psram.cpp b/cores/rp2040/psram.cpp index aab0a51f4..1b77a167b 100644 --- a/cores/rp2040/psram.cpp +++ b/cores/rp2040/psram.cpp @@ -195,10 +195,7 @@ static size_t __no_inline_not_in_flash_func(get_psram_size)(void) { /// /// @note This function expects interrupts to be enabled on entry -static void __no_inline_not_in_flash_func(set_psram_timing)(void) { - // Get secs / cycle for the system clock - get before disabling interrupts. - uint32_t sysHz = (uint32_t)clock_get_hz(clk_sys); - +static void __no_inline_not_in_flash_func(set_psram_timing)(uint32_t sysHz) { // Calculate the clock divider - goal to get clock used for PSRAM <= what // the PSRAM IC can handle - which is defined in SFE_PSRAM_MAX_SCK_HZ volatile uint8_t clockDivider = (sysHz + SFE_PSRAM_MAX_SCK_HZ - 1) / SFE_PSRAM_MAX_SCK_HZ; @@ -283,7 +280,7 @@ static void __no_inline_not_in_flash_func(runtime_init_setup_psram)(/*uint32_t p // check our interrupts and setup the timing restore_interrupts(intr_stash); - set_psram_timing(); + set_psram_timing((uint32_t)clock_get_hz(clk_sys)); // and now stash interrupts again intr_stash = save_and_disable_interrupts(); @@ -323,8 +320,11 @@ static void __no_inline_not_in_flash_func(runtime_init_setup_psram)(/*uint32_t p PICO_RUNTIME_INIT_FUNC_RUNTIME(runtime_init_setup_psram, PICO_RUNTIME_INIT_PSRAM); // update timing -- used if the system clock/timing was changed. -void psram_reinit_timing() { - set_psram_timing(); +void psram_reinit_timing(uint32_t hz) { + if (!hz) { + hz = (uint32_t)clock_get_hz(clk_sys); + } + set_psram_timing(hz); } static bool __psram_heap_init() { diff --git a/cores/rp2040/psram.h b/cores/rp2040/psram.h index 82ca80239..a3a61e80f 100644 --- a/cores/rp2040/psram.h +++ b/cores/rp2040/psram.h @@ -31,7 +31,7 @@ #include -void psram_reinit_timing(); +void psram_reinit_timing(uint32_t hz = 0); void *__psram_malloc(size_t size); void __psram_free(void *ptr); void *__psram_realloc(void *ptr, size_t size); diff --git a/cores/rp2040/sdkoverride/btstack_flash_bank.cpp b/cores/rp2040/sdkoverride/btstack_flash_bank.cpp index 0437d7c4c..eaf17c532 100644 --- a/cores/rp2040/sdkoverride/btstack_flash_bank.cpp +++ b/cores/rp2040/sdkoverride/btstack_flash_bank.cpp @@ -4,7 +4,7 @@ SPDX-License-Identifier: BSD-3-Clause */ -#if defined(ARDUINO_RASPBERRY_PI_PICO_W) +#if defined(PICO_CYW43_SUPPORTED) #include #include #include diff --git a/cores/rp2040/tone2.pio b/cores/rp2040/tone2.pio index 0df248cab..1af470197 100644 --- a/cores/rp2040/tone2.pio +++ b/cores/rp2040/tone2.pio @@ -18,7 +18,7 @@ ; Side-set pin 0 is used for Tone output -; OSR == Halfcycle count +; OSR == Halfcycle count - 3 .program tone2 .side_set 1 opt @@ -26,10 +26,11 @@ ; pull ; TXFIFO -> OSR, or X -> OSR if no new period ; mov x, osr ; OSR -> X +.wrap_target high: pull noblock ; Potentially grab new HALFCYCLECOUNT, OTW copy from backup in X - mov x, osr ; OSR -> X - mov y, osr side 1 ; HALFCYCLECOUNT -> Y + mov x, osr side 1 ; OSR -> X + mov y, osr ; HALFCYCLECOUNT -> Y highloop: jmp y-- highloop ; while (y--) { /* noop delay */ } @@ -38,7 +39,7 @@ low: lowloop: jmp y-- lowloop ; while (y--) { /* noop delay */ } - jmp high ; GOTO high + .wrap ; GOTO high % c-sdk { static inline void tone2_program_init(PIO pio, uint sm, uint offset, uint pin) { diff --git a/cores/rp2040/tone2.pio.h b/cores/rp2040/tone2.pio.h index d0e7be392..6e19c5683 100644 --- a/cores/rp2040/tone2.pio.h +++ b/cores/rp2040/tone2.pio.h @@ -13,25 +13,24 @@ // ----- // #define tone2_wrap_target 0 -#define tone2_wrap 6 +#define tone2_wrap 5 #define tone2_pio_version 0 static const uint16_t tone2_program_instructions[] = { // .wrap_target 0x8080, // 0: pull noblock - 0xa027, // 1: mov x, osr - 0xb847, // 2: mov y, osr side 1 + 0xb827, // 1: mov x, osr side 1 + 0xa047, // 2: mov y, osr 0x0083, // 3: jmp y--, 3 0xb047, // 4: mov y, osr side 0 0x0085, // 5: jmp y--, 5 - 0x0000, // 6: jmp 0 // .wrap }; #if !PICO_NO_HARDWARE static const struct pio_program tone2_program = { .instructions = tone2_program_instructions, - .length = 7, + .length = 6, .origin = -1, .pio_version = 0, #if PICO_PIO_VERSION > 0 diff --git a/cores/rp2040/wiring_shift.cpp b/cores/rp2040/wiring_shift.cpp index cccdfcf28..5beba1c6d 100644 --- a/cores/rp2040/wiring_shift.cpp +++ b/cores/rp2040/wiring_shift.cpp @@ -56,9 +56,9 @@ extern "C" void shiftOut(pin_size_t dataPin, pin_size_t clockPin, BitOrder bitOr } for (i = 0; i < 8; i++) { if (bitOrder == LSBFIRST) { - digitalWrite(dataPin, !!(val & (1 << i))); + digitalWrite(dataPin, !!(val & (1 << i)) ? HIGH : LOW); } else { - digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + digitalWrite(dataPin, !!(val & (1 << (7 - i))) ? HIGH : LOW); } digitalWrite(clockPin, HIGH); diff --git a/docs/adc.rst b/docs/adc.rst index 0f1353d00..1e044bc2a 100644 --- a/docs/adc.rst +++ b/docs/adc.rst @@ -12,9 +12,9 @@ need to be periodically sampled to be read by applications, easily, such as: * Light dependent resistors (LDR), etc. -Up to 4 analog samples can be recorded by the hardware (``A0`` ... ``A3``), and all -recording is done at 16-bit levels (but be aware that the ADC in the Pico will only -ever return values between 0...4095). +Up to 4 (or 8 in the case of the RP2350B) analog samples can be recorded by the +hardware (``A0`` ... ``A3``), and all recording is done at 16-bit levels (but be +aware that the ADC in the Pico will only ever return values between 0...4095). The interface for the ``ADCInput`` device is very similar to the ``I2S`` input device, and most code can be ported simply by instantiating a ``ADCInput`` @@ -26,11 +26,12 @@ allowed while in use. ADC Input API ------------- -ADCInput(pin0 [, pin1, pin2, pin3]) +ADCInput(pin0 [, pin1, pin2, pin3[, pin4, pin5, pin6, pin7]) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Creates an ADC input object which will record the pins specified in the code. -Only pins ``A0`` ... ``A3`` can be used, and they must be specified in increasing -order (i.e. ``ADCInput(A0, A1);`` is valid, but ``ADCInput(A1, A0)`` is not. +Only pins ``A0`` ... ``A3`` (``A7`` on RP2350B) can be used, and they must be +specified in increasing order (i.e. ``ADCInput(A0, A1);`` is valid, +but ``ADCInput(A1, A0)`` is not. bool setBuffers(size_t buffers, size_t bufferWords) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/conf.py b/docs/conf.py index bcb3e0e57..683bb20f1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -54,9 +54,9 @@ # built documents. # # The short X.Y version. -version = u'4.4.0' +version = u'4.5.4' # The full version, including alpha/beta/rc tags. -release = u'4.4.0' +release = u'4.5.4' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/contrib.rst b/docs/contrib.rst index 4eb4a5d29..4a526b18d 100644 --- a/docs/contrib.rst +++ b/docs/contrib.rst @@ -112,7 +112,7 @@ For only RP2350A variants (using the compile options, not the onboard ID registe .. code:: cpp - #if defined(PICO_RP2350) && !defined(PICO_RP2350B) + #if defined(PICO_RP2350A) && PICO_RP2350A ...RP2350A only code... #endif @@ -121,7 +121,7 @@ and not the chip ID register): .. code:: cpp - #if defined(PICO_RP2350B) + #if defined(PICO_RP2350A) && !PICO_RP2350A ...48-GPIO version code here #endif diff --git a/docs/fs.rst b/docs/fs.rst index cf937a8f0..09800d099 100644 --- a/docs/fs.rst +++ b/docs/fs.rst @@ -174,6 +174,23 @@ second SPI port, ``SPI1``. Just use the following call in place of SD.begin(cspin, SPI1); +Enabling SDIO operation for SD +------------------------------ +SDIO support is available thanks to SdFat implementing a PIO-based SDIO controller. +This mode can significantly increase IO performance to SD cards but it requires that +all 4 DAT0..DAT3 lines to be wired to the Pico (most SD breakout boards only provide +1-but SPI mode of operation). + +To enable SDIO mode, simply specify the SD_CLK, SD_CMD, and SD_DAT0 GPIO pins. The clock +and command pins can be any GPIO (not limited to legal SPI pins). The DAT0 pin can be any +GPIO with remaining DAT1...3 pins consecutively connected. + +..code:: cpp + + SD.begin(RP_CLK_GPIO, RP_CMD_GPIO, RP_DAT0_GPIO); + +No other changes are required in the application to take advantage of this high +performance mode. Using VFS (Virtual File System) for POSIX support ------------------------------------------------- diff --git a/docs/i2s.rst b/docs/i2s.rst index 3e1e95af3..bec76dd55 100644 --- a/docs/i2s.rst +++ b/docs/i2s.rst @@ -30,6 +30,12 @@ I2S(INPUT) Creates an I2S input port. Needs to be connected up to the desired pins (see below) and started before any input can happen. +I2S(INPUT_PULLUP) +~~~~~~~~~~~~~~~~~ +Creates a bi-directional I2S input and output port. Needs to be +connected up to the desired pins (see below) and started before +any input or output can happen. + bool setBCLK(pin_size_t pin) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sets the BCLK pin of the I2S device. The LRCLK/word clock will be ``pin + 1`` @@ -37,7 +43,18 @@ due to limitations of the PIO state machines. Call this before ``I2S::begin()`` bool setDATA(pin_size_t pin) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Sets the DOUT or DIN pin of the I2S device. Any pin may be used. +Sets the DOUT or DIN pin of the I2S device. Any pin may be used. In bi-directional +operation, must use ``I2S::setDOUT()`` and ``I2S::setDIN`` instead. +Call before ``I2S::begin()`` + +bool setDOUT(pin_size_t pin) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Sets the DOUT pin of the I2S device. Any pin may be used. +Call before ``I2S::begin()`` + +bool setDIN(pin_size_t pin) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Sets the DIN pin of the I2S device. Any pin may be used. Call before ``I2S::begin()`` bool setMCLK(pin_size_t pin) @@ -115,6 +132,14 @@ void getOverUnderflow() Returns a flag indicating if the I2S system ran our of data to send on output, or had to throw away data on input. +void getOverflow() +~~~~~~~~~~~~~~~~~~~~~~~ +Returns a flag indicating if the I2S system had to throw away data on input. + +void getUnderflow() +~~~~~~~~~~~~~~~~~~~~~~~ +Returns a flag indicating if the I2S system ran our of data to send on output. + size_t write(uint8_t/int8_t/int16_t/int32_t) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Writes a single sample of ``bitsPerSample`` to the buffer. It is up to the @@ -139,7 +164,7 @@ size_t write(const uint8_t \*buffer, size_t size) Transfers number of bytes from an application buffer to the I2S output buffer. Be aware that ``size`` is in *bytes** and not samples. Size must be a multiple of **4 bytes**. Will not block, so check the return value to find out how -many bytes were actually written. +many 32-bit words were actually written. int availableForWrite() ~~~~~~~~~~~~~~~~~~~~~~~ @@ -156,6 +181,13 @@ int peek() Returns the next sample to be read from the I2S buffer (without actually removing it). +size_t read(uint8_t \*buffer, size_t size) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Transfers number of bytes from the I2S input buffer to an application buffer. +Be aware that ``size`` is in *bytes** and not samples. Size must be a multiple +of **4 bytes**. Will not block, so check the return value to find out how +many 32-bit words were actually read. + void onTransmit(void (\*fn)(void)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sets a callback to be called when an I2S DMA buffer is fully transmitted. diff --git a/docs/multicore.rst b/docs/multicore.rst index ff4fe4141..7673606e8 100644 --- a/docs/multicore.rst +++ b/docs/multicore.rst @@ -16,6 +16,25 @@ not necessarily simultaneously!). See the ``Multicore.ino`` example in the ``rp2040`` example directory for a quick introduction. +Core 1 Operation +---------------- + +By default, core1 (the second core) has no non-user written code running on it. +No interrupts, exceptions, or other background processing is done (but the core +is still subject to hardware stalls due to on-die memory resource conflicts). +When flash erase or write operations (i.e. ``LittleFS`` or ``EEPROM``) are called +from core0, core1 **will** be paused. + +If ``rp2040.getCycleCount`` is needed to operate on the second core, then a +periodic (once ever 16M clock cycles) ``SYSTICK`` exception will happen behind +the scenes. For extremely time-critical operations this may not be desirable +and can be disabled by defining a new ``bool`` variable to ``true`` anywhere +in your sketch: + +.. code:: cpp + + bool core1_disable_systick = true; + Stack Sizes ----------- @@ -67,6 +86,9 @@ void rp2040.restartCore1() ~~~~~~~~~~~~~~~~~~~~~~~~~~ Hard resets Core1 from Core 0 and restarts its operation from ``setup1()``. +This can cause unpredictable behavior because globals and the heap +are shared between cores and not re-initialized with this call. Use with +extreme caution. Communicating Between Cores --------------------------- diff --git a/docs/platformio.rst b/docs/platformio.rst index 42e9ad5da..0cc29eb8d 100644 --- a/docs/platformio.rst +++ b/docs/platformio.rst @@ -172,6 +172,37 @@ To learn more about PSRAM usage, see: :doc:`RP2350 PSRAM Support ` ; PSRAM size: 4MB board_upload.psram_length = 4194304 +PSRAM chip select (CS) +---------------------- + +For RP2350 based boards, this controls what chip-select (also called: slave-select / SS) pin to use when wanting to talk to the PSRAM chip. + +Note that it's not needed to set this with a board that is known to have a PSRAM chip on-board, such as a "Sparkfun Thing Plus 2350". The ``pins_arduino.h`` of that variant already has the correct definition. + +To learn more about PSRAM usage, see: :doc:`RP2350 PSRAM Support ` + +.. code:: ini + + ; PSRAM CS is at GP47 + build_flags = + -DRP2350_PSRAM_CS=47 + + +Boot2 Source +------------ + +Boot2 is the second stage bootloader and predominantly used on the RP2040. +Its main purpose is to configure the communication with the Flash at the highest, safest speed it can. +All known boards have their correct value already configured. However, when choosing ``board = generic``, +you can freely configure the Boot2 to be for a different flash. + +For possible Boot2 filenames, `please see here `__. + +.. code:: ini + + ; expect an ISSI IS25LP080 flash, SPI frequency = CPU frequency divided by 2 + board_build.arduino.earlephilhower.boot2_source = boot2_is25lp080_2_padded_checksum.S + CPU Speed --------- diff --git a/docs/spi.rst b/docs/spi.rst index 8b8722048..c9ee67aff 100644 --- a/docs/spi.rst +++ b/docs/spi.rst @@ -28,6 +28,19 @@ pin itself, as is the standard way in Arduino. * The interrupt calls (``attachInterrupt``, and ``detachInterrpt``) are not implemented. +Software SPI (Master Only) +========================== + +Similar to ``SoftwareSerial``, ``SoftwareSPI`` creates a PIO based SPI interface that +can be used in the same manner as the hardware SPI devices. The constructor takes the +pins desired, which can be any GPIO pins with the rule that if hardware CS is used then +it must be on pin ``SCK + 1``. Construct a ``SoftwareSPI`` object in your code as +follows and use it as needed (i.e. pass it into ``SD.begin(_CS, softwareSPI);`` + +.. code:: cpp + + #include + SoftwareSPI softSPI(_sck, _miso, _mosi); // no HW CS support, any selection of pins can be used SPI Slave (SPISlave) ==================== diff --git a/include/rp2040/pico_base/pico/version.h b/include/rp2040/pico_base/pico/version.h index fce6cc069..04044c495 100644 --- a/include/rp2040/pico_base/pico/version.h +++ b/include/rp2040/pico_base/pico/version.h @@ -13,7 +13,7 @@ #define PICO_SDK_VERSION_MAJOR 2 #define PICO_SDK_VERSION_MINOR 1 -#define PICO_SDK_VERSION_REVISION 0 -#define PICO_SDK_VERSION_STRING "2.1.0" +#define PICO_SDK_VERSION_REVISION 2 +#define PICO_SDK_VERSION_STRING "2.1.2-develop" #endif diff --git a/include/rp2350/pico_base/pico/version.h b/include/rp2350/pico_base/pico/version.h index fce6cc069..04044c495 100644 --- a/include/rp2350/pico_base/pico/version.h +++ b/include/rp2350/pico_base/pico/version.h @@ -13,7 +13,7 @@ #define PICO_SDK_VERSION_MAJOR 2 #define PICO_SDK_VERSION_MINOR 1 -#define PICO_SDK_VERSION_REVISION 0 -#define PICO_SDK_VERSION_STRING "2.1.0" +#define PICO_SDK_VERSION_REVISION 2 +#define PICO_SDK_VERSION_STRING "2.1.2-develop" #endif diff --git a/lib/core_wrap.txt b/lib/core_wrap.txt index 0dd4570d9..3b94fd31e 100644 --- a/lib/core_wrap.txt +++ b/lib/core_wrap.txt @@ -67,3 +67,5 @@ -Wl,--wrap=cyw43_tcpip_link_status -Wl,--wrap=cyw43_cb_tcpip_init -Wl,--wrap=cyw43_cb_tcpip_deinit + +-Wl,--wrap=__stack_chk_fail diff --git a/lib/rp2040/libipv4-big.a b/lib/rp2040/libipv4-big.a index 2b2a6fae0..5df6f645f 100644 Binary files a/lib/rp2040/libipv4-big.a and b/lib/rp2040/libipv4-big.a differ diff --git a/lib/rp2040/libipv4-bt-big.a b/lib/rp2040/libipv4-bt-big.a index d05b8b411..6b0ab0cfc 100644 Binary files a/lib/rp2040/libipv4-bt-big.a and b/lib/rp2040/libipv4-bt-big.a differ diff --git a/lib/rp2040/libipv4-bt.a b/lib/rp2040/libipv4-bt.a index 4991c3ed1..622e9bf1a 100644 Binary files a/lib/rp2040/libipv4-bt.a and b/lib/rp2040/libipv4-bt.a differ diff --git a/lib/rp2040/libipv4-ipv6-big.a b/lib/rp2040/libipv4-ipv6-big.a index c908ad057..64f5529d9 100644 Binary files a/lib/rp2040/libipv4-ipv6-big.a and b/lib/rp2040/libipv4-ipv6-big.a differ diff --git a/lib/rp2040/libipv4-ipv6-bt-big.a b/lib/rp2040/libipv4-ipv6-bt-big.a index e7391a2c2..8957a5f13 100644 Binary files a/lib/rp2040/libipv4-ipv6-bt-big.a and b/lib/rp2040/libipv4-ipv6-bt-big.a differ diff --git a/lib/rp2040/libipv4-ipv6-bt.a b/lib/rp2040/libipv4-ipv6-bt.a index 531a3c73e..e11f4916a 100644 Binary files a/lib/rp2040/libipv4-ipv6-bt.a and b/lib/rp2040/libipv4-ipv6-bt.a differ diff --git a/lib/rp2040/libipv4-ipv6.a b/lib/rp2040/libipv4-ipv6.a index aa12209db..c1bf6d675 100644 Binary files a/lib/rp2040/libipv4-ipv6.a and b/lib/rp2040/libipv4-ipv6.a differ diff --git a/lib/rp2040/libipv4.a b/lib/rp2040/libipv4.a index 3823f866c..e34ac978d 100644 Binary files a/lib/rp2040/libipv4.a and b/lib/rp2040/libipv4.a differ diff --git a/lib/rp2040/libpico.a b/lib/rp2040/libpico.a index efccd13fa..29eb77d39 100644 Binary files a/lib/rp2040/libpico.a and b/lib/rp2040/libpico.a differ diff --git a/lib/rp2040/platform_inc.txt b/lib/rp2040/platform_inc.txt index a4617376a..ec432175c 100644 --- a/lib/rp2040/platform_inc.txt +++ b/lib/rp2040/platform_inc.txt @@ -10,5 +10,6 @@ -iwithprefixbefore/pico-sdk/lib/btstack/src -iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/bluedroid/decoder/include -iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/bluedroid/encoder/include +-iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/yxml -iwithprefixbefore/pico-sdk/lib/btstack/platform/embedded -iwithprefixbefore/pico-sdk/src/rp2_common/cmsis/stub/CMSIS/Device/RP2040/Include diff --git a/lib/rp2350-riscv/libipv4-big.a b/lib/rp2350-riscv/libipv4-big.a index 94d51b363..65397198d 100644 Binary files a/lib/rp2350-riscv/libipv4-big.a and b/lib/rp2350-riscv/libipv4-big.a differ diff --git a/lib/rp2350-riscv/libipv4-bt-big.a b/lib/rp2350-riscv/libipv4-bt-big.a index b28f8e11f..2bc35c97d 100644 Binary files a/lib/rp2350-riscv/libipv4-bt-big.a and b/lib/rp2350-riscv/libipv4-bt-big.a differ diff --git a/lib/rp2350-riscv/libipv4-bt.a b/lib/rp2350-riscv/libipv4-bt.a index bc75f229c..94e0bfd2c 100644 Binary files a/lib/rp2350-riscv/libipv4-bt.a and b/lib/rp2350-riscv/libipv4-bt.a differ diff --git a/lib/rp2350-riscv/libipv4-ipv6-big.a b/lib/rp2350-riscv/libipv4-ipv6-big.a index c0a8b3121..41e94d31a 100644 Binary files a/lib/rp2350-riscv/libipv4-ipv6-big.a and b/lib/rp2350-riscv/libipv4-ipv6-big.a differ diff --git a/lib/rp2350-riscv/libipv4-ipv6-bt-big.a b/lib/rp2350-riscv/libipv4-ipv6-bt-big.a index 0d9b4b531..8f60f04c3 100644 Binary files a/lib/rp2350-riscv/libipv4-ipv6-bt-big.a and b/lib/rp2350-riscv/libipv4-ipv6-bt-big.a differ diff --git a/lib/rp2350-riscv/libipv4-ipv6-bt.a b/lib/rp2350-riscv/libipv4-ipv6-bt.a index 6fc02ee23..fd3b32446 100644 Binary files a/lib/rp2350-riscv/libipv4-ipv6-bt.a and b/lib/rp2350-riscv/libipv4-ipv6-bt.a differ diff --git a/lib/rp2350-riscv/libipv4-ipv6.a b/lib/rp2350-riscv/libipv4-ipv6.a index c93ffd8c1..d2b1f4892 100644 Binary files a/lib/rp2350-riscv/libipv4-ipv6.a and b/lib/rp2350-riscv/libipv4-ipv6.a differ diff --git a/lib/rp2350-riscv/libipv4.a b/lib/rp2350-riscv/libipv4.a index 1005dbf0a..cf4442ac0 100644 Binary files a/lib/rp2350-riscv/libipv4.a and b/lib/rp2350-riscv/libipv4.a differ diff --git a/lib/rp2350-riscv/libpico.a b/lib/rp2350-riscv/libpico.a index 74cf6e1ee..3fd4bddda 100644 Binary files a/lib/rp2350-riscv/libpico.a and b/lib/rp2350-riscv/libpico.a differ diff --git a/lib/rp2350-riscv/platform_def.txt b/lib/rp2350-riscv/platform_def.txt index 3c03c8715..8520dbb87 100644 --- a/lib/rp2350-riscv/platform_def.txt +++ b/lib/rp2350-riscv/platform_def.txt @@ -1,4 +1,5 @@ -DPICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 +-DTARGET_RP2350 -DCYW43_LWIP=1 -DCYW43_PIO_CLOCK_DIV_DYNAMIC=1 -DCFG_TUSB_MCU=OPT_MCU_RP2040 diff --git a/lib/rp2350-riscv/platform_inc.txt b/lib/rp2350-riscv/platform_inc.txt index 290cb376b..56f460029 100644 --- a/lib/rp2350-riscv/platform_inc.txt +++ b/lib/rp2350-riscv/platform_inc.txt @@ -15,4 +15,5 @@ -iwithprefixbefore/pico-sdk/lib/btstack/src -iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/bluedroid/decoder/include -iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/bluedroid/encoder/include +-iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/yxml -iwithprefixbefore/pico-sdk/lib/btstack/platform/embedded diff --git a/lib/rp2350/libipv4-big.a b/lib/rp2350/libipv4-big.a index 3b60d9571..99af03c87 100644 Binary files a/lib/rp2350/libipv4-big.a and b/lib/rp2350/libipv4-big.a differ diff --git a/lib/rp2350/libipv4-bt-big.a b/lib/rp2350/libipv4-bt-big.a index 1fd68a317..bac867a0a 100644 Binary files a/lib/rp2350/libipv4-bt-big.a and b/lib/rp2350/libipv4-bt-big.a differ diff --git a/lib/rp2350/libipv4-bt.a b/lib/rp2350/libipv4-bt.a index 2dc8e1f8b..34a6531f0 100644 Binary files a/lib/rp2350/libipv4-bt.a and b/lib/rp2350/libipv4-bt.a differ diff --git a/lib/rp2350/libipv4-ipv6-big.a b/lib/rp2350/libipv4-ipv6-big.a index c25e906a5..48f69af94 100644 Binary files a/lib/rp2350/libipv4-ipv6-big.a and b/lib/rp2350/libipv4-ipv6-big.a differ diff --git a/lib/rp2350/libipv4-ipv6-bt-big.a b/lib/rp2350/libipv4-ipv6-bt-big.a index 5e8dc1f9d..916338260 100644 Binary files a/lib/rp2350/libipv4-ipv6-bt-big.a and b/lib/rp2350/libipv4-ipv6-bt-big.a differ diff --git a/lib/rp2350/libipv4-ipv6-bt.a b/lib/rp2350/libipv4-ipv6-bt.a index fc89df7f0..602d6ae3f 100644 Binary files a/lib/rp2350/libipv4-ipv6-bt.a and b/lib/rp2350/libipv4-ipv6-bt.a differ diff --git a/lib/rp2350/libipv4-ipv6.a b/lib/rp2350/libipv4-ipv6.a index e06e3d633..239abfc6d 100644 Binary files a/lib/rp2350/libipv4-ipv6.a and b/lib/rp2350/libipv4-ipv6.a differ diff --git a/lib/rp2350/libipv4.a b/lib/rp2350/libipv4.a index b3e2abbfa..b4393fc6b 100644 Binary files a/lib/rp2350/libipv4.a and b/lib/rp2350/libipv4.a differ diff --git a/lib/rp2350/libpico.a b/lib/rp2350/libpico.a index 8469c6934..b9a9a1465 100644 Binary files a/lib/rp2350/libpico.a and b/lib/rp2350/libpico.a differ diff --git a/lib/rp2350/platform_def.txt b/lib/rp2350/platform_def.txt index f4135acf1..fb25add25 100644 --- a/lib/rp2350/platform_def.txt +++ b/lib/rp2350/platform_def.txt @@ -1,4 +1,5 @@ -DPICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 +-DTARGET_RP2350 -DCYW43_LWIP=1 -DCYW43_PIO_CLOCK_DIV_DYNAMIC=1 -DCFG_TUSB_MCU=OPT_MCU_RP2040 diff --git a/lib/rp2350/platform_inc.txt b/lib/rp2350/platform_inc.txt index 1567da252..f604cc13e 100644 --- a/lib/rp2350/platform_inc.txt +++ b/lib/rp2350/platform_inc.txt @@ -13,4 +13,5 @@ -iwithprefixbefore/pico-sdk/lib/btstack/src -iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/bluedroid/decoder/include -iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/bluedroid/encoder/include +-iwithprefixbefore/pico-sdk/lib/btstack/3rd-party/yxml -iwithprefixbefore/pico-sdk/lib/btstack/platform/embedded diff --git a/libraries/ADCInput/src/ADCInput.cpp b/libraries/ADCInput/src/ADCInput.cpp index 1af74ed32..e54d14963 100644 --- a/libraries/ADCInput/src/ADCInput.cpp +++ b/libraries/ADCInput/src/ADCInput.cpp @@ -49,12 +49,7 @@ bool ADCInput::setBuffers(size_t buffers, size_t bufferWords) { int ADCInput::_mask(pin_size_t p) { switch (p) { -#if !defined(PICO_RP2350B) - case 26: return 1; - case 27: return 2; - case 28: return 4; - case 29: return 8; -#else // Starts at 40 and there are 8 of them +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B case 40: return 1; case 41: return 2; case 42: return 4; @@ -63,6 +58,11 @@ int ADCInput::_mask(pin_size_t p) { case 45: return 32; case 46: return 64; case 47: return 128; +#else + case 26: return 1; + case 27: return 2; + case 28: return 4; + case 29: return 8; #endif default: return 0; } @@ -77,8 +77,9 @@ bool ADCInput::setPins(pin_size_t pin0, pin_size_t pin1, pin_size_t pin2, pin_si } bool ADCInput::setFrequency(int newFreq) { - _freq = newFreq * __builtin_popcount(_pinMask); // Want to sample all channels at given frequency - adc_set_clkdiv(48000000.0f / _freq - 1.0f); + _freq = newFreq; + int scaledFreq = newFreq * __builtin_popcount(_pinMask); // Want to sample all channels at given frequency + adc_set_clkdiv(48000000.0f / scaledFreq - 1.0f); return true; } @@ -105,7 +106,7 @@ bool ADCInput::begin() { // Set up the GPIOs to go to ADC adc_init(); int cnt = 0; -#if !defined(PICO_RP2350B) +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B int startpin = 26; int maxpin = 29; #else diff --git a/libraries/Adafruit_TinyUSB_Arduino b/libraries/Adafruit_TinyUSB_Arduino index f5211f422..6b772c0ac 160000 --- a/libraries/Adafruit_TinyUSB_Arduino +++ b/libraries/Adafruit_TinyUSB_Arduino @@ -1 +1 @@ -Subproject commit f5211f42269dc18ca7a8c6d17a8f6b04c34b644a +Subproject commit 6b772c0ac4a8158011a738e794463a2fe4e84a33 diff --git a/libraries/AudioBufferManager/src/AudioBufferManager.cpp b/libraries/AudioBufferManager/src/AudioBufferManager.cpp index bc8ee8e3c..cf1323677 100644 --- a/libraries/AudioBufferManager/src/AudioBufferManager.cpp +++ b/libraries/AudioBufferManager/src/AudioBufferManager.cpp @@ -204,7 +204,6 @@ size_t AudioBufferManager::write(const uint32_t *v, size_t words, bool sync) { /* noop busy wait */ } } - } size_t availToWriteThisBuff = _wordsPerBuffer - _userOff; size_t toWrite = std::min(availToWriteThisBuff, words); @@ -245,6 +244,38 @@ bool AudioBufferManager::read(uint32_t *v, bool sync) { return true; } +size_t AudioBufferManager::read(uint32_t *v, size_t words, bool sync) { + size_t read = 0; + + if (!_running || _isOutput) { + return 0; + } + while (words) { + AudioBuffer ** volatile p = (AudioBuffer ** volatile)&_filled; + if (!*p) { + if (!sync) { + return read; + } else { + while (!*p) { + /* noop busy wait */ + } + } + } + size_t availToReadThisBuff = _wordsPerBuffer - _userOff; + size_t toRead = std::min(availToReadThisBuff, words); + memcpy((void *)v, &((*p)->buff[_userOff]), toRead * sizeof(uint32_t)); + v += toRead; + read += toRead; + _userOff += toRead; + words -= toRead; + if (_userOff == _wordsPerBuffer) { + _addToList(&_empty, _takeFromList(p)); + _userOff = 0; + } + } + return read; +} + bool AudioBufferManager::getOverUnderflow() { bool hold = _overunderflow; _overunderflow = false; diff --git a/libraries/AudioBufferManager/src/AudioBufferManager.h b/libraries/AudioBufferManager/src/AudioBufferManager.h index 3326cac58..339677b22 100644 --- a/libraries/AudioBufferManager/src/AudioBufferManager.h +++ b/libraries/AudioBufferManager/src/AudioBufferManager.h @@ -36,6 +36,7 @@ class AudioBufferManager { bool write(uint32_t v, bool sync = true); size_t write(const uint32_t *v, size_t words, bool sync = true); bool read(uint32_t *v, bool sync = true); + size_t read(uint32_t *v, size_t words, bool sync = true); void flush(); bool getOverUnderflow(); diff --git a/libraries/BTstackLib/examples/LEPeripheral/LEPeripheral.ino b/libraries/BTstackLib/examples/LEPeripheral/LEPeripheral.ino index 8cc959d51..087b7ac93 100644 --- a/libraries/BTstackLib/examples/LEPeripheral/LEPeripheral.ino +++ b/libraries/BTstackLib/examples/LEPeripheral/LEPeripheral.ino @@ -82,7 +82,7 @@ void deviceDisconnectedCallback(BLEDevice * device) { @text In BTstack, the Read Callback is first called to query the size of the Characteristic Value, before it is called to provide the data. Both times, the size has to be returned. The data is only stored in the provided - buffer, if the buffer argeument is not NULL. + buffer, if the buffer argument is not NULL. If more than one dynamic Characteristics is used, the value handle is used to distinguish them. */ diff --git a/libraries/BTstackLib/src/BTstackLib.cpp b/libraries/BTstackLib/src/BTstackLib.cpp index a03a39b14..24df16065 100644 --- a/libraries/BTstackLib/src/BTstackLib.cpp +++ b/libraries/BTstackLib/src/BTstackLib.cpp @@ -196,7 +196,7 @@ static void extract_service(gatt_client_service_t * service, uint8_t * packet) { service->start_group_handle = little_endian_read_16(packet, 4); service->end_group_handle = little_endian_read_16(packet, 6); service->uuid16 = 0; - reverse_128(&packet[8], service->uuid128); + reverse_128(&packet[12], service->uuid128); if (uuid_has_bluetooth_prefix(service->uuid128)) { service->uuid16 = big_endian_read_32(service->uuid128, 0); } diff --git a/libraries/BluetoothAudio/src/A2DPSink.cpp b/libraries/BluetoothAudio/src/A2DPSink.cpp index b589d11ac..8d397a401 100644 --- a/libraries/BluetoothAudio/src/A2DPSink.cpp +++ b/libraries/BluetoothAudio/src/A2DPSink.cpp @@ -676,6 +676,9 @@ void A2DPSink::avrcp_target_packet_handler(uint8_t packet_type, uint16_t channel volume_percentage = volume * 100 / 127; DEBUGV("AVRCP Target : Volume set to %d%% (%d)\n", volume_percentage, volume); _consumer->setVolume(volume); + if (_volumeCB) { + _volumeCB(_volumeData, volume); + } break; case AVRCP_SUBEVENT_OPERATION: @@ -773,6 +776,11 @@ void A2DPSink::a2dp_sink_packet_handler(uint8_t packet_type, uint16_t channel, u DEBUGV("A2DP Sink : Streaming connection is established, address %s, cid 0x%02x, local seid %d\n", bd_addr_to_str(a2dp_conn->addr), a2dp_conn->a2dp_cid, a2dp_conn->a2dp_local_seid); memcpy(_sourceAddress, a2dp_conn->addr, sizeof(_sourceAddress)); + + _connected = true; + if (_connectCB) { + _connectCB(_connectData, true); + } break; case A2DP_SUBEVENT_STREAM_STARTED: @@ -784,10 +792,6 @@ void A2DPSink::a2dp_sink_packet_handler(uint8_t packet_type, uint16_t channel, u // prepare media processing media_processing_init(&a2dp_conn->sbc_configuration); // audio stream is started when buffer reaches minimal level - _connected = true; - if (_connectCB) { - _connectCB(_connectData, true); - } break; case A2DP_SUBEVENT_STREAM_SUSPENDED: diff --git a/libraries/BluetoothAudio/src/A2DPSink.h b/libraries/BluetoothAudio/src/A2DPSink.h index da6a4e6f2..5bc968bca 100644 --- a/libraries/BluetoothAudio/src/A2DPSink.h +++ b/libraries/BluetoothAudio/src/A2DPSink.h @@ -30,7 +30,7 @@ #include "btstack_resample.h" #include "btstack_ring_buffer.h" -class A2DPSink : public Stream { +class A2DPSink { public: A2DPSink() { _title[0] = 0; @@ -38,33 +38,6 @@ class A2DPSink : public Stream { _album[0] = 0; _genre[0] = 0; } - virtual int available() override { - return 0; // Unreadable, this is output only - } - - virtual int read() override { - return 0; - } - - virtual int peek() override { - return 0; - } - - virtual void flush() override { - } - virtual size_t write(const uint8_t *buffer, size_t size) override { - (void) buffer; - (void) size; - return 0; - } - virtual int availableForWrite() override { - return 0; - } - - virtual size_t write(uint8_t s) override { - (void) s; - return 0; - } bool setName(const char *name) { if (_running) { @@ -75,11 +48,6 @@ class A2DPSink : public Stream { return true; } - void onTransmit(void (*cb)(void *), void *cbData = nullptr) { - _transmitCB = cb; - _transmitData = cbData; - } - void onAVRCP(void (*cb)(void *, avrcp_operation_id_t, int), void *cbData = nullptr) { _avrcpCB = cb; _avrcpData = cbData; @@ -237,8 +205,6 @@ class A2DPSink : public Stream { bool _connected = false; // Callbacks - void (*_transmitCB)(void *) = nullptr; - void *_transmitData; void (*_avrcpCB)(void *, avrcp_operation_id_t, int) = nullptr; void *_avrcpData; void (*_batteryCB)(void *, avrcp_battery_status_t) = nullptr; diff --git a/libraries/BluetoothAudio/src/A2DPSource.cpp b/libraries/BluetoothAudio/src/A2DPSource.cpp index 7f6dcf456..350e3bd4e 100644 --- a/libraries/BluetoothAudio/src/A2DPSource.cpp +++ b/libraries/BluetoothAudio/src/A2DPSource.cpp @@ -223,7 +223,7 @@ size_t A2DPSource::write(const uint8_t *buffer, size_t size) { size = std::min((size_t)availableForWrite(), size); size_t count = 0; - size /= 2; + size /= sizeof(int16_t); // Convert size to samples // First copy from writer to either end of uint32_t start = _pcmWriter; @@ -262,7 +262,7 @@ int A2DPSource::availableForWrite() { } else { avail = _pcmBufferSize - _pcmWriter + _pcmReader - 1; } - avail /= sizeof(uint32_t); // availableForWrite always 32b sample pairs in this core... + avail *= sizeof(int16_t); // Convert samples to bytes return avail; } diff --git a/libraries/BluetoothAudio/src/A2DPSource.h b/libraries/BluetoothAudio/src/A2DPSource.h index 0c5293c81..5814e67b0 100644 --- a/libraries/BluetoothAudio/src/A2DPSource.h +++ b/libraries/BluetoothAudio/src/A2DPSource.h @@ -125,6 +125,14 @@ class A2DPSource : public Stream, public AudioOutputBase { return _hci.scan(mask, scanTimeSec, async); } + bool scanAsyncDone() { + return _hci.scanAsyncDone(); + } + + std::vector scanAsyncResult() { + return _hci.scanAsyncResult(); + } + bool connect(const uint8_t *addr = nullptr); bool connected() { @@ -151,6 +159,7 @@ class A2DPSource : public Stream, public AudioOutputBase { } // from Print (see notes on write() methods below) + // Writes only full samples (size must be divisible by sample size in bytes) virtual size_t write(const uint8_t *buffer, size_t size) override; virtual int availableForWrite() override; diff --git a/libraries/ESP8266SdFat b/libraries/ESP8266SdFat deleted file mode 160000 index 9e1457101..000000000 --- a/libraries/ESP8266SdFat +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9e1457101ca47b9ace198086dbd8854efc573ccf diff --git a/libraries/I2S/examples/I2SLoopback/I2SLoopback.ino b/libraries/I2S/examples/I2SLoopback/I2SLoopback.ino new file mode 100644 index 000000000..e23c2ce55 --- /dev/null +++ b/libraries/I2S/examples/I2SLoopback/I2SLoopback.ino @@ -0,0 +1,36 @@ +/* + I2S bi-directional input and output loopback example + Released to the Public Domain by Cooper Dalrymple +*/ + +#include + +I2S i2s(INPUT_PULLUP); + +void setup() { + Serial.begin(115200); + + i2s.setDOUT(0); + i2s.setDIN(1); + i2s.setBCLK(2); // Note: LRCLK = BCLK + 1 + i2s.setBitsPerSample(16); + i2s.setFrequency(22050); + // NOTE: The following values are known to work with the Adafruit microphone: + // i2s.setBitsPerSample(32); + // i2s.setFrequency(16000); + i2s.begin(); + + while (1) { + int16_t l, r; + i2s.read16(&l, &r); + i2s.write16(l, r); + // NOTE: Adafruit microphone word size needs to match the BPS above. + // int32_t l, r; + // i2s.read32(&l, &r); + // i2s.write32(l, r); + } +} + +void loop() { + /* Nothing here */ +} diff --git a/libraries/I2S/examples/I2SLoopback_Buffer/I2SLoopback_Buffer.ino b/libraries/I2S/examples/I2SLoopback_Buffer/I2SLoopback_Buffer.ino new file mode 100644 index 000000000..e6876f00d --- /dev/null +++ b/libraries/I2S/examples/I2SLoopback_Buffer/I2SLoopback_Buffer.ino @@ -0,0 +1,39 @@ +/* + I2S bi-directional input and output buffered loopback example + Released to the Public Domain by Cooper Dalrymple +*/ + +#include + +I2S i2s(INPUT_PULLUP); + +#define SIZE 256 +int16_t buffer[SIZE]; + +void setup() { + Serial.begin(115200); + + i2s.setDOUT(0); + i2s.setDIN(1); + i2s.setBCLK(2); // Note: LRCLK = BCLK + 1 + i2s.setBitsPerSample(16); + i2s.setFrequency(22050); + i2s.setBuffers(6, SIZE * sizeof(int16_t) / sizeof(uint32_t)); + i2s.begin(); + + size_t count, index; + while (1) { + count = i2s.read((uint8_t *)&buffer, SIZE * sizeof(int16_t)) * sizeof(uint32_t) / sizeof(int16_t); + index = 0; + while (index < count) { + // Reduce volume by half + buffer[index++] >>= 1; // right + buffer[index++] >>= 1; // left + } + i2s.write((const uint8_t *)&buffer, count * sizeof(int16_t)); + } +} + +void loop() { + /* Nothing here */ +} diff --git a/libraries/I2S/src/I2S.cpp b/libraries/I2S/src/I2S.cpp index ca7374af7..461f2e79c 100644 --- a/libraries/I2S/src/I2S.cpp +++ b/libraries/I2S/src/I2S.cpp @@ -24,13 +24,15 @@ #include -I2S::I2S(PinMode direction, pin_size_t bclk, pin_size_t data, pin_size_t mclk) { +I2S::I2S(PinMode direction, pin_size_t bclk, pin_size_t data, pin_size_t mclk, pin_size_t data_rx) { _running = false; _bps = 16; _writtenHalf = false; - _isOutput = direction == OUTPUT; + _isInput = direction == INPUT || direction == INPUT_PULLUP; + _isOutput = direction == OUTPUT || direction == INPUT_PULLUP; _pinBCLK = bclk; _pinDOUT = data; + _pinDIN = direction == INPUT ? data : data_rx; _pinMCLK = mclk; _MCLKenabled = false; #ifdef PIN_I2S_BCLK @@ -44,14 +46,17 @@ I2S::I2S(PinMode direction, pin_size_t bclk, pin_size_t data, pin_size_t mclk) { #endif #ifdef PIN_I2S_DIN - if (!_isOutput) { - _pinDOUT = PIN_I2S_DIN; + if (_isInput) { + _pinDIN = PIN_I2S_DIN; } #endif _freq = 48000; - _arb = nullptr; - _cb = nullptr; - _cbd = nullptr; + _arbInput = nullptr; + _cbInput = nullptr; + _cbdInput = nullptr; + _arbOutput = nullptr; + _cbOutput = nullptr; + _cbdOutput = nullptr; _buffers = 6; _bufferWords = 0; _silenceSample = 0; @@ -81,7 +86,20 @@ bool I2S::setMCLK(pin_size_t pin) { _pinMCLK = pin; return true; } + bool I2S::setDATA(pin_size_t pin) { + if (_running || (pin >= __GPIOCNT) || (_isOutput && _isInput)) { + return false; + } + if (_isOutput) { + _pinDOUT = pin; + } else { + _pinDIN = pin; + } + return true; +} + +bool I2S::setDOUT(pin_size_t pin) { if (_running || (pin >= __GPIOCNT)) { return false; } @@ -89,6 +107,14 @@ bool I2S::setDATA(pin_size_t pin) { return true; } +bool I2S::setDIN(pin_size_t pin) { + if (_running || (pin >= __GPIOCNT)) { + return false; + } + _pinDIN = pin; + return true; +} + bool I2S::setBitsPerSample(int bps) { if (_running || ((bps != 8) && (bps != 16) && (bps != 24) && (bps != 32))) { return false; @@ -111,10 +137,10 @@ bool I2S::setFrequency(int newFreq) { _freq = newFreq; if (_running) { if (_MCLKenabled) { - int bitClk = _freq * _bps * (_isTDM ? (double)_tdmChannels : 2.0) /* channels */ * 2.0 /* edges per clock */; + int bitClk = _freq * _bps * (_isTDM ? (double)_tdmChannels : 2.0) /* channels */ * (_isInput && _isOutput ? 4.0 : 2.0) /* edges per clock */; pio_sm_set_clkdiv_int_frac(_pio, _sm, clock_get_hz(clk_sys) / bitClk, 0); } else { - float bitClk = _freq * _bps * (_isTDM ? (double)_tdmChannels : 2.0) /* channels */ * 2.0 /* edges per clock */; + float bitClk = _freq * _bps * (_isTDM ? (double)_tdmChannels : 2.0) /* channels */ * (_isInput && _isOutput ? 4.0 : 2.0) /* edges per clock */; pio_sm_set_clkdiv(_pio, _sm, (float)clock_get_hz(clk_sys) / bitClk); } } @@ -144,7 +170,7 @@ bool I2S::setMCLKmult(int mult) { } bool I2S::setLSBJFormat() { - if (_running || !_isOutput) { + if (_running || !_isOutput || _isInput) { return false; } _isLSBJ = true; @@ -168,7 +194,7 @@ bool I2S::setTDMChannels(int channels) { } bool I2S::swapClocks() { - if (_running || !_isOutput) { + if (_running) { return false; } _swapClocks = true; @@ -177,38 +203,38 @@ bool I2S::swapClocks() { void I2S::onTransmit(void(*fn)(void)) { if (_isOutput) { - _cb = fn; + _cbOutput = fn; if (_running) { - _arb->setCallback(_cb); + _arbOutput->setCallback(_cbOutput); } } } void I2S::onTransmit(void(*fn)(void *), void *cbData) { if (_isOutput) { - _cbd = fn; - _cbdata = cbData; + _cbdOutput = fn; + _cbdataOutput = cbData; if (_running) { - _arb->setCallback(_cbd, _cbdata); + _arbOutput->setCallback(_cbdOutput, _cbdataOutput); } } } void I2S::onReceive(void(*fn)(void)) { - if (!_isOutput) { - _cb = fn; + if (_isInput) { + _cbInput = fn; if (_running) { - _arb->setCallback(_cb); + _arbInput->setCallback(_cbInput); } } } void I2S::onReceive(void(*fn)(void *), void *cbData) { - if (!_isOutput) { - _cbd = fn; - _cbdata = cbData; + if (_isInput) { + _cbdInput = fn; + _cbdataInput = cbData; if (_running) { - _arb->setCallback(_cbd, _cbdata); + _arbInput->setCallback(_cbdInput, _cbdataInput); } } } @@ -229,12 +255,21 @@ bool I2S::begin() { _isHolding = 0; int off = 0; if (!_swapClocks) { - _i2s = new PIOProgram(_isOutput ? (_isTDM ? &pio_tdm_out_program : (_isLSBJ ? &pio_lsbj_out_program : &pio_i2s_out_program)) : &pio_i2s_in_program); + _i2s = new PIOProgram(_isOutput ? (_isInput ? (_isTDM ? &pio_tdm_inout_program : &pio_i2s_inout_program) : (_isTDM ? &pio_tdm_out_program : (_isLSBJ ? &pio_lsbj_out_program : &pio_i2s_out_program))) : &pio_i2s_in_program); + } else { + _i2s = new PIOProgram(_isOutput ? (_isInput ? (_isTDM ? &pio_tdm_inout_swap_program : &pio_i2s_inout_swap_program) : (_isTDM ? &pio_tdm_out_swap_program : (_isLSBJ ? &pio_lsbj_out_swap_program : &pio_i2s_out_swap_program))) : &pio_i2s_in_swap_program); + } + int minpin, maxpin; + if (_isOutput && _isInput) { + minpin = std::min(std::min((int)_pinDOUT, (int)_pinDIN), (int)_pinBCLK); + maxpin = std::max(std::min((int)_pinDOUT, (int)_pinDIN), (int)_pinBCLK + 1); + } else if (_isOutput) { + minpin = std::min((int)_pinDOUT, (int)_pinBCLK); + maxpin = std::max((int)_pinDOUT, (int)_pinBCLK + 1); } else { - _i2s = new PIOProgram(_isOutput ? (_isTDM ? &pio_tdm_out_swap_program : (_isLSBJ ? &pio_lsbj_out_swap_program : &pio_i2s_out_swap_program)) : &pio_i2s_in_swap_program); + minpin = std::min((int)_pinDIN, (int)_pinBCLK); + maxpin = std::max((int)_pinDIN, (int)_pinBCLK + 1); } - int minpin = std::min((int)_pinDOUT, (int)_pinBCLK); - int maxpin = std::max((int)_pinDOUT, (int)_pinBCLK + 1); if (!_i2s->prepare(&_pio, &_sm, &off, minpin, maxpin - minpin + 1)) { _running = false; delete _i2s; @@ -242,7 +277,13 @@ bool I2S::begin() { return false; } if (_isOutput) { - if (_isTDM) { + if (_isInput) { + if (_isTDM) { + pio_tdm_inout_program_init(_pio, _sm, off, _pinDIN, _pinDOUT, _pinBCLK, _bps, _swapClocks, _tdmChannels); + } else { + pio_i2s_inout_program_init(_pio, _sm, off, _pinDIN, _pinDOUT, _pinBCLK, _bps, _swapClocks); + } + } else if (_isTDM) { pio_tdm_out_program_init(_pio, _sm, off, _pinDOUT, _pinBCLK, _bps, _swapClocks, _tdmChannels); } else if (_isLSBJ) { pio_lsbj_out_program_init(_pio, _sm, off, _pinDOUT, _pinBCLK, _bps, _swapClocks); @@ -250,7 +291,7 @@ bool I2S::begin() { pio_i2s_out_program_init(_pio, _sm, off, _pinDOUT, _pinBCLK, _bps, _swapClocks); } } else { - pio_i2s_in_program_init(_pio, _sm, off, _pinDOUT, _pinBCLK, _bps, _swapClocks); + pio_i2s_in_program_init(_pio, _sm, off, _pinDIN, _pinBCLK, _bps, _swapClocks); } setFrequency(_freq); if (_MCLKenabled) { @@ -266,19 +307,39 @@ bool I2S::begin() { if (!_bufferWords) { _bufferWords = 64 * (_bps == 32 ? 2 : 1); } - _arb = new AudioBufferManager(_buffers, _bufferWords, _silenceSample, _isOutput ? OUTPUT : INPUT); - if (!_arb->begin(pio_get_dreq(_pio, _sm, _isOutput), _isOutput ? &_pio->txf[_sm] : (volatile void*)&_pio->rxf[_sm])) { - _running = false; - delete _arb; - _arb = nullptr; - delete _i2s; - _i2s = nullptr; - return false; + if (_isInput) { + _arbInput = new AudioBufferManager(_buffers, _bufferWords, _silenceSample, INPUT); + if (!_arbInput->begin(pio_get_dreq(_pio, _sm, false), (volatile void*)&_pio->rxf[_sm])) { + _running = false; + delete _arbInput; + _arbInput = nullptr; + delete _i2s; + _i2s = nullptr; + return false; + } + if (_cbdInput) { + _arbInput->setCallback(_cbdInput, _cbdataInput); + } else { + _arbInput->setCallback(_cbInput); + } } - if (_cbd) { - _arb->setCallback(_cbd, _cbdata); - } else { - _arb->setCallback(_cb); + if (_isOutput) { + _arbOutput = new AudioBufferManager(_buffers, _bufferWords, _silenceSample, OUTPUT); + if (!_arbOutput->begin(pio_get_dreq(_pio, _sm, true), &_pio->txf[_sm])) { + _running = false; + delete _arbOutput; + _arbOutput = nullptr; + delete _arbInput; + _arbInput = nullptr; + delete _i2s; + _i2s = nullptr; + return false; + } + if (_cbdOutput) { + _arbOutput->setCallback(_cbdOutput, _cbdataOutput); + } else { + _arbOutput->setCallback(_cbOutput); + } } pio_sm_set_enabled(_pio, _sm, true); @@ -294,8 +355,10 @@ bool I2S::end() { } pio_sm_set_enabled(_pio, _sm, false); _running = false; - delete _arb; - _arb = nullptr; + delete _arbOutput; + _arbOutput = nullptr; + delete _arbInput; + _arbInput = nullptr; delete _i2s; _i2s = nullptr; } @@ -303,12 +366,12 @@ bool I2S::end() { } int I2S::available() { - if (!_running) { + if (!_running || !_isInput) { return 0; } else { - auto avail = _arb->available(); - avail *= 4; // 4 samples per 32-bits - if (_bps < 24 && !_isOutput) { + auto avail = _arbInput->available(); + avail *= 4; // 4 bytes per 32-bits + if (_bps < 24) { avail += _isHolding / 8; } return avail; @@ -316,7 +379,7 @@ int I2S::available() { } int I2S::read() { - if (!_running || _isOutput) { + if (!_running || !_isInput) { return 0; } @@ -352,7 +415,7 @@ int I2S::read() { } int I2S::peek() { - if (!_running || _isOutput) { + if (!_running || !_isInput) { return 0; } if (!_hasPeeked) { @@ -364,7 +427,12 @@ int I2S::peek() { void I2S::flush() { if (_running) { - _arb->flush(); + if (_isOutput) { + _arbOutput->flush(); + } + if (_isInput) { + _arbInput->flush(); + } } } @@ -408,7 +476,7 @@ size_t I2S::write(int32_t val, bool sync) { if (!_running || !_isOutput) { return 0; } - return _arb->write(val, sync); + return _arbOutput->write(val, sync); } size_t I2S::write8(int8_t l, int8_t r) { @@ -441,14 +509,14 @@ size_t I2S::write32(int32_t l, int32_t r) { } size_t I2S::read(int32_t *val, bool sync) { - if (!_running || _isOutput) { + if (!_running || !_isInput) { return 0; } - return _arb->read((uint32_t *)val, sync); + return _arbInput->read((uint32_t *)val, sync); } bool I2S::read8(int8_t *l, int8_t *r) { - if (!_running || _isOutput) { + if (!_running || !_isInput) { return false; } if (_isHolding) { @@ -465,7 +533,7 @@ bool I2S::read8(int8_t *l, int8_t *r) { } bool I2S::read16(int16_t *l, int16_t *r) { - if (!_running || _isOutput) { + if (!_running || !_isInput) { return false; } int32_t o; @@ -476,7 +544,7 @@ bool I2S::read16(int16_t *l, int16_t *r) { } bool I2S::read24(int32_t *l, int32_t *r) { - if (!_running || _isOutput) { + if (!_running || !_isInput) { return false; } read32(l, r); @@ -487,7 +555,7 @@ bool I2S::read24(int32_t *l, int32_t *r) { } bool I2S::read32(int32_t *l, int32_t *r) { - if (!_running || _isOutput) { + if (!_running || !_isInput) { return false; } read(l, true); @@ -495,17 +563,31 @@ bool I2S::read32(int32_t *l, int32_t *r) { return true; } +size_t I2S::read(uint8_t *buffer, size_t size) { + // We can only read 32-bit chunks here + if (size & 0x3 || !_running || !_isInput) { + return 0; + } + return _arbInput->read((uint32_t *)buffer, size / sizeof(uint32_t), false); +} + size_t I2S::write(const uint8_t *buffer, size_t size) { // We can only write 32-bit chunks here if (size & 0x3 || !_running || !_isOutput) { return 0; } - return _arb->write((const uint32_t *)buffer, size / sizeof(uint32_t), false); + return _arbOutput->write((const uint32_t *)buffer, size / sizeof(uint32_t), false); } int I2S::availableForWrite() { if (!_running || !_isOutput) { return 0; + } else { + auto avail = _arbOutput->available(); + avail *= 4; // 4 bytes per 32-bits + if (_bps < 24 && _isInput) { + avail += _isHolding / 8; + } + return avail; } - return available(); } diff --git a/libraries/I2S/src/I2S.h b/libraries/I2S/src/I2S.h index bb60e538c..dad45faca 100644 --- a/libraries/I2S/src/I2S.h +++ b/libraries/I2S/src/I2S.h @@ -26,11 +26,13 @@ class I2S : public Stream, public AudioOutputBase { public: - I2S(PinMode direction = OUTPUT, pin_size_t bclk = 26, pin_size_t data = 28, pin_size_t mclk = 25); + I2S(PinMode direction = OUTPUT, pin_size_t bclk = 26, pin_size_t data = 28, pin_size_t mclk = 25, pin_size_t data_rx = 22); virtual ~I2S(); bool setBCLK(pin_size_t pin); bool setDATA(pin_size_t pin); + bool setDOUT(pin_size_t pin); + bool setDIN(pin_size_t pin); bool setMCLK(pin_size_t pin); virtual bool setBitsPerSample(int bps) override; virtual bool setBuffers(size_t buffers, size_t bufferWords, int32_t silenceSample = 0) override; @@ -52,9 +54,6 @@ class I2S : public Stream, public AudioOutputBase { virtual bool begin() override; virtual bool end() override; - virtual bool getUnderflow() override { - return getOverUnderflow(); - } // from Stream virtual int available() override; @@ -71,7 +70,21 @@ class I2S : public Stream, public AudioOutputBase { if (!_running) { return false; } else { - return _arb->getOverUnderflow(); + return _isOutput ? _arbOutput->getOverUnderflow() : _arbInput->getOverUnderflow(); + } + } + bool getOverflow() { + if (!_running || !_isInput) { + return false; + } else { + return _arbInput->getOverUnderflow(); + } + } + virtual bool getUnderflow() override { + if (!_running || !_isOutput) { + return false; + } else { + return _arbOutput->getOverUnderflow(); } } @@ -114,6 +127,9 @@ class I2S : public Stream, public AudioOutputBase { bool read24(int32_t *l, int32_t *r); // Note that 24b reads will be left-aligned (see above) bool read32(int32_t *l, int32_t *r); + // Read samples into buffer + size_t read(uint8_t *buffer, size_t size); + // Note that these callback are called from **INTERRUPT CONTEXT** and hence // should be in RAM, not FLASH, and should be quick to execute. void onTransmit(void(*)(void)); @@ -124,6 +140,7 @@ class I2S : public Stream, public AudioOutputBase { private: pin_size_t _pinBCLK; pin_size_t _pinDOUT; + pin_size_t _pinDIN; pin_size_t _pinMCLK; int _bps; int _freq; @@ -134,6 +151,7 @@ class I2S : public Stream, public AudioOutputBase { bool _isLSBJ; bool _isTDM; int _tdmChannels; + bool _isInput; bool _isOutput; bool _swapClocks; bool _MCLKenabled; @@ -150,13 +168,18 @@ class I2S : public Stream, public AudioOutputBase { int32_t _holdWord = 0; int _isHolding = 0; - void (*_cb)(); - void (*_cbd)(void *); - void *_cbdata; + void (*_cbInput)(); + void (*_cbdInput)(void *); + void *_cbdataInput; + + void (*_cbOutput)(); + void (*_cbdOutput)(void *); + void *_cbdataOutput; void MCLKbegin(); - AudioBufferManager *_arb; + AudioBufferManager *_arbInput; + AudioBufferManager *_arbOutput; PIOProgram *_i2s; PIOProgram *_i2sMCLK; PIO _pio, _pioMCLK; diff --git a/libraries/I2S/src/pio_i2s.pio b/libraries/I2S/src/pio_i2s.pio index 4c5f5ad45..7430b9bfb 100644 --- a/libraries/I2S/src/pio_i2s.pio +++ b/libraries/I2S/src/pio_i2s.pio @@ -104,6 +104,41 @@ lastbit: ; Loop back to the beginning +.program pio_tdm_inout +.side_set 2 ; 0 = bclk, 1 = wclk +; The C code should place (number of bits * channels - 1) in Y and update SHIFTCTRL +; to be 32 (as per the TDM specs) +; +----- WCLK +; |+---- BCLK + mov x, y side 0b01 [1] +bitloop: + out pins, 1 side 0b00 ; Output changes on falling edge + in pins, 1 side 0b00 ; Sample input on falling edge + jmp x-- bitloop side 0b11 [1] ; Last bit toggles WCLK to mark frame boundary + +lastbit: + in pins, 1 side 0b10 + out pins, 1 side 0b10 + ; Loop back to the beginning + + +.program pio_tdm_inout_swap +.side_set 2 ; 0 = bclk, 1 = wclk +; The C code should place (number of bits * channels - 1) in Y and update SHIFTCTRL +; to be 32 (as per the TDM specs) +; +----- WCLK +; |+---- BCLK + mov x, y side 0b10 [1] +bitloop: + out pins, 1 side 0b00 ; Output changes on falling edge + in pins, 1 side 0b00 ; Sample input on falling edge + jmp x-- bitloop side 0b11 [1] ; Last bit toggles WCLK to mark frame boundary + +lastbit: + in pins, 1 side 0b01 + out pins, 1 side 0b01 + ; Loop back to the beginning + .program pio_lsbj_out .side_set 2 ; 0 = bclk, 1=wclk @@ -194,6 +229,58 @@ right1: ; Loop back to beginning... + +.program pio_i2s_inout +.side_set 2 ; 0 = bclk, 1=wclk + +; The C code should place (number of bits/sample - 2) in Y and +; also update the SHIFTCTRL to be 24 or 32 as appropriate + +; +----- WCLK +; |+---- BCLK + mov x, y side 0b00 [1] +left1: + out pins, 1 side 0b01 + in pins, 1 side 0b01 + jmp x--, left1 side 0b00 [1] + out pins, 1 side 0b01 + in pins, 1 side 0b01 ; 2584 LRCK stays low until BCLK goes low + ; Last bit of left has WCLK change per I2S spec + mov x, y side 0b10 [1] +right1: + out pins, 1 side 0b11 + in pins, 1 side 0b11 + jmp x--, right1 side 0b10 [1] + out pins, 1 side 0b11 + in pins, 1 side 0b11 ; 2584 LRCK stays high until BCLK goes low + ; Loop back to beginning... + + +.program pio_i2s_inout_swap ; Note this is the same as _out, just "in" and not "out" +.side_set 2 ; 0 = wclk, 1=bclk + +; The C code should place (number of bits/sample - 2) in Y and +; also update the SHIFTCTRL to be 24 or 32 as appropriate + +; +----- BCLK +; |+---- WCLK + mov x, y side 0b00 [1] +left1: + out pins, 1 side 0b10 + in pins, 1 side 0b10 + jmp x--, left1 side 0b00 [1] + out pins, 1 side 0b10 + in pins, 1 side 0b10 ;2584 LRCK stays low until BCLK goes low + + mov x, y side 0b01 [1] +right1: + out pins, 1 side 0b11 + in pins, 1 side 0b11 + jmp x--, right1 side 0b01 [1] + out pins, 1 side 0b11 + in pins, 1 side 0b11 ; 2584 LRCK stays high until BCLK goes low + ; Loop back to beginning... + % c-sdk { @@ -261,6 +348,42 @@ static inline void pio_tdm_out_program_init(PIO pio, uint sm, uint offset, uint pio_sm_exec(pio, sm, pio_encode_out(pio_osr, 32)); } +static inline void pio_tdm_inout_program_init(PIO pio, uint sm, uint offset, uint data_in_pin, uint data_out_pin, uint clock_pin_base, uint bits, bool swap, uint channels) { + pio_gpio_init(pio, data_in_pin); + pio_gpio_init(pio, data_out_pin); + pio_gpio_init(pio, clock_pin_base); + pio_gpio_init(pio, clock_pin_base + 1); + + pio_sm_config c = swap ? pio_tdm_inout_swap_program_get_default_config(offset) : pio_tdm_inout_program_get_default_config(offset); + + sm_config_set_in_pins(&c, data_in_pin); + sm_config_set_out_pins(&c, data_out_pin, 1); + sm_config_set_sideset_pins(&c, clock_pin_base); + sm_config_set_in_shift(&c, false, true, 32); + sm_config_set_out_shift(&c, false, true, 32); + sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_NONE); + + pio_sm_init(pio, sm, offset, &c); + + pio_sm_set_consecutive_pindirs(pio, sm, data_in_pin, 1, false); + pio_sm_set_consecutive_pindirs(pio, sm, data_out_pin, 1, true); + pio_sm_set_consecutive_pindirs(pio, sm, clock_pin_base, 2, true); + pio_sm_set_set_pins(pio, sm, data_out_pin, 1); + pio_sm_set_set_pins(pio, sm, clock_pin_base, 2); + + // Initialize PIO state for TDM + // Can't set constant > 31, so push and pop/mov if needed + if (bits * channels - 1 > 31) { + pio_sm_put_blocking(pio, sm, bits * channels - 2); + pio_sm_exec(pio, sm, pio_encode_pull(false, false)); + pio_sm_exec(pio, sm, pio_encode_mov(pio_y, pio_osr)); + } else { + pio_sm_exec(pio, sm, pio_encode_set(pio_y, bits * channels - 2)); + } + + // Need to make OSR believe there's nothing left to shift out + pio_sm_exec(pio, sm, pio_encode_out(pio_osr, 32)); +} static inline void pio_lsbj_out_program_init(PIO pio, uint sm, uint offset, uint data_pin, uint clock_pin_base, uint bits, bool swap) { pio_gpio_init(pio, data_pin); @@ -314,4 +437,35 @@ static inline void pio_i2s_in_program_init(PIO pio, uint sm, uint offset, uint d pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits - 1)); // Shift in 1st R data modulo one bit, avoiding bit shift from #2037 } +static inline void pio_i2s_inout_program_init(PIO pio, uint sm, uint offset, uint data_in_pin, uint data_out_pin, uint clock_pin_base, uint bits, bool swap) { + pio_gpio_init(pio, data_in_pin); + pio_gpio_init(pio, data_out_pin); + pio_gpio_init(pio, clock_pin_base); + pio_gpio_init(pio, clock_pin_base + 1); + + pio_sm_config sm_config = swap ? pio_i2s_inout_swap_program_get_default_config(offset) : pio_i2s_inout_program_get_default_config(offset); + + sm_config_set_in_pins(&sm_config, data_in_pin); + sm_config_set_out_pins(&sm_config, data_out_pin, 1); + sm_config_set_sideset_pins(&sm_config, clock_pin_base); + sm_config_set_in_shift(&sm_config, false, true, (bits <= 16) ? 2 * bits : bits); + sm_config_set_out_shift(&sm_config, false, true, (bits <= 16) ? 2 * bits : bits); + + pio_sm_init(pio, sm, offset, &sm_config); + + //uint pin_mask = (1u << data_out_pin) | (3u << clock_pin_base); + //pio_sm_set_pindirs_with_mask(pio, sm, pin_mask, pin_mask); + //pio_sm_set_pins(pio, sm, 0); // clear pins + pio_sm_set_consecutive_pindirs(pio, sm, data_in_pin, 1, false); + pio_sm_set_consecutive_pindirs(pio, sm, data_out_pin, 1, true); + pio_sm_set_consecutive_pindirs(pio, sm, clock_pin_base, 2, true); + pio_sm_set_set_pins(pio, sm, data_out_pin, 1); + pio_sm_set_set_pins(pio, sm, clock_pin_base, 2); + + pio_sm_exec(pio, sm, pio_encode_set(pio_y, bits - 2)); + + pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits)); // Shift in 1st L data + pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits - 1)); // Shift in 1st R data modulo one bit, avoiding bit shift from #2037 +} + %} diff --git a/libraries/I2S/src/pio_i2s.pio.h b/libraries/I2S/src/pio_i2s.pio.h index 9e4372ebd..8f900872b 100644 --- a/libraries/I2S/src/pio_i2s.pio.h +++ b/libraries/I2S/src/pio_i2s.pio.h @@ -193,6 +193,82 @@ static inline pio_sm_config pio_tdm_out_swap_program_get_default_config(uint off } #endif +// ------------- // +// pio_tdm_inout // +// ------------- // + +#define pio_tdm_inout_wrap_target 0 +#define pio_tdm_inout_wrap 5 +#define pio_tdm_inout_pio_version 0 + +static const uint16_t pio_tdm_inout_program_instructions[] = { + // .wrap_target + 0xa922, // 0: mov x, y side 1 [1] + 0x6001, // 1: out pins, 1 side 0 + 0x4001, // 2: in pins, 1 side 0 + 0x1941, // 3: jmp x--, 1 side 3 [1] + 0x5001, // 4: in pins, 1 side 2 + 0x7001, // 5: out pins, 1 side 2 + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program pio_tdm_inout_program = { + .instructions = pio_tdm_inout_program_instructions, + .length = 6, + .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif +}; + +static inline pio_sm_config pio_tdm_inout_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + pio_tdm_inout_wrap_target, offset + pio_tdm_inout_wrap); + sm_config_set_sideset(&c, 2, false, false); + return c; +} +#endif + +// ------------------ // +// pio_tdm_inout_swap // +// ------------------ // + +#define pio_tdm_inout_swap_wrap_target 0 +#define pio_tdm_inout_swap_wrap 5 +#define pio_tdm_inout_swap_pio_version 0 + +static const uint16_t pio_tdm_inout_swap_program_instructions[] = { + // .wrap_target + 0xb122, // 0: mov x, y side 2 [1] + 0x6001, // 1: out pins, 1 side 0 + 0x4001, // 2: in pins, 1 side 0 + 0x1941, // 3: jmp x--, 1 side 3 [1] + 0x4801, // 4: in pins, 1 side 1 + 0x6801, // 5: out pins, 1 side 1 + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program pio_tdm_inout_swap_program = { + .instructions = pio_tdm_inout_swap_program_instructions, + .length = 6, + .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif +}; + +static inline pio_sm_config pio_tdm_inout_swap_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + pio_tdm_inout_swap_wrap_target, offset + pio_tdm_inout_swap_wrap); + sm_config_set_sideset(&c, 2, false, false); + return c; +} +#endif + // ------------ // // pio_lsbj_out // // ------------ // @@ -351,6 +427,94 @@ static inline pio_sm_config pio_i2s_in_swap_program_get_default_config(uint offs sm_config_set_sideset(&c, 2, false, false); return c; } +#endif + +// ------------- // +// pio_i2s_inout // +// ------------- // + +#define pio_i2s_inout_wrap_target 0 +#define pio_i2s_inout_wrap 11 +#define pio_i2s_inout_pio_version 0 + +static const uint16_t pio_i2s_inout_program_instructions[] = { + // .wrap_target + 0xa122, // 0: mov x, y side 0 [1] + 0x6801, // 1: out pins, 1 side 1 + 0x4801, // 2: in pins, 1 side 1 + 0x0141, // 3: jmp x--, 1 side 0 [1] + 0x6801, // 4: out pins, 1 side 1 + 0x4801, // 5: in pins, 1 side 1 + 0xb122, // 6: mov x, y side 2 [1] + 0x7801, // 7: out pins, 1 side 3 + 0x5801, // 8: in pins, 1 side 3 + 0x1147, // 9: jmp x--, 7 side 2 [1] + 0x7801, // 10: out pins, 1 side 3 + 0x5801, // 11: in pins, 1 side 3 + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program pio_i2s_inout_program = { + .instructions = pio_i2s_inout_program_instructions, + .length = 12, + .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif +}; + +static inline pio_sm_config pio_i2s_inout_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + pio_i2s_inout_wrap_target, offset + pio_i2s_inout_wrap); + sm_config_set_sideset(&c, 2, false, false); + return c; +} +#endif + +// ------------------ // +// pio_i2s_inout_swap // +// ------------------ // + +#define pio_i2s_inout_swap_wrap_target 0 +#define pio_i2s_inout_swap_wrap 11 +#define pio_i2s_inout_swap_pio_version 0 + +static const uint16_t pio_i2s_inout_swap_program_instructions[] = { + // .wrap_target + 0xa122, // 0: mov x, y side 0 [1] + 0x7001, // 1: out pins, 1 side 2 + 0x5001, // 2: in pins, 1 side 2 + 0x0141, // 3: jmp x--, 1 side 0 [1] + 0x7001, // 4: out pins, 1 side 2 + 0x5001, // 5: in pins, 1 side 2 + 0xa922, // 6: mov x, y side 1 [1] + 0x7801, // 7: out pins, 1 side 3 + 0x5801, // 8: in pins, 1 side 3 + 0x0947, // 9: jmp x--, 7 side 1 [1] + 0x7801, // 10: out pins, 1 side 3 + 0x5801, // 11: in pins, 1 side 3 + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program pio_i2s_inout_swap_program = { + .instructions = pio_i2s_inout_swap_program_instructions, + .length = 12, + .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif +}; + +static inline pio_sm_config pio_i2s_inout_swap_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + pio_i2s_inout_swap_wrap_target, offset + pio_i2s_inout_swap_wrap); + sm_config_set_sideset(&c, 2, false, false); + return c; +} static inline void pio_i2s_MCLK_program_init(PIO pio, uint sm, uint offset, uint MCLK_pin) { pio_gpio_init(pio, MCLK_pin); @@ -402,6 +566,36 @@ static inline void pio_tdm_out_program_init(PIO pio, uint sm, uint offset, uint // Need to make OSR believe there's nothing left to shift out, or the 1st word will be the count we just passed in, not a sample pio_sm_exec(pio, sm, pio_encode_out(pio_osr, 32)); } +static inline void pio_tdm_inout_program_init(PIO pio, uint sm, uint offset, uint data_in_pin, uint data_out_pin, uint clock_pin_base, uint bits, bool swap, uint channels) { + pio_gpio_init(pio, data_in_pin); + pio_gpio_init(pio, data_out_pin); + pio_gpio_init(pio, clock_pin_base); + pio_gpio_init(pio, clock_pin_base + 1); + pio_sm_config c = swap ? pio_tdm_inout_swap_program_get_default_config(offset) : pio_tdm_inout_program_get_default_config(offset); + sm_config_set_in_pins(&c, data_in_pin); + sm_config_set_out_pins(&c, data_out_pin, 1); + sm_config_set_sideset_pins(&c, clock_pin_base); + sm_config_set_in_shift(&c, false, true, 32); + sm_config_set_out_shift(&c, false, true, 32); + sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_NONE); + pio_sm_init(pio, sm, offset, &c); + pio_sm_set_consecutive_pindirs(pio, sm, data_in_pin, 1, false); + pio_sm_set_consecutive_pindirs(pio, sm, data_out_pin, 1, true); + pio_sm_set_consecutive_pindirs(pio, sm, clock_pin_base, 2, true); + pio_sm_set_set_pins(pio, sm, data_out_pin, 1); + pio_sm_set_set_pins(pio, sm, clock_pin_base, 2); + // Initialize PIO state for TDM + // Can't set constant > 31, so push and pop/mov if needed + if (bits * channels - 1 > 31) { + pio_sm_put_blocking(pio, sm, bits * channels - 2); + pio_sm_exec(pio, sm, pio_encode_pull(false, false)); + pio_sm_exec(pio, sm, pio_encode_mov(pio_y, pio_osr)); + } else { + pio_sm_exec(pio, sm, pio_encode_set(pio_y, bits * channels - 2)); + } + // Need to make OSR believe there's nothing left to shift out + pio_sm_exec(pio, sm, pio_encode_out(pio_osr, 32)); +} static inline void pio_lsbj_out_program_init(PIO pio, uint sm, uint offset, uint data_pin, uint clock_pin_base, uint bits, bool swap) { pio_gpio_init(pio, data_pin); pio_gpio_init(pio, clock_pin_base); @@ -441,6 +635,30 @@ static inline void pio_i2s_in_program_init(PIO pio, uint sm, uint offset, uint d pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits)); // Shift in 1st L data pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits - 1)); // Shift in 1st R data modulo one bit, avoiding bit shift from #2037 } +static inline void pio_i2s_inout_program_init(PIO pio, uint sm, uint offset, uint data_in_pin, uint data_out_pin, uint clock_pin_base, uint bits, bool swap) { + pio_gpio_init(pio, data_in_pin); + pio_gpio_init(pio, data_out_pin); + pio_gpio_init(pio, clock_pin_base); + pio_gpio_init(pio, clock_pin_base + 1); + pio_sm_config sm_config = swap ? pio_i2s_inout_swap_program_get_default_config(offset) : pio_i2s_inout_program_get_default_config(offset); + sm_config_set_in_pins(&sm_config, data_in_pin); + sm_config_set_out_pins(&sm_config, data_out_pin, 1); + sm_config_set_sideset_pins(&sm_config, clock_pin_base); + sm_config_set_in_shift(&sm_config, false, true, (bits <= 16) ? 2 * bits : bits); + sm_config_set_out_shift(&sm_config, false, true, (bits <= 16) ? 2 * bits : bits); + pio_sm_init(pio, sm, offset, &sm_config); + //uint pin_mask = (1u << data_out_pin) | (3u << clock_pin_base); + //pio_sm_set_pindirs_with_mask(pio, sm, pin_mask, pin_mask); + //pio_sm_set_pins(pio, sm, 0); // clear pins + pio_sm_set_consecutive_pindirs(pio, sm, data_in_pin, 1, false); + pio_sm_set_consecutive_pindirs(pio, sm, data_out_pin, 1, true); + pio_sm_set_consecutive_pindirs(pio, sm, clock_pin_base, 2, true); + pio_sm_set_set_pins(pio, sm, data_out_pin, 1); + pio_sm_set_set_pins(pio, sm, clock_pin_base, 2); + pio_sm_exec(pio, sm, pio_encode_set(pio_y, bits - 2)); + pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits)); // Shift in 1st L data + pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits - 1)); // Shift in 1st R data modulo one bit, avoiding bit shift from #2037 +} #endif diff --git a/libraries/LEAmDNS/src/LEAmDNS_Transfer.cpp b/libraries/LEAmDNS/src/LEAmDNS_Transfer.cpp index f3dd7b2da..b1977879c 100644 --- a/libraries/LEAmDNS/src/LEAmDNS_Transfer.cpp +++ b/libraries/LEAmDNS/src/LEAmDNS_Transfer.cpp @@ -161,7 +161,7 @@ bool MDNSResponder::_prepareMDNSMessage(MDNSResponder::stcMDNSSendParameter& p_r // Prepare header; count answers stcMDNS_MsgHeader msgHeader(p_rSendParameter.m_u16ID, p_rSendParameter.m_bResponse, 0, p_rSendParameter.m_bAuthorative); - // If this is a response, the answers are anwers, + // If this is a response, the answers are answers, // else this is a query or probe and the answers go into auth section uint16_t& ru16Answers = (p_rSendParameter.m_bResponse ? msgHeader.m_u16ANCount : msgHeader.m_u16NSCount); diff --git a/libraries/LittleFS/lib/littlefs b/libraries/LittleFS/lib/littlefs index d01280e64..8ed63b27b 160000 --- a/libraries/LittleFS/lib/littlefs +++ b/libraries/LittleFS/lib/littlefs @@ -1 +1 @@ -Subproject commit d01280e64934a09ba16cac60cf9d3a37e228bb66 +Subproject commit 8ed63b27be79ab59ee1cd15a950ddd64e7a602f7 diff --git a/libraries/PDM/src/rp2040/pdm.pio b/libraries/PDM/src/rp2040/pdm.pio index dc5720120..9a3d7c5c2 100644 --- a/libraries/PDM/src/rp2040/pdm.pio +++ b/libraries/PDM/src/rp2040/pdm.pio @@ -31,7 +31,7 @@ static inline void pdm_pio_program_init(PIO pio, uint sm, uint offset, uint clkP pio_sm_set_consecutive_pindirs(pio, sm, dataPin, 1, false); pio_sm_set_consecutive_pindirs(pio, sm, clkPin, 1, true); pio_sm_set_pins_with_mask(pio, sm, 0, (1u << clkPin) ); - //pio_gpio_init(pio, dataPin); + pio_gpio_init(pio, dataPin); pio_gpio_init(pio, clkPin); pio_sm_init(pio, sm, offset, &c); diff --git a/libraries/PWMAudio/src/PWMAudioPrecalc.h b/libraries/PWMAudio/src/PWMAudioPrecalc.h index 872a17e8a..40d003d2a 100644 --- a/libraries/PWMAudio/src/PWMAudioPrecalc.h +++ b/libraries/PWMAudio/src/PWMAudioPrecalc.h @@ -18,8 +18,8 @@ static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 16000, 1}, {11025, 116 static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 16625, 1}, {11025, 24127, 2}, {16000, 16625, 2}, {22050, 24127, 4}, {32000, 16625, 4}, {44100, 24127, 8}, {48000, 16625, 6}, {88200, 24127, 16}, {96000, 16625, 12}, {176400, 47500, 63}, {192000, 16625, 24}}; #elif F_CPU == 150000000 static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 18750, 1}, {11025, 27211, 2}, {16000, 9375, 1}, {22050, 47619, 7}, {32000, 9375, 2}, {44100, 37415, 11}, {48000, 3125, 1}, {88200, 42517, 25}, {96000, 3125, 2}, {176400, 42517, 50}, {192000, 3125, 4}}; -#elif F_CPU == 175000000 -static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 21875, 1}, {11025, 15873, 1}, {16000, 21875, 2}, {22050, 15873, 2}, {32000, 21875, 4}, {44100, 15873, 4}, {48000, 21875, 6}, {88200, 15873, 8}, {96000, 21875, 12}, {176400, 62500, 63}, {192000, 21875, 24}}; +#elif F_CPU == 176000000 +static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 22000, 1}, {11025, 63855, 4}, {16000, 11000, 1}, {22050, 55873, 7}, {32000, 5500, 1}, {44100, 55873, 14}, {48000, 11000, 3}, {88200, 55873, 28}, {96000, 5500, 3}, {176400, 55873, 56}, {192000, 2750, 3}}; #elif F_CPU == 200000000 static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 25000, 1}, {11025, 54422, 3}, {16000, 12500, 1}, {22050, 63492, 7}, {32000, 6250, 1}, {44100, 31746, 7}, {48000, 12500, 3}, {88200, 15873, 7}, {96000, 6250, 3}, {176400, 53288, 47}, {192000, 3125, 3}}; #elif F_CPU == 225000000 @@ -28,8 +28,8 @@ static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 28125, 1}, {11025, 204 static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 30000, 1}, {11025, 65306, 3}, {16000, 15000, 1}, {22050, 32653, 3}, {32000, 7500, 1}, {44100, 59864, 11}, {48000, 5000, 1}, {88200, 62585, 23}, {96000, 2500, 1}, {176400, 62585, 46}, {192000, 1250, 1}}; #elif F_CPU == 250000000 static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 31250, 1}, {11025, 45351, 2}, {16000, 15625, 1}, {22050, 56689, 5}, {32000, 15625, 2}, {44100, 62358, 11}, {48000, 15625, 3}, {88200, 42517, 15}, {96000, 15625, 6}, {176400, 42517, 30}, {192000, 15625, 12}}; -#elif F_CPU == 275000000 -static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 34375, 1}, {11025, 49887, 2}, {16000, 34375, 2}, {22050, 37415, 3}, {32000, 34375, 4}, {44100, 37415, 6}, {48000, 34375, 6}, {88200, 37415, 12}, {96000, 34375, 12}, {176400, 35856, 23}, {192000, 34375, 24}}; +#elif F_CPU == 276000000 +static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 34500, 1}, {11025, 25034, 1}, {16000, 17250, 1}, {22050, 12517, 1}, {32000, 8625, 1}, {44100, 12517, 2}, {48000, 5750, 1}, {88200, 12517, 4}, {96000, 2875, 1}, {176400, 12517, 8}, {192000, 2875, 2}}; #elif F_CPU == 300000000 static const PWMPacerPrecalc __PWMAudio_pacer[] = {{8000, 37500, 1}, {11025, 27211, 1}, {16000, 18750, 1}, {22050, 27211, 2}, {32000, 9375, 1}, {44100, 47619, 7}, {48000, 6250, 1}, {88200, 37415, 11}, {96000, 3125, 1}, {176400, 42517, 25}, {192000, 3125, 2}}; #else diff --git a/libraries/SD/examples/CardInfo/CardInfo.ino b/libraries/SD/examples/CardInfo/CardInfo.ino index 1f6d5ab35..d69b720b2 100644 --- a/libraries/SD/examples/CardInfo/CardInfo.ino +++ b/libraries/SD/examples/CardInfo/CardInfo.ino @@ -37,6 +37,11 @@ const int _MOSI = 7; // AKA SPI TX const int _CS = 5; const int _SCK = 6; +// If you have all 4 DAT pins wired up to the Pico you can use SDIO mode +const int RP_CLK_GPIO = -1; // Set to CLK GPIO +const int RP_CMD_GPIO = -1; // Set to CMD GPIO +const int RP_DAT0_GPIO = -1; // Set to DAT0 GPIO. DAT1..3 must be consecutively connected. + // include the SD library: #include #include @@ -54,21 +59,26 @@ void setup() { Serial.println("\nInitializing SD card..."); bool sdInitialized = false; - // Ensure the SPI pinout the SD card is connected to is configured properly - // Select the correct SPI based on _MISO pin for the RP2040 - if (_MISO == 0 || _MISO == 4 || _MISO == 16) { - SPI.setRX(_MISO); - SPI.setTX(_MOSI); - SPI.setSCK(_SCK); - sdInitialized = SD.begin(_CS); - } else if (_MISO == 8 || _MISO == 12) { - SPI1.setRX(_MISO); - SPI1.setTX(_MOSI); - SPI1.setSCK(_SCK); - sdInitialized = SD.begin(_CS, SPI1); + if (RP_CLK_GPIO >= 0) { + // No special requirements on pin locations, this is PIO programmed + sdInitialized = SD.begin(RP_CLK_GPIO, RP_CMD_GPIO, RP_DAT0_GPIO); } else { - Serial.println(F("ERROR: Unknown SPI Configuration")); - return; + // Ensure the SPI pinout the SD card is connected to is configured properly + // Select the correct SPI based on _MISO pin for the RP2040 + if (_MISO == 0 || _MISO == 4 || _MISO == 16) { + SPI.setRX(_MISO); + SPI.setTX(_MOSI); + SPI.setSCK(_SCK); + sdInitialized = SD.begin(_CS); + } else if (_MISO == 8 || _MISO == 12) { + SPI1.setRX(_MISO); + SPI1.setTX(_MOSI); + SPI1.setSCK(_SCK); + sdInitialized = SD.begin(_CS, SPI1); + } else { + Serial.println(F("ERROR: Unknown SPI Configuration")); + return; + } } if (!sdInitialized) { @@ -114,7 +124,7 @@ void setup() { Serial.println(); // print the type and size of the first FAT-type volume - uint32_t volumesize; + uint64_t volumesize; Serial.print("Volume type is: FAT"); Serial.println(SD.fatType(), DEC); @@ -130,7 +140,7 @@ void setup() { Serial.println((float)volumesize / 1024.0); Serial.print("Card size: "); - Serial.println((float)SD.size() / 1000); + Serial.println((float)SD.size64() / 1000); FSInfo fs_info; SDFS.info(fs_info); diff --git a/libraries/SD/examples/Datalogger/Datalogger.ino b/libraries/SD/examples/Datalogger/Datalogger.ino index bde1a08c2..b9fd1e764 100644 --- a/libraries/SD/examples/Datalogger/Datalogger.ino +++ b/libraries/SD/examples/Datalogger/Datalogger.ino @@ -30,6 +30,11 @@ const int _MOSI = 7; const int _CS = 5; const int _SCK = 6; +// If you have all 4 DAT pins wired up to the Pico you can use SDIO mode +const int RP_CLK_GPIO = -1; // Set to CLK GPIO +const int RP_CMD_GPIO = -1; // Set to CMD GPIO +const int RP_DAT0_GPIO = -1; // Set to DAT0 GPIO. DAT1..3 must be consecutively connected. + #include #include @@ -39,13 +44,31 @@ void setup() { Serial.print("Initializing SD card..."); - // Ensure the SPI pinout the SD card is connected to is configured properly - SPI.setRX(_MISO); - SPI.setTX(_MOSI); - SPI.setSCK(_SCK); + bool sdInitialized = false; + if (RP_CLK_GPIO >= 0) { + // No special requirements on pin locations, this is PIO programmed + sdInitialized = SD.begin(RP_CLK_GPIO, RP_CMD_GPIO, RP_DAT0_GPIO); + } else { + // Ensure the SPI pinout the SD card is connected to is configured properly + // Select the correct SPI based on _MISO pin for the RP2040 + if (_MISO == 0 || _MISO == 4 || _MISO == 16) { + SPI.setRX(_MISO); + SPI.setTX(_MOSI); + SPI.setSCK(_SCK); + sdInitialized = SD.begin(_CS); + } else if (_MISO == 8 || _MISO == 12) { + SPI1.setRX(_MISO); + SPI1.setTX(_MOSI); + SPI1.setSCK(_SCK); + sdInitialized = SD.begin(_CS, SPI1); + } else { + Serial.println(F("ERROR: Unknown SPI Configuration")); + return; + } + } // see if the card is present and can be initialized: - if (!SD.begin(_CS)) { + if (!sdInitialized) { Serial.println("Card failed, or not present"); // don't do anything more: return; diff --git a/libraries/SD/examples/DumpFile/DumpFile.ino b/libraries/SD/examples/DumpFile/DumpFile.ino index b06d5cfc3..ff8c9d4e2 100644 --- a/libraries/SD/examples/DumpFile/DumpFile.ino +++ b/libraries/SD/examples/DumpFile/DumpFile.ino @@ -30,6 +30,11 @@ const int _MOSI = 7; const int _CS = 5; const int _SCK = 6; +// If you have all 4 DAT pins wired up to the Pico you can use SDIO mode +const int RP_CLK_GPIO = -1; // Set to CLK GPIO +const int RP_CMD_GPIO = -1; // Set to CMD GPIO +const int RP_DAT0_GPIO = -1; // Set to DAT0 GPIO. DAT1..3 must be consecutively connected. + #include #include @@ -39,13 +44,31 @@ void setup() { Serial.print("Initializing SD card..."); - // Ensure the SPI pinout the SD card is connected to is configured properly - SPI.setRX(_MISO); - SPI.setTX(_MOSI); - SPI.setSCK(_SCK); + bool sdInitialized = false; + if (RP_CLK_GPIO >= 0) { + // No special requirements on pin locations, this is PIO programmed + sdInitialized = SD.begin(RP_CLK_GPIO, RP_CMD_GPIO, RP_DAT0_GPIO); + } else { + // Ensure the SPI pinout the SD card is connected to is configured properly + // Select the correct SPI based on _MISO pin for the RP2040 + if (_MISO == 0 || _MISO == 4 || _MISO == 16) { + SPI.setRX(_MISO); + SPI.setTX(_MOSI); + SPI.setSCK(_SCK); + sdInitialized = SD.begin(_CS); + } else if (_MISO == 8 || _MISO == 12) { + SPI1.setRX(_MISO); + SPI1.setTX(_MOSI); + SPI1.setSCK(_SCK); + sdInitialized = SD.begin(_CS, SPI1); + } else { + Serial.println(F("ERROR: Unknown SPI Configuration")); + return; + } + } // see if the card is present and can be initialized: - if (!SD.begin(_CS)) { + if (!sdInitialized) { Serial.println("Card failed, or not present"); // don't do anything more: return; diff --git a/libraries/SD/examples/Files/Files.ino b/libraries/SD/examples/Files/Files.ino index a4970e6e9..1b176d3eb 100644 --- a/libraries/SD/examples/Files/Files.ino +++ b/libraries/SD/examples/Files/Files.ino @@ -28,6 +28,11 @@ const int _MOSI = 7; const int _CS = 5; const int _SCK = 6; +// If you have all 4 DAT pins wired up to the Pico you can use SDIO mode +const int RP_CLK_GPIO = -1; // Set to CLK GPIO +const int RP_CMD_GPIO = -1; // Set to CMD GPIO +const int RP_DAT0_GPIO = -1; // Set to DAT0 GPIO. DAT1..3 must be consecutively connected. + #include #include @@ -39,12 +44,30 @@ void setup() { Serial.print("Initializing SD card..."); - // Ensure the SPI pinout the SD card is connected to is configured properly - SPI.setRX(_MISO); - SPI.setTX(_MOSI); - SPI.setSCK(_SCK); + bool sdInitialized = false; + if (RP_CLK_GPIO >= 0) { + // No special requirements on pin locations, this is PIO programmed + sdInitialized = SD.begin(RP_CLK_GPIO, RP_CMD_GPIO, RP_DAT0_GPIO); + } else { + // Ensure the SPI pinout the SD card is connected to is configured properly + // Select the correct SPI based on _MISO pin for the RP2040 + if (_MISO == 0 || _MISO == 4 || _MISO == 16) { + SPI.setRX(_MISO); + SPI.setTX(_MOSI); + SPI.setSCK(_SCK); + sdInitialized = SD.begin(_CS); + } else if (_MISO == 8 || _MISO == 12) { + SPI1.setRX(_MISO); + SPI1.setTX(_MOSI); + SPI1.setSCK(_SCK); + sdInitialized = SD.begin(_CS, SPI1); + } else { + Serial.println(F("ERROR: Unknown SPI Configuration")); + return; + } + } - if (!SD.begin(_CS)) { + if (!sdInitialized) { Serial.println("initialization failed!"); return; } diff --git a/libraries/SD/examples/ReadWrite/ReadWrite.ino b/libraries/SD/examples/ReadWrite/ReadWrite.ino index 1de0377f8..23ea0aa31 100644 --- a/libraries/SD/examples/ReadWrite/ReadWrite.ino +++ b/libraries/SD/examples/ReadWrite/ReadWrite.ino @@ -28,6 +28,11 @@ const int _MOSI = 7; const int _CS = 5; const int _SCK = 6; +// If you have all 4 DAT pins wired up to the Pico you can use SDIO mode +const int RP_CLK_GPIO = -1; // Set to CLK GPIO +const int RP_CMD_GPIO = -1; // Set to CMD GPIO +const int RP_DAT0_GPIO = -1; // Set to DAT0 GPIO. DAT1..3 must be consecutively connected. + #include #include @@ -39,12 +44,30 @@ void setup() { Serial.print("Initializing SD card..."); - // Ensure the SPI pinout the SD card is connected to is configured properly - SPI.setRX(_MISO); - SPI.setTX(_MOSI); - SPI.setSCK(_SCK); + bool sdInitialized = false; + if (RP_CLK_GPIO >= 0) { + // No special requirements on pin locations, this is PIO programmed + sdInitialized = SD.begin(RP_CLK_GPIO, RP_CMD_GPIO, RP_DAT0_GPIO); + } else { + // Ensure the SPI pinout the SD card is connected to is configured properly + // Select the correct SPI based on _MISO pin for the RP2040 + if (_MISO == 0 || _MISO == 4 || _MISO == 16) { + SPI.setRX(_MISO); + SPI.setTX(_MOSI); + SPI.setSCK(_SCK); + sdInitialized = SD.begin(_CS); + } else if (_MISO == 8 || _MISO == 12) { + SPI1.setRX(_MISO); + SPI1.setTX(_MOSI); + SPI1.setSCK(_SCK); + sdInitialized = SD.begin(_CS, SPI1); + } else { + Serial.println(F("ERROR: Unknown SPI Configuration")); + return; + } + } - if (!SD.begin(_CS)) { + if (!sdInitialized) { Serial.println("initialization failed!"); return; } diff --git a/libraries/SD/examples/listfiles/listfiles.ino b/libraries/SD/examples/listfiles/listfiles.ino index 663c24a8b..3f068d565 100644 --- a/libraries/SD/examples/listfiles/listfiles.ino +++ b/libraries/SD/examples/listfiles/listfiles.ino @@ -42,6 +42,11 @@ const int _MOSI = 7; // AKA SPI TX const int _CS = 5; const int _SCK = 6; +// If you have all 4 DAT pins wired up to the Pico you can use SDIO mode +const int RP_CLK_GPIO = -1; // Set to CLK GPIO +const int RP_CMD_GPIO = -1; // Set to CMD GPIO +const int RP_DAT0_GPIO = -1; // Set to DAT0 GPIO. DAT1..3 must be consecutively connected. + #include #include @@ -58,21 +63,26 @@ void setup() { Serial.println("\nInitializing SD card..."); bool sdInitialized = false; - // Ensure the SPI pinout the SD card is connected to is configured properly - // Select the correct SPI based on _MISO pin for the RP2040 - if (_MISO == 0 || _MISO == 4 || _MISO == 16) { - SPI.setRX(_MISO); - SPI.setTX(_MOSI); - SPI.setSCK(_SCK); - sdInitialized = SD.begin(_CS); - } else if (_MISO == 8 || _MISO == 12) { - SPI1.setRX(_MISO); - SPI1.setTX(_MOSI); - SPI1.setSCK(_SCK); - sdInitialized = SD.begin(_CS, SPI1); + if (RP_CLK_GPIO >= 0) { + // No special requirements on pin locations, this is PIO programmed + sdInitialized = SD.begin(RP_CLK_GPIO, RP_CMD_GPIO, RP_DAT0_GPIO); } else { - Serial.println(F("ERROR: Unknown SPI Configuration")); - return; + // Ensure the SPI pinout the SD card is connected to is configured properly + // Select the correct SPI based on _MISO pin for the RP2040 + if (_MISO == 0 || _MISO == 4 || _MISO == 16) { + SPI.setRX(_MISO); + SPI.setTX(_MOSI); + SPI.setSCK(_SCK); + sdInitialized = SD.begin(_CS); + } else if (_MISO == 8 || _MISO == 12) { + SPI1.setRX(_MISO); + SPI1.setTX(_MOSI); + SPI1.setSCK(_SCK); + sdInitialized = SD.begin(_CS, SPI1); + } else { + Serial.println(F("ERROR: Unknown SPI Configuration")); + return; + } } if (!sdInitialized) { diff --git a/libraries/SD/src/SD.h b/libraries/SD/src/SD.h index 11d51e741..972fa453f 100644 --- a/libraries/SD/src/SD.h +++ b/libraries/SD/src/SD.h @@ -36,11 +36,17 @@ class SDClass { SDFS.setConfig(SDFSConfig(csPin, SPI_HALF_SPEED, spi)); return SDFS.begin(); } + bool begin(uint8_t csPin, uint32_t cfg = SPI_HALF_SPEED, HardwareSPI &spi = SPI) { SDFS.setConfig(SDFSConfig(csPin, cfg, spi)); return SDFS.begin(); } + bool begin(uint8_t clkPin, uint8_t cmdPin, uint8_t dat0Pin) { + SDFS.setConfig(SDFSConfig(clkPin, cmdPin, dat0Pin)); + return SDFS.begin(); + } + void end(bool endSPI = true) { SDFS.end(); if (endSPI && _spi) { diff --git a/libraries/SDFS/src/SDFS.cpp b/libraries/SDFS/src/SDFS.cpp index f40653ff7..ab9434e8a 100644 --- a/libraries/SDFS/src/SDFS.cpp +++ b/libraries/SDFS/src/SDFS.cpp @@ -63,13 +63,13 @@ FileImplPtr SDFSImpl::open(const char* path, OpenMode openMode, AccessMode acces } free(pathStr); } - File32 fd = _fs.open(path, flags); + FsFile fd = _fs.open(path, flags); if (!fd) { DEBUGV("SDFSImpl::openFile: fd=%p path=`%s` openMode=%d accessMode=%d", &fd, path, openMode, accessMode); return FileImplPtr(); } - auto sharedFd = std::make_shared(fd); + auto sharedFd = std::make_shared(fd); return std::make_shared(this, sharedFd, path); } @@ -88,7 +88,7 @@ DirImplPtr SDFSImpl::openDir(const char* path) { } // At this point we have a name of "/blah/blah/blah" or "blah" or "" // If that references a directory, just open it and we're done. - File32 dirFile; + FsFile dirFile; const char *filter = ""; if (!pathStr[0]) { // openDir("") === openDir("/") @@ -133,7 +133,7 @@ DirImplPtr SDFSImpl::openDir(const char* path) { DEBUGV("SDFSImpl::openDir: path=`%s`\n", path); return DirImplPtr(); } - auto sharedDir = std::make_shared(dirFile); + auto sharedDir = std::make_shared(dirFile); auto ret = std::make_shared(filter, this, sharedDir, pathStr); free(pathStr); return ret; diff --git a/libraries/SDFS/src/SDFS.h b/libraries/SDFS/src/SDFS.h index 7f9886b05..36e41b6a9 100644 --- a/libraries/SDFS/src/SDFS.h +++ b/libraries/SDFS/src/SDFS.h @@ -45,7 +45,8 @@ class SDFSConfig : public FSConfig { public: static constexpr uint32_t FSId = 0x53444653; - SDFSConfig(uint8_t csPin = 4, uint32_t spi = SD_SCK_MHZ(10), HardwareSPI &port = SPI) : FSConfig(FSId, false), _csPin(csPin), _part(0), _spiSettings(spi), _spi(&port) { } + SDFSConfig(uint8_t csPin = 4, uint32_t spi = SD_SCK_MHZ(10), HardwareSPI &port = SPI) : FSConfig(FSId, false), _sdio(false), _clkPin(255), _csPin(csPin), _cmdPin(255), _dat0Pin(255), _part(0), _spiSettings(spi), _spi(&port) { } + SDFSConfig(uint8_t clkPin, uint8_t cmdPin, uint8_t dataPin) : FSConfig(FSId, false), _sdio(true), _clkPin(clkPin), _cmdPin(cmdPin), _dat0Pin(dataPin), _part(0), _spiSettings(SD_SCK_MHZ(1)), _spi(nullptr) { } SDFSConfig setAutoFormat(bool val = true) { _autoFormat = val; @@ -69,7 +70,11 @@ class SDFSConfig : public FSConfig { } // Inherit _type and _autoFormat + bool _sdio; + uint8_t _clkPin; // SDIO only; uint8_t _csPin; + uint8_t _cmdPin; // SDIO only + uint8_t _dat0Pin; // SDIO only uint8_t _part; uint32_t _spiSettings; HardwareSPI *_spi; @@ -131,11 +136,20 @@ class SDFSImpl : public FSImpl { if (_mounted) { return true; } - SdSpiConfig ssc(_cfg._csPin, SHARED_SPI, _cfg._spiSettings, _cfg._spi); - _mounted = _fs.begin(ssc); - if (!_mounted && _cfg._autoFormat) { - format(); + if (!_cfg._sdio) { + SdSpiConfig ssc(_cfg._csPin, SHARED_SPI, _cfg._spiSettings, _cfg._spi); _mounted = _fs.begin(ssc); + if (!_mounted && _cfg._autoFormat) { + format(); + _mounted = _fs.begin(ssc); + } + } else { + SdioConfig ssc(_cfg._clkPin, _cfg._cmdPin, _cfg._dat0Pin); + _mounted = _fs.begin(ssc); + if (!_mounted && _cfg._autoFormat) { + format(); + _mounted = _fs.begin(ssc); + } } FsDateTime::setCallback(dateTimeCB); return _mounted; @@ -153,8 +167,7 @@ class SDFSImpl : public FSImpl { return false; } bzero(st, sizeof(*st)); - File32 f; - f = _fs.open(path, O_RDONLY); + FsFile f = _fs.open(path, O_RDONLY); if (!f) { return false; } @@ -169,8 +182,8 @@ class SDFSImpl : public FSImpl { if (f.getCreateDateTime(&date, &time)) { st->ctime = FatToTimeT(date, time); } - if (f.getAccessDate(&date)) { - st->atime = FatToTimeT(date, 0); + if (f.getAccessDateTime(&date, &time)) { + st->atime = FatToTimeT(date, time); } f.close(); return true; @@ -272,7 +285,7 @@ class SDFSImpl : public FSImpl { class SDFSFileImpl : public FileImpl { public: - SDFSFileImpl(SDFSImpl *fs, std::shared_ptr fd, const char *name) + SDFSFileImpl(SDFSImpl *fs, std::shared_ptr fd, const char *name) : _fs(fs), _fd(fd), _opened(true) { _name = std::shared_ptr(new char[strlen(name) + 1], std::default_delete()); strcpy(_name.get(), name); @@ -284,7 +297,7 @@ class SDFSFileImpl : public FileImpl { } int availableForWrite() override { - return _opened ? _fd->availableSpaceForWrite() : 0; + return _opened ? _fd->availableForWrite() : 0; } size_t write(const uint8_t *buf, size_t size) override { @@ -373,9 +386,9 @@ class SDFSFileImpl : public FileImpl { time_t getLastWrite() override { time_t ftime = 0; if (_opened && _fd) { - DirFat_t tmp; - if (_fd.get()->dirEntry(&tmp)) { - ftime = SDFSImpl::FatToTimeT(*(uint16_t*)tmp.modifyDate, *(uint16_t*)tmp.modifyTime); + uint16_t date, time; + if (_fd.get()->getModifyDateTime(&date, &time)) { + ftime = SDFSImpl::FatToTimeT(date, time); } } return ftime; @@ -384,9 +397,9 @@ class SDFSFileImpl : public FileImpl { time_t getCreationTime() override { time_t ftime = 0; if (_opened && _fd) { - DirFat_t tmp; - if (_fd.get()->dirEntry(&tmp)) { - ftime = SDFSImpl::FatToTimeT(*(uint16_t*)tmp.createDate, *(uint16_t*)tmp.createTime); + uint16_t date, time; + if (_fd.get()->getCreateDateTime(&date, &time)) { + ftime = SDFSImpl::FatToTimeT(date, time); } } return ftime; @@ -394,14 +407,14 @@ class SDFSFileImpl : public FileImpl { protected: SDFSImpl* _fs; - std::shared_ptr _fd; + std::shared_ptr _fd; std::shared_ptr _name; bool _opened; }; class SDFSDirImpl : public DirImpl { public: - SDFSDirImpl(const String& pattern, SDFSImpl* fs, std::shared_ptr dir, const char *dirPath = nullptr) + SDFSDirImpl(const String& pattern, SDFSImpl* fs, std::shared_ptr dir, const char *dirPath = nullptr) : _pattern(pattern), _fs(fs), _dir(dir), _valid(false), _dirPath(nullptr) { if (dirPath) { _dirPath = std::shared_ptr(new char[strlen(dirPath) + 1], std::default_delete()); @@ -466,19 +479,22 @@ class SDFSDirImpl : public DirImpl { bool next() override { const int n = _pattern.length(); do { - File32 file; + FsFile file; file.openNext(_dir.get(), O_READ); if (file) { _valid = 1; _size = file.fileSize(); _isFile = file.isFile(); _isDirectory = file.isDir(); - DirFat_t tmp; - if (file.dirEntry(&tmp)) { - _time = SDFSImpl::FatToTimeT(*(uint16_t*)tmp.modifyDate, *(uint16_t*)tmp.modifyTime); - _creation = SDFSImpl::FatToTimeT(*(uint16_t*)tmp.createDate, *(uint16_t*)tmp.createTime); + uint16_t date, time; + if (file.getModifyDateTime(&date, &time)) { + _time = SDFSImpl::FatToTimeT(date, time); } else { _time = 0; + } + if (file.getCreateDateTime(&date, &time)) { + _creation = SDFSImpl::FatToTimeT(date, time); + } else { _creation = 0; } file.getName(_lfn, sizeof(_lfn)); @@ -499,9 +515,9 @@ class SDFSDirImpl : public DirImpl { protected: String _pattern; SDFSImpl* _fs; - std::shared_ptr _dir; + std::shared_ptr _dir; bool _valid; - char _lfn[64]; + char _lfn[256]; time_t _time; time_t _creation; std::shared_ptr _dirPath; diff --git a/libraries/SPI/src/SPI.cpp b/libraries/SPI/src/SPI.cpp index 3eb9fc461..95935e72e 100644 --- a/libraries/SPI/src/SPI.cpp +++ b/libraries/SPI/src/SPI.cpp @@ -45,47 +45,6 @@ SPIClassRP2040::SPIClassRP2040(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pi _CS = cs; } -inline spi_cpol_t SPIClassRP2040::cpol() { - switch (_spis.getDataMode()) { - case SPI_MODE0: - return SPI_CPOL_0; - case SPI_MODE1: - return SPI_CPOL_0; - case SPI_MODE2: - return SPI_CPOL_1; - case SPI_MODE3: - return SPI_CPOL_1; - } - // Error - return SPI_CPOL_0; -} - -inline spi_cpha_t SPIClassRP2040::cpha() { - switch (_spis.getDataMode()) { - case SPI_MODE0: - return SPI_CPHA_0; - case SPI_MODE1: - return SPI_CPHA_1; - case SPI_MODE2: - return SPI_CPHA_0; - case SPI_MODE3: - return SPI_CPHA_1; - } - // Error - return SPI_CPHA_0; -} - -inline uint8_t SPIClassRP2040::reverseByte(uint8_t b) { - b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; - b = (b & 0xCC) >> 2 | (b & 0x33) << 2; - b = (b & 0xAA) >> 1 | (b & 0x55) << 1; - return b; -} - -inline uint16_t SPIClassRP2040::reverse16Bit(uint16_t w) { - return (reverseByte(w & 0xff) << 8) | (reverseByte(w >> 8)); -} - // The HW can't do LSB first, only MSB first, so need to bitreverse void SPIClassRP2040::adjustBuffer(const void *s, void *d, size_t cnt, bool by16) { if (_spis.getBitOrder() == MSBFIRST) { @@ -94,13 +53,13 @@ void SPIClassRP2040::adjustBuffer(const void *s, void *d, size_t cnt, bool by16) const uint8_t *src = (const uint8_t *)s; uint8_t *dst = (uint8_t *)d; for (size_t i = 0; i < cnt; i++) { - *(dst++) = reverseByte(*(src++)); + *(dst++) = _helper.reverseByte(*(src++)); } } else { /* by16 */ const uint16_t *src = (const uint16_t *)s; uint16_t *dst = (uint16_t *)d; for (size_t i = 0; i < cnt; i++) { - *(dst++) = reverse16Bit(*(src++)); + *(dst++) = _helper.reverse16Bit(*(src++)); } } } @@ -110,11 +69,11 @@ byte SPIClassRP2040::transfer(uint8_t data) { if (!_initted) { return 0; } - data = (_spis.getBitOrder() == MSBFIRST) ? data : reverseByte(data); - DEBUGSPI("SPI::transfer(%02x), cpol=%d, cpha=%d\n", data, cpol(), cpha()); + data = (_spis.getBitOrder() == MSBFIRST) ? data : _helper.reverseByte(data); + DEBUGSPI("SPI::transfer(%02x), cpol=%d, cpha=%d\n", data, _helper.cpol(_spis), _helper.cpha(_spis)); hw_write_masked(&spi_get_hw(_spi)->cr0, (8 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); // Fast set to 8-bits spi_write_read_blocking(_spi, &data, &ret, 1); - ret = (_spis.getBitOrder() == MSBFIRST) ? ret : reverseByte(ret); + ret = (_spis.getBitOrder() == MSBFIRST) ? ret : _helper.reverseByte(ret); DEBUGSPI("SPI: read back %02x\n", ret); return ret; } @@ -124,11 +83,11 @@ uint16_t SPIClassRP2040::transfer16(uint16_t data) { if (!_initted) { return 0; } - data = (_spis.getBitOrder() == MSBFIRST) ? data : reverse16Bit(data); - DEBUGSPI("SPI::transfer16(%04x), cpol=%d, cpha=%d\n", data, cpol(), cpha()); + data = (_spis.getBitOrder() == MSBFIRST) ? data : _helper.reverse16Bit(data); + DEBUGSPI("SPI::transfer16(%04x), cpol=%d, cpha=%d\n", data, _helper.cpol(_spis), _helper.cpha(_spis)); hw_write_masked(&spi_get_hw(_spi)->cr0, (16 - 1) << SPI_SSPCR0_DSS_LSB, SPI_SSPCR0_DSS_BITS); // Fast set to 16-bits spi_write16_read16_blocking(_spi, &data, &ret, 1); - ret = (_spis.getBitOrder() == MSBFIRST) ? ret : reverse16Bit(ret); + ret = (_spis.getBitOrder() == MSBFIRST) ? ret : _helper.reverse16Bit(ret); DEBUGSPI("SPI: read back %02x\n", ret); return ret; } @@ -172,21 +131,14 @@ void SPIClassRP2040::transfer(const void *txbuf, void *rxbuf, size_t count) { // If its LSB this isn't nearly as fun, we'll just let transfer(x) do it :( for (size_t i = 0; i < count; i++) { *rxbuff = transfer(*txbuff); - *rxbuff = (_spis.getBitOrder() == MSBFIRST) ? *rxbuff : reverseByte(*rxbuff); + *rxbuff = (_spis.getBitOrder() == MSBFIRST) ? *rxbuff : _helper.reverseByte(*rxbuff); txbuff++; rxbuff++; } DEBUGSPI("SPI::transfer completed\n"); } -#ifdef PICO_RP2350B -#define GPIOIRQREGS 6 -#else -#define GPIOIRQREGS 4 -#endif - void SPIClassRP2040::beginTransaction(SPISettings settings) { - noInterrupts(); // Avoid possible race conditions if IRQ comes in while main app is in middle of this DEBUGSPI("SPI::beginTransaction(clk=%lu, bo=%s)\n", settings.getClockFreq(), (settings.getBitOrder() == MSBFIRST) ? "MSB" : "LSB"); if (_initted && settings == _spis) { DEBUGSPI("SPI: Reusing existing initted SPI\n"); @@ -202,39 +154,15 @@ void SPIClassRP2040::beginTransaction(SPISettings settings) { DEBUGSPI("SPI: actual baudrate=%u\n", spi_get_baudrate(_spi)); } _spis = settings; - spi_set_format(_spi, 8, cpol(), cpha(), SPI_MSB_FIRST); + spi_set_format(_spi, 8, _helper.cpol(_spis), _helper.cpha(_spis), SPI_MSB_FIRST); _initted = true; } - // Disable any IRQs that are being used for SPI - io_bank0_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? &iobank0_hw->proc1_irq_ctrl : &iobank0_hw->proc0_irq_ctrl; - DEBUGSPI("SPI: IRQ masks before = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0); - for (auto entry : _usingIRQs) { - int gpio = entry.first; - - // There is no gpio_get_irq, so manually twiddle the register - io_rw_32 *en_reg = &irq_ctrl_base->inte[gpio / 8]; - uint32_t val = ((*en_reg) >> (4 * (gpio % 8))) & 0xf; - _usingIRQs.insert_or_assign(gpio, val); - DEBUGSPI("SPI: GPIO %d = %lu\n", gpio, val); - (*en_reg) ^= val << (4 * (gpio % 8)); - } - DEBUGSPI("SPI: IRQ masks after = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0); - interrupts(); + _helper.maskInterrupts(); } void SPIClassRP2040::endTransaction(void) { - noInterrupts(); // Avoid race condition so the GPIO IRQs won't come back until all state is restored DEBUGSPI("SPI::endTransaction()\n"); - // Re-enable IRQs - for (auto entry : _usingIRQs) { - int gpio = entry.first; - int mode = entry.second; - gpio_set_irq_enabled(gpio, mode, true); - } - io_bank0_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? &iobank0_hw->proc1_irq_ctrl : &iobank0_hw->proc0_irq_ctrl; - (void) irq_ctrl_base; - DEBUGSPI("SPI: IRQ masks = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0); - interrupts(); + _helper.unmaskInterrupts(); } bool SPIClassRP2040::transferAsync(const void *send, void *recv, size_t bytes) { @@ -265,7 +193,7 @@ bool SPIClassRP2040::transferAsync(const void *send, void *recv, size_t bytes) { return false; } for (size_t i = 0; i < bytes; i++) { - _dmaBuffer[i] = reverseByte(txbuff[i]); + _dmaBuffer[i] = _helper.reverseByte(txbuff[i]); } } _dmaBytes = bytes; @@ -312,7 +240,7 @@ bool SPIClassRP2040::finishedAsync() { spi_get_hw(_spi)->dmacr = 0; if (_spis.getBitOrder() != MSBFIRST) { for (int i = 0; i < _dmaBytes; i++) { - _rxFinalBuffer[i] = reverseByte(_rxFinalBuffer[i]); + _rxFinalBuffer[i] = _helper.reverseByte(_rxFinalBuffer[i]); } free(_dmaBuffer); _dmaBuffer = nullptr; @@ -335,8 +263,8 @@ void SPIClassRP2040::abortAsync() { bool SPIClassRP2040::setRX(pin_size_t pin) { -#ifdef PICO_RP2350B - constexpr uint64_t valid[2] = { __bitset({0, 4, 16, 20, 32, 26}) /* SPI0 */, +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B + constexpr uint64_t valid[2] = { __bitset({0, 4, 16, 20, 32, 36}) /* SPI0 */, __bitset({8, 12, 24, 28, 40, 44}) /* SPI1 */ }; #else @@ -362,7 +290,7 @@ bool SPIClassRP2040::setRX(pin_size_t pin) { } bool SPIClassRP2040::setCS(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({1, 5, 17, 21, 33, 37}) /* SPI0 */, __bitset({9, 13, 25, 29, 41, 45}) /* SPI1 */ }; @@ -389,7 +317,7 @@ bool SPIClassRP2040::setCS(pin_size_t pin) { } bool SPIClassRP2040::setSCK(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({2, 6, 18, 22, 34, 38}) /* SPI0 */, __bitset({10, 14, 26, 30, 42, 46}) /* SPI1 */ }; @@ -416,7 +344,7 @@ bool SPIClassRP2040::setSCK(pin_size_t pin) { } bool SPIClassRP2040::setTX(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({3, 7, 19, 23, 35, 39}) /* SPI0 */, __bitset({11, 15, 27, 31, 43, 47}) /* SPI1 */ }; diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index d67741b1e..27c299bd0 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -23,72 +23,223 @@ #include #include #include -#include +#include "SPIHelper.h" +/** + @brief Implements a hardware-based SPI interface using the Pico's SPI blocks +*/ class SPIClassRP2040 : public arduino::HardwareSPI { public: + /** + @brief Create a PIO-based SPI instance, pins can be changed before begin() call + + @param [in] spi SPI hardware instance (spi0/spi1) + @param [in] rx MISO GPIO + @param [in] cs CS GPIO + @param [in] sck SCK GPIO + @param [in] tx MOSI GPIO + */ SPIClassRP2040(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pin_size_t sck, pin_size_t tx); - // Send or receive 8- or 16-bit data. Returns read back value + /** + @brief Send an 8-bit byte of data and return read-back 8-bit value + + @param [in] data Data to send + @returns Read back byte from SPI interface + */ byte transfer(uint8_t data) override; + + /** + @brief Send a 16-bit quantity over SPI and return read-back 16-bit value under a single CS assertion + + @param [in] data Data to send + @returns Read back 16-bit quantity + */ uint16_t transfer16(uint16_t data) override; - // Sends buffer in 8 bit chunks. Overwrites buffer with read data + + /** + @brief Sends buffer in 8 bit chunks under a single CS. Overwrites buffer with read data + + @param [in, out] buf Buffer to read and write back into + @param [in] count Number of bytes to transmit/read + */ void transfer(void *buf, size_t count) override; - // Sends one buffer and receives into another, much faster! can set rx or txbuf to nullptr + /** + @brief Sends one buffer and receives into another under a single CS. Can set rx or txbuf to nullptr + + @param [in] txbuf Buffer to transmit or nullptr to send 0s + @param [out] rxbuf Buffer to read back into or nullptr to ignore returned data + @param [in] count Numbner of bytes to transmit/receive + */ void transfer(const void *txbuf, void *rxbuf, size_t count) override; // DMA/asynchronous transfers. Do not combime with synchronous runs or bad stuff will happen // All buffers must be valid for entire DMA and not touched until `finished()` returns true. + /** + @brief Perform a transfer() using DMA in the background. Returns immediately, need to check for completion + + @details + Do not combine asynchronous and synchronous transfers. All buffers must be valid until + the transfer reports that it is completed (``finished`` returns true). + + @param [in] send Buffer to transmit, must remain valid through entire operation + @param [out] recv Buffer to receive, must remain valid through entire operation + @param [in] bytes Number of bytes to transfer under single CS + */ bool transferAsync(const void *send, void *recv, size_t bytes); - bool finishedAsync(); // Call to check if the async operations is completed and the buffer can be reused/read - void abortAsync(); // Cancel an outstanding async operation + /** + @brief Call to check if the async operations is completed and the buffer can be reused/read + @returns True if the asynchronous SPI operation has completed and ``recv`` buffer is valid + */ + bool finishedAsync(); - // Call before/after every complete transaction + /** + @brief Aborts an ongoing asynchronous SPI operation, if one is still operating + + @details + Not normally needed, but in the case where a large, long SPI operation needs to be aborted + this call allows an application to safely stop the SPI and dispose of the ``recv`` and + ``send`` buffers + */ + void abortAsync(); + + + /** + @brief Begin an SPI transaction, sets SPI speed and masks necessary interrupts + + @param [in] SPISettings SPI configuration parameters, including the clock speed + */ void beginTransaction(SPISettings settings) override; + + /** + @brief Ends an SPI transaction, unmasks and masked GPIO interrupts + */ void endTransaction(void) override; - // Assign pins, call before begin() + /** + @brief Sets the MISO(RX) pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ bool setRX(pin_size_t pin); + + /** + @brief Sets the MISO(RX) pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ inline bool setMISO(pin_size_t pin) { return setRX(pin); } + + /** + @brief Sets the CS pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ bool setCS(pin_size_t pin); + + /** + @brief Sets the SCK pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ bool setSCK(pin_size_t pin); + + /** + @brief Sets the MOSI(TX) pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ bool setTX(pin_size_t pin); + + /** + @brief Sets the MOSI(TX) pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ inline bool setMOSI(pin_size_t pin) { return setTX(pin); } - // Call once to init/deinit SPI class, select pins, etc. + /** + @brief Call once to init/deinit SPI class, select pins, etc. + */ virtual void begin() override { begin(false); } + + /** + @brief Call once to init/deinit SPI class, select pins, etc. + + @param [in] hwCS Pass in true to enable HW-controlled CS. Otherwise application needs to assert/deassert CS. + */ void begin(bool hwCS); + + /** + @brief Call to deinit and disable the SPI interface. + */ void end() override; - // Deprecated - do not use! + /** + @brief Deprecated, do not use + + @param [in] order Deprecated + */ void setBitOrder(BitOrder order) __attribute__((deprecated)); + + /** + @brief Deprecated, do not use + + @param [in] order Deprecated + */ void setDataMode(uint8_t uc_mode) __attribute__((deprecated)); + + /** + @brief Deprecated, do not use + + @param [in] order Deprecated + */ void setClockDivider(uint8_t uc_div) __attribute__((deprecated)); - // List of GPIO IRQs to disable during a transaction + /** + @brief Ensure specific GPIO interrupt is disabled during and SPI transaction to protect against re-entrancy. Multiple GPIOs supported by multiple calls. + + @param [in] interruptNumber GPIO pin to mask + */ virtual void usingInterrupt(int interruptNumber) override { - _usingIRQs.insert({interruptNumber, 0}); + _helper.usingInterrupt(interruptNumber); } + + /** + @brief Remove a GPIO from the masked-during-transaction list. + + @param [in] interruptNumber GPIO pin to unmask + */ virtual void notUsingInterrupt(int interruptNumber) override { - _usingIRQs.erase(interruptNumber); + _helper.notUsingInterrupt(interruptNumber); } - virtual void attachInterrupt() override { /* noop */ } - virtual void detachInterrupt() override { /* noop */ } + + /** + @brief Deprecated, do not use + */ + virtual void attachInterrupt() override __attribute__((deprecated)) { /* noop */ } + + /** + @brief Deprecated, do not use + */ + virtual void detachInterrupt() override __attribute__((deprecated)) { /* noop */ } private: - spi_cpol_t cpol(); - spi_cpha_t cpha(); - uint8_t reverseByte(uint8_t b); - uint16_t reverse16Bit(uint16_t w); void adjustBuffer(const void *s, void *d, size_t cnt, bool by16); spi_inst_t *_spi; @@ -98,8 +249,6 @@ class SPIClassRP2040 : public arduino::HardwareSPI { bool _running; // SPI port active bool _initted; // Transaction begun - std::map _usingIRQs; - // DMA int _channelDMA; int _channelSendDMA; @@ -107,6 +256,7 @@ class SPIClassRP2040 : public arduino::HardwareSPI { int _dmaBytes; uint8_t *_rxFinalBuffer; uint32_t _dummy; + SPIHelper _helper; }; extern SPIClassRP2040 SPI; diff --git a/libraries/SPI/src/SPIHelper.h b/libraries/SPI/src/SPIHelper.h new file mode 100644 index 000000000..fb34d5562 --- /dev/null +++ b/libraries/SPI/src/SPIHelper.h @@ -0,0 +1,180 @@ +/* + SPI internal helper utils library for the Raspberry Pi Pico RP2040 + + Copyright (c) 2025 Earle F. Philhower, III + + 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 +#include +#include +#include +#include +#include + +/** + @brief Helper routined shared by SPI and SoftwareSPI +*/ +class SPIHelper { +public: + SPIHelper() { /* noop */ } + ~SPIHelper() { /* noop */ } + + /** + @brief Returns the SDK CPOL setting for a given SPISettings configuration + + @param _spis SPISettings to parse + @returns SDK-defined CPOL value + */ + inline spi_cpol_t cpol(const SPISettings &_spis) { + switch (_spis.getDataMode()) { + case SPI_MODE0: + return SPI_CPOL_0; + case SPI_MODE1: + return SPI_CPOL_0; + case SPI_MODE2: + return SPI_CPOL_1; + case SPI_MODE3: + return SPI_CPOL_1; + } + // Error + return SPI_CPOL_0; + } + + /** + @brief Returns the SDK CPHA setting for a given SPISettings configuration + + @param _spis SPISettings to parse + @returns SDK-defined CPHA value + */ + inline spi_cpha_t cpha(const SPISettings &_spis) { + switch (_spis.getDataMode()) { + case SPI_MODE0: + return SPI_CPHA_0; + case SPI_MODE1: + return SPI_CPHA_1; + case SPI_MODE2: + return SPI_CPHA_0; + case SPI_MODE3: + return SPI_CPHA_1; + } + // Error + return SPI_CPHA_0; + } + + /** + @brief Reverses bits in a byte for MSB->LSB swapping + + @param b Input byte + @returns Bit-reversed byte + */ + inline uint8_t reverseByte(uint8_t b) { + b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; + b = (b & 0xCC) >> 2 | (b & 0x33) << 2; + b = (b & 0xAA) >> 1 | (b & 0x55) << 1; + return b; + } + + /** + @brief MSB->LSB bit reversal for 16b quantities + + @param w 16-b input value + @returns 16-bit reversed value + */ + inline uint16_t reverse16Bit(uint16_t w) { + return (reverseByte(w & 0xff) << 8) | (reverseByte(w >> 8)); + } + +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B + static constexpr int GPIOIRQREGS = 6; +#else + static constexpr int GPIOIRQREGS = 4; +#endif + + /** + @brief Disables any GPIO interrupts registered before an SPI transaction begins + */ + void maskInterrupts() { + if (_usingIRQs.empty()) { + return; + } + noInterrupts(); // Avoid possible race conditions if IRQ comes in while main app is in middle of this + // Disable any IRQs that are being used for SPI + io_bank0_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? &iobank0_hw->proc1_irq_ctrl : &iobank0_hw->proc0_irq_ctrl; + DEBUGSPI("SPI: IRQ masks before = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], + (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], + (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0); + for (auto entry : _usingIRQs) { + int gpio = entry.first; + + // There is no gpio_get_irq, so manually twiddle the register + io_rw_32 *en_reg = &irq_ctrl_base->inte[gpio / 8]; + uint32_t val = ((*en_reg) >> (4 * (gpio % 8))) & 0xf; + _usingIRQs.insert_or_assign(gpio, val); + DEBUGSPI("SPI: GPIO %d = %lu\n", gpio, val); + (*en_reg) ^= val << (4 * (gpio % 8)); + } + DEBUGSPI("SPI: IRQ masks after = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], + (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], + (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0); + interrupts(); + } + + /** + @brief Restores GPIO interrupts masks after an SPI transaction completes + */ + void unmaskInterrupts() { + if (_usingIRQs.empty()) { + return; + } + noInterrupts(); // Avoid race condition so the GPIO IRQs won't come back until all state is restored + DEBUGSPI("SPI::endTransaction()\n"); + // Re-enable IRQs + for (auto entry : _usingIRQs) { + int gpio = entry.first; + int mode = entry.second; + gpio_set_irq_enabled(gpio, mode, true); + } + io_bank0_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? &iobank0_hw->proc1_irq_ctrl : &iobank0_hw->proc0_irq_ctrl; + (void) irq_ctrl_base; + DEBUGSPI("SPI: IRQ masks = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], + (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, + (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0); + interrupts(); + } + + + /** + @brief Adds an interrupt to be masked during SPI transactions + + @param interruptNumber GPIO number to mask off + */ + void usingInterrupt(int interruptNumber) { + _usingIRQs.insert({interruptNumber, 0}); + } + + /** + @brief Removes an interrupt from the to-be-masked list for SPI transactions + + @param interruptNumber GPIO number to remove + */ + void notUsingInterrupt(int interruptNumber) { + _usingIRQs.erase(interruptNumber); + } + +private: + std::map _usingIRQs; +}; diff --git a/libraries/SPISlave/src/SPISlave.cpp b/libraries/SPISlave/src/SPISlave.cpp index 24a4cbe2e..9c429f5e3 100644 --- a/libraries/SPISlave/src/SPISlave.cpp +++ b/libraries/SPISlave/src/SPISlave.cpp @@ -79,7 +79,7 @@ inline spi_cpha_t SPISlaveClass::cpha(SPISettings _spis) { } bool SPISlaveClass::setRX(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({0, 4, 16, 20, 32, 26}) /* SPI0 */, __bitset({8, 12, 24, 28, 40, 44}) /* SPI1 */ }; @@ -106,7 +106,7 @@ bool SPISlaveClass::setRX(pin_size_t pin) { } bool SPISlaveClass::setCS(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({1, 5, 17, 21, 33, 37}) /* SPI0 */, __bitset({9, 13, 25, 29, 41, 45}) /* SPI1 */ }; @@ -133,7 +133,7 @@ bool SPISlaveClass::setCS(pin_size_t pin) { } bool SPISlaveClass::setSCK(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({2, 6, 18, 22, 34, 38}) /* SPI0 */, __bitset({10, 14, 26, 30, 42, 46}) /* SPI1 */ }; @@ -160,7 +160,7 @@ bool SPISlaveClass::setSCK(pin_size_t pin) { } bool SPISlaveClass::setTX(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({3, 7, 19, 23, 35, 39}) /* SPI0 */, __bitset({11, 15, 27, 31, 43, 47}) /* SPI1 */ }; diff --git a/libraries/SdFat b/libraries/SdFat new file mode 160000 index 000000000..67e26476f --- /dev/null +++ b/libraries/SdFat @@ -0,0 +1 @@ +Subproject commit 67e26476f15a3bae5f390d91b6cc01830920c55d diff --git a/libraries/SoftwareSPI/examples/FilesSoftwareSPI/FilesSoftwareSPI.ino b/libraries/SoftwareSPI/examples/FilesSoftwareSPI/FilesSoftwareSPI.ino new file mode 100644 index 000000000..de782d231 --- /dev/null +++ b/libraries/SoftwareSPI/examples/FilesSoftwareSPI/FilesSoftwareSPI.ino @@ -0,0 +1,89 @@ +/* + SD card basic file example with Software SPI + + This example shows how to create and destroy an SD card file + The circuit: + SD card attached to Pico as follows: + ** SCK - GPIO0 + ** CS - GPIO1 + ** MISO (AKA RX) - GPIO2 + ** MOSI (AKA TX) - GPIO3 + + created Nov 2010 + by David A. Mellis + modified 9 Apr 2012 + by Tom Igoe + + This example code is in the public domain. +*/ + +#include + +const int _SCK = 0; +const int _CS = 1; // Must be SCK+1 for HW CS support +const int _MISO = 2; +const int _MOSI = 3; +SoftwareSPI softSPI(_SCK, _MISO, _MOSI, _CS); + +#include + +File myFile; + +void setup() { + // Open serial communications and wait for port to open: + Serial.begin(115200); + + do { + delay(100); // wait for serial port to connect. Needed for native USB port only + } while (!Serial); + + if (_CS != _SCK + 1) { + Serial.printf("Error, CS (%d) must be defined as SCK (%d) + 1 \n", _CS, _SCK); + return; + } + + Serial.print("Initializing SD card..."); + + bool sdInitialized = false; + sdInitialized = SD.begin(_CS, softSPI); + if (!sdInitialized) { + Serial.println("initialization failed!"); + return; + } + Serial.println("initialization done."); + + if (SD.exists("example.txt")) { + Serial.println("example.txt exists."); + } else { + Serial.println("example.txt doesn't exist."); + } + + // open a new file and immediately close it: + Serial.println("Creating example.txt..."); + myFile = SD.open("example.txt", FILE_WRITE); + myFile.close(); + + // Check to see if the file exists: + if (SD.exists("example.txt")) { + Serial.println("example.txt exists."); + } else { + Serial.println("example.txt doesn't exist."); + } + + // delete the file: + Serial.println("Removing example.txt..."); + SD.remove("example.txt"); + + if (SD.exists("example.txt")) { + Serial.println("example.txt exists."); + } else { + Serial.println("example.txt doesn't exist."); + } +} + +void loop() { + // nothing happens after setup finishes. +} + + + diff --git a/libraries/SoftwareSPI/examples/W5500SoftwareSPI/W5500SoftwareSPI.ino b/libraries/SoftwareSPI/examples/W5500SoftwareSPI/W5500SoftwareSPI.ino new file mode 100644 index 000000000..ce44d27a1 --- /dev/null +++ b/libraries/SoftwareSPI/examples/W5500SoftwareSPI/W5500SoftwareSPI.ino @@ -0,0 +1,102 @@ +/* + This sketch establishes a TCP connection to a "quote of the day" service. + It sends a "hello" message, and then prints received data. +*/ + +#include + +const char* host = "djxmmx.net"; +const uint16_t port = 17; + +#include +const int _SCK = 0; // Any pin allowed +const int _CS = 1; // Must be SCK+1 for HW CS support +const int _MISO = 28; // Note that MOSI and MISO don't need to be contiguous. Any pins allowed +const int _MOSI = 3; // Any pin not used elsewhere +const int _INT = 4; // W5500 IRQ line + +SoftwareSPI softSPI(_SCK, _MISO, _MOSI, _CS); + +Wiznet5500lwIP eth(_CS, softSPI, _INT); + +void setup() { + Serial.begin(115200); + delay(5000); + if (_CS != _SCK + 1) { + Serial.printf("Error, CS (%d) must be defined as SCK (%d) + 1 \n", _CS, _SCK); + return; + } + Serial.println(); + Serial.println(); + Serial.println("Starting Ethernet port"); + + // Start the Ethernet port + if (!eth.begin()) { + Serial.println("No wired Ethernet hardware detected. Check pinouts, wiring."); + while (1) { + delay(1000); + } + } + + while (!eth.connected()) { + Serial.print("."); + delay(500); + } + + Serial.println(""); + Serial.println("Ethernet connected"); + Serial.println("IP address: "); + Serial.println(eth.localIP()); +} + +void loop() { + static bool wait = false; + + Serial.print("connecting to "); + Serial.print(host); + Serial.print(':'); + Serial.println(port); + + // Use WiFiClient class to create TCP connections + WiFiClient client; + if (!client.connect(host, port)) { + Serial.println("connection failed"); + delay(5000); + return; + } + + // This will send a string to the server + Serial.println("sending data to server"); + if (client.connected()) { + client.println("hello from RP2040"); + } + + // wait for data to be available + unsigned long timeout = millis(); + while (client.available() == 0) { + if (millis() - timeout > 5000) { + Serial.println(">>> Client Timeout !"); + client.stop(); + delay(60000); + return; + } + } + + // Read all the lines of the reply from server and print them to Serial + Serial.println("receiving from remote server"); + // not testing 'client.connected()' since we do not need to send data here + while (client.available()) { + char ch = static_cast(client.read()); + Serial.print(ch); + } + + // Close the connection + Serial.println(); + Serial.println("closing connection"); + client.stop(); + + if (wait) { + delay(300000); // execute once every 5 minutes, don't flood remote service + } + wait = true; +} diff --git a/libraries/SoftwareSPI/keywords.txt b/libraries/SoftwareSPI/keywords.txt new file mode 100644 index 000000000..9820e3da8 --- /dev/null +++ b/libraries/SoftwareSPI/keywords.txt @@ -0,0 +1,43 @@ +####################################### +# Syntax Coloring Map SPI +####################################### + +####################################### +# Instances (KEYWORD2) +####################################### + +SoftwareSPI KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +begin KEYWORD2 +end KEYWORD2 +beginTransaction KEYWORD2 +endTransaction KEYWORD2 +SPISettings KEYWORD2 +transfer KEYWORD2 +transfer16 KEYWORD2 +setBitOrder KEYWORD2 +setDataMode KEYWORD2 +setClockDivider KEYWORD2 +setSCK KEYWORD2 +setMOSI KEYWORD2 +setMISO KEYWORD2 +setCS KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### +SPI_CLOCK_DIV4 LITERAL1 +SPI_CLOCK_DIV16 LITERAL1 +SPI_CLOCK_DIV64 LITERAL1 +SPI_CLOCK_DIV128 LITERAL1 +SPI_CLOCK_DIV2 LITERAL1 +SPI_CLOCK_DIV8 LITERAL1 +SPI_CLOCK_DIV32 LITERAL1 +SPI_CLOCK_DIV64 LITERAL1 +SPI_MODE0 LITERAL1 +SPI_MODE1 LITERAL1 +SPI_MODE2 LITERAL1 +SPI_MODE3 LITERAL1 diff --git a/libraries/SoftwareSPI/library.properties b/libraries/SoftwareSPI/library.properties new file mode 100644 index 000000000..3a071e51b --- /dev/null +++ b/libraries/SoftwareSPI/library.properties @@ -0,0 +1,10 @@ +name=SoftwareSPI +version=1.0 +author=Earle F. Philhower, III +maintainer=Earle F. Philhower, III +sentence=Uses the PIO to provide an SPI interface on any pin. +paragraph= +category=Signal Input/Output +url=http://arduino.cc/en/Reference/SPI +architectures=rp2040 +dot_a_linkage=true diff --git a/libraries/SoftwareSPI/src/SoftwareSPI.cpp b/libraries/SoftwareSPI/src/SoftwareSPI.cpp new file mode 100644 index 000000000..270778f4b --- /dev/null +++ b/libraries/SoftwareSPI/src/SoftwareSPI.cpp @@ -0,0 +1,270 @@ +/* + PIO-based SPI Master library for the Raspberry Pi Pico RP2040 + + Copyright (c) 2025 Earle F. Philhower, III + + 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 "SoftwareSPI.h" +#include +#include +#include +#include "spi.pio.h" + +#ifdef USE_TINYUSB +// For Serial when selecting TinyUSB. Can't include in the core because Arduino IDE +// will not link in libraries called from the core. Instead, add the header to all +// the standard libraries in the hope it will still catch some user cases where they +// use these libraries. +// See https://github.com/earlephilhower/arduino-pico/issues/167#issuecomment-848622174 +#include +#endif + +SoftwareSPI::SoftwareSPI(pin_size_t sck, pin_size_t miso, pin_size_t mosi, pin_size_t cs) { + _running = false; + _initted = false; + _spis = SPISettings(1, LSBFIRST, SPI_MODE0); // Ensure spi_init called by setting current freq to 0 + _sck = sck; + _miso = miso; + _mosi = mosi; + _cs = cs; +} + +void SoftwareSPI::_adjustPIO(int bits) { + if (_bits == bits) { + return; // Nothing to do! + } + // Manually set the shiftctl and possibly Y for 8 bits + pio_sm_set_enabled(_pio, _sm, false); + uint32_t v = _pio->sm[_sm].shiftctrl ; + v &= ~0x3e000000 | ~0x01f00000; + if (bits == 8) { + v |= 0x108 << 20; // Hardcode push/pull threshold 0'b0100001000, there is no simple accessor I can find + } else { + v |= 0x210 << 20; // 0b'1000010000 + } + _pio->sm[_sm].shiftctrl = v; + if (_hwCS) { + pio_sm_exec(_pio, _sm, pio_encode_set(pio_x, bits - 2)); + pio_sm_exec(_pio, _sm, pio_encode_set(pio_y, bits - 2)); + } + pio_sm_set_enabled(_pio, _sm, true); + _bits = bits; +} + +byte SoftwareSPI::transfer(uint8_t data) { + uint8_t ret; + if (!_initted) { + return 0; + } + data = (_spis.getBitOrder() == MSBFIRST) ? data : _helper.reverseByte(data); + DEBUGSPI("SoftwareSPI::transfer(%02x), cpol=%d, cpha=%d\n", data, _helper.cpol(_spis), _helper.cpha(_spis)); + _adjustPIO(8); + io_rw_8 *txfifo = (io_rw_8 *) &_pio->txf[_sm]; + io_rw_8 *rxfifo = (io_rw_8 *) &_pio->rxf[_sm]; + while (pio_sm_is_tx_fifo_full(_pio, _sm)) { /* noop wait */ } + *txfifo = data; + while (pio_sm_is_rx_fifo_empty(_pio, _sm)) { /* noop wait for in data */ } + ret = *rxfifo; + ret = (_spis.getBitOrder() == MSBFIRST) ? ret : _helper.reverseByte(ret); + DEBUGSPI("SoftwareSPI: read back %02x\n", ret); + return ret; +} + +uint16_t SoftwareSPI::transfer16(uint16_t data) { + uint16_t ret; + if (!_initted) { + return 0; + } + data = (_spis.getBitOrder() == MSBFIRST) ? data : _helper.reverse16Bit(data); + DEBUGSPI("SoftwareSPI::transfer16(%04x), cpol=%d, cpha=%d\n", data, _helper.cpol(_spis), _helper.cpha(_spis)); + _adjustPIO(16); + io_rw_16 *txfifo = (io_rw_16 *) &_pio->txf[_sm]; + io_rw_16 *rxfifo = (io_rw_16 *) &_pio->rxf[_sm]; + while (pio_sm_is_tx_fifo_full(_pio, _sm)) { /* noop wait */ } + *txfifo = data; + while (pio_sm_is_rx_fifo_empty(_pio, _sm)) { /* noop wait for in data */ } + ret = *rxfifo; + ret = (_spis.getBitOrder() == MSBFIRST) ? ret : _helper.reverse16Bit(ret); + DEBUGSPI("SoftwareSPI: read back %04x\n", ret); + return ret; +} + +void SoftwareSPI::transfer(void *buf, size_t count) { + transfer(buf, buf, count); +} + +void SoftwareSPI::transfer(const void *csrc, void *cdest, size_t count) { + if (!_initted) { + return; + } + DEBUGSPI("SoftwareSPI::transfer(%p, %p %d)\n", csrc, cdest, count); + const uint8_t *src = reinterpret_cast(csrc); + uint8_t *dest = reinterpret_cast(cdest); + _adjustPIO(8); + io_rw_8 *txfifo = (io_rw_8 *) &_pio->txf[_sm]; + io_rw_8 *rxfifo = (io_rw_8 *) &_pio->rxf[_sm]; + int txleft = count; + int rxleft = count; + + if (_spis.getBitOrder() == !MSBFIRST) { + // We're going to hack like heck here and reverse the txbuf into the receive buff (because txbuff is const + // Then by construction SPI will send before it received, we can use the rx buff to trans and recv + for (size_t i = 0; i < count; i++) { + dest[i] = _helper.reverseByte(src[i]); + } + src = dest; // We'll transmit the flipped data... + } + + while (txleft || rxleft) { + while (txleft && !pio_sm_is_tx_fifo_full(_pio, _sm)) { + *txfifo = *src++; + txleft--; + } + while (rxleft && !pio_sm_is_rx_fifo_empty(_pio, _sm)) { + *dest++ = *rxfifo; + rxleft--; + } + } + + if (_spis.getBitOrder() == !MSBFIRST) { + // Now we have data in recv but also need to flip it before returning to the app + for (size_t i = 0; i < count; i++) { + dest[i] = _helper.reverseByte(dest[i]); + } + } + DEBUGSPI("SoftwareSPI::transfer completed\n"); +} + +void SoftwareSPI::beginTransaction(SPISettings settings) { + DEBUGSPI("SoftwareSPI::beginTransaction(clk=%lu, bo=%s)\n", settings.getClockFreq(), (settings.getBitOrder() == MSBFIRST) ? "MSB" : "LSB"); + if (_initted && settings == _spis) { + DEBUGSPI("SoftwareSPI: Reusing existing initted SPI\n"); + } else { + /* Only de-init if the clock changes frequency */ + if (settings.getClockFreq() != _spis.getClockFreq()) { + DEBUGSPI("SoftwareSPI: initting SPI\n"); + float divider = (float)rp2040.f_cpu() / (float)settings.getClockFreq(); + divider /= _hwCS ? 4.0f : 4.0f; + pio_sm_set_clkdiv(_pio, _sm, divider); + DEBUGSPI("SoftwareSPI: divider=%f\n", divider); + } + _spis = settings; + // Note we can only change frequency, not CPOL/CPHA (which would be physically not too useful anyway) + _initted = true; + } + _helper.maskInterrupts(); +} + +void SoftwareSPI::endTransaction(void) { + DEBUGSPI("SoftwareSPI::endTransaction()\n"); + _helper.unmaskInterrupts(); +} + +bool SoftwareSPI::setCS(pin_size_t pin) { + if (pin < 1) { + // CS is SCK+1, so has to be at least GPIO1 + return false; + } + if (!_running || (_cs == pin)) { + _cs = pin; + _sck = _cs - 1; + return true; + } + return false; +} + +bool SoftwareSPI::setSCK(pin_size_t pin) { + if (!_running || (_sck == pin)) { + _sck = pin; + _cs = pin + 1; + return true; + } + return false; +} + +bool SoftwareSPI::setMISO(pin_size_t pin) { + if (!_running || (_miso == pin)) { + _miso = pin; + return true; + } + return false; +} + +bool SoftwareSPI::setMOSI(pin_size_t pin) { + if (!_running || (_mosi == pin)) { + _mosi = pin; + return true; + } + return false; +} + +void SoftwareSPI::begin(bool hwCS) { + DEBUGSPI("SoftwareSPI::begin(%d), rx=%d, cs=%d, sck=%d, tx=%d\n", hwCS, _miso, _cs, _sck, _mosi); + float divider = (float)rp2040.f_cpu() / (float)_spis.getClockFreq(); + DEBUGSPI("SoftwareSPI: divider=%f\n", divider); + if (!hwCS) { + _spi = new PIOProgram(_helper.cpha(_spis) == SPI_CPHA_0 ? &spi_cpha0_program : &spi_cpha1_program); + if (!_spi->prepare(&_pio, &_sm, &_off, _sck, 1)) { + _running = false; + delete _spi; + _spi = nullptr; + return; + } + pio_spi_init(_pio, _sm, _off, 8, divider / 4.0f, _helper.cpha(_spis), _helper.cpol(_spis), _sck, _mosi, _miso); + } else { + _spi = new PIOProgram(_helper.cpha(_spis) == SPI_CPHA_0 ? &spi_cpha0_cs_program : &spi_cpha1_cs_program); + if (!_spi->prepare(&_pio, &_sm, &_off, _sck, 2)) { + _running = false; + delete _spi; + _spi = nullptr; + return; + } + pio_spi_cs_init(_pio, _sm, _off, 8, divider / 4.0f, _helper.cpha(_spis), _helper.cpol(_spis), _sck, _mosi, _miso); + } + _hwCS = hwCS; + _bits = 8; + // Give a default config in case user doesn't use beginTransaction + beginTransaction(_spis); + endTransaction(); +} + +void SoftwareSPI::end() { + DEBUGSPI("SoftwareSPI::end()\n"); + if (_initted) { + DEBUGSPI("SoftwareSPI: deinitting currently active SPI\n"); + _initted = false; + pio_sm_set_enabled(_pio, _sm, false); + // TODO - We don't have a good PIOProgram reclamation method so this will possibly leak an SM + } + _spis = SPISettings(0, LSBFIRST, SPI_MODE0); +} + +void SoftwareSPI::setBitOrder(BitOrder order) { + _spis = SPISettings(_spis.getClockFreq(), order, _spis.getDataMode()); + beginTransaction(_spis); + endTransaction(); +} + +void SoftwareSPI::setDataMode(uint8_t uc_mode) { + _spis = SPISettings(_spis.getClockFreq(), _spis.getBitOrder(), uc_mode); + beginTransaction(_spis); + endTransaction(); +} + +void SoftwareSPI::setClockDivider(uint8_t uc_div) { + (void) uc_div; // no-op +} diff --git a/libraries/SoftwareSPI/src/SoftwareSPI.h b/libraries/SoftwareSPI/src/SoftwareSPI.h new file mode 100644 index 000000000..7cf20e67d --- /dev/null +++ b/libraries/SoftwareSPI/src/SoftwareSPI.h @@ -0,0 +1,223 @@ +/* + PIO-based SPI Master library for the Raspberry Pi Pico RP2040 + + Copyright (c) 2025 Earle F. Philhower, III + + 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 + +#include +#include // For SPIHelper +#include +#include + +/** + @brief Implements a PIO-based SPI interface without pin restrictions +*/ +class SoftwareSPI : public arduino::HardwareSPI { +public: + /** + @brief Create a PIO-based SPI instance + + @param [in] sck SCK GPIO + @param [in] miso MISO GPIO + @param [in] mosi MOSI GPIO + @param [in] cs Optional CS pin for HW CS, must be SCK+1 + */ + SoftwareSPI(pin_size_t sck, pin_size_t miso, pin_size_t mosi, pin_size_t cs = -1); + + /** + @brief Send an 8-bit byte of data and return read-back 8-bit value + + @param [in] data Data to send + @returns Read back byte from SPI interface + */ + byte transfer(uint8_t data) override; + + /** + @brief Send a 16-bit quantity over SPI and return read-back 16-bit value under a single CS assertion + + @param [in] data Data to send + @returns Read back 16-bit quantity + */ + uint16_t transfer16(uint16_t data) override; + + /** + @brief Sends buffer in 8 bit chunks under a single CS. Overwrites buffer with read data + + @param [in, out] buf Buffer to read and write back into + @param [in] count Number of bytes to transmit/read + */ + void transfer(void *buf, size_t count) override; + + /** + @brief Sends one buffer and receives into another under a single CS. Can set rx or txbuf to nullptr + + @param [in] txbuf Buffer to transmit or nullptr to send 0s + @param [out] rxbuf Buffer to read back into or nullptr to ignore returned data + @param [in] count Numbner of bytes to transmit/receive + */ + void transfer(const void *txbuf, void *rxbuf, size_t count) override; + + /** + @brief Begin an SPI transaction, sets SPI speed and masks necessary interrupts + + @param [in] SPISettings SPI configuration parameters, including the clock speed + */ + void beginTransaction(SPISettings settings) override; + + /** + @brief Ends an SPI transaction, unmasks and masked GPIO interrupts + */ + void endTransaction(void) override; + + /** + @brief Sets the MISO(RX) pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ + bool setMISO(pin_size_t pin); + + /** + @brief Sets the MISO(RX) pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ + inline bool setRX(pin_size_t pin) { + return setMISO(pin); + } + + /** + @brief Sets the CS pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ + bool setCS(pin_size_t pin); + + /** + @brief Sets the SCK pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ + bool setSCK(pin_size_t pin); + + /** + @brief Sets the MOSI(TX) pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ + bool setMOSI(pin_size_t pin); + + /** + @brief Sets the MOSI(TX) pin. Call before begin() + + @param [in] pin The GPIO number to assign to + @returns True on success + */ + inline bool setTX(pin_size_t pin) { + return setMOSI(pin); + } + + /** + @brief Call once to init/deinit SPI class, select pins, etc. + */ + virtual void begin() override { + begin(false); + } + + /** + @brief Call once to init/deinit SPI class, select pins, etc. + + @param [in] hwCS Pass in true to enable HW-controlled CS. Otherwise application needs to assert/deassert CS. + */ + void begin(bool hwCS); + + /** + @brief Call to deinit and disable the SPI interface. + */ + void end() override; + + /** + @brief Deprecated, do not use + + @param [in] order Deprecated + */ + void setBitOrder(BitOrder order) __attribute__((deprecated)); + + /** + @brief Deprecated, do not use + + @param [in] uc_mode Deprecated + */ + void setDataMode(uint8_t uc_mode) __attribute__((deprecated)); + + /** + @brief Deprecated, do not use + + @param [in] uc_div Deprecated + */ + void setClockDivider(uint8_t uc_div) __attribute__((deprecated)); + + /** + @brief Ensure specific GPIO interrupt is disabled during and SPI transaction to protect against re-entrancy. Multiple GPIOs supported by multiple calls. + + @param [in] interruptNumber GPIO pin to mask + */ + virtual void usingInterrupt(int interruptNumber) override { + _helper.usingInterrupt(interruptNumber); + } + + /** + @brief Remove a GPIO from the masked-during-transaction list. + + @param [in] interruptNumber GPIO pin to unmask + */ + virtual void notUsingInterrupt(int interruptNumber) override { + _helper.notUsingInterrupt(interruptNumber); + } + + /** + @brief Deprecated, do not use + */ + virtual void attachInterrupt() override __attribute__((deprecated)) { /* noop */ } + + /** + @brief Deprecated, do not use + */ + virtual void detachInterrupt() override __attribute__((deprecated)) { /* noop */ } + +private: + void _adjustPIO(int bits); + + PIOProgram *_spi; + PIO _pio; + int _sm; + int _off; + + SPISettings _spis; + pin_size_t _sck, _miso, _mosi, _cs; + bool _hwCS; + bool _running; // SPI port active + bool _initted; // Transaction begun + int _bits; + SPIHelper _helper; +}; diff --git a/libraries/SoftwareSPI/src/spi.pio b/libraries/SoftwareSPI/src/spi.pio new file mode 100644 index 000000000..4033a74ab --- /dev/null +++ b/libraries/SoftwareSPI/src/spi.pio @@ -0,0 +1,168 @@ +; +; Copyright (c) 2020 Raspberry Pi (Trading) Ltd. +; +; SPDX-License-Identifier: BSD-3-Clause +; + +; These programs implement full-duplex SPI, with a SCK period of 4 clock +; cycles. A different program is provided for each value of CPHA, and CPOL is +; achieved using the hardware GPIO inversion available in the IO controls. +; +; Transmit-only SPI can go twice as fast -- see the ST7789 example! +.pio_version 0 // only requires PIO version 0 + +.program spi_cpha0 +.side_set 1 + +; Pin assignments: +; - SCK is side-set pin 0 +; - MOSI is OUT pin 0 +; - MISO is IN pin 0 +; +; Autopush and autopull must be enabled, and the serial frame size is set by +; configuring the push/pull threshold. Shift left/right is fine, but you must +; justify the data yourself. This is done most conveniently for frame sizes of +; 8 or 16 bits by using the narrow store replication and narrow load byte +; picking behaviour of RP2040's IO fabric. + +; Clock phase = 0: data is captured on the leading edge of each SCK pulse, and +; transitions on the trailing edge, or some time before the first leading edge. + + out pins, 1 side 0 [1] ; Stall here on empty (sideset proceeds even if + in pins, 1 side 1 [1] ; instruction stalls, so we stall with SCK low) + +.program spi_cpha1 +.side_set 1 + +; Clock phase = 1: data transitions on the leading edge of each SCK pulse, and +; is captured on the trailing edge. + + out x, 1 side 0 ; Stall here on empty (keep SCK deasserted) + mov pins, x side 1 [1] ; Output data, assert SCK (mov pins uses OUT mapping) + in pins, 1 side 0 ; Input data, deassert SCK + +% c-sdk { +#include "hardware/gpio.h" +static inline void pio_spi_init(PIO pio, uint sm, uint prog_offs, uint n_bits, + float clkdiv, bool cpha, bool cpol, uint pin_sck, uint pin_mosi, uint pin_miso) { + pio_sm_config c = cpha ? spi_cpha1_program_get_default_config(prog_offs) : spi_cpha0_program_get_default_config(prog_offs); + sm_config_set_out_pins(&c, pin_mosi, 1); + sm_config_set_in_pins(&c, pin_miso); + sm_config_set_sideset_pins(&c, pin_sck); + // Only support MSB-first in this example code (shift to left, auto push/pull, threshold=nbits) + sm_config_set_out_shift(&c, false, true, n_bits); + sm_config_set_in_shift(&c, false, true, n_bits); + sm_config_set_clkdiv(&c, clkdiv); + + // MOSI, SCK output are low, MISO is input + pio_sm_set_pins_with_mask(pio, sm, 0, (1u << pin_sck) | (1u << pin_mosi)); + pio_sm_set_pindirs_with_mask(pio, sm, (1u << pin_sck) | (1u << pin_mosi), (1u << pin_sck) | (1u << pin_mosi) | (1u << pin_miso)); + pio_gpio_init(pio, pin_mosi); + pio_gpio_init(pio, pin_miso); + pio_gpio_init(pio, pin_sck); + + // The pin muxes can be configured to invert the output (among other things + // and this is a cheesy way to get CPOL=1 + gpio_set_outover(pin_sck, cpol ? GPIO_OVERRIDE_INVERT : GPIO_OVERRIDE_NORMAL); + // SPI is synchronous, so bypass input synchroniser to reduce input delay. + hw_set_bits(&pio->input_sync_bypass, 1u << pin_miso); + + pio_sm_init(pio, sm, prog_offs, &c); + pio_sm_set_enabled(pio, sm, true); +} +%} + +; SPI with Chip Select +; ----------------------------------------------------------------------------- +; +; For your amusement, here are some SPI programs with an automatic chip select +; (asserted once data appears in TX FIFO, deasserts when FIFO bottoms out, has +; a nice front/back porch). +; +; The number of bits per FIFO entry is configured via the Y register +; and the autopush/pull threshold. From 2 to 32 bits. +; +; Pin assignments: +; - SCK is side-set bit 0 +; - CSn is side-set bit 1 +; - MOSI is OUT bit 0 (host-to-device) +; - MISO is IN bit 0 (device-to-host) +; +; This program only supports one chip select -- use GPIO if more are needed +; +; Provide a variation for each possibility of CPHA; for CPOL we can just +; invert SCK in the IO muxing controls (downstream from PIO) + + +; CPHA=0: data is captured on the leading edge of each SCK pulse (including +; the first pulse), and transitions on the trailing edge + +.program spi_cpha0_cs +.side_set 2 + +.wrap_target +bitloop: + out pins, 1 side 0x0 [1] + in pins, 1 side 0x1 + jmp x-- bitloop side 0x1 + + out pins, 1 side 0x0 + mov x, y side 0x0 ; Reload bit counter from Y + in pins, 1 side 0x1 + jmp !osre bitloop side 0x1 ; Fall-through if TXF empties + + nop side 0x0 [1] ; CSn back porch +public entry_point: ; Must set X,Y to n-2 before starting! + pull ifempty side 0x2 [1] ; Block with CSn high (minimum 2 cycles) +.wrap ; Note ifempty to avoid time-of-check race + +; CPHA=1: data transitions on the leading edge of each SCK pulse, and is +; captured on the trailing edge + +.program spi_cpha1_cs +.side_set 2 + +.wrap_target +bitloop: + out pins, 1 side 0x1 [1] + in pins, 1 side 0x0 + jmp x-- bitloop side 0x0 + + out pins, 1 side 0x1 + mov x, y side 0x1 + in pins, 1 side 0x0 + jmp !osre bitloop side 0x0 + +public entry_point: ; Must set X,Y to n-2 before starting! + pull ifempty side 0x2 [1] ; Block with CSn high (minimum 2 cycles) + nop side 0x0 [1]; CSn front porch +.wrap + +% c-sdk { +#include "hardware/gpio.h" +static inline void pio_spi_cs_init(PIO pio, uint sm, uint prog_offs, uint n_bits, float clkdiv, bool cpha, bool cpol, + uint pin_sck, uint pin_mosi, uint pin_miso) { + pio_sm_config c = cpha ? spi_cpha1_cs_program_get_default_config(prog_offs) : spi_cpha0_cs_program_get_default_config(prog_offs); + sm_config_set_out_pins(&c, pin_mosi, 1); + sm_config_set_in_pins(&c, pin_miso); + sm_config_set_sideset_pins(&c, pin_sck); + sm_config_set_out_shift(&c, false, true, n_bits); + sm_config_set_in_shift(&c, false, true, n_bits); + sm_config_set_clkdiv(&c, clkdiv); + + pio_sm_set_pins_with_mask(pio, sm, (2u << pin_sck), (3u << pin_sck) | (1u << pin_mosi)); + pio_sm_set_pindirs_with_mask(pio, sm, (3u << pin_sck) | (1u << pin_mosi), (3u << pin_sck) | (1u << pin_mosi) | (1u << pin_miso)); + pio_gpio_init(pio, pin_mosi); + pio_gpio_init(pio, pin_miso); + pio_gpio_init(pio, pin_sck); + pio_gpio_init(pio, pin_sck + 1); + gpio_set_outover(pin_sck, cpol ? GPIO_OVERRIDE_INVERT : GPIO_OVERRIDE_NORMAL); + hw_set_bits(&pio->input_sync_bypass, 1u << pin_miso); + + uint entry_point = prog_offs + (cpha ? spi_cpha1_cs_offset_entry_point : spi_cpha0_cs_offset_entry_point); + pio_sm_init(pio, sm, entry_point, &c); + pio_sm_exec(pio, sm, pio_encode_set(pio_x, n_bits - 2)); + pio_sm_exec(pio, sm, pio_encode_set(pio_y, n_bits - 2)); + pio_sm_set_enabled(pio, sm, true); +} +%} diff --git a/libraries/SoftwareSPI/src/spi.pio.h b/libraries/SoftwareSPI/src/spi.pio.h new file mode 100644 index 000000000..557446a2a --- /dev/null +++ b/libraries/SoftwareSPI/src/spi.pio.h @@ -0,0 +1,218 @@ +// -------------------------------------------------- // +// This file is autogenerated by pioasm; do not edit! // +// -------------------------------------------------- // + +#pragma once + +#if !PICO_NO_HARDWARE +#include "hardware/pio.h" +#endif + +// --------- // +// spi_cpha0 // +// --------- // + +#define spi_cpha0_wrap_target 0 +#define spi_cpha0_wrap 1 +#define spi_cpha0_pio_version 0 + +static const uint16_t spi_cpha0_program_instructions[] = { + // .wrap_target + 0x6101, // 0: out pins, 1 side 0 [1] + 0x5101, // 1: in pins, 1 side 1 [1] + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program spi_cpha0_program = { + .instructions = spi_cpha0_program_instructions, + .length = 2, + .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif +}; + +static inline pio_sm_config spi_cpha0_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + spi_cpha0_wrap_target, offset + spi_cpha0_wrap); + sm_config_set_sideset(&c, 1, false, false); + return c; +} +#endif + +// --------- // +// spi_cpha1 // +// --------- // + +#define spi_cpha1_wrap_target 0 +#define spi_cpha1_wrap 2 +#define spi_cpha1_pio_version 0 + +static const uint16_t spi_cpha1_program_instructions[] = { + // .wrap_target + 0x6021, // 0: out x, 1 side 0 + 0xb101, // 1: mov pins, x side 1 [1] + 0x4001, // 2: in pins, 1 side 0 + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program spi_cpha1_program = { + .instructions = spi_cpha1_program_instructions, + .length = 3, + .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif +}; + +static inline pio_sm_config spi_cpha1_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + spi_cpha1_wrap_target, offset + spi_cpha1_wrap); + sm_config_set_sideset(&c, 1, false, false); + return c; +} + +#include "hardware/gpio.h" +static inline void pio_spi_init(PIO pio, uint sm, uint prog_offs, uint n_bits, + float clkdiv, bool cpha, bool cpol, uint pin_sck, uint pin_mosi, uint pin_miso) { + pio_sm_config c = cpha ? spi_cpha1_program_get_default_config(prog_offs) : spi_cpha0_program_get_default_config(prog_offs); + sm_config_set_out_pins(&c, pin_mosi, 1); + sm_config_set_in_pins(&c, pin_miso); + sm_config_set_sideset_pins(&c, pin_sck); + // Only support MSB-first in this example code (shift to left, auto push/pull, threshold=nbits) + sm_config_set_out_shift(&c, false, true, n_bits); + sm_config_set_in_shift(&c, false, true, n_bits); + sm_config_set_clkdiv(&c, clkdiv); + // MOSI, SCK output are low, MISO is input + pio_sm_set_pins_with_mask(pio, sm, 0, (1u << pin_sck) | (1u << pin_mosi)); + pio_sm_set_pindirs_with_mask(pio, sm, (1u << pin_sck) | (1u << pin_mosi), (1u << pin_sck) | (1u << pin_mosi) | (1u << pin_miso)); + pio_gpio_init(pio, pin_mosi); + pio_gpio_init(pio, pin_miso); + pio_gpio_init(pio, pin_sck); + // The pin muxes can be configured to invert the output (among other things + // and this is a cheesy way to get CPOL=1 + gpio_set_outover(pin_sck, cpol ? GPIO_OVERRIDE_INVERT : GPIO_OVERRIDE_NORMAL); + // SPI is synchronous, so bypass input synchroniser to reduce input delay. + hw_set_bits(&pio->input_sync_bypass, 1u << pin_miso); + pio_sm_init(pio, sm, prog_offs, &c); + pio_sm_set_enabled(pio, sm, true); +} + +#endif + +// ------------ // +// spi_cpha0_cs // +// ------------ // + +#define spi_cpha0_cs_wrap_target 0 +#define spi_cpha0_cs_wrap 8 +#define spi_cpha0_cs_pio_version 0 + +#define spi_cpha0_cs_offset_entry_point 8u + +static const uint16_t spi_cpha0_cs_program_instructions[] = { + // .wrap_target + 0x6101, // 0: out pins, 1 side 0 [1] + 0x4801, // 1: in pins, 1 side 1 + 0x0840, // 2: jmp x--, 0 side 1 + 0x6001, // 3: out pins, 1 side 0 + 0xa022, // 4: mov x, y side 0 + 0x4801, // 5: in pins, 1 side 1 + 0x08e0, // 6: jmp !osre, 0 side 1 + 0xa142, // 7: nop side 0 [1] + 0x91e0, // 8: pull ifempty block side 2 [1] + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program spi_cpha0_cs_program = { + .instructions = spi_cpha0_cs_program_instructions, + .length = 9, + .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif +}; + +static inline pio_sm_config spi_cpha0_cs_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + spi_cpha0_cs_wrap_target, offset + spi_cpha0_cs_wrap); + sm_config_set_sideset(&c, 2, false, false); + return c; +} +#endif + +// ------------ // +// spi_cpha1_cs // +// ------------ // + +#define spi_cpha1_cs_wrap_target 0 +#define spi_cpha1_cs_wrap 8 +#define spi_cpha1_cs_pio_version 0 + +#define spi_cpha1_cs_offset_entry_point 7u + +static const uint16_t spi_cpha1_cs_program_instructions[] = { + // .wrap_target + 0x6901, // 0: out pins, 1 side 1 [1] + 0x4001, // 1: in pins, 1 side 0 + 0x0040, // 2: jmp x--, 0 side 0 + 0x6801, // 3: out pins, 1 side 1 + 0xa822, // 4: mov x, y side 1 + 0x4001, // 5: in pins, 1 side 0 + 0x00e0, // 6: jmp !osre, 0 side 0 + 0x91e0, // 7: pull ifempty block side 2 [1] + 0xa142, // 8: nop side 0 [1] + // .wrap +}; + +#if !PICO_NO_HARDWARE +static const struct pio_program spi_cpha1_cs_program = { + .instructions = spi_cpha1_cs_program_instructions, + .length = 9, + .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif +}; + +static inline pio_sm_config spi_cpha1_cs_program_get_default_config(uint offset) { + pio_sm_config c = pio_get_default_sm_config(); + sm_config_set_wrap(&c, offset + spi_cpha1_cs_wrap_target, offset + spi_cpha1_cs_wrap); + sm_config_set_sideset(&c, 2, false, false); + return c; +} + +#include "hardware/gpio.h" +static inline void pio_spi_cs_init(PIO pio, uint sm, uint prog_offs, uint n_bits, float clkdiv, bool cpha, bool cpol, + uint pin_sck, uint pin_mosi, uint pin_miso) { + pio_sm_config c = cpha ? spi_cpha1_cs_program_get_default_config(prog_offs) : spi_cpha0_cs_program_get_default_config(prog_offs); + sm_config_set_out_pins(&c, pin_mosi, 1); + sm_config_set_in_pins(&c, pin_miso); + sm_config_set_sideset_pins(&c, pin_sck); + sm_config_set_out_shift(&c, false, true, n_bits); + sm_config_set_in_shift(&c, false, true, n_bits); + sm_config_set_clkdiv(&c, clkdiv); + pio_sm_set_pins_with_mask(pio, sm, (2u << pin_sck), (3u << pin_sck) | (1u << pin_mosi)); + pio_sm_set_pindirs_with_mask(pio, sm, (3u << pin_sck) | (1u << pin_mosi), (3u << pin_sck) | (1u << pin_mosi) | (1u << pin_miso)); + pio_gpio_init(pio, pin_mosi); + pio_gpio_init(pio, pin_miso); + pio_gpio_init(pio, pin_sck); + pio_gpio_init(pio, pin_sck + 1); + gpio_set_outover(pin_sck, cpol ? GPIO_OVERRIDE_INVERT : GPIO_OVERRIDE_NORMAL); + hw_set_bits(&pio->input_sync_bypass, 1u << pin_miso); + uint entry_point = prog_offs + (cpha ? spi_cpha1_cs_offset_entry_point : spi_cpha0_cs_offset_entry_point); + pio_sm_init(pio, sm, entry_point, &c); + pio_sm_exec(pio, sm, pio_encode_set(pio_x, n_bits - 2)); + pio_sm_exec(pio, sm, pio_encode_set(pio_y, n_bits - 2)); + pio_sm_set_enabled(pio, sm, true); +} + +#endif + diff --git a/libraries/Updater/src/Updater.cpp b/libraries/Updater/src/Updater.cpp index cbd25b3fb..4281e1909 100644 --- a/libraries/Updater/src/Updater.cpp +++ b/libraries/Updater/src/Updater.cpp @@ -97,12 +97,18 @@ bool UpdaterClass::begin(size_t size, int command) { _md5 = MD5Builder(); if (command == U_FLASH) { + // Basic sanity, if it's larger than entire FS then it can't possibly succeed + if (&_FS_start + size > &_FS_end) { + _setError(UPDATE_ERROR_SPACE); + return false; + } LittleFS.begin(); _fp = LittleFS.open("firmware.bin", "w+"); if (!_fp) { #ifdef DEBUG_UPDATER DEBUG_UPDATER.println(F("[begin] unable to create file")); #endif + _setError(UPDATE_ERROR_SPACE); return false; } updateStartAddress = 0; // Not used @@ -288,6 +294,7 @@ bool UpdaterClass::end(bool evenIfRemaining) { bool UpdaterClass::_writeBuffer() { if (_command == U_FLASH) { if (_bufferLen != _fp.write(_buffer, _bufferLen)) { + _setError(UPDATE_ERROR_SPACE); return false; } } else { diff --git a/libraries/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino b/libraries/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino index bcb92b1ac..a84a8a57a 100644 --- a/libraries/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino +++ b/libraries/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -35,8 +35,8 @@ #if USE_WIFI #include #elif USE_WIRED -#include // Or W5100lwIP.h or ENC28J60lwIP.h -Wiznet5500lwIP eth(1 /* chip select */); // or Wiznet5100lwIP or ENC28J60lwIP +#include // or W6100lwIP.h or W5100lwIP.h or ENC28J60lwIP.h +Wiznet5500lwIP eth(1 /* SPI chip select */); // or Wiznet6100lwIP or Wiznet5100lwIP or ENC28J60lwIP #endif #include diff --git a/libraries/WebServer/examples/FSBrowser/FSBrowser.ino b/libraries/WebServer/examples/FSBrowser/FSBrowser.ino index 3419fe664..5a2c18569 100644 --- a/libraries/WebServer/examples/FSBrowser/FSBrowser.ino +++ b/libraries/WebServer/examples/FSBrowser/FSBrowser.ino @@ -216,9 +216,9 @@ void handleFileList() { // as an HTTP chunk Serial.println(output); server.sendContent(output); - output = ','; + output = ","; } else { - output = '['; + output = "["; } output += "{\"type\":\""; diff --git a/libraries/WiFi/src/WiFiNTP.h b/libraries/WiFi/src/WiFiNTP.h index 7ee22a310..7155130c7 100644 --- a/libraries/WiFi/src/WiFiNTP.h +++ b/libraries/WiFi/src/WiFiNTP.h @@ -91,7 +91,7 @@ class NTPClass { cb(); } } - return time(nullptr) < 10000000; + return time(nullptr) >= 10000000; } bool running() { diff --git a/libraries/WiFi/src/WiFiUdp.h b/libraries/WiFi/src/WiFiUdp.h index bb877efde..d7caa9325 100644 --- a/libraries/WiFi/src/WiFiUdp.h +++ b/libraries/WiFi/src/WiFiUdp.h @@ -21,6 +21,7 @@ #pragma once +#include #include #include diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 5646fc9d0..dc8f89608 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -19,6 +19,8 @@ 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 + + Modified May 2025 by Sven Bruns (Lorandil on GitHub) to support user defined buffer size (inspired by ESP32 code) */ #include @@ -46,10 +48,14 @@ TwoWire::TwoWire(i2c_inst_t *i2c, pin_size_t sda, pin_size_t scl) { _running = false; _txBegun = false; _buffLen = 0; + + // allocate buffer memory early, so we don't fragment the heap later + _buffSize = WIRE_BUFFER_SIZE; + _buff = (uint8_t *)malloc(_buffSize); } bool TwoWire::setSDA(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44}) /* I2C0 */, __bitset({2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46}) /* I2C1 */ }; @@ -76,7 +82,7 @@ bool TwoWire::setSDA(pin_size_t pin) { } bool TwoWire::setSCL(pin_size_t pin) { -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45}) /* I2C0 */, __bitset({3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47}) /* I2C1 */ }; @@ -158,6 +164,16 @@ void TwoWire::begin(uint8_t addr) { // ERROR return; } + + // allocate buffer if necessary + if (!_buff) { + _buff = (uint8_t *)malloc(_buffSize); + if (!_buff) { + // ERROR + return; + } + } + _slave = true; i2c_init(_i2c, _clkHz); i2c_set_slave_mode(_i2c, true, addr); @@ -192,7 +208,7 @@ void TwoWire::onIRQ() { // First, pull off any data available if (irqstat & (1 << 2)) { // RX_FULL - if (_buffLen < (int)sizeof(_buff)) { + if (_buffLen < int(_buffSize)) { _buff[_buffLen++] = _i2c->hw->data_cmd & 0xff; } else { _i2c->hw->data_cmd; @@ -271,7 +287,7 @@ void TwoWire::beginTransmission(uint8_t addr) { } size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool stopBit) { - if (!_running || _txBegun || !quantity || (quantity > sizeof(_buff))) { + if (!_running || _txBegun || !quantity || (quantity > _buffSize)) { return 0; } @@ -448,7 +464,7 @@ size_t TwoWire::write(uint8_t ucData) { return 0; } } else { - if (!_txBegun || (_buffLen == sizeof(_buff))) { + if (!_txBegun || (_buffLen == int(_buffSize))) { return 0; } _buff[_buffLen++] = ucData; @@ -489,6 +505,14 @@ void TwoWire::flush(void) { // data transfer. } +bool TwoWire::busIdle() { + // Check hardware status + uint32_t status = _i2c->hw->status; + bool tfe = (status & I2C_IC_STATUS_TFE_BITS); + bool mast = (status & I2C_IC_STATUS_MST_ACTIVITY_BITS); + return (tfe && !mast); +} + // DMA/asynchronous transfers. Do not combime with synchronous runs or bad stuff will happen // All buffers must be valid for entire DMA and not touched until `finishedAsync()` returns true. bool TwoWire::writeReadAsync(uint8_t address, const void *wbuffer, size_t wbytes, const void *rbuffer, size_t rbytes, bool sendStop) { @@ -496,6 +520,10 @@ bool TwoWire::writeReadAsync(uint8_t address, const void *wbuffer, size_t wbytes return false; } + if (!busIdle()) { + return false; + } + if (!_dmaRunning) { beginAsync(); if (!_dmaRunning) { @@ -507,7 +535,7 @@ bool TwoWire::writeReadAsync(uint8_t address, const void *wbuffer, size_t wbytes abortAsync(); // Create or enlarge dma command buffer, we need one entry for every i2c byte we want to write/read - const size_t bufLen = (wbytes + rbytes) * 2; + const size_t bufLen = (wbytes + rbytes) * sizeof(uint16_t); if (_dmaSendBufferLen < bufLen) { if (_dmaSendBuffer) { free(_dmaSendBuffer); @@ -518,6 +546,7 @@ bool TwoWire::writeReadAsync(uint8_t address, const void *wbuffer, size_t wbytes if (!_dmaSendBuffer) { return false; } + _dmaSendBufferLen = bufLen; } // Fill the dma command buffer @@ -732,6 +761,20 @@ void TwoWire::clearTimeoutFlag() { _timeoutFlag = false; } +size_t TwoWire::setBufferSize(size_t bSize) { + if (_running) { + // ERROR - transmission already running. Report back current buffer size + return _buffSize; + } + // only free the buffer, if it already exists and the new size differs from the current one + if (_buff && (bSize != _buffSize)) { + free(_buff); + _buff = nullptr; + } + _buffSize = max(WIRE_BUFFER_SIZE_MIN, int(bSize)); // enforce minimum buffer size + return _buffSize; +} + #ifndef __WIRE0_DEVICE #define __WIRE0_DEVICE i2c0 #endif diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index f76493b52..46fb51787 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -19,6 +19,8 @@ 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 + + Modified May 2025 by Sven Bruns (Lorandil on GitHub) to support user defined buffer size (inspired by ESP32 code) */ #pragma once @@ -30,8 +32,14 @@ // WIRE_HAS_END means Wire has end() #define WIRE_HAS_END 1 +// WIRE_HAS_BUFFER_SIZE means Wire has setBufferSize() +#define WIRE_HAS_BUFFER_SIZE 1 + #ifndef WIRE_BUFFER_SIZE -#define WIRE_BUFFER_SIZE 256 +#define WIRE_BUFFER_SIZE 256 // default size, if none is set using Wire::setBuffersize(size_t) +#endif +#ifndef WIRE_BUFFER_SIZE_MIN +#define WIRE_BUFFER_SIZE_MIN 32 // minimum size for safe operation #endif class TwoWire : public HardwareI2C { @@ -87,6 +95,7 @@ class TwoWire : public HardwareI2C { bool writeReadAsync(uint8_t address, const void *wbuffer, size_t wbytes, const void *rbuffer, size_t rbytes, bool sendStop = true); bool writeAsync(uint8_t address, const void *buffer, size_t bytes, bool sendStop = true); bool readAsync(uint8_t address, void *buffer, size_t bytes, bool sendStop = true); + bool busIdle(); bool finishedAsync(); // Call to check if the async operations is completed and the buffer can be reused/read void abortAsync(); // Cancel an outstanding async I2C operation void onFinishedAsync(void(*function)(void)); // Set callback for async operation @@ -96,6 +105,8 @@ class TwoWire : public HardwareI2C { bool getTimeoutFlag(void); void clearTimeoutFlag(void); + size_t setBufferSize(size_t bSize); // set buffer size (call prior to 'begin()') + // IRQ callback void onIRQ(); @@ -114,7 +125,9 @@ class TwoWire : public HardwareI2C { bool _reset_with_timeout; void _handleTimeout(bool reset); - uint8_t _buff[WIRE_BUFFER_SIZE]; + uint8_t *_buff; // pointer to i2c buffer + size_t _buffSize; // current buffer size + int _buffLen; int _buffOff; diff --git a/libraries/lwIP_Ethernet/src/LwipEthernet.cpp b/libraries/lwIP_Ethernet/src/LwipEthernet.cpp index 55ff47105..6e3593959 100644 --- a/libraries/lwIP_Ethernet/src/LwipEthernet.cpp +++ b/libraries/lwIP_Ethernet/src/LwipEthernet.cpp @@ -75,7 +75,7 @@ void __removeEthernetPacketHandler(int id) { } #define GPIOSTACKSIZE 8 -#ifdef PICO_RP2350B +#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B #define GPIOIRQREGS 6 #define GPIOIRQREGSINIT 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff #else diff --git a/libraries/lwIP_Ethernet/src/LwipIntfDev.h b/libraries/lwIP_Ethernet/src/LwipIntfDev.h index 30205b68b..88fade569 100644 --- a/libraries/lwIP_Ethernet/src/LwipIntfDev.h +++ b/libraries/lwIP_Ethernet/src/LwipIntfDev.h @@ -186,6 +186,7 @@ class LwipIntfDev: public LwipIntf, public RawDev { SPIClass& _spiUnit; SPISettings _spiSettings = SPISettings(4000000, MSBFIRST, SPI_MODE0); netif _netif; + bool _isDHCP = true; uint16_t _mtu; int8_t _intrPin; @@ -282,6 +283,8 @@ bool LwipIntfDev::config(const IPAddress& localIP, const IPAddress& gate return false; } + _isDHCP = (localIP.v4() == 0); + IPAddress realGateway, realNetmask, realDns1; if (!ipAddressReorder(localIP, gateway, netmask, dns1, realGateway, realNetmask, realDns1)) { return false; @@ -389,8 +392,11 @@ bool LwipIntfDev::begin(const uint8_t* macAddress, const uint16_t mtu) { _phID = __addEthernetPacketHandler([this] { this->handlePackets(); }); } - if (localIP().v4() == 0) { - // IP not set, starting DHCP + if (_isDHCP) { + // Destroy any existing address + ip4_addr_set_u32(ip_2_ip4(&_netif.ip_addr), 0); + + // Start a new DHCP request _netif.flags |= NETIF_FLAG_UP; switch (dhcp_start(&_netif)) { case ERR_OK: diff --git a/libraries/lwIP_w55rp20/examples/WiFiClient-W55RP20/WiFiClient-W55RP20.ino b/libraries/lwIP_w55rp20/examples/WiFiClient-W55RP20/WiFiClient-W55RP20.ino index 61c7c8c29..b789cd095 100644 --- a/libraries/lwIP_w55rp20/examples/WiFiClient-W55RP20/WiFiClient-W55RP20.ino +++ b/libraries/lwIP_w55rp20/examples/WiFiClient-W55RP20/WiFiClient-W55RP20.ino @@ -8,7 +8,7 @@ const char* host = "djxmmx.net"; const uint16_t port = 17; -Wiznet55rp20lwIP eth(1 /* chip select */); +Wiznet55rp20lwIP eth(20 /* chip select */); void setup() { Serial.begin(115200); diff --git a/libraries/lwIP_w55rp20/src/utility/w55rp20.h b/libraries/lwIP_w55rp20/src/utility/w55rp20.h index 74071d62b..50520ab44 100644 --- a/libraries/lwIP_w55rp20/src/utility/w55rp20.h +++ b/libraries/lwIP_w55rp20/src/utility/w55rp20.h @@ -51,7 +51,7 @@ class Wiznet55rp20 { Constructor that uses the default hardware SPI pins @param cs the Arduino Chip Select / Slave Select pin (default 10) */ - Wiznet55rp20(int8_t cs = SS, SPIClass& spi = SPI, int8_t intr = -1); + Wiznet55rp20(int8_t cs = WIZNET_PIO_SPI_CS_PIN, SPIClass& spi = SPI, int8_t intr = -1); //Wiznet55rp20(); /** diff --git a/libraries/lwIP_w55rp20/src/wiznet_pio_spi.pio.h b/libraries/lwIP_w55rp20/src/wiznet_pio_spi.pio.h index dff1d9c29..6e08692d9 100644 --- a/libraries/lwIP_w55rp20/src/wiznet_pio_spi.pio.h +++ b/libraries/lwIP_w55rp20/src/wiznet_pio_spi.pio.h @@ -14,6 +14,7 @@ #define wiznet_pio_spi_write_read_wrap_target 0 #define wiznet_pio_spi_write_read_wrap 8 +#define wiznet_pio_spi_write_read_pio_version 0 #define wiznet_pio_spi_write_read_offset_write_bits 0u #define wiznet_pio_spi_write_read_offset_write_end 3u @@ -38,6 +39,10 @@ static const struct pio_program wiznet_pio_spi_write_read_program = { .instructions = wiznet_pio_spi_write_read_program_instructions, .length = 9, .origin = -1, + .pio_version = 0, +#if PICO_PIO_VERSION > 0 + .used_gpio_ranges = 0x0 +#endif }; static inline pio_sm_config wiznet_pio_spi_write_read_program_get_default_config(uint offset) { diff --git a/package.json b/package.json index 1b27c10f5..5b0dda78e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "framework-arduinopico", - "version": "1.40400.0", + "version": "1.40504.0", "description": "Arduino Wiring-based Framework (RPi Pico RP2040, RP2350)", "keywords": [ "framework", diff --git a/package/package_pico_index.template.json b/package/package_pico_index.template.json index 9dac807c8..099138b82 100644 --- a/package/package_pico_index.template.json +++ b/package/package_pico_index.template.json @@ -80,12 +80,21 @@ { "name": "Adafruit KB2040" }, + { + "name": "Adafruit Feather RP2350 Adalogger" + }, { "name": "Adafruit Feather RP2350 HSTX" }, { "name": "Adafruit Floppsy" }, + { + "name": "Adafruit Metro RP2350" + }, + { + "name": "Adafruit Fruit Jam RP2350" + }, { "name": "Amken BunnyBoard" }, @@ -206,6 +215,12 @@ { "name": "iLabs Challenger 2350 BConnect" }, + { + "name": "Makerbase MKS THR36" + }, + { + "name": "Makerbase MKS THR42" + }, { "name": "Melopero Cookie RP2040" }, @@ -228,10 +243,13 @@ "name": "nullbits Bit-C PRO" }, { - "name": "Olimex RP2040-Pico30 2MB" + "name": "Olimex Pico2XL" + }, + { + "name": "Olimex Pico2XXL" }, { - "name": "Olimex RP2040-Pico30 16MB" + "name": "Olimex RP2040-Pico30" }, { "name": "Pimoroni PGA2040" @@ -251,6 +269,9 @@ { "name": "Pimoroni Plasma2350" }, + { + "name": "Pimoroni Servo2040" + }, { "name": "Pimoroni Tiny2040" }, @@ -284,6 +305,9 @@ { "name": "Solder Party RP2350 Stamp XL" }, + { + "name": "SparkFun IoT RedBoard RP2350" + }, { "name": "SparkFun MicroMod RP2040" }, @@ -299,6 +323,15 @@ { "name": "SparkFun Thing Plus RP2350" }, + { + "name": "SparkFun IoT Node LoRaWAN" + }, + { + "name": "SparkFun XRP Controller (Beta)" + }, + { + "name": "SparkFun XRP Controller" + }, { "name": "Seeed INDICATOR RP2040" }, diff --git a/pico-sdk b/pico-sdk index 95ea6acad..b1676c18a 160000 --- a/pico-sdk +++ b/pico-sdk @@ -1 +1 @@ -Subproject commit 95ea6acad131124694cda1c162c52cd30e0aece0 +Subproject commit b1676c18a3a9e3670d2a83a6d72b3a97e0ff31db diff --git a/platform.txt b/platform.txt index b05106a55..fc0256e10 100644 --- a/platform.txt +++ b/platform.txt @@ -20,7 +20,7 @@ # https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification name=Raspberry Pi RP2040/RP2350 Boards -version=4.4.0 +version=4.5.4 # Required discoveries and monitors # --------------------------------- @@ -51,7 +51,7 @@ compiler.warning_flags.all=-Wall -Wextra -Werror=return-type -Wno-ignored-qualif compiler.netdefines={build.libpicowdefs} -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1 compiler.psramdefines={build.psram_cs} {build.psram_freq} -compiler.defines={build.led} {build.usbstack_flags} {build.usbpid} {build.usbvid} {build.usbpwr} {compiler.psramdefines} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {compiler.netdefines} {build.variantdefines} -DARDUINO_VARIANT="{build.variant}" -DPICO_FLASH_SIZE_BYTES={build.flash_total} "@{runtime.platform.path}/lib/{build.chip}/platform_def.txt" +compiler.defines={build.led} {build.usbstack_flags} {build.usbpid} {build.usbvid} {build.usbpwr} {compiler.psramdefines} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {compiler.netdefines} {build.sdfatdefines} {build.variantdefines} -DARDUINO_VARIANT="{build.variant}" -DPICO_FLASH_SIZE_BYTES={build.flash_total} "@{runtime.platform.path}/lib/{build.chip}/platform_def.txt" compiler.includes="-iprefix{runtime.platform.path}/" "@{runtime.platform.path}/lib/{build.chip}/platform_inc.txt" "@{runtime.platform.path}/lib/core_inc.txt" "-I{runtime.platform.path}/include" compiler.flags={build.toolchainopts} -ffunction-sections -fdata-sections {build.flags.exceptions} {build.flags.stackprotect} {build.picodebugflags} compiler.wrap="@{runtime.platform.path}/lib/{build.chip}/platform_wrap.txt" "@{runtime.platform.path}/lib/core_wrap.txt" @@ -114,6 +114,7 @@ build.espwifitype= build.debugscript=picoprobe_cmsis_dap.tcl build.picodebugflags= build.variantdefines= +build.sdfatdefines=-DFILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC -DUSE_UTF8_LONG_NAMES=1 -DDISABLE_FS_H_WARNING=1 # Allow Pico boards to be auto-discovered by the IDE #discovery.rp2040.pattern={runtime.tools.pqt-python3.path}/python3 -I "{runtime.platform.path}/tools/pluggable_discovery.py" @@ -202,6 +203,7 @@ tools.uf2conv-network.cmd={runtime.platform.path}/system/python3/python3 tools.uf2conv-network.upload.protocol=uf2 tools.uf2conv-network.upload.params.verbose= tools.uf2conv-network.upload.params.quiet= +tools.uf2conv-network.upload.field.password=Password tools.uf2conv-network.upload.pattern="{cmd}" -I "{runtime.platform.path}/tools/espota.py" -i "{upload.port.address}" -p "{upload.port.properties.port}" "--auth={upload.field.password}" -f "{build.path}/{build.project_name}.bin" #tools.picotool.cmd={runtime.tools.pqt-picotool.path} diff --git a/tests/common.sh b/tests/common.sh index 8069967fa..290c87aae 100755 --- a/tests/common.sh +++ b/tests/common.sh @@ -27,6 +27,7 @@ EOL fi # Add items to the following list with "\n" netween them to skip running. No spaces, tabs, etc. allowed read -d '' skiplist << EOL || true +/SdFat/ /#attic/ /AvrAdcLogger/ /examplesV1/ diff --git a/tests/restyle.sh b/tests/restyle.sh index 27dea5b92..e1709e3f8 100755 --- a/tests/restyle.sh +++ b/tests/restyle.sh @@ -17,7 +17,7 @@ for dir in ./cores/rp2040 ./libraries/EEPROM ./libraries/I2S ./libraries/SingleF ./libraries/SPISlave ./libraries/lwIP_ESPHost ./libraries/FatFS\ ./libraries/FatFSUSB ./libraries/BluetoothAudio ./libraries/BluetoothHCI \ ./libraries/BluetoothHIDMaster ./libraries/NetBIOS ./libraries/Ticker \ - ./libraries/VFS ./libraries/rp2350 ./libraries/SimpleMDNS ; do + ./libraries/VFS ./libraries/rp2350 ./libraries/SimpleMDNS ./libraries/SoftwareSPI ; do find $dir -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" \) -a \! -path '*api*' -exec astyle --suffix=none --options=./tests/astyle_core.conf \{\} \; find $dir -type f -name "*.ino" -exec astyle --suffix=none --options=./tests/astyle_examples.conf \{\} \; done diff --git a/tools/README.md b/tools/README.md index 8eb41269a..32e8f4f28 100644 --- a/tools/README.md +++ b/tools/README.md @@ -30,6 +30,15 @@ as necessary to add any add'l fields or menus required. Used because the `boards.txt` file is very repetitive and it's safer to generate with code than by hand. +## makepacer.cpp +Generates ``libraries/PWMAudio/src/PWMAudioPrecalc.h` which contains the +precalculated DMA pacer settings for common audio sample rates and CPU +frequencies. Makes setting the frequency for PWMAudio instantaneous. + +## makepio.py +Rebuilds all the ``*.pio`` files in the core and libraries using the +currently installed pioasm. Use when a new PIOASM is available. + ## makever.py Updates the version info prior to a release in platform.txt, package.json, and the version header. Run from root of the repo. diff --git a/tools/json/0xcb_helios.json b/tools/json/0xcb_helios.json index a4009f774..93dc39d28 100644 --- a/tools/json/0xcb_helios.json +++ b/tools/json/0xcb_helios.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Helios", "upload": { diff --git a/tools/json/DudesCab.json b/tools/json/DudesCab.json index 5003967d2..f5b289b36 100644 --- a/tools/json/DudesCab.json +++ b/tools/json/DudesCab.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "DudesCab", "upload": { diff --git a/tools/json/MyRP_bot.json b/tools/json/MyRP_bot.json index 834d41dee..4097db167 100644 --- a/tools/json/MyRP_bot.json +++ b/tools/json/MyRP_bot.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040", "upload": { diff --git a/tools/json/adafruit_feather.json b/tools/json/adafruit_feather.json index 4b94d018e..1b7a67030 100644 --- a/tools/json/adafruit_feather.json +++ b/tools/json/adafruit_feather.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040", "upload": { diff --git a/tools/json/adafruit_feather_adalogger.json b/tools/json/adafruit_feather_adalogger.json index b5c5f01d4..e8db608d3 100644 --- a/tools/json/adafruit_feather_adalogger.json +++ b/tools/json/adafruit_feather_adalogger.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040 Adalogger", "upload": { diff --git a/tools/json/adafruit_feather_can.json b/tools/json/adafruit_feather_can.json index 135bbd768..1d67fb9d7 100644 --- a/tools/json/adafruit_feather_can.json +++ b/tools/json/adafruit_feather_can.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040 CAN", "upload": { diff --git a/tools/json/adafruit_feather_dvi.json b/tools/json/adafruit_feather_dvi.json index 8cca755be..debafa4bc 100644 --- a/tools/json/adafruit_feather_dvi.json +++ b/tools/json/adafruit_feather_dvi.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040 DVI", "upload": { diff --git a/tools/json/adafruit_feather_prop_maker.json b/tools/json/adafruit_feather_prop_maker.json index 61c790ca7..66b97a970 100644 --- a/tools/json/adafruit_feather_prop_maker.json +++ b/tools/json/adafruit_feather_prop_maker.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040 Prop-Maker", "upload": { diff --git a/tools/json/adafruit_feather_rfm.json b/tools/json/adafruit_feather_rfm.json index 9c3c5d956..4a6c0c2e9 100644 --- a/tools/json/adafruit_feather_rfm.json +++ b/tools/json/adafruit_feather_rfm.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040 RFM", "upload": { diff --git a/tools/json/adafruit_feather_rp2350_adalogger.json b/tools/json/adafruit_feather_rp2350_adalogger.json new file mode 100644 index 000000000..13de9fc62 --- /dev/null +++ b/tools/json/adafruit_feather_rp2350_adalogger.json @@ -0,0 +1,56 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x239A", + "usb_pid": "0x816D" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_ADAFRUIT_FEATHER_RP2350_ADALOGGER -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x239A", + "0x816D" + ] + ], + "mcu": "rp2350", + "variant": "adafruit_feather_rp2350_adalogger" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "Feather RP2350 Adalogger", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 8388608, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Adafruit" +} \ No newline at end of file diff --git a/tools/json/adafruit_feather_rp2350_hstx.json b/tools/json/adafruit_feather_rp2350_hstx.json index 60fa5ada2..6774e3b20 100644 --- a/tools/json/adafruit_feather_rp2350_hstx.json +++ b/tools/json/adafruit_feather_rp2350_hstx.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2350 HSTX", "upload": { diff --git a/tools/json/adafruit_feather_scorpio.json b/tools/json/adafruit_feather_scorpio.json index c52c65808..c29723cd8 100644 --- a/tools/json/adafruit_feather_scorpio.json +++ b/tools/json/adafruit_feather_scorpio.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040 SCORPIO", "upload": { diff --git a/tools/json/adafruit_feather_thinkink.json b/tools/json/adafruit_feather_thinkink.json index 8d5f8e441..e9fb2aaeb 100644 --- a/tools/json/adafruit_feather_thinkink.json +++ b/tools/json/adafruit_feather_thinkink.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040 ThinkINK", "upload": { diff --git a/tools/json/adafruit_feather_usb_host.json b/tools/json/adafruit_feather_usb_host.json index 526b5020b..e62a1a48d 100644 --- a/tools/json/adafruit_feather_usb_host.json +++ b/tools/json/adafruit_feather_usb_host.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Feather RP2040 USB Host", "upload": { diff --git a/tools/json/adafruit_floppsy.json b/tools/json/adafruit_floppsy.json index f5b9f4a70..cc47b2709 100644 --- a/tools/json/adafruit_floppsy.json +++ b/tools/json/adafruit_floppsy.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Floppsy", "upload": { diff --git a/tools/json/adafruit_fruitjam.json b/tools/json/adafruit_fruitjam.json new file mode 100644 index 000000000..5e6caaea5 --- /dev/null +++ b/tools/json/adafruit_fruitjam.json @@ -0,0 +1,57 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x239A", + "usb_pid": "0x816B" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_ADAFRUIT_FRUITJAM_RP2350 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x239A", + "0x816B" + ] + ], + "mcu": "rp2350", + "variant": "adafruit_fruitjam" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "Fruit Jam RP2350", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 16777216, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ], + "psram_length": 8388608 + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Adafruit" +} \ No newline at end of file diff --git a/tools/json/adafruit_itsybitsy.json b/tools/json/adafruit_itsybitsy.json index 926c52ef5..2e8e3fff5 100644 --- a/tools/json/adafruit_itsybitsy.json +++ b/tools/json/adafruit_itsybitsy.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "ItsyBitsy RP2040", "upload": { diff --git a/tools/json/adafruit_kb2040.json b/tools/json/adafruit_kb2040.json index 5f67f768a..a8f1ed985 100644 --- a/tools/json/adafruit_kb2040.json +++ b/tools/json/adafruit_kb2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "KB2040", "upload": { diff --git a/tools/json/adafruit_macropad2040.json b/tools/json/adafruit_macropad2040.json index 828efbdf6..a74c72037 100644 --- a/tools/json/adafruit_macropad2040.json +++ b/tools/json/adafruit_macropad2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "MacroPad RP2040", "upload": { diff --git a/tools/json/adafruit_metro.json b/tools/json/adafruit_metro.json index 3297a5513..1cbcd46ce 100644 --- a/tools/json/adafruit_metro.json +++ b/tools/json/adafruit_metro.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Metro RP2040", "upload": { diff --git a/tools/json/adafruit_metro_rp2350.json b/tools/json/adafruit_metro_rp2350.json new file mode 100644 index 000000000..ee5d414b1 --- /dev/null +++ b/tools/json/adafruit_metro_rp2350.json @@ -0,0 +1,56 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x239A", + "usb_pid": "0x814D" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_ADAFRUIT_METRO_RP2350 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x239A", + "0x814D" + ] + ], + "mcu": "rp2350", + "variant": "adafruit_metro_rp2350" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "Metro RP2350", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 16777216, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Adafruit" +} \ No newline at end of file diff --git a/tools/json/adafruit_qtpy.json b/tools/json/adafruit_qtpy.json index 4956538eb..e52c3f000 100644 --- a/tools/json/adafruit_qtpy.json +++ b/tools/json/adafruit_qtpy.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "QT Py RP2040", "upload": { diff --git a/tools/json/adafruit_stemmafriend.json b/tools/json/adafruit_stemmafriend.json index 7739ea389..03bbada84 100644 --- a/tools/json/adafruit_stemmafriend.json +++ b/tools/json/adafruit_stemmafriend.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "STEMMA Friend RP2040", "upload": { diff --git a/tools/json/adafruit_trinkeyrp2040qt.json b/tools/json/adafruit_trinkeyrp2040qt.json index d846105e9..59dda2fe6 100644 --- a/tools/json/adafruit_trinkeyrp2040qt.json +++ b/tools/json/adafruit_trinkeyrp2040qt.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Trinkey RP2040 QT", "upload": { diff --git a/tools/json/akana_r1.json b/tools/json/akana_r1.json index d1b9e67d0..06ee98a8e 100644 --- a/tools/json/akana_r1.json +++ b/tools/json/akana_r1.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Akana R1", "upload": { diff --git a/tools/json/amken_bunny.json b/tools/json/amken_bunny.json index 51b3dd013..c45533af0 100644 --- a/tools/json/amken_bunny.json +++ b/tools/json/amken_bunny.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "BunnyBoard", "upload": { diff --git a/tools/json/amken_revelop.json b/tools/json/amken_revelop.json index f7e88e832..9fd023f6c 100644 --- a/tools/json/amken_revelop.json +++ b/tools/json/amken_revelop.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Revelop", "upload": { diff --git a/tools/json/amken_revelop_es.json b/tools/json/amken_revelop_es.json index 328b3a98e..dc9d7048f 100644 --- a/tools/json/amken_revelop_es.json +++ b/tools/json/amken_revelop_es.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Revelop eS", "upload": { diff --git a/tools/json/amken_revelop_plus.json b/tools/json/amken_revelop_plus.json index b53d467db..08442e735 100644 --- a/tools/json/amken_revelop_plus.json +++ b/tools/json/amken_revelop_plus.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Revelop Plus", "upload": { diff --git a/tools/json/arduino_nano_connect.json b/tools/json/arduino_nano_connect.json index ba2dd0322..c1bdb99c4 100644 --- a/tools/json/arduino_nano_connect.json +++ b/tools/json/arduino_nano_connect.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Nano RP2040 Connect", "upload": { diff --git a/tools/json/artronshop_rp2_nano.json b/tools/json/artronshop_rp2_nano.json index 312ad0394..08bc3b7f6 100644 --- a/tools/json/artronshop_rp2_nano.json +++ b/tools/json/artronshop_rp2_nano.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2 Nano", "upload": { diff --git a/tools/json/breadstick_raspberry.json b/tools/json/breadstick_raspberry.json index 5c581242a..8f6cc1812 100644 --- a/tools/json/breadstick_raspberry.json +++ b/tools/json/breadstick_raspberry.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Raspberry", "upload": { diff --git a/tools/json/bridgetek_idm2040_43a.json b/tools/json/bridgetek_idm2040_43a.json index 0f4d845ed..41a24f07c 100644 --- a/tools/json/bridgetek_idm2040_43a.json +++ b/tools/json/bridgetek_idm2040_43a.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "IDM2040-43A", "upload": { diff --git a/tools/json/bridgetek_idm2040_7a.json b/tools/json/bridgetek_idm2040_7a.json index 892dc3aa3..d1e0f94db 100644 --- a/tools/json/bridgetek_idm2040_7a.json +++ b/tools/json/bridgetek_idm2040_7a.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "IDM2040-7A", "upload": { diff --git a/tools/json/challenger_2040_lora.json b/tools/json/challenger_2040_lora.json index 8b830b165..4472bb4f4 100644 --- a/tools/json/challenger_2040_lora.json +++ b/tools/json/challenger_2040_lora.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 LoRa", "upload": { diff --git a/tools/json/challenger_2040_lte.json b/tools/json/challenger_2040_lte.json index 74800d90e..93b796290 100644 --- a/tools/json/challenger_2040_lte.json +++ b/tools/json/challenger_2040_lte.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 LTE", "upload": { diff --git a/tools/json/challenger_2040_nfc.json b/tools/json/challenger_2040_nfc.json index 471671985..37f7a1add 100644 --- a/tools/json/challenger_2040_nfc.json +++ b/tools/json/challenger_2040_nfc.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 NFC", "upload": { diff --git a/tools/json/challenger_2040_sdrtc.json b/tools/json/challenger_2040_sdrtc.json index 49ecd7eb5..2af0093ca 100644 --- a/tools/json/challenger_2040_sdrtc.json +++ b/tools/json/challenger_2040_sdrtc.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 SD/RTC", "upload": { diff --git a/tools/json/challenger_2040_subghz.json b/tools/json/challenger_2040_subghz.json index d427d333b..0063b10bf 100644 --- a/tools/json/challenger_2040_subghz.json +++ b/tools/json/challenger_2040_subghz.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 SubGHz", "upload": { diff --git a/tools/json/challenger_2040_uwb.json b/tools/json/challenger_2040_uwb.json index 14e3c85c8..44a5da5b4 100644 --- a/tools/json/challenger_2040_uwb.json +++ b/tools/json/challenger_2040_uwb.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 UWB", "upload": { diff --git a/tools/json/challenger_2040_wifi.json b/tools/json/challenger_2040_wifi.json index f22d39711..47a1534f3 100644 --- a/tools/json/challenger_2040_wifi.json +++ b/tools/json/challenger_2040_wifi.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 WiFi", "upload": { diff --git a/tools/json/challenger_2040_wifi6_ble.json b/tools/json/challenger_2040_wifi6_ble.json index 3ce9d6e2a..1ba987a4e 100644 --- a/tools/json/challenger_2040_wifi6_ble.json +++ b/tools/json/challenger_2040_wifi6_ble.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 WiFi6/BLE", "upload": { diff --git a/tools/json/challenger_2040_wifi_ble.json b/tools/json/challenger_2040_wifi_ble.json index 749a5cb5d..bddcd6857 100644 --- a/tools/json/challenger_2040_wifi_ble.json +++ b/tools/json/challenger_2040_wifi_ble.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2040 WiFi/BLE", "upload": { diff --git a/tools/json/challenger_2350_bconnect.json b/tools/json/challenger_2350_bconnect.json index 4ccd4ea37..5011c5e42 100644 --- a/tools/json/challenger_2350_bconnect.json +++ b/tools/json/challenger_2350_bconnect.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2350 BConnect", "upload": { diff --git a/tools/json/challenger_2350_wifi6_ble5.json b/tools/json/challenger_2350_wifi6_ble5.json index d8138590f..2bb443553 100644 --- a/tools/json/challenger_2350_wifi6_ble5.json +++ b/tools/json/challenger_2350_wifi6_ble5.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger 2350 WiFi/BLE", "upload": { diff --git a/tools/json/challenger_nb_2040_wifi.json b/tools/json/challenger_nb_2040_wifi.json index d2910d61f..8ec74f178 100644 --- a/tools/json/challenger_nb_2040_wifi.json +++ b/tools/json/challenger_nb_2040_wifi.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Challenger NB 2040 WiFi", "upload": { diff --git a/tools/json/connectivity_2040_lte_wifi_ble.json b/tools/json/connectivity_2040_lte_wifi_ble.json index 7f990a0d8..39649b94a 100644 --- a/tools/json/connectivity_2040_lte_wifi_ble.json +++ b/tools/json/connectivity_2040_lte_wifi_ble.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Connectivity 2040 LTE/WiFi/BLE", "upload": { diff --git a/tools/json/cytron_iriv_io_controller.json b/tools/json/cytron_iriv_io_controller.json index c93d370b7..ee9c4b5e3 100644 --- a/tools/json/cytron_iriv_io_controller.json +++ b/tools/json/cytron_iriv_io_controller.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "IRIV IO Controller", "upload": { diff --git a/tools/json/cytron_maker_nano_rp2040.json b/tools/json/cytron_maker_nano_rp2040.json index 493501d35..6729de06f 100644 --- a/tools/json/cytron_maker_nano_rp2040.json +++ b/tools/json/cytron_maker_nano_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Maker Nano RP2040", "upload": { diff --git a/tools/json/cytron_maker_pi_rp2040.json b/tools/json/cytron_maker_pi_rp2040.json index ed46bea2a..7e05e2c67 100644 --- a/tools/json/cytron_maker_pi_rp2040.json +++ b/tools/json/cytron_maker_pi_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Maker Pi RP2040", "upload": { diff --git a/tools/json/cytron_maker_uno_rp2040.json b/tools/json/cytron_maker_uno_rp2040.json index eb66b9036..e1b8f9948 100644 --- a/tools/json/cytron_maker_uno_rp2040.json +++ b/tools/json/cytron_maker_uno_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Maker Uno RP2040", "upload": { diff --git a/tools/json/cytron_motion_2350_pro.json b/tools/json/cytron_motion_2350_pro.json index c32118159..7d3c6b923 100644 --- a/tools/json/cytron_motion_2350_pro.json +++ b/tools/json/cytron_motion_2350_pro.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Motion 2350 Pro", "upload": { diff --git a/tools/json/datanoisetv_picoadk.json b/tools/json/datanoisetv_picoadk.json index 9cb90313c..258754317 100644 --- a/tools/json/datanoisetv_picoadk.json +++ b/tools/json/datanoisetv_picoadk.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "PicoADK", "upload": { diff --git a/tools/json/datanoisetv_picoadk_v2.json b/tools/json/datanoisetv_picoadk_v2.json index 8606ef760..526a4553b 100644 --- a/tools/json/datanoisetv_picoadk_v2.json +++ b/tools/json/datanoisetv_picoadk_v2.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "PicoADK v2", "upload": { diff --git a/tools/json/degz_suibo.json b/tools/json/degz_suibo.json index 080b3c410..29f8addeb 100644 --- a/tools/json/degz_suibo.json +++ b/tools/json/degz_suibo.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Suibo RP2040", "upload": { diff --git a/tools/json/dfrobot_beetle_rp2040.json b/tools/json/dfrobot_beetle_rp2040.json index b391c9e74..f9c4a7c8f 100644 --- a/tools/json/dfrobot_beetle_rp2040.json +++ b/tools/json/dfrobot_beetle_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Beetle RP2040", "upload": { diff --git a/tools/json/electroniccats_huntercat_nfc.json b/tools/json/electroniccats_huntercat_nfc.json index ff441a6a7..85a3ccdef 100644 --- a/tools/json/electroniccats_huntercat_nfc.json +++ b/tools/json/electroniccats_huntercat_nfc.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "HunterCat NFC RP2040", "upload": { diff --git a/tools/json/evn_alpha.json b/tools/json/evn_alpha.json index bab9c0a17..5d2490b48 100644 --- a/tools/json/evn_alpha.json +++ b/tools/json/evn_alpha.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Alpha", "upload": { diff --git a/tools/json/extelec_rc2040.json b/tools/json/extelec_rc2040.json index d1e7f5a85..d9dc62e92 100644 --- a/tools/json/extelec_rc2040.json +++ b/tools/json/extelec_rc2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RC2040", "upload": { diff --git a/tools/json/flyboard2040_core.json b/tools/json/flyboard2040_core.json index 5393f9d7c..689031c36 100644 --- a/tools/json/flyboard2040_core.json +++ b/tools/json/flyboard2040_core.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "FlyBoard2040Core", "upload": { diff --git a/tools/json/generic.json b/tools/json/generic.json index 1497dc75b..f94afbc27 100644 --- a/tools/json/generic.json +++ b/tools/json/generic.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040", "upload": { diff --git a/tools/json/generic_rp2350.json b/tools/json/generic_rp2350.json index 58abbdd04..3a4842269 100644 --- a/tools/json/generic_rp2350.json +++ b/tools/json/generic_rp2350.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2350", "upload": { diff --git a/tools/json/groundstudio_marble_pico.json b/tools/json/groundstudio_marble_pico.json index abfa4f4b4..0e20819af 100644 --- a/tools/json/groundstudio_marble_pico.json +++ b/tools/json/groundstudio_marble_pico.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Marble Pico", "upload": { diff --git a/tools/json/ilabs_rpico32.json b/tools/json/ilabs_rpico32.json index a4681b404..03aa0c0fa 100644 --- a/tools/json/ilabs_rpico32.json +++ b/tools/json/ilabs_rpico32.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RPICO32", "upload": { diff --git a/tools/json/jumperless_v1.json b/tools/json/jumperless_v1.json index b50b3f449..5d7d4cfdb 100644 --- a/tools/json/jumperless_v1.json +++ b/tools/json/jumperless_v1.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Jumperless", "upload": { diff --git a/tools/json/jumperless_v5.json b/tools/json/jumperless_v5.json index 53e7ab8fb..fd5ead17c 100644 --- a/tools/json/jumperless_v5.json +++ b/tools/json/jumperless_v5.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Jumperless V5", "upload": { diff --git a/tools/json/melopero_cookie_rp2040.json b/tools/json/melopero_cookie_rp2040.json index b79d52cfc..5f434af5f 100644 --- a/tools/json/melopero_cookie_rp2040.json +++ b/tools/json/melopero_cookie_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Cookie RP2040", "upload": { diff --git a/tools/json/melopero_shake_rp2040.json b/tools/json/melopero_shake_rp2040.json index d976c7124..b753c7c67 100644 --- a/tools/json/melopero_shake_rp2040.json +++ b/tools/json/melopero_shake_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Shake RP2040", "upload": { diff --git a/tools/json/olimex_rp2040pico30_16mb.json b/tools/json/mksthr36.json similarity index 73% rename from tools/json/olimex_rp2040pico30_16mb.json rename to tools/json/mksthr36.json index 684fe835a..06f3722a3 100644 --- a/tools/json/olimex_rp2040pico30_16mb.json +++ b/tools/json/mksthr36.json @@ -3,13 +3,13 @@ "arduino": { "earlephilhower": { "boot2_source": "boot2_w25q080_2_padded_checksum.S", - "usb_vid": "0x15BA", - "usb_pid": "0x0026" + "usb_vid": "0x2E8A", + "usb_pid": "0x000A" } }, "core": "earlephilhower", "cpu": "cortex-m0plus", - "extra_flags": "-DARDUINO_OLIMEX_RP2040_PICO30_16MB -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", + "extra_flags": "-DARDUINO_MAKERBASE_MKSTHR36 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", "f_cpu": "133000000L", "hwids": [ [ @@ -17,12 +17,12 @@ "0x00C0" ], [ - "0x15BA", - "0x0026" + "0x2E8A", + "0x000A" ] ], "mcu": "rp2040", - "variant": "olimex_rp2040pico30_16mb" + "variant": "mksthr36" }, "debug": { "jlink_device": "RP2040_M0_0", @@ -30,12 +30,13 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], - "name": "RP2040-Pico30 16MB", + "name": "MKS THR36", "upload": { "maximum_ram_size": 262144, - "maximum_size": 16777216, + "maximum_size": 1048576, "require_upload_port": true, "native_usb": true, "use_1200bps_touch": true, @@ -51,5 +52,5 @@ ] }, "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", - "vendor": "Olimex" + "vendor": "Makerbase" } \ No newline at end of file diff --git a/tools/json/mksthr42.json b/tools/json/mksthr42.json new file mode 100644 index 000000000..49767edc3 --- /dev/null +++ b/tools/json/mksthr42.json @@ -0,0 +1,56 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "boot2_w25q080_2_padded_checksum.S", + "usb_vid": "0x2E8A", + "usb_pid": "0x000A" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m0plus", + "extra_flags": "-DARDUINO_MAKERBASE_MKSTHR42 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", + "f_cpu": "133000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x2E8A", + "0x000A" + ] + ], + "mcu": "rp2040", + "variant": "mksthr42" + }, + "debug": { + "jlink_device": "RP2040_M0_0", + "openocd_target": "rp2040.cfg", + "svd_path": "rp2040.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "MKS THR42", + "upload": { + "maximum_ram_size": 262144, + "maximum_size": 1048576, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Makerbase" +} \ No newline at end of file diff --git a/tools/json/nekosystems_bl2040_mini.json b/tools/json/nekosystems_bl2040_mini.json index 786b3284c..e0c2049df 100644 --- a/tools/json/nekosystems_bl2040_mini.json +++ b/tools/json/nekosystems_bl2040_mini.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "BL2040 Mini", "upload": { diff --git a/tools/json/newsan_archi.json b/tools/json/newsan_archi.json index 2b034f932..ccb3d9428 100644 --- a/tools/json/newsan_archi.json +++ b/tools/json/newsan_archi.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Archi", "upload": { diff --git a/tools/json/nullbits_bit_c_pro.json b/tools/json/nullbits_bit_c_pro.json index d9ce0770e..90425bc5d 100644 --- a/tools/json/nullbits_bit_c_pro.json +++ b/tools/json/nullbits_bit_c_pro.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Bit-C PRO", "upload": { diff --git a/tools/json/olimex_pico2xl.json b/tools/json/olimex_pico2xl.json new file mode 100644 index 000000000..205c02215 --- /dev/null +++ b/tools/json/olimex_pico2xl.json @@ -0,0 +1,56 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x15BA", + "usb_pid": "0x0026" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_OLIMEX_PICO2XL -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x15BA", + "0x0026" + ] + ], + "mcu": "rp2350", + "variant": "olimex_pico2xl" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "Pico2XL", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 2097152, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Olimex" +} \ No newline at end of file diff --git a/tools/json/olimex_pico2xxl.json b/tools/json/olimex_pico2xxl.json new file mode 100644 index 000000000..e0e8bdd0e --- /dev/null +++ b/tools/json/olimex_pico2xxl.json @@ -0,0 +1,57 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x15BA", + "usb_pid": "0x0026" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_OLIMEX_PICO2XXL -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x15BA", + "0x0026" + ] + ], + "mcu": "rp2350", + "variant": "olimex_pico2xxl" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "Pico2XXL", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 16777216, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ], + "psram_length": 8388608 + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Olimex" +} \ No newline at end of file diff --git a/tools/json/olimex_rp2040pico30_2mb.json b/tools/json/olimex_rp2040pico30.json similarity index 85% rename from tools/json/olimex_rp2040pico30_2mb.json rename to tools/json/olimex_rp2040pico30.json index ea4f46fd0..182afaa28 100644 --- a/tools/json/olimex_rp2040pico30_2mb.json +++ b/tools/json/olimex_rp2040pico30.json @@ -9,7 +9,7 @@ }, "core": "earlephilhower", "cpu": "cortex-m0plus", - "extra_flags": "-DARDUINO_OLIMEX_RP2040_PICO30_2MB -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", + "extra_flags": "-DARDUINO_OLIMEX_RP2040_PICO30 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", "f_cpu": "133000000L", "hwids": [ [ @@ -22,7 +22,7 @@ ] ], "mcu": "rp2040", - "variant": "olimex_rp2040pico30_2mb" + "variant": "olimex_rp2040pico30" }, "debug": { "jlink_device": "RP2040_M0_0", @@ -30,9 +30,10 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], - "name": "RP2040-Pico30 2MB", + "name": "RP2040-Pico30", "upload": { "maximum_ram_size": 262144, "maximum_size": 2097152, diff --git a/tools/json/pimoroni_pga2040.json b/tools/json/pimoroni_pga2040.json index 6106dc97e..773df0548 100644 --- a/tools/json/pimoroni_pga2040.json +++ b/tools/json/pimoroni_pga2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "PGA2040", "upload": { diff --git a/tools/json/pimoroni_pga2350.json b/tools/json/pimoroni_pga2350.json index 2e8c82ed7..4081b8daf 100644 --- a/tools/json/pimoroni_pga2350.json +++ b/tools/json/pimoroni_pga2350.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "PGA2350", "upload": { diff --git a/tools/json/pimoroni_pico_plus_2.json b/tools/json/pimoroni_pico_plus_2.json index 0c9fe6523..7c5ab7822 100644 --- a/tools/json/pimoroni_pico_plus_2.json +++ b/tools/json/pimoroni_pico_plus_2.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "PicoPlus2", "upload": { diff --git a/tools/json/pimoroni_pico_plus_2w.json b/tools/json/pimoroni_pico_plus_2w.json index dcc317102..b4dd7637d 100644 --- a/tools/json/pimoroni_pico_plus_2w.json +++ b/tools/json/pimoroni_pico_plus_2w.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "PicoPlus2W", "upload": { diff --git a/tools/json/pimoroni_plasma2040.json b/tools/json/pimoroni_plasma2040.json index 672aa54ce..cc13e0b86 100644 --- a/tools/json/pimoroni_plasma2040.json +++ b/tools/json/pimoroni_plasma2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Plasma2040", "upload": { diff --git a/tools/json/pimoroni_plasma2350.json b/tools/json/pimoroni_plasma2350.json index de15346d0..ae63b8f4f 100644 --- a/tools/json/pimoroni_plasma2350.json +++ b/tools/json/pimoroni_plasma2350.json @@ -9,7 +9,7 @@ }, "core": "earlephilhower", "cpu": "cortex-m33", - "extra_flags": "-DARDUINO_PIMORONI_PLASMA2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ", + "extra_flags": "-DARDUINO_PIMORONI_PLASMA2350 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ", "f_cpu": "150000000L", "hwids": [ [ @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Plasma2350", "upload": { diff --git a/tools/json/pimoroni_servo2040.json b/tools/json/pimoroni_servo2040.json new file mode 100644 index 000000000..bd5238793 --- /dev/null +++ b/tools/json/pimoroni_servo2040.json @@ -0,0 +1,56 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "boot2_w25q080_2_padded_checksum.S", + "usb_vid": "0x2E8A", + "usb_pid": "0x10A5" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m0plus", + "extra_flags": "-DARDUINO_PIMORONI_SERVO2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ", + "f_cpu": "133000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x2E8A", + "0x10A5" + ] + ], + "mcu": "rp2040", + "variant": "pimoroni_servo2040" + }, + "debug": { + "jlink_device": "RP2040_M0_0", + "openocd_target": "rp2040.cfg", + "svd_path": "rp2040.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "Servo2040", + "upload": { + "maximum_ram_size": 262144, + "maximum_size": 2097152, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Pimoroni" +} \ No newline at end of file diff --git a/tools/json/pimoroni_tiny2040.json b/tools/json/pimoroni_tiny2040.json index 0ac852ac2..54cc422ce 100644 --- a/tools/json/pimoroni_tiny2040.json +++ b/tools/json/pimoroni_tiny2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Tiny2040", "upload": { diff --git a/tools/json/pimoroni_tiny2350.json b/tools/json/pimoroni_tiny2350.json index fa926e7c4..a5c28d436 100644 --- a/tools/json/pimoroni_tiny2350.json +++ b/tools/json/pimoroni_tiny2350.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Tiny2350", "upload": { diff --git a/tools/json/pintronix_pinmax.json b/tools/json/pintronix_pinmax.json index 32d97050c..4e40b45db 100644 --- a/tools/json/pintronix_pinmax.json +++ b/tools/json/pintronix_pinmax.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "PinMax", "upload": { diff --git a/tools/json/rakwireless_rak11300.json b/tools/json/rakwireless_rak11300.json index 96f7570d4..424e6bca6 100644 --- a/tools/json/rakwireless_rak11300.json +++ b/tools/json/rakwireless_rak11300.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RAK11300", "upload": { diff --git a/tools/json/redscorp_rp2040_eins.json b/tools/json/redscorp_rp2040_eins.json index f6a707478..188101869 100644 --- a/tools/json/redscorp_rp2040_eins.json +++ b/tools/json/redscorp_rp2040_eins.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040-Eins", "upload": { diff --git a/tools/json/redscorp_rp2040_promini.json b/tools/json/redscorp_rp2040_promini.json index 6d232714f..5d97ca792 100644 --- a/tools/json/redscorp_rp2040_promini.json +++ b/tools/json/redscorp_rp2040_promini.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040-ProMini", "upload": { diff --git a/tools/json/rpipico.json b/tools/json/rpipico.json index bd1fd84f2..fd43e88b5 100644 --- a/tools/json/rpipico.json +++ b/tools/json/rpipico.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Pico", "upload": { diff --git a/tools/json/rpipico2.json b/tools/json/rpipico2.json index b74f09400..84641adaf 100644 --- a/tools/json/rpipico2.json +++ b/tools/json/rpipico2.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Pico 2", "upload": { diff --git a/tools/json/rpipico2w.json b/tools/json/rpipico2w.json index bb5da90d9..1b6d96041 100644 --- a/tools/json/rpipico2w.json +++ b/tools/json/rpipico2w.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Pico 2W", "upload": { diff --git a/tools/json/rpipicow.json b/tools/json/rpipicow.json index c136fc4da..119cbfd62 100644 --- a/tools/json/rpipicow.json +++ b/tools/json/rpipicow.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Pico W", "upload": { diff --git a/tools/json/sea_picro.json b/tools/json/sea_picro.json index 2169ea141..1dd67237c 100644 --- a/tools/json/sea_picro.json +++ b/tools/json/sea_picro.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Sea-Picro", "upload": { diff --git a/tools/json/seeed_indicator_rp2040.json b/tools/json/seeed_indicator_rp2040.json index bc9e46a55..22dd1d904 100644 --- a/tools/json/seeed_indicator_rp2040.json +++ b/tools/json/seeed_indicator_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "INDICATOR RP2040", "upload": { diff --git a/tools/json/seeed_xiao_rp2040.json b/tools/json/seeed_xiao_rp2040.json index 8a110f135..071fbb2f2 100644 --- a/tools/json/seeed_xiao_rp2040.json +++ b/tools/json/seeed_xiao_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "XIAO RP2040", "upload": { diff --git a/tools/json/seeed_xiao_rp2350.json b/tools/json/seeed_xiao_rp2350.json index 821278263..44492b388 100644 --- a/tools/json/seeed_xiao_rp2350.json +++ b/tools/json/seeed_xiao_rp2350.json @@ -30,12 +30,13 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "XIAO RP2350", "upload": { "maximum_ram_size": 524288, - "maximum_size": 16777216, + "maximum_size": 2097152, "require_upload_port": true, "native_usb": true, "use_1200bps_touch": true, @@ -48,8 +49,7 @@ "raspberrypi-swd", "picotool", "picoprobe" - ], - "psram_length": 8388608 + ] }, "url": "https://www.seeedstudio.com/Seeed-XIAO-RP2350-p-5944.html", "vendor": "Seeed" diff --git a/tools/json/silicognition_rp2040_shim.json b/tools/json/silicognition_rp2040_shim.json index 218a88871..0232be268 100644 --- a/tools/json/silicognition_rp2040_shim.json +++ b/tools/json/silicognition_rp2040_shim.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040-Shim", "upload": { diff --git a/tools/json/solderparty_rp2040_stamp.json b/tools/json/solderparty_rp2040_stamp.json index 8f893ac80..d322b81fb 100644 --- a/tools/json/solderparty_rp2040_stamp.json +++ b/tools/json/solderparty_rp2040_stamp.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 Stamp", "upload": { diff --git a/tools/json/solderparty_rp2350_stamp.json b/tools/json/solderparty_rp2350_stamp.json index 1c2cb9ab9..32d92b481 100644 --- a/tools/json/solderparty_rp2350_stamp.json +++ b/tools/json/solderparty_rp2350_stamp.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2350 Stamp", "upload": { diff --git a/tools/json/solderparty_rp2350_stamp_xl.json b/tools/json/solderparty_rp2350_stamp_xl.json index cb7361e43..67716b3eb 100644 --- a/tools/json/solderparty_rp2350_stamp_xl.json +++ b/tools/json/solderparty_rp2350_stamp_xl.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2350 Stamp XL", "upload": { diff --git a/tools/json/sparkfun_iotnode_lorawanrp2350.json b/tools/json/sparkfun_iotnode_lorawanrp2350.json new file mode 100644 index 000000000..3f35a6361 --- /dev/null +++ b/tools/json/sparkfun_iotnode_lorawanrp2350.json @@ -0,0 +1,57 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x1B4F", + "usb_pid": "0x0044" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_SPARKFUN_IOTNODE_LORAWAN_RP2350 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x1B4F", + "0x0044" + ] + ], + "mcu": "rp2350", + "variant": "sparkfun_iotnode_lorawanrp2350" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "IoT Node LoRaWAN", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 16777216, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ], + "psram_length": 8388608 + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "SparkFun" +} \ No newline at end of file diff --git a/tools/json/sparkfun_iotredboard_rp2350.json b/tools/json/sparkfun_iotredboard_rp2350.json new file mode 100644 index 000000000..fcf9e93e0 --- /dev/null +++ b/tools/json/sparkfun_iotredboard_rp2350.json @@ -0,0 +1,57 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x1B4F", + "usb_pid": "0x0047" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_SPARKFUN_IOTREDBOARD_RP2350 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 -DPICO_CYW43_SUPPORTED=1 -DCYW43_PIN_WL_DYNAMIC=1", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x1B4F", + "0x0047" + ] + ], + "mcu": "rp2350", + "variant": "sparkfun_iotredboard_rp2350" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "IoT RedBoard RP2350", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 16777216, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ], + "psram_length": 8388608 + }, + "url": "https://www.sparkfun.com/sparkfun-iot-redboard-rp2350.html", + "vendor": "SparkFun" +} \ No newline at end of file diff --git a/tools/json/sparkfun_micromodrp2040.json b/tools/json/sparkfun_micromodrp2040.json index 383e8a8a9..dd0ef7589 100644 --- a/tools/json/sparkfun_micromodrp2040.json +++ b/tools/json/sparkfun_micromodrp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "MicroMod RP2040", "upload": { diff --git a/tools/json/sparkfun_promicrorp2040.json b/tools/json/sparkfun_promicrorp2040.json index 5aa83f36d..fa6e3d73b 100644 --- a/tools/json/sparkfun_promicrorp2040.json +++ b/tools/json/sparkfun_promicrorp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "ProMicro RP2040", "upload": { diff --git a/tools/json/sparkfun_promicrorp2350.json b/tools/json/sparkfun_promicrorp2350.json index d54f14b95..c36be6909 100644 --- a/tools/json/sparkfun_promicrorp2350.json +++ b/tools/json/sparkfun_promicrorp2350.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "ProMicro RP2350", "upload": { diff --git a/tools/json/sparkfun_thingplusrp2040.json b/tools/json/sparkfun_thingplusrp2040.json index 1858afe9a..f25781c6b 100644 --- a/tools/json/sparkfun_thingplusrp2040.json +++ b/tools/json/sparkfun_thingplusrp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Thing Plus RP2040", "upload": { diff --git a/tools/json/sparkfun_thingplusrp2350.json b/tools/json/sparkfun_thingplusrp2350.json index 7eb864bc1..1455b61c9 100644 --- a/tools/json/sparkfun_thingplusrp2350.json +++ b/tools/json/sparkfun_thingplusrp2350.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Thing Plus RP2350", "upload": { diff --git a/tools/json/sparkfun_xrp_controller.json b/tools/json/sparkfun_xrp_controller.json new file mode 100644 index 000000000..c385a9681 --- /dev/null +++ b/tools/json/sparkfun_xrp_controller.json @@ -0,0 +1,57 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x1B4F", + "usb_pid": "0x0046" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_SPARKFUN_XRP_CONTROLLER -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 -DPICO_CYW43_SUPPORTED=1 -DCYW43_PIN_WL_DYNAMIC=1", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x1B4F", + "0x0046" + ] + ], + "mcu": "rp2350", + "variant": "sparkfun_xrp_controller" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "XRP Controller", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 16777216, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ], + "psram_length": 8388608 + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "SparkFun" +} \ No newline at end of file diff --git a/tools/json/sparkfun_xrp_controller_beta.json b/tools/json/sparkfun_xrp_controller_beta.json new file mode 100644 index 000000000..8ad1318ec --- /dev/null +++ b/tools/json/sparkfun_xrp_controller_beta.json @@ -0,0 +1,56 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "boot2_w25q080_2_padded_checksum.S", + "usb_vid": "0x1B4F", + "usb_pid": "0x0045" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m0plus", + "extra_flags": "-DARDUINO_SPARKFUN_XRP_CONTROLLER_BETA -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 -DPICO_CYW43_SUPPORTED=1 -DCYW43_PIN_WL_DYNAMIC=1", + "f_cpu": "133000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x1B4F", + "0x0045" + ] + ], + "mcu": "rp2040", + "variant": "sparkfun_xrp_controller_beta" + }, + "debug": { + "jlink_device": "RP2040_M0_0", + "openocd_target": "rp2040.cfg", + "svd_path": "rp2040.svd" + }, + "frameworks": [ + "arduino", + "picosdk" + ], + "name": "XRP Controller (Beta)", + "upload": { + "maximum_ram_size": 262144, + "maximum_size": 2097152, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "SparkFun" +} \ No newline at end of file diff --git a/tools/json/upesy_rp2040_devkit.json b/tools/json/upesy_rp2040_devkit.json index 9b5b10ec2..ae00620af 100644 --- a/tools/json/upesy_rp2040_devkit.json +++ b/tools/json/upesy_rp2040_devkit.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 DevKit", "upload": { diff --git a/tools/json/vccgnd_yd_rp2040.json b/tools/json/vccgnd_yd_rp2040.json index ac0cb6a9f..ffd6bbc81 100644 --- a/tools/json/vccgnd_yd_rp2040.json +++ b/tools/json/vccgnd_yd_rp2040.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "YD RP2040", "upload": { diff --git a/tools/json/viyalab_mizu.json b/tools/json/viyalab_mizu.json index e554cb965..6e325ad69 100644 --- a/tools/json/viyalab_mizu.json +++ b/tools/json/viyalab_mizu.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "Mizu RP2040", "upload": { diff --git a/tools/json/waveshare_rp2040_lcd_0_96.json b/tools/json/waveshare_rp2040_lcd_0_96.json index 0e77a90f8..10bcac4f0 100644 --- a/tools/json/waveshare_rp2040_lcd_0_96.json +++ b/tools/json/waveshare_rp2040_lcd_0_96.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 LCD 0.96", "upload": { diff --git a/tools/json/waveshare_rp2040_lcd_1_28.json b/tools/json/waveshare_rp2040_lcd_1_28.json index 7d16ec015..2025b1ba5 100644 --- a/tools/json/waveshare_rp2040_lcd_1_28.json +++ b/tools/json/waveshare_rp2040_lcd_1_28.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 LCD 1.28", "upload": { diff --git a/tools/json/waveshare_rp2040_matrix.json b/tools/json/waveshare_rp2040_matrix.json index b4796dac5..19549683d 100644 --- a/tools/json/waveshare_rp2040_matrix.json +++ b/tools/json/waveshare_rp2040_matrix.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 Matrix", "upload": { diff --git a/tools/json/waveshare_rp2040_one.json b/tools/json/waveshare_rp2040_one.json index cedcecc2a..a0a5806f2 100644 --- a/tools/json/waveshare_rp2040_one.json +++ b/tools/json/waveshare_rp2040_one.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 One", "upload": { diff --git a/tools/json/waveshare_rp2040_pizero.json b/tools/json/waveshare_rp2040_pizero.json index 6c712b4db..b984dd261 100644 --- a/tools/json/waveshare_rp2040_pizero.json +++ b/tools/json/waveshare_rp2040_pizero.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 PiZero", "upload": { diff --git a/tools/json/waveshare_rp2040_plus_16mb.json b/tools/json/waveshare_rp2040_plus_16mb.json index f4506d187..037f9bf97 100644 --- a/tools/json/waveshare_rp2040_plus_16mb.json +++ b/tools/json/waveshare_rp2040_plus_16mb.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 Plus 16MB", "upload": { diff --git a/tools/json/waveshare_rp2040_plus_4mb.json b/tools/json/waveshare_rp2040_plus_4mb.json index 5cdd8cb88..5addd9555 100644 --- a/tools/json/waveshare_rp2040_plus_4mb.json +++ b/tools/json/waveshare_rp2040_plus_4mb.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 Plus 4MB", "upload": { diff --git a/tools/json/waveshare_rp2040_zero.json b/tools/json/waveshare_rp2040_zero.json index d235113ea..f211f85a7 100644 --- a/tools/json/waveshare_rp2040_zero.json +++ b/tools/json/waveshare_rp2040_zero.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "RP2040 Zero", "upload": { diff --git a/tools/json/wiznet_5100s_evb_pico.json b/tools/json/wiznet_5100s_evb_pico.json index 18feabde7..a871c579f 100644 --- a/tools/json/wiznet_5100s_evb_pico.json +++ b/tools/json/wiznet_5100s_evb_pico.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "W5100S-EVB-Pico", "upload": { diff --git a/tools/json/wiznet_5100s_evb_pico2.json b/tools/json/wiznet_5100s_evb_pico2.json index 706540aec..501151ff8 100644 --- a/tools/json/wiznet_5100s_evb_pico2.json +++ b/tools/json/wiznet_5100s_evb_pico2.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "W5100S-EVB-Pico2", "upload": { diff --git a/tools/json/wiznet_5500_evb_pico.json b/tools/json/wiznet_5500_evb_pico.json index 8acd50ee3..7037c82b1 100644 --- a/tools/json/wiznet_5500_evb_pico.json +++ b/tools/json/wiznet_5500_evb_pico.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "W5500-EVB-Pico", "upload": { diff --git a/tools/json/wiznet_5500_evb_pico2.json b/tools/json/wiznet_5500_evb_pico2.json index e3d8b2615..a35473266 100644 --- a/tools/json/wiznet_5500_evb_pico2.json +++ b/tools/json/wiznet_5500_evb_pico2.json @@ -30,7 +30,8 @@ "svd_path": "rp2350.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "W5500-EVB-Pico2", "upload": { diff --git a/tools/json/wiznet_55rp20_evb_pico.json b/tools/json/wiznet_55rp20_evb_pico.json index 7f3426396..727c0f2bf 100644 --- a/tools/json/wiznet_55rp20_evb_pico.json +++ b/tools/json/wiznet_55rp20_evb_pico.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "W55RP20-EVB-Pico", "upload": { diff --git a/tools/json/wiznet_wizfi360_evb_pico.json b/tools/json/wiznet_wizfi360_evb_pico.json index d5b4bae3a..f25b44660 100644 --- a/tools/json/wiznet_wizfi360_evb_pico.json +++ b/tools/json/wiznet_wizfi360_evb_pico.json @@ -30,7 +30,8 @@ "svd_path": "rp2040.svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": "WizFi360-EVB-Pico", "upload": { diff --git a/tools/libpico/CMakeLists.txt b/tools/libpico/CMakeLists.txt index 87c7f601a..0e498d531 100644 --- a/tools/libpico/CMakeLists.txt +++ b/tools/libpico/CMakeLists.txt @@ -310,13 +310,19 @@ target_link_libraries(ipv4-ipv6-bt-big-${cpu} ${picow_bt_link_libraries} ) +foreach(tgt ipv4 ipv4-ipv6 ipv4-big ipv4-ipv6-big ipv4-bt ipv4-ipv6-bt ipv4-bt-big ipv4-ipv6-bt-big) + add_custom_command(TARGET ${tgt}-${cpu} POST_BUILD + COMMAND arm-none-eabi-ar d lib${tgt}-${cpu}.a atomic.c.o bit_ops_aeabi.S.o boot_lock.c.o bootrom.c.o bootrom_lock.c.o claim.c.o clocks.c.o critical_section.c.o crt0.S.o datetime.c.o divider_hardware.S.o divider.S.o dma.c.o double_aeabi_rp2040.S.o double_init_rom_rp2040.c.o double_math.c.o double_v1_rom_shim_rp2040.S.o exception.c.o flash.c.o flash.c.o float_aeabi_rp2040.S.o float_init_rom_rp2040.c.o float_math.c.o float_v1_rom_shim_rp2040.S.o gpio.c.o irq.c.o irq_handler_chain.S.o lock_core.c.o malloc.c.o mem_ops_aeabi.S.o mutex.c.o panic.c.o pheap.c.o pico_int64_ops_aeabi.S.o pio.c.o platform.c.o pll.c.o printf.c.o queue.c.o rand.c.o runtime.c.o runtime_init_clocks.c.o runtime_init.c.o runtime_init_stack_guard.c.o sem.c.o standard_binary_info.c.o sync.c.o sync_spin_lock.c.o ticks.c.o time.c.o timeout_helper.c.o timer.c.o uart.c.o unique_id.c.o vreg.c.o watchdog.c.o xip_cache.c.o xosc.c.o + ) +endforeach() foreach(tgt pico ipv4 ipv4-ipv6 ipv4-big ipv4-ipv6-big ipv4-bt ipv4-ipv6-bt ipv4-bt-big ipv4-ipv6-bt-big) add_custom_command(TARGET ${tgt}-${cpu} POST_BUILD - COMMAND arm-none-eabi-ar d lib${tgt}-${cpu}.a stdio.c.obj stdio_uart.c.obj stdio_usb.c.obj stdio_usb_descriptors.c.obj pico_malloc.c.obj newlib_interface.c.obj - COMMAND arm-none-eabi-ar d lib${tgt}-${cpu}.a btstack_flash_bank.c.obj # Need to override with our own implementation + COMMAND arm-none-eabi-ar d lib${tgt}-${cpu}.a pico_malloc.c.o newlib_interface.c.o stdlib.c.o stdio.c.o stdio_uart.c.o new_delete.cpp.o + COMMAND arm-none-eabi-ar d lib${tgt}-${cpu}.a btstack_flash_bank.c.o # Need to override with our own implementation COMMAND cp lib${tgt}-${cpu}.a ../../../lib/${cpu}/lib${tgt}.a ) endforeach() + add_custom_command(TARGET pico-${cpu} POST_BUILD COMMAND mkdir -p ../../../include/${cpu}/pico_base/pico COMMAND cp ./generated/pico_base/pico/version.h ../../../include/${cpu}/pico_base/pico/. diff --git a/tools/makeboards.py b/tools/makeboards.py index 12be76360..42a2ccb05 100755 --- a/tools/makeboards.py +++ b/tools/makeboards.py @@ -39,7 +39,7 @@ def BuildDebugLevel(name): def BuildFreq(name, defmhz): out = 0 - for f in [ defmhz, 50, 100, 120, 125, 128, 133, 150, 175, 200, 225, 240, 250, 275, 300]: + for f in [ defmhz, 50, 100, 120, 125, 128, 133, 150, 176, 200, 225, 240, 250, 276, 300]: warn = "" if f > defmhz: warn = " (Overclock)" if (out == 1) and (f == defmhz): @@ -85,7 +85,7 @@ def BuildPSRAMFreq(name): print("%s.menu.psramfreq.freq%d.build.psram_freq=-DRP2350_PSRAM_MAX_SCK_HZ=%d" % (name, s, s * 1000000)) def BuildRP2350Variant(name): - for l in [ ("RP2350A", "-DPICO_RP2350A=1"), ("RP2530B", "-DPICO_RP2350B=1") ]: + for l in [ ("RP2350A", "-D__PICO_RP2350A=1"), ("RP2530B", "-D__PICO_RP2350A=0") ]: print("%s.menu.variantchip.%s=%s" % (name, l[0], l[0])) print("%s.menu.variantchip.%s.build.variantdefines=%s" % (name, l[0], l[1])) @@ -112,7 +112,7 @@ def BuildStackProtect(name): print("%s.menu.stackprotect.Disabled=Disabled" % (name)) print("%s.menu.stackprotect.Disabled.build.flags.stackprotect=" % (name)) print("%s.menu.stackprotect.Enabled=Enabled" % (name)) - print("%s.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector" % (name)) + print("%s.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector-all" % (name)) def BuildExceptions(name): print("%s.menu.exceptions.Disabled=Disabled" % (name)) @@ -313,7 +313,8 @@ def BuildWifiType(name): print("%s.menu.espwifitype.esp_hosted.build.espwifitype=-DESPHOSTSPI=SPI1" % (name)) def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine, flashsizemb, psramsize, boot2, extra = None, board_url = None): - fssizelist = [ 0, 64 * 1024, 128 * 1024, 256 * 1024, 512 * 1024 ] + smallfs = [ 0, 64 * 1024, 128 * 1024, 256 * 1024, 512 * 1024 ] + fssizelist = list(smallfs) for i in range(1, flashsizemb): fssizelist.append(i * 1024 * 1024) if chip == "rp2040": @@ -329,17 +330,21 @@ def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine, raise Exception("Unknown board type " + str(chip)); BuildHeader(name, chip, tup, opts, vendor_name, product_name, vid, pid, pwr, boarddefine, name, flashsizemb * 1024 * 1024, psramsize, boot2, extra) if (name == "generic") or (name == "generic_rp2350") or (name == "vccgnd_yd_rp2040"): - BuildFlashMenu(name, chip, 2*1024*1024, [0, 1*1024*1024]) + smfs = [ 0, 64 * 1024, 128 * 1024, 256 * 1024, 512 * 1024 ] + BuildFlashMenu(name, chip, 2*1024*1024, [*smallfs, 1024 * 1024]) BuildFlashMenu(name, chip, 4*1024*1024, [0, 3*1024*1024, 2*1024*1024]) BuildFlashMenu(name, chip, 8*1024*1024, [0, 7*1024*1024, 4*1024*1024, 2*1024*1024]) BuildFlashMenu(name, chip, 16*1024*1024, [0, 15*1024*1024, 14*1024*1024, 12*1024*1024, 8*1024*1024, 4*1024*1024, 2*1024*1024]) elif name == "pimoroni_tiny2040": - BuildFlashMenu(name, chip, 2*1024*1024, fssizelist) + BuildFlashMenu(name, chip, 2*1024*1024, [*smallfs, 1024 * 1024]) BuildFlashMenu(name, chip, 8*1024*1024, [0, 7*1024*1024, 4*1024*1024, 2*1024*1024]) elif name == "akana_r1": - BuildFlashMenu(name, chip, 2*1024*1024, [0, 1*1024*1024]) + BuildFlashMenu(name, chip, 2*1024*1024, [*smallfs, 1024 * 1024]) BuildFlashMenu(name, chip, 8*1024*1024, [0, 7*1024*1024, 4*1024*1024, 2*1024*1024]) BuildFlashMenu(name, chip, 16*1024*1024, [0, 15*1024*1024, 14*1024*1024, 12*1024*1024, 8*1024*1024, 4*1024*1024, 2*1024*1024]) + elif name == "olimex_rp2040pico30": + BuildFlashMenu(name, chip, 2*1024*1024, [*smallfs, 1024 * 1024]) + BuildFlashMenu(name, chip, 16*1024*1024, [0, 15*1024*1024, 14*1024*1024, 12*1024*1024, 8*1024*1024, 4*1024*1024, 2*1024*1024]) elif (name == "challenger_2350_wifi6_ble5") or (name == "challenger_2040_wifi_ble"): BuildWifiType(name) BuildCountry(name) @@ -359,11 +364,11 @@ def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine, # Optional, user needs to solder themselves BuildPSRAM(name) BuildPSRAMFreq(name) - elif name == "adafruit_feather_rp2350_hstx": + elif (name == "adafruit_feather_rp2350_hstx") or (name == "adafruit_metro_rp2350"): # Optional, user needs to solder themselves BuildPSRAM(name) else: - BuildFreq(name, 133) + BuildFreq(name, 200) BuildOptimize(name) BuildProfile(name) BuildRTTI(name) @@ -372,7 +377,7 @@ def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine, BuildDebugPort(name) BuildDebugLevel(name) BuildUSBStack(name) - if name in ["rpipicow", "pimoroni_pico_plus_2w", "sparkfun_thingplusrp2350"]: + if name in ["rpipicow", "rpipico2w", "pimoroni_pico_plus_2w", "sparkfun_thingplusrp2350"]: BuildCountry(name) BuildIPBTStack(name) if name == "generic": @@ -446,7 +451,8 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef "svd_path": chip + ".svd" }, "frameworks": [ - "arduino" + "arduino", + "picosdk" ], "name": product_name, "upload": { @@ -514,9 +520,11 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef MakeBoard("adafruit_trinkeyrp2040qt", "rp2040", "Adafruit", "Trinkey RP2040 QT", "0x239a", "0x8109", 250, "ADAFRUIT_TRINKEYQT_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum") MakeBoard("adafruit_macropad2040", "rp2040", "Adafruit", "MacroPad RP2040", "0x239a", "0x8107", 250, "ADAFRUIT_MACROPAD_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum") MakeBoard("adafruit_kb2040", "rp2040", "Adafruit", "KB2040", "0x239a", "0x8105", 250, "ADAFRUIT_KB2040_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum") +MakeBoard("adafruit_feather_rp2350_adalogger", "rp2350", "Adafruit", "Feather RP2350 Adalogger", "0x239a", "0x816D", 250, "ADAFRUIT_FEATHER_RP2350_ADALOGGER", 8, 0, "none") MakeBoard("adafruit_feather_rp2350_hstx", "rp2350", "Adafruit", "Feather RP2350 HSTX", "0x239a", "0x814f", 250, "ADAFRUIT_FEATHER_RP2350_HSTX", 8, 0, "none") MakeBoard("adafruit_floppsy", "rp2040", "Adafruit", "Floppsy", "0x239a", "0x8151", 250, "ADAFRUIT_FLOPPSY_RP2040", 16, 0, "boot2_w25q080_2_padded_checksum") - +MakeBoard("adafruit_metro_rp2350", "rp2350", "Adafruit", "Metro RP2350", "0x239a", "0x814d", 250, "ADAFRUIT_METRO_RP2350", 16, 0, "none") +MakeBoard("adafruit_fruitjam", "rp2350", "Adafruit", "Fruit Jam RP2350", "0x239a", "0x816B", 250, "ADAFRUIT_FRUITJAM_RP2350", 16, 8, "none") # Amken MakeBoard("amken_bunny", "rp2040","Amken","BunnyBoard","0x2770",["0x7303"],250,"AMKEN_BB",128,0,"boot2_w25q128jvxq_4_padded_checksum","","https://www.amken3d.com") MakeBoard("amken_revelop", "rp2040","Amken","Revelop","0x2770",["0x7304"],250,"AMKEN_REVELOP",32,0,"boot2_W25Q32JVxQ_4_padded_checksum","","https://www.amken3d.com") @@ -591,6 +599,10 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef MakeBoard("challenger_2350_wifi6_ble5", "rp2350", "iLabs", "Challenger 2350 WiFi/BLE", "0x2e8a", "0x109a", 500, "CHALLENGER_2350_WIFI_BLE_RP2350", 8, 8, "none") MakeBoard("challenger_2350_bconnect", "rp2350", "iLabs", "Challenger 2350 BConnect", "0x2e8a", "0x109b", 500, "CHALLENGER_2350_BCONNECT_RP2350", 8, 8, "none") +# Makerbase +MakeBoard("mksthr36", "rp2040", "Makerbase", "MKS THR36", "0x2e8a", "0x000a", 250, "MAKERBASE_MKSTHR36", 1, 0, "boot2_w25q080_2_padded_checksum") +MakeBoard("mksthr42", "rp2040", "Makerbase", "MKS THR42", "0x2e8a", "0x000a", 250, "MAKERBASE_MKSTHR42", 1, 0, "boot2_w25q080_2_padded_checksum") + # Melopero MakeBoard("melopero_cookie_rp2040", "rp2040", "Melopero", "Cookie RP2040", "0x2e8a", "0x1011", 250, "MELOPERO_COOKIE_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum") MakeBoard("melopero_shake_rp2040", "rp2040", "Melopero", "Shake RP2040", "0x2e8a", "0x1005", 250, "MELOPERO_SHAKE_RP2040", 16, 0, "boot2_w25q080_2_padded_checksum") @@ -611,8 +623,9 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef MakeBoard("nullbits_bit_c_pro", "rp2040", "nullbits", "Bit-C PRO", "0x2e8a", "0x6e61", 500, "NULLBITS_BIT_C_PRO", 4, 0, "boot2_w25x10cl_4_padded_checksum") # Olimex -MakeBoard("olimex_rp2040pico30_2mb", "rp2040", "Olimex", "RP2040-Pico30 2MB", "0x15ba", "0x0026", 250, "OLIMEX_RP2040_PICO30_2MB", 2, 0, "boot2_w25q080_2_padded_checksum") -MakeBoard("olimex_rp2040pico30_16mb", "rp2040", "Olimex", "RP2040-Pico30 16MB", "0x15ba", "0x0026", 250, "OLIMEX_RP2040_PICO30_16MB", 16, 0, "boot2_w25q080_2_padded_checksum") +MakeBoard("olimex_pico2xl", "rp2350", "Olimex", "Pico2XL", "0x15ba", "0x0026", 250, "OLIMEX_PICO2XL", 2, 0, "none") +MakeBoard("olimex_pico2xxl", "rp2350", "Olimex", "Pico2XXL", "0x15ba", "0x0026", 500, "OLIMEX_PICO2XXL", 16, 8, "none") +MakeBoard("olimex_rp2040pico30", "rp2040", "Olimex", "RP2040-Pico30", "0x15ba", "0x0026", 250, "OLIMEX_RP2040_PICO30", 2, 0, "boot2_w25q080_2_padded_checksum") # Pimoroni MakeBoard("pimoroni_pga2040", "rp2040", "Pimoroni", "PGA2040", "0x2e8a", "0x1008", 250, "PIMORONI_PGA2040", 8, 0, "boot2_w25q64jv_4_padded_checksum") @@ -620,7 +633,8 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef MakeBoard("pimoroni_pico_plus_2", "rp2350", "Pimoroni", "PicoPlus2", "0x2e8a", "0x100a", 500, "PIMORONI_PICO_PLUS_2", 16, 8, "none") MakeBoard("pimoroni_pico_plus_2w", "rp2350", "Pimoroni", "PicoPlus2W", "0x2e8a", "0x100a", 500, "PIMORONI_PICO_PLUS_2W", 16, 8, "none", ["PICO_CYW43_SUPPORTED=1", "CYW43_PIN_WL_DYNAMIC=1"]) MakeBoard("pimoroni_plasma2040", "rp2040", "Pimoroni", "Plasma2040", "0x2e8a", "0x100a", 500, "PIMORONI_PLASMA2040", 2, 0, "boot2_w25q080_2_padded_checksum") -MakeBoard("pimoroni_plasma2350", "rp2350", "Pimoroni", "Plasma2350", "0x2e8a", "0x10a5", 500, "PIMORONI_PLASMA2040", 2, 0, "none") +MakeBoard("pimoroni_plasma2350", "rp2350", "Pimoroni", "Plasma2350", "0x2e8a", "0x10a5", 500, "PIMORONI_PLASMA2350", 2, 0, "none") +MakeBoard("pimoroni_servo2040", "rp2040", "Pimoroni", "Servo2040", "0x2e8a", "0x10a5", 500, "PIMORONI_SERVO2040", 2, 0, "boot2_w25q080_2_padded_checksum") MakeBoard("pimoroni_tiny2040", "rp2040", "Pimoroni", "Tiny2040", "0x2e8a", "0x100a", 500, "PIMORONI_TINY2040", 2, 0, "boot2_w25q64jv_4_padded_checksum") MakeBoard("pimoroni_tiny2350", "rp2350", "Pimoroni", "Tiny2350", "0x2e8a", "0x100b", 500, "PIMORONI_TINY2350", 4, 0, "none") @@ -646,16 +660,20 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef MakeBoard("solderparty_rp2350_stamp_xl", "rp2350", "Solder Party", "RP2350 Stamp XL", "0x1209", "0xa184", 500, "SOLDERPARTY_RP2350_STAMP_XL", 16, 0, "none", None, "https://www.solder.party/docs/rp2350-stamp-xl/") # SparkFun +MakeBoard("sparkfun_iotredboard_rp2350", "rp2350", "SparkFun", "IoT RedBoard RP2350", "0x1b4f", "0x0047", 250, "SPARKFUN_IOTREDBOARD_RP2350", 16, 8, "none", ["PICO_CYW43_SUPPORTED=1", "CYW43_PIN_WL_DYNAMIC=1"], "https://www.sparkfun.com/sparkfun-iot-redboard-rp2350.html") MakeBoard("sparkfun_micromodrp2040", "rp2040", "SparkFun", "MicroMod RP2040", "0x1b4f", "0x0026", 250, "SPARKFUN_MICROMOD_RP2040", 16, 0, "boot2_w25q080_2_padded_checksum") MakeBoard("sparkfun_promicrorp2040", "rp2040", "SparkFun", "ProMicro RP2040", "0x1b4f", "0x0026", 250, "SPARKFUN_PROMICRO_RP2040", 16, 0, "boot2_generic_03h_4_padded_checksum") MakeBoard("sparkfun_promicrorp2350", "rp2350", "SparkFun", "ProMicro RP2350", "0x1b4f", "0x0026", 250, "SPARKFUN_PROMICRO_RP2350", 16, 8, "none") MakeBoard("sparkfun_thingplusrp2040", "rp2040", "SparkFun", "Thing Plus RP2040", "0x1b4f", "0x0026", 250, "SPARKFUN_THINGPLUS_RP2040", 16, 0, "boot2_w25q080_2_padded_checksum") MakeBoard("sparkfun_thingplusrp2350", "rp2350", "SparkFun", "Thing Plus RP2350", "0x1b4f", "0x0038", 250, "SPARKFUN_THINGPLUS_RP2350", 16, 8, "none", ["PICO_CYW43_SUPPORTED=1", "CYW43_PIN_WL_DYNAMIC=1"]) +MakeBoard("sparkfun_iotnode_lorawanrp2350", "rp2350", "SparkFun", "IoT Node LoRaWAN", "0x1b4f", "0x0044", 250, "SPARKFUN_IOTNODE_LORAWAN_RP2350", 16, 8, "none") +MakeBoard("sparkfun_xrp_controller_beta", "rp2040", "SparkFun", "XRP Controller (Beta)", "0x1b4f", "0x0045", 250, "SPARKFUN_XRP_CONTROLLER_BETA", 2, 0, "boot2_w25q080_2_padded_checksum", ["PICO_CYW43_SUPPORTED=1", "CYW43_PIN_WL_DYNAMIC=1"]) +MakeBoard("sparkfun_xrp_controller", "rp2350", "SparkFun", "XRP Controller", "0x1b4f", "0x0046", 250, "SPARKFUN_XRP_CONTROLLER", 16, 8, "none", ["PICO_CYW43_SUPPORTED=1", "CYW43_PIN_WL_DYNAMIC=1"]) # Seeed MakeBoard("seeed_indicator_rp2040", "rp2040", "Seeed", "INDICATOR RP2040", "0x2886", "0x0050", 250, "SEEED_INDICATOR_RP2040", 2, 0, "boot2_w25q080_2_padded_checksum") MakeBoard("seeed_xiao_rp2040", "rp2040", "Seeed", "XIAO RP2040", "0x2e8a", "0x000a", 250, "SEEED_XIAO_RP2040", 2, 0, "boot2_w25q080_2_padded_checksum") -MakeBoard("seeed_xiao_rp2350", "rp2350", "Seeed", "XIAO RP2350", "0x2886", "0x0058", 250, "SEEED_XIAO_RP2350", 16, 8, "none", None, "https://www.seeedstudio.com/Seeed-XIAO-RP2350-p-5944.html") +MakeBoard("seeed_xiao_rp2350", "rp2350", "Seeed", "XIAO RP2350", "0x2886", "0x0058", 250, "SEEED_XIAO_RP2350", 2, 0, "none", None, "https://www.seeedstudio.com/Seeed-XIAO-RP2350-p-5944.html") # Upesy MakeBoard("upesy_rp2040_devkit", "rp2040", "uPesy", "RP2040 DevKit", "0x2e8a", "0x1007", 250, "UPESY_RP2040_DEVKIT", 2, 0, "boot2_w25q080_2_padded_checksum") diff --git a/tools/makepacer.cpp b/tools/makepacer.cpp index 1d75394af..b1248c3ed 100644 --- a/tools/makepacer.cpp +++ b/tools/makepacer.cpp @@ -51,7 +51,7 @@ int main(int argc, char **argv) { (void) argc; (void) argv; int M = 1000000; - int fsys[] = {50*M, 100*M, 120*M, 125*M, 128*M, 133*M, 150*M, 175*M, 200*M, 225*M, 240*M, 250*M, 275*M, 300*M}; + int fsys[] = {50*M, 100*M, 120*M, 125*M, 128*M, 133*M, 150*M, 176*M, 200*M, 225*M, 240*M, 250*M, 276*M, 300*M}; int freq[] = {8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200, 96000, 176400, 192000}; FILE *f = fopen("../libraries/PWMAudio/src/PWMAudioPrecalc.h", "w"); fprintf(f, "// Generated by tools/makepacer.cpp, do not edit\n"); diff --git a/tools/makepio.py b/tools/makepio.py new file mode 100755 index 000000000..f161f2333 --- /dev/null +++ b/tools/makepio.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import os +import subprocess + +PIOASM="system/pioasm/pioasm" + +def recursivepioasm(path): + for root, dirs, files in os.walk(path): + for f in files: + if f.endswith(".pio"): + subprocess.run([PIOASM, "-o", "c-sdk", os.path.join(root, f), os.path.join(root, f) + ".h"]) + print(os.path.join(root, f)) + + +def main(): + recursivepioasm("cores") + recursivepioasm("libraries") + +if __name__ == "__main__": + main() diff --git a/tools/platformio-build.py b/tools/platformio-build.py index 026b9589a..ecc759173 100755 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -225,6 +225,13 @@ def is_pio_build(): "-std=gnu++17", ], + CPPDEFINES=[ + # SdFat definitions required for SDFS + ("FILE_COPY_CONSTRUCTOR_SELECT", "FILE_COPY_CONSTRUCTOR_PUBLIC"), + ("USE_UTF8_LONG_NAMES", "1"), + ("DISABLE_FS_H_WARNING", "1") + ], + CPPPATH=[ os.path.join(FRAMEWORK_DIR, "cores", "rp2040"), os.path.join(FRAMEWORK_DIR, "cores", "rp2040", "api", "deprecated"), diff --git a/tools/pluggable_discovery.py b/tools/pluggable_discovery.py index 51dec16be..f68500eab 100755 --- a/tools/pluggable_discovery.py +++ b/tools/pluggable_discovery.py @@ -5,89 +5,96 @@ import time import threading - toolspath = os.path.dirname(os.path.realpath(__file__)) try: - sys.path.insert(0, os.path.join(toolspath, ".")) # Add pyserial dir to search path + sys.path.insert(0, os.path.join(toolspath, ".")) # Add uf2conv dir to search path import uf2conv # If this fails, we can't continue and will bomb below except ImportError: sys.stderr.write("uf2conv not found next to this tool.\n") sys.exit(1) +scannerStop = threading.Event() +dropDead = False -scannerGo = False +class ScannerDarkly(threading.Thread): + + loopTime = 0.0 # Set to 0 for 1st pass to get immediate response for arduino-cli, then bumped to 2.0 for ongoing checks + + # https://stackoverflow.com/questions/12435211/threading-timer-repeat-function-every-n-seconds + def __init__(self, event): + threading.Thread.__init__(self) + self.stopped = event + + def run(self): + global dropDead + boards = False; + while not self.stopped.wait(self.loopTime): + if self.stopped.is_set() or dropDead: + return + self.loopTime = 2.0 + l = uf2conv.get_drives() + if (len(l) > 0) and not boards: + boards = True + print ("""{ + "eventType": "add", + "port": { + "address": "UF2_Board", + "label": "UF2 Board", + "protocol": "uf2conv", + "protocolLabel": "UF2 Devices", + "properties": { + "mac": "ffffffffffff", + "pid" : "0x2e8a", + "vid" : "0x000a" + } + } + }""", flush=True) + elif (len(l) == 0) and boards: + boards = False + print("""{ + "eventType": "remove", + "port": { + "address": "UF2_Board", + "protocol": "uf2conv" + } + }""", flush = True) -def scanner(): - global scannerGo - scannerGo = True - boards = False - while scannerGo: - l = uf2conv.get_drives() - if (len(l) > 0) and scannerGo and not boards: - boards = True - print ("""{ - "eventType": "add", - "port": { - "address": "UF2_Board", - "label": "UF2 Board", - "protocol": "uf2conv", - "protocolLabel": "UF2 Devices", - "properties": { - "mac": "ffffffffffff", - "pid" : "0x2e8a", - "vid" : "0x000a" - } - } -}""", flush=True) - elif (len(l) == 0) and scannerGo and boards: - boards = False - print("""{ - "eventType": "remove", - "port": { - "address": "UF2_Board", - "protocol": "uf2conv" - } -}""", flush = True) - n = time.time() + 2 - while scannerGo and (time.time() < n): - time.sleep(.1) - scannerGo = True def main(): - global scannerGo - while True: - cmdline = input() - cmd = cmdline.split()[0] - if cmd == "HELLO": - print(""" { + global scannerStop + global dropDead + try: + while True: + cmdline = input() + cmd = cmdline.split()[0] + if cmd == "HELLO": + print(""" { "eventType": "hello", "message": "OK", "protocolVersion": 1 }""", flush = True) - elif cmd == "START": - print("""{ + elif cmd == "START": + print("""{ "eventType": "start", "message": "OK" }""", flush = True); - elif cmd == "STOP": - scannerGo = False - while not scannerGo: - time.sleep(.1) - print("""{ + elif cmd == "STOP": + scannerStop.set() + print("""{ "eventType": "stop", "message": "OK" }""", flush = True) - elif cmd == "QUIT": - scannerGo = False - print("""{ + elif cmd == "QUIT": + scannerStop.set() + print("""{ "eventType": "quit", "message": "OK" }""", flush = True) - return - elif cmd == "LIST": - l = uf2conv.get_drives() - if len(l) > 0: - print ("""{ + return + elif cmd == "LIST": + l = uf2conv.get_drives() + if len(l) > 0: + print ("""{ "eventType": "list", "ports": [ { @@ -103,18 +110,19 @@ def main(): } ] }""", flush=True) - else: - print ("""{ + else: + print ("""{ "eventType": "list", "ports": [ ] }""", flush=True) - elif cmd == "START_SYNC": - print("""{ + elif cmd == "START_SYNC": + print("""{ "eventType": "start_sync", "message": "OK" }""", flush = True) - scannerGo = True - threading.Thread(target = scanner).start() - time.sleep(.5) + thread = ScannerDarkly(scannerStop) + thread.start() + except: + dropDead = True main() diff --git a/variants/adafruit_feather_rp2350_adalogger/pins_arduino.h b/variants/adafruit_feather_rp2350_adalogger/pins_arduino.h new file mode 100644 index 000000000..1f2375e35 --- /dev/null +++ b/variants/adafruit_feather_rp2350_adalogger/pins_arduino.h @@ -0,0 +1,53 @@ +#pragma once + +#define PICO_RP2350A 1 + +// LEDs +#define PIN_LED (7u) + +#define PIN_NEOPIXEL (21u) +#define NUM_NEOPIXEL (1) + +// SD Card connector +#define PIN_CARD_DETECT (13u) +#define PIN_SD_CLK (14u) +#define PIN_SD_CMD_MOSI (15u) +#define PIN_SD_DAT0_MISO (16u) +#define PIN_SD_DAT1 (17u) +#define PIN_SD_DAT2 (18u) +#define PIN_SD_DAT3_CS (19u) + +// UARTs +#define PIN_SERIAL1_TX (0u) +#define PIN_SERIAL1_RX (1u) +#define PIN_SERIAL2_TX (99u) // not pinned out +#define PIN_SERIAL2_RX (99u) + +// SPI +#define PIN_SPI0_MISO (20u) +#define PIN_SPI0_MOSI (23u) +#define PIN_SPI0_SCK (22u) +#define PIN_SPI0_SS (13u) +#define __SPI0_DEVICE spi0 + +// SPI1 for SD card +#define PIN_SPI1_MISO PIN_SD_DAT0_MISO +#define PIN_SPI1_MOSI PIN_SD_CMD_MOSI +#define PIN_SPI1_SCK PIN_SD_CLK +#define PIN_SPI1_SS PIN_SD_DAT3_CS +#define __SPI1_DEVICE spi1 + +// Wire +#define __WIRE0_DEVICE i2c0 +#define PIN_WIRE0_SDA (2u) +#define PIN_WIRE0_SCL (3u) + +#define __WIRE1_DEVICE i2c1 +#define PIN_WIRE1_SDA (31u) // not pinned out +#define PIN_WIRE1_SCL (31u) + +#define SERIAL_HOWMANY (1u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (1u) + +#include "../generic/common.h" diff --git a/variants/adafruit_feather_rp2350_hstx/pins_arduino.h b/variants/adafruit_feather_rp2350_hstx/pins_arduino.h index 7bbb8ae53..30eec2cd5 100644 --- a/variants/adafruit_feather_rp2350_hstx/pins_arduino.h +++ b/variants/adafruit_feather_rp2350_hstx/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + // LEDs #define PIN_LED (7u) @@ -23,8 +25,11 @@ #define PIN_SPI1_SS (31u) // Wire +#define __WIRE0_DEVICE i2c1 #define PIN_WIRE0_SDA (2u) #define PIN_WIRE0_SCL (3u) + +#define __WIRE1_DEVICE i2c0 #define PIN_WIRE1_SDA (31u) // not pinned out #define PIN_WIRE1_SCL (31u) @@ -36,4 +41,14 @@ #define RP2350_PSRAM_CS (8u) #define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000) +// DVI connector +#define PIN_CKN (15u) +#define PIN_CKP (14u) +#define PIN_D0N (19u) +#define PIN_D0P (18u) +#define PIN_D1N (17u) +#define PIN_D1P (16u) +#define PIN_D2N (13u) +#define PIN_D2P (12u) + #include "../generic/common.h" diff --git a/variants/adafruit_fruitjam/pins_arduino.h b/variants/adafruit_fruitjam/pins_arduino.h new file mode 100644 index 000000000..91ea62a9a --- /dev/null +++ b/variants/adafruit_fruitjam/pins_arduino.h @@ -0,0 +1,91 @@ +#pragma once +#define PICO_RP2350A 0 + +// LEDs +#define PIN_LED (29u) + +#define PIN_NEOPIXEL (32u) +#define NUM_NEOPIXEL (5u) + +// 'Boot0' button also on GPIO #0 +#define PIN_BUTTON (0u) +#define PIN_BUTTON1 (4u) +#define PIN_BUTTON2 (5u) + +// USB host connector +#define PIN_USB_HOST_DP (1u) +#define PIN_USB_HOST_DM (2u) +#define PIN_5V_EN (11u) +#define PIN_5V_EN_STATE (1u) + +// SDIO +#define PIN_SD_DETECT (33u) +#define PIN_SD_CLK (34u) +#define PIN_SD_CMD_MOSI (35u) +#define PIN_SD_DAT0_MISO (36u) +#define PIN_SD_DAT1 (37u) +#define PIN_SD_DAT2 (38u) +#define PIN_SD_DAT3_CS (39u) + +// I2S +#define PIN_I2S_DATAOUT (24u) +#define PIN_I2S_WORDSEL (25u) +#define PIN_I2S_BITCLK (26u) +#define PIN_I2S_MCLK (27u) + +#define PIN_PERIPHERAL_RESET (22u) + +#define __PIN_A0 (40u) +#define __PIN_A1 (41u) +#define __PIN_A2 (42u) +#define __PIN_A3 (43u) +#define __PIN_A4 (44u) +#define __PIN_A5 (45u) + +// UARTs +#define PIN_SERIAL1_TX (8u) +#define PIN_SERIAL1_RX (9u) +#define PIN_SERIAL2_TX (99u) // not pinned out +#define PIN_SERIAL2_RX (99u) + +// SPI +#define __SPI1_DEVICE spi1 +#define PIN_SPI1_MISO (28u) +#define PIN_SPI1_MOSI (31u) +#define PIN_SPI1_SCK (30u) +#define PIN_SPI1_SS (46u) + +#define __SPI0_DEVICE spi0 +#define PIN_SPI0_MISO (36u) +#define PIN_SPI0_MOSI (35u) +#define PIN_SPI0_SCK (34u) +#define PIN_SPI0_SS (39u) + +// Wire +#define __WIRE0_DEVICE i2c0 +#define PIN_WIRE0_SDA (20u) +#define PIN_WIRE0_SCL (21u) + +#define __WIRE1_DEVICE i2c1 +#define PIN_WIRE1_SDA (99u) // not pinned out +#define PIN_WIRE1_SCL (99u) + +#define SERIAL_HOWMANY (1u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (1u) + +// PSRAM +#define RP2350_PSRAM_CS (47u) +#define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000) + +// DVI connector +#define PIN_CKN (12u) +#define PIN_CKP (13u) +#define PIN_D0N (14u) +#define PIN_D0P (15u) +#define PIN_D1N (16u) +#define PIN_D1P (17u) +#define PIN_D2N (18u) +#define PIN_D2P (19u) + +#include "../generic/common.h" diff --git a/variants/adafruit_metro_rp2350/pins_arduino.h b/variants/adafruit_metro_rp2350/pins_arduino.h new file mode 100644 index 000000000..8b02adb59 --- /dev/null +++ b/variants/adafruit_metro_rp2350/pins_arduino.h @@ -0,0 +1,83 @@ +#pragma once + +#define PICO_RP2350A 0 // RP2350B + +// LEDs +#define PIN_LED (23u) + +#define PIN_NEOPIXEL (25) +#define NUM_NEOPIXEL (1) + +// 'Boot0' button also on GPIO #24 +#define PIN_BUTTON (24u) + +// USB host connector +#define PIN_USB_HOST_DP (32u) +#define PIN_USB_HOST_DM (33u) +#define PIN_5V_EN (29u) +#define PIN_5V_EN_STATE (1u) + +// SDIO +#define PIN_SD_CLK (34u) +#define PIN_SD_CMD_MOSI (35u) +#define PIN_SD_DAT0_MISO (36u) +#define PIN_SD_DAT1 (37u) +#define PIN_SD_DAT2 (38u) +#define PIN_SD_DAT3_CS (39u) +#define PIN_SD_DETECT (40u) + +#define __PIN_A0 (41u) +#define __PIN_A1 (42u) +#define __PIN_A2 (43u) +#define __PIN_A3 (44u) +#define __PIN_A4 (45u) +#define __PIN_A5 (46u) + +// UARTs +#define PIN_SERIAL1_TX (0u) +#define PIN_SERIAL1_RX (1u) +#define PIN_SERIAL2_TX (99u) // not pinned out +#define PIN_SERIAL2_RX (99u) + +// SPI +#define __SPI0_DEVICE spi1 +#define PIN_SPI1_MISO (36u) +#define PIN_SPI1_MOSI (35u) +#define PIN_SPI1_SCK (34u) +#define PIN_SPI1_SS (39u) + +#define __SPI1_DEVICE spi0 +#define PIN_SPI0_MISO (28u) +#define PIN_SPI0_MOSI (31u) +#define PIN_SPI0_SCK (30u) +#define PIN_SPI0_SS (29u) + +// Wire +#define __WIRE0_DEVICE i2c0 +#define PIN_WIRE0_SDA (20u) +#define PIN_WIRE0_SCL (21u) + +#define __WIRE1_DEVICE i2c1 +#define PIN_WIRE1_SDA (99u) // not pinned out +#define PIN_WIRE1_SCL (99u) + +#define SERIAL_HOWMANY (1u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (1u) + +// PSRAM +#define RP2350_PSRAM_CS (47u) +#define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000) + +// DVI connector +#define PIN_CKN (15u) +#define PIN_CKP (14u) +#define PIN_D0N (19u) +#define PIN_D0P (18u) +#define PIN_D1N (17u) +#define PIN_D1P (16u) +#define PIN_D2N (13u) +#define PIN_D2P (12u) + + +#include "../generic/common.h" diff --git a/variants/challenger_2040_wifi/ChallengerWiFi.cpp b/variants/challenger_2040_wifi/ChallengerWiFi.cpp index 6bd537474..472200bb7 100644 --- a/variants/challenger_2040_wifi/ChallengerWiFi.cpp +++ b/variants/challenger_2040_wifi/ChallengerWiFi.cpp @@ -55,7 +55,7 @@ void Challenger2040WiFiClass::flashReset() { // Prepare ESP for flashing // 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 + int timeout = 20; // Approx max 2 sec _serial->setTimeout(100); String rdy = _serial->readStringUntil('\n'); diff --git a/variants/challenger_2040_wifi6_ble/ChallengerWiFi.cpp b/variants/challenger_2040_wifi6_ble/ChallengerWiFi.cpp index cf610a216..de1b96358 100644 --- a/variants/challenger_2040_wifi6_ble/ChallengerWiFi.cpp +++ b/variants/challenger_2040_wifi6_ble/ChallengerWiFi.cpp @@ -62,7 +62,7 @@ void Challenger2040WiFiClass::flashReset() { // Prepare ESP for flashing // 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 + int timeout = 20; // Approx max 2 sec _serial->setTimeout(100); String rdy = _serial->readStringUntil('\n'); diff --git a/variants/challenger_2040_wifi_ble/ChallengerWiFi.cpp b/variants/challenger_2040_wifi_ble/ChallengerWiFi.cpp index 6bd537474..472200bb7 100644 --- a/variants/challenger_2040_wifi_ble/ChallengerWiFi.cpp +++ b/variants/challenger_2040_wifi_ble/ChallengerWiFi.cpp @@ -55,7 +55,7 @@ void Challenger2040WiFiClass::flashReset() { // Prepare ESP for flashing // 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 + int timeout = 20; // Approx max 2 sec _serial->setTimeout(100); String rdy = _serial->readStringUntil('\n'); diff --git a/variants/challenger_2350_bconnect/pins_arduino.h b/variants/challenger_2350_bconnect/pins_arduino.h index f11dc271e..a7c79ff94 100644 --- a/variants/challenger_2350_bconnect/pins_arduino.h +++ b/variants/challenger_2350_bconnect/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + #define PINS_COUNT (30u) #define NUM_DIGITAL_PINS (30u) #define NUM_ANALOG_INPUTS (4u) diff --git a/variants/challenger_2350_wifi6_ble5/ChallengerWiFi.cpp b/variants/challenger_2350_wifi6_ble5/ChallengerWiFi.cpp index 6bd537474..472200bb7 100644 --- a/variants/challenger_2350_wifi6_ble5/ChallengerWiFi.cpp +++ b/variants/challenger_2350_wifi6_ble5/ChallengerWiFi.cpp @@ -55,7 +55,7 @@ void Challenger2040WiFiClass::flashReset() { // Prepare ESP for flashing // 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 + int timeout = 20; // Approx max 2 sec _serial->setTimeout(100); String rdy = _serial->readStringUntil('\n'); diff --git a/variants/challenger_2350_wifi6_ble5/pins_arduino.h b/variants/challenger_2350_wifi6_ble5/pins_arduino.h index e26082341..08e5c1c09 100644 --- a/variants/challenger_2350_wifi6_ble5/pins_arduino.h +++ b/variants/challenger_2350_wifi6_ble5/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + #define PINS_COUNT (30u) #define NUM_DIGITAL_PINS (30u) #define NUM_ANALOG_INPUTS (4u) diff --git a/variants/challenger_nb_2040_wifi/ChallengerWiFi.cpp b/variants/challenger_nb_2040_wifi/ChallengerWiFi.cpp index 6bd537474..472200bb7 100644 --- a/variants/challenger_nb_2040_wifi/ChallengerWiFi.cpp +++ b/variants/challenger_nb_2040_wifi/ChallengerWiFi.cpp @@ -55,7 +55,7 @@ void Challenger2040WiFiClass::flashReset() { // Prepare ESP for flashing // 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 + int timeout = 20; // Approx max 2 sec _serial->setTimeout(100); String rdy = _serial->readStringUntil('\n'); diff --git a/variants/connectivity_2040_lte_wifi_ble/Connectivity.cpp b/variants/connectivity_2040_lte_wifi_ble/Connectivity.cpp index d1247f00b..77f940efe 100644 --- a/variants/connectivity_2040_lte_wifi_ble/Connectivity.cpp +++ b/variants/connectivity_2040_lte_wifi_ble/Connectivity.cpp @@ -195,7 +195,7 @@ void iLabsConnectivityClass::flashEspReset() { // Prepare ESP for flashing // after a sw or hw reset have been performed to ensure that the AT // interpreter is up and running. bool iLabsConnectivityClass::waitForEspReady() { - int timeout = 20; // Aprox max 2 sec + int timeout = 20; // Approx max 2 sec _espSerial->setTimeout(100); String rdy = _espSerial->readStringUntil('\n'); diff --git a/variants/cytron_iriv_io_controller/pins_arduino.h b/variants/cytron_iriv_io_controller/pins_arduino.h index 15f8baf2b..92a7554ed 100644 --- a/variants/cytron_iriv_io_controller/pins_arduino.h +++ b/variants/cytron_iriv_io_controller/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + // LEDs #define PIN_LED (29u) @@ -62,8 +64,13 @@ #define PIN_SPI0_SS (21u) // Wire -#define PIN_WIRE0_SDA (16u) -#define PIN_WIRE0_SCL (17u) +#define __WIRE0_DEVICE i2c0 +#define PIN_WIRE0_SDA (16u) +#define PIN_WIRE0_SCL (17u) + +#define __WIRE1_DEVICE i2c1 +#define PIN_WIRE1_SDA (31u) // Not used. +#define PIN_WIRE1_SCL (31u) // Not used. diff --git a/variants/cytron_motion_2350_pro/pins_arduino.h b/variants/cytron_motion_2350_pro/pins_arduino.h index d93b5ffff..2debe85f0 100644 --- a/variants/cytron_motion_2350_pro/pins_arduino.h +++ b/variants/cytron_motion_2350_pro/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + // LEDs #define PIN_LED (2u) diff --git a/variants/datanoisetv_picoadk_v2/pins_arduino.h b/variants/datanoisetv_picoadk_v2/pins_arduino.h index 5ecab7d13..375deaa7d 100644 --- a/variants/datanoisetv_picoadk_v2/pins_arduino.h +++ b/variants/datanoisetv_picoadk_v2/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + // DatanoiseTV PicoADK v2 - Audio Development Kit with RP2350A // https://github.com/DatanoiseTV/PicoDSP-Hardware diff --git a/variants/generic/common.h b/variants/generic/common.h index 8227962b3..f732ad678 100644 --- a/variants/generic/common.h +++ b/variants/generic/common.h @@ -164,7 +164,7 @@ static const uint8_t D29 = __PIN_D29; static const uint8_t D29 = (29u); #endif -#if !defined(PICO_RP2350B) +#if defined(PICO_RP2040) || (defined(PICO_RP2350) && PICO_RP2350A) #ifdef __PIN_A0 static const uint8_t A0 = __PIN_A0; @@ -190,7 +190,7 @@ static const uint8_t A3 = __PIN_A3; static const uint8_t A3 = (29u); #endif -#elif defined(PICO_RP2350B) +#elif defined(PICO_RP2350) && !PICO_RP2350A // RP2350B #ifdef __PIN_D30 static const uint8_t D30 = __PIN_D30; diff --git a/variants/generic_rp2350/pins_arduino.h b/variants/generic_rp2350/pins_arduino.h index bdd0baf76..7c147d168 100644 --- a/variants/generic_rp2350/pins_arduino.h +++ b/variants/generic_rp2350/pins_arduino.h @@ -3,6 +3,7 @@ // Pin definitions taken from: // https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf +#define PICO_RP2350A __PICO_RP2350A // LEDs #define PIN_LED (25u) diff --git a/variants/ilabs_rpico32/Ilabs2040WiFiClass.cpp b/variants/ilabs_rpico32/Ilabs2040WiFiClass.cpp index 0433cd756..b1a1ce71c 100644 --- a/variants/ilabs_rpico32/Ilabs2040WiFiClass.cpp +++ b/variants/ilabs_rpico32/Ilabs2040WiFiClass.cpp @@ -53,7 +53,7 @@ void Ilabs2040WiFiClass::flashReset() { // Prepare ESP8285 for flashing // after a sw or hw reset have been performed to ensure that the AT // interpreter is up and running. bool Ilabs2040WiFiClass::waitForReady() { - int timeout = 20; // Aprox max 2 sec + int timeout = 20; // Approx max 2 sec ESP_SERIAL_PORT.begin(DEFAULT_ESP8285_BAUDRATE); ESP_SERIAL_PORT.setTimeout(100); diff --git a/variants/jumperless_v5/pins_arduino.h b/variants/jumperless_v5/pins_arduino.h index 823419834..44a6b767e 100644 --- a/variants/jumperless_v5/pins_arduino.h +++ b/variants/jumperless_v5/pins_arduino.h @@ -3,7 +3,7 @@ // Pin definitions taken from: // https://github.com/Architeuthis-Flux/JumperlessV5/tree/main/Hardware/Jumperless23V50 -#define PICO_RP2350B 1 +#define PICO_RP2350A 0 // RP2350B // LEDs #define PIN_LED (17u) diff --git a/variants/mksthr36/pins_arduino.h b/variants/mksthr36/pins_arduino.h new file mode 100644 index 000000000..2202650d5 --- /dev/null +++ b/variants/mksthr36/pins_arduino.h @@ -0,0 +1,58 @@ +#pragma once + +// Pin definitions taken from: +// https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf + +#define PIN_HE0 (0u) + +#define PIN_FAN0 (1u) +#define PIN_FAN1 (2u) +#define PIN_FAN2 (3u) + +#define PIN_E0_DIR (4u) +#define PIN_E0_STEP (5u) + +#define PIN_SERIAL1_TX (6u) +#define PIN_E0_UART (6u) +#define PIN_SERIAL1_RX (31u) +#define PIN_E0_DIAG (7u) +#define PIN_E0_EN (10u) + +#define PIN_CAN_RX (8u) +#define PIN_CAN_TX (9u) +#define PIN_SERIAL2_TX (8u) +#define PIN_SERIAL2_RX (9u) + +#define PIN_3D_TOUCH (11u) + +//SPI +#define PIN_SPI1_MISO (12u) +#define PIN_SPI1_MOSI (15u) +#define PIN_SPI1_SCK (14u) +#define PIN_SPI1_SS (13u) + +#define PIN_SPI0_MISO (16u) +#define PIN_SPI0_MOSI (19u) +#define PIN_SPI0_SCK (18u) +#define PIN_SPI0_SS (17u) + +#define PIN_NEOPIXEL (20u) +#define PIN_ZPLUS (21u) + +// Wire +#define PIN_WIRE0_SDA (22u) +#define PIN_WIRE0_SCL (23u) +#define PIN_I2C_SDA (22u) +#define PIN_I2C_SCL (23u) + +#define PIN_IO24 (24u) +#define PIN_IO25 (25u) + +#define PIN_TH0 (26u) +#define PIN_IPO29 (29u) + +#define SERIAL_HOWMANY (3u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (1u) + +#include "../generic/common.h" diff --git a/variants/mksthr42/pins_arduino.h b/variants/mksthr42/pins_arduino.h new file mode 100644 index 000000000..2202650d5 --- /dev/null +++ b/variants/mksthr42/pins_arduino.h @@ -0,0 +1,58 @@ +#pragma once + +// Pin definitions taken from: +// https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf + +#define PIN_HE0 (0u) + +#define PIN_FAN0 (1u) +#define PIN_FAN1 (2u) +#define PIN_FAN2 (3u) + +#define PIN_E0_DIR (4u) +#define PIN_E0_STEP (5u) + +#define PIN_SERIAL1_TX (6u) +#define PIN_E0_UART (6u) +#define PIN_SERIAL1_RX (31u) +#define PIN_E0_DIAG (7u) +#define PIN_E0_EN (10u) + +#define PIN_CAN_RX (8u) +#define PIN_CAN_TX (9u) +#define PIN_SERIAL2_TX (8u) +#define PIN_SERIAL2_RX (9u) + +#define PIN_3D_TOUCH (11u) + +//SPI +#define PIN_SPI1_MISO (12u) +#define PIN_SPI1_MOSI (15u) +#define PIN_SPI1_SCK (14u) +#define PIN_SPI1_SS (13u) + +#define PIN_SPI0_MISO (16u) +#define PIN_SPI0_MOSI (19u) +#define PIN_SPI0_SCK (18u) +#define PIN_SPI0_SS (17u) + +#define PIN_NEOPIXEL (20u) +#define PIN_ZPLUS (21u) + +// Wire +#define PIN_WIRE0_SDA (22u) +#define PIN_WIRE0_SCL (23u) +#define PIN_I2C_SDA (22u) +#define PIN_I2C_SCL (23u) + +#define PIN_IO24 (24u) +#define PIN_IO25 (25u) + +#define PIN_TH0 (26u) +#define PIN_IPO29 (29u) + +#define SERIAL_HOWMANY (3u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (1u) + +#include "../generic/common.h" diff --git a/variants/olimex_pico2xl/pins_arduino.h b/variants/olimex_pico2xl/pins_arduino.h new file mode 100644 index 000000000..e30134871 --- /dev/null +++ b/variants/olimex_pico2xl/pins_arduino.h @@ -0,0 +1,3 @@ +#pragma once +#define PICO_RP2350A 0 // RP2350B +#include "../rpipico2/pins_arduino.h" diff --git a/variants/olimex_pico2xxl/pins_arduino.h b/variants/olimex_pico2xxl/pins_arduino.h new file mode 100644 index 000000000..05dcc2766 --- /dev/null +++ b/variants/olimex_pico2xxl/pins_arduino.h @@ -0,0 +1,4 @@ +#pragma once +#define PICO_RP2350A 0 // RP2350B +#define RP2350_PSRAM_CS 8 +#include "../rpipico2/pins_arduino.h" diff --git a/variants/olimex_rp2040pico30_16mb/pins_arduino.h b/variants/olimex_rp2040pico30/pins_arduino.h similarity index 100% rename from variants/olimex_rp2040pico30_16mb/pins_arduino.h rename to variants/olimex_rp2040pico30/pins_arduino.h diff --git a/variants/olimex_rp2040pico30_2mb/pins_arduino.h b/variants/olimex_rp2040pico30_2mb/pins_arduino.h deleted file mode 100644 index 572de9139..000000000 --- a/variants/olimex_rp2040pico30_2mb/pins_arduino.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#include "../rpipico/pins_arduino.h" diff --git a/variants/pimoroni_pga2350/pins_arduino.h b/variants/pimoroni_pga2350/pins_arduino.h index 5f9deb7fa..bff04aaac 100644 --- a/variants/pimoroni_pga2350/pins_arduino.h +++ b/variants/pimoroni_pga2350/pins_arduino.h @@ -2,7 +2,7 @@ // Enables external PSRAM #define RP2350_PSRAM_CS 47 -#define PICO_RP2350B 1 +#define PICO_RP2350A 0 // RP2350B // This is a bare board with no real predefined pins, so use generic #include "../generic/pins_arduino.h" diff --git a/variants/pimoroni_pico_plus_2/pins_arduino.h b/variants/pimoroni_pico_plus_2/pins_arduino.h index 716e1a9e1..3d83257bd 100644 --- a/variants/pimoroni_pico_plus_2/pins_arduino.h +++ b/variants/pimoroni_pico_plus_2/pins_arduino.h @@ -49,7 +49,7 @@ #define RP2350_PSRAM_CS (47u) #define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000) -#define PICO_RP2350B 1 +#define PICO_RP2350A 0 // RP2350B /* Pins mappings for marked pins on the board */ static const uint8_t D0 = (0u); diff --git a/variants/pimoroni_pico_plus_2w/pins_arduino.h b/variants/pimoroni_pico_plus_2w/pins_arduino.h index 04a8fb405..45d1a7ee7 100644 --- a/variants/pimoroni_pico_plus_2w/pins_arduino.h +++ b/variants/pimoroni_pico_plus_2w/pins_arduino.h @@ -51,7 +51,7 @@ #define RP2350_PSRAM_CS (47u) #define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000) -#define PICO_RP2350B 1 +#define PICO_RP2350A 0 // RP2530B /* Pins mappings for marked pins on the board */ static const uint8_t D0 = (0u); diff --git a/variants/pimoroni_plasma2350/pins_arduino.h b/variants/pimoroni_plasma2350/pins_arduino.h index d14b6f43d..1db66c6c3 100644 --- a/variants/pimoroni_plasma2350/pins_arduino.h +++ b/variants/pimoroni_plasma2350/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + // Pin definitions taken from: // https://github.com/rp-rs/rp-hal-boards/blob/main/boards/pimoroni-plasma-2040/src/lib.rs diff --git a/variants/pimoroni_servo2040/pins_arduino.h b/variants/pimoroni_servo2040/pins_arduino.h new file mode 100644 index 000000000..2388100e3 --- /dev/null +++ b/variants/pimoroni_servo2040/pins_arduino.h @@ -0,0 +1,89 @@ +#pragma once + +// Pin definitions taken from: +// https://github.com/rp-rs/rp-hal-boards/blob/main/boards/pimoroni-servo2040/src/lib.rs + +// LEDs +#define PIN_LED (18u) +#define LED_BUILTIN PIN_LED + +// Digital pins +#define SERVO1 (0u) +#define SERVO2 (1u) +#define SERVO3 (2u) +#define SERVO4 (3u) +#define SERVO5 (4u) +#define SERVO6 (5u) +#define SERVO7 (6u) +#define SERVO8 (7u) +#define SERVO9 (8u) +#define SERVO10 (9u) +#define SERVO11 (10u) +#define SERVO12 (11u) +#define SERVO13 (12u) +#define SERVO14 (13u) +#define SERVO15 (14u) +#define SERVO16 (15u) +#define SERVO17 (16u) +#define SERVO18 (17u) +#define USER_SW (22u) + +// Analog pins +#define ADC_ADDR_0 (22u) +#define ADC_ADDR_1 (24u) +#define ADC_ADDR_2 (25u) +static const uint8_t A0 = (26u); +static const uint8_t A1 = (27u); +static const uint8_t A2 = (28u); +static const uint8_t A3 = (31u); +#define ADC_SHARED A3 +#define ADC_RESOLUTION 12 + +// NeoPixel +#define PIN_NEOPIXEL (15u) +//#define NEOPIXEL_POWER (11u) + +// Serial1 +#define PIN_SERIAL1_TX (31u) +#define PIN_SERIAL1_RX (31u) + +// Serial2 not pinned out +#define PIN_SERIAL2_TX (31u) +#define PIN_SERIAL2_RX (31u) + +// SPI +#define PIN_SPI0_MISO (31u) +#define PIN_SPI0_MOSI (31u) +#define PIN_SPI0_SCK (31u) +#define PIN_SPI0_SS (31u) // not pinned out +//static const uint8_t SS = PIN_SPI0_SS; // SPI Slave SS not used. Set here only for reference. +//static const uint8_t MOSI = PIN_SPI0_MOSI; +//static const uint8_t MISO = PIN_SPI0_MISO; +//static const uint8_t SCK = PIN_SPI0_SCK; + +// Not pinned out +#define PIN_SPI1_MISO (31u) +#define PIN_SPI1_MOSI (31u) +#define PIN_SPI1_SCK (31u) +#define PIN_SPI1_SS (31u) +//#define SPI_MISO (PIN_SPI1_MISO) +//#define SPI_MOSI (PIN_SPI1_MOSI) +//#define SPI_SCK (PIN_SPI1_SCK) + +// Wire +#define __WIRE0_DEVICE (i2c0) +#define PIN_WIRE0_SDA (20u) +#define PIN_WIRE0_SCL (21u) +#define SDA PIN_WIRE0_SDA +#define SCL PIN_WIRE0_SCL +#define I2C_SDA (SDA) +#define I2C_SCL (SCL) + +// Wire1 not pinned out +#define __WIRE1_DEVICE (i2c1) +#define PIN_WIRE1_SDA (31u) +#define PIN_WIRE1_SCL (31u) + +#define SERIAL_HOWMANY (0u) +#define SPI_HOWMANY (0u) +#define WIRE_HOWMANY (1u) diff --git a/variants/pimoroni_tiny2350/pins_arduino.h b/variants/pimoroni_tiny2350/pins_arduino.h index b5e76e25d..86b4fde73 100644 --- a/variants/pimoroni_tiny2350/pins_arduino.h +++ b/variants/pimoroni_tiny2350/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + // This is a bare board with few predefined pins, so based on generic // Pin definitions taken from: diff --git a/variants/rpipico2/pins_arduino.h b/variants/rpipico2/pins_arduino.h index bdd0baf76..6b1fc423a 100644 --- a/variants/rpipico2/pins_arduino.h +++ b/variants/rpipico2/pins_arduino.h @@ -3,6 +3,7 @@ // Pin definitions taken from: // https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf +#define PICO_RP2350A 1 // LEDs #define PIN_LED (25u) diff --git a/variants/rpipico2w/pins_arduino.h b/variants/rpipico2w/pins_arduino.h index c77999d72..f573459a4 100644 --- a/variants/rpipico2w/pins_arduino.h +++ b/variants/rpipico2w/pins_arduino.h @@ -5,6 +5,7 @@ // Pin definitions taken from: // https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf +#define PICO_RP2350A 1 // LEDs #define PIN_LED (64u) diff --git a/variants/seeed_xiao_rp2350/pins_arduino.h b/variants/seeed_xiao_rp2350/pins_arduino.h index 304df40ee..1a9ff7ac6 100644 --- a/variants/seeed_xiao_rp2350/pins_arduino.h +++ b/variants/seeed_xiao_rp2350/pins_arduino.h @@ -1,4 +1,7 @@ #pragma once + +#define PICO_RP2350A 1 + // Pin definitions taken from: // https://www.seeedstudio.com/Seeed-XIAO-RP2350-p-5944.html @@ -53,8 +56,17 @@ static const uint8_t D18 = (9u); // Wire -#define PIN_WIRE1_SDA (16u) -#define PIN_WIRE1_SCL (17u) +#define __WIRE0_DEVICE (i2c0) +#define PIN_WIRE0_SDA (16u) +#define PIN_WIRE0_SCL (17u) +#define SDA PIN_WIRE0_SDA +#define SCL PIN_WIRE0_SCL +#define I2C_SDA (SDA) +#define I2C_SCL (SCL) + +#define __WIRE1_DEVICE (i2c1) +#define PIN_WIRE1_SDA (6u) +#define PIN_WIRE1_SCL (7u) #define SERIAL_HOWMANY (3u) #define SPI_HOWMANY (2u) @@ -66,10 +78,3 @@ static const uint8_t MISO = PIN_SPI0_MISO; static const uint8_t SCK = PIN_SPI0_SCK; static const uint8_t SS = PIN_SPI0_SS; -#define __WIRE0_DEVICE (i2c1) -#define PIN_WIRE0_SDA (6u) -#define PIN_WIRE0_SCL (7u) -#define SDA PIN_WIRE0_SDA -#define SCL PIN_WIRE0_SCL -#define I2C_SDA (SDA) -#define I2C_SCL (SCL) \ No newline at end of file diff --git a/variants/solderparty_rp2350_stamp/pins_arduino.h b/variants/solderparty_rp2350_stamp/pins_arduino.h index 7584ae025..6d8b4aaa9 100644 --- a/variants/solderparty_rp2350_stamp/pins_arduino.h +++ b/variants/solderparty_rp2350_stamp/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + // Pin definitions taken from: // https://rp2xxx-stamp-carrier-xl.solder.party/ diff --git a/variants/solderparty_rp2350_stamp_xl/pins_arduino.h b/variants/solderparty_rp2350_stamp_xl/pins_arduino.h index 0c86b6ce0..488c901e4 100644 --- a/variants/solderparty_rp2350_stamp_xl/pins_arduino.h +++ b/variants/solderparty_rp2350_stamp_xl/pins_arduino.h @@ -3,7 +3,7 @@ // Pin definitions taken from: // https://rp2xxx-stamp-carrier-xl.solder.party/ -#define PICO_RP2350B 1 +#define PICO_RP2350A 0 // RP2350B // LEDs #define PIN_LED (3u) diff --git a/variants/sparkfun_iotnode_lorawanrp2350/pins_arduino.h b/variants/sparkfun_iotnode_lorawanrp2350/pins_arduino.h new file mode 100644 index 000000000..41257e5a1 --- /dev/null +++ b/variants/sparkfun_iotnode_lorawanrp2350/pins_arduino.h @@ -0,0 +1,49 @@ +#pragma once + +#define PICO_RP2350A 1 + +// LEDs +#define PIN_LED (25u) + +#define PIN_NEOPIXEL (25) +#define NUM_NEOPIXEL (1) + +// UARTs +#define PIN_SERIAL1_TX (18u) +#define PIN_SERIAL1_RX (19u) +#define PIN_SERIAL2_TX (8u) +#define PIN_SERIAL2_RX (9u) + +// SPI +#define PIN_SPI0_MISO (12u) +#define PIN_SPI0_MOSI (15u) +#define PIN_SPI0_SCK (14u) +#define PIN_SPI0_SS (13u) +#define PIN_SPI1_MISO (31u) +#define PIN_SPI1_MOSI (31u) +#define PIN_SPI1_SCK (31u) +#define PIN_SPI1_SS (31u) // not pinned out + +// The board uses SPI1 for uSD card, make that the default +#ifndef __SPI0_DEVICE +#define __SPI0_DEVICE spi1 +#endif +#ifndef __SPI1_DEVICE +#define __SPI1_DEVICE spi0 +#endif + +// Wire +#define PIN_WIRE0_SDA (20u) +#define PIN_WIRE0_SCL (21u) +#define PIN_WIRE1_SDA (31u) +#define PIN_WIRE1_SCL (31u) + +#define SERIAL_HOWMANY (3u) +#define SPI_HOWMANY (1u) +#define WIRE_HOWMANY (1u) + +// PSRAM +#define RP2350_PSRAM_CS (0u) +#define RP2350_PSRAM_MAX_SCK_HZ (109 * 1000 * 1000) + +#include "../generic/common.h" diff --git a/variants/sparkfun_iotredboard_rp2350/digital.cpp b/variants/sparkfun_iotredboard_rp2350/digital.cpp new file mode 100644 index 000000000..2dc7a878e --- /dev/null +++ b/variants/sparkfun_iotredboard_rp2350/digital.cpp @@ -0,0 +1,33 @@ +/* + pinMode and digitalRead/Write for the Raspberry Pi Pico W RP2040 + Copyright (c) 2022 Earle F. Philhower, III + + 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 + +extern "C" void pinMode(pin_size_t pin, PinMode mode) { + cyw43_pinMode(pin, mode); +} + +extern "C" void digitalWrite(pin_size_t pin, PinStatus val) { + cyw43_digitalWrite(pin, val); +} + +extern "C" PinStatus digitalRead(pin_size_t pin) { + return cyw43_digitalRead(pin); +} diff --git a/variants/sparkfun_iotredboard_rp2350/init.cpp b/variants/sparkfun_iotredboard_rp2350/init.cpp new file mode 100644 index 000000000..d4aa78e81 --- /dev/null +++ b/variants/sparkfun_iotredboard_rp2350/init.cpp @@ -0,0 +1,28 @@ +/* + Initialize the Pico W WiFi driver + + Copyright (c) 2022 Earle F. Philhower, III + + 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 +#include "pico/cyw43_driver.h" + +extern "C" void initVariant() { + static uint cyw43_pin_array[CYW43_PIN_INDEX_WL_COUNT] = {24, 38, 38, 38, 37, 36}; + cyw43_set_pins_wl(cyw43_pin_array); + init_cyw43_wifi(); +} diff --git a/variants/sparkfun_iotredboard_rp2350/pins_arduino.h b/variants/sparkfun_iotredboard_rp2350/pins_arduino.h new file mode 100644 index 000000000..84400888b --- /dev/null +++ b/variants/sparkfun_iotredboard_rp2350/pins_arduino.h @@ -0,0 +1,167 @@ + +#include +#include + +#define PICO_RP2350A 0 // RP2350B + +#define PINS_COUNT (48u) +#define NUM_DIGITAL_PINS (48u) +#define NUM_ANALOG_INPUTS (7u) +#define NUM_ANALOG_OUTPUTS (0u) +#define ADC_RESOLUTION (12u) + +// LEDs +#define PIN_LED (25u) +#define LED_BUILTIN PIN_LED + +#define PIN_WL_LED (64u) + +#define PIN_NEOPIXEL (3u) +#define NUM_NEOPIXEL (1u) + +// Serial +#define PIN_SERIAL1_TX (0u) +#define PIN_SERIAL1_RX (1u) + +#define PIN_SERIAL2_TX (40u) +#define PIN_SERIAL2_RX (41u) + +// External SPI +#define PIN_SPI0_MISO (20u) +#define PIN_SPI0_MOSI (23u) +#define PIN_SPI0_SCK (22u) +#define PIN_SPI0_SS (21u) // CS pin for External SPI. + +#define PIN_SPI0_POCI PIN_SPI0_MISO +#define PIN_SPI0_PICO PIN_SPI0_MOSI +#define PIN_SPI0_CS PIN_SPI0_SS + +// SD Card SPI +#define PIN_SPI1_MISO (8u) +#define PIN_SPI1_MOSI (11u) +#define PIN_SPI1_SCK (10u) +#define PIN_SPI1_SS (9u) // CS pin for SD card. + +#define PIN_SPI1_POCI PIN_SPI1_MISO +#define PIN_SPI1_PICO PIN_SPI1_MOSI +#define PIN_SPI1_CS PIN_SPI1_SS + +// Wire +#define PIN_WIRE0_SDA (4u) +#define PIN_WIRE0_SCL (5u) + +#define PIN_WIRE1_SDA (30u) +#define PIN_WIRE1_SCL (31u) + +#define SERIAL_HOWMANY (3u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (2u) +#define WIRE_INTERFACES_COUNT (WIRE_HOWMANY) + +// PSRAM +#define RP2350_PSRAM_CS (47u) +#define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000) + +/* Pin mappings for marked pins on the board */ +// UART0 +static const uint8_t D0 = (0u); +static const uint8_t D1 = (1u); + +// I2C0 +static const uint8_t D4 = (4u); +static const uint8_t D5 = (5u); + +// SD Card/SPI1 +static const uint8_t D8 = (8u); +static const uint8_t D9 = (9u); +static const uint8_t D10 = (10u); +static const uint8_t D11 = (11u); + +// HSTX GPIO +static const uint8_t D12 = (12u); +static const uint8_t D13 = (13u); +static const uint8_t D14 = (14u); +static const uint8_t D15 = (15u); +static const uint8_t D16 = (16u); +static const uint8_t D17 = (17u); +static const uint8_t D18 = (18u); +static const uint8_t D19 = (19u); + +// SPI0 +static const uint8_t D20 = (20u); +static const uint8_t D21 = (21u); +static const uint8_t D22 = (22u); +static const uint8_t D23 = (23u); + +// External GPIO +static const uint8_t D28 = (28u); +static const uint8_t D29 = (29u); +static const uint8_t D30 = (30u); +static const uint8_t D31 = (31u); +static const uint8_t D32 = (32u); +static const uint8_t D33 = (33u); +static const uint8_t D34 = (34u); +static const uint8_t D35 = (35u); + +// Analog Inputs are also digital capable. +static const uint8_t D40 = (40u); +static const uint8_t D41 = (41u); +static const uint8_t D42 = (42u); +static const uint8_t D43 = (43u); +static const uint8_t D44 = (44u); +static const uint8_t D45 = (45u); + +static const uint8_t A0 = (40u); +static const uint8_t A1 = (41u); +static const uint8_t A2 = (42u); +static const uint8_t A3 = (43u); +static const uint8_t A4 = (44u); +static const uint8_t A5 = (45u); + +// SD Card detect - Active Low +static const uint8_t SD_DET_N = (2u); + +// RGB LED data pin +static const uint8_t RGB_LED = (3u); + +// Low battery alert - Active Low +static const uint8_t BATT_ALRT_N = (6u); + +// Power enable for peripherals - qwiic, sd, rgb. Default HIGH via HW jumper. +static const uint8_t PERIPHERAL_POWER_ENABLE = (7u); + +// WiFi power GPIO +static const uint8_t WRL_ON = (24u); + +// aka STAT LED +static const uint8_t D25 = (25u); + +// Power status inputs +static const uint8_t POWER_SRC_5V = (26u); +static const uint8_t BATT_POWER = (27u); + +// User button +static const uint8_t USER_SW = (39u); + +// Input voltage measurement +static const uint8_t VIN_MEAS = (46u); + +static const uint8_t SS = PIN_SPI0_SS; +static const uint8_t CS = PIN_SPI0_CS; + +static const uint8_t MOSI = PIN_SPI0_MOSI; +static const uint8_t PICO = PIN_SPI0_PICO; + +static const uint8_t MISO = PIN_SPI0_MISO; +static const uint8_t POCI = PIN_SPI0_POCI; + +static const uint8_t SCK = PIN_SPI0_SCK; + +static const uint8_t SDA = PIN_WIRE0_SDA; +static const uint8_t SCL = PIN_WIRE0_SCL; + +static const uint8_t SDA1 = PIN_WIRE1_SDA; +static const uint8_t SCL1 = PIN_WIRE1_SCL; + +static const uint8_t RX = PIN_SERIAL1_RX; +static const uint8_t TX = PIN_SERIAL1_TX; diff --git a/variants/sparkfun_promicrorp2350/pins_arduino.h b/variants/sparkfun_promicrorp2350/pins_arduino.h index 41e858576..418ed622a 100644 --- a/variants/sparkfun_promicrorp2350/pins_arduino.h +++ b/variants/sparkfun_promicrorp2350/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + // Taken from schematic at https://cdn.sparkfun.com/assets/e/2/7/6/b/ProMicroRP2040_Graphical_Datasheet.pdf // LEDs diff --git a/variants/sparkfun_thingplusrp2350/pins_arduino.h b/variants/sparkfun_thingplusrp2350/pins_arduino.h index 5b8d1a0c3..c2de3745b 100644 --- a/variants/sparkfun_thingplusrp2350/pins_arduino.h +++ b/variants/sparkfun_thingplusrp2350/pins_arduino.h @@ -1,5 +1,7 @@ #pragma once +#define PICO_RP2350A 1 + #include // LEDs diff --git a/variants/sparkfun_xrp_controller/digital.cpp b/variants/sparkfun_xrp_controller/digital.cpp new file mode 100644 index 000000000..2dc7a878e --- /dev/null +++ b/variants/sparkfun_xrp_controller/digital.cpp @@ -0,0 +1,33 @@ +/* + pinMode and digitalRead/Write for the Raspberry Pi Pico W RP2040 + Copyright (c) 2022 Earle F. Philhower, III + + 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 + +extern "C" void pinMode(pin_size_t pin, PinMode mode) { + cyw43_pinMode(pin, mode); +} + +extern "C" void digitalWrite(pin_size_t pin, PinStatus val) { + cyw43_digitalWrite(pin, val); +} + +extern "C" PinStatus digitalRead(pin_size_t pin) { + return cyw43_digitalRead(pin); +} diff --git a/variants/sparkfun_xrp_controller/init.cpp b/variants/sparkfun_xrp_controller/init.cpp new file mode 100644 index 000000000..62037626d --- /dev/null +++ b/variants/sparkfun_xrp_controller/init.cpp @@ -0,0 +1,34 @@ +/* + Initialize the Pico W WiFi driver + + Copyright (c) 2022 Earle F. Philhower, III + + 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 + +extern "C" void initVariant() { + static uint cyw43_pin_array[CYW43_PIN_INDEX_WL_COUNT] = { + 26, // CYW43_PIN_INDEX_WL_REG_ON + 29, // CYW43_PIN_INDEX_WL_DATA_OUT + 29, // CYW43_PIN_INDEX_WL_DATA_IN + 29, // CYW43_PIN_INDEX_WL_HOST_WAKE + 28, // CYW43_PIN_INDEX_WL_CLOCK + 27 // CYW43_PIN_INDEX_WL_CS + }; + cyw43_set_pins_wl(cyw43_pin_array); + init_cyw43_wifi(); +} diff --git a/variants/sparkfun_xrp_controller/pins_arduino.h b/variants/sparkfun_xrp_controller/pins_arduino.h new file mode 100644 index 000000000..197636c63 --- /dev/null +++ b/variants/sparkfun_xrp_controller/pins_arduino.h @@ -0,0 +1,122 @@ +#pragma once + +#define PICO_RP2350A 0 // RP2350B + +#include + +// XRP default pin names +#define MOTOR_L_IN_1 (34u) +#define MOTOR_L_IN_2 (35u) +#define MOTOR_R_IN_1 (32u) +#define MOTOR_R_IN_2 (33u) +#define MOTOR_3_IN_1 (20u) +#define MOTOR_3_IN_2 (21u) +#define MOTOR_4_IN_1 (10u) +#define MOTOR_4_IN_2 (11u) +#define MOTOR_L_ENCODER_A (30u) +#define MOTOR_L_ENCODER_B (31u) +#define MOTOR_R_ENCODER_A (24u) +#define MOTOR_R_ENCODER_B (25u) +#define MOTOR_3_ENCODER_A (22u) +#define MOTOR_3_ENCODER_B (23u) +#define MOTOR_4_ENCODER_A (2u) +#define MOTOR_4_ENCODER_B (3u) +#define MOTOR_L_CURRENT (40u) +#define MOTOR_R_CURRENT (43u) +#define MOTOR_3_CURRENT (41u) +#define MOTOR_4_CURRENT (42u) +#define SERVO_1 (6u) +#define SERVO_2 (9u) +#define SERVO_3 (7u) +#define SERVO_4 (8u) +#define I2C_SDA_0 (4u) +#define I2C_SCL_0 (5u) +#define I2C_SDA_1 (38u) +#define I2C_SCL_1 (39u) +#define DISTANCE_TRIGGER (0u) +#define DISTANCE_ECHO (1u) +#define LINE_L (44u) +#define LINE_R (45u) +#define BOARD_VIN_MEASURE (46u) +#define BOARD_USER_BUTTON (36u) +#define BOARD_NEOPIXEL (37u) +#define BOARD_LED (PIN_LED) + +// XRP alternate pin names +#define ML_IN_1 (34u) +#define ML_IN_2 (35u) +#define MR_IN_1 (32u) +#define MR_IN_2 (33u) +#define M3_IN_1 (20u) +#define M3_IN_2 (21u) +#define M4_IN_1 (10u) +#define M4_IN_2 (11u) +#define ML_ENC_A (30u) +#define ML_ENC_B (31u) +#define MR_ENC_A (24u) +#define MR_ENC_B (25u) +#define M3_ENC_A (22u) +#define M3_ENC_B (23u) +#define M4_ENC_A (2u) +#define M4_ENC_B (3u) +#define ML_CUR (40u) +#define MR_CUR (43u) +#define M3_CUR (41u) +#define M4_CUR (42u) +#define S1 (6u) +#define S2 (9u) +#define S3 (7u) +#define S4 (8u) +#define SDA_0 (4u) +#define SCL_0 (5u) +#define SDA_1 (38u) +#define SCL_1 (39u) +#define RANGE_TRIGGER (0u) +#define RANGE_ECHO (1u) +#define REFLECTANCE_L (44u) +#define REFLECTANCE_R (45u) +#define BRD_VIN (46u) +#define BRD_USR_BTN (36u) +#define BRD_RGB_LED (37u) +#define BRD_LED (PIN_LED) + +// LEDs +#define PIN_LED (64u) + +#define PIN_NEOPIXEL (37) +#define NUM_NEOPIXEL (1) + +// Serial +#define PIN_SERIAL1_TX (12u) +#define PIN_SERIAL1_RX (13u) + +#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 (38u) +#define PIN_WIRE1_SCL (39u) + +#define SERIAL_HOWMANY (3u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (2u) + +// PSRAM +#define RP2350_PSRAM_CS (47u) +#define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000) + +#include "../generic/common.h" diff --git a/variants/sparkfun_xrp_controller_beta/digital.cpp b/variants/sparkfun_xrp_controller_beta/digital.cpp new file mode 100644 index 000000000..2dc7a878e --- /dev/null +++ b/variants/sparkfun_xrp_controller_beta/digital.cpp @@ -0,0 +1,33 @@ +/* + pinMode and digitalRead/Write for the Raspberry Pi Pico W RP2040 + Copyright (c) 2022 Earle F. Philhower, III + + 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 + +extern "C" void pinMode(pin_size_t pin, PinMode mode) { + cyw43_pinMode(pin, mode); +} + +extern "C" void digitalWrite(pin_size_t pin, PinStatus val) { + cyw43_digitalWrite(pin, val); +} + +extern "C" PinStatus digitalRead(pin_size_t pin) { + return cyw43_digitalRead(pin); +} diff --git a/variants/sparkfun_xrp_controller_beta/init.cpp b/variants/sparkfun_xrp_controller_beta/init.cpp new file mode 100644 index 000000000..568ccdca8 --- /dev/null +++ b/variants/sparkfun_xrp_controller_beta/init.cpp @@ -0,0 +1,25 @@ +/* + Initialize the Pico W WiFi driver + + Copyright (c) 2022 Earle F. Philhower, III + + 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 + +extern "C" void initVariant() { + init_cyw43_wifi(); +} diff --git a/variants/sparkfun_xrp_controller_beta/pins_arduino.h b/variants/sparkfun_xrp_controller_beta/pins_arduino.h new file mode 100644 index 000000000..4814b712e --- /dev/null +++ b/variants/sparkfun_xrp_controller_beta/pins_arduino.h @@ -0,0 +1,103 @@ +#pragma once + +#include + +// XRP default pin names +#define MOTOR_L_IN_1 (6u) +#define MOTOR_L_IN_2 (7u) +#define MOTOR_R_IN_1 (14u) +#define MOTOR_R_IN_2 (15u) +#define MOTOR_3_IN_1 (2u) +#define MOTOR_3_IN_2 (3u) +#define MOTOR_4_IN_1 (10u) +#define MOTOR_4_IN_2 (11u) +#define MOTOR_L_ENCODER_A (4u) +#define MOTOR_L_ENCODER_B (5u) +#define MOTOR_R_ENCODER_A (12u) +#define MOTOR_R_ENCODER_B (13u) +#define MOTOR_3_ENCODER_A (0u) +#define MOTOR_3_ENCODER_B (1u) +#define MOTOR_4_ENCODER_A (8u) +#define MOTOR_4_ENCODER_B (9u) +#define SERVO_1 (16u) +#define SERVO_2 (17u) +#define I2C_SDA_1 (18u) +#define I2C_SCL_1 (19u) +#define DISTANCE_TRIGGER (20u) +#define DISTANCE_ECHO (21u) +#define LINE_L (26u) +#define LINE_R (27u) +#define BOARD_VIN_MEASURE (28u) +#define BOARD_USER_BUTTON (22u) +#define BOARD_LED (PIN_LED) + +// XRP alternate pin names +#define ML_IN_1 (6u) +#define ML_IN_2 (7u) +#define MR_IN_1 (14u) +#define MR_IN_2 (15u) +#define M3_IN_1 (2u) +#define M3_IN_2 (3u) +#define M4_IN_1 (10u) +#define M4_IN_2 (11u) +#define ML_ENC_A (4u) +#define ML_ENC_B (5u) +#define MR_ENC_A (12u) +#define MR_ENC_B (13u) +#define M3_ENC_A (0u) +#define M3_ENC_B (1u) +#define M4_ENC_A (8u) +#define M4_ENC_B (9u) +#define S1 (16u) +#define S2 (17u) +#define SDA_1 (18u) +#define SCL_1 (19u) +#define RANGE_TRIGGER (20u) +#define RANGE_ECHO (21u) +#define REFLECTANCE_L (26u) +#define REFLECTANCE_R (27u) +#define BRD_VIN (28u) +#define BRD_USR_BTN (22u) +#define BRD_LED (PIN_LED) + +// LEDs +#define PIN_LED (64u) + +// Serial +#define PIN_SERIAL1_TX (31u) +#define PIN_SERIAL1_RX (31u) + +#define PIN_SERIAL2_TX (31u) +#define PIN_SERIAL2_RX (31u) + +// SPI +#define PIN_SPI0_MISO (31u) +#define PIN_SPI0_MOSI (31u) +#define PIN_SPI0_SCK (31u) +#define PIN_SPI0_SS (31u) + +#define PIN_SPI1_MISO (31u) +#define PIN_SPI1_MOSI (31u) +#define PIN_SPI1_SCK (31u) +#define PIN_SPI1_SS (31u) + +// Wire +#define PIN_WIRE0_SDA (18u) +#define PIN_WIRE0_SCL (19u) + +#define PIN_WIRE1_SDA (31u) +#define PIN_WIRE1_SCL (31u) + +// XRP Beta Controller uses I2C1 for Qwiic connector, make that the default +#ifndef __WIRE0_DEVICE +#define __WIRE0_DEVICE i2c1 +#endif +#ifndef __WIRE1_DEVICE +#define __WIRE1_DEVICE i2c0 +#endif + +#define SERIAL_HOWMANY (3u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (2u) + +#include "../generic/common.h" diff --git a/variants/wiznet_5100s_evb_pico2/pins_arduino.h b/variants/wiznet_5100s_evb_pico2/pins_arduino.h index 41d8bda5a..e823e779a 100644 --- a/variants/wiznet_5100s_evb_pico2/pins_arduino.h +++ b/variants/wiznet_5100s_evb_pico2/pins_arduino.h @@ -1 +1,2 @@ +#define PICO_RP2350A 1 #include "../generic/pins_arduino.h" diff --git a/variants/wiznet_5500_evb_pico2/pins_arduino.h b/variants/wiznet_5500_evb_pico2/pins_arduino.h index 41d8bda5a..e823e779a 100644 --- a/variants/wiznet_5500_evb_pico2/pins_arduino.h +++ b/variants/wiznet_5500_evb_pico2/pins_arduino.h @@ -1 +1,2 @@ +#define PICO_RP2350A 1 #include "../generic/pins_arduino.h" diff --git a/variants/wiznet_55rp20_evb_pico/pins_arduino.h b/variants/wiznet_55rp20_evb_pico/pins_arduino.h index 41d8bda5a..4363f9722 100644 --- a/variants/wiznet_55rp20_evb_pico/pins_arduino.h +++ b/variants/wiznet_55rp20_evb_pico/pins_arduino.h @@ -1 +1,40 @@ -#include "../generic/pins_arduino.h" +#pragma once + +// Pin definitions taken from: +// https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf + + +// LEDs +#define PIN_LED (19u) + +// Serial +#define PIN_SERIAL1_TX (0u) +#define PIN_SERIAL1_RX (1u) + +#define PIN_SERIAL2_TX (8u) +#define PIN_SERIAL2_RX (9u) + +// SPI +// Default SPI0 pins are used internally and are unavailable on this board. To use SPI0 other peripherals must be sacrificed. +#define PIN_SPI0_MISO (2u) // 16u is connected to the buck-boost converted. +#define PIN_SPI0_MOSI (3u) // 19u is connected to USERLED, defined as PIN_LED. +#define PIN_SPI0_SCK (4u) // 18u is connected to a voltage divider on VBUS. +#define PIN_SPI0_SS (5u) // 17u doesn't even show up in the schematics. + +#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"