[nrf52_base] ; Instead of the standard nordicnrf52 platform, we use our fork which has our added variant files platform = # renovate: datasource=custom.pio depName=platformio/nordicnrf52 packageName=platformio/platform/nordicnrf52 platformio/nordicnrf52@10.12.0 extends = arduino_base platform_packages = ; our custom Git version with C++17 support in platform.txt # renovate: datasource=git-refs depName=meshtastic/Adafruit_nRF52_Arduino packageName=meshtastic/Adafruit_nRF52_Arduino gitBranch=master platformio/framework-arduinoadafruitnrf52 @ https://github.com/meshtastic/Adafruit_nRF52_Arduino#0fd295f13203e93df19d578073646ec32f2bf45a ; Don't renovate toolchain-gccarmnoneeabi platformio/toolchain-gccarmnoneeabi@~1.90301.0 extra_scripts = ${env.extra_scripts} extra_scripts/nrf52_extra.py pre:extra_scripts/nrf52_lto.py extra_scripts/nrf52_warm_region.py ; post-link guard: image must end below the 12 KB warm-store raw-flash region at 0xEA000-0xED000 build_type = release build_flags = -include variants/nrf52840/cpp_overrides/lfs_util.h ${arduino_base.build_flags} -Wno-unused-variable -Isrc/platform/nrf52 ; The Arduino loop task runs the entire cooperative OSThread scheduler; the core's stock ; 4 KB (1024-word) stack overflows during BLE first-sync (admin config-apply -> radio ; reconfigure with XEdDSA/satmap/log frames stacked) - SWD-proven on T1000-E: SP driven ; 40 B below pxStack, corrupting adjacent heap -> silent HardFault reset on phone pairing. ; 2048 words = 8 KB, validated on hardware. Value is in WORDS; requires the #ifndef guard ; from meshtastic/Adafruit_nRF52_Arduino#7 (harmless redefinition warning until it merges). -DLOOP_STACK_SZ=2048 -DLFS_NO_ASSERT ; Disable LFS assertions , see https://github.com/meshtastic/firmware/pull/3818 -DMESHTASTIC_EXCLUDE_AUDIO=1 -DMESHTASTIC_EXCLUDE_PAXCOUNTER=1 -DMESHTASTIC_EXCLUDE_PKT_HISTORY_HASH=1 ; drop PacketHistory's 1 KB hash index; O(n) over ~240 records is negligible at LoRa packet rates -DOLEDDISPLAY_REDUCE_MEMORY ; drop the ThingPulse OLED back buffer (~1 KB); TFT variants must -U this (TFTDisplay.cpp needs buffer_back) -Os -std=gnu++17 -flto ; whole-image LTO (~-60KB) on every nrf52840 target; nrf52_lto.py (pre: extra_script) keeps the interrupt handlers out of LTO so they survive -fmerge-all-constants ; fold identical constants image-wide (~0.7KB; same flag stm32 uses) build_unflags = -Ofast -Og -ggdb3 -ggdb2 -g3 -g2 -g -g1 -g0 -std=c++11 -std=gnu++11 build_src_filter = ${arduino_base.build_src_filter} + - - - - - - - - lib_deps= ${arduino_base.lib_deps} ${radiolib_base.lib_deps} # renovate: datasource=github-tags depName=meshtastic/Crypto packageName=meshtastic/Crypto https://github.com/meshtastic/Crypto/archive/591ff9a690e8168ccb7a36abde8d7783e448d395.zip lib_ignore = BluetoothOTA lvgl