@@ -191,6 +191,22 @@ build_flags = ${common.build_flags} ${esp8266.build_flags}
191191; -D HW_PIN_MISOSPI=9
192192
193193
194+ # ------------------------------------------------------------------------------
195+ # Optional: build flags for speed, instead of optimising for size.
196+ # Example of usage: see [env:esp32S3_PSRAM_HUB75]
197+ # ------------------------------------------------------------------------------
198+
199+ [Speed_Flags]
200+ build_unflags = -Os ; ; to disable standard optimization for small size
201+ build_flags =
202+ -O2 ; ; optimize for speed
203+ -free -fipa-pta ; ; very useful, too
204+ ; ;-fsingle-precision-constant ;; makes all floating point literals "float" (default is "double")
205+ ; ;-funsafe-math-optimizations ;; less dangerous than -ffast-math; still allows the compiler to exploit FMA and reciprocals (up to 10% faster on -S3)
206+ # Important: we need to explicitly switch off some "-O2" optimizations
207+ -fno-jump-tables -fno-tree-switch-conversion ; ; needed - firmware may crash otherwise
208+ -freorder-blocks -Wwrite-strings -fstrict-volatile-bitfields ; ; needed - recommended by espressif
209+
194210
195211# ------------------------------------------------------------------------------
196212# PRE-CONFIGURED DEVELOPMENT BOARDS AND CONTROLLERS
@@ -541,7 +557,7 @@ build_flags = ${common.build_flags}
541557 -D WLED_ENABLE_HUB75MATRIX -D NO_GFX
542558 -D WLED_DEBUG_BUS
543559 ; -D WLED_DEBUG
544- -D SR_DMTYPE =- 1 -D I2S_SDPIN =-1 -D I2S_CKPIN =-1 -D I2S_WSPIN =-1 -D MCLK_PIN =-1 ; ; Disable to prevent pin clash
560+ -D SR_DMTYPE =1 -D I2S_SDPIN =-1 -D I2S_CKPIN =-1 -D I2S_WSPIN =-1 -D MCLK_PIN =-1 ; ; Disable to prevent pin clash
545561
546562lib_deps = ${esp32_idf_V4.lib_deps}
547563 https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA.git# 3.0.11
@@ -558,47 +574,53 @@ build_flags = ${common.build_flags}
558574 -D WLED_ENABLE_HUB75MATRIX -D NO_GFX
559575 -D ESP32_FORUM_PINOUT ; ; enable for SmartMatrix default pins
560576 -D WLED_DEBUG_BUS
561- -D SR_DMTYPE =- 1 -D I2S_SDPIN =-1 -D I2S_CKPIN =-1 -D I2S_WSPIN =-1 -D MCLK_PIN =-1 ; ; Disable to prevent pin clash
577+ -D SR_DMTYPE =1 -D I2S_SDPIN =-1 -D I2S_CKPIN =-1 -D I2S_WSPIN =-1 -D MCLK_PIN =-1 ; ; Disable to prevent pin clash
562578; -D WLED_DEBUG
563579
564580
565581[env:adafruit_matrixportal_esp32s3]
566582; ESP32-S3 processor, 8 MB flash, 2 MB of PSRAM, dedicated driver pins for HUB75
567583board = adafruit_matrixportal_esp32s3
584+ ; ; adafruit recommends to use arduino-esp32 2.0.14
585+ ; ;platform = espressif32@ ~6.5.0
586+ ; ;platform_packages = platformio/framework-arduinoespressif32 @ 3.20014.231204 ;; arduino-esp32 2.0.14
568587platform = ${esp32s3.platform}
569588platform_packages =
570589upload_speed = 921600
571590build_unflags = ${common.build_unflags}
572- build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME =\" ESP32-S3_4M_qspi \"
573- -DARDUINO_USB_CDC_ON_BOOT =1 -DARDUINO_USB_MODE =1 ; ; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
591+ build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME =\" ESP32-S3_8M_qspi \"
592+ -DARDUINO_USB_CDC_ON_BOOT =1 ; ; -DARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
574593 -DBOARD_HAS_PSRAM
575594 -DLOLIN_WIFI_FIX ; seems to work much better with this
576595 -D WLED_WATCHDOG_TIMEOUT =0
577596 -D WLED_ENABLE_HUB75MATRIX -D NO_GFX
578597 -D S3_LCD_DIV_NUM =20 ; ; Attempt to fix wifi performance issue when panel active with S3 chips
579598 -D ARDUINO_ADAFRUIT_MATRIXPORTAL_ESP32S3
580599 -D WLED_DEBUG_BUS
581- -D SR_DMTYPE =- 1 -D I2S_SDPIN =-1 -D I2S_CKPIN =-1 -D I2S_WSPIN =-1 -D MCLK_PIN =-1 ; ; Disable to prevent pin clash
600+ -D SR_DMTYPE =1 -D I2S_SDPIN =-1 -D I2S_CKPIN =-1 -D I2S_WSPIN =-1 -D MCLK_PIN =-1 ; ; Disable to prevent pin clash
582601
583602
584603lib_deps = ${esp32s3.lib_deps}
585604 https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA.git# aa28e2a ;; S3_LCD_DIV_NUM fix
586605
587- board_build.partitions = ${esp32.default_partitions}
606+ board_build.partitions = ${esp32.large_partitions} ; ; standard bootloader and 8MB Flash partitions
607+ ; ; board_build.partitions = tools/partitions-8MB_spiffs-tinyuf2.csv ;; supports adafruit UF2 bootloader
588608board_build.f_flash = 80000000L
589609board_build.flash_mode = qio
590610monitor_filters = esp32_exception_decoder
591611custom_usermods = audioreactive
592612
593613[env:esp32S3_PSRAM_HUB75]
594- ; ; MOONHUB HUB75 adapter board
614+ ; ; MOONHUB HUB75 adapter board (lilygo T7-S3 with 16MB flash and PSRAM)
595615board = lilygo-t7-s3
596616platform = ${esp32s3.platform}
597617platform_packages =
598618upload_speed = 921600
599619build_unflags = ${common.build_unflags}
620+ ${Speed_Flags.build_unflags} ; ; optional: removes "-Os" so we can override with "-O2" in build_flags
600621build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME =\" esp32S3_16MB_PSRAM_HUB75\"
601- -DARDUINO_USB_CDC_ON_BOOT =1 -DARDUINO_USB_MODE =1 ; ; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
622+ ${Speed_Flags.build_flags} ; ; optional: -O2 -> optimize for speed instead of size
623+ -DARDUINO_USB_CDC_ON_BOOT =1 ; ; -DARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
602624 -DBOARD_HAS_PSRAM
603625 -DLOLIN_WIFI_FIX ; seems to work much better with this
604626 -D WLED_WATCHDOG_TIMEOUT =0
@@ -612,7 +634,8 @@ build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=
612634lib_deps = ${esp32s3.lib_deps}
613635 https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA.git# aa28e2a ;; S3_LCD_DIV_NUM fix
614636
615- board_build.partitions = ${esp32.default_partitions}
637+ ; ;board_build.partitions = ${esp32.large_partitions} ;; for 8MB flash
638+ board_build.partitions = ${esp32.extreme_partitions} ; ; for 16MB flash
616639board_build.f_flash = 80000000L
617640board_build.flash_mode = qio
618641monitor_filters = esp32_exception_decoder
0 commit comments