Embassy Rust frente a FreeRTOS en un STM32F446: comparativa técnica

Fuentes: Async Rust vs RTOS showdown! — Tweede golf

Un artículo técnico de la empresa Tweede golf enfrenta dos modelos de programación embebida en un microcontrolador STM32F446ZET6 a 180 MHz: Embassy (Rust asíncrono) y FreeRTOS (C con hilos preemptivos). Ambos ejecutan la misma aplicación, calibrada con ajustes estándar de compilador, RTOS y prioridades, con el objetivo de reflejar un caso realista y portable. La aplicación consta de tres tareas: parpadear un LED cada 200 ms salvo cuando se pulsa un botón, monitorizar el botón mediante una interrupción GPIO y registrar el estado en una cola de mensajes, y volcar esa cola por puerto serie. La medición se realiza con un osciloscopio Rigol DS1054Z sobre cuatro ejes: latencia de la interrupción GPIO, tiempo desde la interrupción hasta la reanudación de la tarea, tamaño del binario (sección .text) y uso de memoria estática (.data + .bss), además de una valoración subjetiva de la facilidad de programación. El texto introduce los fundamentos de cada enfoque. En Rust, una función async es azúcar sintáctico que devuelve un Future, una máquina de estados manejada por un executor mediante Wakers; Embassy exige asignación estática de tareas y compilador nightly, y emplea multitarea cooperativa sin preempción, compensada con interfaces async para periféricos. En FreeRTOS, los hilos ejecutan código normal y el kernel guarda el contexto del procesador para permitir multitarea preemptiva con prioridades y respuesta temporal predecible. La comparativa pretende ofrecer una base para entender cómo funcionan ambos modelos en la práctica.