Firmware 0.7.6 is an important performance update for the little key. I focused on getting more frames out of the same hardware while keeping the existing graphics.
The measured change
During development, the average frame rate across a complete native 3D race went from 9.226 to 18.908 FPS. That is approximately 105% more frames per second, or 2.05×. The lowest full-second window improved from 7 to 16 FPS.
Both measurements covered five cars and three laps on the same PCB V1.0 device, with unchanged clocks and hardware limits. The earlier test used a manual Race; the later test used an automatic Demo Race with a newer application build. These are the development measurements behind the optimized renderer carried into this release.
Shared pixel acceleration
Firmware 0.7.6 uses the ESP32-S3 vector instructions for common pixel operations: filling regions, copying pixels, handling transparent bitmap spans and converting display data. The GUI, 2D apps and native scenes share these routines.
The interface keeps its existing shapes, colours and detail. Hardware clocks and the renderer's work limits are unchanged. This is also why the work belongs in firmware: independent apps can use the accelerated drawing paths without carrying their own native implementation.
A model belongs to the app
Native 3D apps can now load indexed .ekmesh models from microSD. The MIT SDK includes an OBJ converter and package tools that put the model files alongside the app.
The firmware checks the files against the package, validates their geometry and loads them when the app starts. Rendering then uses memory rather than reading the card every frame. An app can position, rotate and scale instances of its own models through the scene API. The same mechanism is available to any compatible app.
Diagnostics when I need it
Diagnostics starts off and is enabled in Settings. Turn it on before a new session to collect full-run FPS and the maximum native rendering time. Save report puts the diagnostic report in /evilkey/diagnostics/ on microSD.
The released image is running on my PCB V1.0 prototype. ABI v4/v5 support and the storage layout are retained. Manager remains 1.1.6, with updated source labels; the USB Tool examples keep their original scripts.
Firmware 0.7.6, source and SDK · Manager · microSD examples
What would you make with a small touch display, motion input and your own models on the card?
Michal Wojciechowski
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.