La programación de metal desnudo es escribir firmware que se ejecuta directamente en el hardware sin tener ninguna abstracción subyacente, como los sistemas operativos.
En general, los programas básicos tendrán un gestor de arranque mínimo para iniciar el procesador, el reloj y la memoria y saltar al programa principal.
En los sistemas embebidos más antiguos, la programación básica era bastante común ya que los microcontroladores no tenían ancho de banda para ejecutar sistemas operativos voluminosos. Poco a poco, a medida que la tecnología maduraba y los procesadores eran mucho más potentes, surgió el uso de sistemas operativos. Pero hasta la fecha, hay muchos sistemas integrados a pequeña escala que aún ejecutan programas de metal desnudo.
- Cómo interconectar 8051 con una pantalla LCD
- Cómo aprender el desarrollo integrado si no sé nada sobre el lenguaje C o los microcontroladores, pero quiero aprenderlo
- ¿Qué tipo de entorno habrá en las empresas relacionadas con los sistemas integrados?
- ¿Qué es mejor para aprender Linux incorporado: RaspberryPi o BeagleBone Black?
- ¿Dónde puedo obtener el código para el controlador PID (en C o en lenguaje ensamblador)?
En general, la programación básica se utiliza en los siguientes escenarios.
- Cuando diseña un sistema de gama baja utilizando un microcontrolador de gama baja y ejecuta su código en 1 ciclo. No tiene ancho de banda de CPU y memoria más alta para ejecutar y cargar sistemas operativos.
- Cuando el tiempo de arranque de su sistema es estricto y no puede lograr usar el sistema basado en el sistema operativo. El sistema basado en el sistema operativo toma el tiempo de arranque en segundos y, por lo tanto, no es factible cuando se desea un tiempo de arranque determinista.
- Cuando desee un control directo sobre cada pieza de hardware y regístrese para cumplir con sus requisitos de tiempo.
- Cuando desee eliminar la sobrecarga del sistema operativo
- Cuando implementa bucles de control donde adquirir datos de ADC y procesarlos para activar PWM en la retroalimentación requiere un rendimiento duro en tiempo real.
- Desea poseer y controlar cada pieza de código que escribe y no desea usar módulos externos debido a problemas de licencia o para pagar regalías a terceros, etc.
- Estos son los casos más destacados en los que las personas recurren a la programación de metal desnudo.
Pero también hay algunos inconvenientes.
- No tiene el lujo de tener un sistema operativo que lo abstraiga del hardware subyacente, no tiene que preocuparse por escribir controladores de dispositivo, programador, gestión de memoria, gestión de subprocesos, etc. Todo lo que debe hacer es concentrarse en el desarrollo de su aplicación.
- Solo tiene que llamar a las API y no tiene que preocuparse por superponer su código,
- No es necesario preocuparse por solucionar los problemas del controlador o del nivel del kernel, ya que esos módulos ya están en buen estado.
- Obtiene muchas herramientas, código fuente abierto para consultar mientras construye su código.
- Puede construir más componentes modulares y reutilizables.
- Obtiene herramientas para depurar su código. No tiene que aferrarse a JTAG para el análisis de volcado de memoria.
- Puede construir sistemas embebidos mucho más complejos con una interfaz de usuario y un servidor web optimistas, etc.
Por lo tanto, debe decidir según sus requisitos.