Repository navigation
Version 0.3.1
Jet Studio 0.3.1
Faster displays and much less RAM on STM32 boards. Projects don't need to be exported again
(the package format is still v14). Flash the firmware again to get the changes.
New
- Display DMA on STM32: the display gets each field through DMA in the background while the
next one is drawn, with SPI up to 54 MHz. On a Nucleo-F746ZG with an ILI9341,textured_boxes
went from 29.5 to 12 ms per frame (83 fps). - JetRun on the Nucleo-F746ZG: the OutRun-style demo now fits in 320 KB of RAM and runs at
about 25 ms per frame. - B1 USER button: the blue button of the Nucleo-144 boards (F722ZE, F746ZG, F767ZI) can be
used in the Input Map, for example to start a game. - D11 as MOSI on the Nucleo-F746ZG/F767ZI: remove jumper JP6 to disconnect it from the Ethernet.
Improved
- Nodes use about 43% less RAM (860 → 488 bytes each on ARM). The fields of the less common
node types (2D, camera, light, environment, physics, particles) are only kept by the nodes that
use them. Nothing changes in how scenes behave, and frames are identical to before. - STM32: textures stay in flash. Palette textures are read straight from the package instead
of being copied to RAM (about 300 KB saved in JetRun). - Jet's triangle queues are sized once per scene instead of doubling while drawing, which
briefly needed the old and the new buffer at once. - STM32: running out of RAM:
- the firmware first gives up the second field buffer and keeps running (drawing then waits
for the DMA); - if that's not enough, the log says "Out of memory", with the size requested and the RAM
left, instead of crashing.
- the firmware first gives up the second field buffer and keeps running (drawing then waits
- The serial log shows how much RAM the scene's nodes use when it loads.
- The Arduino Nano ESP32 runs as fast as in 0.3.0.
Fixed
- STM32F7: LovyanGFX's display DMA hung (no interrupt handler for SPI1's DMA stream, data
cache not written back). Our fix is intools/patches/LovyanGFX-stm32-dma.patch.
For developers
./jet-studio setupnow applies our fixes to the dependencies fromtools/patches/
(LovyanGFX STM32 DMA, JetScene::reserveTriangles). It removes them before moving to
another revision.
Known issues
- On the F746, JetRun runs with a single field buffer, so drawing waits for the DMA.