Probablemente haya escuchado que el óxido es un lenguaje de programación de sistemas que tiene el siguiente crecimiento. Pretende ser rápido como C, pero tiene características como la memoria garantizada y la seguridad de los hilos, los genéricos, y evita las fallas de segmentación. Suena como solo la cosa para un sistema incrustado, ¿verdad? [Jorge Aparicio] se frustró porque su CPU de elección, un brazo de STM32, Cortex-M no tenía soporte nativo de óxido.
Aparentemente, puede enlazar fácilmente las funciones de C en un programa de óxido, pero eso no fue lo que fue después. Así que se propuso construir programas de óxido puro que podrían acceder al hardware del dispositivo y documentó el esfuerzo.
La publicación no solo le muestra las herramientas que necesita y las versiones de software, sino que usan OpenOCD, [Jorge] incluso logró hacer una depuración. La técnica también parece ser bastante aplicable, ya que dice que ha hecho el mismo truco en seis controladores diferentes de tres proveedores diferentes sin ningún problema. Tienes que configurar el proyecto cambiando algunos valores en una plantilla.
Aunque no es un tutorial de óxido, siguiendo junto con el código [Jorge] y sus explicaciones le darán una buena idea de lo que se ve Oxid. También muestra una herramienta limpia, GDB-Dashboard. Para construir la API a las regiones de memoria especial del ARM, [Jorge] usa una herramienta llamada SVD2RUST para procesar los archivos SVD del proveedor. Estos se utilizan típicamente para la programación y las pruebas de JTAG, por lo que pensamos que fue una forma novedosa de crear automáticamente soporte para el procesador.
Muchos idiomas que ofrecen características de seguridad tienden a compilar el código de grasa. [Jorge] muestra un ejemplo de LED parpadeante y se desmonta y se ve bastante compacto con unos 127 bytes. Luego retiró los registros de temporizador y el código es prácticamente exactamente el mismo tamaño cuando se compila.
Cubrimos el óxido brevemente un rato. También hemos visto la oxidación en algún equipo de WiFi más recientemente.