perf(l2): bigger CPU instruction cache, TLS and BLE buffers in PSRAM

The framework libs are rebuilt for the L2's own ESP-IDF options
(solo/wio-tracker-l2/idf/sdkconfig): a 32 KB instruction cache and
64-byte data cache lines make frames ~35% faster (map 45 -> 30 ms,
settings ~36 -> 22 ms). mbedTLS and the NimBLE host allocate in PSRAM,
so internal RAM ends up with more free than before (103 KB, largest
block 57 KB; was 89.6 / 45).

Wio_Tracker_L2_idf_libs does the rebuild; it has to run before the
firmware env, also in CI. idf/arduino_tinyusb gives the rebuild the
TinyUSB options and the framework's prebuilt library, which it would
otherwise lose.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-01 09:23:50 +02:00
co-authored by Claude Opus 5.5
parent 2f3b95adb4
commit 38f5db5a61
7 changed files with 185 additions and 1 deletions
+18
View File
@@ -48,6 +48,9 @@ platform = https://github.com/pioarduino/platform-espressif32/releases/download/
; a computer as a USB drive (ui-lvgl/LvglPort.h). A firmware that crashes
; early may need BOOT held over reset to flash.
build_unflags = -DARDUINO_USB_MODE=1
; Bigger CPU caches and other ESP-IDF options (idf/sdkconfig): the framework
; libs are rebuilt for them. Build Wio_Tracker_L2_idf_libs first (see there).
custom_sdkconfig = file://solo/wio-tracker-l2/idf/sdkconfig
build_flags =
${Wio_Tracker_L2.build_flags}
-D ARDUINO_USB_MODE=0
@@ -121,3 +124,18 @@ lib_deps =
Preferences
LittleFS
; Rebuilds the framework libs (ESP-IDF) with the custom_sdkconfig above; the
; firmware env above then links them. Run once before it, and again after a
; custom_sdkconfig change (pio run -e Wio_Tracker_L2_idf_libs). Needed because
; pioarduino's rebuild pass compiles the env's own sources without its include
; paths and libraries, which fails for ours; this env's only source is the
; stub sketch pioarduino puts in .dummy/. idf/ supplies the TinyUSB options.
[env:Wio_Tracker_L2_idf_libs]
platform = ${env:Wio_Tracker_L2_companion_solo_lvgl.platform}
board = seeed_wio_tracker_l2
framework = arduino
custom_sdkconfig = ${env:Wio_Tracker_L2_companion_solo_lvgl.custom_sdkconfig}
board_build.cmake_extra_args = -DEXTRA_COMPONENT_DIRS=${platformio.src_dir}/../.dummy;${platformio.packages_dir}/framework-arduinoespressif32;${platformio.src_dir}/../solo/wio-tracker-l2/idf
lib_deps =
lib_ldf_mode = off
build_src_filter = +<../.dummy/*>