Skip to content

Instantly share code, notes, and snippets.

@IoTeacher
Last active May 30, 2025 20:57
Show Gist options
  • Save IoTeacher/ff1ced4d425d40e3691b321e08cf06b6 to your computer and use it in GitHub Desktop.
Save IoTeacher/ff1ced4d425d40e3691b321e08cf06b6 to your computer and use it in GitHub Desktop.

Investigación de Pico W con Rust, para prox. semestre emigrar a este lenguaje y dejar C y python

image

Dejar comentarios poniendo encabezado, ponerse de acuerdo para no duplicar.

1.- Marco Teorico en markdown justificando RUST como alternativa para Raspberry Pico W

2.- 10 practicas de RUST para Raspberry PucoW donde la primera es paso a paso, compilar, enlazar y subir a el memoria flash de picow

3- Sobre compilador, liberias, plataformas de desarroolo o extensiones. Linux, mac, windows, AWS. No hay un simulador en linea pero se requiere una apoyo de seguridad del dispositivo. Investigar como depurar la pico W con otras plataformas y cables por ejemplo OPENOCD https://openocd.org debuger por hardware

@ulisetrejo250
Copy link

ulisetrejo250 commented May 30, 2025

1. Compilador y Librerías
Rust usa rustc como compilador y cargo como gestor de paquetes. Para la Pico W, se requiere la instalación de la cadena de herramientas adecuada:

Instalar Rust: rustup target add thumbv6m-none-eabi.
Librerías clave: rp-hal es una capa de abstracción de hardware para la serie RP2040.

2.Plataformas de Desarrollo
Rust es compatible con múltiples plataformas:

Linux/macOS: Se puede usar cargo junto con probe-rs para flashear el firmware.

Windows: Se recomienda usar WSL2 o instalar cargo-binutils para la conversión de formatos.

AWS: No hay soporte directo, pero se puede usar contenedores para compilar firmware en la nube.

3. Depuración con OpenOCD
Para depurar la Pico W con hardware, se usa OpenOCD:

Instalar OpenOCD: git clone https://github.com/raspberrypi/openocd.git --branch rp2040

Compilar: ./bootstrap && ./configure --enable-picoprobe && make -j4

Conectar hardware: Se usa Picoprobe para conectar dos Picos y depurar con GDB.

  1. Seguridad de Memoria
    Rust: Previene errores de memoria con su sistema de propiedad y verificación en tiempo de compilación.

C: Requiere gestión manual de memoria, lo que puede generar vulnerabilidades como desbordamientos de búfer.

2. Plataformas de Desarrollo
Rust es compatible con múltiples plataformas:

Linux/macOS: Se puede usar cargo junto con probe-rs para flashear el firmware.

Windows: Se recomienda usar WSL2 o instalar cargo-binutils para la conversión de formatos.

AWS: No hay soporte directo, pero se puede usar contenedores para compilar firmware en la nube.

3.Para depurar la Pico W con hardware, se usa OpenOCD:

Instalación de OpenOCD:

git clone https://github.com/raspberrypi/openocd.git --branch rp2040

Compilación:

./bootstrap && ./configure --enable-picoprobe && make -j4

4. Comparativa entre Rust y C

  1. Seguridad de Memoria
    Rust: Previene errores de memoria con su sistema de propiedad y verificación en tiempo de compilación.

C: Requiere gestión manual de memoria, lo que puede generar vulnerabilidades como desbordamientos de búfer.

  1. Concurrencia y Paralelismo
    Rust: Ofrece primitivas seguras para concurrencia, evitando condiciones de carrera.

C: Permite control manual, pero es propenso a errores en programación concurrente.

  1. Velocidad de Ejecución
    Rust: Tiene una ligera sobrecarga por verificaciones de seguridad, pero es comparable a C en rendimiento.

C: Es altamente optimizado y ofrece control total sobre detalles de bajo nivel.

  1. Depuración y Desarrollo
    Rust: Su compilador detecta errores antes de la ejecución, reduciendo fallos en producción.

C: Depuración más difícil, ya que los errores pueden aparecer en tiempo de ejecución.

5. Tendencias Futuras para Rust y C
Rust: Crecimiento y Expansión
Optimización del compilador: Mejoras en SIMD, evaluación de funciones en tiempo de compilación y optimización en tiempo de enlace.

Mayor adopción en la industria: Empresas como Microsoft y Google están migrando partes de su código a Rust debido a su seguridad de memoria.

Expansión en sistemas embebidos: Rust se está volviendo más popular en dispositivos IoT y sistemas embebidos gracias a su eficiencia y seguridad.

Uso en la nube: Se espera que Rust tenga un mayor impacto en el desarrollo de infraestructura en la nube y servicios de alto rendimiento.

C: Persistencia y Especialización
Aunque Rust está creciendo, C sigue siendo fundamental en ciertos sectores:

Optimización extrema: C sigue siendo la mejor opción para sistemas donde cada ciclo de CPU cuenta, como en firmware y sistemas operativos.

Compatibilidad y legado: Muchas aplicaciones críticas aún dependen de C, y su ecosistema es difícil de reemplazar completamente.

Seguridad mejorada: Se están desarrollando herramientas para mejorar la seguridad en C, aunque no igualan el enfoque de Rust

ejemplo:

let a = 5;
let b = 3;
let suma = a + b;
writeln!(uart, "La suma de {} + {} es {}\r", a, b, suma).unwrap();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment