Rust es un gran lenguaje de programación para el desarrollo de dispositivos embebidos como los MCU, que tienen recursos limitados. Especialmente, Bare Metal (también conocido como no_std) trae muchas ventajas y permite la creación de aplicaciones completas puramente en Rust.
Los siguientes pasos describen cómo crear, construir, flashear y simular una aplicación para ESP32-S3, que está incluida en muchos DevKits como el ESP32-S3-BOX-3 o el M5Stack CoreS3.
Hay varias herramientas que necesitan ser instaladas.
Primero, necesitamos instalar Rust. Usaremos rustup.
Necesitaremos varias herramientas adicionales. Podemos usar `cargo install` para realizar la instalación desde el código fuente. El método más rápido es usar cargo-binstall, que despliega binarios de herramientas y ahorra tiempo en comparación con la instalación desde el código fuente.
Ahora podemos instalar herramientas adicionales:
- espup – Herramienta para instalar y mantener el ecosistema Rust de Espressif.
- cargo-generate – Herramienta para crear proyectos Rust a partir de plantillas.
- espflash – Utilidad de flasheo serial para SoCs y módulos de Espressif. Reemplazo en Rust para esptool.py basado en Python.
Como estamos apuntando al ESP32-S3, que está basado en la arquitectura Xtensa, necesitaremos la toolchain Xtensa de Rust, que debe ser instalada por separado. Nota: Para los chips introducidos después del ESP32-S3, como el ESP32-C3, que están basados en la arquitectura RISC-V, esta dependencia no es necesaria.
Ahora podemos generar un proyecto usando la plantilla Bare Metal de esp-rs/esp-template utilizando cargo-generate. La herramienta hará varias preguntas. Aquí está la configuración recomendada:
El proyecto `embedded-rust` debería estar creado, y ahora estamos listos para construir y flashear.
Se recomienda construir el proyecto en el perfil Release, debido a las consideraciones de rendimiento, especialmente si planeas usar WiFi, que requiere muchos recursos, y el perfil de depuración es demasiado lento.
Conecta el ESP32-S3-BOX-3 a tu computadora usando un cable USB y escribe el siguiente comando, que invocará un comando de construcción y espflash con la opción de monitor para flashear y monitorear el hardware.
Si no tienes el ESP32-S3-BOX-3 contigo, es posible usar el simulador Wokwi. Abre VS Code:
Instala la extensión Wokwi para VS Code (Ctrl+Shift+P), selecciona “Install extension”, busca Wokwi y haz clic en “install”.
Activa la licencia gratuita de Wokwi (Ctrl+Shift+P), selecciona “Wokwi: Request a new license” y sigue el proceso de activación en el navegador web.
Si el proyecto fue creado en el perfil Release, necesitamos cambiar la ruta al binario en el archivo `wokwi.toml`:
Ejecuta la simulación (Ctrl+Shift+P), selecciona “Wokwi: Start Simulator”.
El chip simulado debería aparecer y deberías obtener el siguiente resultado:
¡Felicidades! Has completado tu primer proyecto Rust Bare Metal para ESP32-S3-BOX-3.
Consejo de productividad: Puedes mantener la ventana de Wokwi con el simulador abierta mientras desarrollas la aplicación. Una vez que construyas la aplicación usando `cargo run –release`, el simulador tomará el cambio y te mostrará la simulación, incluso mientras esperas a que se complete el proceso de flasheo. Esto puede ahorrar mucho tiempo permitiéndote ver los resultados de un cambio de código de inmediato.