Skip to content

turbo: STM32F4 boards loader enable native .mpy default - #11355

Merged
dhalbert merged 1 commit into
adafruit:mainfrom
mikeysklar:load-native-stm32f4
Sep 13, 2026
Merged

dhalbert merged 1 commit into
adafruit:mainfrom
mikeysklar:load-native-stm32f4

Conversation

@mikeysklar

Copy link
Copy Markdown
Collaborator

What

Enables the turbo loader (CIRCUITPY_LOAD_NATIVE) by default on STM32F4.

All 16 boards fit.

Follow-up to #11332 (RP2).

Hardware tested

Feather STM32F405 Express

10.3.0-66-g55984e753c, which includes this commit.

Board vsum bytecode vsum viper .mpy pixels viper .mpy pixels @native .mpy
Feather STM32F405 Express 149.1 ms 9.9 ms 437 ms 2,777 ms

How I tested it

All 24 stm boards built in their tightest CI language with GCC 15.2.1.

Hardware used vsum.py from #11332 plus pixels.py.

Tightest F4 boards Language Flash free with the loader
meowbit_v121 ja 76 B
espruino_pico ja 16,844 B
pyb_nano_v2 ja 18,892 B
thunderpack_v11 ja 25,968 B
thunderpack_v12 ja 36,332 B
other 11 F4 boards 37 to 443 KB

Scope

nRF52, SAMx5x and Xtensa loader support will be separate PRs.

AI assistance

Claude Code was used.

Turn on CIRCUITPY_LOAD_NATIVE for the F4 series. Every F4 board has room
for the loader. F7 and H7 stay off: they are Cortex-M7 parts with caches,
and emitglue.c only does the cache maintenance for loaded code when
__ICACHE_PRESENT is defined, which the stm port does not provide there.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@dhalbert dhalbert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great!

@dhalbert
dhalbert merged commit ab16388 into adafruit:main Sep 13, 2026
38 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants