diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index c367c74af..64cc425ca 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -20,8 +20,8 @@ jobs: - name: Run codespell uses: codespell-project/actions-codespell@v2 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,./libraries/WiFi/examples/BearSSL_Validation/certs.h - ignore_words_list: ser,dout,shiftIn,acount,froms + skip: ./ArduinoCore-API,./libraries/ESP8266SdFat,./libraries/Adafruit_TinyUSB_Arduino,./libraries/LittleFS/lib,./tools/pyserial,./pico-sdk,./.github,./docs/i2s.rst,./cores/rp2040/api,./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,./libraries/WiFi/examples/BearSSL_Validation/certs.h + ignore_words_list: ser,dout,shiftIn,acount,froms,ThirdParty - name: Check boards.txt was not edited after makeboards.py run: | ./tools/makeboards.py diff --git a/.gitmodules b/.gitmodules index 8b55777d8..b1b342927 100644 --- a/.gitmodules +++ b/.gitmodules @@ -23,7 +23,7 @@ path = libraries/Adafruit_TinyUSB_Arduino url = https://github.com/adafruit/Adafruit_TinyUSB_Arduino.git [submodule "libraries/FreeRTOS/lib/FreeRTOS-Kernel"] - path = libraries/FreeRTOS/lib/FreeRTOS-Kernel + path = FreeRTOS-Kernel url = https://github.com/earlephilhower/FreeRTOS-Kernel.git [submodule "tools/libbearssl/bearssl"] path = tools/libbearssl/bearssl @@ -49,3 +49,6 @@ [submodule "libraries/SdFat"] path = libraries/SdFat url = https://github.com/greiman/SdFat.git +[submodule "FreeRTOS-Kernel"] + path = FreeRTOS-Kernel + url = https://github.com/earlephilhower/FreeRTOS-Kernel.git diff --git a/libraries/FreeRTOS/lib/FreeRTOS-Kernel b/FreeRTOS-Kernel similarity index 100% rename from libraries/FreeRTOS/lib/FreeRTOS-Kernel rename to FreeRTOS-Kernel diff --git a/boards.txt b/boards.txt index 3806ede3c..85f148f52 100644 --- a/boards.txt +++ b/boards.txt @@ -11,6 +11,7 @@ menu.psramfreq=PSRAM Speed menu.freq=CPU Speed menu.arch=CPU Architecture menu.opt=Optimize +menu.os=Operating System menu.profile=Profiling menu.rtti=RTTI menu.stackprotect=Stack Protector @@ -167,6 +168,10 @@ rpipico.menu.opt.Debug=Debug (-Og) rpipico.menu.opt.Debug.build.flags.optimize=-Og rpipico.menu.opt.Disabled=Disabled (-O0) rpipico.menu.opt.Disabled.build.flags.optimize=-O0 +rpipico.menu.os.none=None +rpipico.menu.os.none.build.os= +rpipico.menu.os.freertos=FreeRTOS SMP +rpipico.menu.os.freertos.build.os=-D__FREERTOS rpipico.menu.profile.Disabled=Disabled rpipico.menu.profile.Disabled.build.flags.profile= rpipico.menu.profile.Enabled=Enabled @@ -205,8 +210,10 @@ rpipico.menu.dbglvl.Wire=Wire rpipico.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE rpipico.menu.dbglvl.Bluetooth=Bluetooth rpipico.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +rpipico.menu.dbglvl.LWIP=LWIP +rpipico.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 rpipico.menu.dbglvl.All=All -rpipico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +rpipico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 rpipico.menu.dbglvl.NDEBUG=NDEBUG rpipico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rpipico.menu.usbstack.picosdk=Pico SDK @@ -382,6 +389,10 @@ rpipicow.menu.opt.Debug=Debug (-Og) rpipicow.menu.opt.Debug.build.flags.optimize=-Og rpipicow.menu.opt.Disabled=Disabled (-O0) rpipicow.menu.opt.Disabled.build.flags.optimize=-O0 +rpipicow.menu.os.none=None +rpipicow.menu.os.none.build.os= +rpipicow.menu.os.freertos=FreeRTOS SMP +rpipicow.menu.os.freertos.build.os=-D__FREERTOS rpipicow.menu.profile.Disabled=Disabled rpipicow.menu.profile.Disabled.build.flags.profile= rpipicow.menu.profile.Enabled=Enabled @@ -420,8 +431,10 @@ rpipicow.menu.dbglvl.Wire=Wire rpipicow.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE rpipicow.menu.dbglvl.Bluetooth=Bluetooth rpipicow.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +rpipicow.menu.dbglvl.LWIP=LWIP +rpipicow.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 rpipicow.menu.dbglvl.All=All -rpipicow.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +rpipicow.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 rpipicow.menu.dbglvl.NDEBUG=NDEBUG rpipicow.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rpipicow.menu.usbstack.picosdk=Pico SDK @@ -747,6 +760,10 @@ rpipico2.menu.opt.Debug=Debug (-Og) rpipico2.menu.opt.Debug.build.flags.optimize=-Og rpipico2.menu.opt.Disabled=Disabled (-O0) rpipico2.menu.opt.Disabled.build.flags.optimize=-O0 +rpipico2.menu.os.none=None +rpipico2.menu.os.none.build.os= +rpipico2.menu.os.freertos=FreeRTOS SMP +rpipico2.menu.os.freertos.build.os=-D__FREERTOS rpipico2.menu.profile.Disabled=Disabled rpipico2.menu.profile.Disabled.build.flags.profile= rpipico2.menu.profile.Enabled=Enabled @@ -785,8 +802,10 @@ rpipico2.menu.dbglvl.Wire=Wire rpipico2.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE rpipico2.menu.dbglvl.Bluetooth=Bluetooth rpipico2.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +rpipico2.menu.dbglvl.LWIP=LWIP +rpipico2.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 rpipico2.menu.dbglvl.All=All -rpipico2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +rpipico2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 rpipico2.menu.dbglvl.NDEBUG=NDEBUG rpipico2.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rpipico2.menu.usbstack.picosdk=Pico SDK @@ -985,6 +1004,10 @@ rpipico2w.menu.opt.Debug=Debug (-Og) rpipico2w.menu.opt.Debug.build.flags.optimize=-Og rpipico2w.menu.opt.Disabled=Disabled (-O0) rpipico2w.menu.opt.Disabled.build.flags.optimize=-O0 +rpipico2w.menu.os.none=None +rpipico2w.menu.os.none.build.os= +rpipico2w.menu.os.freertos=FreeRTOS SMP +rpipico2w.menu.os.freertos.build.os=-D__FREERTOS rpipico2w.menu.profile.Disabled=Disabled rpipico2w.menu.profile.Disabled.build.flags.profile= rpipico2w.menu.profile.Enabled=Enabled @@ -1023,8 +1046,10 @@ rpipico2w.menu.dbglvl.Wire=Wire rpipico2w.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE rpipico2w.menu.dbglvl.Bluetooth=Bluetooth rpipico2w.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +rpipico2w.menu.dbglvl.LWIP=LWIP +rpipico2w.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 rpipico2w.menu.dbglvl.All=All -rpipico2w.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +rpipico2w.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 rpipico2w.menu.dbglvl.NDEBUG=NDEBUG rpipico2w.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rpipico2w.menu.usbstack.picosdk=Pico SDK @@ -1397,6 +1422,10 @@ rpipico2w.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cm 0xcb_helios.menu.opt.Debug.build.flags.optimize=-Og 0xcb_helios.menu.opt.Disabled=Disabled (-O0) 0xcb_helios.menu.opt.Disabled.build.flags.optimize=-O0 +0xcb_helios.menu.os.none=None +0xcb_helios.menu.os.none.build.os= +0xcb_helios.menu.os.freertos=FreeRTOS SMP +0xcb_helios.menu.os.freertos.build.os=-D__FREERTOS 0xcb_helios.menu.profile.Disabled=Disabled 0xcb_helios.menu.profile.Disabled.build.flags.profile= 0xcb_helios.menu.profile.Enabled=Enabled @@ -1435,8 +1464,10 @@ rpipico2w.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cm 0xcb_helios.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE 0xcb_helios.menu.dbglvl.Bluetooth=Bluetooth 0xcb_helios.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +0xcb_helios.menu.dbglvl.LWIP=LWIP +0xcb_helios.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 0xcb_helios.menu.dbglvl.All=All -0xcb_helios.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +0xcb_helios.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 0xcb_helios.menu.dbglvl.NDEBUG=NDEBUG 0xcb_helios.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG 0xcb_helios.menu.usbstack.picosdk=Pico SDK @@ -1661,6 +1692,10 @@ adafruit_feather.menu.opt.Debug=Debug (-Og) adafruit_feather.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather.menu.opt.Disabled=Disabled (-O0) adafruit_feather.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather.menu.os.none=None +adafruit_feather.menu.os.none.build.os= +adafruit_feather.menu.os.freertos=FreeRTOS SMP +adafruit_feather.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather.menu.profile.Disabled=Disabled adafruit_feather.menu.profile.Disabled.build.flags.profile= adafruit_feather.menu.profile.Enabled=Enabled @@ -1699,8 +1734,10 @@ adafruit_feather.menu.dbglvl.Wire=Wire adafruit_feather.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather.menu.dbglvl.LWIP=LWIP +adafruit_feather.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather.menu.dbglvl.All=All -adafruit_feather.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather.menu.usbstack.picosdk=Pico SDK @@ -1917,6 +1954,10 @@ adafruit_feather_scorpio.menu.opt.Debug=Debug (-Og) adafruit_feather_scorpio.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_scorpio.menu.opt.Disabled=Disabled (-O0) adafruit_feather_scorpio.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_scorpio.menu.os.none=None +adafruit_feather_scorpio.menu.os.none.build.os= +adafruit_feather_scorpio.menu.os.freertos=FreeRTOS SMP +adafruit_feather_scorpio.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_scorpio.menu.profile.Disabled=Disabled adafruit_feather_scorpio.menu.profile.Disabled.build.flags.profile= adafruit_feather_scorpio.menu.profile.Enabled=Enabled @@ -1955,8 +1996,10 @@ adafruit_feather_scorpio.menu.dbglvl.Wire=Wire adafruit_feather_scorpio.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_scorpio.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_scorpio.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_scorpio.menu.dbglvl.LWIP=LWIP +adafruit_feather_scorpio.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_scorpio.menu.dbglvl.All=All -adafruit_feather_scorpio.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_scorpio.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_scorpio.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_scorpio.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_scorpio.menu.usbstack.picosdk=Pico SDK @@ -2177,6 +2220,10 @@ adafruit_feather_dvi.menu.opt.Debug=Debug (-Og) adafruit_feather_dvi.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_dvi.menu.opt.Disabled=Disabled (-O0) adafruit_feather_dvi.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_dvi.menu.os.none=None +adafruit_feather_dvi.menu.os.none.build.os= +adafruit_feather_dvi.menu.os.freertos=FreeRTOS SMP +adafruit_feather_dvi.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_dvi.menu.profile.Disabled=Disabled adafruit_feather_dvi.menu.profile.Disabled.build.flags.profile= adafruit_feather_dvi.menu.profile.Enabled=Enabled @@ -2215,8 +2262,10 @@ adafruit_feather_dvi.menu.dbglvl.Wire=Wire adafruit_feather_dvi.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_dvi.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_dvi.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_dvi.menu.dbglvl.LWIP=LWIP +adafruit_feather_dvi.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_dvi.menu.dbglvl.All=All -adafruit_feather_dvi.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_dvi.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_dvi.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_dvi.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_dvi.menu.usbstack.picosdk=Pico SDK @@ -2437,6 +2486,10 @@ adafruit_feather_adalogger.menu.opt.Debug=Debug (-Og) adafruit_feather_adalogger.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_adalogger.menu.opt.Disabled=Disabled (-O0) adafruit_feather_adalogger.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_adalogger.menu.os.none=None +adafruit_feather_adalogger.menu.os.none.build.os= +adafruit_feather_adalogger.menu.os.freertos=FreeRTOS SMP +adafruit_feather_adalogger.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_adalogger.menu.profile.Disabled=Disabled adafruit_feather_adalogger.menu.profile.Disabled.build.flags.profile= adafruit_feather_adalogger.menu.profile.Enabled=Enabled @@ -2475,8 +2528,10 @@ adafruit_feather_adalogger.menu.dbglvl.Wire=Wire adafruit_feather_adalogger.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_adalogger.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_adalogger.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_adalogger.menu.dbglvl.LWIP=LWIP +adafruit_feather_adalogger.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_adalogger.menu.dbglvl.All=All -adafruit_feather_adalogger.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_adalogger.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_adalogger.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_adalogger.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_adalogger.menu.usbstack.picosdk=Pico SDK @@ -2697,6 +2752,10 @@ adafruit_feather_rfm.menu.opt.Debug=Debug (-Og) adafruit_feather_rfm.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_rfm.menu.opt.Disabled=Disabled (-O0) adafruit_feather_rfm.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_rfm.menu.os.none=None +adafruit_feather_rfm.menu.os.none.build.os= +adafruit_feather_rfm.menu.os.freertos=FreeRTOS SMP +adafruit_feather_rfm.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_rfm.menu.profile.Disabled=Disabled adafruit_feather_rfm.menu.profile.Disabled.build.flags.profile= adafruit_feather_rfm.menu.profile.Enabled=Enabled @@ -2735,8 +2794,10 @@ adafruit_feather_rfm.menu.dbglvl.Wire=Wire adafruit_feather_rfm.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_rfm.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_rfm.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_rfm.menu.dbglvl.LWIP=LWIP +adafruit_feather_rfm.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_rfm.menu.dbglvl.All=All -adafruit_feather_rfm.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_rfm.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_rfm.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_rfm.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_rfm.menu.usbstack.picosdk=Pico SDK @@ -2957,6 +3018,10 @@ adafruit_feather_thinkink.menu.opt.Debug=Debug (-Og) adafruit_feather_thinkink.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_thinkink.menu.opt.Disabled=Disabled (-O0) adafruit_feather_thinkink.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_thinkink.menu.os.none=None +adafruit_feather_thinkink.menu.os.none.build.os= +adafruit_feather_thinkink.menu.os.freertos=FreeRTOS SMP +adafruit_feather_thinkink.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_thinkink.menu.profile.Disabled=Disabled adafruit_feather_thinkink.menu.profile.Disabled.build.flags.profile= adafruit_feather_thinkink.menu.profile.Enabled=Enabled @@ -2995,8 +3060,10 @@ adafruit_feather_thinkink.menu.dbglvl.Wire=Wire adafruit_feather_thinkink.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_thinkink.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_thinkink.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_thinkink.menu.dbglvl.LWIP=LWIP +adafruit_feather_thinkink.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_thinkink.menu.dbglvl.All=All -adafruit_feather_thinkink.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_thinkink.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_thinkink.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_thinkink.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_thinkink.menu.usbstack.picosdk=Pico SDK @@ -3217,6 +3284,10 @@ adafruit_feather_usb_host.menu.opt.Debug=Debug (-Og) adafruit_feather_usb_host.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_usb_host.menu.opt.Disabled=Disabled (-O0) adafruit_feather_usb_host.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_usb_host.menu.os.none=None +adafruit_feather_usb_host.menu.os.none.build.os= +adafruit_feather_usb_host.menu.os.freertos=FreeRTOS SMP +adafruit_feather_usb_host.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_usb_host.menu.profile.Disabled=Disabled adafruit_feather_usb_host.menu.profile.Disabled.build.flags.profile= adafruit_feather_usb_host.menu.profile.Enabled=Enabled @@ -3255,8 +3326,10 @@ adafruit_feather_usb_host.menu.dbglvl.Wire=Wire adafruit_feather_usb_host.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_usb_host.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_usb_host.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_usb_host.menu.dbglvl.LWIP=LWIP +adafruit_feather_usb_host.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_usb_host.menu.dbglvl.All=All -adafruit_feather_usb_host.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_usb_host.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_usb_host.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_usb_host.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_usb_host.menu.usbstack.picosdk=Pico SDK @@ -3477,6 +3550,10 @@ adafruit_feather_can.menu.opt.Debug=Debug (-Og) adafruit_feather_can.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_can.menu.opt.Disabled=Disabled (-O0) adafruit_feather_can.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_can.menu.os.none=None +adafruit_feather_can.menu.os.none.build.os= +adafruit_feather_can.menu.os.freertos=FreeRTOS SMP +adafruit_feather_can.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_can.menu.profile.Disabled=Disabled adafruit_feather_can.menu.profile.Disabled.build.flags.profile= adafruit_feather_can.menu.profile.Enabled=Enabled @@ -3515,8 +3592,10 @@ adafruit_feather_can.menu.dbglvl.Wire=Wire adafruit_feather_can.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_can.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_can.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_can.menu.dbglvl.LWIP=LWIP +adafruit_feather_can.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_can.menu.dbglvl.All=All -adafruit_feather_can.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_can.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_can.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_can.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_can.menu.usbstack.picosdk=Pico SDK @@ -3737,6 +3816,10 @@ adafruit_feather_prop_maker.menu.opt.Debug=Debug (-Og) adafruit_feather_prop_maker.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_prop_maker.menu.opt.Disabled=Disabled (-O0) adafruit_feather_prop_maker.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_prop_maker.menu.os.none=None +adafruit_feather_prop_maker.menu.os.none.build.os= +adafruit_feather_prop_maker.menu.os.freertos=FreeRTOS SMP +adafruit_feather_prop_maker.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_prop_maker.menu.profile.Disabled=Disabled adafruit_feather_prop_maker.menu.profile.Disabled.build.flags.profile= adafruit_feather_prop_maker.menu.profile.Enabled=Enabled @@ -3775,8 +3858,10 @@ adafruit_feather_prop_maker.menu.dbglvl.Wire=Wire adafruit_feather_prop_maker.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_prop_maker.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_prop_maker.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_prop_maker.menu.dbglvl.LWIP=LWIP +adafruit_feather_prop_maker.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_prop_maker.menu.dbglvl.All=All -adafruit_feather_prop_maker.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_prop_maker.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_prop_maker.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_prop_maker.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_prop_maker.menu.usbstack.picosdk=Pico SDK @@ -4005,6 +4090,10 @@ adafruit_itsybitsy.menu.opt.Debug=Debug (-Og) adafruit_itsybitsy.menu.opt.Debug.build.flags.optimize=-Og adafruit_itsybitsy.menu.opt.Disabled=Disabled (-O0) adafruit_itsybitsy.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_itsybitsy.menu.os.none=None +adafruit_itsybitsy.menu.os.none.build.os= +adafruit_itsybitsy.menu.os.freertos=FreeRTOS SMP +adafruit_itsybitsy.menu.os.freertos.build.os=-D__FREERTOS adafruit_itsybitsy.menu.profile.Disabled=Disabled adafruit_itsybitsy.menu.profile.Disabled.build.flags.profile= adafruit_itsybitsy.menu.profile.Enabled=Enabled @@ -4043,8 +4132,10 @@ adafruit_itsybitsy.menu.dbglvl.Wire=Wire adafruit_itsybitsy.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_itsybitsy.menu.dbglvl.Bluetooth=Bluetooth adafruit_itsybitsy.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_itsybitsy.menu.dbglvl.LWIP=LWIP +adafruit_itsybitsy.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_itsybitsy.menu.dbglvl.All=All -adafruit_itsybitsy.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_itsybitsy.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_itsybitsy.menu.dbglvl.NDEBUG=NDEBUG adafruit_itsybitsy.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_itsybitsy.menu.usbstack.picosdk=Pico SDK @@ -4321,6 +4412,10 @@ adafruit_metro.menu.opt.Debug=Debug (-Og) adafruit_metro.menu.opt.Debug.build.flags.optimize=-Og adafruit_metro.menu.opt.Disabled=Disabled (-O0) adafruit_metro.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_metro.menu.os.none=None +adafruit_metro.menu.os.none.build.os= +adafruit_metro.menu.os.freertos=FreeRTOS SMP +adafruit_metro.menu.os.freertos.build.os=-D__FREERTOS adafruit_metro.menu.profile.Disabled=Disabled adafruit_metro.menu.profile.Disabled.build.flags.profile= adafruit_metro.menu.profile.Enabled=Enabled @@ -4359,8 +4454,10 @@ adafruit_metro.menu.dbglvl.Wire=Wire adafruit_metro.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_metro.menu.dbglvl.Bluetooth=Bluetooth adafruit_metro.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_metro.menu.dbglvl.LWIP=LWIP +adafruit_metro.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_metro.menu.dbglvl.All=All -adafruit_metro.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_metro.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_metro.menu.dbglvl.NDEBUG=NDEBUG adafruit_metro.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_metro.menu.usbstack.picosdk=Pico SDK @@ -4589,6 +4686,10 @@ adafruit_qtpy.menu.opt.Debug=Debug (-Og) adafruit_qtpy.menu.opt.Debug.build.flags.optimize=-Og adafruit_qtpy.menu.opt.Disabled=Disabled (-O0) adafruit_qtpy.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_qtpy.menu.os.none=None +adafruit_qtpy.menu.os.none.build.os= +adafruit_qtpy.menu.os.freertos=FreeRTOS SMP +adafruit_qtpy.menu.os.freertos.build.os=-D__FREERTOS adafruit_qtpy.menu.profile.Disabled=Disabled adafruit_qtpy.menu.profile.Disabled.build.flags.profile= adafruit_qtpy.menu.profile.Enabled=Enabled @@ -4627,8 +4728,10 @@ adafruit_qtpy.menu.dbglvl.Wire=Wire adafruit_qtpy.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_qtpy.menu.dbglvl.Bluetooth=Bluetooth adafruit_qtpy.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_qtpy.menu.dbglvl.LWIP=LWIP +adafruit_qtpy.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_qtpy.menu.dbglvl.All=All -adafruit_qtpy.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_qtpy.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_qtpy.menu.dbglvl.NDEBUG=NDEBUG adafruit_qtpy.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_qtpy.menu.usbstack.picosdk=Pico SDK @@ -4857,6 +4960,10 @@ adafruit_stemmafriend.menu.opt.Debug=Debug (-Og) adafruit_stemmafriend.menu.opt.Debug.build.flags.optimize=-Og adafruit_stemmafriend.menu.opt.Disabled=Disabled (-O0) adafruit_stemmafriend.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_stemmafriend.menu.os.none=None +adafruit_stemmafriend.menu.os.none.build.os= +adafruit_stemmafriend.menu.os.freertos=FreeRTOS SMP +adafruit_stemmafriend.menu.os.freertos.build.os=-D__FREERTOS adafruit_stemmafriend.menu.profile.Disabled=Disabled adafruit_stemmafriend.menu.profile.Disabled.build.flags.profile= adafruit_stemmafriend.menu.profile.Enabled=Enabled @@ -4895,8 +5002,10 @@ adafruit_stemmafriend.menu.dbglvl.Wire=Wire adafruit_stemmafriend.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_stemmafriend.menu.dbglvl.Bluetooth=Bluetooth adafruit_stemmafriend.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_stemmafriend.menu.dbglvl.LWIP=LWIP +adafruit_stemmafriend.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_stemmafriend.menu.dbglvl.All=All -adafruit_stemmafriend.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_stemmafriend.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_stemmafriend.menu.dbglvl.NDEBUG=NDEBUG adafruit_stemmafriend.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_stemmafriend.menu.usbstack.picosdk=Pico SDK @@ -5117,6 +5226,10 @@ adafruit_trinkeyrp2040qt.menu.opt.Debug=Debug (-Og) adafruit_trinkeyrp2040qt.menu.opt.Debug.build.flags.optimize=-Og adafruit_trinkeyrp2040qt.menu.opt.Disabled=Disabled (-O0) adafruit_trinkeyrp2040qt.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_trinkeyrp2040qt.menu.os.none=None +adafruit_trinkeyrp2040qt.menu.os.none.build.os= +adafruit_trinkeyrp2040qt.menu.os.freertos=FreeRTOS SMP +adafruit_trinkeyrp2040qt.menu.os.freertos.build.os=-D__FREERTOS adafruit_trinkeyrp2040qt.menu.profile.Disabled=Disabled adafruit_trinkeyrp2040qt.menu.profile.Disabled.build.flags.profile= adafruit_trinkeyrp2040qt.menu.profile.Enabled=Enabled @@ -5155,8 +5268,10 @@ adafruit_trinkeyrp2040qt.menu.dbglvl.Wire=Wire adafruit_trinkeyrp2040qt.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_trinkeyrp2040qt.menu.dbglvl.Bluetooth=Bluetooth adafruit_trinkeyrp2040qt.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_trinkeyrp2040qt.menu.dbglvl.LWIP=LWIP +adafruit_trinkeyrp2040qt.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_trinkeyrp2040qt.menu.dbglvl.All=All -adafruit_trinkeyrp2040qt.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_trinkeyrp2040qt.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_trinkeyrp2040qt.menu.dbglvl.NDEBUG=NDEBUG adafruit_trinkeyrp2040qt.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_trinkeyrp2040qt.menu.usbstack.picosdk=Pico SDK @@ -5377,6 +5492,10 @@ adafruit_macropad2040.menu.opt.Debug=Debug (-Og) adafruit_macropad2040.menu.opt.Debug.build.flags.optimize=-Og adafruit_macropad2040.menu.opt.Disabled=Disabled (-O0) adafruit_macropad2040.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_macropad2040.menu.os.none=None +adafruit_macropad2040.menu.os.none.build.os= +adafruit_macropad2040.menu.os.freertos=FreeRTOS SMP +adafruit_macropad2040.menu.os.freertos.build.os=-D__FREERTOS adafruit_macropad2040.menu.profile.Disabled=Disabled adafruit_macropad2040.menu.profile.Disabled.build.flags.profile= adafruit_macropad2040.menu.profile.Enabled=Enabled @@ -5415,8 +5534,10 @@ adafruit_macropad2040.menu.dbglvl.Wire=Wire adafruit_macropad2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_macropad2040.menu.dbglvl.Bluetooth=Bluetooth adafruit_macropad2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_macropad2040.menu.dbglvl.LWIP=LWIP +adafruit_macropad2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_macropad2040.menu.dbglvl.All=All -adafruit_macropad2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_macropad2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_macropad2040.menu.dbglvl.NDEBUG=NDEBUG adafruit_macropad2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_macropad2040.menu.usbstack.picosdk=Pico SDK @@ -5637,6 +5758,10 @@ adafruit_kb2040.menu.opt.Debug=Debug (-Og) adafruit_kb2040.menu.opt.Debug.build.flags.optimize=-Og adafruit_kb2040.menu.opt.Disabled=Disabled (-O0) adafruit_kb2040.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_kb2040.menu.os.none=None +adafruit_kb2040.menu.os.none.build.os= +adafruit_kb2040.menu.os.freertos=FreeRTOS SMP +adafruit_kb2040.menu.os.freertos.build.os=-D__FREERTOS adafruit_kb2040.menu.profile.Disabled=Disabled adafruit_kb2040.menu.profile.Disabled.build.flags.profile= adafruit_kb2040.menu.profile.Enabled=Enabled @@ -5675,8 +5800,10 @@ adafruit_kb2040.menu.dbglvl.Wire=Wire adafruit_kb2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_kb2040.menu.dbglvl.Bluetooth=Bluetooth adafruit_kb2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_kb2040.menu.dbglvl.LWIP=LWIP +adafruit_kb2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_kb2040.menu.dbglvl.All=All -adafruit_kb2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_kb2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_kb2040.menu.dbglvl.NDEBUG=NDEBUG adafruit_kb2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_kb2040.menu.usbstack.picosdk=Pico SDK @@ -5906,6 +6033,10 @@ 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.os.none=None +adafruit_feather_rp2350_adalogger.menu.os.none.build.os= +adafruit_feather_rp2350_adalogger.menu.os.freertos=FreeRTOS SMP +adafruit_feather_rp2350_adalogger.menu.os.freertos.build.os=-D__FREERTOS 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 @@ -5944,8 +6075,10 @@ 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.LWIP=LWIP +adafruit_feather_rp2350_adalogger.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 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 @@ -6179,6 +6312,10 @@ adafruit_feather_rp2350_hstx.menu.opt.Debug=Debug (-Og) adafruit_feather_rp2350_hstx.menu.opt.Debug.build.flags.optimize=-Og adafruit_feather_rp2350_hstx.menu.opt.Disabled=Disabled (-O0) adafruit_feather_rp2350_hstx.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_feather_rp2350_hstx.menu.os.none=None +adafruit_feather_rp2350_hstx.menu.os.none.build.os= +adafruit_feather_rp2350_hstx.menu.os.freertos=FreeRTOS SMP +adafruit_feather_rp2350_hstx.menu.os.freertos.build.os=-D__FREERTOS adafruit_feather_rp2350_hstx.menu.profile.Disabled=Disabled adafruit_feather_rp2350_hstx.menu.profile.Disabled.build.flags.profile= adafruit_feather_rp2350_hstx.menu.profile.Enabled=Enabled @@ -6217,8 +6354,10 @@ adafruit_feather_rp2350_hstx.menu.dbglvl.Wire=Wire adafruit_feather_rp2350_hstx.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_feather_rp2350_hstx.menu.dbglvl.Bluetooth=Bluetooth adafruit_feather_rp2350_hstx.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_feather_rp2350_hstx.menu.dbglvl.LWIP=LWIP +adafruit_feather_rp2350_hstx.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_feather_rp2350_hstx.menu.dbglvl.All=All -adafruit_feather_rp2350_hstx.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_feather_rp2350_hstx.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_feather_rp2350_hstx.menu.dbglvl.NDEBUG=NDEBUG adafruit_feather_rp2350_hstx.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_feather_rp2350_hstx.menu.usbstack.picosdk=Pico SDK @@ -6491,6 +6630,10 @@ adafruit_floppsy.menu.opt.Debug=Debug (-Og) adafruit_floppsy.menu.opt.Debug.build.flags.optimize=-Og adafruit_floppsy.menu.opt.Disabled=Disabled (-O0) adafruit_floppsy.menu.opt.Disabled.build.flags.optimize=-O0 +adafruit_floppsy.menu.os.none=None +adafruit_floppsy.menu.os.none.build.os= +adafruit_floppsy.menu.os.freertos=FreeRTOS SMP +adafruit_floppsy.menu.os.freertos.build.os=-D__FREERTOS adafruit_floppsy.menu.profile.Disabled=Disabled adafruit_floppsy.menu.profile.Disabled.build.flags.profile= adafruit_floppsy.menu.profile.Enabled=Enabled @@ -6529,8 +6672,10 @@ adafruit_floppsy.menu.dbglvl.Wire=Wire adafruit_floppsy.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE adafruit_floppsy.menu.dbglvl.Bluetooth=Bluetooth adafruit_floppsy.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +adafruit_floppsy.menu.dbglvl.LWIP=LWIP +adafruit_floppsy.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 adafruit_floppsy.menu.dbglvl.All=All -adafruit_floppsy.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +adafruit_floppsy.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_floppsy.menu.dbglvl.NDEBUG=NDEBUG adafruit_floppsy.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_floppsy.menu.usbstack.picosdk=Pico SDK @@ -6824,6 +6969,10 @@ 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.os.none=None +adafruit_metro_rp2350.menu.os.none.build.os= +adafruit_metro_rp2350.menu.os.freertos=FreeRTOS SMP +adafruit_metro_rp2350.menu.os.freertos.build.os=-D__FREERTOS adafruit_metro_rp2350.menu.profile.Disabled=Disabled adafruit_metro_rp2350.menu.profile.Disabled.build.flags.profile= adafruit_metro_rp2350.menu.profile.Enabled=Enabled @@ -6862,8 +7011,10 @@ 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.LWIP=LWIP +adafruit_metro_rp2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 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 @@ -7145,6 +7296,10 @@ 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.os.none=None +adafruit_fruitjam.menu.os.none.build.os= +adafruit_fruitjam.menu.os.freertos=FreeRTOS SMP +adafruit_fruitjam.menu.os.freertos.build.os=-D__FREERTOS adafruit_fruitjam.menu.profile.Disabled=Disabled adafruit_fruitjam.menu.profile.Disabled.build.flags.profile= adafruit_fruitjam.menu.profile.Enabled=Enabled @@ -7183,8 +7338,10 @@ 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.LWIP=LWIP +adafruit_fruitjam.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 adafruit_fruitjam.menu.dbglvl.NDEBUG=NDEBUG adafruit_fruitjam.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruit_fruitjam.menu.usbstack.picosdk=Pico SDK @@ -8238,6 +8395,10 @@ amken_bunny.menu.opt.Debug=Debug (-Og) amken_bunny.menu.opt.Debug.build.flags.optimize=-Og amken_bunny.menu.opt.Disabled=Disabled (-O0) amken_bunny.menu.opt.Disabled.build.flags.optimize=-O0 +amken_bunny.menu.os.none=None +amken_bunny.menu.os.none.build.os= +amken_bunny.menu.os.freertos=FreeRTOS SMP +amken_bunny.menu.os.freertos.build.os=-D__FREERTOS amken_bunny.menu.profile.Disabled=Disabled amken_bunny.menu.profile.Disabled.build.flags.profile= amken_bunny.menu.profile.Enabled=Enabled @@ -8276,8 +8437,10 @@ amken_bunny.menu.dbglvl.Wire=Wire amken_bunny.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE amken_bunny.menu.dbglvl.Bluetooth=Bluetooth amken_bunny.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +amken_bunny.menu.dbglvl.LWIP=LWIP +amken_bunny.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 amken_bunny.menu.dbglvl.All=All -amken_bunny.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +amken_bunny.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 amken_bunny.menu.dbglvl.NDEBUG=NDEBUG amken_bunny.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG amken_bunny.menu.usbstack.picosdk=Pico SDK @@ -8659,6 +8822,10 @@ amken_revelop.menu.opt.Debug=Debug (-Og) amken_revelop.menu.opt.Debug.build.flags.optimize=-Og amken_revelop.menu.opt.Disabled=Disabled (-O0) amken_revelop.menu.opt.Disabled.build.flags.optimize=-O0 +amken_revelop.menu.os.none=None +amken_revelop.menu.os.none.build.os= +amken_revelop.menu.os.freertos=FreeRTOS SMP +amken_revelop.menu.os.freertos.build.os=-D__FREERTOS amken_revelop.menu.profile.Disabled=Disabled amken_revelop.menu.profile.Disabled.build.flags.profile= amken_revelop.menu.profile.Enabled=Enabled @@ -8697,8 +8864,10 @@ amken_revelop.menu.dbglvl.Wire=Wire amken_revelop.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE amken_revelop.menu.dbglvl.Bluetooth=Bluetooth amken_revelop.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +amken_revelop.menu.dbglvl.LWIP=LWIP +amken_revelop.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 amken_revelop.menu.dbglvl.All=All -amken_revelop.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +amken_revelop.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 amken_revelop.menu.dbglvl.NDEBUG=NDEBUG amken_revelop.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG amken_revelop.menu.usbstack.picosdk=Pico SDK @@ -9080,6 +9249,10 @@ amken_revelop_plus.menu.opt.Debug=Debug (-Og) amken_revelop_plus.menu.opt.Debug.build.flags.optimize=-Og amken_revelop_plus.menu.opt.Disabled=Disabled (-O0) amken_revelop_plus.menu.opt.Disabled.build.flags.optimize=-O0 +amken_revelop_plus.menu.os.none=None +amken_revelop_plus.menu.os.none.build.os= +amken_revelop_plus.menu.os.freertos=FreeRTOS SMP +amken_revelop_plus.menu.os.freertos.build.os=-D__FREERTOS amken_revelop_plus.menu.profile.Disabled=Disabled amken_revelop_plus.menu.profile.Disabled.build.flags.profile= amken_revelop_plus.menu.profile.Enabled=Enabled @@ -9118,8 +9291,10 @@ amken_revelop_plus.menu.dbglvl.Wire=Wire amken_revelop_plus.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE amken_revelop_plus.menu.dbglvl.Bluetooth=Bluetooth amken_revelop_plus.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +amken_revelop_plus.menu.dbglvl.LWIP=LWIP +amken_revelop_plus.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 amken_revelop_plus.menu.dbglvl.All=All -amken_revelop_plus.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +amken_revelop_plus.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 amken_revelop_plus.menu.dbglvl.NDEBUG=NDEBUG amken_revelop_plus.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG amken_revelop_plus.menu.usbstack.picosdk=Pico SDK @@ -9389,6 +9564,10 @@ amken_revelop_es.menu.opt.Debug=Debug (-Og) amken_revelop_es.menu.opt.Debug.build.flags.optimize=-Og amken_revelop_es.menu.opt.Disabled=Disabled (-O0) amken_revelop_es.menu.opt.Disabled.build.flags.optimize=-O0 +amken_revelop_es.menu.os.none=None +amken_revelop_es.menu.os.none.build.os= +amken_revelop_es.menu.os.freertos=FreeRTOS SMP +amken_revelop_es.menu.os.freertos.build.os=-D__FREERTOS amken_revelop_es.menu.profile.Disabled=Disabled amken_revelop_es.menu.profile.Disabled.build.flags.profile= amken_revelop_es.menu.profile.Enabled=Enabled @@ -9427,8 +9606,10 @@ amken_revelop_es.menu.dbglvl.Wire=Wire amken_revelop_es.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE amken_revelop_es.menu.dbglvl.Bluetooth=Bluetooth amken_revelop_es.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +amken_revelop_es.menu.dbglvl.LWIP=LWIP +amken_revelop_es.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 amken_revelop_es.menu.dbglvl.All=All -amken_revelop_es.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +amken_revelop_es.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 amken_revelop_es.menu.dbglvl.NDEBUG=NDEBUG amken_revelop_es.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG amken_revelop_es.menu.usbstack.picosdk=Pico SDK @@ -9710,6 +9891,10 @@ jumperless_v1.menu.opt.Debug=Debug (-Og) jumperless_v1.menu.opt.Debug.build.flags.optimize=-Og jumperless_v1.menu.opt.Disabled=Disabled (-O0) jumperless_v1.menu.opt.Disabled.build.flags.optimize=-O0 +jumperless_v1.menu.os.none=None +jumperless_v1.menu.os.none.build.os= +jumperless_v1.menu.os.freertos=FreeRTOS SMP +jumperless_v1.menu.os.freertos.build.os=-D__FREERTOS jumperless_v1.menu.profile.Disabled=Disabled jumperless_v1.menu.profile.Disabled.build.flags.profile= jumperless_v1.menu.profile.Enabled=Enabled @@ -9748,8 +9933,10 @@ jumperless_v1.menu.dbglvl.Wire=Wire jumperless_v1.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE jumperless_v1.menu.dbglvl.Bluetooth=Bluetooth jumperless_v1.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +jumperless_v1.menu.dbglvl.LWIP=LWIP +jumperless_v1.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 jumperless_v1.menu.dbglvl.All=All -jumperless_v1.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +jumperless_v1.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 jumperless_v1.menu.dbglvl.NDEBUG=NDEBUG jumperless_v1.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG jumperless_v1.menu.usbstack.picosdk=Pico SDK @@ -10040,6 +10227,10 @@ jumperless_v5.menu.opt.Debug=Debug (-Og) jumperless_v5.menu.opt.Debug.build.flags.optimize=-Og jumperless_v5.menu.opt.Disabled=Disabled (-O0) jumperless_v5.menu.opt.Disabled.build.flags.optimize=-O0 +jumperless_v5.menu.os.none=None +jumperless_v5.menu.os.none.build.os= +jumperless_v5.menu.os.freertos=FreeRTOS SMP +jumperless_v5.menu.os.freertos.build.os=-D__FREERTOS jumperless_v5.menu.profile.Disabled=Disabled jumperless_v5.menu.profile.Disabled.build.flags.profile= jumperless_v5.menu.profile.Enabled=Enabled @@ -10078,8 +10269,10 @@ jumperless_v5.menu.dbglvl.Wire=Wire jumperless_v5.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE jumperless_v5.menu.dbglvl.Bluetooth=Bluetooth jumperless_v5.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +jumperless_v5.menu.dbglvl.LWIP=LWIP +jumperless_v5.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 jumperless_v5.menu.dbglvl.All=All -jumperless_v5.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +jumperless_v5.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 jumperless_v5.menu.dbglvl.NDEBUG=NDEBUG jumperless_v5.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG jumperless_v5.menu.usbstack.picosdk=Pico SDK @@ -10360,6 +10553,10 @@ arduino_nano_connect.menu.opt.Debug=Debug (-Og) arduino_nano_connect.menu.opt.Debug.build.flags.optimize=-Og arduino_nano_connect.menu.opt.Disabled=Disabled (-O0) arduino_nano_connect.menu.opt.Disabled.build.flags.optimize=-O0 +arduino_nano_connect.menu.os.none=None +arduino_nano_connect.menu.os.none.build.os= +arduino_nano_connect.menu.os.freertos=FreeRTOS SMP +arduino_nano_connect.menu.os.freertos.build.os=-D__FREERTOS arduino_nano_connect.menu.profile.Disabled=Disabled arduino_nano_connect.menu.profile.Disabled.build.flags.profile= arduino_nano_connect.menu.profile.Enabled=Enabled @@ -10398,8 +10595,10 @@ arduino_nano_connect.menu.dbglvl.Wire=Wire arduino_nano_connect.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE arduino_nano_connect.menu.dbglvl.Bluetooth=Bluetooth arduino_nano_connect.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +arduino_nano_connect.menu.dbglvl.LWIP=LWIP +arduino_nano_connect.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 arduino_nano_connect.menu.dbglvl.All=All -arduino_nano_connect.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +arduino_nano_connect.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 arduino_nano_connect.menu.dbglvl.NDEBUG=NDEBUG arduino_nano_connect.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG arduino_nano_connect.menu.usbstack.picosdk=Pico SDK @@ -10598,6 +10797,10 @@ artronshop_rp2_nano.menu.opt.Debug=Debug (-Og) artronshop_rp2_nano.menu.opt.Debug.build.flags.optimize=-Og artronshop_rp2_nano.menu.opt.Disabled=Disabled (-O0) artronshop_rp2_nano.menu.opt.Disabled.build.flags.optimize=-O0 +artronshop_rp2_nano.menu.os.none=None +artronshop_rp2_nano.menu.os.none.build.os= +artronshop_rp2_nano.menu.os.freertos=FreeRTOS SMP +artronshop_rp2_nano.menu.os.freertos.build.os=-D__FREERTOS artronshop_rp2_nano.menu.profile.Disabled=Disabled artronshop_rp2_nano.menu.profile.Disabled.build.flags.profile= artronshop_rp2_nano.menu.profile.Enabled=Enabled @@ -10636,8 +10839,10 @@ artronshop_rp2_nano.menu.dbglvl.Wire=Wire artronshop_rp2_nano.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE artronshop_rp2_nano.menu.dbglvl.Bluetooth=Bluetooth artronshop_rp2_nano.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +artronshop_rp2_nano.menu.dbglvl.LWIP=LWIP +artronshop_rp2_nano.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 artronshop_rp2_nano.menu.dbglvl.All=All -artronshop_rp2_nano.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +artronshop_rp2_nano.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 artronshop_rp2_nano.menu.dbglvl.NDEBUG=NDEBUG artronshop_rp2_nano.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG artronshop_rp2_nano.menu.usbstack.picosdk=Pico SDK @@ -10812,6 +11017,10 @@ bigtreetech_SKR_Pico.menu.opt.Debug=Debug (-Og) bigtreetech_SKR_Pico.menu.opt.Debug.build.flags.optimize=-Og bigtreetech_SKR_Pico.menu.opt.Disabled=Disabled (-O0) bigtreetech_SKR_Pico.menu.opt.Disabled.build.flags.optimize=-O0 +bigtreetech_SKR_Pico.menu.os.none=None +bigtreetech_SKR_Pico.menu.os.none.build.os= +bigtreetech_SKR_Pico.menu.os.freertos=FreeRTOS SMP +bigtreetech_SKR_Pico.menu.os.freertos.build.os=-D__FREERTOS bigtreetech_SKR_Pico.menu.profile.Disabled=Disabled bigtreetech_SKR_Pico.menu.profile.Disabled.build.flags.profile= bigtreetech_SKR_Pico.menu.profile.Enabled=Enabled @@ -10850,8 +11059,10 @@ bigtreetech_SKR_Pico.menu.dbglvl.Wire=Wire bigtreetech_SKR_Pico.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE bigtreetech_SKR_Pico.menu.dbglvl.Bluetooth=Bluetooth bigtreetech_SKR_Pico.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +bigtreetech_SKR_Pico.menu.dbglvl.LWIP=LWIP +bigtreetech_SKR_Pico.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 bigtreetech_SKR_Pico.menu.dbglvl.All=All -bigtreetech_SKR_Pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +bigtreetech_SKR_Pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 bigtreetech_SKR_Pico.menu.dbglvl.NDEBUG=NDEBUG bigtreetech_SKR_Pico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG bigtreetech_SKR_Pico.menu.usbstack.picosdk=Pico SDK @@ -11148,6 +11359,10 @@ breadstick_raspberry.menu.opt.Debug=Debug (-Og) breadstick_raspberry.menu.opt.Debug.build.flags.optimize=-Og breadstick_raspberry.menu.opt.Disabled=Disabled (-O0) breadstick_raspberry.menu.opt.Disabled.build.flags.optimize=-O0 +breadstick_raspberry.menu.os.none=None +breadstick_raspberry.menu.os.none.build.os= +breadstick_raspberry.menu.os.freertos=FreeRTOS SMP +breadstick_raspberry.menu.os.freertos.build.os=-D__FREERTOS breadstick_raspberry.menu.profile.Disabled=Disabled breadstick_raspberry.menu.profile.Disabled.build.flags.profile= breadstick_raspberry.menu.profile.Enabled=Enabled @@ -11186,8 +11401,10 @@ breadstick_raspberry.menu.dbglvl.Wire=Wire breadstick_raspberry.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE breadstick_raspberry.menu.dbglvl.Bluetooth=Bluetooth breadstick_raspberry.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +breadstick_raspberry.menu.dbglvl.LWIP=LWIP +breadstick_raspberry.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 breadstick_raspberry.menu.dbglvl.All=All -breadstick_raspberry.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +breadstick_raspberry.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 breadstick_raspberry.menu.dbglvl.NDEBUG=NDEBUG breadstick_raspberry.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG breadstick_raspberry.menu.usbstack.picosdk=Pico SDK @@ -11429,6 +11646,10 @@ bridgetek_idm2040_7a.menu.opt.Debug=Debug (-Og) bridgetek_idm2040_7a.menu.opt.Debug.build.flags.optimize=-Og bridgetek_idm2040_7a.menu.opt.Disabled=Disabled (-O0) bridgetek_idm2040_7a.menu.opt.Disabled.build.flags.optimize=-O0 +bridgetek_idm2040_7a.menu.os.none=None +bridgetek_idm2040_7a.menu.os.none.build.os= +bridgetek_idm2040_7a.menu.os.freertos=FreeRTOS SMP +bridgetek_idm2040_7a.menu.os.freertos.build.os=-D__FREERTOS bridgetek_idm2040_7a.menu.profile.Disabled=Disabled bridgetek_idm2040_7a.menu.profile.Disabled.build.flags.profile= bridgetek_idm2040_7a.menu.profile.Enabled=Enabled @@ -11467,8 +11688,10 @@ bridgetek_idm2040_7a.menu.dbglvl.Wire=Wire bridgetek_idm2040_7a.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE bridgetek_idm2040_7a.menu.dbglvl.Bluetooth=Bluetooth bridgetek_idm2040_7a.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +bridgetek_idm2040_7a.menu.dbglvl.LWIP=LWIP +bridgetek_idm2040_7a.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 bridgetek_idm2040_7a.menu.dbglvl.All=All -bridgetek_idm2040_7a.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +bridgetek_idm2040_7a.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 bridgetek_idm2040_7a.menu.dbglvl.NDEBUG=NDEBUG bridgetek_idm2040_7a.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG bridgetek_idm2040_7a.menu.usbstack.picosdk=Pico SDK @@ -11686,6 +11909,10 @@ bridgetek_idm2040_43a.menu.opt.Debug=Debug (-Og) bridgetek_idm2040_43a.menu.opt.Debug.build.flags.optimize=-Og bridgetek_idm2040_43a.menu.opt.Disabled=Disabled (-O0) bridgetek_idm2040_43a.menu.opt.Disabled.build.flags.optimize=-O0 +bridgetek_idm2040_43a.menu.os.none=None +bridgetek_idm2040_43a.menu.os.none.build.os= +bridgetek_idm2040_43a.menu.os.freertos=FreeRTOS SMP +bridgetek_idm2040_43a.menu.os.freertos.build.os=-D__FREERTOS bridgetek_idm2040_43a.menu.profile.Disabled=Disabled bridgetek_idm2040_43a.menu.profile.Disabled.build.flags.profile= bridgetek_idm2040_43a.menu.profile.Enabled=Enabled @@ -11724,8 +11951,10 @@ bridgetek_idm2040_43a.menu.dbglvl.Wire=Wire bridgetek_idm2040_43a.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE bridgetek_idm2040_43a.menu.dbglvl.Bluetooth=Bluetooth bridgetek_idm2040_43a.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +bridgetek_idm2040_43a.menu.dbglvl.LWIP=LWIP +bridgetek_idm2040_43a.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 bridgetek_idm2040_43a.menu.dbglvl.All=All -bridgetek_idm2040_43a.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +bridgetek_idm2040_43a.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 bridgetek_idm2040_43a.menu.dbglvl.NDEBUG=NDEBUG bridgetek_idm2040_43a.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG bridgetek_idm2040_43a.menu.usbstack.picosdk=Pico SDK @@ -11933,6 +12162,10 @@ cytron_iriv_io_controller.menu.opt.Debug=Debug (-Og) cytron_iriv_io_controller.menu.opt.Debug.build.flags.optimize=-Og cytron_iriv_io_controller.menu.opt.Disabled=Disabled (-O0) cytron_iriv_io_controller.menu.opt.Disabled.build.flags.optimize=-O0 +cytron_iriv_io_controller.menu.os.none=None +cytron_iriv_io_controller.menu.os.none.build.os= +cytron_iriv_io_controller.menu.os.freertos=FreeRTOS SMP +cytron_iriv_io_controller.menu.os.freertos.build.os=-D__FREERTOS cytron_iriv_io_controller.menu.profile.Disabled=Disabled cytron_iriv_io_controller.menu.profile.Disabled.build.flags.profile= cytron_iriv_io_controller.menu.profile.Enabled=Enabled @@ -11971,8 +12204,10 @@ cytron_iriv_io_controller.menu.dbglvl.Wire=Wire cytron_iriv_io_controller.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE cytron_iriv_io_controller.menu.dbglvl.Bluetooth=Bluetooth cytron_iriv_io_controller.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +cytron_iriv_io_controller.menu.dbglvl.LWIP=LWIP +cytron_iriv_io_controller.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 cytron_iriv_io_controller.menu.dbglvl.All=All -cytron_iriv_io_controller.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +cytron_iriv_io_controller.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 cytron_iriv_io_controller.menu.dbglvl.NDEBUG=NDEBUG cytron_iriv_io_controller.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG cytron_iriv_io_controller.menu.usbstack.picosdk=Pico SDK @@ -12171,6 +12406,10 @@ cytron_maker_nano_rp2040.menu.opt.Debug=Debug (-Og) cytron_maker_nano_rp2040.menu.opt.Debug.build.flags.optimize=-Og cytron_maker_nano_rp2040.menu.opt.Disabled=Disabled (-O0) cytron_maker_nano_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +cytron_maker_nano_rp2040.menu.os.none=None +cytron_maker_nano_rp2040.menu.os.none.build.os= +cytron_maker_nano_rp2040.menu.os.freertos=FreeRTOS SMP +cytron_maker_nano_rp2040.menu.os.freertos.build.os=-D__FREERTOS cytron_maker_nano_rp2040.menu.profile.Disabled=Disabled cytron_maker_nano_rp2040.menu.profile.Disabled.build.flags.profile= cytron_maker_nano_rp2040.menu.profile.Enabled=Enabled @@ -12209,8 +12448,10 @@ cytron_maker_nano_rp2040.menu.dbglvl.Wire=Wire cytron_maker_nano_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE cytron_maker_nano_rp2040.menu.dbglvl.Bluetooth=Bluetooth cytron_maker_nano_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +cytron_maker_nano_rp2040.menu.dbglvl.LWIP=LWIP +cytron_maker_nano_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 cytron_maker_nano_rp2040.menu.dbglvl.All=All -cytron_maker_nano_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +cytron_maker_nano_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 cytron_maker_nano_rp2040.menu.dbglvl.NDEBUG=NDEBUG cytron_maker_nano_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG cytron_maker_nano_rp2040.menu.usbstack.picosdk=Pico SDK @@ -12409,6 +12650,10 @@ cytron_maker_pi_rp2040.menu.opt.Debug=Debug (-Og) cytron_maker_pi_rp2040.menu.opt.Debug.build.flags.optimize=-Og cytron_maker_pi_rp2040.menu.opt.Disabled=Disabled (-O0) cytron_maker_pi_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +cytron_maker_pi_rp2040.menu.os.none=None +cytron_maker_pi_rp2040.menu.os.none.build.os= +cytron_maker_pi_rp2040.menu.os.freertos=FreeRTOS SMP +cytron_maker_pi_rp2040.menu.os.freertos.build.os=-D__FREERTOS cytron_maker_pi_rp2040.menu.profile.Disabled=Disabled cytron_maker_pi_rp2040.menu.profile.Disabled.build.flags.profile= cytron_maker_pi_rp2040.menu.profile.Enabled=Enabled @@ -12447,8 +12692,10 @@ cytron_maker_pi_rp2040.menu.dbglvl.Wire=Wire cytron_maker_pi_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE cytron_maker_pi_rp2040.menu.dbglvl.Bluetooth=Bluetooth cytron_maker_pi_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +cytron_maker_pi_rp2040.menu.dbglvl.LWIP=LWIP +cytron_maker_pi_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 cytron_maker_pi_rp2040.menu.dbglvl.All=All -cytron_maker_pi_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +cytron_maker_pi_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 cytron_maker_pi_rp2040.menu.dbglvl.NDEBUG=NDEBUG cytron_maker_pi_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG cytron_maker_pi_rp2040.menu.usbstack.picosdk=Pico SDK @@ -12647,6 +12894,10 @@ cytron_maker_uno_rp2040.menu.opt.Debug=Debug (-Og) cytron_maker_uno_rp2040.menu.opt.Debug.build.flags.optimize=-Og cytron_maker_uno_rp2040.menu.opt.Disabled=Disabled (-O0) cytron_maker_uno_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +cytron_maker_uno_rp2040.menu.os.none=None +cytron_maker_uno_rp2040.menu.os.none.build.os= +cytron_maker_uno_rp2040.menu.os.freertos=FreeRTOS SMP +cytron_maker_uno_rp2040.menu.os.freertos.build.os=-D__FREERTOS cytron_maker_uno_rp2040.menu.profile.Disabled=Disabled cytron_maker_uno_rp2040.menu.profile.Disabled.build.flags.profile= cytron_maker_uno_rp2040.menu.profile.Enabled=Enabled @@ -12685,8 +12936,10 @@ cytron_maker_uno_rp2040.menu.dbglvl.Wire=Wire cytron_maker_uno_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE cytron_maker_uno_rp2040.menu.dbglvl.Bluetooth=Bluetooth cytron_maker_uno_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +cytron_maker_uno_rp2040.menu.dbglvl.LWIP=LWIP +cytron_maker_uno_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 cytron_maker_uno_rp2040.menu.dbglvl.All=All -cytron_maker_uno_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +cytron_maker_uno_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 cytron_maker_uno_rp2040.menu.dbglvl.NDEBUG=NDEBUG cytron_maker_uno_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG cytron_maker_uno_rp2040.menu.usbstack.picosdk=Pico SDK @@ -12894,6 +13147,10 @@ cytron_motion_2350_pro.menu.opt.Debug=Debug (-Og) cytron_motion_2350_pro.menu.opt.Debug.build.flags.optimize=-Og cytron_motion_2350_pro.menu.opt.Disabled=Disabled (-O0) cytron_motion_2350_pro.menu.opt.Disabled.build.flags.optimize=-O0 +cytron_motion_2350_pro.menu.os.none=None +cytron_motion_2350_pro.menu.os.none.build.os= +cytron_motion_2350_pro.menu.os.freertos=FreeRTOS SMP +cytron_motion_2350_pro.menu.os.freertos.build.os=-D__FREERTOS cytron_motion_2350_pro.menu.profile.Disabled=Disabled cytron_motion_2350_pro.menu.profile.Disabled.build.flags.profile= cytron_motion_2350_pro.menu.profile.Enabled=Enabled @@ -12932,8 +13189,10 @@ cytron_motion_2350_pro.menu.dbglvl.Wire=Wire cytron_motion_2350_pro.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE cytron_motion_2350_pro.menu.dbglvl.Bluetooth=Bluetooth cytron_motion_2350_pro.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +cytron_motion_2350_pro.menu.dbglvl.LWIP=LWIP +cytron_motion_2350_pro.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 cytron_motion_2350_pro.menu.dbglvl.All=All -cytron_motion_2350_pro.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +cytron_motion_2350_pro.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 cytron_motion_2350_pro.menu.dbglvl.NDEBUG=NDEBUG cytron_motion_2350_pro.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG cytron_motion_2350_pro.menu.usbstack.picosdk=Pico SDK @@ -13132,6 +13391,10 @@ datanoisetv_picoadk.menu.opt.Debug=Debug (-Og) datanoisetv_picoadk.menu.opt.Debug.build.flags.optimize=-Og datanoisetv_picoadk.menu.opt.Disabled=Disabled (-O0) datanoisetv_picoadk.menu.opt.Disabled.build.flags.optimize=-O0 +datanoisetv_picoadk.menu.os.none=None +datanoisetv_picoadk.menu.os.none.build.os= +datanoisetv_picoadk.menu.os.freertos=FreeRTOS SMP +datanoisetv_picoadk.menu.os.freertos.build.os=-D__FREERTOS datanoisetv_picoadk.menu.profile.Disabled=Disabled datanoisetv_picoadk.menu.profile.Disabled.build.flags.profile= datanoisetv_picoadk.menu.profile.Enabled=Enabled @@ -13170,8 +13433,10 @@ datanoisetv_picoadk.menu.dbglvl.Wire=Wire datanoisetv_picoadk.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE datanoisetv_picoadk.menu.dbglvl.Bluetooth=Bluetooth datanoisetv_picoadk.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +datanoisetv_picoadk.menu.dbglvl.LWIP=LWIP +datanoisetv_picoadk.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 datanoisetv_picoadk.menu.dbglvl.All=All -datanoisetv_picoadk.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +datanoisetv_picoadk.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 datanoisetv_picoadk.menu.dbglvl.NDEBUG=NDEBUG datanoisetv_picoadk.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG datanoisetv_picoadk.menu.usbstack.picosdk=Pico SDK @@ -13405,6 +13670,10 @@ datanoisetv_picoadk_v2.menu.opt.Debug=Debug (-Og) datanoisetv_picoadk_v2.menu.opt.Debug.build.flags.optimize=-Og datanoisetv_picoadk_v2.menu.opt.Disabled=Disabled (-O0) datanoisetv_picoadk_v2.menu.opt.Disabled.build.flags.optimize=-O0 +datanoisetv_picoadk_v2.menu.os.none=None +datanoisetv_picoadk_v2.menu.os.none.build.os= +datanoisetv_picoadk_v2.menu.os.freertos=FreeRTOS SMP +datanoisetv_picoadk_v2.menu.os.freertos.build.os=-D__FREERTOS datanoisetv_picoadk_v2.menu.profile.Disabled=Disabled datanoisetv_picoadk_v2.menu.profile.Disabled.build.flags.profile= datanoisetv_picoadk_v2.menu.profile.Enabled=Enabled @@ -13443,8 +13712,10 @@ datanoisetv_picoadk_v2.menu.dbglvl.Wire=Wire datanoisetv_picoadk_v2.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE datanoisetv_picoadk_v2.menu.dbglvl.Bluetooth=Bluetooth datanoisetv_picoadk_v2.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +datanoisetv_picoadk_v2.menu.dbglvl.LWIP=LWIP +datanoisetv_picoadk_v2.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 datanoisetv_picoadk_v2.menu.dbglvl.All=All -datanoisetv_picoadk_v2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +datanoisetv_picoadk_v2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 datanoisetv_picoadk_v2.menu.dbglvl.NDEBUG=NDEBUG datanoisetv_picoadk_v2.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG datanoisetv_picoadk_v2.menu.usbstack.picosdk=Pico SDK @@ -13717,6 +13988,10 @@ degz_suibo.menu.opt.Debug=Debug (-Og) degz_suibo.menu.opt.Debug.build.flags.optimize=-Og degz_suibo.menu.opt.Disabled=Disabled (-O0) degz_suibo.menu.opt.Disabled.build.flags.optimize=-O0 +degz_suibo.menu.os.none=None +degz_suibo.menu.os.none.build.os= +degz_suibo.menu.os.freertos=FreeRTOS SMP +degz_suibo.menu.os.freertos.build.os=-D__FREERTOS degz_suibo.menu.profile.Disabled=Disabled degz_suibo.menu.profile.Disabled.build.flags.profile= degz_suibo.menu.profile.Enabled=Enabled @@ -13755,8 +14030,10 @@ degz_suibo.menu.dbglvl.Wire=Wire degz_suibo.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE degz_suibo.menu.dbglvl.Bluetooth=Bluetooth degz_suibo.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +degz_suibo.menu.dbglvl.LWIP=LWIP +degz_suibo.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 degz_suibo.menu.dbglvl.All=All -degz_suibo.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +degz_suibo.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 degz_suibo.menu.dbglvl.NDEBUG=NDEBUG degz_suibo.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG degz_suibo.menu.usbstack.picosdk=Pico SDK @@ -13969,6 +14246,10 @@ flyboard2040_core.menu.opt.Debug=Debug (-Og) flyboard2040_core.menu.opt.Debug.build.flags.optimize=-Og flyboard2040_core.menu.opt.Disabled=Disabled (-O0) flyboard2040_core.menu.opt.Disabled.build.flags.optimize=-O0 +flyboard2040_core.menu.os.none=None +flyboard2040_core.menu.os.none.build.os= +flyboard2040_core.menu.os.freertos=FreeRTOS SMP +flyboard2040_core.menu.os.freertos.build.os=-D__FREERTOS flyboard2040_core.menu.profile.Disabled=Disabled flyboard2040_core.menu.profile.Disabled.build.flags.profile= flyboard2040_core.menu.profile.Enabled=Enabled @@ -14007,8 +14288,10 @@ flyboard2040_core.menu.dbglvl.Wire=Wire flyboard2040_core.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE flyboard2040_core.menu.dbglvl.Bluetooth=Bluetooth flyboard2040_core.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +flyboard2040_core.menu.dbglvl.LWIP=LWIP +flyboard2040_core.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 flyboard2040_core.menu.dbglvl.All=All -flyboard2040_core.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +flyboard2040_core.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 flyboard2040_core.menu.dbglvl.NDEBUG=NDEBUG flyboard2040_core.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG flyboard2040_core.menu.usbstack.picosdk=Pico SDK @@ -14191,6 +14474,10 @@ dfrobot_beetle_rp2040.menu.opt.Debug=Debug (-Og) dfrobot_beetle_rp2040.menu.opt.Debug.build.flags.optimize=-Og dfrobot_beetle_rp2040.menu.opt.Disabled=Disabled (-O0) dfrobot_beetle_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +dfrobot_beetle_rp2040.menu.os.none=None +dfrobot_beetle_rp2040.menu.os.none.build.os= +dfrobot_beetle_rp2040.menu.os.freertos=FreeRTOS SMP +dfrobot_beetle_rp2040.menu.os.freertos.build.os=-D__FREERTOS dfrobot_beetle_rp2040.menu.profile.Disabled=Disabled dfrobot_beetle_rp2040.menu.profile.Disabled.build.flags.profile= dfrobot_beetle_rp2040.menu.profile.Enabled=Enabled @@ -14229,8 +14516,10 @@ dfrobot_beetle_rp2040.menu.dbglvl.Wire=Wire dfrobot_beetle_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE dfrobot_beetle_rp2040.menu.dbglvl.Bluetooth=Bluetooth dfrobot_beetle_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +dfrobot_beetle_rp2040.menu.dbglvl.LWIP=LWIP +dfrobot_beetle_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 dfrobot_beetle_rp2040.menu.dbglvl.All=All -dfrobot_beetle_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +dfrobot_beetle_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 dfrobot_beetle_rp2040.menu.dbglvl.NDEBUG=NDEBUG dfrobot_beetle_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG dfrobot_beetle_rp2040.menu.usbstack.picosdk=Pico SDK @@ -14443,6 +14732,10 @@ DudesCab.menu.opt.Debug=Debug (-Og) DudesCab.menu.opt.Debug.build.flags.optimize=-Og DudesCab.menu.opt.Disabled=Disabled (-O0) DudesCab.menu.opt.Disabled.build.flags.optimize=-O0 +DudesCab.menu.os.none=None +DudesCab.menu.os.none.build.os= +DudesCab.menu.os.freertos=FreeRTOS SMP +DudesCab.menu.os.freertos.build.os=-D__FREERTOS DudesCab.menu.profile.Disabled=Disabled DudesCab.menu.profile.Disabled.build.flags.profile= DudesCab.menu.profile.Enabled=Enabled @@ -14481,8 +14774,10 @@ DudesCab.menu.dbglvl.Wire=Wire DudesCab.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE DudesCab.menu.dbglvl.Bluetooth=Bluetooth DudesCab.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +DudesCab.menu.dbglvl.LWIP=LWIP +DudesCab.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 DudesCab.menu.dbglvl.All=All -DudesCab.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +DudesCab.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 DudesCab.menu.dbglvl.NDEBUG=NDEBUG DudesCab.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG DudesCab.menu.usbstack.picosdk=Pico SDK @@ -14681,6 +14976,10 @@ electroniccats_huntercat_nfc.menu.opt.Debug=Debug (-Og) electroniccats_huntercat_nfc.menu.opt.Debug.build.flags.optimize=-Og electroniccats_huntercat_nfc.menu.opt.Disabled=Disabled (-O0) electroniccats_huntercat_nfc.menu.opt.Disabled.build.flags.optimize=-O0 +electroniccats_huntercat_nfc.menu.os.none=None +electroniccats_huntercat_nfc.menu.os.none.build.os= +electroniccats_huntercat_nfc.menu.os.freertos=FreeRTOS SMP +electroniccats_huntercat_nfc.menu.os.freertos.build.os=-D__FREERTOS electroniccats_huntercat_nfc.menu.profile.Disabled=Disabled electroniccats_huntercat_nfc.menu.profile.Disabled.build.flags.profile= electroniccats_huntercat_nfc.menu.profile.Enabled=Enabled @@ -14719,8 +15018,10 @@ electroniccats_huntercat_nfc.menu.dbglvl.Wire=Wire electroniccats_huntercat_nfc.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE electroniccats_huntercat_nfc.menu.dbglvl.Bluetooth=Bluetooth electroniccats_huntercat_nfc.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +electroniccats_huntercat_nfc.menu.dbglvl.LWIP=LWIP +electroniccats_huntercat_nfc.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 electroniccats_huntercat_nfc.menu.dbglvl.All=All -electroniccats_huntercat_nfc.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +electroniccats_huntercat_nfc.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 electroniccats_huntercat_nfc.menu.dbglvl.NDEBUG=NDEBUG electroniccats_huntercat_nfc.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG electroniccats_huntercat_nfc.menu.usbstack.picosdk=Pico SDK @@ -14993,6 +15294,10 @@ evn_alpha.menu.opt.Debug=Debug (-Og) evn_alpha.menu.opt.Debug.build.flags.optimize=-Og evn_alpha.menu.opt.Disabled=Disabled (-O0) evn_alpha.menu.opt.Disabled.build.flags.optimize=-O0 +evn_alpha.menu.os.none=None +evn_alpha.menu.os.none.build.os= +evn_alpha.menu.os.freertos=FreeRTOS SMP +evn_alpha.menu.os.freertos.build.os=-D__FREERTOS evn_alpha.menu.profile.Disabled=Disabled evn_alpha.menu.profile.Disabled.build.flags.profile= evn_alpha.menu.profile.Enabled=Enabled @@ -15031,8 +15336,10 @@ evn_alpha.menu.dbglvl.Wire=Wire evn_alpha.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE evn_alpha.menu.dbglvl.Bluetooth=Bluetooth evn_alpha.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +evn_alpha.menu.dbglvl.LWIP=LWIP +evn_alpha.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 evn_alpha.menu.dbglvl.All=All -evn_alpha.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +evn_alpha.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 evn_alpha.menu.dbglvl.NDEBUG=NDEBUG evn_alpha.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG evn_alpha.menu.usbstack.picosdk=Pico SDK @@ -15207,6 +15514,10 @@ extelec_rc2040.menu.opt.Debug=Debug (-Og) extelec_rc2040.menu.opt.Debug.build.flags.optimize=-Og extelec_rc2040.menu.opt.Disabled=Disabled (-O0) extelec_rc2040.menu.opt.Disabled.build.flags.optimize=-O0 +extelec_rc2040.menu.os.none=None +extelec_rc2040.menu.os.none.build.os= +extelec_rc2040.menu.os.freertos=FreeRTOS SMP +extelec_rc2040.menu.os.freertos.build.os=-D__FREERTOS extelec_rc2040.menu.profile.Disabled=Disabled extelec_rc2040.menu.profile.Disabled.build.flags.profile= extelec_rc2040.menu.profile.Enabled=Enabled @@ -15245,8 +15556,10 @@ extelec_rc2040.menu.dbglvl.Wire=Wire extelec_rc2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE extelec_rc2040.menu.dbglvl.Bluetooth=Bluetooth extelec_rc2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +extelec_rc2040.menu.dbglvl.LWIP=LWIP +extelec_rc2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 extelec_rc2040.menu.dbglvl.All=All -extelec_rc2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +extelec_rc2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 extelec_rc2040.menu.dbglvl.NDEBUG=NDEBUG extelec_rc2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG extelec_rc2040.menu.usbstack.picosdk=Pico SDK @@ -15487,6 +15800,10 @@ groundstudio_marble_pico.menu.opt.Debug=Debug (-Og) groundstudio_marble_pico.menu.opt.Debug.build.flags.optimize=-Og groundstudio_marble_pico.menu.opt.Disabled=Disabled (-O0) groundstudio_marble_pico.menu.opt.Disabled.build.flags.optimize=-O0 +groundstudio_marble_pico.menu.os.none=None +groundstudio_marble_pico.menu.os.none.build.os= +groundstudio_marble_pico.menu.os.freertos=FreeRTOS SMP +groundstudio_marble_pico.menu.os.freertos.build.os=-D__FREERTOS groundstudio_marble_pico.menu.profile.Disabled=Disabled groundstudio_marble_pico.menu.profile.Disabled.build.flags.profile= groundstudio_marble_pico.menu.profile.Enabled=Enabled @@ -15525,8 +15842,10 @@ groundstudio_marble_pico.menu.dbglvl.Wire=Wire groundstudio_marble_pico.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE groundstudio_marble_pico.menu.dbglvl.Bluetooth=Bluetooth groundstudio_marble_pico.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +groundstudio_marble_pico.menu.dbglvl.LWIP=LWIP +groundstudio_marble_pico.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 groundstudio_marble_pico.menu.dbglvl.All=All -groundstudio_marble_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +groundstudio_marble_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 groundstudio_marble_pico.menu.dbglvl.NDEBUG=NDEBUG groundstudio_marble_pico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG groundstudio_marble_pico.menu.usbstack.picosdk=Pico SDK @@ -15767,6 +16086,10 @@ challenger_2040_lte.menu.opt.Debug=Debug (-Og) challenger_2040_lte.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_lte.menu.opt.Disabled=Disabled (-O0) challenger_2040_lte.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_lte.menu.os.none=None +challenger_2040_lte.menu.os.none.build.os= +challenger_2040_lte.menu.os.freertos=FreeRTOS SMP +challenger_2040_lte.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_lte.menu.profile.Disabled=Disabled challenger_2040_lte.menu.profile.Disabled.build.flags.profile= challenger_2040_lte.menu.profile.Enabled=Enabled @@ -15805,8 +16128,10 @@ challenger_2040_lte.menu.dbglvl.Wire=Wire challenger_2040_lte.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_lte.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_lte.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_lte.menu.dbglvl.LWIP=LWIP +challenger_2040_lte.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_lte.menu.dbglvl.All=All -challenger_2040_lte.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_lte.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_lte.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_lte.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_lte.menu.usbstack.picosdk=Pico SDK @@ -16047,6 +16372,10 @@ challenger_2040_lora.menu.opt.Debug=Debug (-Og) challenger_2040_lora.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_lora.menu.opt.Disabled=Disabled (-O0) challenger_2040_lora.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_lora.menu.os.none=None +challenger_2040_lora.menu.os.none.build.os= +challenger_2040_lora.menu.os.freertos=FreeRTOS SMP +challenger_2040_lora.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_lora.menu.profile.Disabled=Disabled challenger_2040_lora.menu.profile.Disabled.build.flags.profile= challenger_2040_lora.menu.profile.Enabled=Enabled @@ -16085,8 +16414,10 @@ challenger_2040_lora.menu.dbglvl.Wire=Wire challenger_2040_lora.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_lora.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_lora.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_lora.menu.dbglvl.LWIP=LWIP +challenger_2040_lora.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_lora.menu.dbglvl.All=All -challenger_2040_lora.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_lora.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_lora.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_lora.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_lora.menu.usbstack.picosdk=Pico SDK @@ -16327,6 +16658,10 @@ challenger_2040_subghz.menu.opt.Debug=Debug (-Og) challenger_2040_subghz.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_subghz.menu.opt.Disabled=Disabled (-O0) challenger_2040_subghz.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_subghz.menu.os.none=None +challenger_2040_subghz.menu.os.none.build.os= +challenger_2040_subghz.menu.os.freertos=FreeRTOS SMP +challenger_2040_subghz.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_subghz.menu.profile.Disabled=Disabled challenger_2040_subghz.menu.profile.Disabled.build.flags.profile= challenger_2040_subghz.menu.profile.Enabled=Enabled @@ -16365,8 +16700,10 @@ challenger_2040_subghz.menu.dbglvl.Wire=Wire challenger_2040_subghz.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_subghz.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_subghz.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_subghz.menu.dbglvl.LWIP=LWIP +challenger_2040_subghz.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_subghz.menu.dbglvl.All=All -challenger_2040_subghz.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_subghz.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_subghz.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_subghz.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_subghz.menu.usbstack.picosdk=Pico SDK @@ -16608,6 +16945,10 @@ challenger_2040_wifi.menu.opt.Debug=Debug (-Og) challenger_2040_wifi.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_wifi.menu.opt.Disabled=Disabled (-O0) challenger_2040_wifi.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_wifi.menu.os.none=None +challenger_2040_wifi.menu.os.none.build.os= +challenger_2040_wifi.menu.os.freertos=FreeRTOS SMP +challenger_2040_wifi.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_wifi.menu.profile.Disabled=Disabled challenger_2040_wifi.menu.profile.Disabled.build.flags.profile= challenger_2040_wifi.menu.profile.Enabled=Enabled @@ -16646,8 +16987,10 @@ challenger_2040_wifi.menu.dbglvl.Wire=Wire challenger_2040_wifi.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_wifi.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_wifi.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_wifi.menu.dbglvl.LWIP=LWIP +challenger_2040_wifi.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_wifi.menu.dbglvl.All=All -challenger_2040_wifi.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_wifi.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_wifi.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_wifi.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_wifi.menu.usbstack.picosdk=Pico SDK @@ -16989,6 +17332,10 @@ challenger_2040_wifi_ble.menu.opt.Debug=Debug (-Og) challenger_2040_wifi_ble.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_wifi_ble.menu.opt.Disabled=Disabled (-O0) challenger_2040_wifi_ble.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_wifi_ble.menu.os.none=None +challenger_2040_wifi_ble.menu.os.none.build.os= +challenger_2040_wifi_ble.menu.os.freertos=FreeRTOS SMP +challenger_2040_wifi_ble.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_wifi_ble.menu.profile.Disabled=Disabled challenger_2040_wifi_ble.menu.profile.Disabled.build.flags.profile= challenger_2040_wifi_ble.menu.profile.Enabled=Enabled @@ -17027,8 +17374,10 @@ challenger_2040_wifi_ble.menu.dbglvl.Wire=Wire challenger_2040_wifi_ble.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_wifi_ble.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_wifi_ble.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_wifi_ble.menu.dbglvl.LWIP=LWIP +challenger_2040_wifi_ble.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_wifi_ble.menu.dbglvl.All=All -challenger_2040_wifi_ble.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_wifi_ble.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_wifi_ble.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_wifi_ble.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_wifi_ble.menu.usbstack.picosdk=Pico SDK @@ -17270,6 +17619,10 @@ challenger_2040_wifi6_ble.menu.opt.Debug=Debug (-Og) challenger_2040_wifi6_ble.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_wifi6_ble.menu.opt.Disabled=Disabled (-O0) challenger_2040_wifi6_ble.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_wifi6_ble.menu.os.none=None +challenger_2040_wifi6_ble.menu.os.none.build.os= +challenger_2040_wifi6_ble.menu.os.freertos=FreeRTOS SMP +challenger_2040_wifi6_ble.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_wifi6_ble.menu.profile.Disabled=Disabled challenger_2040_wifi6_ble.menu.profile.Disabled.build.flags.profile= challenger_2040_wifi6_ble.menu.profile.Enabled=Enabled @@ -17308,8 +17661,10 @@ challenger_2040_wifi6_ble.menu.dbglvl.Wire=Wire challenger_2040_wifi6_ble.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_wifi6_ble.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_wifi6_ble.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_wifi6_ble.menu.dbglvl.LWIP=LWIP +challenger_2040_wifi6_ble.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_wifi6_ble.menu.dbglvl.All=All -challenger_2040_wifi6_ble.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_wifi6_ble.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_wifi6_ble.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_wifi6_ble.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_wifi6_ble.menu.usbstack.picosdk=Pico SDK @@ -17551,6 +17906,10 @@ challenger_nb_2040_wifi.menu.opt.Debug=Debug (-Og) challenger_nb_2040_wifi.menu.opt.Debug.build.flags.optimize=-Og challenger_nb_2040_wifi.menu.opt.Disabled=Disabled (-O0) challenger_nb_2040_wifi.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_nb_2040_wifi.menu.os.none=None +challenger_nb_2040_wifi.menu.os.none.build.os= +challenger_nb_2040_wifi.menu.os.freertos=FreeRTOS SMP +challenger_nb_2040_wifi.menu.os.freertos.build.os=-D__FREERTOS challenger_nb_2040_wifi.menu.profile.Disabled=Disabled challenger_nb_2040_wifi.menu.profile.Disabled.build.flags.profile= challenger_nb_2040_wifi.menu.profile.Enabled=Enabled @@ -17589,8 +17948,10 @@ challenger_nb_2040_wifi.menu.dbglvl.Wire=Wire challenger_nb_2040_wifi.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_nb_2040_wifi.menu.dbglvl.Bluetooth=Bluetooth challenger_nb_2040_wifi.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_nb_2040_wifi.menu.dbglvl.LWIP=LWIP +challenger_nb_2040_wifi.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_nb_2040_wifi.menu.dbglvl.All=All -challenger_nb_2040_wifi.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_nb_2040_wifi.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_nb_2040_wifi.menu.dbglvl.NDEBUG=NDEBUG challenger_nb_2040_wifi.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_nb_2040_wifi.menu.usbstack.picosdk=Pico SDK @@ -17831,6 +18192,10 @@ challenger_2040_sdrtc.menu.opt.Debug=Debug (-Og) challenger_2040_sdrtc.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_sdrtc.menu.opt.Disabled=Disabled (-O0) challenger_2040_sdrtc.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_sdrtc.menu.os.none=None +challenger_2040_sdrtc.menu.os.none.build.os= +challenger_2040_sdrtc.menu.os.freertos=FreeRTOS SMP +challenger_2040_sdrtc.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_sdrtc.menu.profile.Disabled=Disabled challenger_2040_sdrtc.menu.profile.Disabled.build.flags.profile= challenger_2040_sdrtc.menu.profile.Enabled=Enabled @@ -17869,8 +18234,10 @@ challenger_2040_sdrtc.menu.dbglvl.Wire=Wire challenger_2040_sdrtc.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_sdrtc.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_sdrtc.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_sdrtc.menu.dbglvl.LWIP=LWIP +challenger_2040_sdrtc.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_sdrtc.menu.dbglvl.All=All -challenger_2040_sdrtc.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_sdrtc.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_sdrtc.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_sdrtc.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_sdrtc.menu.usbstack.picosdk=Pico SDK @@ -18111,6 +18478,10 @@ challenger_2040_nfc.menu.opt.Debug=Debug (-Og) challenger_2040_nfc.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_nfc.menu.opt.Disabled=Disabled (-O0) challenger_2040_nfc.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_nfc.menu.os.none=None +challenger_2040_nfc.menu.os.none.build.os= +challenger_2040_nfc.menu.os.freertos=FreeRTOS SMP +challenger_2040_nfc.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_nfc.menu.profile.Disabled=Disabled challenger_2040_nfc.menu.profile.Disabled.build.flags.profile= challenger_2040_nfc.menu.profile.Enabled=Enabled @@ -18149,8 +18520,10 @@ challenger_2040_nfc.menu.dbglvl.Wire=Wire challenger_2040_nfc.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_nfc.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_nfc.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_nfc.menu.dbglvl.LWIP=LWIP +challenger_2040_nfc.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_nfc.menu.dbglvl.All=All -challenger_2040_nfc.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_nfc.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_nfc.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_nfc.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_nfc.menu.usbstack.picosdk=Pico SDK @@ -18391,6 +18764,10 @@ challenger_2040_uwb.menu.opt.Debug=Debug (-Og) challenger_2040_uwb.menu.opt.Debug.build.flags.optimize=-Og challenger_2040_uwb.menu.opt.Disabled=Disabled (-O0) challenger_2040_uwb.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2040_uwb.menu.os.none=None +challenger_2040_uwb.menu.os.none.build.os= +challenger_2040_uwb.menu.os.freertos=FreeRTOS SMP +challenger_2040_uwb.menu.os.freertos.build.os=-D__FREERTOS challenger_2040_uwb.menu.profile.Disabled=Disabled challenger_2040_uwb.menu.profile.Disabled.build.flags.profile= challenger_2040_uwb.menu.profile.Enabled=Enabled @@ -18429,8 +18806,10 @@ challenger_2040_uwb.menu.dbglvl.Wire=Wire challenger_2040_uwb.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2040_uwb.menu.dbglvl.Bluetooth=Bluetooth challenger_2040_uwb.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2040_uwb.menu.dbglvl.LWIP=LWIP +challenger_2040_uwb.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2040_uwb.menu.dbglvl.All=All -challenger_2040_uwb.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2040_uwb.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2040_uwb.menu.dbglvl.NDEBUG=NDEBUG challenger_2040_uwb.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2040_uwb.menu.usbstack.picosdk=Pico SDK @@ -18672,6 +19051,10 @@ connectivity_2040_lte_wifi_ble.menu.opt.Debug=Debug (-Og) connectivity_2040_lte_wifi_ble.menu.opt.Debug.build.flags.optimize=-Og connectivity_2040_lte_wifi_ble.menu.opt.Disabled=Disabled (-O0) connectivity_2040_lte_wifi_ble.menu.opt.Disabled.build.flags.optimize=-O0 +connectivity_2040_lte_wifi_ble.menu.os.none=None +connectivity_2040_lte_wifi_ble.menu.os.none.build.os= +connectivity_2040_lte_wifi_ble.menu.os.freertos=FreeRTOS SMP +connectivity_2040_lte_wifi_ble.menu.os.freertos.build.os=-D__FREERTOS connectivity_2040_lte_wifi_ble.menu.profile.Disabled=Disabled connectivity_2040_lte_wifi_ble.menu.profile.Disabled.build.flags.profile= connectivity_2040_lte_wifi_ble.menu.profile.Enabled=Enabled @@ -18710,8 +19093,10 @@ connectivity_2040_lte_wifi_ble.menu.dbglvl.Wire=Wire connectivity_2040_lte_wifi_ble.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE connectivity_2040_lte_wifi_ble.menu.dbglvl.Bluetooth=Bluetooth connectivity_2040_lte_wifi_ble.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +connectivity_2040_lte_wifi_ble.menu.dbglvl.LWIP=LWIP +connectivity_2040_lte_wifi_ble.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 connectivity_2040_lte_wifi_ble.menu.dbglvl.All=All -connectivity_2040_lte_wifi_ble.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +connectivity_2040_lte_wifi_ble.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 connectivity_2040_lte_wifi_ble.menu.dbglvl.NDEBUG=NDEBUG connectivity_2040_lte_wifi_ble.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG connectivity_2040_lte_wifi_ble.menu.usbstack.picosdk=Pico SDK @@ -18953,6 +19338,10 @@ ilabs_rpico32.menu.opt.Debug=Debug (-Og) ilabs_rpico32.menu.opt.Debug.build.flags.optimize=-Og ilabs_rpico32.menu.opt.Disabled=Disabled (-O0) ilabs_rpico32.menu.opt.Disabled.build.flags.optimize=-O0 +ilabs_rpico32.menu.os.none=None +ilabs_rpico32.menu.os.none.build.os= +ilabs_rpico32.menu.os.freertos=FreeRTOS SMP +ilabs_rpico32.menu.os.freertos.build.os=-D__FREERTOS ilabs_rpico32.menu.profile.Disabled=Disabled ilabs_rpico32.menu.profile.Disabled.build.flags.profile= ilabs_rpico32.menu.profile.Enabled=Enabled @@ -18991,8 +19380,10 @@ ilabs_rpico32.menu.dbglvl.Wire=Wire ilabs_rpico32.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE ilabs_rpico32.menu.dbglvl.Bluetooth=Bluetooth ilabs_rpico32.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +ilabs_rpico32.menu.dbglvl.LWIP=LWIP +ilabs_rpico32.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 ilabs_rpico32.menu.dbglvl.All=All -ilabs_rpico32.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +ilabs_rpico32.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 ilabs_rpico32.menu.dbglvl.NDEBUG=NDEBUG ilabs_rpico32.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG ilabs_rpico32.menu.usbstack.picosdk=Pico SDK @@ -19343,6 +19734,10 @@ challenger_2350_wifi6_ble5.menu.opt.Debug=Debug (-Og) challenger_2350_wifi6_ble5.menu.opt.Debug.build.flags.optimize=-Og challenger_2350_wifi6_ble5.menu.opt.Disabled=Disabled (-O0) challenger_2350_wifi6_ble5.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2350_wifi6_ble5.menu.os.none=None +challenger_2350_wifi6_ble5.menu.os.none.build.os= +challenger_2350_wifi6_ble5.menu.os.freertos=FreeRTOS SMP +challenger_2350_wifi6_ble5.menu.os.freertos.build.os=-D__FREERTOS challenger_2350_wifi6_ble5.menu.profile.Disabled=Disabled challenger_2350_wifi6_ble5.menu.profile.Disabled.build.flags.profile= challenger_2350_wifi6_ble5.menu.profile.Enabled=Enabled @@ -19381,8 +19776,10 @@ challenger_2350_wifi6_ble5.menu.dbglvl.Wire=Wire challenger_2350_wifi6_ble5.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2350_wifi6_ble5.menu.dbglvl.Bluetooth=Bluetooth challenger_2350_wifi6_ble5.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2350_wifi6_ble5.menu.dbglvl.LWIP=LWIP +challenger_2350_wifi6_ble5.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2350_wifi6_ble5.menu.dbglvl.All=All -challenger_2350_wifi6_ble5.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2350_wifi6_ble5.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2350_wifi6_ble5.menu.dbglvl.NDEBUG=NDEBUG challenger_2350_wifi6_ble5.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2350_wifi6_ble5.menu.usbstack.picosdk=Pico SDK @@ -19632,6 +20029,10 @@ challenger_2350_bconnect.menu.opt.Debug=Debug (-Og) challenger_2350_bconnect.menu.opt.Debug.build.flags.optimize=-Og challenger_2350_bconnect.menu.opt.Disabled=Disabled (-O0) challenger_2350_bconnect.menu.opt.Disabled.build.flags.optimize=-O0 +challenger_2350_bconnect.menu.os.none=None +challenger_2350_bconnect.menu.os.none.build.os= +challenger_2350_bconnect.menu.os.freertos=FreeRTOS SMP +challenger_2350_bconnect.menu.os.freertos.build.os=-D__FREERTOS challenger_2350_bconnect.menu.profile.Disabled=Disabled challenger_2350_bconnect.menu.profile.Disabled.build.flags.profile= challenger_2350_bconnect.menu.profile.Enabled=Enabled @@ -19670,8 +20071,10 @@ challenger_2350_bconnect.menu.dbglvl.Wire=Wire challenger_2350_bconnect.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE challenger_2350_bconnect.menu.dbglvl.Bluetooth=Bluetooth challenger_2350_bconnect.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +challenger_2350_bconnect.menu.dbglvl.LWIP=LWIP +challenger_2350_bconnect.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 challenger_2350_bconnect.menu.dbglvl.All=All -challenger_2350_bconnect.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +challenger_2350_bconnect.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 challenger_2350_bconnect.menu.dbglvl.NDEBUG=NDEBUG challenger_2350_bconnect.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG challenger_2350_bconnect.menu.usbstack.picosdk=Pico SDK @@ -19863,6 +20266,10 @@ 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.os.none=None +mksthr36.menu.os.none.build.os= +mksthr36.menu.os.freertos=FreeRTOS SMP +mksthr36.menu.os.freertos.build.os=-D__FREERTOS mksthr36.menu.profile.Disabled=Disabled mksthr36.menu.profile.Disabled.build.flags.profile= mksthr36.menu.profile.Enabled=Enabled @@ -19901,8 +20308,10 @@ 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.LWIP=LWIP +mksthr36.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 mksthr36.menu.dbglvl.NDEBUG=NDEBUG mksthr36.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG mksthr36.menu.usbstack.picosdk=Pico SDK @@ -20094,6 +20503,10 @@ 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.os.none=None +mksthr42.menu.os.none.build.os= +mksthr42.menu.os.freertos=FreeRTOS SMP +mksthr42.menu.os.freertos.build.os=-D__FREERTOS mksthr42.menu.profile.Disabled=Disabled mksthr42.menu.profile.Disabled.build.flags.profile= mksthr42.menu.profile.Enabled=Enabled @@ -20132,8 +20545,10 @@ 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.LWIP=LWIP +mksthr42.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 mksthr42.menu.dbglvl.NDEBUG=NDEBUG mksthr42.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG mksthr42.menu.usbstack.picosdk=Pico SDK @@ -20374,6 +20789,10 @@ melopero_cookie_rp2040.menu.opt.Debug=Debug (-Og) melopero_cookie_rp2040.menu.opt.Debug.build.flags.optimize=-Og melopero_cookie_rp2040.menu.opt.Disabled=Disabled (-O0) melopero_cookie_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +melopero_cookie_rp2040.menu.os.none=None +melopero_cookie_rp2040.menu.os.none.build.os= +melopero_cookie_rp2040.menu.os.freertos=FreeRTOS SMP +melopero_cookie_rp2040.menu.os.freertos.build.os=-D__FREERTOS melopero_cookie_rp2040.menu.profile.Disabled=Disabled melopero_cookie_rp2040.menu.profile.Disabled.build.flags.profile= melopero_cookie_rp2040.menu.profile.Enabled=Enabled @@ -20412,8 +20831,10 @@ melopero_cookie_rp2040.menu.dbglvl.Wire=Wire melopero_cookie_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE melopero_cookie_rp2040.menu.dbglvl.Bluetooth=Bluetooth melopero_cookie_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +melopero_cookie_rp2040.menu.dbglvl.LWIP=LWIP +melopero_cookie_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 melopero_cookie_rp2040.menu.dbglvl.All=All -melopero_cookie_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +melopero_cookie_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 melopero_cookie_rp2040.menu.dbglvl.NDEBUG=NDEBUG melopero_cookie_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG melopero_cookie_rp2040.menu.usbstack.picosdk=Pico SDK @@ -20710,6 +21131,10 @@ melopero_shake_rp2040.menu.opt.Debug=Debug (-Og) melopero_shake_rp2040.menu.opt.Debug.build.flags.optimize=-Og melopero_shake_rp2040.menu.opt.Disabled=Disabled (-O0) melopero_shake_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +melopero_shake_rp2040.menu.os.none=None +melopero_shake_rp2040.menu.os.none.build.os= +melopero_shake_rp2040.menu.os.freertos=FreeRTOS SMP +melopero_shake_rp2040.menu.os.freertos.build.os=-D__FREERTOS melopero_shake_rp2040.menu.profile.Disabled=Disabled melopero_shake_rp2040.menu.profile.Disabled.build.flags.profile= melopero_shake_rp2040.menu.profile.Enabled=Enabled @@ -20748,8 +21173,10 @@ melopero_shake_rp2040.menu.dbglvl.Wire=Wire melopero_shake_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE melopero_shake_rp2040.menu.dbglvl.Bluetooth=Bluetooth melopero_shake_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +melopero_shake_rp2040.menu.dbglvl.LWIP=LWIP +melopero_shake_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 melopero_shake_rp2040.menu.dbglvl.All=All -melopero_shake_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +melopero_shake_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 melopero_shake_rp2040.menu.dbglvl.NDEBUG=NDEBUG melopero_shake_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG melopero_shake_rp2040.menu.usbstack.picosdk=Pico SDK @@ -21025,6 +21452,10 @@ akana_r1.menu.opt.Debug=Debug (-Og) akana_r1.menu.opt.Debug.build.flags.optimize=-Og akana_r1.menu.opt.Disabled=Disabled (-O0) akana_r1.menu.opt.Disabled.build.flags.optimize=-O0 +akana_r1.menu.os.none=None +akana_r1.menu.os.none.build.os= +akana_r1.menu.os.freertos=FreeRTOS SMP +akana_r1.menu.os.freertos.build.os=-D__FREERTOS akana_r1.menu.profile.Disabled=Disabled akana_r1.menu.profile.Disabled.build.flags.profile= akana_r1.menu.profile.Enabled=Enabled @@ -21063,8 +21494,10 @@ akana_r1.menu.dbglvl.Wire=Wire akana_r1.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE akana_r1.menu.dbglvl.Bluetooth=Bluetooth akana_r1.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +akana_r1.menu.dbglvl.LWIP=LWIP +akana_r1.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 akana_r1.menu.dbglvl.All=All -akana_r1.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +akana_r1.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 akana_r1.menu.dbglvl.NDEBUG=NDEBUG akana_r1.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG akana_r1.menu.usbstack.picosdk=Pico SDK @@ -21263,6 +21696,10 @@ MyRP_bot.menu.opt.Debug=Debug (-Og) MyRP_bot.menu.opt.Debug.build.flags.optimize=-Og MyRP_bot.menu.opt.Disabled=Disabled (-O0) MyRP_bot.menu.opt.Disabled.build.flags.optimize=-O0 +MyRP_bot.menu.os.none=None +MyRP_bot.menu.os.none.build.os= +MyRP_bot.menu.os.freertos=FreeRTOS SMP +MyRP_bot.menu.os.freertos.build.os=-D__FREERTOS MyRP_bot.menu.profile.Disabled=Disabled MyRP_bot.menu.profile.Disabled.build.flags.profile= MyRP_bot.menu.profile.Enabled=Enabled @@ -21301,8 +21738,10 @@ MyRP_bot.menu.dbglvl.Wire=Wire MyRP_bot.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE MyRP_bot.menu.dbglvl.Bluetooth=Bluetooth MyRP_bot.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +MyRP_bot.menu.dbglvl.LWIP=LWIP +MyRP_bot.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 MyRP_bot.menu.dbglvl.All=All -MyRP_bot.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +MyRP_bot.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 MyRP_bot.menu.dbglvl.NDEBUG=NDEBUG MyRP_bot.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG MyRP_bot.menu.usbstack.picosdk=Pico SDK @@ -21515,6 +21954,10 @@ nekosystems_bl2040_mini.menu.opt.Debug=Debug (-Og) nekosystems_bl2040_mini.menu.opt.Debug.build.flags.optimize=-Og nekosystems_bl2040_mini.menu.opt.Disabled=Disabled (-O0) nekosystems_bl2040_mini.menu.opt.Disabled.build.flags.optimize=-O0 +nekosystems_bl2040_mini.menu.os.none=None +nekosystems_bl2040_mini.menu.os.none.build.os= +nekosystems_bl2040_mini.menu.os.freertos=FreeRTOS SMP +nekosystems_bl2040_mini.menu.os.freertos.build.os=-D__FREERTOS nekosystems_bl2040_mini.menu.profile.Disabled=Disabled nekosystems_bl2040_mini.menu.profile.Disabled.build.flags.profile= nekosystems_bl2040_mini.menu.profile.Enabled=Enabled @@ -21553,8 +21996,10 @@ nekosystems_bl2040_mini.menu.dbglvl.Wire=Wire nekosystems_bl2040_mini.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE nekosystems_bl2040_mini.menu.dbglvl.Bluetooth=Bluetooth nekosystems_bl2040_mini.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +nekosystems_bl2040_mini.menu.dbglvl.LWIP=LWIP +nekosystems_bl2040_mini.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 nekosystems_bl2040_mini.menu.dbglvl.All=All -nekosystems_bl2040_mini.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +nekosystems_bl2040_mini.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 nekosystems_bl2040_mini.menu.dbglvl.NDEBUG=NDEBUG nekosystems_bl2040_mini.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG nekosystems_bl2040_mini.menu.usbstack.picosdk=Pico SDK @@ -21767,6 +22212,10 @@ newsan_archi.menu.opt.Debug=Debug (-Og) newsan_archi.menu.opt.Debug.build.flags.optimize=-Og newsan_archi.menu.opt.Disabled=Disabled (-O0) newsan_archi.menu.opt.Disabled.build.flags.optimize=-O0 +newsan_archi.menu.os.none=None +newsan_archi.menu.os.none.build.os= +newsan_archi.menu.os.freertos=FreeRTOS SMP +newsan_archi.menu.os.freertos.build.os=-D__FREERTOS newsan_archi.menu.profile.Disabled=Disabled newsan_archi.menu.profile.Disabled.build.flags.profile= newsan_archi.menu.profile.Enabled=Enabled @@ -21805,8 +22254,10 @@ newsan_archi.menu.dbglvl.Wire=Wire newsan_archi.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE newsan_archi.menu.dbglvl.Bluetooth=Bluetooth newsan_archi.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +newsan_archi.menu.dbglvl.LWIP=LWIP +newsan_archi.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 newsan_archi.menu.dbglvl.All=All -newsan_archi.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +newsan_archi.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 newsan_archi.menu.dbglvl.NDEBUG=NDEBUG newsan_archi.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG newsan_archi.menu.usbstack.picosdk=Pico SDK @@ -22003,6 +22454,10 @@ nullbits_bit_c_pro.menu.opt.Debug=Debug (-Og) nullbits_bit_c_pro.menu.opt.Debug.build.flags.optimize=-Og nullbits_bit_c_pro.menu.opt.Disabled=Disabled (-O0) nullbits_bit_c_pro.menu.opt.Disabled.build.flags.optimize=-O0 +nullbits_bit_c_pro.menu.os.none=None +nullbits_bit_c_pro.menu.os.none.build.os= +nullbits_bit_c_pro.menu.os.freertos=FreeRTOS SMP +nullbits_bit_c_pro.menu.os.freertos.build.os=-D__FREERTOS nullbits_bit_c_pro.menu.profile.Disabled=Disabled nullbits_bit_c_pro.menu.profile.Disabled.build.flags.profile= nullbits_bit_c_pro.menu.profile.Enabled=Enabled @@ -22041,8 +22496,10 @@ nullbits_bit_c_pro.menu.dbglvl.Wire=Wire nullbits_bit_c_pro.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE nullbits_bit_c_pro.menu.dbglvl.Bluetooth=Bluetooth nullbits_bit_c_pro.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +nullbits_bit_c_pro.menu.dbglvl.LWIP=LWIP +nullbits_bit_c_pro.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 nullbits_bit_c_pro.menu.dbglvl.All=All -nullbits_bit_c_pro.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +nullbits_bit_c_pro.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 nullbits_bit_c_pro.menu.dbglvl.NDEBUG=NDEBUG nullbits_bit_c_pro.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG nullbits_bit_c_pro.menu.usbstack.picosdk=Pico SDK @@ -22250,6 +22707,10 @@ 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.os.none=None +olimex_pico2xl.menu.os.none.build.os= +olimex_pico2xl.menu.os.freertos=FreeRTOS SMP +olimex_pico2xl.menu.os.freertos.build.os=-D__FREERTOS olimex_pico2xl.menu.profile.Disabled=Disabled olimex_pico2xl.menu.profile.Disabled.build.flags.profile= olimex_pico2xl.menu.profile.Enabled=Enabled @@ -22288,8 +22749,10 @@ 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.LWIP=LWIP +olimex_pico2xl.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 olimex_pico2xl.menu.dbglvl.NDEBUG=NDEBUG olimex_pico2xl.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG olimex_pico2xl.menu.usbstack.picosdk=Pico SDK @@ -22595,6 +23058,10 @@ 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.os.none=None +olimex_pico2xxl.menu.os.none.build.os= +olimex_pico2xxl.menu.os.freertos=FreeRTOS SMP +olimex_pico2xxl.menu.os.freertos.build.os=-D__FREERTOS olimex_pico2xxl.menu.profile.Disabled=Disabled olimex_pico2xxl.menu.profile.Disabled.build.flags.profile= olimex_pico2xxl.menu.profile.Enabled=Enabled @@ -22633,8 +23100,10 @@ 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.LWIP=LWIP +olimex_pico2xxl.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 olimex_pico2xxl.menu.dbglvl.NDEBUG=NDEBUG olimex_pico2xxl.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG olimex_pico2xxl.menu.usbstack.picosdk=Pico SDK @@ -22882,6 +23351,10 @@ 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.os.none=None +olimex_rp2040pico30.menu.os.none.build.os= +olimex_rp2040pico30.menu.os.freertos=FreeRTOS SMP +olimex_rp2040pico30.menu.os.freertos.build.os=-D__FREERTOS olimex_rp2040pico30.menu.profile.Disabled=Disabled olimex_rp2040pico30.menu.profile.Disabled.build.flags.profile= olimex_rp2040pico30.menu.profile.Enabled=Enabled @@ -22920,8 +23393,10 @@ 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.LWIP=LWIP +olimex_rp2040pico30.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 olimex_rp2040pico30.menu.dbglvl.NDEBUG=NDEBUG olimex_rp2040pico30.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG olimex_rp2040pico30.menu.usbstack.picosdk=Pico SDK @@ -23162,6 +23637,10 @@ pimoroni_pga2040.menu.opt.Debug=Debug (-Og) pimoroni_pga2040.menu.opt.Debug.build.flags.optimize=-Og pimoroni_pga2040.menu.opt.Disabled=Disabled (-O0) pimoroni_pga2040.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_pga2040.menu.os.none=None +pimoroni_pga2040.menu.os.none.build.os= +pimoroni_pga2040.menu.os.freertos=FreeRTOS SMP +pimoroni_pga2040.menu.os.freertos.build.os=-D__FREERTOS pimoroni_pga2040.menu.profile.Disabled=Disabled pimoroni_pga2040.menu.profile.Disabled.build.flags.profile= pimoroni_pga2040.menu.profile.Enabled=Enabled @@ -23200,8 +23679,10 @@ pimoroni_pga2040.menu.dbglvl.Wire=Wire pimoroni_pga2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_pga2040.menu.dbglvl.Bluetooth=Bluetooth pimoroni_pga2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_pga2040.menu.dbglvl.LWIP=LWIP +pimoroni_pga2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_pga2040.menu.dbglvl.All=All -pimoroni_pga2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_pga2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_pga2040.menu.dbglvl.NDEBUG=NDEBUG pimoroni_pga2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_pga2040.menu.usbstack.picosdk=Pico SDK @@ -23507,6 +23988,10 @@ pimoroni_pga2350.menu.opt.Debug=Debug (-Og) pimoroni_pga2350.menu.opt.Debug.build.flags.optimize=-Og pimoroni_pga2350.menu.opt.Disabled=Disabled (-O0) pimoroni_pga2350.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_pga2350.menu.os.none=None +pimoroni_pga2350.menu.os.none.build.os= +pimoroni_pga2350.menu.os.freertos=FreeRTOS SMP +pimoroni_pga2350.menu.os.freertos.build.os=-D__FREERTOS pimoroni_pga2350.menu.profile.Disabled=Disabled pimoroni_pga2350.menu.profile.Disabled.build.flags.profile= pimoroni_pga2350.menu.profile.Enabled=Enabled @@ -23545,8 +24030,10 @@ pimoroni_pga2350.menu.dbglvl.Wire=Wire pimoroni_pga2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_pga2350.menu.dbglvl.Bluetooth=Bluetooth pimoroni_pga2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_pga2350.menu.dbglvl.LWIP=LWIP +pimoroni_pga2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_pga2350.menu.dbglvl.All=All -pimoroni_pga2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_pga2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_pga2350.menu.dbglvl.NDEBUG=NDEBUG pimoroni_pga2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_pga2350.menu.usbstack.picosdk=Pico SDK @@ -23852,6 +24339,10 @@ pimoroni_pico_plus_2.menu.opt.Debug=Debug (-Og) pimoroni_pico_plus_2.menu.opt.Debug.build.flags.optimize=-Og pimoroni_pico_plus_2.menu.opt.Disabled=Disabled (-O0) pimoroni_pico_plus_2.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_pico_plus_2.menu.os.none=None +pimoroni_pico_plus_2.menu.os.none.build.os= +pimoroni_pico_plus_2.menu.os.freertos=FreeRTOS SMP +pimoroni_pico_plus_2.menu.os.freertos.build.os=-D__FREERTOS pimoroni_pico_plus_2.menu.profile.Disabled=Disabled pimoroni_pico_plus_2.menu.profile.Disabled.build.flags.profile= pimoroni_pico_plus_2.menu.profile.Enabled=Enabled @@ -23890,8 +24381,10 @@ pimoroni_pico_plus_2.menu.dbglvl.Wire=Wire pimoroni_pico_plus_2.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_pico_plus_2.menu.dbglvl.Bluetooth=Bluetooth pimoroni_pico_plus_2.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_pico_plus_2.menu.dbglvl.LWIP=LWIP +pimoroni_pico_plus_2.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_pico_plus_2.menu.dbglvl.All=All -pimoroni_pico_plus_2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_pico_plus_2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_pico_plus_2.menu.dbglvl.NDEBUG=NDEBUG pimoroni_pico_plus_2.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_pico_plus_2.menu.usbstack.picosdk=Pico SDK @@ -24198,6 +24691,10 @@ pimoroni_pico_plus_2w.menu.opt.Debug=Debug (-Og) pimoroni_pico_plus_2w.menu.opt.Debug.build.flags.optimize=-Og pimoroni_pico_plus_2w.menu.opt.Disabled=Disabled (-O0) pimoroni_pico_plus_2w.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_pico_plus_2w.menu.os.none=None +pimoroni_pico_plus_2w.menu.os.none.build.os= +pimoroni_pico_plus_2w.menu.os.freertos=FreeRTOS SMP +pimoroni_pico_plus_2w.menu.os.freertos.build.os=-D__FREERTOS pimoroni_pico_plus_2w.menu.profile.Disabled=Disabled pimoroni_pico_plus_2w.menu.profile.Disabled.build.flags.profile= pimoroni_pico_plus_2w.menu.profile.Enabled=Enabled @@ -24236,8 +24733,10 @@ pimoroni_pico_plus_2w.menu.dbglvl.Wire=Wire pimoroni_pico_plus_2w.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_pico_plus_2w.menu.dbglvl.Bluetooth=Bluetooth pimoroni_pico_plus_2w.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_pico_plus_2w.menu.dbglvl.LWIP=LWIP +pimoroni_pico_plus_2w.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_pico_plus_2w.menu.dbglvl.All=All -pimoroni_pico_plus_2w.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_pico_plus_2w.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_pico_plus_2w.menu.dbglvl.NDEBUG=NDEBUG pimoroni_pico_plus_2w.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_pico_plus_2w.menu.usbstack.picosdk=Pico SDK @@ -24540,6 +25039,10 @@ pimoroni_plasma2040.menu.opt.Debug=Debug (-Og) pimoroni_plasma2040.menu.opt.Debug.build.flags.optimize=-Og pimoroni_plasma2040.menu.opt.Disabled=Disabled (-O0) pimoroni_plasma2040.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_plasma2040.menu.os.none=None +pimoroni_plasma2040.menu.os.none.build.os= +pimoroni_plasma2040.menu.os.freertos=FreeRTOS SMP +pimoroni_plasma2040.menu.os.freertos.build.os=-D__FREERTOS pimoroni_plasma2040.menu.profile.Disabled=Disabled pimoroni_plasma2040.menu.profile.Disabled.build.flags.profile= pimoroni_plasma2040.menu.profile.Enabled=Enabled @@ -24578,8 +25081,10 @@ pimoroni_plasma2040.menu.dbglvl.Wire=Wire pimoroni_plasma2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_plasma2040.menu.dbglvl.Bluetooth=Bluetooth pimoroni_plasma2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_plasma2040.menu.dbglvl.LWIP=LWIP +pimoroni_plasma2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_plasma2040.menu.dbglvl.All=All -pimoroni_plasma2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_plasma2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_plasma2040.menu.dbglvl.NDEBUG=NDEBUG pimoroni_plasma2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_plasma2040.menu.usbstack.picosdk=Pico SDK @@ -24787,6 +25292,10 @@ pimoroni_plasma2350.menu.opt.Debug=Debug (-Og) pimoroni_plasma2350.menu.opt.Debug.build.flags.optimize=-Og pimoroni_plasma2350.menu.opt.Disabled=Disabled (-O0) pimoroni_plasma2350.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_plasma2350.menu.os.none=None +pimoroni_plasma2350.menu.os.none.build.os= +pimoroni_plasma2350.menu.os.freertos=FreeRTOS SMP +pimoroni_plasma2350.menu.os.freertos.build.os=-D__FREERTOS pimoroni_plasma2350.menu.profile.Disabled=Disabled pimoroni_plasma2350.menu.profile.Disabled.build.flags.profile= pimoroni_plasma2350.menu.profile.Enabled=Enabled @@ -24825,8 +25334,10 @@ pimoroni_plasma2350.menu.dbglvl.Wire=Wire pimoroni_plasma2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_plasma2350.menu.dbglvl.Bluetooth=Bluetooth pimoroni_plasma2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_plasma2350.menu.dbglvl.LWIP=LWIP +pimoroni_plasma2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_plasma2350.menu.dbglvl.All=All -pimoroni_plasma2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_plasma2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_plasma2350.menu.dbglvl.NDEBUG=NDEBUG pimoroni_plasma2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_plasma2350.menu.usbstack.picosdk=Pico SDK @@ -25025,6 +25536,10 @@ 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.os.none=None +pimoroni_servo2040.menu.os.none.build.os= +pimoroni_servo2040.menu.os.freertos=FreeRTOS SMP +pimoroni_servo2040.menu.os.freertos.build.os=-D__FREERTOS pimoroni_servo2040.menu.profile.Disabled=Disabled pimoroni_servo2040.menu.profile.Disabled.build.flags.profile= pimoroni_servo2040.menu.profile.Enabled=Enabled @@ -25063,8 +25578,10 @@ 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.LWIP=LWIP +pimoroni_servo2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_servo2040.menu.dbglvl.NDEBUG=NDEBUG pimoroni_servo2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_servo2040.menu.usbstack.picosdk=Pico SDK @@ -25291,6 +25808,10 @@ pimoroni_tiny2040.menu.opt.Debug=Debug (-Og) pimoroni_tiny2040.menu.opt.Debug.build.flags.optimize=-Og pimoroni_tiny2040.menu.opt.Disabled=Disabled (-O0) pimoroni_tiny2040.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_tiny2040.menu.os.none=None +pimoroni_tiny2040.menu.os.none.build.os= +pimoroni_tiny2040.menu.os.freertos=FreeRTOS SMP +pimoroni_tiny2040.menu.os.freertos.build.os=-D__FREERTOS pimoroni_tiny2040.menu.profile.Disabled=Disabled pimoroni_tiny2040.menu.profile.Disabled.build.flags.profile= pimoroni_tiny2040.menu.profile.Enabled=Enabled @@ -25329,8 +25850,10 @@ pimoroni_tiny2040.menu.dbglvl.Wire=Wire pimoroni_tiny2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_tiny2040.menu.dbglvl.Bluetooth=Bluetooth pimoroni_tiny2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_tiny2040.menu.dbglvl.LWIP=LWIP +pimoroni_tiny2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_tiny2040.menu.dbglvl.All=All -pimoroni_tiny2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_tiny2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_tiny2040.menu.dbglvl.NDEBUG=NDEBUG pimoroni_tiny2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_tiny2040.menu.usbstack.picosdk=Pico SDK @@ -25552,6 +26075,10 @@ pimoroni_tiny2350.menu.opt.Debug=Debug (-Og) pimoroni_tiny2350.menu.opt.Debug.build.flags.optimize=-Og pimoroni_tiny2350.menu.opt.Disabled=Disabled (-O0) pimoroni_tiny2350.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_tiny2350.menu.os.none=None +pimoroni_tiny2350.menu.os.none.build.os= +pimoroni_tiny2350.menu.os.freertos=FreeRTOS SMP +pimoroni_tiny2350.menu.os.freertos.build.os=-D__FREERTOS pimoroni_tiny2350.menu.profile.Disabled=Disabled pimoroni_tiny2350.menu.profile.Disabled.build.flags.profile= pimoroni_tiny2350.menu.profile.Enabled=Enabled @@ -25590,8 +26117,10 @@ pimoroni_tiny2350.menu.dbglvl.Wire=Wire pimoroni_tiny2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_tiny2350.menu.dbglvl.Bluetooth=Bluetooth pimoroni_tiny2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_tiny2350.menu.dbglvl.LWIP=LWIP +pimoroni_tiny2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_tiny2350.menu.dbglvl.All=All -pimoroni_tiny2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_tiny2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_tiny2350.menu.dbglvl.NDEBUG=NDEBUG pimoroni_tiny2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_tiny2350.menu.usbstack.picosdk=Pico SDK @@ -25897,6 +26426,10 @@ pimoroni_explorer.menu.opt.Debug=Debug (-Og) pimoroni_explorer.menu.opt.Debug.build.flags.optimize=-Og pimoroni_explorer.menu.opt.Disabled=Disabled (-O0) pimoroni_explorer.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_explorer.menu.os.none=None +pimoroni_explorer.menu.os.none.build.os= +pimoroni_explorer.menu.os.freertos=FreeRTOS SMP +pimoroni_explorer.menu.os.freertos.build.os=-D__FREERTOS pimoroni_explorer.menu.profile.Disabled=Disabled pimoroni_explorer.menu.profile.Disabled.build.flags.profile= pimoroni_explorer.menu.profile.Enabled=Enabled @@ -25935,8 +26468,10 @@ pimoroni_explorer.menu.dbglvl.Wire=Wire pimoroni_explorer.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pimoroni_explorer.menu.dbglvl.Bluetooth=Bluetooth pimoroni_explorer.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_explorer.menu.dbglvl.LWIP=LWIP +pimoroni_explorer.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pimoroni_explorer.menu.dbglvl.All=All -pimoroni_explorer.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_explorer.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pimoroni_explorer.menu.dbglvl.NDEBUG=NDEBUG pimoroni_explorer.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pimoroni_explorer.menu.usbstack.picosdk=Pico SDK @@ -26125,6 +26660,10 @@ pintronix_pinmax.menu.opt.Debug=Debug (-Og) pintronix_pinmax.menu.opt.Debug.build.flags.optimize=-Og pintronix_pinmax.menu.opt.Disabled=Disabled (-O0) pintronix_pinmax.menu.opt.Disabled.build.flags.optimize=-O0 +pintronix_pinmax.menu.os.none=None +pintronix_pinmax.menu.os.none.build.os= +pintronix_pinmax.menu.os.freertos=FreeRTOS SMP +pintronix_pinmax.menu.os.freertos.build.os=-D__FREERTOS pintronix_pinmax.menu.profile.Disabled=Disabled pintronix_pinmax.menu.profile.Disabled.build.flags.profile= pintronix_pinmax.menu.profile.Enabled=Enabled @@ -26163,8 +26702,10 @@ pintronix_pinmax.menu.dbglvl.Wire=Wire pintronix_pinmax.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE pintronix_pinmax.menu.dbglvl.Bluetooth=Bluetooth pintronix_pinmax.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pintronix_pinmax.menu.dbglvl.LWIP=LWIP +pintronix_pinmax.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 pintronix_pinmax.menu.dbglvl.All=All -pintronix_pinmax.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pintronix_pinmax.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 pintronix_pinmax.menu.dbglvl.NDEBUG=NDEBUG pintronix_pinmax.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG pintronix_pinmax.menu.usbstack.picosdk=Pico SDK @@ -26363,6 +26904,10 @@ rakwireless_rak11300.menu.opt.Debug=Debug (-Og) rakwireless_rak11300.menu.opt.Debug.build.flags.optimize=-Og rakwireless_rak11300.menu.opt.Disabled=Disabled (-O0) rakwireless_rak11300.menu.opt.Disabled.build.flags.optimize=-O0 +rakwireless_rak11300.menu.os.none=None +rakwireless_rak11300.menu.os.none.build.os= +rakwireless_rak11300.menu.os.freertos=FreeRTOS SMP +rakwireless_rak11300.menu.os.freertos.build.os=-D__FREERTOS rakwireless_rak11300.menu.profile.Disabled=Disabled rakwireless_rak11300.menu.profile.Disabled.build.flags.profile= rakwireless_rak11300.menu.profile.Enabled=Enabled @@ -26401,8 +26946,10 @@ rakwireless_rak11300.menu.dbglvl.Wire=Wire rakwireless_rak11300.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE rakwireless_rak11300.menu.dbglvl.Bluetooth=Bluetooth rakwireless_rak11300.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +rakwireless_rak11300.menu.dbglvl.LWIP=LWIP +rakwireless_rak11300.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 rakwireless_rak11300.menu.dbglvl.All=All -rakwireless_rak11300.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +rakwireless_rak11300.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 rakwireless_rak11300.menu.dbglvl.NDEBUG=NDEBUG rakwireless_rak11300.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rakwireless_rak11300.menu.usbstack.picosdk=Pico SDK @@ -26683,6 +27230,10 @@ redscorp_rp2040_eins.menu.opt.Debug=Debug (-Og) redscorp_rp2040_eins.menu.opt.Debug.build.flags.optimize=-Og redscorp_rp2040_eins.menu.opt.Disabled=Disabled (-O0) redscorp_rp2040_eins.menu.opt.Disabled.build.flags.optimize=-O0 +redscorp_rp2040_eins.menu.os.none=None +redscorp_rp2040_eins.menu.os.none.build.os= +redscorp_rp2040_eins.menu.os.freertos=FreeRTOS SMP +redscorp_rp2040_eins.menu.os.freertos.build.os=-D__FREERTOS redscorp_rp2040_eins.menu.profile.Disabled=Disabled redscorp_rp2040_eins.menu.profile.Disabled.build.flags.profile= redscorp_rp2040_eins.menu.profile.Enabled=Enabled @@ -26721,8 +27272,10 @@ redscorp_rp2040_eins.menu.dbglvl.Wire=Wire redscorp_rp2040_eins.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE redscorp_rp2040_eins.menu.dbglvl.Bluetooth=Bluetooth redscorp_rp2040_eins.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +redscorp_rp2040_eins.menu.dbglvl.LWIP=LWIP +redscorp_rp2040_eins.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 redscorp_rp2040_eins.menu.dbglvl.All=All -redscorp_rp2040_eins.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +redscorp_rp2040_eins.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 redscorp_rp2040_eins.menu.dbglvl.NDEBUG=NDEBUG redscorp_rp2040_eins.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG redscorp_rp2040_eins.menu.usbstack.picosdk=Pico SDK @@ -27003,6 +27556,10 @@ redscorp_rp2040_promini.menu.opt.Debug=Debug (-Og) redscorp_rp2040_promini.menu.opt.Debug.build.flags.optimize=-Og redscorp_rp2040_promini.menu.opt.Disabled=Disabled (-O0) redscorp_rp2040_promini.menu.opt.Disabled.build.flags.optimize=-O0 +redscorp_rp2040_promini.menu.os.none=None +redscorp_rp2040_promini.menu.os.none.build.os= +redscorp_rp2040_promini.menu.os.freertos=FreeRTOS SMP +redscorp_rp2040_promini.menu.os.freertos.build.os=-D__FREERTOS redscorp_rp2040_promini.menu.profile.Disabled=Disabled redscorp_rp2040_promini.menu.profile.Disabled.build.flags.profile= redscorp_rp2040_promini.menu.profile.Enabled=Enabled @@ -27041,8 +27598,10 @@ redscorp_rp2040_promini.menu.dbglvl.Wire=Wire redscorp_rp2040_promini.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE redscorp_rp2040_promini.menu.dbglvl.Bluetooth=Bluetooth redscorp_rp2040_promini.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +redscorp_rp2040_promini.menu.dbglvl.LWIP=LWIP +redscorp_rp2040_promini.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 redscorp_rp2040_promini.menu.dbglvl.All=All -redscorp_rp2040_promini.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +redscorp_rp2040_promini.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 redscorp_rp2040_promini.menu.dbglvl.NDEBUG=NDEBUG redscorp_rp2040_promini.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG redscorp_rp2040_promini.menu.usbstack.picosdk=Pico SDK @@ -27259,6 +27818,10 @@ sea_picro.menu.opt.Debug=Debug (-Og) sea_picro.menu.opt.Debug.build.flags.optimize=-Og sea_picro.menu.opt.Disabled=Disabled (-O0) sea_picro.menu.opt.Disabled.build.flags.optimize=-O0 +sea_picro.menu.os.none=None +sea_picro.menu.os.none.build.os= +sea_picro.menu.os.freertos=FreeRTOS SMP +sea_picro.menu.os.freertos.build.os=-D__FREERTOS sea_picro.menu.profile.Disabled=Disabled sea_picro.menu.profile.Disabled.build.flags.profile= sea_picro.menu.profile.Enabled=Enabled @@ -27297,8 +27860,10 @@ sea_picro.menu.dbglvl.Wire=Wire sea_picro.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE sea_picro.menu.dbglvl.Bluetooth=Bluetooth sea_picro.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sea_picro.menu.dbglvl.LWIP=LWIP +sea_picro.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 sea_picro.menu.dbglvl.All=All -sea_picro.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sea_picro.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 sea_picro.menu.dbglvl.NDEBUG=NDEBUG sea_picro.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG sea_picro.menu.usbstack.picosdk=Pico SDK @@ -27483,6 +28048,10 @@ silicognition_rp2040_shim.menu.opt.Debug=Debug (-Og) silicognition_rp2040_shim.menu.opt.Debug.build.flags.optimize=-Og silicognition_rp2040_shim.menu.opt.Disabled=Disabled (-O0) silicognition_rp2040_shim.menu.opt.Disabled.build.flags.optimize=-O0 +silicognition_rp2040_shim.menu.os.none=None +silicognition_rp2040_shim.menu.os.none.build.os= +silicognition_rp2040_shim.menu.os.freertos=FreeRTOS SMP +silicognition_rp2040_shim.menu.os.freertos.build.os=-D__FREERTOS silicognition_rp2040_shim.menu.profile.Disabled=Disabled silicognition_rp2040_shim.menu.profile.Disabled.build.flags.profile= silicognition_rp2040_shim.menu.profile.Enabled=Enabled @@ -27521,8 +28090,10 @@ silicognition_rp2040_shim.menu.dbglvl.Wire=Wire silicognition_rp2040_shim.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE silicognition_rp2040_shim.menu.dbglvl.Bluetooth=Bluetooth silicognition_rp2040_shim.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +silicognition_rp2040_shim.menu.dbglvl.LWIP=LWIP +silicognition_rp2040_shim.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 silicognition_rp2040_shim.menu.dbglvl.All=All -silicognition_rp2040_shim.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +silicognition_rp2040_shim.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 silicognition_rp2040_shim.menu.dbglvl.NDEBUG=NDEBUG silicognition_rp2040_shim.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG silicognition_rp2040_shim.menu.usbstack.picosdk=Pico SDK @@ -27739,6 +28310,10 @@ solderparty_rp2040_stamp.menu.opt.Debug=Debug (-Og) solderparty_rp2040_stamp.menu.opt.Debug.build.flags.optimize=-Og solderparty_rp2040_stamp.menu.opt.Disabled=Disabled (-O0) solderparty_rp2040_stamp.menu.opt.Disabled.build.flags.optimize=-O0 +solderparty_rp2040_stamp.menu.os.none=None +solderparty_rp2040_stamp.menu.os.none.build.os= +solderparty_rp2040_stamp.menu.os.freertos=FreeRTOS SMP +solderparty_rp2040_stamp.menu.os.freertos.build.os=-D__FREERTOS solderparty_rp2040_stamp.menu.profile.Disabled=Disabled solderparty_rp2040_stamp.menu.profile.Disabled.build.flags.profile= solderparty_rp2040_stamp.menu.profile.Enabled=Enabled @@ -27777,8 +28352,10 @@ solderparty_rp2040_stamp.menu.dbglvl.Wire=Wire solderparty_rp2040_stamp.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE solderparty_rp2040_stamp.menu.dbglvl.Bluetooth=Bluetooth solderparty_rp2040_stamp.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +solderparty_rp2040_stamp.menu.dbglvl.LWIP=LWIP +solderparty_rp2040_stamp.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 solderparty_rp2040_stamp.menu.dbglvl.All=All -solderparty_rp2040_stamp.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +solderparty_rp2040_stamp.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 solderparty_rp2040_stamp.menu.dbglvl.NDEBUG=NDEBUG solderparty_rp2040_stamp.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG solderparty_rp2040_stamp.menu.usbstack.picosdk=Pico SDK @@ -28060,6 +28637,10 @@ solderparty_rp2350_stamp.menu.opt.Debug=Debug (-Og) solderparty_rp2350_stamp.menu.opt.Debug.build.flags.optimize=-Og solderparty_rp2350_stamp.menu.opt.Disabled=Disabled (-O0) solderparty_rp2350_stamp.menu.opt.Disabled.build.flags.optimize=-O0 +solderparty_rp2350_stamp.menu.os.none=None +solderparty_rp2350_stamp.menu.os.none.build.os= +solderparty_rp2350_stamp.menu.os.freertos=FreeRTOS SMP +solderparty_rp2350_stamp.menu.os.freertos.build.os=-D__FREERTOS solderparty_rp2350_stamp.menu.profile.Disabled=Disabled solderparty_rp2350_stamp.menu.profile.Disabled.build.flags.profile= solderparty_rp2350_stamp.menu.profile.Enabled=Enabled @@ -28098,8 +28679,10 @@ solderparty_rp2350_stamp.menu.dbglvl.Wire=Wire solderparty_rp2350_stamp.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE solderparty_rp2350_stamp.menu.dbglvl.Bluetooth=Bluetooth solderparty_rp2350_stamp.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +solderparty_rp2350_stamp.menu.dbglvl.LWIP=LWIP +solderparty_rp2350_stamp.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 solderparty_rp2350_stamp.menu.dbglvl.All=All -solderparty_rp2350_stamp.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +solderparty_rp2350_stamp.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 solderparty_rp2350_stamp.menu.dbglvl.NDEBUG=NDEBUG solderparty_rp2350_stamp.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG solderparty_rp2350_stamp.menu.usbstack.picosdk=Pico SDK @@ -28381,6 +28964,10 @@ solderparty_rp2350_stamp_xl.menu.opt.Debug=Debug (-Og) solderparty_rp2350_stamp_xl.menu.opt.Debug.build.flags.optimize=-Og solderparty_rp2350_stamp_xl.menu.opt.Disabled=Disabled (-O0) solderparty_rp2350_stamp_xl.menu.opt.Disabled.build.flags.optimize=-O0 +solderparty_rp2350_stamp_xl.menu.os.none=None +solderparty_rp2350_stamp_xl.menu.os.none.build.os= +solderparty_rp2350_stamp_xl.menu.os.freertos=FreeRTOS SMP +solderparty_rp2350_stamp_xl.menu.os.freertos.build.os=-D__FREERTOS solderparty_rp2350_stamp_xl.menu.profile.Disabled=Disabled solderparty_rp2350_stamp_xl.menu.profile.Disabled.build.flags.profile= solderparty_rp2350_stamp_xl.menu.profile.Enabled=Enabled @@ -28419,8 +29006,10 @@ solderparty_rp2350_stamp_xl.menu.dbglvl.Wire=Wire solderparty_rp2350_stamp_xl.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE solderparty_rp2350_stamp_xl.menu.dbglvl.Bluetooth=Bluetooth solderparty_rp2350_stamp_xl.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +solderparty_rp2350_stamp_xl.menu.dbglvl.LWIP=LWIP +solderparty_rp2350_stamp_xl.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 solderparty_rp2350_stamp_xl.menu.dbglvl.All=All -solderparty_rp2350_stamp_xl.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +solderparty_rp2350_stamp_xl.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 solderparty_rp2350_stamp_xl.menu.dbglvl.NDEBUG=NDEBUG solderparty_rp2350_stamp_xl.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG solderparty_rp2350_stamp_xl.menu.usbstack.picosdk=Pico SDK @@ -28727,6 +29316,10 @@ 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.os.none=None +sparkfun_iotredboard_rp2350.menu.os.none.build.os= +sparkfun_iotredboard_rp2350.menu.os.freertos=FreeRTOS SMP +sparkfun_iotredboard_rp2350.menu.os.freertos.build.os=-D__FREERTOS sparkfun_iotredboard_rp2350.menu.profile.Disabled=Disabled sparkfun_iotredboard_rp2350.menu.profile.Disabled.build.flags.profile= sparkfun_iotredboard_rp2350.menu.profile.Enabled=Enabled @@ -28765,8 +29358,10 @@ 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.LWIP=LWIP +sparkfun_iotredboard_rp2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 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 @@ -29063,6 +29658,10 @@ sparkfun_micromodrp2040.menu.opt.Debug=Debug (-Og) sparkfun_micromodrp2040.menu.opt.Debug.build.flags.optimize=-Og sparkfun_micromodrp2040.menu.opt.Disabled=Disabled (-O0) sparkfun_micromodrp2040.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_micromodrp2040.menu.os.none=None +sparkfun_micromodrp2040.menu.os.none.build.os= +sparkfun_micromodrp2040.menu.os.freertos=FreeRTOS SMP +sparkfun_micromodrp2040.menu.os.freertos.build.os=-D__FREERTOS sparkfun_micromodrp2040.menu.profile.Disabled=Disabled sparkfun_micromodrp2040.menu.profile.Disabled.build.flags.profile= sparkfun_micromodrp2040.menu.profile.Enabled=Enabled @@ -29101,8 +29700,10 @@ sparkfun_micromodrp2040.menu.dbglvl.Wire=Wire sparkfun_micromodrp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE sparkfun_micromodrp2040.menu.dbglvl.Bluetooth=Bluetooth sparkfun_micromodrp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_micromodrp2040.menu.dbglvl.LWIP=LWIP +sparkfun_micromodrp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 sparkfun_micromodrp2040.menu.dbglvl.All=All -sparkfun_micromodrp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_micromodrp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 sparkfun_micromodrp2040.menu.dbglvl.NDEBUG=NDEBUG sparkfun_micromodrp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG sparkfun_micromodrp2040.menu.usbstack.picosdk=Pico SDK @@ -29399,6 +30000,10 @@ sparkfun_promicrorp2040.menu.opt.Debug=Debug (-Og) sparkfun_promicrorp2040.menu.opt.Debug.build.flags.optimize=-Og sparkfun_promicrorp2040.menu.opt.Disabled=Disabled (-O0) sparkfun_promicrorp2040.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_promicrorp2040.menu.os.none=None +sparkfun_promicrorp2040.menu.os.none.build.os= +sparkfun_promicrorp2040.menu.os.freertos=FreeRTOS SMP +sparkfun_promicrorp2040.menu.os.freertos.build.os=-D__FREERTOS sparkfun_promicrorp2040.menu.profile.Disabled=Disabled sparkfun_promicrorp2040.menu.profile.Disabled.build.flags.profile= sparkfun_promicrorp2040.menu.profile.Enabled=Enabled @@ -29437,8 +30042,10 @@ sparkfun_promicrorp2040.menu.dbglvl.Wire=Wire sparkfun_promicrorp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE sparkfun_promicrorp2040.menu.dbglvl.Bluetooth=Bluetooth sparkfun_promicrorp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_promicrorp2040.menu.dbglvl.LWIP=LWIP +sparkfun_promicrorp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 sparkfun_promicrorp2040.menu.dbglvl.All=All -sparkfun_promicrorp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_promicrorp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 sparkfun_promicrorp2040.menu.dbglvl.NDEBUG=NDEBUG sparkfun_promicrorp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG sparkfun_promicrorp2040.menu.usbstack.picosdk=Pico SDK @@ -29744,6 +30351,10 @@ sparkfun_promicrorp2350.menu.opt.Debug=Debug (-Og) sparkfun_promicrorp2350.menu.opt.Debug.build.flags.optimize=-Og sparkfun_promicrorp2350.menu.opt.Disabled=Disabled (-O0) sparkfun_promicrorp2350.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_promicrorp2350.menu.os.none=None +sparkfun_promicrorp2350.menu.os.none.build.os= +sparkfun_promicrorp2350.menu.os.freertos=FreeRTOS SMP +sparkfun_promicrorp2350.menu.os.freertos.build.os=-D__FREERTOS sparkfun_promicrorp2350.menu.profile.Disabled=Disabled sparkfun_promicrorp2350.menu.profile.Disabled.build.flags.profile= sparkfun_promicrorp2350.menu.profile.Enabled=Enabled @@ -29782,8 +30393,10 @@ sparkfun_promicrorp2350.menu.dbglvl.Wire=Wire sparkfun_promicrorp2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE sparkfun_promicrorp2350.menu.dbglvl.Bluetooth=Bluetooth sparkfun_promicrorp2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_promicrorp2350.menu.dbglvl.LWIP=LWIP +sparkfun_promicrorp2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 sparkfun_promicrorp2350.menu.dbglvl.All=All -sparkfun_promicrorp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_promicrorp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 sparkfun_promicrorp2350.menu.dbglvl.NDEBUG=NDEBUG sparkfun_promicrorp2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG sparkfun_promicrorp2350.menu.usbstack.picosdk=Pico SDK @@ -30080,6 +30693,10 @@ sparkfun_thingplusrp2040.menu.opt.Debug=Debug (-Og) sparkfun_thingplusrp2040.menu.opt.Debug.build.flags.optimize=-Og sparkfun_thingplusrp2040.menu.opt.Disabled=Disabled (-O0) sparkfun_thingplusrp2040.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_thingplusrp2040.menu.os.none=None +sparkfun_thingplusrp2040.menu.os.none.build.os= +sparkfun_thingplusrp2040.menu.os.freertos=FreeRTOS SMP +sparkfun_thingplusrp2040.menu.os.freertos.build.os=-D__FREERTOS sparkfun_thingplusrp2040.menu.profile.Disabled=Disabled sparkfun_thingplusrp2040.menu.profile.Disabled.build.flags.profile= sparkfun_thingplusrp2040.menu.profile.Enabled=Enabled @@ -30118,8 +30735,10 @@ sparkfun_thingplusrp2040.menu.dbglvl.Wire=Wire sparkfun_thingplusrp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE sparkfun_thingplusrp2040.menu.dbglvl.Bluetooth=Bluetooth sparkfun_thingplusrp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_thingplusrp2040.menu.dbglvl.LWIP=LWIP +sparkfun_thingplusrp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 sparkfun_thingplusrp2040.menu.dbglvl.All=All -sparkfun_thingplusrp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_thingplusrp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 sparkfun_thingplusrp2040.menu.dbglvl.NDEBUG=NDEBUG sparkfun_thingplusrp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG sparkfun_thingplusrp2040.menu.usbstack.picosdk=Pico SDK @@ -30426,6 +31045,10 @@ sparkfun_thingplusrp2350.menu.opt.Debug=Debug (-Og) sparkfun_thingplusrp2350.menu.opt.Debug.build.flags.optimize=-Og sparkfun_thingplusrp2350.menu.opt.Disabled=Disabled (-O0) sparkfun_thingplusrp2350.menu.opt.Disabled.build.flags.optimize=-O0 +sparkfun_thingplusrp2350.menu.os.none=None +sparkfun_thingplusrp2350.menu.os.none.build.os= +sparkfun_thingplusrp2350.menu.os.freertos=FreeRTOS SMP +sparkfun_thingplusrp2350.menu.os.freertos.build.os=-D__FREERTOS sparkfun_thingplusrp2350.menu.profile.Disabled=Disabled sparkfun_thingplusrp2350.menu.profile.Disabled.build.flags.profile= sparkfun_thingplusrp2350.menu.profile.Enabled=Enabled @@ -30464,8 +31087,10 @@ sparkfun_thingplusrp2350.menu.dbglvl.Wire=Wire sparkfun_thingplusrp2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE sparkfun_thingplusrp2350.menu.dbglvl.Bluetooth=Bluetooth sparkfun_thingplusrp2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +sparkfun_thingplusrp2350.menu.dbglvl.LWIP=LWIP +sparkfun_thingplusrp2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 sparkfun_thingplusrp2350.menu.dbglvl.All=All -sparkfun_thingplusrp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +sparkfun_thingplusrp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 sparkfun_thingplusrp2350.menu.dbglvl.NDEBUG=NDEBUG sparkfun_thingplusrp2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG sparkfun_thingplusrp2350.menu.usbstack.picosdk=Pico SDK @@ -30875,6 +31500,10 @@ 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.os.none=None +sparkfun_iotnode_lorawanrp2350.menu.os.none.build.os= +sparkfun_iotnode_lorawanrp2350.menu.os.freertos=FreeRTOS SMP +sparkfun_iotnode_lorawanrp2350.menu.os.freertos.build.os=-D__FREERTOS sparkfun_iotnode_lorawanrp2350.menu.profile.Disabled=Disabled sparkfun_iotnode_lorawanrp2350.menu.profile.Disabled.build.flags.profile= sparkfun_iotnode_lorawanrp2350.menu.profile.Enabled=Enabled @@ -30913,8 +31542,10 @@ 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.LWIP=LWIP +sparkfun_iotnode_lorawanrp2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 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 @@ -31114,6 +31745,10 @@ 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.os.none=None +sparkfun_xrp_controller_beta.menu.os.none.build.os= +sparkfun_xrp_controller_beta.menu.os.freertos=FreeRTOS SMP +sparkfun_xrp_controller_beta.menu.os.freertos.build.os=-D__FREERTOS 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 @@ -31152,8 +31787,10 @@ 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.LWIP=LWIP +sparkfun_xrp_controller_beta.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 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 @@ -31460,6 +32097,10 @@ 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.os.none=None +sparkfun_xrp_controller.menu.os.none.build.os= +sparkfun_xrp_controller.menu.os.freertos=FreeRTOS SMP +sparkfun_xrp_controller.menu.os.freertos.build.os=-D__FREERTOS sparkfun_xrp_controller.menu.profile.Disabled=Disabled sparkfun_xrp_controller.menu.profile.Disabled.build.flags.profile= sparkfun_xrp_controller.menu.profile.Enabled=Enabled @@ -31498,8 +32139,10 @@ 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.LWIP=LWIP +sparkfun_xrp_controller.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 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.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 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 @@ -31698,6 +32341,10 @@ seeed_indicator_rp2040.menu.opt.Debug=Debug (-Og) seeed_indicator_rp2040.menu.opt.Debug.build.flags.optimize=-Og seeed_indicator_rp2040.menu.opt.Disabled=Disabled (-O0) seeed_indicator_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +seeed_indicator_rp2040.menu.os.none=None +seeed_indicator_rp2040.menu.os.none.build.os= +seeed_indicator_rp2040.menu.os.freertos=FreeRTOS SMP +seeed_indicator_rp2040.menu.os.freertos.build.os=-D__FREERTOS seeed_indicator_rp2040.menu.profile.Disabled=Disabled seeed_indicator_rp2040.menu.profile.Disabled.build.flags.profile= seeed_indicator_rp2040.menu.profile.Enabled=Enabled @@ -31736,8 +32383,10 @@ seeed_indicator_rp2040.menu.dbglvl.Wire=Wire seeed_indicator_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE seeed_indicator_rp2040.menu.dbglvl.Bluetooth=Bluetooth seeed_indicator_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +seeed_indicator_rp2040.menu.dbglvl.LWIP=LWIP +seeed_indicator_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 seeed_indicator_rp2040.menu.dbglvl.All=All -seeed_indicator_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +seeed_indicator_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 seeed_indicator_rp2040.menu.dbglvl.NDEBUG=NDEBUG seeed_indicator_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG seeed_indicator_rp2040.menu.usbstack.picosdk=Pico SDK @@ -31936,6 +32585,10 @@ seeed_xiao_rp2040.menu.opt.Debug=Debug (-Og) seeed_xiao_rp2040.menu.opt.Debug.build.flags.optimize=-Og seeed_xiao_rp2040.menu.opt.Disabled=Disabled (-O0) seeed_xiao_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +seeed_xiao_rp2040.menu.os.none=None +seeed_xiao_rp2040.menu.os.none.build.os= +seeed_xiao_rp2040.menu.os.freertos=FreeRTOS SMP +seeed_xiao_rp2040.menu.os.freertos.build.os=-D__FREERTOS seeed_xiao_rp2040.menu.profile.Disabled=Disabled seeed_xiao_rp2040.menu.profile.Disabled.build.flags.profile= seeed_xiao_rp2040.menu.profile.Enabled=Enabled @@ -31974,8 +32627,10 @@ seeed_xiao_rp2040.menu.dbglvl.Wire=Wire seeed_xiao_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE seeed_xiao_rp2040.menu.dbglvl.Bluetooth=Bluetooth seeed_xiao_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +seeed_xiao_rp2040.menu.dbglvl.LWIP=LWIP +seeed_xiao_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 seeed_xiao_rp2040.menu.dbglvl.All=All -seeed_xiao_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +seeed_xiao_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 seeed_xiao_rp2040.menu.dbglvl.NDEBUG=NDEBUG seeed_xiao_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG seeed_xiao_rp2040.menu.usbstack.picosdk=Pico SDK @@ -32183,6 +32838,10 @@ seeed_xiao_rp2350.menu.opt.Debug=Debug (-Og) seeed_xiao_rp2350.menu.opt.Debug.build.flags.optimize=-Og seeed_xiao_rp2350.menu.opt.Disabled=Disabled (-O0) seeed_xiao_rp2350.menu.opt.Disabled.build.flags.optimize=-O0 +seeed_xiao_rp2350.menu.os.none=None +seeed_xiao_rp2350.menu.os.none.build.os= +seeed_xiao_rp2350.menu.os.freertos=FreeRTOS SMP +seeed_xiao_rp2350.menu.os.freertos.build.os=-D__FREERTOS seeed_xiao_rp2350.menu.profile.Disabled=Disabled seeed_xiao_rp2350.menu.profile.Disabled.build.flags.profile= seeed_xiao_rp2350.menu.profile.Enabled=Enabled @@ -32221,8 +32880,10 @@ seeed_xiao_rp2350.menu.dbglvl.Wire=Wire seeed_xiao_rp2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE seeed_xiao_rp2350.menu.dbglvl.Bluetooth=Bluetooth seeed_xiao_rp2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +seeed_xiao_rp2350.menu.dbglvl.LWIP=LWIP +seeed_xiao_rp2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 seeed_xiao_rp2350.menu.dbglvl.All=All -seeed_xiao_rp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +seeed_xiao_rp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 seeed_xiao_rp2350.menu.dbglvl.NDEBUG=NDEBUG seeed_xiao_rp2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG seeed_xiao_rp2350.menu.usbstack.picosdk=Pico SDK @@ -32421,6 +33082,10 @@ upesy_rp2040_devkit.menu.opt.Debug=Debug (-Og) upesy_rp2040_devkit.menu.opt.Debug.build.flags.optimize=-Og upesy_rp2040_devkit.menu.opt.Disabled=Disabled (-O0) upesy_rp2040_devkit.menu.opt.Disabled.build.flags.optimize=-O0 +upesy_rp2040_devkit.menu.os.none=None +upesy_rp2040_devkit.menu.os.none.build.os= +upesy_rp2040_devkit.menu.os.freertos=FreeRTOS SMP +upesy_rp2040_devkit.menu.os.freertos.build.os=-D__FREERTOS upesy_rp2040_devkit.menu.profile.Disabled=Disabled upesy_rp2040_devkit.menu.profile.Disabled.build.flags.profile= upesy_rp2040_devkit.menu.profile.Enabled=Enabled @@ -32459,8 +33124,10 @@ upesy_rp2040_devkit.menu.dbglvl.Wire=Wire upesy_rp2040_devkit.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE upesy_rp2040_devkit.menu.dbglvl.Bluetooth=Bluetooth upesy_rp2040_devkit.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +upesy_rp2040_devkit.menu.dbglvl.LWIP=LWIP +upesy_rp2040_devkit.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 upesy_rp2040_devkit.menu.dbglvl.All=All -upesy_rp2040_devkit.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +upesy_rp2040_devkit.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 upesy_rp2040_devkit.menu.dbglvl.NDEBUG=NDEBUG upesy_rp2040_devkit.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG upesy_rp2040_devkit.menu.usbstack.picosdk=Pico SDK @@ -32741,6 +33408,10 @@ vccgnd_yd_rp2040.menu.opt.Debug=Debug (-Og) vccgnd_yd_rp2040.menu.opt.Debug.build.flags.optimize=-Og vccgnd_yd_rp2040.menu.opt.Disabled=Disabled (-O0) vccgnd_yd_rp2040.menu.opt.Disabled.build.flags.optimize=-O0 +vccgnd_yd_rp2040.menu.os.none=None +vccgnd_yd_rp2040.menu.os.none.build.os= +vccgnd_yd_rp2040.menu.os.freertos=FreeRTOS SMP +vccgnd_yd_rp2040.menu.os.freertos.build.os=-D__FREERTOS vccgnd_yd_rp2040.menu.profile.Disabled=Disabled vccgnd_yd_rp2040.menu.profile.Disabled.build.flags.profile= vccgnd_yd_rp2040.menu.profile.Enabled=Enabled @@ -32779,8 +33450,10 @@ vccgnd_yd_rp2040.menu.dbglvl.Wire=Wire vccgnd_yd_rp2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE vccgnd_yd_rp2040.menu.dbglvl.Bluetooth=Bluetooth vccgnd_yd_rp2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +vccgnd_yd_rp2040.menu.dbglvl.LWIP=LWIP +vccgnd_yd_rp2040.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 vccgnd_yd_rp2040.menu.dbglvl.All=All -vccgnd_yd_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +vccgnd_yd_rp2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 vccgnd_yd_rp2040.menu.dbglvl.NDEBUG=NDEBUG vccgnd_yd_rp2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG vccgnd_yd_rp2040.menu.usbstack.picosdk=Pico SDK @@ -33021,6 +33694,10 @@ viyalab_mizu.menu.opt.Debug=Debug (-Og) viyalab_mizu.menu.opt.Debug.build.flags.optimize=-Og viyalab_mizu.menu.opt.Disabled=Disabled (-O0) viyalab_mizu.menu.opt.Disabled.build.flags.optimize=-O0 +viyalab_mizu.menu.os.none=None +viyalab_mizu.menu.os.none.build.os= +viyalab_mizu.menu.os.freertos=FreeRTOS SMP +viyalab_mizu.menu.os.freertos.build.os=-D__FREERTOS viyalab_mizu.menu.profile.Disabled=Disabled viyalab_mizu.menu.profile.Disabled.build.flags.profile= viyalab_mizu.menu.profile.Enabled=Enabled @@ -33059,8 +33736,10 @@ viyalab_mizu.menu.dbglvl.Wire=Wire viyalab_mizu.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE viyalab_mizu.menu.dbglvl.Bluetooth=Bluetooth viyalab_mizu.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +viyalab_mizu.menu.dbglvl.LWIP=LWIP +viyalab_mizu.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 viyalab_mizu.menu.dbglvl.All=All -viyalab_mizu.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +viyalab_mizu.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 viyalab_mizu.menu.dbglvl.NDEBUG=NDEBUG viyalab_mizu.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG viyalab_mizu.menu.usbstack.picosdk=Pico SDK @@ -33259,6 +33938,10 @@ waveshare_rp2040_zero.menu.opt.Debug=Debug (-Og) waveshare_rp2040_zero.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2040_zero.menu.opt.Disabled=Disabled (-O0) waveshare_rp2040_zero.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2040_zero.menu.os.none=None +waveshare_rp2040_zero.menu.os.none.build.os= +waveshare_rp2040_zero.menu.os.freertos=FreeRTOS SMP +waveshare_rp2040_zero.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2040_zero.menu.profile.Disabled=Disabled waveshare_rp2040_zero.menu.profile.Disabled.build.flags.profile= waveshare_rp2040_zero.menu.profile.Enabled=Enabled @@ -33297,8 +33980,10 @@ waveshare_rp2040_zero.menu.dbglvl.Wire=Wire waveshare_rp2040_zero.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2040_zero.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2040_zero.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_zero.menu.dbglvl.LWIP=LWIP +waveshare_rp2040_zero.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2040_zero.menu.dbglvl.All=All -waveshare_rp2040_zero.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_zero.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2040_zero.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2040_zero.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2040_zero.menu.usbstack.picosdk=Pico SDK @@ -33511,6 +34196,10 @@ waveshare_rp2040_one.menu.opt.Debug=Debug (-Og) waveshare_rp2040_one.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2040_one.menu.opt.Disabled=Disabled (-O0) waveshare_rp2040_one.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2040_one.menu.os.none=None +waveshare_rp2040_one.menu.os.none.build.os= +waveshare_rp2040_one.menu.os.freertos=FreeRTOS SMP +waveshare_rp2040_one.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2040_one.menu.profile.Disabled=Disabled waveshare_rp2040_one.menu.profile.Disabled.build.flags.profile= waveshare_rp2040_one.menu.profile.Enabled=Enabled @@ -33549,8 +34238,10 @@ waveshare_rp2040_one.menu.dbglvl.Wire=Wire waveshare_rp2040_one.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2040_one.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2040_one.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_one.menu.dbglvl.LWIP=LWIP +waveshare_rp2040_one.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2040_one.menu.dbglvl.All=All -waveshare_rp2040_one.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_one.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2040_one.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2040_one.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2040_one.menu.usbstack.picosdk=Pico SDK @@ -33749,6 +34440,10 @@ waveshare_rp2040_matrix.menu.opt.Debug=Debug (-Og) waveshare_rp2040_matrix.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2040_matrix.menu.opt.Disabled=Disabled (-O0) waveshare_rp2040_matrix.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2040_matrix.menu.os.none=None +waveshare_rp2040_matrix.menu.os.none.build.os= +waveshare_rp2040_matrix.menu.os.freertos=FreeRTOS SMP +waveshare_rp2040_matrix.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2040_matrix.menu.profile.Disabled=Disabled waveshare_rp2040_matrix.menu.profile.Disabled.build.flags.profile= waveshare_rp2040_matrix.menu.profile.Enabled=Enabled @@ -33787,8 +34482,10 @@ waveshare_rp2040_matrix.menu.dbglvl.Wire=Wire waveshare_rp2040_matrix.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2040_matrix.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2040_matrix.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_matrix.menu.dbglvl.LWIP=LWIP +waveshare_rp2040_matrix.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2040_matrix.menu.dbglvl.All=All -waveshare_rp2040_matrix.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_matrix.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2040_matrix.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2040_matrix.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2040_matrix.menu.usbstack.picosdk=Pico SDK @@ -34085,6 +34782,10 @@ waveshare_rp2040_pizero.menu.opt.Debug=Debug (-Og) waveshare_rp2040_pizero.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2040_pizero.menu.opt.Disabled=Disabled (-O0) waveshare_rp2040_pizero.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2040_pizero.menu.os.none=None +waveshare_rp2040_pizero.menu.os.none.build.os= +waveshare_rp2040_pizero.menu.os.freertos=FreeRTOS SMP +waveshare_rp2040_pizero.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2040_pizero.menu.profile.Disabled=Disabled waveshare_rp2040_pizero.menu.profile.Disabled.build.flags.profile= waveshare_rp2040_pizero.menu.profile.Enabled=Enabled @@ -34123,8 +34824,10 @@ waveshare_rp2040_pizero.menu.dbglvl.Wire=Wire waveshare_rp2040_pizero.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2040_pizero.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2040_pizero.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_pizero.menu.dbglvl.LWIP=LWIP +waveshare_rp2040_pizero.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2040_pizero.menu.dbglvl.All=All -waveshare_rp2040_pizero.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_pizero.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2040_pizero.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2040_pizero.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2040_pizero.menu.usbstack.picosdk=Pico SDK @@ -34386,6 +35089,10 @@ waveshare_rp2040_plus.menu.opt.Debug=Debug (-Og) waveshare_rp2040_plus.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2040_plus.menu.opt.Disabled=Disabled (-O0) waveshare_rp2040_plus.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2040_plus.menu.os.none=None +waveshare_rp2040_plus.menu.os.none.build.os= +waveshare_rp2040_plus.menu.os.freertos=FreeRTOS SMP +waveshare_rp2040_plus.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2040_plus.menu.profile.Disabled=Disabled waveshare_rp2040_plus.menu.profile.Disabled.build.flags.profile= waveshare_rp2040_plus.menu.profile.Enabled=Enabled @@ -34424,8 +35131,10 @@ waveshare_rp2040_plus.menu.dbglvl.Wire=Wire waveshare_rp2040_plus.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2040_plus.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2040_plus.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_plus.menu.dbglvl.LWIP=LWIP +waveshare_rp2040_plus.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2040_plus.menu.dbglvl.All=All -waveshare_rp2040_plus.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_plus.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2040_plus.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2040_plus.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2040_plus.menu.usbstack.picosdk=Pico SDK @@ -34624,6 +35333,10 @@ waveshare_rp2040_lcd_0_96.menu.opt.Debug=Debug (-Og) waveshare_rp2040_lcd_0_96.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2040_lcd_0_96.menu.opt.Disabled=Disabled (-O0) waveshare_rp2040_lcd_0_96.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2040_lcd_0_96.menu.os.none=None +waveshare_rp2040_lcd_0_96.menu.os.none.build.os= +waveshare_rp2040_lcd_0_96.menu.os.freertos=FreeRTOS SMP +waveshare_rp2040_lcd_0_96.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2040_lcd_0_96.menu.profile.Disabled=Disabled waveshare_rp2040_lcd_0_96.menu.profile.Disabled.build.flags.profile= waveshare_rp2040_lcd_0_96.menu.profile.Enabled=Enabled @@ -34662,8 +35375,10 @@ waveshare_rp2040_lcd_0_96.menu.dbglvl.Wire=Wire waveshare_rp2040_lcd_0_96.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2040_lcd_0_96.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2040_lcd_0_96.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_lcd_0_96.menu.dbglvl.LWIP=LWIP +waveshare_rp2040_lcd_0_96.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2040_lcd_0_96.menu.dbglvl.All=All -waveshare_rp2040_lcd_0_96.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_lcd_0_96.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2040_lcd_0_96.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2040_lcd_0_96.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2040_lcd_0_96.menu.usbstack.picosdk=Pico SDK @@ -34862,6 +35577,10 @@ waveshare_rp2040_lcd_1_28.menu.opt.Debug=Debug (-Og) waveshare_rp2040_lcd_1_28.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2040_lcd_1_28.menu.opt.Disabled=Disabled (-O0) waveshare_rp2040_lcd_1_28.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2040_lcd_1_28.menu.os.none=None +waveshare_rp2040_lcd_1_28.menu.os.none.build.os= +waveshare_rp2040_lcd_1_28.menu.os.freertos=FreeRTOS SMP +waveshare_rp2040_lcd_1_28.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2040_lcd_1_28.menu.profile.Disabled=Disabled waveshare_rp2040_lcd_1_28.menu.profile.Disabled.build.flags.profile= waveshare_rp2040_lcd_1_28.menu.profile.Enabled=Enabled @@ -34900,8 +35619,10 @@ waveshare_rp2040_lcd_1_28.menu.dbglvl.Wire=Wire waveshare_rp2040_lcd_1_28.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2040_lcd_1_28.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2040_lcd_1_28.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_lcd_1_28.menu.dbglvl.LWIP=LWIP +waveshare_rp2040_lcd_1_28.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2040_lcd_1_28.menu.dbglvl.All=All -waveshare_rp2040_lcd_1_28.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2040_lcd_1_28.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2040_lcd_1_28.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2040_lcd_1_28.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2040_lcd_1_28.menu.usbstack.picosdk=Pico SDK @@ -35123,6 +35844,10 @@ waveshare_rp2350_zero.menu.opt.Debug=Debug (-Og) waveshare_rp2350_zero.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2350_zero.menu.opt.Disabled=Disabled (-O0) waveshare_rp2350_zero.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2350_zero.menu.os.none=None +waveshare_rp2350_zero.menu.os.none.build.os= +waveshare_rp2350_zero.menu.os.freertos=FreeRTOS SMP +waveshare_rp2350_zero.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2350_zero.menu.profile.Disabled=Disabled waveshare_rp2350_zero.menu.profile.Disabled.build.flags.profile= waveshare_rp2350_zero.menu.profile.Enabled=Enabled @@ -35161,8 +35886,10 @@ waveshare_rp2350_zero.menu.dbglvl.Wire=Wire waveshare_rp2350_zero.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2350_zero.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2350_zero.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2350_zero.menu.dbglvl.LWIP=LWIP +waveshare_rp2350_zero.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2350_zero.menu.dbglvl.All=All -waveshare_rp2350_zero.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2350_zero.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2350_zero.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2350_zero.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2350_zero.menu.usbstack.picosdk=Pico SDK @@ -35433,6 +36160,10 @@ waveshare_rp2350_plus.menu.opt.Debug=Debug (-Og) waveshare_rp2350_plus.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2350_plus.menu.opt.Disabled=Disabled (-O0) waveshare_rp2350_plus.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2350_plus.menu.os.none=None +waveshare_rp2350_plus.menu.os.none.build.os= +waveshare_rp2350_plus.menu.os.freertos=FreeRTOS SMP +waveshare_rp2350_plus.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2350_plus.menu.profile.Disabled=Disabled waveshare_rp2350_plus.menu.profile.Disabled.build.flags.profile= waveshare_rp2350_plus.menu.profile.Enabled=Enabled @@ -35471,8 +36202,10 @@ waveshare_rp2350_plus.menu.dbglvl.Wire=Wire waveshare_rp2350_plus.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2350_plus.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2350_plus.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2350_plus.menu.dbglvl.LWIP=LWIP +waveshare_rp2350_plus.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2350_plus.menu.dbglvl.All=All -waveshare_rp2350_plus.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2350_plus.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2350_plus.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2350_plus.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2350_plus.menu.usbstack.picosdk=Pico SDK @@ -35694,6 +36427,10 @@ waveshare_rp2350_lcd_0_96.menu.opt.Debug=Debug (-Og) waveshare_rp2350_lcd_0_96.menu.opt.Debug.build.flags.optimize=-Og waveshare_rp2350_lcd_0_96.menu.opt.Disabled=Disabled (-O0) waveshare_rp2350_lcd_0_96.menu.opt.Disabled.build.flags.optimize=-O0 +waveshare_rp2350_lcd_0_96.menu.os.none=None +waveshare_rp2350_lcd_0_96.menu.os.none.build.os= +waveshare_rp2350_lcd_0_96.menu.os.freertos=FreeRTOS SMP +waveshare_rp2350_lcd_0_96.menu.os.freertos.build.os=-D__FREERTOS waveshare_rp2350_lcd_0_96.menu.profile.Disabled=Disabled waveshare_rp2350_lcd_0_96.menu.profile.Disabled.build.flags.profile= waveshare_rp2350_lcd_0_96.menu.profile.Enabled=Enabled @@ -35732,8 +36469,10 @@ waveshare_rp2350_lcd_0_96.menu.dbglvl.Wire=Wire waveshare_rp2350_lcd_0_96.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE waveshare_rp2350_lcd_0_96.menu.dbglvl.Bluetooth=Bluetooth waveshare_rp2350_lcd_0_96.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +waveshare_rp2350_lcd_0_96.menu.dbglvl.LWIP=LWIP +waveshare_rp2350_lcd_0_96.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 waveshare_rp2350_lcd_0_96.menu.dbglvl.All=All -waveshare_rp2350_lcd_0_96.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +waveshare_rp2350_lcd_0_96.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 waveshare_rp2350_lcd_0_96.menu.dbglvl.NDEBUG=NDEBUG waveshare_rp2350_lcd_0_96.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG waveshare_rp2350_lcd_0_96.menu.usbstack.picosdk=Pico SDK @@ -35932,6 +36671,10 @@ wiznet_5100s_evb_pico.menu.opt.Debug=Debug (-Og) wiznet_5100s_evb_pico.menu.opt.Debug.build.flags.optimize=-Og wiznet_5100s_evb_pico.menu.opt.Disabled=Disabled (-O0) wiznet_5100s_evb_pico.menu.opt.Disabled.build.flags.optimize=-O0 +wiznet_5100s_evb_pico.menu.os.none=None +wiznet_5100s_evb_pico.menu.os.none.build.os= +wiznet_5100s_evb_pico.menu.os.freertos=FreeRTOS SMP +wiznet_5100s_evb_pico.menu.os.freertos.build.os=-D__FREERTOS wiznet_5100s_evb_pico.menu.profile.Disabled=Disabled wiznet_5100s_evb_pico.menu.profile.Disabled.build.flags.profile= wiznet_5100s_evb_pico.menu.profile.Enabled=Enabled @@ -35970,8 +36713,10 @@ wiznet_5100s_evb_pico.menu.dbglvl.Wire=Wire wiznet_5100s_evb_pico.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE wiznet_5100s_evb_pico.menu.dbglvl.Bluetooth=Bluetooth wiznet_5100s_evb_pico.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +wiznet_5100s_evb_pico.menu.dbglvl.LWIP=LWIP +wiznet_5100s_evb_pico.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 wiznet_5100s_evb_pico.menu.dbglvl.All=All -wiznet_5100s_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +wiznet_5100s_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 wiznet_5100s_evb_pico.menu.dbglvl.NDEBUG=NDEBUG wiznet_5100s_evb_pico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG wiznet_5100s_evb_pico.menu.usbstack.picosdk=Pico SDK @@ -36179,6 +36924,10 @@ wiznet_5100s_evb_pico2.menu.opt.Debug=Debug (-Og) wiznet_5100s_evb_pico2.menu.opt.Debug.build.flags.optimize=-Og wiznet_5100s_evb_pico2.menu.opt.Disabled=Disabled (-O0) wiznet_5100s_evb_pico2.menu.opt.Disabled.build.flags.optimize=-O0 +wiznet_5100s_evb_pico2.menu.os.none=None +wiznet_5100s_evb_pico2.menu.os.none.build.os= +wiznet_5100s_evb_pico2.menu.os.freertos=FreeRTOS SMP +wiznet_5100s_evb_pico2.menu.os.freertos.build.os=-D__FREERTOS wiznet_5100s_evb_pico2.menu.profile.Disabled=Disabled wiznet_5100s_evb_pico2.menu.profile.Disabled.build.flags.profile= wiznet_5100s_evb_pico2.menu.profile.Enabled=Enabled @@ -36217,8 +36966,10 @@ wiznet_5100s_evb_pico2.menu.dbglvl.Wire=Wire wiznet_5100s_evb_pico2.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE wiznet_5100s_evb_pico2.menu.dbglvl.Bluetooth=Bluetooth wiznet_5100s_evb_pico2.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +wiznet_5100s_evb_pico2.menu.dbglvl.LWIP=LWIP +wiznet_5100s_evb_pico2.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 wiznet_5100s_evb_pico2.menu.dbglvl.All=All -wiznet_5100s_evb_pico2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +wiznet_5100s_evb_pico2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 wiznet_5100s_evb_pico2.menu.dbglvl.NDEBUG=NDEBUG wiznet_5100s_evb_pico2.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG wiznet_5100s_evb_pico2.menu.usbstack.picosdk=Pico SDK @@ -36417,6 +37168,10 @@ wiznet_wizfi360_evb_pico.menu.opt.Debug=Debug (-Og) wiznet_wizfi360_evb_pico.menu.opt.Debug.build.flags.optimize=-Og wiznet_wizfi360_evb_pico.menu.opt.Disabled=Disabled (-O0) wiznet_wizfi360_evb_pico.menu.opt.Disabled.build.flags.optimize=-O0 +wiznet_wizfi360_evb_pico.menu.os.none=None +wiznet_wizfi360_evb_pico.menu.os.none.build.os= +wiznet_wizfi360_evb_pico.menu.os.freertos=FreeRTOS SMP +wiznet_wizfi360_evb_pico.menu.os.freertos.build.os=-D__FREERTOS wiznet_wizfi360_evb_pico.menu.profile.Disabled=Disabled wiznet_wizfi360_evb_pico.menu.profile.Disabled.build.flags.profile= wiznet_wizfi360_evb_pico.menu.profile.Enabled=Enabled @@ -36455,8 +37210,10 @@ wiznet_wizfi360_evb_pico.menu.dbglvl.Wire=Wire wiznet_wizfi360_evb_pico.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE wiznet_wizfi360_evb_pico.menu.dbglvl.Bluetooth=Bluetooth wiznet_wizfi360_evb_pico.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +wiznet_wizfi360_evb_pico.menu.dbglvl.LWIP=LWIP +wiznet_wizfi360_evb_pico.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 wiznet_wizfi360_evb_pico.menu.dbglvl.All=All -wiznet_wizfi360_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +wiznet_wizfi360_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 wiznet_wizfi360_evb_pico.menu.dbglvl.NDEBUG=NDEBUG wiznet_wizfi360_evb_pico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG wiznet_wizfi360_evb_pico.menu.usbstack.picosdk=Pico SDK @@ -36655,6 +37412,10 @@ wiznet_5500_evb_pico.menu.opt.Debug=Debug (-Og) wiznet_5500_evb_pico.menu.opt.Debug.build.flags.optimize=-Og wiznet_5500_evb_pico.menu.opt.Disabled=Disabled (-O0) wiznet_5500_evb_pico.menu.opt.Disabled.build.flags.optimize=-O0 +wiznet_5500_evb_pico.menu.os.none=None +wiznet_5500_evb_pico.menu.os.none.build.os= +wiznet_5500_evb_pico.menu.os.freertos=FreeRTOS SMP +wiznet_5500_evb_pico.menu.os.freertos.build.os=-D__FREERTOS wiznet_5500_evb_pico.menu.profile.Disabled=Disabled wiznet_5500_evb_pico.menu.profile.Disabled.build.flags.profile= wiznet_5500_evb_pico.menu.profile.Enabled=Enabled @@ -36693,8 +37454,10 @@ wiznet_5500_evb_pico.menu.dbglvl.Wire=Wire wiznet_5500_evb_pico.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE wiznet_5500_evb_pico.menu.dbglvl.Bluetooth=Bluetooth wiznet_5500_evb_pico.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +wiznet_5500_evb_pico.menu.dbglvl.LWIP=LWIP +wiznet_5500_evb_pico.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 wiznet_5500_evb_pico.menu.dbglvl.All=All -wiznet_5500_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +wiznet_5500_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 wiznet_5500_evb_pico.menu.dbglvl.NDEBUG=NDEBUG wiznet_5500_evb_pico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG wiznet_5500_evb_pico.menu.usbstack.picosdk=Pico SDK @@ -36902,6 +37665,10 @@ wiznet_5500_evb_pico2.menu.opt.Debug=Debug (-Og) wiznet_5500_evb_pico2.menu.opt.Debug.build.flags.optimize=-Og wiznet_5500_evb_pico2.menu.opt.Disabled=Disabled (-O0) wiznet_5500_evb_pico2.menu.opt.Disabled.build.flags.optimize=-O0 +wiznet_5500_evb_pico2.menu.os.none=None +wiznet_5500_evb_pico2.menu.os.none.build.os= +wiznet_5500_evb_pico2.menu.os.freertos=FreeRTOS SMP +wiznet_5500_evb_pico2.menu.os.freertos.build.os=-D__FREERTOS wiznet_5500_evb_pico2.menu.profile.Disabled=Disabled wiznet_5500_evb_pico2.menu.profile.Disabled.build.flags.profile= wiznet_5500_evb_pico2.menu.profile.Enabled=Enabled @@ -36940,8 +37707,10 @@ wiznet_5500_evb_pico2.menu.dbglvl.Wire=Wire wiznet_5500_evb_pico2.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE wiznet_5500_evb_pico2.menu.dbglvl.Bluetooth=Bluetooth wiznet_5500_evb_pico2.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +wiznet_5500_evb_pico2.menu.dbglvl.LWIP=LWIP +wiznet_5500_evb_pico2.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 wiznet_5500_evb_pico2.menu.dbglvl.All=All -wiznet_5500_evb_pico2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +wiznet_5500_evb_pico2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 wiznet_5500_evb_pico2.menu.dbglvl.NDEBUG=NDEBUG wiznet_5500_evb_pico2.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG wiznet_5500_evb_pico2.menu.usbstack.picosdk=Pico SDK @@ -37140,6 +37909,10 @@ wiznet_55rp20_evb_pico.menu.opt.Debug=Debug (-Og) wiznet_55rp20_evb_pico.menu.opt.Debug.build.flags.optimize=-Og wiznet_55rp20_evb_pico.menu.opt.Disabled=Disabled (-O0) wiznet_55rp20_evb_pico.menu.opt.Disabled.build.flags.optimize=-O0 +wiznet_55rp20_evb_pico.menu.os.none=None +wiznet_55rp20_evb_pico.menu.os.none.build.os= +wiznet_55rp20_evb_pico.menu.os.freertos=FreeRTOS SMP +wiznet_55rp20_evb_pico.menu.os.freertos.build.os=-D__FREERTOS wiznet_55rp20_evb_pico.menu.profile.Disabled=Disabled wiznet_55rp20_evb_pico.menu.profile.Disabled.build.flags.profile= wiznet_55rp20_evb_pico.menu.profile.Enabled=Enabled @@ -37178,8 +37951,10 @@ wiznet_55rp20_evb_pico.menu.dbglvl.Wire=Wire wiznet_55rp20_evb_pico.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE wiznet_55rp20_evb_pico.menu.dbglvl.Bluetooth=Bluetooth wiznet_55rp20_evb_pico.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +wiznet_55rp20_evb_pico.menu.dbglvl.LWIP=LWIP +wiznet_55rp20_evb_pico.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 wiznet_55rp20_evb_pico.menu.dbglvl.All=All -wiznet_55rp20_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +wiznet_55rp20_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 wiznet_55rp20_evb_pico.menu.dbglvl.NDEBUG=NDEBUG wiznet_55rp20_evb_pico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG wiznet_55rp20_evb_pico.menu.usbstack.picosdk=Pico SDK @@ -37378,6 +38153,10 @@ wiznet_6300_evb_pico.menu.opt.Debug=Debug (-Og) wiznet_6300_evb_pico.menu.opt.Debug.build.flags.optimize=-Og wiznet_6300_evb_pico.menu.opt.Disabled=Disabled (-O0) wiznet_6300_evb_pico.menu.opt.Disabled.build.flags.optimize=-O0 +wiznet_6300_evb_pico.menu.os.none=None +wiznet_6300_evb_pico.menu.os.none.build.os= +wiznet_6300_evb_pico.menu.os.freertos=FreeRTOS SMP +wiznet_6300_evb_pico.menu.os.freertos.build.os=-D__FREERTOS wiznet_6300_evb_pico.menu.profile.Disabled=Disabled wiznet_6300_evb_pico.menu.profile.Disabled.build.flags.profile= wiznet_6300_evb_pico.menu.profile.Enabled=Enabled @@ -37416,8 +38195,10 @@ wiznet_6300_evb_pico.menu.dbglvl.Wire=Wire wiznet_6300_evb_pico.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE wiznet_6300_evb_pico.menu.dbglvl.Bluetooth=Bluetooth wiznet_6300_evb_pico.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +wiznet_6300_evb_pico.menu.dbglvl.LWIP=LWIP +wiznet_6300_evb_pico.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 wiznet_6300_evb_pico.menu.dbglvl.All=All -wiznet_6300_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +wiznet_6300_evb_pico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 wiznet_6300_evb_pico.menu.dbglvl.NDEBUG=NDEBUG wiznet_6300_evb_pico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG wiznet_6300_evb_pico.menu.usbstack.picosdk=Pico SDK @@ -37625,6 +38406,10 @@ wiznet_6300_evb_pico2.menu.opt.Debug=Debug (-Og) wiznet_6300_evb_pico2.menu.opt.Debug.build.flags.optimize=-Og wiznet_6300_evb_pico2.menu.opt.Disabled=Disabled (-O0) wiznet_6300_evb_pico2.menu.opt.Disabled.build.flags.optimize=-O0 +wiznet_6300_evb_pico2.menu.os.none=None +wiznet_6300_evb_pico2.menu.os.none.build.os= +wiznet_6300_evb_pico2.menu.os.freertos=FreeRTOS SMP +wiznet_6300_evb_pico2.menu.os.freertos.build.os=-D__FREERTOS wiznet_6300_evb_pico2.menu.profile.Disabled=Disabled wiznet_6300_evb_pico2.menu.profile.Disabled.build.flags.profile= wiznet_6300_evb_pico2.menu.profile.Enabled=Enabled @@ -37663,8 +38448,10 @@ wiznet_6300_evb_pico2.menu.dbglvl.Wire=Wire wiznet_6300_evb_pico2.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE wiznet_6300_evb_pico2.menu.dbglvl.Bluetooth=Bluetooth wiznet_6300_evb_pico2.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +wiznet_6300_evb_pico2.menu.dbglvl.LWIP=LWIP +wiznet_6300_evb_pico2.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 wiznet_6300_evb_pico2.menu.dbglvl.All=All -wiznet_6300_evb_pico2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +wiznet_6300_evb_pico2.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 wiznet_6300_evb_pico2.menu.dbglvl.NDEBUG=NDEBUG wiznet_6300_evb_pico2.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG wiznet_6300_evb_pico2.menu.usbstack.picosdk=Pico SDK @@ -37937,6 +38724,10 @@ generic.menu.opt.Debug=Debug (-Og) generic.menu.opt.Debug.build.flags.optimize=-Og generic.menu.opt.Disabled=Disabled (-O0) generic.menu.opt.Disabled.build.flags.optimize=-O0 +generic.menu.os.none=None +generic.menu.os.none.build.os= +generic.menu.os.freertos=FreeRTOS SMP +generic.menu.os.freertos.build.os=-D__FREERTOS generic.menu.profile.Disabled=Disabled generic.menu.profile.Disabled.build.flags.profile= generic.menu.profile.Enabled=Enabled @@ -37975,8 +38766,10 @@ generic.menu.dbglvl.Wire=Wire generic.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE generic.menu.dbglvl.Bluetooth=Bluetooth generic.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +generic.menu.dbglvl.LWIP=LWIP +generic.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 generic.menu.dbglvl.All=All -generic.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +generic.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 generic.menu.dbglvl.NDEBUG=NDEBUG generic.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG generic.menu.usbstack.picosdk=Pico SDK @@ -38393,6 +39186,10 @@ generic_rp2350.menu.opt.Debug=Debug (-Og) generic_rp2350.menu.opt.Debug.build.flags.optimize=-Og generic_rp2350.menu.opt.Disabled=Disabled (-O0) generic_rp2350.menu.opt.Disabled.build.flags.optimize=-O0 +generic_rp2350.menu.os.none=None +generic_rp2350.menu.os.none.build.os= +generic_rp2350.menu.os.freertos=FreeRTOS SMP +generic_rp2350.menu.os.freertos.build.os=-D__FREERTOS generic_rp2350.menu.profile.Disabled=Disabled generic_rp2350.menu.profile.Disabled.build.flags.profile= generic_rp2350.menu.profile.Enabled=Enabled @@ -38431,8 +39228,10 @@ generic_rp2350.menu.dbglvl.Wire=Wire generic_rp2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE generic_rp2350.menu.dbglvl.Bluetooth=Bluetooth generic_rp2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +generic_rp2350.menu.dbglvl.LWIP=LWIP +generic_rp2350.menu.dbglvl.LWIP.build.debug_level=-DLWIP_DEBUG=1 generic_rp2350.menu.dbglvl.All=All -generic_rp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +generic_rp2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1 generic_rp2350.menu.dbglvl.NDEBUG=NDEBUG generic_rp2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG generic_rp2350.menu.usbstack.picosdk=Pico SDK diff --git a/cores/rp2040/Arduino.h b/cores/rp2040/Arduino.h index 515caf7f4..494731c4f 100644 --- a/cores/rp2040/Arduino.h +++ b/cores/rp2040/Arduino.h @@ -109,9 +109,6 @@ void analogWriteResolution(int res); } // extern "C" #endif -// FreeRTOS potential calls -extern bool __isFreeRTOS; - // Ancient AVR defines #define HAVE_HWSERIAL0 #define HAVE_HWSERIAL1 diff --git a/cores/rp2040/Bootsel.cpp b/cores/rp2040/Bootsel.cpp index 31bfa5829..b1a2fd3de 100644 --- a/cores/rp2040/Bootsel.cpp +++ b/cores/rp2040/Bootsel.cpp @@ -26,9 +26,9 @@ static bool __no_inline_not_in_flash_func(get_bootsel_button)() { // Must disable interrupts, as interrupt handlers may be in flash, and we // are about to temporarily disable flash access! - if (!__isFreeRTOS) { - noInterrupts(); - } +#ifndef __FREERTOS + noInterrupts(); +#endif rp2040.idleOtherCore(); // Set chip select to Hi-Z @@ -55,9 +55,9 @@ static bool __no_inline_not_in_flash_func(get_bootsel_button)() { IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_BITS); rp2040.resumeOtherCore(); - if (!__isFreeRTOS) { - interrupts(); - } +#ifndef __FREERTOS + interrupts(); +#endif return button_state; } diff --git a/cores/rp2040/CoreMutex.cpp b/cores/rp2040/CoreMutex.cpp index 42af54ea8..334df81f6 100644 --- a/cores/rp2040/CoreMutex.cpp +++ b/cores/rp2040/CoreMutex.cpp @@ -28,45 +28,45 @@ CoreMutex::CoreMutex(mutex_t *mutex, uint8_t option) { _mutex = mutex; _acquired = false; _option = option; +#ifdef __FREERTOS _pxHigherPriorityTaskWoken = 0; // pdFALSE - if (__isFreeRTOS) { - auto m = __get_freertos_mutex_for_ptr(mutex); + auto m = __get_freertos_mutex_for_ptr(mutex); - if (__freertos_check_if_in_isr()) { - if (!__freertos_mutex_take_from_isr(m, &_pxHigherPriorityTaskWoken)) { - return; - } - // At this point we have the mutex in ISR - } else { - // Grab the mutex normally, possibly waking other tasks to get it - __freertos_mutex_take(m); + if (__freertos_check_if_in_isr()) { + if (!__freertos_mutex_take_from_isr(m, &_pxHigherPriorityTaskWoken)) { + return; } + // At this point we have the mutex in ISR } else { - uint32_t owner; - if (!mutex_try_enter(_mutex, &owner)) { - if (owner == get_core_num()) { // Deadlock! - if (_option & DebugEnable) { - DEBUGCORE("CoreMutex - Deadlock detected!\n"); - } - return; + // Grab the mutex normally, possibly waking other tasks to get it + __freertos_mutex_take(m); + } +#else + uint32_t owner; + if (!mutex_try_enter(_mutex, &owner)) { + if (owner == get_core_num()) { // Deadlock! + if (_option & DebugEnable) { + DEBUGCORE("CoreMutex - Deadlock detected!\n"); } - mutex_enter_blocking(_mutex); + return; } + mutex_enter_blocking(_mutex); } +#endif _acquired = true; } CoreMutex::~CoreMutex() { if (_acquired) { - if (__isFreeRTOS) { - auto m = __get_freertos_mutex_for_ptr(_mutex); - if (__freertos_check_if_in_isr()) { - __freertos_mutex_give_from_isr(m, &_pxHigherPriorityTaskWoken); - } else { - __freertos_mutex_give(m); - } +#ifdef __FREERTOS + auto m = __get_freertos_mutex_for_ptr(_mutex); + if (__freertos_check_if_in_isr()) { + __freertos_mutex_give_from_isr(m, &_pxHigherPriorityTaskWoken); } else { - mutex_exit(_mutex); + __freertos_mutex_give(m); } +#else + mutex_exit(_mutex); +#endif } } diff --git a/cores/rp2040/CoreMutex.h b/cores/rp2040/CoreMutex.h index c49edcc6b..9750d618f 100644 --- a/cores/rp2040/CoreMutex.h +++ b/cores/rp2040/CoreMutex.h @@ -43,5 +43,7 @@ class CoreMutex { mutex_t *_mutex; bool _acquired; uint8_t _option; +#ifdef __FREERTOS BaseType_t _pxHigherPriorityTaskWoken; +#endif }; diff --git a/cores/rp2040/RP2040Support.h b/cores/rp2040/RP2040Support.h index e2c49e24b..650a41392 100644 --- a/cores/rp2040/RP2040Support.h +++ b/cores/rp2040/RP2040Support.h @@ -72,17 +72,18 @@ class _MFIFO { } void registerCore() { - if (!__isFreeRTOS) { - multicore_fifo_clear_irq(); +#ifndef __FREERTOS + multicore_fifo_clear_irq(); #ifdef PICO_RP2350 - irq_set_exclusive_handler(SIO_IRQ_FIFO, _irq); - irq_set_enabled(SIO_IRQ_FIFO, true); + irq_set_exclusive_handler(SIO_IRQ_FIFO, _irq); + irq_set_enabled(SIO_IRQ_FIFO, true); #else - irq_set_exclusive_handler(SIO_IRQ_PROC0 + get_core_num(), _irq); - irq_set_enabled(SIO_IRQ_PROC0 + get_core_num(), true); + irq_set_exclusive_handler(SIO_IRQ_PROC0 + get_core_num(), _irq); + irq_set_enabled(SIO_IRQ_PROC0 + get_core_num(), true); #endif - } +#else // FreeRTOS port.c will handle the IRQ hooking +#endif } void push(uint32_t val) { @@ -113,14 +114,14 @@ class _MFIFO { if (!_multicore) { return; } - if (__isFreeRTOS) { - __freertos_idle_other_core(); - } else { - mutex_enter_blocking(&_idleMutex); - __otherCoreIdled = false; - multicore_fifo_push_blocking(_GOTOSLEEP); - while (!__otherCoreIdled) { /* noop */ } - } +#ifdef __FREERTOS + __freertos_idle_other_core(); +#else + mutex_enter_blocking(&_idleMutex); + __otherCoreIdled = false; + multicore_fifo_push_blocking(_GOTOSLEEP); + while (!__otherCoreIdled) { /* noop */ } +#endif } void resumeOtherCore() { @@ -129,9 +130,9 @@ class _MFIFO { } mutex_exit(&_idleMutex); __otherCoreIdled = false; - if (__isFreeRTOS) { - __freertos_resume_other_core(); - } +#ifdef __FREERTOS + __freertos_resume_other_core(); +#endif // Other core will exit busy-loop and return to operation // once __otherCoreIdled == false. @@ -151,18 +152,18 @@ class _MFIFO { private: static void __no_inline_not_in_flash_func(_irq)() { - if (!__isFreeRTOS) { - multicore_fifo_clear_irq(); - noInterrupts(); // We need total control, can't run anything - while (multicore_fifo_rvalid()) { - if (_GOTOSLEEP == multicore_fifo_pop_blocking()) { - __otherCoreIdled = true; - while (__otherCoreIdled) { /* noop */ } - break; - } +#ifndef __FREERTOS + multicore_fifo_clear_irq(); + noInterrupts(); // We need total control, can't run anything + while (multicore_fifo_rvalid()) { + if (_GOTOSLEEP == multicore_fifo_pop_blocking()) { + __otherCoreIdled = true; + while (__otherCoreIdled) { /* noop */ } + break; } - interrupts(); } + interrupts(); +#endif } bool _multicore = false; @@ -192,23 +193,19 @@ class RP2040 { void begin(int cpuid) { _epoch[cpuid] = 0; -#if !defined(__riscv) && !defined(__PROFILE) - if (!__isFreeRTOS) { - // Enable SYSTICK exception - exception_set_exclusive_handler(SYSTICK_EXCEPTION, _SystickHandler); - systick_hw->csr = 0x7; - systick_hw->rvr = 0x00FFFFFF; - } else { -#endif - // 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) +#if !defined(__riscv) && !defined(__PROFILE) && !defined(__FREERTOS) + // Enable SYSTICK exception + exception_set_exclusive_handler(SYSTICK_EXCEPTION, _SystickHandler); + systick_hw->csr = 0x7; + systick_hw->rvr = 0x00FFFFFF; +#else + // 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); } #endif } @@ -255,21 +252,17 @@ class RP2040 { @returns CPU clock cycles since power up */ inline uint32_t getCycleCount() { -#if !defined(__riscv) && !defined(__PROFILE) +#if !defined(__riscv) && !defined(__PROFILE) && !defined(__FREERTOS) // 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[sio_hw->cpuid]; - ctr = systick_hw->cvr; - } while (epoch != (uint32_t)_epoch[sio_hw->cpuid]); - return epoch + (1 << 24) - ctr; /* CTR counts down from 1<<24-1 */ - } else { -#endif - return ccount_read(_pio, _sm); -#if !defined(__riscv) && !defined(__PROFILE) - } + uint32_t epoch; + uint32_t ctr; + do { + epoch = (uint32_t)_epoch[sio_hw->cpuid]; + ctr = systick_hw->cvr; + } while (epoch != (uint32_t)_epoch[sio_hw->cpuid]); + return epoch + (1 << 24) - ctr; /* CTR counts down from 1<<24-1 */ +#else + return ccount_read(_pio, _sm); #endif } /** @@ -278,20 +271,16 @@ class RP2040 { @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[sio_hw->cpuid]; - ctr = systick_hw->cvr; - } while (epoch != _epoch[sio_hw->cpuid]); - return epoch + (1LL << 24) - ctr; - } else { -#endif - return ccount_read(_pio, _sm); -#if !defined(__riscv) && !defined(__PROFILE) - } +#if !defined(__riscv) && !defined(__PROFILE) && !defined(__FREERTOS) + uint64_t epoch; + uint64_t ctr; + do { + epoch = _epoch[sio_hw->cpuid]; + ctr = systick_hw->cvr; + } while (epoch != _epoch[sio_hw->cpuid]); + return epoch + (1LL << 24) - ctr; +#else + return ccount_read(_pio, _sm); #endif } diff --git a/cores/rp2040/SerialUSB.cpp b/cores/rp2040/SerialUSB.cpp index 719116040..5741730b8 100644 --- a/cores/rp2040/SerialUSB.cpp +++ b/cores/rp2040/SerialUSB.cpp @@ -181,9 +181,9 @@ static int _bps = 115200; static bool _rebooting = false; static void CheckSerialReset() { if (!_rebooting && (_bps == 1200) && (!_dtr)) { - if (__isFreeRTOS) { - __freertos_idle_other_core(); - } +#ifdef __FREERTOS + __freertos_idle_other_core(); +#endif _rebooting = true; // Disable NVIC IRQ, so that we don't get bothered anymore irq_set_enabled(USBCTRL_IRQ, false); diff --git a/cores/rp2040/_freertos.cpp b/cores/rp2040/_freertos.cpp index 69ecdf7ee..c1fd96f8e 100644 --- a/cores/rp2040/_freertos.cpp +++ b/cores/rp2040/_freertos.cpp @@ -18,6 +18,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifdef __FREERTOS + #include "_freertos.h" #include #include @@ -60,3 +62,5 @@ SemaphoreHandle_t __get_freertos_mutex_for_ptr(mutex_t *m, bool recursive) { } return nullptr; // Need to make space for more mutex maps! } + +#endif diff --git a/cores/rp2040/_freertos.h b/cores/rp2040/_freertos.h index 58c375061..96fc717cb 100644 --- a/cores/rp2040/_freertos.h +++ b/cores/rp2040/_freertos.h @@ -18,6 +18,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifdef __FREERTOS + #pragma once #include @@ -25,8 +27,6 @@ // are implemented as macros, so we have a wrapper in our variant hook // to handle it. -extern bool __isFreeRTOS; - // FreeRTOS has been set up extern volatile bool __freeRTOSinitted; @@ -63,3 +63,5 @@ extern void __freertos_task_enter_critical() __attribute__((weak)); } extern SemaphoreHandle_t __get_freertos_mutex_for_ptr(mutex_t *m, bool recursive = false); #endif // __cplusplus + +#endif // __FREERTOS diff --git a/cores/rp2040/freertos/FreeRTOS.h b/cores/rp2040/freertos/FreeRTOS.h new file mode 100644 index 000000000..fd743c12d --- /dev/null +++ b/cores/rp2040/freertos/FreeRTOS.h @@ -0,0 +1,5 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/FreeRTOS.h" +#else +#error "#define __FREERTOS 1 to use FreeRTOS in your application" +#endif diff --git a/libraries/FreeRTOS/src/FreeRTOSConfig.h b/cores/rp2040/freertos/FreeRTOSConfig.h similarity index 97% rename from libraries/FreeRTOS/src/FreeRTOSConfig.h rename to cores/rp2040/freertos/FreeRTOSConfig.h index e28ec4d4a..406a386f6 100644 --- a/libraries/FreeRTOS/src/FreeRTOSConfig.h +++ b/cores/rp2040/freertos/FreeRTOSConfig.h @@ -1,3 +1,4 @@ +#ifdef __FREERTOS #ifndef configNUMBER_OF_CORES #define configNUMBER_OF_CORES 2 #endif @@ -80,7 +81,9 @@ #ifndef configUSE_TASK_PREEMPTION_DISABLE #define configUSE_TASK_PREEMPTION_DISABLE 1 #endif - +#ifndef configTASK_NOTIFICATION_ARRAY_ENTRIES +#define configTASK_NOTIFICATION_ARRAY_ENTRIES 4 +#endif #ifndef configUSE_NEWLIB_REENTRANT #define configUSE_NEWLIB_REENTRANT 1 #endif @@ -93,8 +96,14 @@ #define configGENERATE_RUN_TIME_STATS 1 #endif #ifdef configGENERATE_RUN_TIME_STATS +#ifdef __cplusplus +extern "C" { +#endif extern void vMainConfigureTimerForRunTimeStats(void); extern unsigned long ulMainGetRunTimeCounterValue(void); +#ifdef __cplusplus +}; +#endif #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() //vMainConfigureTimerForRunTimeStats() #define portGET_RUN_TIME_COUNTER_VALUE() ulMainGetRunTimeCounterValue() #endif @@ -262,3 +271,4 @@ void rtosFatalError(void); #endif #include "rp2040_config.h" +#endif diff --git a/cores/rp2040/freertos/StackMacros.h b/cores/rp2040/freertos/StackMacros.h new file mode 100644 index 000000000..d52e2e2ba --- /dev/null +++ b/cores/rp2040/freertos/StackMacros.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/StackMacros.h" +#endif diff --git a/cores/rp2040/freertos/atomic.h b/cores/rp2040/freertos/atomic.h new file mode 100644 index 000000000..cc375fcda --- /dev/null +++ b/cores/rp2040/freertos/atomic.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/atomic.h" +#endif diff --git a/cores/rp2040/freertos/croutine.c b/cores/rp2040/freertos/croutine.c new file mode 100644 index 000000000..b83901a25 --- /dev/null +++ b/cores/rp2040/freertos/croutine.c @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/croutine.c" +#endif diff --git a/cores/rp2040/freertos/croutine.h b/cores/rp2040/freertos/croutine.h new file mode 100644 index 000000000..d09dc0120 --- /dev/null +++ b/cores/rp2040/freertos/croutine.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/croutine.h" +#endif diff --git a/cores/rp2040/freertos/deprecated_definitions.h b/cores/rp2040/freertos/deprecated_definitions.h new file mode 100644 index 000000000..af9f1d5cd --- /dev/null +++ b/cores/rp2040/freertos/deprecated_definitions.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/deprecated_definitions.h" +#endif diff --git a/cores/rp2040/freertos/event_groups.c b/cores/rp2040/freertos/event_groups.c new file mode 100644 index 000000000..461234970 --- /dev/null +++ b/cores/rp2040/freertos/event_groups.c @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/event_groups.c" +#endif diff --git a/cores/rp2040/freertos/event_groups.h b/cores/rp2040/freertos/event_groups.h new file mode 100644 index 000000000..efc74cdd7 --- /dev/null +++ b/cores/rp2040/freertos/event_groups.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/event_groups.h" +#endif diff --git a/cores/rp2040/freertos/freertos_sdk_config.h b/cores/rp2040/freertos/freertos_sdk_config.h new file mode 100644 index 000000000..60c86fcbc --- /dev/null +++ b/cores/rp2040/freertos/freertos_sdk_config.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/freertos_sdk_config.h" +#endif diff --git a/cores/rp2040/freertos/heap_3a.c b/cores/rp2040/freertos/heap_3a.c new file mode 100644 index 000000000..4a0c49a25 --- /dev/null +++ b/cores/rp2040/freertos/heap_3a.c @@ -0,0 +1,105 @@ +#ifdef __FREERTOS +// Hacked to remove the vTaskSuspendAll from heap_3.c. We handle that in malloc wrappers + +/* + FreeRTOS Kernel + Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + SPDX-License-Identifier: MIT + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + https://www.FreeRTOS.org + https://github.com/FreeRTOS + +*/ + + +/* + Implementation of pvPortMalloc() and vPortFree() that relies on the + compilers own malloc() and free() implementations. + + This file can only be used if the linker is configured to to generate + a heap memory area. + + See heap_1.c, heap_2.c and heap_4.c for alternative implementations, and the + memory management pages of https://www.FreeRTOS.org for more information. +*/ + +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining + all the API functions to use the MPU wrappers. That should only be done when + task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" + +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#if ( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) +#error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 +#endif + +/*-----------------------------------------------------------*/ + +void * pvPortMalloc(size_t xWantedSize) { + void * pvReturn; + + //vTaskSuspendAll(); + { + pvReturn = malloc(xWantedSize); + traceMALLOC(pvReturn, xWantedSize); + } + //( void ) xTaskResumeAll(); + +#if ( configUSE_MALLOC_FAILED_HOOK == 1 ) + { + if (pvReturn == NULL) { + vApplicationMallocFailedHook(); + } + } +#endif + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree(void * pv) { + if (pv != NULL) { + //vTaskSuspendAll(); + { + free(pv); + traceFREE(pv, 0); + } + // ( void ) xTaskResumeAll(); + } +} +/*-----------------------------------------------------------*/ + +/* + Reset the state in this file. This state is normally initialized at start up. + This function must be called by the application before restarting the + scheduler. +*/ +void vPortHeapResetState(void) { + /* No state needs to be re-initialised in heap_3. */ +} +/*-----------------------------------------------------------*/ +#endif diff --git a/cores/rp2040/freertos/list.c b/cores/rp2040/freertos/list.c new file mode 100644 index 000000000..e0e4bc00b --- /dev/null +++ b/cores/rp2040/freertos/list.c @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/list.c" +#endif diff --git a/cores/rp2040/freertos/list.h b/cores/rp2040/freertos/list.h new file mode 100644 index 000000000..7ccaee640 --- /dev/null +++ b/cores/rp2040/freertos/list.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/list.h" +#endif diff --git a/cores/rp2040/freertos/lwip_freertos.c b/cores/rp2040/freertos/lwip_freertos.c new file mode 100644 index 000000000..999a1be47 --- /dev/null +++ b/cores/rp2040/freertos/lwip_freertos.c @@ -0,0 +1,15 @@ +// For FreeRTOS, we'll just use the NOSYS version because we already safely handle it +#ifdef __FREERTOS + +#include "pico/async_context.h" + +extern bool lwip_nosys_init(async_context_t *context); +extern void lwip_nosys_deinit(async_context_t *context); + +bool lwip_freertos_init(async_context_t *context) { + return lwip_nosys_init(context); +} +void lwip_freertos_deinit(__unused async_context_t *context) { + lwip_nosys_deinit(context); +} +#endif diff --git a/cores/rp2040/freertos/message_buffer.h b/cores/rp2040/freertos/message_buffer.h new file mode 100644 index 000000000..ff1efcfd1 --- /dev/null +++ b/cores/rp2040/freertos/message_buffer.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/message_buffer.h" +#endif diff --git a/cores/rp2040/freertos/mpu_prototypes.h b/cores/rp2040/freertos/mpu_prototypes.h new file mode 100644 index 000000000..2495203aa --- /dev/null +++ b/cores/rp2040/freertos/mpu_prototypes.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/mpu_prototypes.h" +#endif diff --git a/cores/rp2040/freertos/mpu_syscall_numbers.h b/cores/rp2040/freertos/mpu_syscall_numbers.h new file mode 100644 index 000000000..3ccd4685e --- /dev/null +++ b/cores/rp2040/freertos/mpu_syscall_numbers.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/mpu_syscall_numbers.h" +#endif diff --git a/cores/rp2040/freertos/mpu_wrappers.h b/cores/rp2040/freertos/mpu_wrappers.h new file mode 100644 index 000000000..3c8448165 --- /dev/null +++ b/cores/rp2040/freertos/mpu_wrappers.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/mpu_wrappers.h" +#endif diff --git a/cores/rp2040/freertos/mpu_wrappers_v2_asm.c b/cores/rp2040/freertos/mpu_wrappers_v2_asm.c new file mode 100644 index 000000000..09b2d87ab --- /dev/null +++ b/cores/rp2040/freertos/mpu_wrappers_v2_asm.c @@ -0,0 +1,7 @@ +#ifdef __FREERTOS +#ifdef PICO_RP2350 +#ifndef __riscv +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/mpu_wrappers_v2_asm.c" +#endif +#endif +#endif diff --git a/cores/rp2040/freertos/port.c b/cores/rp2040/freertos/port.c new file mode 100644 index 000000000..48ee30b68 --- /dev/null +++ b/cores/rp2040/freertos/port.c @@ -0,0 +1,11 @@ +#ifdef __FREERTOS +#ifdef PICO_RP2040 +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/port.c" +#else +#ifndef __riscv +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/port.c" +#else +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/port.c" +#endif +#endif +#endif diff --git a/cores/rp2040/freertos/portASM.S b/cores/rp2040/freertos/portASM.S new file mode 100644 index 000000000..17ad0a513 --- /dev/null +++ b/cores/rp2040/freertos/portASM.S @@ -0,0 +1,7 @@ +#ifdef __FREERTOS +#ifdef PICO_RP2350 +#ifdef __riscv +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/portASM.S" +#endif +#endif +#endif diff --git a/cores/rp2040/freertos/portContext.h b/cores/rp2040/freertos/portContext.h new file mode 100644 index 000000000..3b60c6ceb --- /dev/null +++ b/cores/rp2040/freertos/portContext.h @@ -0,0 +1,8 @@ +#ifdef __FREERTOS +#ifdef PICO_RP2350 +#ifdef __riscv +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/portContext.h" +#endif +#endif + +#endif diff --git a/cores/rp2040/freertos/portable.h b/cores/rp2040/freertos/portable.h new file mode 100644 index 000000000..b3d087014 --- /dev/null +++ b/cores/rp2040/freertos/portable.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/portable.h" +#endif diff --git a/cores/rp2040/freertos/portasm.c b/cores/rp2040/freertos/portasm.c new file mode 100644 index 000000000..4520e1f20 --- /dev/null +++ b/cores/rp2040/freertos/portasm.c @@ -0,0 +1,7 @@ +#ifdef __FREERTOS +#ifdef PICO_RP2350 +#ifndef __riscv +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portasm.c" +#endif +#endif +#endif diff --git a/cores/rp2040/freertos/portmacro.h b/cores/rp2040/freertos/portmacro.h new file mode 100644 index 000000000..b1d48834c --- /dev/null +++ b/cores/rp2040/freertos/portmacro.h @@ -0,0 +1,11 @@ +#ifdef __FREERTOS +#ifdef PICO_RP2350 +#ifndef __riscv +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portmacro.h" +#else +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/portmacro.h" +#endif +#else +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/portmacro.h" +#endif +#endif diff --git a/cores/rp2040/freertos/projdefs.h b/cores/rp2040/freertos/projdefs.h new file mode 100644 index 000000000..746274ac0 --- /dev/null +++ b/cores/rp2040/freertos/projdefs.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/projdefs.h" +#endif diff --git a/cores/rp2040/freertos/queue.c b/cores/rp2040/freertos/queue.c new file mode 100644 index 000000000..eb248772f --- /dev/null +++ b/cores/rp2040/freertos/queue.c @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/queue.c" +#endif diff --git a/cores/rp2040/freertos/queue.h b/cores/rp2040/freertos/queue.h new file mode 100644 index 000000000..52f8a5702 --- /dev/null +++ b/cores/rp2040/freertos/queue.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/queue.h" +#endif diff --git a/cores/rp2040/freertos/rp2040_config.h b/cores/rp2040/freertos/rp2040_config.h new file mode 100644 index 000000000..88e6f06dc --- /dev/null +++ b/cores/rp2040/freertos/rp2040_config.h @@ -0,0 +1,11 @@ +#ifdef __FREERTOS +#ifdef PICO_RP2350 +#ifndef __riscv +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure//rp2040_config.h" +#else +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/rp2040_config.h" +#endif +#else +#include "../../../FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/rp2040_config.h" +#endif +#endif diff --git a/cores/rp2040/freertos/semphr.h b/cores/rp2040/freertos/semphr.h new file mode 100644 index 000000000..ceb340a3f --- /dev/null +++ b/cores/rp2040/freertos/semphr.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/semphr.h" +#endif diff --git a/cores/rp2040/freertos/stack_macros.h b/cores/rp2040/freertos/stack_macros.h new file mode 100644 index 000000000..8ef9cc0db --- /dev/null +++ b/cores/rp2040/freertos/stack_macros.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/stack_macros.h" +#endif diff --git a/cores/rp2040/freertos/stream_buffer.c b/cores/rp2040/freertos/stream_buffer.c new file mode 100644 index 000000000..f28a0233f --- /dev/null +++ b/cores/rp2040/freertos/stream_buffer.c @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/stream_buffer.c" +#endif diff --git a/cores/rp2040/freertos/stream_buffer.h b/cores/rp2040/freertos/stream_buffer.h new file mode 100644 index 000000000..253327ad1 --- /dev/null +++ b/cores/rp2040/freertos/stream_buffer.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/stream_buffer.h" +#endif diff --git a/cores/rp2040/freertos/task.h b/cores/rp2040/freertos/task.h new file mode 100644 index 000000000..8aad6e2e6 --- /dev/null +++ b/cores/rp2040/freertos/task.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/task.h" +#endif diff --git a/libraries/FreeRTOS/src/tasks.c b/cores/rp2040/freertos/tasks.c similarity index 86% rename from libraries/FreeRTOS/src/tasks.c rename to cores/rp2040/freertos/tasks.c index 5333830be..6b63d1374 100644 --- a/libraries/FreeRTOS/src/tasks.c +++ b/cores/rp2040/freertos/tasks.c @@ -1,4 +1,5 @@ -#include "../lib/FreeRTOS-Kernel/tasks.c" +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/tasks.c" // See https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/496 struct _reent* __wrap___getreent(void) { @@ -12,3 +13,4 @@ struct _reent* __wrap___getreent(void) { return &pxCurTask->xTLSBlock; } } +#endif diff --git a/cores/rp2040/freertos/timers.c b/cores/rp2040/freertos/timers.c new file mode 100644 index 000000000..527315ca7 --- /dev/null +++ b/cores/rp2040/freertos/timers.c @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/timers.c" +#endif diff --git a/cores/rp2040/freertos/timers.h b/cores/rp2040/freertos/timers.h new file mode 100644 index 000000000..7dc8cb0ec --- /dev/null +++ b/cores/rp2040/freertos/timers.h @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../FreeRTOS-Kernel/include/timers.h" +#endif diff --git a/libraries/FreeRTOS/src/variantHooks.cpp b/cores/rp2040/freertos/variantHooks.cpp similarity index 50% rename from libraries/FreeRTOS/src/variantHooks.cpp rename to cores/rp2040/freertos/variantHooks.cpp index e8a062dc4..380776d80 100644 --- a/libraries/FreeRTOS/src/variantHooks.cpp +++ b/cores/rp2040/freertos/variantHooks.cpp @@ -1,3 +1,4 @@ +#ifdef __FREERTOS /* Copyright (C) 2021 Phillip Stevens All Rights Reserved. Modifications by Earle F. Philhower, III, for Arduino-Pico @@ -42,6 +43,17 @@ #include <_freertos.h> +#include + +static TaskHandle_t __lwipTask; +static QueueHandle_t __lwipQueue; +typedef struct { + __lwip_op op; + void *req; + TaskHandle_t wakeup; +} LWIPWork; + +#define TASK_NOTIFY_LWIP_WAKEUP (configTASK_NOTIFICATION_ARRAY_ENTRIES - 1) // Interfaces for the main core to use FreeRTOS mutexes extern "C" { extern volatile bool __otherCoreIdled; @@ -126,8 +138,18 @@ extern void loop1() __attribute__((weak)); extern void __loop(); volatile bool __usbInitted = false; +extern void initVariant(); +static void __core1(void *params); static void __core0(void *params) { (void) params; + initVariant(); + + if (setup1 || loop1) { + TaskHandle_t c1; + xTaskCreate(__core1, "CORE1", 1024, 0, configMAX_PRIORITIES / 2, &c1); + vTaskCoreAffinitySet(c1, 1 << 1); + } + #if !defined(NO_USB) && !defined(USE_TINYUSB) while (!__usbInitted) { delay(1); @@ -215,24 +237,25 @@ extern mutex_t __usb_mutex; static TaskHandle_t __usbTask; static void __usb(void *param); extern volatile bool __freeRTOSinitted; +static void lwipThread(void *params); void startFreeRTOS(void) { TaskHandle_t c0; xTaskCreate(__core0, "CORE0", 1024, 0, configMAX_PRIORITIES / 2, &c0); vTaskCoreAffinitySet(c0, 1 << 0); - if (setup1 || loop1) { - TaskHandle_t c1; - xTaskCreate(__core1, "CORE1", 1024, 0, configMAX_PRIORITIES / 2, &c1); - vTaskCoreAffinitySet(c1, 1 << 1); - } - // Create the idle-other-core tasks (for when flash is being written) xTaskCreate(IdleThisCore, "IdleCore0", 128, 0, configMAX_PRIORITIES - 1, __idleCoreTask + 0); vTaskCoreAffinitySet(__idleCoreTask[0], 1 << 0); xTaskCreate(IdleThisCore, "IdleCore1", 128, 0, configMAX_PRIORITIES - 1, __idleCoreTask + 1); vTaskCoreAffinitySet(__idleCoreTask[1], 1 << 1); + // LWIP runs on core 0 only + __lwipQueue = xQueueCreate(16, sizeof(LWIPWork)); + //__hwMutex = xSemaphoreCreateMutex(); + xTaskCreate(lwipThread, "LWIP", 1024, 0, configMAX_PRIORITIES - 1, &__lwipTask); + vTaskCoreAffinitySet(__lwipTask, 1 << 0); + // Initialise and run the freeRTOS scheduler. Execution should never return here. __freeRTOSinitted = true; vTaskStartScheduler(); @@ -494,6 +517,7 @@ void vApplicationAssertHook() { } #endif +BaseType_t ss; static void __usb(void *param) { (void) param; @@ -505,10 +529,13 @@ static void __usb(void *param) { __usbInitted = true; while (true) { - auto m = __get_freertos_mutex_for_ptr(&__usb_mutex); - if (xSemaphoreTake(m, 0)) { - tud_task(); - xSemaphoreGive(m); + ss = xTaskGetSchedulerState(); + if (ss != taskSCHEDULER_SUSPENDED) { + auto m = __get_freertos_mutex_for_ptr(&__usb_mutex); + if (xSemaphoreTake(m, 0)) { + tud_task(); + xSemaphoreGive(m); + } } vTaskDelay(1 / portTICK_PERIOD_MS); } @@ -527,3 +554,361 @@ void __USBStart() { xTaskCreate(__usb, "USB", 256, 0, configMAX_PRIORITIES - 2, &__usbTask); vTaskCoreAffinitySet(__usbTask, 1 << 0); } + + +extern "C" void __lwip(__lwip_op op, void *req, bool fromISR) { + LWIPWork w; + if (fromISR) { + w.op = op; + w.req = req; + w.wakeup = 0; // Don't try and wake up a task when done, we're not in one! + BaseType_t xHigherPriorityTaskWoken = pdFALSE; + if (!xQueueSendFromISR(__lwipQueue, &w, &xHigherPriorityTaskWoken)) { + panic("LWIP task send failed"); + } + portYIELD_FROM_ISR(xHigherPriorityTaskWoken); + } else { + TaskStatus_t t; + vTaskGetInfo(nullptr, &t, pdFALSE, eInvalid); // TODO - can we speed this up??? + w.op = op; + w.req = req; + w.wakeup = t.xHandle; + if (!xQueueSend(__lwipQueue, &w, portMAX_DELAY)) { + panic("LWIP task send failed"); + } + ulTaskNotifyTakeIndexed(TASK_NOTIFY_LWIP_WAKEUP, pdTRUE, portMAX_DELAY); + } +} + +extern "C" bool __isLWIPThread() { + TaskStatus_t t; + vTaskGetInfo(nullptr, &t, pdFALSE, eInvalid); // TODO - can we speed this up??? + return t.xHandle == __lwipTask; +} + +static void lwipThread(void *params) { + (void) params; + LWIPWork w; + assert(__isLWIPThread()); + unsigned int scd = 100 / portTICK_PERIOD_MS; + + lwip_init(); // Will call our wrapper and set up the RNG + + while (true) { + auto ret = xQueueReceive(__lwipQueue, &w, scd); + if (ret) { + switch (w.op) { + case __lwip_init: { + __real_lwip_init(); + break; + } + case __pbuf_header: { + __pbuf_header_req *r = (__pbuf_header_req *)w.req; + *(r->ret) = __real_pbuf_header(r->p, r->header_size); + break; + } + case __pbuf_free: { + __pbuf_free_req *r = (__pbuf_free_req *)w.req; + *(r->ret) = __real_pbuf_free(r->p); + break; + } + case __pbuf_alloc: { + __pbuf_alloc_req *r = (__pbuf_alloc_req *)w.req; + *(r->ret) = __real_pbuf_alloc(r->l, r->length, r->type); + break; + } + case __pbuf_take: { + __pbuf_take_req *r = (__pbuf_take_req *)w.req; + *(r->ret) = __real_pbuf_take(r->buf, r->dataptr, r->len); + break; + } + case __pbuf_copy_partial: { + __pbuf_copy_partial_req *r = (__pbuf_copy_partial_req *)w.req; + *(r->ret) = __real_pbuf_copy_partial(r->p, r->dataptr, r->len, r->offset); + break; + } + case __pbuf_ref: { + __pbuf_ref_req *r = (__pbuf_ref_req *)w.req; + __real_pbuf_ref(r->p); + break; + } + case __pbuf_get_at: { + __pbuf_get_at_req *r = (__pbuf_get_at_req *)w.req; + *(r->ret) = __real_pbuf_get_at(r->p, r->offset); + break; + } + case __pbuf_get_contiguous: { + __pbuf_get_contiguous_req *r = (__pbuf_get_contiguous_req *)w.req; + *(r->ret) = __real_pbuf_get_contiguous(r->p, r->buffer, r->bufsize, r->len, r->offset); + break; + } + case __pbuf_cat: { + __pbuf_cat_req *r = (__pbuf_cat_req *)w.req; + __real_pbuf_cat(r->head, r->tail); + break; + } + case __tcp_arg: { + __tcp_arg_req *r = (__tcp_arg_req *)w.req; + __real_tcp_arg(r->pcb, r->arg); + break; + } + case __tcp_new: { + __tcp_new_req *r = (__tcp_new_req *)w.req; + *(r->ret) = __real_tcp_new(); + break; + } + case __tcp_new_ip_type: { + __tcp_new_ip_type_req *r = (__tcp_new_ip_type_req *)w.req; + *(r->ret) = __real_tcp_new_ip_type(r->type); + break; + } + case __tcp_bind: { + __tcp_bind_req *r = (__tcp_bind_req *)w.req; + *(r->ret) = __real_tcp_bind(r->pcb, r->ipaddr, r->port); + break; + } + case __tcp_bind_netif: { + __tcp_bind_netif_req *r = (__tcp_bind_netif_req *)w.req; + *(r->ret) = __real_tcp_bind_netif(r->pcb, r->netif); + break; + } + case __tcp_listen_with_backlog: { + __tcp_listen_with_backlog_req *r = (__tcp_listen_with_backlog_req *)w.req; + *(r->ret) = __real_tcp_listen_with_backlog(r->pcb, r->backlog); + break; + } +#if 0 + case __tcp_listen_with_backlog_and_err: { + __tcp_listen_with_backlog_and_err_req *r = (__tcp_listen_with_backlog_and_err_req *)w.req; + *(r->ret) = __real_tcp_listen_with_backlog_and_err(r->pcb, r->backlog, r->err); + break; + } +#endif + case __tcp_accept: { + __tcp_accept_req *r = (__tcp_accept_req *)w.req; + __real_tcp_accept(r->pcb, r->accept); + break; + } + case __tcp_connect: { + __tcp_connect_req *r = (__tcp_connect_req *)w.req; + *(r->ret) = __real_tcp_connect(r->pcb, r->ipaddr, r->port, r->connected); + break; + } + case __tcp_write: { + __tcp_write_req *r = (__tcp_write_req *)w.req; + *(r->ret) = __real_tcp_write(r->pcb, r->dataptr, r->len, r->apiflags); + break; + } + case __tcp_sent: { + __tcp_sent_req *r = (__tcp_sent_req *)w.req; + __real_tcp_sent(r->pcb, r->sent); + break; + } + case __tcp_recv: { + __tcp_recv_req *r = (__tcp_recv_req *)w.req; + __real_tcp_recv(r->pcb, r->recv); + break; + } + case __tcp_recved: { + __tcp_recved_req *r = (__tcp_recved_req *)w.req; + __real_tcp_recved(r->pcb, r->len); + break; + } + case __tcp_poll: { + __tcp_poll_req *r = (__tcp_poll_req *)w.req; + __real_tcp_poll(r->pcb, r->poll, r->interval); + break; + } + case __tcp_close: { + __tcp_close_req *r = (__tcp_close_req *)w.req; + *(r->ret) = __real_tcp_close(r->pcb); + break; + } + case __tcp_abort: { + __tcp_abort_req *r = (__tcp_abort_req *)w.req; + __real_tcp_abort(r->pcb); + break; + } + case __tcp_err: { + __tcp_err_req *r = (__tcp_err_req *)w.req; + __real_tcp_err(r->pcb, r->err); + break; + } + case __tcp_output: { + __tcp_output_req *r = (__tcp_output_req *)w.req; + *(r->ret) = __real_tcp_output(r->pcb); + break; + } + case __tcp_setprio: { + __tcp_setprio_req *r = (__tcp_setprio_req *)w.req; + __real_tcp_setprio(r->pcb, r->prio); + break; + } + case __tcp_shutdown: { + __tcp_shutdown_req *r = (__tcp_shutdown_req *)w.req; + *(r->ret) = __real_tcp_shutdown(r->pcb, r->shut_rx, r->shut_tx); + break; + } + case __tcp_backlog_delayed: { + __tcp_backlog_delayed_req *r = (__tcp_backlog_delayed_req *)w.req; + __real_tcp_backlog_delayed(r->pcb); + break; + } + case __tcp_backlog_accepted: { + __tcp_backlog_accepted_req *r = (__tcp_backlog_accepted_req *)w.req; + __real_tcp_backlog_accepted(r->pcb); + break; + } + case __udp_new: { + __udp_new_req *r = (__udp_new_req *)w.req; + *(r->ret) = __real_udp_new(); + break; + } + case __udp_new_ip_type: { + __udp_new_ip_type_req *r = (__udp_new_ip_type_req *)w.req; + *(r->ret) = __real_udp_new_ip_type(r->type); + break; + } + case __udp_remove: { + __udp_remove_req *r = (__udp_remove_req *)w.req; + __real_udp_remove(r->pcb); + break; + } + case __udp_bind: { + __udp_bind_req *r = (__udp_bind_req *)w.req; + *(r->ret) = __real_udp_bind(r->pcb, r->ipaddr, r->port); + break; + } + case __udp_connect: { + __udp_connect_req *r = (__udp_connect_req *)w.req; + *(r->ret) = __real_udp_connect(r->pcb, r->ipaddr, r->port); + break; + } + case __udp_disconnect: { + __udp_disconnect_req *r = (__udp_disconnect_req *)w.req; + *(r->ret) = __real_udp_disconnect(r->pcb); + break; + } + case __udp_send: { + __udp_send_req *r = (__udp_send_req *)w.req; + *(r->ret) = __real_udp_send(r->pcb, r->p); + break; + } + case __udp_recv: { + __udp_recv_req *r = (__udp_recv_req *)w.req; + __real_udp_recv(r->pcb, r->recv, r->recv_arg); + break; + } + case __udp_sendto: { + __udp_sendto_req *r = (__udp_sendto_req *)w.req; + *(r->ret) = __real_udp_sendto(r->pcb, r->p, r->dst_ip, r->dst_port); + break; + } + case __udp_sendto_if: { + __udp_sendto_if_req *r = (__udp_sendto_if_req *)w.req; + *(r->ret) = __real_udp_sendto_if(r->pcb, r->p, r->dst_ip, r->dst_port, r->netif); + break; + } + case __udp_sendto_if_src: { + __udp_sendto_if_src_req *r = (__udp_sendto_if_src_req *)w.req; + *(r->ret) = __real_udp_sendto_if_src(r->pcb, r->p, r->dst_ip, r->dst_port, r->netif, r->src_ip); + break; + } + case __sys_check_timeouts: { + __real_sys_check_timeouts(); + break; + } + case __dns_gethostbyname: { + __dns_gethostbyname_req *r = (__dns_gethostbyname_req *)w.req; + *(r->ret) = __real_dns_gethostbyname(r->hostname, r->addr, r->found, r->callback_arg); + break; + } + case __dns_gethostbyname_addrtype: { + __dns_gethostbyname_addrtype_req *r = (__dns_gethostbyname_addrtype_req *)w.req; + *(r->ret) = __real_dns_gethostbyname_addrtype(r->hostname, r->addr, r->found, r->callback_arg, r->dns_addrtype); + break; + } + case __raw_new: { + __raw_new_req *r = (__raw_new_req *)w.req; + *(r->ret) = __real_raw_new(r->proto); + break; + } + case __raw_new_ip_type: { + __raw_new_ip_type_req *r = (__raw_new_ip_type_req *)w.req; + *(r->ret) = __real_raw_new_ip_type(r->type, r->proto); + break; + } + case __raw_connect: { + __raw_connect_req *r = (__raw_connect_req *)w.req; + *(r->ret) = __real_raw_connect(r->pcb, r->ipaddr); + break; + } + case __raw_recv: { + __raw_recv_req *r = (__raw_recv_req *)w.req; + __real_raw_recv(r->pcb, r->recv, r->recv_arg); + break; + } + case __raw_bind: { + __raw_bind_req *r = (__raw_bind_req *)w.req; + *(r->ret) = __real_raw_bind(r->pcb, r->ipaddr); + break; + } + case __raw_sendto: { + __raw_sendto_req *r = (__raw_sendto_req *)w.req; + *(r->ret) = __real_raw_sendto(r->pcb, r->p, r->ipaddr); + break; + } + case __raw_send: { + __raw_send_req *r = (__raw_send_req *)w.req; + *(r->ret) = __real_raw_send(r->pcb, r->p); + break; + } + case __raw_remove: { + __raw_remove_req *r = (__raw_remove_req *)w.req; + __real_raw_remove(r->pcb); + break; + } + case __netif_add: { + __netif_add_req *r = (__netif_add_req *)w.req; + *(r->ret) = __real_netif_add(r->netif, r->ipaddr, r->netmask, r->gw, r->state, r->init, r->input); + break; + } + case __netif_remove: { + __netif_remove_req *r = (__netif_remove_req *)w.req; + __real_netif_remove(r->netif); + break; + } + case __ethernet_input: { + __ethernet_input_req *r = (__ethernet_input_req *)w.req; + printf("__real_ethernet_input\n"); + *(r->ret) = __real_ethernet_input(r->p, r->netif); + break; + } + case __callback: { + __callback_req *r = (__callback_req *)w.req; + r->cb(r->cbData); + break; + } + default: { + // Any new unimplemented calls = ERROR!!! + panic("Unimplemented LWIP thread action"); + break; + } + } + // Work done, return value set, just tickle the calling task + if (w.wakeup) { + xTaskNotifyGiveIndexed(w.wakeup, TASK_NOTIFY_LWIP_WAKEUP); + } + } else { + // No work received, do periodic processing + __real_sys_check_timeouts(); + // When should we wake up next to redo timeouts? + scd = sys_timeouts_sleeptime(); + if (scd == SYS_TIMEOUTS_SLEEPTIME_INFINITE) { + scd = portMAX_DELAY / portTICK_PERIOD_MS; + } + } + } +} + +#endif diff --git a/cores/rp2040/lock.cpp b/cores/rp2040/lock.cpp index 3c3d7aa8b..e1742058e 100644 --- a/cores/rp2040/lock.cpp +++ b/cores/rp2040/lock.cpp @@ -44,6 +44,8 @@ auto_init_mutex(__lock___dd_hash_mutex); auto_init_mutex(__lock___arc4random_mutex); #undef static +#ifdef __FREERTOS + // FreeRTOS hack - Allow Newlib to use FreeRTOS mutexes which preserve TASKID which // is needed to support multithread @@ -98,8 +100,10 @@ static SemaphoreHandle_t __getFreeRTOSRecursiveMutex(_LOCK_T lock) { } return __get_freertos_mutex_for_ptr((mutex_t *)l, true); } +#endif void __retarget_lock_init(_LOCK_T lock) { +#ifdef __FREERTOS if (__freeRTOSinitted) { mutex_t *l = (mutex_t *)lock; if ((l == &__lock___at_quick_exit_mutex) || (l == &__lock___tz_mutex) || (l == &__lock___dd_hash_mutex) || (l == &__lock___arc4random_mutex)) { @@ -111,9 +115,13 @@ void __retarget_lock_init(_LOCK_T lock) { } else { mutex_init((mutex_t*) lock); } +#else + mutex_init((mutex_t*) lock); +#endif } void __retarget_lock_init_recursive(_LOCK_T lock) { +#ifdef __FREERTOS if (__freeRTOSinitted) { recursive_mutex_t *l = (recursive_mutex_t *)lock; if ((l == &__lock___sinit_recursive_mutex) || (l == &__lock___sfp_recursive_mutex) || (l == &__lock___atexit_recursive_mutex) || (l == &__lock___malloc_recursive_mutex) || (l == &__lock___env_recursive_mutex)) { @@ -125,6 +133,9 @@ void __retarget_lock_init_recursive(_LOCK_T lock) { } else { recursive_mutex_init((recursive_mutex_t*) lock); } +#else + recursive_mutex_init((recursive_mutex_t*) lock); +#endif } void __retarget_lock_close(_LOCK_T lock) { @@ -136,59 +147,83 @@ void __retarget_lock_close_recursive(_LOCK_T lock) { } void __retarget_lock_acquire(_LOCK_T lock) { +#ifdef __FREERTOS if (__freeRTOSinitted) { auto mtx = __getFreeRTOSMutex(lock); __freertos_mutex_take(mtx); } else { mutex_enter_blocking((mutex_t*)lock); } +#else + mutex_enter_blocking((mutex_t*)lock); +#endif } void __retarget_lock_acquire_recursive(_LOCK_T lock) { +#ifdef __FREERTOS if (__freeRTOSinitted) { auto mtx = __getFreeRTOSRecursiveMutex(lock); __freertos_recursive_mutex_take(mtx); } else { recursive_mutex_enter_blocking((recursive_mutex_t*)lock); } +#else + recursive_mutex_enter_blocking((recursive_mutex_t*)lock); +#endif } int __retarget_lock_try_acquire(_LOCK_T lock) { int ret; +#ifdef __FREERTOS if (__freeRTOSinitted) { auto mtx = __getFreeRTOSMutex(lock); ret = __freertos_mutex_try_take(mtx); } else { ret = mutex_try_enter((mutex_t *)lock, nullptr); } +#else + ret = mutex_try_enter((mutex_t *)lock, nullptr); +#endif return ret; } int __retarget_lock_try_acquire_recursive(_LOCK_T lock) { int ret; +#ifdef __FREERTOS if (__freeRTOSinitted) { auto mtx = __getFreeRTOSRecursiveMutex(lock); ret = __freertos_recursive_mutex_try_take(mtx); } else { ret = recursive_mutex_try_enter((recursive_mutex_t*)lock, nullptr); } +#else + ret = recursive_mutex_try_enter((recursive_mutex_t*)lock, nullptr); +#endif return ret; } void __retarget_lock_release(_LOCK_T lock) { +#ifdef __FREERTOS if (__freeRTOSinitted) { auto mtx = __getFreeRTOSMutex(lock); __freertos_mutex_give(mtx); } else { mutex_exit((mutex_t*)lock); } +#else + mutex_exit((mutex_t*)lock); +#endif } void __retarget_lock_release_recursive(_LOCK_T lock) { +#ifdef __FREERTOS if (__freeRTOSinitted) { auto mtx = __getFreeRTOSRecursiveMutex(lock); __freertos_recursive_mutex_give(mtx); } else { recursive_mutex_exit((recursive_mutex_t*)lock); } +#else + recursive_mutex_exit((recursive_mutex_t*)lock); +#endif } diff --git a/cores/rp2040/lwip_wrap.cpp b/cores/rp2040/lwip_wrap.cpp index 30ae5b124..2c482971f 100644 --- a/cores/rp2040/lwip_wrap.cpp +++ b/cores/rp2040/lwip_wrap.cpp @@ -30,55 +30,16 @@ #include #include #include "_xoshiro.h" +#include "lwip_wrap.h" -extern void ethernet_arch_lwip_begin() __attribute__((weak)); -extern void ethernet_arch_lwip_end() __attribute__((weak)); -extern void ethernet_arch_lwip_gpio_mask() __attribute__((weak)); -extern void ethernet_arch_lwip_gpio_unmask() __attribute__((weak)); - -auto_init_recursive_mutex(__lwipMutex); // Only for case with no Ethernet or PicoW, but still doing LWIP (PPP?) - -class LWIPMutex { -public: - LWIPMutex() { - if (ethernet_arch_lwip_gpio_mask) { - ethernet_arch_lwip_gpio_mask(); - } -#if defined(PICO_CYW43_SUPPORTED) - if (rp2040.isPicoW()) { - cyw43_arch_lwip_begin(); - return; - } -#endif - if (ethernet_arch_lwip_begin) { - ethernet_arch_lwip_begin(); - } else { - recursive_mutex_enter_blocking(&__lwipMutex); - } - } - - ~LWIPMutex() { -#if defined(PICO_CYW43_SUPPORTED) - if (rp2040.isPicoW()) { - cyw43_arch_lwip_end(); - } else { -#endif - if (ethernet_arch_lwip_end) { - ethernet_arch_lwip_end(); - } else { - recursive_mutex_exit(&__lwipMutex); - } -#if defined(PICO_CYW43_SUPPORTED) - } -#endif - if (ethernet_arch_lwip_gpio_unmask) { - ethernet_arch_lwip_gpio_unmask(); - } - } -}; +//auto_init_recursive_mutex(__lwipMutex); // Only for case with no Ethernet or PicoW, but still doing LWIP (PPP?) +recursive_mutex_t __lwipMutex; extern "C" { + extern void __lwip(__lwip_op op, void *req, bool fromISR = false); + extern bool __isLWIPThread(); + static XoshiroCpp::Xoshiro256PlusPlus *_lwip_rng = nullptr; // Random number generator for LWIP unsigned long __lwip_rand() { @@ -89,6 +50,7 @@ extern "C" { extern void __real_lwip_init(); void __wrap_lwip_init() { if (!_lwip_rng) { + recursive_mutex_init(&__lwipMutex); _lwip_rng = new XoshiroCpp::Xoshiro256PlusPlus(micros() * rp2040.getCycleCount()); __real_lwip_init(); } @@ -96,272 +58,789 @@ extern "C" { extern u8_t __real_pbuf_header(struct pbuf *p, s16_t header_size); u8_t __wrap_pbuf_header(struct pbuf *p, s16_t header_size) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + u8_t ret; + __pbuf_header_req req = { p, header_size, &ret }; + __lwip(__pbuf_header, &req); + return ret; + } +#endif LWIPMutex m; return __real_pbuf_header(p, header_size); } extern u8_t __real_pbuf_free(struct pbuf *p); u8_t __wrap_pbuf_free(struct pbuf *p) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + u8_t ret; + __pbuf_free_req req = { p, &ret }; + __lwip(__pbuf_free, &req); + return ret; + } +#endif LWIPMutex m; return __real_pbuf_free(p); } extern struct pbuf *__real_pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type); struct pbuf *__wrap_pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct pbuf *ret; + __pbuf_alloc_req req = {l, length, type, &ret }; + __lwip(__pbuf_alloc, &req); + return ret; + } +#endif LWIPMutex m; return __real_pbuf_alloc(l, length, type); } extern err_t __real_pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len); err_t __wrap_pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __pbuf_take_req req = { buf, dataptr, len, &ret }; + __lwip(__pbuf_take, &req); + return ret; + } +#endif LWIPMutex m; return __real_pbuf_take(buf, dataptr, len); } extern u16_t __real_pbuf_copy_partial(const struct pbuf *p, void *dataptr, u16_t len, u16_t offset); u16_t __wrap_pbuf_copy_partial(const struct pbuf *p, void *dataptr, u16_t len, u16_t offset) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + u16_t ret; + __pbuf_copy_partial_req req = { p, dataptr, len, offset, &ret }; + __lwip(__pbuf_copy_partial, &req); + return ret; + } +#endif LWIPMutex m; return __real_pbuf_copy_partial(p, dataptr, len, offset); } extern void __real_pbuf_ref(struct pbuf *p); void __wrap_pbuf_ref(struct pbuf *p) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __pbuf_ref_req req = { p }; + __lwip(__pbuf_ref, &req); + return; + } +#endif LWIPMutex m; __real_pbuf_ref(p); } extern u8_t __real_pbuf_get_at(const struct pbuf* p, u16_t offset); u8_t __wrap_pbuf_get_at(const struct pbuf* p, u16_t offset) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + u8_t ret; + __pbuf_get_at_req req = { p, offset, &ret }; + __lwip(__pbuf_get_at, &req); + return ret; + } +#endif LWIPMutex m; return __real_pbuf_get_at(p, offset); } extern void *__real_pbuf_get_contiguous(const struct pbuf *p, void *buffer, size_t bufsize, u16_t len, u16_t offset); void *__wrap_pbuf_get_contiguous(const struct pbuf *p, void *buffer, size_t bufsize, u16_t len, u16_t offset) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + void *ret; + __pbuf_get_contiguous_req req = { p, buffer, bufsize, len, offset, &ret }; + __lwip(__pbuf_get_contiguous, &req); + return ret; + } +#endif LWIPMutex m; return __real_pbuf_get_contiguous(p, buffer, bufsize, len, offset); } extern void __real_pbuf_cat(struct pbuf *head, struct pbuf *tail); void __wrap_pbuf_cat(struct pbuf *head, struct pbuf *tail) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __pbuf_cat_req req = { head, tail }; + __lwip(__pbuf_cat, &req); + return; + } +#endif LWIPMutex m; __real_pbuf_cat(head, tail); } extern void __real_tcp_arg(struct tcp_pcb *pcb, void *arg); void __wrap_tcp_arg(struct tcp_pcb *pcb, void *arg) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_arg_req req = { pcb, arg }; + __lwip(__tcp_arg, &req); + return; + } +#endif LWIPMutex m; __real_tcp_arg(pcb, arg); } extern struct tcp_pcb *__real_tcp_new(void); struct tcp_pcb *__wrap_tcp_new(void) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct tcp_pcb *ret; + __tcp_new_req req = { &ret }; + __lwip(__tcp_new, &req); + return ret; + } +#endif LWIPMutex m; return __real_tcp_new(); } + extern struct tcp_pcb *__real_tcp_new_ip_type(u8_t type); + struct tcp_pcb *__wrap_tcp_new_ip_type(u8_t type) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct tcp_pcb *ret; + __tcp_new_ip_type_req req = { type, &ret }; + __lwip(__tcp_new_ip_type, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_tcp_new_ip_type(type); + } + + extern err_t __real_tcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port); err_t __wrap_tcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __tcp_bind_req req = { pcb, ipaddr, port, &ret }; + __lwip(__tcp_bind, &req); + return ret; + } +#endif LWIPMutex m; return __real_tcp_bind(pcb, ipaddr, port); } + extern err_t __real_tcp_bind_netif(struct tcp_pcb *pcb, const struct netif *netif); + err_t __wrap_tcp_bind_netif(struct tcp_pcb *pcb, const struct netif *netif) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __tcp_bind_netif_req req = { pcb, netif, &ret }; + __lwip(__tcp_bind_netif, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_tcp_bind_netif(pcb, netif); + } + extern struct tcp_pcb *__real_tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog); struct tcp_pcb *__wrap_tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct tcp_pcb *ret; + __tcp_listen_with_backlog_req req = { pcb, backlog, &ret }; + __lwip(__tcp_listen_with_backlog, &req); + return ret; + } +#endif LWIPMutex m; return __real_tcp_listen_with_backlog(pcb, backlog); } +#if 0 + extern struct tcp_pcb *__real_tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err); + struct tcp_pcb *__wrap_tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct tcp_pcb *ret; + __tcp_listen_with_backlog_and_err_req req = { pcb, backlog, err, &ret }; + __lwip(__tcp_listen_with_backlog_and_err, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_tcp_listen_with_backlog_and_err(pcb, backlog, err); + } +#endif + + extern void __real_tcp_accept(struct tcp_pcb *pcb, err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err)); void __wrap_tcp_accept(struct tcp_pcb *pcb, err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err)) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_accept_req req = { pcb, accept }; + __lwip(__tcp_accept, &req); + return; + } +#endif LWIPMutex m; __real_tcp_accept(pcb, accept); } extern err_t __real_tcp_connect(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port, err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err)); err_t __wrap_tcp_connect(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port, err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err)) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __tcp_connect_req req = { pcb, ipaddr, port, connected, &ret }; + __lwip(__tcp_connect, &req); + return ret; + } +#endif LWIPMutex m; return __real_tcp_connect(pcb, ipaddr, port, connected); } extern err_t __real_tcp_write(struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t apiflags); err_t __wrap_tcp_write(struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t apiflags) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __tcp_write_req req = { pcb, dataptr, len, apiflags, &ret }; + __lwip(__tcp_write, &req); + return ret; + } +#endif LWIPMutex m; return __real_tcp_write(pcb, dataptr, len, apiflags); } extern void __real_tcp_sent(struct tcp_pcb *pcb, err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len)); void __wrap_tcp_sent(struct tcp_pcb *pcb, err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len)) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_sent_req req = { pcb, sent }; + __lwip(__tcp_sent, &req); + return; + } +#endif LWIPMutex m; __real_tcp_sent(pcb, sent); } extern void __real_tcp_recv(struct tcp_pcb *pcb, err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)); void __wrap_tcp_recv(struct tcp_pcb *pcb, err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_recv_req req = { pcb, recv }; + __lwip(__tcp_recv, &req); + return; + } +#endif LWIPMutex m; __real_tcp_recv(pcb, recv); } extern void __real_tcp_recved(struct tcp_pcb *pcb, u16_t len); void __wrap_tcp_recved(struct tcp_pcb *pcb, u16_t len) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_recved_req req = { pcb, len }; + __lwip(__tcp_recved, &req); + return; + } +#endif LWIPMutex m; __real_tcp_recved(pcb, len); } extern void __real_tcp_poll(struct tcp_pcb *pcb, err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval); void __wrap_tcp_poll(struct tcp_pcb *pcb, err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_poll_req req = { pcb, poll, interval }; + __lwip(__tcp_poll, &req); + return; + } +#endif LWIPMutex m; __real_tcp_poll(pcb, poll, interval); } extern err_t __real_tcp_close(struct tcp_pcb *pcb); err_t __wrap_tcp_close(struct tcp_pcb *pcb) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __tcp_close_req req = { pcb, &ret }; + __lwip(__tcp_close, &req); + return ret; + } +#endif LWIPMutex m; return __real_tcp_close(pcb); } extern void __real_tcp_abort(struct tcp_pcb *pcb); void __wrap_tcp_abort(struct tcp_pcb *pcb) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_abort_req req = { pcb }; + __lwip(__tcp_abort, &req); + return; + } +#endif LWIPMutex m; __real_tcp_abort(pcb); } extern void __real_tcp_err(struct tcp_pcb *pcb, void (* err)(void *arg, err_t err)); void __wrap_tcp_err(struct tcp_pcb *pcb, void (* err)(void *arg, err_t err)) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_err_req req = { pcb, err }; + __lwip(__tcp_err, &req); + return; + } +#endif LWIPMutex m; __real_tcp_err(pcb, err); } extern err_t __real_tcp_output(struct tcp_pcb *pcb); err_t __wrap_tcp_output(struct tcp_pcb *pcb) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __tcp_output_req req = { pcb, &ret }; + __lwip(__tcp_output, &req); + return ret; + } +#endif LWIPMutex m; return __real_tcp_output(pcb); } extern void __real_tcp_setprio(struct tcp_pcb *pcb, u8_t prio); void __wrap_tcp_setprio(struct tcp_pcb *pcb, u8_t prio) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_setprio_req req = { pcb, prio }; + __lwip(__tcp_setprio, &req); + return; + } +#endif LWIPMutex m; __real_tcp_setprio(pcb, prio); } + extern err_t __real_tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx); + err_t __wrap_tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __tcp_shutdown_req req = { pcb, shut_rx, shut_tx, &ret }; + __lwip(__tcp_shutdown, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_tcp_shutdown(pcb, shut_rx, shut_tx); + } + + extern void __real_tcp_backlog_delayed(struct tcp_pcb* pcb); void __wrap_tcp_backlog_delayed(struct tcp_pcb* pcb) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_backlog_delayed_req req = { pcb }; + __lwip(__tcp_backlog_delayed, &req); + return; + } +#endif LWIPMutex m; __real_tcp_backlog_delayed(pcb); } extern void __real_tcp_backlog_accepted(struct tcp_pcb* pcb); void __wrap_tcp_backlog_accepted(struct tcp_pcb* pcb) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __tcp_backlog_accepted_req req = { pcb }; + __lwip(__tcp_backlog_accepted, &req); + return; + } +#endif LWIPMutex m; __real_tcp_backlog_accepted(pcb); } extern struct udp_pcb *__real_udp_new(void); struct udp_pcb *__wrap_udp_new(void) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct udp_pcb *ret; + __udp_new_req req = { &ret }; + __lwip(__udp_new, &req); + return ret; + } +#endif LWIPMutex m; return __real_udp_new(); } + extern struct udp_pcb *__real_udp_new_ip_type(u8_t type); + struct udp_pcb *__wrap_udp_new_ip_type(u8_t type) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct udp_pcb *ret; + __udp_new_ip_type_req req = { type, &ret }; + __lwip(__udp_new_ip_type, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_udp_new_ip_type(type); + } + extern void __real_udp_remove(struct udp_pcb *pcb); void __wrap_udp_remove(struct udp_pcb *pcb) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __udp_remove_req req = { pcb }; + __lwip(__udp_remove, &req); + return; + } +#endif LWIPMutex m; __real_udp_remove(pcb); } extern err_t __real_udp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port); err_t __wrap_udp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __udp_bind_req req = { pcb, ipaddr, port, &ret }; + __lwip(__udp_bind, &req); + return ret; + } +#endif LWIPMutex m; return __real_udp_bind(pcb, ipaddr, port); } extern err_t __real_udp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port); err_t __wrap_udp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __udp_connect_req req = { pcb, ipaddr, port, &ret }; + __lwip(__udp_connect, &req); + return ret; + } +#endif LWIPMutex m; return __real_udp_connect(pcb, ipaddr, port); } extern err_t __real_udp_disconnect(struct udp_pcb *pcb); err_t __wrap_udp_disconnect(struct udp_pcb *pcb) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __udp_disconnect_req req = { pcb, &ret }; + __lwip(__udp_disconnect, &req); + return ret; + } +#endif LWIPMutex m; return __real_udp_disconnect(pcb); } extern err_t __real_udp_send(struct udp_pcb *pcb, struct pbuf *p); err_t __wrap_udp_send(struct udp_pcb *pcb, struct pbuf *p) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __udp_send_req req = { pcb, p, &ret }; + __lwip(__udp_send, &req); + return ret; + } +#endif LWIPMutex m; return __real_udp_send(pcb, p); } extern void __real_udp_recv(struct udp_pcb *pcb, void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port), void *recv_arg); void __wrap_udp_recv(struct udp_pcb *pcb, void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port), void *recv_arg) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __udp_recv_req req = { pcb, recv, recv_arg }; + __lwip(__udp_recv, &req); + return; + } +#endif LWIPMutex m; __real_udp_recv(pcb, recv, recv_arg); } + extern err_t __real_udp_sendto(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port); + err_t __wrap_udp_sendto(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __udp_sendto_req req = { pcb, p, dst_ip, dst_port, &ret }; + __lwip(__udp_sendto, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_udp_sendto(pcb, p, dst_ip, dst_port); + } + extern err_t __real_udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif); err_t __wrap_udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __udp_sendto_if_req req = { pcb, p, dst_ip, dst_port, netif, &ret }; + __lwip(__udp_sendto_if, &req); + return ret; + } +#endif LWIPMutex m; return __real_udp_sendto_if(pcb, p, dst_ip, dst_port, netif); } + extern err_t __real_udp_sendto_if_src(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif, const ip_addr_t *src_ip); + err_t __wrap_udp_sendto_if_src(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif, const ip_addr_t *src_ip) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __udp_sendto_if_src_req req = { pcb, p, dst_ip, dst_port, netif, src_ip, &ret }; + __lwip(__udp_sendto_if_src, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_udp_sendto_if_src(pcb, p, dst_ip, dst_port, netif, src_ip); + } + // sys_check_timeouts is special case because the async process will call it. If we're already in a timeout check, just do a noop extern void __real_sys_check_timeouts(); void __wrap_sys_check_timeouts(void) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __lwip(__sys_check_timeouts, nullptr); + return; + } +#endif LWIPMutex m; __real_sys_check_timeouts(); } extern err_t __real_dns_gethostbyname(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg); err_t __wrap_dns_gethostbyname(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __dns_gethostbyname_req req = { hostname, addr, found, callback_arg, &ret }; + __lwip(__dns_gethostbyname, &req); + return ret; + } +#endif LWIPMutex m; return __real_dns_gethostbyname(hostname, addr, found, callback_arg); } extern err_t __real_dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg, u8_t dns_addrtype); err_t __wrap_dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg, u8_t dns_addrtype) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __dns_gethostbyname_addrtype_req req = { hostname, addr, found, callback_arg, dns_addrtype, &ret }; + __lwip(__dns_gethostbyname_addrtype, &req); + return ret; + } +#endif LWIPMutex m; return __real_dns_gethostbyname_addrtype(hostname, addr, found, callback_arg, dns_addrtype); } extern struct raw_pcb *__real_raw_new(u8_t proto); struct raw_pcb *__wrap_raw_new(u8_t proto) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct raw_pcb *ret; + __raw_new_req req = { proto, &ret }; + __lwip(__raw_new, &req); + return ret; + } +#endif LWIPMutex m; return __real_raw_new(proto); } + extern struct raw_pcb *__real_raw_new_ip_type(u8_t type, u8_t proto); + struct raw_pcb *__wrap_raw_new_ip_type(u8_t type, u8_t proto) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct raw_pcb *ret; + __raw_new_ip_type_req req = { type, proto, &ret }; + __lwip(__raw_new_ip_type, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_raw_new_ip_type(type, proto); + } + + extern err_t __real_raw_connect(struct raw_pcb *pcb, const ip_addr_t *ipaddr); + err_t __wrap_raw_connect(struct raw_pcb *pcb, const ip_addr_t *ipaddr) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __raw_connect_req req = { pcb, ipaddr, &ret }; + __lwip(__raw_connect, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_raw_connect(pcb, ipaddr); + } + extern void __real_raw_recv(struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg); void __wrap_raw_recv(struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __raw_recv_req req = { pcb, recv, recv_arg }; + __lwip(__raw_recv, &req); + return; + } +#endif LWIPMutex m; __real_raw_recv(pcb, recv, recv_arg); } extern err_t __real_raw_bind(struct raw_pcb *pcb, const ip_addr_t *ipaddr); err_t __wrap_raw_bind(struct raw_pcb *pcb, const ip_addr_t *ipaddr) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __raw_bind_req req = { pcb, ipaddr, &ret }; + __lwip(__raw_bind, &req); + return ret; + } +#endif LWIPMutex m; return __real_raw_bind(pcb, ipaddr); } extern err_t __real_raw_sendto(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr); err_t __wrap_raw_sendto(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __raw_sendto_req req = { pcb, p, ipaddr, &ret }; + __lwip(__raw_sendto, &req); + return ret; + } +#endif LWIPMutex m; return __real_raw_sendto(pcb, p, ipaddr); } + extern err_t __real_raw_send(struct raw_pcb *pcb, struct pbuf *p); + err_t __wrap_raw_send(struct raw_pcb *pcb, struct pbuf *p) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __raw_send_req req = { pcb, p, &ret }; + __lwip(__raw_send, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_raw_send(pcb, p); + } + extern void __real_raw_remove(struct raw_pcb *pcb); void __wrap_raw_remove(struct raw_pcb *pcb) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __raw_remove_req req = { pcb }; + __lwip(__raw_remove, &req); + return; + } +#endif LWIPMutex m; __real_raw_remove(pcb); } extern struct netif *__real_netif_add(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input); struct netif *__wrap_netif_add(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + struct netif *ret; + __netif_add_req req = { netif, ipaddr, netmask, gw, state, init, input, &ret }; + __lwip(__netif_add, &req); + return ret; + } +#endif LWIPMutex m; return __real_netif_add(netif, ipaddr, netmask, gw, state, init, input); } extern void __real_netif_remove(struct netif *netif); void __wrap_netif_remove(struct netif *netif) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + __netif_remove_req req = { netif }; + __lwip(__netif_remove, &req); + return; + } +#endif LWIPMutex m; __real_netif_remove(netif); } + extern err_t __real_ethernet_input(struct pbuf *p, struct netif *netif); + err_t __wrap_ethernet_input(struct pbuf *p, struct netif *netif) { +#ifdef __FREERTOS + if (!__isLWIPThread()) { + err_t ret; + __ethernet_input_req req = { p, netif, &ret }; + __lwip(__ethernet_input, &req); + return ret; + } +#endif + LWIPMutex m; + return __real_ethernet_input(p, netif); + } + + void lwip_callback(void (*cb)(void *), void *cbData, void *buffer) { +#ifdef __FREERTOS + if (buffer) { + __callback_req *req = (__callback_req *)buffer; + req->cb = cb; + req->cbData = cbData; + __lwip(__callback, req, true); + return; + } else if (!__isLWIPThread()) { + __callback_req req = { cb, cbData }; + __lwip(__callback, &req, false); + return; + } +#endif + cb(cbData); + return; + } + }; // extern "C" diff --git a/cores/rp2040/lwip_wrap.h b/cores/rp2040/lwip_wrap.h new file mode 100644 index 000000000..43d8a6c9c --- /dev/null +++ b/cores/rp2040/lwip_wrap.h @@ -0,0 +1,583 @@ +/* + FreeRTOS LWIP wrappers, implement a single LWIP work task + + Copyright (c) 2024 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 +#include +#include +#include +#include +#include +#include + + +extern void ethernet_arch_lwip_begin() __attribute__((weak)); +extern void ethernet_arch_lwip_end() __attribute__((weak)); +extern void ethernet_arch_lwip_gpio_mask() __attribute__((weak)); +extern void ethernet_arch_lwip_gpio_unmask() __attribute__((weak)); + +//auto_init_recursive_mutex(__lwipMutex); // Only for case with no Ethernet or PicoW, but still doing LWIP (PPP?) +extern recursive_mutex_t __lwipMutex; + + +// LWIPMutex is a no-op under FreeRTOS because we wrap all calls and just send a request message to +// the LWIP task. No locking needed, many people can call LWIP in parallel but the messages will be +// processed 1-threaded in order or reception + +// Under Non-OS mode, we do need to lock the context because the threadsafe IRQ could come in + +class LWIPMutex { +public: + LWIPMutex() { + // if (ethernet_arch_lwip_gpio_mask) { + // ethernet_arch_lwip_gpio_mask(); + // } + //#if defined(ARDUINO_RASPBERRY_PI_PICO_W) + // if (rp2040.isPicoW()) { + // cyw43_arch_lwip_begin(); + // return; + // } + //#endif +#if !defined(__FREERTOS) + if (ethernet_arch_lwip_begin) { + ethernet_arch_lwip_begin(); + } else { + recursive_mutex_enter_blocking(&__lwipMutex); + } +#endif + } + + ~LWIPMutex() { +#if !defined(__FREERTOS) + //#if defined(ARDUINO_RASPBERRY_PI_PICO_W) + // if (rp2040.isPicoW()) { + // cyw43_arch_lwip_end(); + // } else { + //#endif + if (ethernet_arch_lwip_end) { + ethernet_arch_lwip_end(); + } else { + recursive_mutex_exit(&__lwipMutex); + } + //#if defined(ARDUINO_RASPBERRY_PI_PICO_W) + // } + //#endif +#endif + // if (ethernet_arch_lwip_gpio_unmask) { + // ethernet_arch_lwip_gpio_unmask(); + // } + } +}; + + + +#ifdef __cplusplus +extern "C" { +#endif + +// Implement all LWIP operations in a single FreeRTOS task. Calls to LWIP will +// actually post work on the work queue and wait until the LWIP task indicates +// completion + +// Enumerated type for LWIP request +typedef enum { + __lwip_init = 1000, + + __pbuf_header = 2000, + __pbuf_free, + __pbuf_alloc, + __pbuf_take, + __pbuf_copy_partial, + __pbuf_ref, + __pbuf_get_at, + __pbuf_get_contiguous, + __pbuf_cat, + + __tcp_backlog_delayed = 3000, + __tcp_backlog_accepted, + __tcp_close, + __tcp_shutdown, + __tcp_abort, + __tcp_bind, + __tcp_bind_netif, + __tcp_listen_with_backlog, + // __tcp_listen_with_backlog_and_err, + __tcp_recved, + __tcp_connect, + __tcp_new, + __tcp_new_ip_type, + __tcp_arg, + __tcp_recv, + __tcp_sent, + __tcp_err, + __tcp_accept, + __tcp_poll, + __tcp_write, + __tcp_output, + + __tcp_setprio, + + __udp_send = 4000, + __udp_sendto, + __udp_sendto_if, + __udp_sendto_if_src, + __udp_bind, + __udp_connect, + __udp_disconnect, + __udp_recv, + __udp_remove, + __udp_new, + __udp_new_ip_type, + + __sys_check_timeouts = 5000, + + __dns_gethostbyname = 6000, + __dns_gethostbyname_addrtype, + + __raw_bind = 7000, + __raw_connect, + __raw_recv, + __raw_sendto, + __raw_send, + __raw_remove, + __raw_new, + __raw_new_ip_type, + + __netif_add = 8000, + __netif_remove, + + __ethernet_input = 9000, + + __callback = 10000, +} __lwip_op; + +// Set up a local request buffer and call this to add to lwip work queue. Will only return once lwip operation completed +// LWIP callbacks will happen from the LWIP task at some future time + +extern void __real_lwip_init(); +extern u8_t __real_pbuf_header(struct pbuf *p, s16_t header_size); +extern u8_t __real_pbuf_free(struct pbuf *p); +extern struct pbuf *__real_pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type); +extern err_t __real_pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len); +extern u16_t __real_pbuf_copy_partial(const struct pbuf *p, void *dataptr, u16_t len, u16_t offset); +extern void __real_pbuf_ref(struct pbuf *p); +extern u8_t __real_pbuf_get_at(const struct pbuf* p, u16_t offset); +extern void *__real_pbuf_get_contiguous(const struct pbuf *p, void *buffer, size_t bufsize, u16_t len, u16_t offset); +extern void __real_pbuf_cat(struct pbuf *head, struct pbuf *tail); +extern void __real_tcp_arg(struct tcp_pcb *pcb, void *arg); +extern struct tcp_pcb *__real_tcp_new(void); +extern struct tcp_pcb *__real_tcp_new_ip_type(u8_t type); +extern err_t __real_tcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port); +extern err_t __real_tcp_bind_netif(struct tcp_pcb *pcb, const struct netif *netif); +extern struct tcp_pcb *__real_tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog); +//extern struct tcp_pcb *__real_tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err); +extern void __real_tcp_accept(struct tcp_pcb *pcb, err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err)); +extern err_t __real_tcp_connect(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port, err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err)); +extern err_t __real_tcp_write(struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t apiflags); +extern void __real_tcp_sent(struct tcp_pcb *pcb, err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len)); +extern void __real_tcp_recv(struct tcp_pcb *pcb, err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)); +extern void __real_tcp_recved(struct tcp_pcb *pcb, u16_t len); +extern void __real_tcp_poll(struct tcp_pcb *pcb, err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval); +extern err_t __real_tcp_close(struct tcp_pcb *pcb); +extern void __real_tcp_abort(struct tcp_pcb *pcb); +extern void __real_tcp_err(struct tcp_pcb *pcb, void (* err)(void *arg, err_t err)); +extern err_t __real_tcp_output(struct tcp_pcb *pcb); +extern void __real_tcp_setprio(struct tcp_pcb *pcb, u8_t prio); +extern void __real_tcp_backlog_delayed(struct tcp_pcb* pcb); +extern void __real_tcp_backlog_accepted(struct tcp_pcb* pcb); +extern err_t __real_tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx); +extern struct udp_pcb *__real_udp_new(void); +extern struct udp_pcb *__real_udp_new_ip_type(u8_t type); +extern void __real_udp_remove(struct udp_pcb *pcb); +extern err_t __real_udp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port); +extern err_t __real_udp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port); +extern err_t __real_udp_disconnect(struct udp_pcb *pcb); +extern err_t __real_udp_send(struct udp_pcb *pcb, struct pbuf *p); +extern void __real_udp_recv(struct udp_pcb *pcb, void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port), void *recv_arg); +extern err_t __real_udp_sendto(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port); +extern err_t __real_udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif); +extern err_t __real_udp_sendto_if_src(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif, const ip_addr_t *src_ip); +extern void __real_sys_check_timeouts(); +extern err_t __real_dns_gethostbyname(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg); +extern err_t __real_dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg, u8_t dns_addrtype); +extern struct raw_pcb *__real_raw_new(u8_t proto); +extern struct raw_pcb *__real_raw_new_ip_type(u8_t type, u8_t proto); +extern void __real_raw_recv(struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg); +extern err_t __real_raw_bind(struct raw_pcb *pcb, const ip_addr_t *ipaddr); +extern err_t __real_raw_sendto(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr); +extern err_t __real_raw_send(struct raw_pcb *pcb, struct pbuf *p); +extern err_t __real_raw_connect(struct raw_pcb *pcb, const ip_addr_t *ipaddr); +extern void __real_raw_remove(struct raw_pcb *pcb); +extern struct netif *__real_netif_add(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input); +extern void __real_netif_remove(struct netif *netif); +extern err_t __real_ethernet_input(struct pbuf *p, struct netif *netif); + + +typedef struct { + struct pbuf *p; + s16_t header_size; + u8_t *ret; +} __pbuf_header_req; + +typedef struct { + struct pbuf *p; + u8_t *ret; +} __pbuf_free_req; + +typedef struct { + pbuf_layer l; + u16_t length; + pbuf_type type; + struct pbuf **ret; +} __pbuf_alloc_req; + +typedef struct { + struct pbuf *buf; + const void *dataptr; + u16_t len; + err_t *ret; +} __pbuf_take_req; + +typedef struct { + const struct pbuf *p; + void *dataptr; + u16_t len; + u16_t offset; + u16_t *ret; +} __pbuf_copy_partial_req; + +typedef struct { + struct pbuf *p; +} __pbuf_ref_req; + +typedef struct { + const struct pbuf* p; + u16_t offset; + u8_t *ret; +} __pbuf_get_at_req; + +typedef struct { + const struct pbuf *p; + void *buffer; + size_t bufsize; + u16_t len; + u16_t offset; + void **ret; +} __pbuf_get_contiguous_req; + +typedef struct { + struct pbuf *head; + struct pbuf *tail; +} __pbuf_cat_req; + +typedef struct { + struct tcp_pcb *pcb; + void *arg; +} __tcp_arg_req; + +typedef struct { + struct tcp_pcb **ret; +} __tcp_new_req; + +typedef struct { + u8_t type; + struct tcp_pcb **ret; +} __tcp_new_ip_type_req; + + +typedef struct { + struct tcp_pcb *pcb; + ip_addr_t *ipaddr; + u16_t port; + err_t *ret; +} __tcp_bind_req; + +typedef struct { + struct tcp_pcb *pcb; + const struct netif *netif; + err_t *ret; +} __tcp_bind_netif_req; + +typedef struct { + struct tcp_pcb *pcb; + u8_t backlog; + struct tcp_pcb **ret; +} __tcp_listen_with_backlog_req; + +#if 0 +typedef struct { + struct tcp_pcb *pcb; + u8_t backlog; + err_t *err; + struct tcp_pcb **ret; +} __tcp_listen_with_backlog_and_err_req; +#endif + +typedef struct { + struct tcp_pcb *pcb; + err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err); +} __tcp_accept_req; + +typedef struct { + struct tcp_pcb *pcb; + ip_addr_t *ipaddr; + u16_t port; + err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err); + err_t *ret; +} __tcp_connect_req; + +typedef struct { + struct tcp_pcb *pcb; + const void *dataptr; + u16_t len; + u8_t apiflags; + err_t *ret; +} __tcp_write_req; + +typedef struct { + struct tcp_pcb *pcb; + err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len); +} __tcp_sent_req; + +typedef struct { + struct tcp_pcb *pcb; + err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err); +} __tcp_recv_req; + +typedef struct { + struct tcp_pcb *pcb; + u16_t len; +} __tcp_recved_req; + +typedef struct { + struct tcp_pcb *pcb; + err_t (* poll)(void *arg, struct tcp_pcb *tpcb); + u8_t interval; +} __tcp_poll_req; + +typedef struct { + struct tcp_pcb *pcb; + err_t *ret; +} __tcp_close_req; + +typedef struct { + struct tcp_pcb *pcb; +} __tcp_abort_req; + +typedef struct { + struct tcp_pcb *pcb; + void (* err)(void *arg, err_t err); +} __tcp_err_req; + +typedef struct { + struct tcp_pcb *pcb; + err_t *ret; +} __tcp_output_req; + +typedef struct { + struct tcp_pcb *pcb; + u8_t prio; +} __tcp_setprio_req; + +typedef struct { + struct tcp_pcb* pcb; +} __tcp_backlog_delayed_req; + +typedef struct { + struct tcp_pcb* pcb; +} __tcp_backlog_accepted_req; + +typedef struct { + struct tcp_pcb *pcb; + int shut_rx; + int shut_tx; + err_t *ret; +} __tcp_shutdown_req; + +typedef struct { + struct udp_pcb **ret; +} __udp_new_req; + +typedef struct { + u8_t type; + struct udp_pcb **ret; +} __udp_new_ip_type_req; + +typedef struct { + struct udp_pcb *pcb; +} __udp_remove_req; + +typedef struct { + struct udp_pcb *pcb; + ip_addr_t *ipaddr; + u16_t port; + err_t *ret; +} __udp_bind_req; + +typedef struct { + struct udp_pcb *pcb; + ip_addr_t *ipaddr; + u16_t port; + err_t *ret; +} __udp_connect_req; + +typedef struct { + struct udp_pcb *pcb; + err_t *ret; +} __udp_disconnect_req; + +typedef struct { + struct udp_pcb *pcb; + struct pbuf *p; + err_t *ret; +} __udp_send_req; + +typedef struct { + struct udp_pcb *pcb; + void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port); + void *recv_arg; +} __udp_recv_req; + +typedef struct { + struct udp_pcb *pcb; + struct pbuf *p; + const ip_addr_t *dst_ip; + u16_t dst_port; + struct netif *netif; + err_t *ret; +} __udp_sendto_if_req; + +typedef struct { + struct udp_pcb *pcb; + struct pbuf *p; + const ip_addr_t *dst_ip; + u16_t dst_port; + err_t *ret; +} __udp_sendto_req; + +typedef struct { + struct udp_pcb *pcb; + struct pbuf *p; + const ip_addr_t *dst_ip; + u16_t dst_port; + struct netif *netif; + const ip_addr_t *src_ip; + err_t *ret; +} __udp_sendto_if_src_req; + +typedef struct { + const char *hostname; + ip_addr_t *addr; + dns_found_callback found; + void *callback_arg; + err_t *ret; +} __dns_gethostbyname_req; + +typedef struct { + const char *hostname; + ip_addr_t *addr; + dns_found_callback found; + void *callback_arg; + u8_t dns_addrtype; + err_t *ret; +} __dns_gethostbyname_addrtype_req; + +typedef struct { + u8_t proto; + struct raw_pcb **ret; +} __raw_new_req; + +typedef struct { + u8_t type; + u8_t proto; + struct raw_pcb **ret; +} __raw_new_ip_type_req; + +typedef struct { + struct raw_pcb *pcb; + const ip_addr_t *ipaddr; + err_t *ret; +} __raw_connect_req; + +typedef struct { + struct raw_pcb *pcb; + raw_recv_fn recv; + void *recv_arg; +} __raw_recv_req; + +typedef struct { + struct raw_pcb *pcb; + const ip_addr_t *ipaddr; + err_t *ret; +} __raw_bind_req; + +typedef struct { + struct raw_pcb *pcb; + struct pbuf *p; + const ip_addr_t *ipaddr; + err_t *ret; +} __raw_sendto_req; + +typedef struct { + struct raw_pcb *pcb; + struct pbuf *p; + err_t *ret; +} __raw_send_req; + +typedef struct { + struct raw_pcb *pcb; +} __raw_remove_req; + +typedef struct { + struct netif *netif; + const ip4_addr_t *ipaddr; + const ip4_addr_t *netmask; + const ip4_addr_t *gw; + void *state; + netif_init_fn init; + netif_input_fn input; + struct netif **ret; +} __netif_add_req; + +typedef struct { + struct netif *netif; +} __netif_remove_req; + +typedef struct { + struct pbuf *p; + struct netif *netif; + err_t *ret; +} __ethernet_input_req; + +// Run a callback in the LWIP thread (i.e. for Ethernet device polling and packet reception) +// When in an interrupt, need to pass in a heap-allocated buffer (i.e. class variable) of +// size LWIP_CALLBACK_BUFFER_SIZE that will be used to store the request. +extern void lwip_callback(void (*cb)(void *), void *cbData, void *buffer = nullptr); +typedef struct { + void (*cb)(void *); + void *cbData; +} __callback_req; +#define LWIP_CALLBACK_BUFFER_SIZE sizeof(__callback_req) + +#ifdef __cplusplus +}; +#endif diff --git a/cores/rp2040/main.cpp b/cores/rp2040/main.cpp index f6a264bb8..f31ffa3b5 100644 --- a/cores/rp2040/main.cpp +++ b/cores/rp2040/main.cpp @@ -37,11 +37,12 @@ extern "C" { extern void setup(); extern void loop(); +#ifdef __FREERTOS // FreeRTOS potential includes -extern void initFreeRTOS() __attribute__((weak)); -extern void startFreeRTOS() __attribute__((weak)); -bool __isFreeRTOS; -volatile bool __freeRTOSinitted; +extern void initFreeRTOS(); +extern void startFreeRTOS(); +volatile bool __freeRTOSinitted = false; +#endif extern void __EnableBluetoothDebug(Print &); @@ -124,76 +125,68 @@ extern "C" int main() { #endif // over/underclock - // Let rest of core know if we're using FreeRTOS - __isFreeRTOS = initFreeRTOS ? true : false; - +#ifndef __FREERTOS // Allocate impure_ptr (newlib temps) if there is a 2nd core running - if (!__isFreeRTOS && (setup1 || loop1)) { + if (setup1 || loop1) { _impure_ptr1 = (struct _reent*)calloc(1, sizeof(struct _reent)); _REENT_INIT_PTR(_impure_ptr1); } +#endif rp2040.begin(0); +#ifdef __FREERTOS + initFreeRTOS(); + // initVariant will be done in the freertos task +#else initVariant(); +#endif - if (__isFreeRTOS) { - initFreeRTOS(); - } #ifndef NO_USB #ifdef USE_TINYUSB TinyUSB_Device_Init(0); - #else __USBStart(); - -#ifndef DISABLE_USB_SERIAL - - if (!__isFreeRTOS) { - // Enable serial port for reset/upload always - Serial.begin(115200); - } +#if !defined(DISABLE_USB_SERIAL) && !defined(__FREERTOS) + // Enable serial port for reset/upload always + Serial.begin(115200); #endif #endif #endif -#if defined DEBUG_RP2040_PORT - if (!__isFreeRTOS) { - DEBUG_RP2040_PORT.begin(115200); +#if defined DEBUG_RP2040_PORT && !defined(__FREERTOS) + DEBUG_RP2040_PORT.begin(115200); #if (defined(ENABLE_BLUETOOTH) || defined(ENABLE_BLE)) && defined(DEBUG_RP2040_BLUETOOTH) - __EnableBluetoothDebug(DEBUG_RP2040_PORT); + __EnableBluetoothDebug(DEBUG_RP2040_PORT); #endif - } #endif - if (!__isFreeRTOS) { - if (setup1 || loop1) { - rp2040.fifo.begin(2); +#ifndef __FREERTOS + if (setup1 || loop1) { + rp2040.fifo.begin(2); + } else { + rp2040.fifo.begin(1); + } + rp2040.fifo.registerCore(); + if (setup1 || loop1) { + delay(1); // Needed to make Picoprobe upload start 2nd core + if (core1_separate_stack) { + core1_separate_stack_address = (uint32_t*)malloc(0x2000); + multicore_launch_core1_with_stack(main1, core1_separate_stack_address, 0x2000); } else { - rp2040.fifo.begin(1); + multicore_launch_core1(main1); } - rp2040.fifo.registerCore(); } - if (!__isFreeRTOS) { - if (setup1 || loop1) { - delay(1); // Needed to make Picoprobe upload start 2nd core - if (core1_separate_stack) { - core1_separate_stack_address = (uint32_t*)malloc(0x2000); - multicore_launch_core1_with_stack(main1, core1_separate_stack_address, 0x2000); - } else { - multicore_launch_core1(main1); - } - } - setup(); - while (true) { - loop(); - __loop(); - } - } else { - rp2040.fifo.begin(2); - startFreeRTOS(); + setup(); + while (true) { + loop(); + __loop(); } +#else // __FREERTOS + rp2040.fifo.begin(2); + startFreeRTOS(); +#endif return 0; } diff --git a/cores/rp2040/sdkoverride/async_context_freertos.c b/cores/rp2040/sdkoverride/async_context_freertos.c new file mode 100644 index 000000000..27c75588e --- /dev/null +++ b/cores/rp2040/sdkoverride/async_context_freertos.c @@ -0,0 +1,3 @@ +#ifdef __FREERTOS +#include "../../../pico-sdk/src/rp2_common/pico_async_context/async_context_freertos.c" +#endif diff --git a/cores/rp2040/sdkoverride/async_context_threadsafe_background.c b/cores/rp2040/sdkoverride/async_context_threadsafe_background.c new file mode 100644 index 000000000..ba5282af5 --- /dev/null +++ b/cores/rp2040/sdkoverride/async_context_threadsafe_background.c @@ -0,0 +1,3 @@ +#ifndef __FREERTOS +#include "../../../pico-sdk/src/rp2_common/pico_async_context/async_context_threadsafe_background.c" +#endif diff --git a/cores/rp2040/sdkoverride/btstack_flash_bank.cpp b/cores/rp2040/sdkoverride/btstack_flash_bank.cpp index eaf17c532..c31470f94 100644 --- a/cores/rp2040/sdkoverride/btstack_flash_bank.cpp +++ b/cores/rp2040/sdkoverride/btstack_flash_bank.cpp @@ -49,15 +49,15 @@ static uint32_t pico_flash_bank_get_alignment(void * context) { static void pico_flash_bank_erase(void * context, int bank) { (void)(context); DEBUG_PRINT("erase: bank %d\n", bank); - if (!__isFreeRTOS) { - noInterrupts(); - } +#ifndef __FREERTOS + noInterrupts(); +#endif rp2040.idleOtherCore(); flash_range_erase(PICO_FLASH_BANK_STORAGE_OFFSET + (PICO_FLASH_BANK_SIZE * bank), PICO_FLASH_BANK_SIZE); rp2040.resumeOtherCore(); - if (!__isFreeRTOS) { - interrupts(); - } +#ifndef __FREERTOS + interrupts(); +#endif } static void pico_flash_bank_read(void *context, int bank, uint32_t offset, uint8_t *buffer, uint32_t size) { @@ -151,15 +151,15 @@ static void pico_flash_bank_write(void * context, int bank, uint32_t offset, con offset = 0; // Now program the entire page - if (!__isFreeRTOS) { - noInterrupts(); - } +#ifndef __FREERTOS + noInterrupts(); +#endif rp2040.idleOtherCore(); flash_range_program(bank_start_pos + (page * FLASH_PAGE_SIZE), page_data, FLASH_PAGE_SIZE); rp2040.resumeOtherCore(); - if (!__isFreeRTOS) { - interrupts(); - } +#ifndef __FREERTOS + interrupts(); +#endif } } diff --git a/cores/rp2040/sdkoverride/cyw43_arch_freertos.c b/cores/rp2040/sdkoverride/cyw43_arch_freertos.c new file mode 100644 index 000000000..01949f796 --- /dev/null +++ b/cores/rp2040/sdkoverride/cyw43_arch_freertos.c @@ -0,0 +1,99 @@ +#if defined(__FREERTOS) +// Taken from SDK because we need to remove the !NO_SYS check +#define PICO_CYW43_ARCH_FREERTOS 1 +/* + Copyright (c) 2022 Raspberry Pi (Trading) Ltd. + + SPDX-License-Identifier: BSD-3-Clause +*/ + +#if PICO_CYW43_ARCH_FREERTOS + +#include "pico/cyw43_arch.h" +#include "pico/cyw43_driver.h" +#include "pico/async_context_freertos.h" + +#if CYW43_LWIP +#include "pico/lwip_freertos.h" +#include +#endif + +#if CYW43_ENABLE_BLUETOOTH +#include "pico/btstack_cyw43.h" +#endif + +//#if NO_SYS +//#error example_cyw43_arch_freetos_sys requires NO_SYS=0 +//#endif + +static async_context_freertos_t cyw43_async_context_freertos; + +#if configSUPPORT_STATIC_ALLOCATION && !CYW43_NO_DEFAULT_TASK_STACK +static StackType_t cyw43_async_context_freertos_task_stack[CYW43_TASK_STACK_SIZE]; +#endif + +async_context_t *cyw43_arch_init_default_async_context(void) { + async_context_freertos_config_t config = async_context_freertos_default_config(); +#ifdef CYW43_TASK_PRIORITY + config.task_priority = CYW43_TASK_PRIORITY; +#endif +#ifdef CYW43_TASK_STACK_SIZE + config.task_stack_size = CYW43_TASK_STACK_SIZE; +#endif +#if configSUPPORT_STATIC_ALLOCATION && !CYW43_NO_DEFAULT_TASK_STACK + config.task_stack = cyw43_async_context_freertos_task_stack; +#endif + if (async_context_freertos_init(&cyw43_async_context_freertos, &config)) { + return &cyw43_async_context_freertos.core; + } + return NULL; +} + +int cyw43_arch_init(void) { + async_context_t *context = cyw43_arch_async_context(); + if (!context) { + context = cyw43_arch_init_default_async_context(); + if (!context) { + return PICO_ERROR_GENERIC; + } + cyw43_arch_set_async_context(context); + } + bool ok = cyw43_driver_init(context); +#if CYW43_LWIP + ok &= lwip_freertos_init(context); +#endif +#if CYW43_ENABLE_BLUETOOTH + ok &= btstack_cyw43_init(context); +#endif + if (!ok) { + cyw43_arch_deinit(); + return PICO_ERROR_GENERIC; + } else { + return 0; + } +} + +void cyw43_arch_deinit(void) { + async_context_t *context = cyw43_arch_async_context(); +#if CYW43_ENABLE_BLUETOOTH + btstack_cyw43_deinit(context); +#endif + // there is a bit of a circular dependency here between lwIP and cyw43_driver. We + // shut down cyw43_driver first as it has IRQs calling back into lwIP. Also lwIP itself + // does not actually get shut down. + // todo add a "pause" method to async_context if we need to provide some atomicity (we + // don't want to take the lock as these methods may invoke execute_sync() + cyw43_driver_deinit(context); +#if CYW43_LWIP + lwip_freertos_deinit(context); +#endif + // if it is our context, then we de-init it. + if (context == &cyw43_async_context_freertos.core) { + async_context_deinit(context); + cyw43_arch_set_async_context(NULL); + } +} + +#endif + +#endif diff --git a/cores/rp2040/sdkoverride/cyw43_arch_threadsafe_background.c b/cores/rp2040/sdkoverride/cyw43_arch_threadsafe_background.c new file mode 100644 index 000000000..cd8a0619e --- /dev/null +++ b/cores/rp2040/sdkoverride/cyw43_arch_threadsafe_background.c @@ -0,0 +1,4 @@ +#if !defined(__FREERTOS) +#define PICO_CYW43_ARCH_THREADSAFE_BACKGROUND 1 +#include "../../../pico-sdk/src/rp2_common/pico_cyw43_arch/cyw43_arch_threadsafe_background.c" +#endif diff --git a/cores/rp2040/wiring_private.cpp b/cores/rp2040/wiring_private.cpp index 7a7410372..422cfd6f2 100644 --- a/cores/rp2040/wiring_private.cpp +++ b/cores/rp2040/wiring_private.cpp @@ -33,29 +33,33 @@ static uint32_t _irqStackTop[2] = { 0, 0 }; static uint32_t _irqStack[2][maxIRQs]; extern "C" void interrupts() { +#ifdef __FREERTOS if (__freeRTOSinitted) { __freertos_task_exit_critical(); - } else { - auto core = get_core_num(); - if (!_irqStackTop[core]) { - // ERROR - return; - } - restore_interrupts(_irqStack[core][--_irqStackTop[core]]); + return; + } +#endif + auto core = get_core_num(); + if (!_irqStackTop[core]) { + // ERROR + return; } + restore_interrupts(_irqStack[core][--_irqStackTop[core]]); } extern "C" void noInterrupts() { +#ifdef __FREERTOS if (__freeRTOSinitted) { __freertos_task_enter_critical(); - } else { - auto core = get_core_num(); - if (_irqStackTop[core] == maxIRQs) { - // ERROR - panic("IRQ stack overflow"); - } - _irqStack[core][_irqStackTop[core]++] = save_and_disable_interrupts(); + return; + } +#endif + auto core = get_core_num(); + if (_irqStackTop[core] == maxIRQs) { + // ERROR + panic("IRQ stack overflow"); } + _irqStack[core][_irqStackTop[core]++] = save_and_disable_interrupts(); } auto_init_mutex(_irqMutex); diff --git a/docs/platformio.rst b/docs/platformio.rst index a74e1cdcd..35a300576 100644 --- a/docs/platformio.rst +++ b/docs/platformio.rst @@ -343,6 +343,19 @@ The Bluetooth Classic (BTC) and Bluetooth Low Energy (BLE) stack can be activate to the ``platformio.ini``. +FreeRTOS +-------- + +FreeRTOS support can be activated by adding + +.. code:: ini + + ; Set the compiler flag. Still need to #include in your application + build_flags = -D__FREERTOS + +to the ``platformio.ini``. + + Selecting a different core version ---------------------------------- diff --git a/lib/core_inc.txt b/lib/core_inc.txt index ae6e3275d..01b7d955c 100644 --- a/lib/core_inc.txt +++ b/lib/core_inc.txt @@ -66,3 +66,5 @@ -iwithprefixbefore/pico-sdk/src/rp2_common/pico_stdio_uart/include -iwithprefixbefore/pico-sdk/src/rp2_common/pico_unique_id/include -iwithprefixbefore/pico-sdk/lib/lwip/src/include + +-iwithprefixbefore/cores/rp2040/freertos diff --git a/lib/core_wrap.txt b/lib/core_wrap.txt index b1765a93a..516a2de82 100644 --- a/lib/core_wrap.txt +++ b/lib/core_wrap.txt @@ -18,9 +18,12 @@ -Wl,--wrap=pbuf_get_contiguous -Wl,--wrap=pbuf_cat +-Wl,--wrap=tcp_shutdown -Wl,--wrap=tcp_arg -Wl,--wrap=tcp_new +-Wl,--wrap=tcp_new_ip_type -Wl,--wrap=tcp_bind +-Wl,--wrap=tcp_bind_netif -Wl,--wrap=tcp_listen_with_backlog -Wl,--wrap=tcp_accept -Wl,--wrap=tcp_connect @@ -38,28 +41,36 @@ -Wl,--wrap=tcp_backlog_accepted -Wl,--wrap=udp_new +-Wl,--wrap=udp_new_ip_type -Wl,--wrap=udp_remove -Wl,--wrap=udp_bind -Wl,--wrap=udp_connect -Wl,--wrap=udp_disconnect -Wl,--wrap=udp_send -Wl,--wrap=udp_recv +-Wl,--wrap=udp_sendto -Wl,--wrap=udp_sendto_if +-Wl,--wrap=udp_sendto_if_src -Wl,--wrap=sys_check_timeouts -Wl,--wrap=dns_gethostbyname -Wl,--wrap=dns_gethostbyname_addrtype --Wl,--wrap=raw_new --Wl,--wrap=raw_recv -Wl,--wrap=raw_bind +-Wl,--wrap=raw_connect +-Wl,--wrap=raw_recv -Wl,--wrap=raw_sendto +-Wl,--wrap=raw_send -Wl,--wrap=raw_remove +-Wl,--wrap=raw_new +-Wl,--wrap=raw_new_ip_type -Wl,--wrap=netif_add -Wl,--wrap=netif_remove +-Wl,--wrap=ethernet_input + -Wl,--wrap=cyw43_cb_process_ethernet -Wl,--wrap=cyw43_cb_tcpip_set_link_up -Wl,--wrap=cyw43_cb_tcpip_set_link_down diff --git a/lib/platform_def.txt b/lib/platform_def.txt index 9a8be6f09..ba73b65bf 100644 --- a/lib/platform_def.txt +++ b/lib/platform_def.txt @@ -62,7 +62,6 @@ -DPICO_32BIT=1 -DPICO_BUILD=1 -DPICO_COPY_TO_RAM=0 --DPICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 -DPICO_NO_BINARY_INFO=1 -DPICO_NO_FLASH=0 -DPICO_NO_HARDWARE=0 @@ -71,3 +70,6 @@ -DPICO_RP2040_USB_DEVICE_UFRAME_FIX=1 -DPICO_USE_BLOCKED_RAM=0 -DPICO_XOSC_STARTUP_DELAY_MULTIPLIER=64 + +-DPICO_CYW43_ARCH_HEADER=stdint.h +-DCYW43_TASK_STACK_SIZE=1024 diff --git a/lib/rp2040/liblwip-bt.a b/lib/rp2040/liblwip-bt.a index 712a0bb8f..9987b43f3 100644 Binary files a/lib/rp2040/liblwip-bt.a and b/lib/rp2040/liblwip-bt.a differ diff --git a/lib/rp2040/liblwip.a b/lib/rp2040/liblwip.a index c7a50285e..378bc3b12 100644 Binary files a/lib/rp2040/liblwip.a and b/lib/rp2040/liblwip.a differ diff --git a/lib/rp2040/libpico.a b/lib/rp2040/libpico.a index 0b8ae3fd4..2246c71fa 100644 Binary files a/lib/rp2040/libpico.a and b/lib/rp2040/libpico.a differ diff --git a/lib/rp2350-riscv/liblwip-bt.a b/lib/rp2350-riscv/liblwip-bt.a index 297a39cd2..3b7999f90 100644 Binary files a/lib/rp2350-riscv/liblwip-bt.a and b/lib/rp2350-riscv/liblwip-bt.a differ diff --git a/lib/rp2350-riscv/liblwip.a b/lib/rp2350-riscv/liblwip.a index bafe97962..d80f88760 100644 Binary files a/lib/rp2350-riscv/liblwip.a and b/lib/rp2350-riscv/liblwip.a differ diff --git a/lib/rp2350-riscv/libpico.a b/lib/rp2350-riscv/libpico.a index 02522f729..65d5bb294 100644 Binary files a/lib/rp2350-riscv/libpico.a and b/lib/rp2350-riscv/libpico.a differ diff --git a/lib/rp2350/liblwip-bt.a b/lib/rp2350/liblwip-bt.a index 0c9ae4538..962042ee3 100644 Binary files a/lib/rp2350/liblwip-bt.a and b/lib/rp2350/liblwip-bt.a differ diff --git a/lib/rp2350/liblwip.a b/lib/rp2350/liblwip.a index 189fd8e37..268909285 100644 Binary files a/lib/rp2350/liblwip.a and b/lib/rp2350/liblwip.a differ diff --git a/lib/rp2350/libpico.a b/lib/rp2350/libpico.a index b607d7e2c..4c71d8a25 100644 Binary files a/lib/rp2350/libpico.a and b/lib/rp2350/libpico.a differ diff --git a/libraries/EEPROM/src/EEPROM.cpp b/libraries/EEPROM/src/EEPROM.cpp index 12f3fafa2..624174f7a 100644 --- a/libraries/EEPROM/src/EEPROM.cpp +++ b/libraries/EEPROM/src/EEPROM.cpp @@ -118,16 +118,16 @@ bool EEPROMClass::commit() { return false; } - if (!__isFreeRTOS) { - noInterrupts(); - } +#ifndef __FREERTOS + noInterrupts(); +#endif rp2040.idleOtherCore(); flash_range_erase((intptr_t)_sector - (intptr_t)XIP_BASE, 4096); flash_range_program((intptr_t)_sector - (intptr_t)XIP_BASE, _data, _size); rp2040.resumeOtherCore(); - if (!__isFreeRTOS) { - interrupts(); - } +#ifndef __FREERTOS + interrupts(); +#endif _dirty = false; return true; diff --git a/libraries/FatFS/lib/SPIFTL b/libraries/FatFS/lib/SPIFTL index bf7742310..89a198d96 160000 --- a/libraries/FatFS/lib/SPIFTL +++ b/libraries/FatFS/lib/SPIFTL @@ -1 +1 @@ -Subproject commit bf7742310b422977d245833815fd46275cefdebe +Subproject commit 89a198d968e27bad5065fca7c7ce3eec478bd449 diff --git a/libraries/FreeRTOS/keywords.txt b/libraries/FreeRTOS/keywords.txt deleted file mode 100644 index d11db89bd..000000000 --- a/libraries/FreeRTOS/keywords.txt +++ /dev/null @@ -1,64 +0,0 @@ -# Syntax Coloring Map For FreeRTOS -# https://arduino.github.io/arduino-cli/library-specification/#keywords -# Formatted by a single true tab (not spaces) - -FreeRTOS KEYWORD1 - -# Datatypes (KEYWORD1) -StackType_t KEYWORD1 -BaseType_t KEYWORD1 -UBaseType_t KEYWORD1 -TickType_t KEYWORD1 - -TaskHandle_t KEYWORD1 -QueueHandle_t KEYWORD1 -TimerHandle_t KEYWORD1 -SemaphoreHandle_t KEYWORD1 -StreamBufferHandle_t KEYWORD1 -MessageBufferHandle_t KEYWORD1 -EventGroupHandle_t KEYWORD1 - -# Methods and Functions (KEYWORD2) -xSemaphoreCreateMutex KEYWORD2 -xSemaphoreCreateBinary KEYWORD2 -xSemaphoreTake KEYWORD2 -xSemaphoreTakeFromISR KEYWORD2 -xSemaphoreGive KEYWORD2 -xSemaphoreGiveFromISR KEYWORD2 -xTaskCreate KEYWORD2 -vTaskDelete KEYWORD2 -vTaskDelay KEYWORD2 -xTaskDelayUntil KEYWORD2 -xQueueCreate KEYWORD2 -xQueueSend KEYWORD2 -xQueueReceive KEYWORD2 -pcTaskGetName KEYWORD2 -ulTaskNotifyTake KEYWORD2 -vTaskNotifyGiveFromISR KEYWORD2 -taskYIELD KEYWORD2 -vTaskCoreAffinitySet KEYWORD2 -vTaskSuspend KEYWORD2 -vTaskResume KEYWORD2 -xTaskResumeFromISR KEYWORD2 -xTaskGetTickCount KEYWORD2 -xTaskGetTickCountFromISR KEYWORD2 -uxTaskGetNumberOfTasks KEYWORD2 -uxTaskGetStackHighWaterMark KEYWORD2 -uxTaskGetSystemState KEYWORD2 - -# Instances (KEYWORD2) - -# Structures (KEYWORD3) -TaskParameters_t KEYWORD3 -TaskStatus_t KEYWORD3 -ListItem_t KEYWORD3 -MiniListItem_t KEYWORD3 -HeapStats_t KEYWORD3 - -# Constants (LITERAL1) -portUSE_WDTO LITERAL1 -portTICK_PERIOD_MS LITERAL1 -configTICK_RATE_HZ LITERAL1 -configCPU_CLOCK_HZ LITERAL1 -configMAX_PRIORITIES LITERAL1 -configMINIMAL_STACK_SIZE LITERAL1 diff --git a/libraries/FreeRTOS/library.properties b/libraries/FreeRTOS/library.properties deleted file mode 100644 index 06c778ca9..000000000 --- a/libraries/FreeRTOS/library.properties +++ /dev/null @@ -1,11 +0,0 @@ -name=FreeRTOS -version=1.0.0 -author=Graham Sanderson -maintainer=Graham Sanderson -sentence=

FreeRTOS Real Time Operating System implemented for RP2040.

-paragraph=Taken from the official FreeRTOS SMP branch. -category=Timing -url=https://github.com/FreeRTOS/FreeRTOS-Kernel -architectures=rp2040 -license=MIT -dot_a_linkage=true diff --git a/libraries/FreeRTOS/readme.md b/libraries/FreeRTOS/readme.md deleted file mode 100644 index 6c4e4bba8..000000000 --- a/libraries/FreeRTOS/readme.md +++ /dev/null @@ -1,39 +0,0 @@ -**ATTENTION** -Please be aware that this library was copied from the original Arduino AVR FreeRTOS library and may still contain files from that library that have no meaning in the context of this package, i.e. the licensing and code of conduct file! Each file retains the license and copyright from where it was taken (FreeRTOS repository or AVR FreeRTOS library, respectively.) - -______ - -This is a copy of the RP2040 port of the FreeRTOS SMP branch, packaged as an Arduino library. - -It has been created to provide access to FreeRTOS capabilities, with full compatibility to the Arduino environment. -It does this by keeping hands off almost everything, and only touching the minimum of hardware to be successful. - -## General - -FreeRTOS has a multitude of configuration options, which can be specified from within the FreeRTOSConfig.h file. -To keep commonality with all of the Arduino hardware options, some sensible defaults have been selected. - -System ticks are 1ms, which means that Tasks can only be scheduled to run up to 1000 times per second. - -Stack for the `loop()` function has been set at 256 bytes. This can be configured by adjusting the `configMINIMAL_STACK_SIZE` parameter. If you have stack overflow issues, just increase it. -Users should prefer to allocate larger structures, arrays, or buffers using `pvPortMalloc()`, rather than defining them locally on the stack. - -Memory for the heap is allocated by the normal `malloc()` function, wrapped by `pvPortMalloc()`. -This option has been selected because it is automatically adjusted to use the capabilities of each device. -Other heap allocation schemes are supported by FreeRTOS, and they can used with additional configuration. - -## Errors - -* Stack Overflow: If any stack (for the `loop()` or) for any Task overflows, there will be a slow LED blink, with 4 second cycle. -* Heap Overflow: If any Task tries to allocate memory and that allocation fails, there will be a fast LED blink, with 100 millisecond cycle. - -## Files & Configuration - -* `RP2040_FreeRTOS.h` : Must always be `#include` first. It references other configuration files, and sets defaults where necessary. -* `FreeRTOSConfig.h` : Contains a multitude of API and environment configurations. -* `variantHooks.cpp` : Contains the RP2040 specific configurations for this port of FreeRTOS. -* `heap_3.c` : Contains the heap allocation scheme based on `malloc()`. Other schemes are available, but depend on user configuration for specific MCU choice. - -## Sources / Credits ✨ - -This library is built on the efforts of the authors of the FreeRTOS SMP port for the RP2040, using the original Arduino FreeRTOS library as a template for the library package and the Arduino specific behavior. diff --git a/libraries/FreeRTOS/src/FreeRTOS.h b/libraries/FreeRTOS/src/FreeRTOS.h deleted file mode 100644 index 1db1c270b..000000000 --- a/libraries/FreeRTOS/src/FreeRTOS.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/FreeRTOS.h" diff --git a/libraries/FreeRTOS/src/StackMacros.h b/libraries/FreeRTOS/src/StackMacros.h deleted file mode 100644 index d0fe8ccb0..000000000 --- a/libraries/FreeRTOS/src/StackMacros.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/StackMacros.h" diff --git a/libraries/FreeRTOS/src/atomic.h b/libraries/FreeRTOS/src/atomic.h deleted file mode 100644 index 48e0dbf9b..000000000 --- a/libraries/FreeRTOS/src/atomic.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/atomic.h" diff --git a/libraries/FreeRTOS/src/croutine.c b/libraries/FreeRTOS/src/croutine.c deleted file mode 100644 index f9f313019..000000000 --- a/libraries/FreeRTOS/src/croutine.c +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/croutine.c" diff --git a/libraries/FreeRTOS/src/croutine.h b/libraries/FreeRTOS/src/croutine.h deleted file mode 100644 index e9b128380..000000000 --- a/libraries/FreeRTOS/src/croutine.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/croutine.h" diff --git a/libraries/FreeRTOS/src/deprecated_definitions.h b/libraries/FreeRTOS/src/deprecated_definitions.h deleted file mode 100644 index cde8163f1..000000000 --- a/libraries/FreeRTOS/src/deprecated_definitions.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/deprecated_definitions.h" diff --git a/libraries/FreeRTOS/src/event_groups.c b/libraries/FreeRTOS/src/event_groups.c deleted file mode 100644 index 1d356b23f..000000000 --- a/libraries/FreeRTOS/src/event_groups.c +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/event_groups.c" diff --git a/libraries/FreeRTOS/src/event_groups.h b/libraries/FreeRTOS/src/event_groups.h deleted file mode 100644 index 6f50a091a..000000000 --- a/libraries/FreeRTOS/src/event_groups.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/event_groups.h" diff --git a/libraries/FreeRTOS/src/freertos_sdk_config.h b/libraries/FreeRTOS/src/freertos_sdk_config.h deleted file mode 100644 index 0c77d9cc5..000000000 --- a/libraries/FreeRTOS/src/freertos_sdk_config.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/freertos_sdk_config.h" diff --git a/libraries/FreeRTOS/src/heap_3.c b/libraries/FreeRTOS/src/heap_3.c deleted file mode 100644 index 2b2c8a983..000000000 --- a/libraries/FreeRTOS/src/heap_3.c +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/portable/MemMang/heap_3.c" diff --git a/libraries/FreeRTOS/src/list.c b/libraries/FreeRTOS/src/list.c deleted file mode 100644 index 310e95942..000000000 --- a/libraries/FreeRTOS/src/list.c +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/list.c" diff --git a/libraries/FreeRTOS/src/list.h b/libraries/FreeRTOS/src/list.h deleted file mode 100644 index 29aefcba2..000000000 --- a/libraries/FreeRTOS/src/list.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/list.h" diff --git a/libraries/FreeRTOS/src/message_buffer.h b/libraries/FreeRTOS/src/message_buffer.h deleted file mode 100644 index cb67683ae..000000000 --- a/libraries/FreeRTOS/src/message_buffer.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/message_buffer.h" diff --git a/libraries/FreeRTOS/src/mpu_prototypes.h b/libraries/FreeRTOS/src/mpu_prototypes.h deleted file mode 100644 index b4313789d..000000000 --- a/libraries/FreeRTOS/src/mpu_prototypes.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/mpu_prototypes.h" diff --git a/libraries/FreeRTOS/src/mpu_syscall_numbers.h b/libraries/FreeRTOS/src/mpu_syscall_numbers.h deleted file mode 100644 index fb175c2f2..000000000 --- a/libraries/FreeRTOS/src/mpu_syscall_numbers.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/mpu_syscall_numbers.h" diff --git a/libraries/FreeRTOS/src/mpu_wrappers.h b/libraries/FreeRTOS/src/mpu_wrappers.h deleted file mode 100644 index 2c0116cd9..000000000 --- a/libraries/FreeRTOS/src/mpu_wrappers.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/mpu_wrappers.h" diff --git a/libraries/FreeRTOS/src/mpu_wrappers_v2_asm.c b/libraries/FreeRTOS/src/mpu_wrappers_v2_asm.c deleted file mode 100644 index 7350e5527..000000000 --- a/libraries/FreeRTOS/src/mpu_wrappers_v2_asm.c +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef PICO_RP2350 -#ifndef __riscv -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/mpu_wrappers_v2_asm.c" -#endif -#endif diff --git a/libraries/FreeRTOS/src/port.c b/libraries/FreeRTOS/src/port.c deleted file mode 100644 index a75ee26dd..000000000 --- a/libraries/FreeRTOS/src/port.c +++ /dev/null @@ -1,9 +0,0 @@ -#ifdef PICO_RP2040 -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/port.c" -#else -#ifndef __riscv -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/port.c" -#else -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/port.c" -#endif -#endif diff --git a/libraries/FreeRTOS/src/portASM.S b/libraries/FreeRTOS/src/portASM.S deleted file mode 100644 index 52920480e..000000000 --- a/libraries/FreeRTOS/src/portASM.S +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef PICO_RP2350 -#ifdef __riscv -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/portASM.S" -#endif -#endif diff --git a/libraries/FreeRTOS/src/portContext.h b/libraries/FreeRTOS/src/portContext.h deleted file mode 100644 index a7224f065..000000000 --- a/libraries/FreeRTOS/src/portContext.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef PICO_RP2350 -#ifdef __riscv -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/portContext.h" -#endif -#endif - diff --git a/libraries/FreeRTOS/src/portable.h b/libraries/FreeRTOS/src/portable.h deleted file mode 100644 index c2bedb522..000000000 --- a/libraries/FreeRTOS/src/portable.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/portable.h" diff --git a/libraries/FreeRTOS/src/portasm.c b/libraries/FreeRTOS/src/portasm.c deleted file mode 100644 index 830e60a98..000000000 --- a/libraries/FreeRTOS/src/portasm.c +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef PICO_RP2350 -#ifndef __riscv -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portasm.c" -#endif -#endif diff --git a/libraries/FreeRTOS/src/portmacro.h b/libraries/FreeRTOS/src/portmacro.h deleted file mode 100644 index 60ddec8f7..000000000 --- a/libraries/FreeRTOS/src/portmacro.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifdef PICO_RP2350 -#ifndef __riscv -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portmacro.h" -#else -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/portmacro.h" -#endif -#else -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/portmacro.h" -#endif diff --git a/libraries/FreeRTOS/src/projdefs.h b/libraries/FreeRTOS/src/projdefs.h deleted file mode 100644 index 712d61391..000000000 --- a/libraries/FreeRTOS/src/projdefs.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/projdefs.h" diff --git a/libraries/FreeRTOS/src/queue.c b/libraries/FreeRTOS/src/queue.c deleted file mode 100644 index 59a8f7e91..000000000 --- a/libraries/FreeRTOS/src/queue.c +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/queue.c" diff --git a/libraries/FreeRTOS/src/queue.h b/libraries/FreeRTOS/src/queue.h deleted file mode 100644 index 091e73900..000000000 --- a/libraries/FreeRTOS/src/queue.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/queue.h" diff --git a/libraries/FreeRTOS/src/rp2040_config.h b/libraries/FreeRTOS/src/rp2040_config.h deleted file mode 100644 index 4e7b5697a..000000000 --- a/libraries/FreeRTOS/src/rp2040_config.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifdef PICO_RP2350 -#ifndef __riscv -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure//rp2040_config.h" -#else -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/rp2040_config.h" -#endif -#else -#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/rp2040_config.h" -#endif diff --git a/libraries/FreeRTOS/src/semphr.h b/libraries/FreeRTOS/src/semphr.h deleted file mode 100644 index c85953698..000000000 --- a/libraries/FreeRTOS/src/semphr.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/semphr.h" diff --git a/libraries/FreeRTOS/src/stack_macros.h b/libraries/FreeRTOS/src/stack_macros.h deleted file mode 100644 index aff6f3c0a..000000000 --- a/libraries/FreeRTOS/src/stack_macros.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/stack_macros.h" diff --git a/libraries/FreeRTOS/src/stream_buffer.c b/libraries/FreeRTOS/src/stream_buffer.c deleted file mode 100644 index 0f93af555..000000000 --- a/libraries/FreeRTOS/src/stream_buffer.c +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/stream_buffer.c" diff --git a/libraries/FreeRTOS/src/stream_buffer.h b/libraries/FreeRTOS/src/stream_buffer.h deleted file mode 100644 index dcdf5af61..000000000 --- a/libraries/FreeRTOS/src/stream_buffer.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/stream_buffer.h" diff --git a/libraries/FreeRTOS/src/task.h b/libraries/FreeRTOS/src/task.h deleted file mode 100644 index 2e38c2e95..000000000 --- a/libraries/FreeRTOS/src/task.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/task.h" diff --git a/libraries/FreeRTOS/src/timers.c b/libraries/FreeRTOS/src/timers.c deleted file mode 100644 index ca907b665..000000000 --- a/libraries/FreeRTOS/src/timers.c +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/timers.c" diff --git a/libraries/FreeRTOS/src/timers.h b/libraries/FreeRTOS/src/timers.h deleted file mode 100644 index db546520b..000000000 --- a/libraries/FreeRTOS/src/timers.h +++ /dev/null @@ -1 +0,0 @@ -#include "../lib/FreeRTOS-Kernel/include/timers.h" diff --git a/libraries/FreeRTOS/tests/README.md b/libraries/FreeRTOS/tests/README.md deleted file mode 100644 index 50d477e9c..000000000 --- a/libraries/FreeRTOS/tests/README.md +++ /dev/null @@ -1 +0,0 @@ -This folder contains FreeRTOS functionality tests, not generally useful for users. diff --git a/libraries/FreeRTOS/tests/corefreeze/corefreeze.ino b/libraries/FreeRTOS/tests/corefreeze/corefreeze.ino deleted file mode 100644 index 8ffd85bf0..000000000 --- a/libraries/FreeRTOS/tests/corefreeze/corefreeze.ino +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include -#include "LittleFS.h" - -void setup() { - pinMode(LED_BUILTIN, OUTPUT); - digitalWrite(LED_BUILTIN, LOW); - LittleFS.format(); -} - -void setup1() { -} - -void loop() { - digitalWrite(LED_BUILTIN, HIGH); - delay(200); -} - -int x = 0; -void loop1() { - delay(100); - digitalWrite(LED_BUILTIN, LOW); - delay(100); - Serial.printf("%d\n", x++); -} diff --git a/libraries/FreeRTOS/tests/freertos_reent/freertos_reent.ino b/libraries/FreeRTOS/tests/freertos_reent/freertos_reent.ino deleted file mode 100644 index 1c207a643..000000000 --- a/libraries/FreeRTOS/tests/freertos_reent/freertos_reent.ino +++ /dev/null @@ -1,32 +0,0 @@ -// Simple stress test to ensure each thread has its own Newlib reent structure -// The random numbers from each task should be identical. - -#include -#include - -void go(void *param) { - (void) param; - srand(0); - int i = 0; - while(1) { - char buff[100]; - TaskStatus_t st; - vTaskGetInfo(NULL, &st, pdFALSE, eInvalid); - sprintf(buff, "task %ld: %d = %d\n", st.xTaskNumber, i++, rand()); - Serial.print(buff); - delay(1000); - } -} - -void setup() { - delay(5000); - // put your setup code here, to run once: - xTaskCreate(go, "c1", 1024, nullptr, 1, nullptr); - xTaskCreate(go, "c2", 1024, nullptr, 1, nullptr); - xTaskCreate(go, "c3", 1024, nullptr, 1, nullptr); -} - -void loop() { - // put your main code here, to run repeatedly: - -} diff --git a/libraries/FreeRTOS/tests/freertos_syscallmutex/freertos_syscallmutex.ino b/libraries/FreeRTOS/tests/freertos_syscallmutex/freertos_syscallmutex.ino deleted file mode 100644 index 498e79088..000000000 --- a/libraries/FreeRTOS/tests/freertos_syscallmutex/freertos_syscallmutex.ino +++ /dev/null @@ -1,319 +0,0 @@ -// FreeRTOS system call/mutex stress test - -#include -#include -#include -#include -#define DELAY 1 -#define SERIAL_DEBUG Serial1 -#define STACK_SIZE 512 -#define CORE_0 (1 << 0) -#define CORE_1 (1 << 1) - -void semphrTakeConditional(bool useMutexOn, SemaphoreHandle_t xSemaphore); -void semphrGiveConditional(bool useMutexOn, SemaphoreHandle_t xSemaphore); - -/* - I want to keep the possibility of using different and independent - mutexes for each of the functions that operate on the heap. - - If you want to enable the use of these mutexes remove the defines - on lines 30 and 31 and enable the their initialization in setup() -*/ -SemaphoreHandle_t xSemaphoreMalloc = NULL; -// SemaphoreHandle_t xSemaphoreRealloc = NULL; -// SemaphoreHandle_t xSemaphoreFree = NULL; - -/* - A lazy way to use the same mutex for malloc, realloc and free - in order to bring us back to the same situation as the MCVE - posted here: https://github.com/earlephilhower/arduino-pico/issues/795#issuecomment-1227122082 -*/ -#define xSemaphoreRealloc xSemaphoreMalloc -#define xSemaphoreFree xSemaphoreMalloc - -const bool useMutexOnMalloc = false; -const bool useMutexOnRealloc = false; -const bool useMutexOnFree = false; - -/* - Enabling this, a realloc will be performed and the string "_realloc" - will be concateneted to *tmp -*/ -const bool tryRealloc = true; - -TaskHandle_t loop2Handle = NULL; -TaskHandle_t loop3Handle = NULL; -TaskHandle_t loop4Handle = NULL; -TaskHandle_t loop5Handle = NULL; -TaskHandle_t loop6Handle = NULL; -TaskHandle_t loop7Handle = NULL; - -void loop2(void *pvPramaters); -void loop3(void *pvPramaters); -void loop4(void *pvPramaters); -void loop5(void *pvPramaters); -void loop6(void *pvPramaters); -void loop7(void *pvPramaters); - -void setup() -{ - pinMode(LED_BUILTIN, OUTPUT); - - xSemaphoreMalloc = xSemaphoreCreateMutex(); - // xSemaphoreRealloc = xSemaphoreCreateMutex(); - // xSemaphoreFree = xSemaphoreCreateMutex(); - - xTaskCreate(loop2, "loop2", STACK_SIZE, NULL, 1, &loop2Handle); - vTaskCoreAffinitySet(loop2Handle, CORE_0); - xTaskCreate(loop3, "loop3", STACK_SIZE, NULL, 1, &loop3Handle); - vTaskCoreAffinitySet(loop3Handle, CORE_1); - xTaskCreate(loop4, "loop4", STACK_SIZE, NULL, 1, &loop4Handle); - vTaskCoreAffinitySet(loop4Handle, CORE_0); - xTaskCreate(loop5, "loop5", STACK_SIZE, NULL, 1, &loop5Handle); - vTaskCoreAffinitySet(loop5Handle, CORE_1); - xTaskCreate(loop6, "loop6", STACK_SIZE, NULL, 1, &loop6Handle); - vTaskCoreAffinitySet(loop6Handle, CORE_0); - xTaskCreate(loop7, "loop7", STACK_SIZE, NULL, 1, &loop7Handle); - vTaskCoreAffinitySet(loop7Handle, CORE_1); -} -static int _loop[8]; - -void loop() -{ - while (1) - { - _loop[0]++; - digitalWrite(LED_BUILTIN, HIGH); - delay(500); - digitalWrite(LED_BUILTIN, LOW); - delay(500); - for (int i=0; i<8; i++) Serial.printf("%d ", _loop[i]); - Serial.println(""); - } -} - -void loop1() -{ - while (1) - { - _loop[1]++; - char *tmp; - - semphrTakeConditional(useMutexOnMalloc, xSemaphoreMalloc); - tmp = (char *)malloc(10 * sizeof(char)); - semphrGiveConditional(useMutexOnMalloc, xSemaphoreMalloc); - - strcpy(tmp, "foo"); - - if (tryRealloc) - { - semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); - tmp = (char *)realloc(tmp, 20 * sizeof(char)); - semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); - strcat(tmp, "_realloc"); - } - - semphrTakeConditional(useMutexOnFree, xSemaphoreFree); - free(tmp); - semphrGiveConditional(useMutexOnFree, xSemaphoreFree); - - delay(DELAY); - } -} - -void loop2(void *pvPramaters) -{ - (void) pvPramaters; - while (1) - { - _loop[2]++; - char *tmp; - - semphrTakeConditional(useMutexOnMalloc, xSemaphoreMalloc); - tmp = (char *)malloc(10 * sizeof(char)); - semphrGiveConditional(useMutexOnMalloc, xSemaphoreMalloc); - - strcpy(tmp, "bar"); - - if (tryRealloc) - { - semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); - tmp = (char *)realloc(tmp, 20 * sizeof(char)); - semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); - strcat(tmp, "_realloc"); - } - - semphrTakeConditional(useMutexOnFree, xSemaphoreFree); - free(tmp); - semphrGiveConditional(useMutexOnFree, xSemaphoreFree); - - delay(DELAY); - } -} - -void loop3(void *pvPramaters) -{ - (void) pvPramaters; - while (1) - { - _loop[3]++; - char *tmp; - - semphrTakeConditional(useMutexOnMalloc, xSemaphoreMalloc); - tmp = (char *)malloc(10 * sizeof(char)); - semphrGiveConditional(useMutexOnMalloc, xSemaphoreMalloc); - - strcpy(tmp, "yeah"); - - if (tryRealloc) - { - semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); - tmp = (char *)realloc(tmp, 20 * sizeof(char)); - semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); - strcat(tmp, "_realloc"); - } - - semphrTakeConditional(useMutexOnFree, xSemaphoreFree); - free(tmp); - semphrGiveConditional(useMutexOnFree, xSemaphoreFree); - - delay(DELAY); - } -} - -void loop4(void *pvPramaters) -{ - (void) pvPramaters; - while (1) - { - _loop[4]++; - char *tmp; - - semphrTakeConditional(useMutexOnMalloc, xSemaphoreMalloc); - tmp = (char *)malloc(10 * sizeof(char)); - semphrGiveConditional(useMutexOnMalloc, xSemaphoreMalloc); - - strcpy(tmp, "baz"); - - if (tryRealloc) - { - semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); - tmp = (char *)realloc(tmp, 20 * sizeof(char)); - semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); - strcat(tmp, "_realloc"); - } - - semphrTakeConditional(useMutexOnFree, xSemaphoreFree); - free(tmp); - semphrGiveConditional(useMutexOnFree, xSemaphoreFree); - - delay(DELAY); - } -} - -void loop5(void *pvPramaters) -{ - (void) pvPramaters; - while (1) - { - _loop[5]++; - char *tmp; - - semphrTakeConditional(useMutexOnMalloc, xSemaphoreMalloc); - tmp = (char *)malloc(10 * sizeof(char)); - semphrGiveConditional(useMutexOnMalloc, xSemaphoreMalloc); - - strcpy(tmp, "asd"); - - if (tryRealloc) - { - semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); - tmp = (char *)realloc(tmp, 20 * sizeof(char)); - semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); - strcat(tmp, "_realloc"); - } - - semphrTakeConditional(useMutexOnFree, xSemaphoreFree); - free(tmp); - semphrGiveConditional(useMutexOnFree, xSemaphoreFree); - - delay(DELAY); - } -} - -void loop6(void *pvPramaters) -{ - (void) pvPramaters; - while (1) - { - _loop[6]++; - char *tmp; - - semphrTakeConditional(useMutexOnMalloc, xSemaphoreMalloc); - tmp = (char *)malloc(10 * sizeof(char)); - semphrGiveConditional(useMutexOnMalloc, xSemaphoreMalloc); - - strcpy(tmp, "lol"); - - if (tryRealloc) - { - semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); - tmp = (char *)realloc(tmp, 20 * sizeof(char)); - semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); - strcat(tmp, "_realloc"); - } - - semphrTakeConditional(useMutexOnFree, xSemaphoreFree); - free(tmp); - semphrGiveConditional(useMutexOnFree, xSemaphoreFree); - - delay(DELAY); - } -} - -void loop7(void *pvPramaters) -{ - (void) pvPramaters; - while (1) - { - _loop[7]++; - char *tmp; - - semphrTakeConditional(useMutexOnMalloc, xSemaphoreMalloc); - tmp = (char *)malloc(10 * sizeof(char)); - semphrGiveConditional(useMutexOnMalloc, xSemaphoreMalloc); - - strcpy(tmp, "yay"); - - if (tryRealloc) - { - semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); - tmp = (char *)realloc(tmp, 20 * sizeof(char)); - semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); - strcat(tmp, "_realloc"); - } - - semphrTakeConditional(useMutexOnFree, xSemaphoreFree); - free(tmp); - semphrGiveConditional(useMutexOnFree, xSemaphoreFree); - - delay(DELAY); - } -} - -void semphrTakeConditional(bool useMutexOn, SemaphoreHandle_t xSemaphore) -{ - if (useMutexOn) - { - xSemaphoreTake(xSemaphore, TickType_t(portMAX_DELAY)); - } -} - -void semphrGiveConditional(bool useMutexOn, SemaphoreHandle_t xSemaphore) -{ - if (useMutexOn) - { - xSemaphoreGive(xSemaphore); - } -} diff --git a/libraries/FreeRTOS/tests/switching/switching.ino b/libraries/FreeRTOS/tests/switching/switching.ino deleted file mode 100644 index 44aa5a142..000000000 --- a/libraries/FreeRTOS/tests/switching/switching.ino +++ /dev/null @@ -1,57 +0,0 @@ -// Released to the public domain -#include -#include -#include -#define STACK_SIZE 512 -#define CORE_0 (1 << 0) -#define CORE_1 (1 << 1) - -std::map eTaskStateName { {eReady, "Ready"}, { eRunning, "Running" }, {eBlocked, "Blocked"}, {eSuspended, "Suspended"}, {eDeleted, "Deleted"} }; -void ps() { - int tasks = uxTaskGetNumberOfTasks(); - TaskStatus_t *pxTaskStatusArray = new TaskStatus_t[tasks]; - unsigned long runtime; - tasks = uxTaskGetSystemState( pxTaskStatusArray, tasks, &runtime ); - Serial.printf("# Tasks: %d\n", tasks); - Serial.printf("%-3s %-16s %-10s %s %s\n", "ID", "NAME", "STATE", "PRIO", "CYCLES"); - for (int i = 0; i < tasks; i++) { - Serial.printf("%2d: %-16s %-10s %4d %lu\n", i, pxTaskStatusArray[i].pcTaskName, eTaskStateName[pxTaskStatusArray[i].eCurrentState], (int)pxTaskStatusArray[i].uxCurrentPriority, pxTaskStatusArray[i].ulRunTimeCounter); - } - delete[] pxTaskStatusArray; -} - -static TaskHandle_t l[16]; - -void loop() { - ps(); - delay(1000); -} - -#define LOOP(z) \ -void loop##z(void *params) {\ - (void) params;\ - while (true) {\ - srand(z);\ - int sum = 0;\ - for (int i = 0; i < 500000; i++) sum+= rand();\ - Serial.printf("L%d: %08x\n", z, sum);\ - delay(1000 + z * 10);\ - }\ -} - -LOOP(0); -LOOP(1); -LOOP(2); -LOOP(3); - - -void setup() { - xTaskCreate(loop0, "loop0", STACK_SIZE, NULL, 1, &l[0]); - vTaskCoreAffinitySet(l[0], CORE_0); -// xTaskCreate(loop1, "loop1", STACK_SIZE, NULL, 1, &l[1]); -// vTaskCoreAffinitySet(l[1], CORE_0); -// xTaskCreate(loop2, "loop2", STACK_SIZE, NULL, 1, &l[2]); -// vTaskCoreAffinitySet(l[2], CORE_0); -// xTaskCreate(loop3, "loop3", STACK_SIZE, NULL, 1, &l[3]); -// vTaskCoreAffinitySet(l[3], CORE_1); -} diff --git a/libraries/LittleFS/src/LittleFS.cpp b/libraries/LittleFS/src/LittleFS.cpp index 1aa7ab8e2..ca9f08368 100644 --- a/libraries/LittleFS/src/LittleFS.cpp +++ b/libraries/LittleFS/src/LittleFS.cpp @@ -182,16 +182,16 @@ int LittleFSImpl::lfs_flash_prog(const struct lfs_config *c, lfs_block_t block, lfs_off_t off, const void *buffer, lfs_size_t size) { LittleFSImpl *me = reinterpret_cast(c->context); uint8_t *addr = me->_start + (block * me->_blockSize) + off; - if (!__isFreeRTOS) { - noInterrupts(); - } +#ifndef __FREERTOS + noInterrupts(); +#endif rp2040.idleOtherCore(); // Serial.printf("WRITE: %p, $d\n", (intptr_t)addr - (intptr_t)XIP_BASE, size); flash_range_program((intptr_t)addr - (intptr_t)XIP_BASE, (const uint8_t *)buffer, size); rp2040.resumeOtherCore(); - if (!__isFreeRTOS) { - interrupts(); - } +#ifndef __FREERTOS + interrupts(); +#endif return 0; } @@ -199,15 +199,15 @@ int LittleFSImpl::lfs_flash_erase(const struct lfs_config *c, lfs_block_t block) LittleFSImpl *me = reinterpret_cast(c->context); uint8_t *addr = me->_start + (block * me->_blockSize); // Serial.printf("ERASE: %p, %d\n", (intptr_t)addr - (intptr_t)XIP_BASE, me->_blockSize); - if (!__isFreeRTOS) { - noInterrupts(); - } +#ifndef __FREERTOS + noInterrupts(); +#endif rp2040.idleOtherCore(); flash_range_erase((intptr_t)addr - (intptr_t)XIP_BASE, me->_blockSize); rp2040.resumeOtherCore(); - if (!__isFreeRTOS) { - interrupts(); - } +#ifndef __FREERTOS + interrupts(); +#endif return 0; } diff --git a/libraries/Updater/src/Updater.cpp b/libraries/Updater/src/Updater.cpp index 4281e1909..cef70c479 100644 --- a/libraries/Updater/src/Updater.cpp +++ b/libraries/Updater/src/Updater.cpp @@ -298,16 +298,16 @@ bool UpdaterClass::_writeBuffer() { return false; } } else { - if (!__isFreeRTOS) { - noInterrupts(); - } +#ifndef __FREERTOS + noInterrupts(); +#endif rp2040.idleOtherCore(); flash_range_erase((intptr_t)_currentAddress - (intptr_t)XIP_BASE, 4096); flash_range_program((intptr_t)_currentAddress - (intptr_t)XIP_BASE, _buffer, 4096); rp2040.resumeOtherCore(); - if (!__isFreeRTOS) { - interrupts(); - } +#ifndef __FREERTOS + interrupts(); +#endif } if (!_verify) { _md5.add(_buffer, _bufferLen); diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp index ebb58793c..795ef9af6 100644 --- a/libraries/WiFi/src/WiFiClient.cpp +++ b/libraries/WiFi/src/WiFiClient.cpp @@ -57,7 +57,12 @@ bool WiFiClient::getDefaultSync() { template<> WiFiClient* SList::_s_first = 0; - +#ifdef __FREERTOS +template<> +SemaphoreHandle_t SList::_s_first_lock = 0; +template<> +bool SList::_s_first_lock_created = false; +#endif WiFiClient::WiFiClient() : _client(0), _owned(0) { diff --git a/libraries/WiFi/src/WiFiServer.cpp b/libraries/WiFi/src/WiFiServer.cpp index 8ed7c1fe6..3fb3d3fa5 100644 --- a/libraries/WiFi/src/WiFiServer.cpp +++ b/libraries/WiFi/src/WiFiServer.cpp @@ -77,8 +77,8 @@ void WiFiServer::begin(uint16_t port, uint8_t backlog) { } _listen_pcb = listen_pcb; _port = _listen_pcb->local_port; - tcp_accept(listen_pcb, &WiFiServer::_s_accept); tcp_arg(listen_pcb, (void*) this); + tcp_accept(listen_pcb, &WiFiServer::_s_accept); } void WiFiServer::setNoDelay(bool nodelay) { @@ -215,9 +215,15 @@ void WiFiServer::_discard(ClientContext* client) { } err_t WiFiServer::_s_accept(void *arg, tcp_pcb* newpcb, err_t err) { - return reinterpret_cast(arg)->_accept(newpcb, err); + if (arg) { + return reinterpret_cast(arg)->_accept(newpcb, err); + } else { + return ERR_OK; + } } void WiFiServer::_s_discard(void* server, ClientContext* ctx) { - reinterpret_cast(server)->_discard(ctx); + if (server) { + reinterpret_cast(server)->_discard(ctx); + } } diff --git a/libraries/WiFi/src/WiFiUdp.cpp b/libraries/WiFi/src/WiFiUdp.cpp index 72f6b74f8..8d8aa19b7 100644 --- a/libraries/WiFi/src/WiFiUdp.cpp +++ b/libraries/WiFi/src/WiFiUdp.cpp @@ -36,6 +36,13 @@ template<> WiFiUDP* SList::_s_first = 0; +#ifdef __FREERTOS +template<> +SemaphoreHandle_t SList::_s_first_lock = 0; +template<> +bool SList::_s_first_lock_created = false; +#endif + /* Constructor */ WiFiUDP::WiFiUDP() : _ctx(0), _multicast(false), _dirty(false) { diff --git a/libraries/WiFi/src/include/slist.h b/libraries/WiFi/src/include/slist.h index ba49ec52f..c38cfa837 100644 --- a/libraries/WiFi/src/include/slist.h +++ b/libraries/WiFi/src/include/slist.h @@ -1,6 +1,11 @@ #ifndef SLIST_H #define SLIST_H +#ifdef __FREERTOS +#include "FreeRTOS.h" +#include "semphr.h" +#endif + template class SList { public: @@ -9,15 +14,36 @@ class SList { protected: static void _add(T* self) { +#ifdef __FREERTOS + if (!_s_first_lock_created) { + _s_first_lock_created = true; + _s_first_lock = xSemaphoreCreateMutex(); + } + xSemaphoreTake(_s_first_lock, portMAX_DELAY); +#endif T* tmp = _s_first; _s_first = self; self->_next = tmp; +#ifdef __FREERTOS + xSemaphoreGive(_s_first_lock); +#endif } static void _remove(T* self) { +#ifdef __FREERTOS + if (!_s_first_lock_created) { + _s_first_lock_created = true; + _s_first_lock = xSemaphoreCreateMutex(); + } + xSemaphoreTake(_s_first_lock, portMAX_DELAY); +#endif + if (_s_first == self) { _s_first = self->_next; self->_next = 0; +#ifdef __FREERTOS + xSemaphoreGive(_s_first_lock); +#endif return; } @@ -25,11 +51,21 @@ class SList { if (prev->_next == self) { prev->_next = self->_next; self->_next = 0; +#ifdef __FREERTOS + xSemaphoreGive(_s_first_lock); +#endif return; } } +#ifdef __FREERTOS + xSemaphoreGive(_s_first_lock); +#endif } +#ifdef __FREERTOS + static SemaphoreHandle_t _s_first_lock; + static bool _s_first_lock_created; +#endif static T* _s_first; T* _next; }; diff --git a/libraries/lwIP_Ethernet/src/LwipEthernet.cpp b/libraries/lwIP_Ethernet/src/LwipEthernet.cpp index 6e3593959..3e92ac2dc 100644 --- a/libraries/lwIP_Ethernet/src/LwipEthernet.cpp +++ b/libraries/lwIP_Ethernet/src/LwipEthernet.cpp @@ -19,28 +19,52 @@ */ #include +#include #include #include #include #if defined(PICO_CYW43_SUPPORTED) #include #endif -#include -#include -#include -bool __ethernetContextInitted = false; +#if defined(__FREERTOS) +#include +#include "FreeRTOS.h" +#include "task.h" +#include "semphr.h" +static SemaphoreHandle_t _lwip_ethernet_mutex; +#else +#include +static async_context_threadsafe_background_t lwip_ethernet_async_context; +static async_context_t *lwip_ethernet_init_default_async_context(void) { + async_context_threadsafe_background_config_t config = async_context_threadsafe_background_default_config(); + if (async_context_threadsafe_background_init(&lwip_ethernet_async_context, &config)) { + return &lwip_ethernet_async_context.core; + } + return NULL; +} // Async context that pumps the ethernet controllers -static async_context_threadsafe_background_t lwip_ethernet_async_context_threadsafe_background; static async_when_pending_worker_t always_pending_update_timeout_worker; static async_at_time_worker_t ethernet_timeout_worker; static async_context_t *_context = nullptr; +#endif + +#include +#include + +bool __ethernetContextInitted = false; + + // Theoretically support multiple interfaces static std::map> _handlePacketList; void ethernet_arch_lwip_begin() { + __startEthernetContext(); +#ifdef __FREERTOS + xSemaphoreTake(_lwip_ethernet_mutex, portMAX_DELAY); +#else #if defined(PICO_CYW43_SUPPORTED) if (rp2040.isPicoW()) { cyw43_arch_lwip_begin(); @@ -48,9 +72,13 @@ void ethernet_arch_lwip_begin() { } #endif async_context_acquire_lock_blocking(_context); +#endif } void ethernet_arch_lwip_end() { +#ifdef __FREERTOS + xSemaphoreGive(_lwip_ethernet_mutex); +#else #if defined(PICO_CYW43_SUPPORTED) if (rp2040.isPicoW()) { cyw43_arch_lwip_end(); @@ -58,6 +86,7 @@ void ethernet_arch_lwip_end() { } #endif async_context_release_lock(_context); +#endif } int __addEthernetPacketHandler(std::function _packetHandler) { @@ -169,16 +198,39 @@ int hostByName(const char* aHostname, IPAddress& aResult, int timeout_ms) { return 0; } -static async_context_t *lwip_ethernet_init_default_async_context(void) { - async_context_threadsafe_background_config_t config = async_context_threadsafe_background_default_config(); - if (async_context_threadsafe_background_init(&lwip_ethernet_async_context_threadsafe_background, &config)) { - return &lwip_ethernet_async_context_threadsafe_background.core; +uint32_t __ethernet_timeout_reached_calls = 0; +static uint32_t _pollingPeriod = 20; + +// We have a background pump which calls sys_check_timeouts on a periodic basis +// and polls all Ethernet interfaces +#ifdef __FREERTOS +static TaskHandle_t _ethernetTask;; + +static void stage2(void *cbData) { + (void) cbData; + ethernet_arch_lwip_gpio_mask(); + // Scan the installed Ethernet drivers + for (auto handlePacket : _handlePacketList) { + // Note that each NIC needs to use its own mutex to ensure LWIP isn't doing something with it at the time we want to poll + handlePacket.second(); } - return NULL; + ethernet_arch_lwip_gpio_unmask(); + // Do LWIP stuff as needed + sys_check_timeouts(); } -uint32_t __ethernet_timeout_reached_calls = 0; -static uint32_t _pollingPeriod = 20; +static void ethernetTask(void *param) { + (void) param; + while (true) { + uint32_t sleep_ms = sys_timeouts_sleeptime(); + if (sleep_ms > _pollingPeriod) { + sleep_ms = _pollingPeriod; + } + vTaskDelay(sleep_ms / portTICK_PERIOD_MS); + lwip_callback(stage2, nullptr); + } +} +#else // This will only be called under the protection of the async context mutex, so no re-entrancy checks needed static void ethernet_timeout_reached(__unused async_context_t *context, __unused async_at_time_worker_t *worker) { assert(worker == ðernet_timeout_worker); @@ -186,14 +238,8 @@ static void ethernet_timeout_reached(__unused async_context_t *context, __unused ethernet_arch_lwip_gpio_mask(); // Ensure non-polled devices won't interrupt us for (auto handlePacket : _handlePacketList) { handlePacket.second(); - } -#if defined(PICO_CYW43_SUPPORTED) - if (!rp2040.isPicoW()) { sys_check_timeouts(); } -#else - sys_check_timeouts(); -#endif ethernet_arch_lwip_gpio_unmask(); } @@ -202,11 +248,17 @@ static void update_next_timeout(async_context_t *context, async_when_pending_wor worker->work_pending = true; async_context_add_at_time_worker_in_ms(context, ðernet_timeout_worker, _pollingPeriod); } +#endif + void __startEthernetContext() { if (__ethernetContextInitted) { return; } +#ifdef __FREERTOS + _lwip_ethernet_mutex = xSemaphoreCreateMutex(); + xTaskCreate(ethernetTask, "EthPoll", 256, nullptr, 1, &_ethernetTask); +#else #if defined(PICO_CYW43_SUPPORTED) if (rp2040.isPicoW()) { _context = cyw43_arch_async_context(); @@ -220,6 +272,7 @@ void __startEthernetContext() { always_pending_update_timeout_worker.work_pending = true; always_pending_update_timeout_worker.do_work = update_next_timeout; async_context_add_when_pending_worker(_context, &always_pending_update_timeout_worker); +#endif __ethernetContextInitted = true; } diff --git a/libraries/lwIP_Ethernet/src/LwipIntfDev.h b/libraries/lwIP_Ethernet/src/LwipIntfDev.h index 88fade569..8a8ce2ecf 100644 --- a/libraries/lwIP_Ethernet/src/LwipIntfDev.h +++ b/libraries/lwIP_Ethernet/src/LwipIntfDev.h @@ -46,6 +46,11 @@ #include "LwipEthernet.h" #include "wl_definitions.h" +#ifdef __FREERTOS +#include "FreeRTOS.h" +#include "semphr.h" +#endif + #ifndef DEFAULT_MTU #define DEFAULT_MTU 1500 #endif @@ -69,12 +74,18 @@ enum EthernetLinkStatus { LinkOFF }; +#include + + template class LwipIntfDev: public LwipIntf, public RawDev { public: LwipIntfDev(int8_t cs = SS, SPIClass& spi = SPI, int8_t intr = -1) : RawDev(cs, spi, intr), _spiUnit(spi), _mtu(DEFAULT_MTU), _intrPin(intr), _started(false), _default(false) { memset(&_netif, 0, sizeof(_netif)); +#ifdef __FREERTOS + _hwMutex = xSemaphoreCreateMutex(); +#endif } //The argument order for ESP is not the same as for Arduino. However, there is compatibility code under the hood @@ -181,6 +192,10 @@ class LwipIntfDev: public LwipIntf, public RawDev { public: // called on a regular basis or on interrupt err_t handlePackets(); +#ifdef __FREERTOS + SemaphoreHandle_t _hwMutex; +#endif + uint8_t _irqBuffer[LWIP_CALLBACK_BUFFER_SIZE]; protected: // members SPIClass& _spiUnit; @@ -205,6 +220,8 @@ class LwipIntfDev: public LwipIntf, public RawDev { uint32_t _packetsReceived = 0; uint32_t _packetsSent = 0; + + static void _lwipCallback(void *param); }; @@ -462,12 +479,23 @@ void LwipIntfDev::end() { } template -void LwipIntfDev::_irq(void *param) { +void LwipIntfDev::_lwipCallback(void *param) { LwipIntfDev *d = static_cast(param); - ethernet_arch_lwip_begin(); d->handlePackets(); sys_check_timeouts(); - ethernet_arch_lwip_end(); + ethernet_arch_lwip_gpio_unmask(); +} + +template +void LwipIntfDev::_irq(void *param) { + LwipIntfDev *d = static_cast(param); + ethernet_arch_lwip_gpio_mask(); // Disable other IRQs until we're done processing this one + lwip_callback(_lwipCallback, param, (void *)d->_irqBuffer); + //ethernet_arch_lwip_begin(); + // d->handlePackets(); + // sys_check_timeouts(); + //ethernet_arch_lwip_end(); + } template @@ -483,8 +511,21 @@ EthernetLinkStatus LwipIntfDev::linkStatus() { template err_t LwipIntfDev::linkoutput_s(netif* netif, struct pbuf* pbuf) { LwipIntfDev* lid = (LwipIntfDev*)netif->state; + +#ifdef __FREERTOS + xSemaphoreTake(lid->_hwMutex, portMAX_DELAY); +#else ethernet_arch_lwip_begin(); +#endif + uint16_t len = lid->sendFrame((const uint8_t*)pbuf->payload, pbuf->len); + +#ifdef __FREERTOS + xSemaphoreGive(lid->_hwMutex); +#else + ethernet_arch_lwip_end(); +#endif + lid->_packetsSent++; #if PHY_HAS_CAPTURE if (phy_capture) { @@ -492,7 +533,6 @@ err_t LwipIntfDev::linkoutput_s(netif* netif, struct pbuf* pbuf) { /*success*/ len == pbuf->len); } #endif - ethernet_arch_lwip_end(); return len == pbuf->len ? ERR_OK : ERR_MEM; } @@ -572,8 +612,14 @@ err_t LwipIntfDev::handlePackets() { return ERR_OK; } +#ifdef __FREERTOS + xSemaphoreTake(_hwMutex, portMAX_DELAY); +#endif uint16_t tot_len = RawDev::readFrameSize(); if (!tot_len) { +#ifdef __FREERTOS + xSemaphoreGive(_hwMutex); +#endif return ERR_OK; } @@ -591,10 +637,16 @@ err_t LwipIntfDev::handlePackets() { pbuf_free(pbuf); } RawDev::discardFrame(tot_len); +#ifdef __FREERTOS + xSemaphoreGive(_hwMutex); +#endif return ERR_BUF; } uint16_t len = RawDev::readFrameData((uint8_t*)pbuf->payload, tot_len); +#ifdef __FREERTOS + xSemaphoreGive(_hwMutex); +#endif if (len != tot_len) { // tot_len is given by readFrameSize() // and is supposed to be honoured by readFrameData() @@ -604,7 +656,9 @@ err_t LwipIntfDev::handlePackets() { } _packetsReceived++; - + //printf("recv pkt %d: ", tot_len); + //for (int i=0; i < tot_len; i++) printf("%02x ", ((uint8_t*)pbuf->payload)[i]); + //printf("\n"); err_t err = _netif.input(pbuf, &_netif); #if PHY_HAS_CAPTURE diff --git a/libraries/FreeRTOS/examples/Multicore-FreeRTOS/Multicore-FreeRTOS.ino b/libraries/rp2040/examples/FreeRTOS-Multicore/FreeRTOS-Multicore.ino similarity index 94% rename from libraries/FreeRTOS/examples/Multicore-FreeRTOS/Multicore-FreeRTOS.ino rename to libraries/rp2040/examples/FreeRTOS-Multicore/FreeRTOS-Multicore.ino index c4cd6329c..c0a671111 100644 --- a/libraries/FreeRTOS/examples/Multicore-FreeRTOS/Multicore-FreeRTOS.ino +++ b/libraries/rp2040/examples/FreeRTOS-Multicore/FreeRTOS-Multicore.ino @@ -26,10 +26,10 @@ void ps() { int tasks = uxTaskGetNumberOfTasks(); TaskStatus_t *pxTaskStatusArray = new TaskStatus_t[tasks]; unsigned long runtime; - tasks = uxTaskGetSystemState( pxTaskStatusArray, tasks, &runtime ); + tasks = uxTaskGetSystemState(pxTaskStatusArray, tasks, &runtime); Serial.printf("# Tasks: %d\n", tasks); Serial.println("ID, NAME, STATE, PRIO, CYCLES"); - for (int i=0; i < tasks; i++) { + for (int i = 0; i < tasks; i++) { Serial.printf("%d: %-16s %-10s %d %lu\n", i, pxTaskStatusArray[i].pcTaskName, eTaskStateName[pxTaskStatusArray[i].eCurrentState], (int)pxTaskStatusArray[i].uxCurrentPriority, pxTaskStatusArray[i].ulRunTimeCounter); } delete[] pxTaskStatusArray; @@ -80,7 +80,7 @@ void loop1() { val++; if (++x < 10) { EEPROM.begin(512); - EEPROM.write(0,x); + EEPROM.write(0, x); EEPROM.commit(); } delay(1000); diff --git a/libraries/FreeRTOS/examples/StaticMulticore-FreeRTOS/StaticMulticore-FreeRTOS.ino b/libraries/rp2040/examples/FreeRTOS-StaticMulticore/FreeRTOS-StaticMulticore.ino similarity index 77% rename from libraries/FreeRTOS/examples/StaticMulticore-FreeRTOS/StaticMulticore-FreeRTOS.ino rename to libraries/rp2040/examples/FreeRTOS-StaticMulticore/FreeRTOS-StaticMulticore.ino index 2e8cef17d..89e07cdac 100644 --- a/libraries/FreeRTOS/examples/StaticMulticore-FreeRTOS/StaticMulticore-FreeRTOS.ino +++ b/libraries/rp2040/examples/FreeRTOS-StaticMulticore/FreeRTOS-StaticMulticore.ino @@ -1,12 +1,12 @@ /* The code in this example is mostly derived from the official FreeRTOS - * code examples. - * - * For more information on static allocation and to read the original - * code visit the following links: - * https://www.freertos.org/Static_Vs_Dynamic_Memory_Allocation.html - * https://www.freertos.org/xTaskCreateStatic.html - * https://www.freertos.org/xSemaphoreCreateMutexStatic.html - */ + code examples. + + For more information on static allocation and to read the original + code visit the following links: + https://www.freertos.org/Static_Vs_Dynamic_Memory_Allocation.html + https://www.freertos.org/xTaskCreateStatic.html + https://www.freertos.org/xSemaphoreCreateMutexStatic.html +*/ #include #include @@ -44,7 +44,7 @@ void setup() { /* Create a mutex semaphore without using any dynamic memory allocation. The mutex's data structures will be saved into the xMutexBuffer variable. */ - xSemaphore = xSemaphoreCreateMutexStatic( &xMutexBuffer ); + xSemaphore = xSemaphoreCreateMutexStatic(&xMutexBuffer); ledOnTask = xTaskCreateStatic(led_ON, "led_ON", STACK_SIZE, NULL, configMAX_PRIORITIES - 1, xStack_A, &xTaskBuffer_A); #if defined(PICO_CYW43_SUPPORTED) @@ -56,34 +56,30 @@ void setup() { // The PicoW WiFi chip controls the LED, and only core 0 can make calls to it safely vTaskCoreAffinitySet(ledOffTask, 1 << 0); #endif - } +} -void led_ON(void *pvParameters) -{ +void led_ON(void *pvParameters) { (void) pvParameters; delay(100); - while (1) - { - xSemaphoreTake( xSemaphore, ( TickType_t ) portMAX_DELAY ); + while (1) { + xSemaphoreTake(xSemaphore, (TickType_t) portMAX_DELAY); SERIAL_PORT.println("LED ON!"); digitalWrite(LED_BUILTIN, HIGH); delay(BLINK_ON_TIME); - xSemaphoreGive( xSemaphore ); + xSemaphoreGive(xSemaphore); delay(1); } } -void led_OFF(void *pvParameters) -{ +void led_OFF(void *pvParameters) { (void) pvParameters; delay(100); - while (1) - { - xSemaphoreTake( xSemaphore, ( TickType_t ) portMAX_DELAY ); + while (1) { + xSemaphoreTake(xSemaphore, (TickType_t) portMAX_DELAY); SERIAL_PORT.println("LED OFF!"); digitalWrite(LED_BUILTIN, LOW); delay(BLINK_OFF_TIME); - xSemaphoreGive( xSemaphore ); + xSemaphoreGive(xSemaphore); delay(1); } } diff --git a/libraries/FreeRTOS/examples/Stress.ino b/libraries/rp2040/examples/FreeRTOS-Stress/FreeRTOS-Stress.ino similarity index 91% rename from libraries/FreeRTOS/examples/Stress.ino rename to libraries/rp2040/examples/FreeRTOS-Stress/FreeRTOS-Stress.ino index 6c9414bc2..9e307a7e8 100644 --- a/libraries/FreeRTOS/examples/Stress.ino +++ b/libraries/rp2040/examples/FreeRTOS-Stress/FreeRTOS-Stress.ino @@ -56,8 +56,7 @@ void loop5(void *pvPramaters); void loop6(void *pvPramaters); void loop7(void *pvPramaters); -void setup() -{ +void setup() { pinMode(LED_BUILTIN, OUTPUT); xSemaphoreMalloc = xSemaphoreCreateMutex(); @@ -79,24 +78,22 @@ void setup() } static int _loop[8]; -void loop() -{ - while (1) - { +void loop() { + while (1) { _loop[0]++; digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); - for (int i=0; i<8; i++) Serial.printf("%d ", _loop[i]); + for (int i = 0; i < 8; i++) { + Serial.printf("%d ", _loop[i]); + } Serial.println(""); } } -void loop1() -{ - while (1) - { +void loop1() { + while (1) { _loop[1]++; char *tmp; @@ -106,8 +103,7 @@ void loop1() strcpy(tmp, "foo"); - if (tryRealloc) - { + if (tryRealloc) { semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); tmp = (char *)realloc(tmp, 20 * sizeof(char)); semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); @@ -122,11 +118,9 @@ void loop1() } } -void loop2(void *pvPramaters) -{ +void loop2(void *pvPramaters) { (void) pvPramaters; - while (1) - { + while (1) { _loop[2]++; char *tmp; @@ -136,8 +130,7 @@ void loop2(void *pvPramaters) strcpy(tmp, "bar"); - if (tryRealloc) - { + if (tryRealloc) { semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); tmp = (char *)realloc(tmp, 20 * sizeof(char)); semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); @@ -152,11 +145,9 @@ void loop2(void *pvPramaters) } } -void loop3(void *pvPramaters) -{ +void loop3(void *pvPramaters) { (void) pvPramaters; - while (1) - { + while (1) { _loop[3]++; char *tmp; @@ -166,8 +157,7 @@ void loop3(void *pvPramaters) strcpy(tmp, "yeah"); - if (tryRealloc) - { + if (tryRealloc) { semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); tmp = (char *)realloc(tmp, 20 * sizeof(char)); semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); @@ -182,11 +172,9 @@ void loop3(void *pvPramaters) } } -void loop4(void *pvPramaters) -{ +void loop4(void *pvPramaters) { (void) pvPramaters; - while (1) - { + while (1) { _loop[4]++; char *tmp; @@ -196,8 +184,7 @@ void loop4(void *pvPramaters) strcpy(tmp, "baz"); - if (tryRealloc) - { + if (tryRealloc) { semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); tmp = (char *)realloc(tmp, 20 * sizeof(char)); semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); @@ -212,11 +199,9 @@ void loop4(void *pvPramaters) } } -void loop5(void *pvPramaters) -{ +void loop5(void *pvPramaters) { (void) pvPramaters; - while (1) - { + while (1) { _loop[5]++; char *tmp; @@ -226,8 +211,7 @@ void loop5(void *pvPramaters) strcpy(tmp, "asd"); - if (tryRealloc) - { + if (tryRealloc) { semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); tmp = (char *)realloc(tmp, 20 * sizeof(char)); semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); @@ -242,11 +226,9 @@ void loop5(void *pvPramaters) } } -void loop6(void *pvPramaters) -{ +void loop6(void *pvPramaters) { (void) pvPramaters; - while (1) - { + while (1) { _loop[6]++; char *tmp; @@ -256,8 +238,7 @@ void loop6(void *pvPramaters) strcpy(tmp, "lol"); - if (tryRealloc) - { + if (tryRealloc) { semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); tmp = (char *)realloc(tmp, 20 * sizeof(char)); semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); @@ -272,11 +253,9 @@ void loop6(void *pvPramaters) } } -void loop7(void *pvPramaters) -{ +void loop7(void *pvPramaters) { (void) pvPramaters; - while (1) - { + while (1) { _loop[7]++; char *tmp; @@ -286,8 +265,7 @@ void loop7(void *pvPramaters) strcpy(tmp, "yay"); - if (tryRealloc) - { + if (tryRealloc) { semphrTakeConditional(useMutexOnRealloc, xSemaphoreRealloc); tmp = (char *)realloc(tmp, 20 * sizeof(char)); semphrGiveConditional(useMutexOnRealloc, xSemaphoreRealloc); @@ -302,18 +280,14 @@ void loop7(void *pvPramaters) } } -void semphrTakeConditional(bool useMutexOn, SemaphoreHandle_t xSemaphore) -{ - if (useMutexOn) - { +void semphrTakeConditional(bool useMutexOn, SemaphoreHandle_t xSemaphore) { + if (useMutexOn) { xSemaphoreTake(xSemaphore, TickType_t(portMAX_DELAY)); } } -void semphrGiveConditional(bool useMutexOn, SemaphoreHandle_t xSemaphore) -{ - if (useMutexOn) - { +void semphrGiveConditional(bool useMutexOn, SemaphoreHandle_t xSemaphore) { + if (useMutexOn) { xSemaphoreGive(xSemaphore); } } diff --git a/libraries/rp2040/examples/PSRAMTest/PSRAMTest.ino b/libraries/rp2040/examples/PSRAMTest/PSRAMTest.ino new file mode 100644 index 000000000..ed11ab410 --- /dev/null +++ b/libraries/rp2040/examples/PSRAMTest/PSRAMTest.ino @@ -0,0 +1,64 @@ +/* + PSRAM Test + + This section of code tests the onboard ram of RP2350 based boards with external + PSRAM. + + This example code is in the public domain. + +*/ + +#if !defined(RP2350_PSRAM_CS) + +void setup() { + Serial.println("This example needs an RP2350 with PSRAM attached"); +} + +void loop() { +} + +#else + +#define CHUNK_SIZE 131072 +uint8_t tmp[CHUNK_SIZE]; +uint8_t mems[1024 * 1024 * 8] PSRAM; + +// the setup function runs once when you press reset or power the board +void setup() { + // initialize digital pin LED_BUILTIN as an output. + pinMode(LED_BUILTIN, OUTPUT); + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.printf("Memory size: %d\r\n", rp2040.getPSRAMSize()); +} + +// the loop function runs over and over again forever +void loop() { + int i; + static int cntr = 1; + + uint8_t *mem = mems; + Serial.printf("%05d: Filling %d memory locations @0x%p with random values and verifying in %d byte chunks.\r\n", cntr++, rp2040.getPSRAMSize(), mem, CHUNK_SIZE); + + for (size_t m = 0; m < (rp2040.getPSRAMSize() / CHUNK_SIZE); m++) { + for (i = 0; i < CHUNK_SIZE; i++) { + tmp[i] = (char)random(0, 255); + mem[i] = tmp[i]; + } + + for (i = 0; i < CHUNK_SIZE; i++) { + if (mem[i] != tmp[i]) { + Serial.printf("Memory error @0x%p(%d), was 0x%02x, should be 0x%02x\n", mem, i, *mem, tmp[i]); + delay(10); + } + } + Serial.write('.'); + Serial.flush(); + mem += CHUNK_SIZE; + } + Serial.printf("\nDone, testing %d bytes again\r\n", rp2040.getPSRAMSize()); +} + +#endif // RAM_CHIP_SELECT diff --git a/platform.txt b/platform.txt index abc915e4b..0a60bf078 100644 --- a/platform.txt +++ b/platform.txt @@ -51,7 +51,7 @@ compiler.warning_flags.all=-Wall -Wextra -Werror=return-type -Wno-psabi -Wno-typ 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.sdfatdefines} {build.variantdefines} -DARDUINO_VARIANT="{build.variant}" -DPICO_FLASH_SIZE_BYTES={build.flash_total} "@{runtime.platform.path}/lib/platform_def.txt" "@{runtime.platform.path}/lib/{build.chip}/platform_def.txt" +compiler.defines={build.os} {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/platform_def.txt" "@{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" @@ -105,6 +105,7 @@ build.usbstack_flags= build.flags.libstdcpp=-lstdc++ build.flags.exceptions=-fno-exceptions build.flags.stackprotect= +build.os= build.libpico=libpico.a build.libpicow=liblwip.a build.boot2=boot2_generic_03h_4_padded_checksum diff --git a/tools/build.py b/tools/build.py index eeb4cf051..0197096a2 100755 --- a/tools/build.py +++ b/tools/build.py @@ -74,6 +74,10 @@ def compile(tmp_dir, sketch, cache, tools_dir, hardware_dir, ide_path, f, args): fqbn = fqbn + ",ipbtstack=ipv4btcble" if '/Profiling' in sketch: fqbn = fqbn + ",profile=Enabled" + if '/FreeRTOS' in sketch: + fqbn = fqbn + ",os=freertos" + if '/FreeRTOS' in sketch: + fqbn = fqbn + ",os=freertos" cmd += [fqbn] cmd += ['-built-in-libraries', ide_path + '/libraries'] cmd += ['-ide-version=10607'] diff --git a/tools/libpico/CMakeLists.txt b/tools/libpico/CMakeLists.txt index c4eaf8a4c..5086f00eb 100644 --- a/tools/libpico/CMakeLists.txt +++ b/tools/libpico/CMakeLists.txt @@ -90,7 +90,7 @@ target_compile_definitions(common-${cpu} INTERFACE LWIP_CHECKSUM_CTRL_PER_NETIF=1 PICO_CYW43_SUPPORTED=1 - PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 +# PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 CFG_TUSB_DEBUG=0 CFG_TUSB_MCU=OPT_MCU_RP2040 CFG_TUSB_OS=OPT_OS_PICO @@ -98,6 +98,7 @@ target_compile_definitions(common-${cpu} INTERFACE LIB_TINYUSB_DEVICE=1 CYW43_WARN=// + PICO_CYW43_ARCH_DEBUG_ENABLED=1 CYW43_PIO_CLOCK_DIV_DYNAMIC=1 CYW43_PIN_WL_DYNAMIC=1 CYW43_DEFAULT_PIN_WL_REG_ON=23u @@ -142,6 +143,8 @@ target_compile_definitions(common-${cpu} INTERFACE LIB_PICO_UNIQUE_ID=1 LIB_PICO_UTIL=1 + PICO_CYW43_ARCH_HEADER=stdint.h + ${xcd} ) @@ -227,10 +230,10 @@ set(picow_link_libraries cyw43_driver cyw43_driver_picow pico_async_context - pico_async_context_threadsafe_background +# pico_async_context_threadsafe_background pico_cyw43_driver pico_cyw43_arch - pico_cyw43_arch_threadsafe_background +# pico_cyw43_arch_threadsafe_background pico_lwip pico_lwip_nosys pico_lwip_sntp diff --git a/tools/makeboards.py b/tools/makeboards.py index 4da6b70aa..f5d29bed5 100755 --- a/tools/makeboards.py +++ b/tools/makeboards.py @@ -33,7 +33,7 @@ def BuildDebugPort(name): def BuildDebugLevel(name): for l in [ ("None", ""), ("Core", "-DDEBUG_RP2040_CORE"), ("SPI", "-DDEBUG_RP2040_SPI"), ("Wire", "-DDEBUG_RP2040_WIRE"), ("Bluetooth", "-DDEBUG_RP2040_BLUETOOTH"), - ("All", "-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH"), ("NDEBUG", "-DNDEBUG") ]: + ("LWIP", "-DLWIP_DEBUG=1"), ("All", "-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH -DLWIP_DEBUG=1"), ("NDEBUG", "-DNDEBUG") ]: print("%s.menu.dbglvl.%s=%s" % (name, l[0], l[0])) print("%s.menu.dbglvl.%s.build.debug_level=%s" % (name, l[0], l[1])) @@ -96,6 +96,12 @@ def BuildOptimize(name): print("%s.menu.opt.%s=%s (%s)%s" % (name, l[0], l[1], l[2], l[3])) print("%s.menu.opt.%s.build.flags.optimize=%s" % (name, l[0], l[2])) +def BuildOS(name): + print("%s.menu.os.none=None" % (name)) + print("%s.menu.os.none.build.os=" % (name)) + print("%s.menu.os.freertos=FreeRTOS SMP" % (name)) + print("%s.menu.os.freertos.build.os=-D__FREERTOS" % (name)) + def BuildProfile(name): print("%s.menu.profile.Disabled=Disabled" % (name)) print("%s.menu.profile.Disabled.build.flags.profile=" % (name)) @@ -293,6 +299,7 @@ def BuildGlobalMenuList(): print("menu.freq=CPU Speed") print("menu.arch=CPU Architecture") print("menu.opt=Optimize") + print("menu.os=Operating System") print("menu.profile=Profiling") print("menu.rtti=RTTI") print("menu.stackprotect=Stack Protector") @@ -376,6 +383,7 @@ def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine, else: BuildFreq(name, 200) BuildOptimize(name) + BuildOS(name) BuildProfile(name) BuildRTTI(name) BuildStackProtect(name)