¿Qué es la programación básica en sistemas embebidos?

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.

En general, la programación básica se utiliza en los siguientes escenarios.

  1. 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.
  2. 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.
  3. Cuando desee un control directo sobre cada pieza de hardware y regístrese para cumplir con sus requisitos de tiempo.
  4. Cuando desee eliminar la sobrecarga del sistema operativo
  5. 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.
  6. 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.
  7. 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.

  1. 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.
  2. Solo tiene que llamar a las API y no tiene que preocuparse por superponer su código,
  3. 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.
  4. Obtiene muchas herramientas, código fuente abierto para consultar mientras construye su código.
  5. Puede construir más componentes modulares y reutilizables.
  6. Obtiene herramientas para depurar su código. No tiene que aferrarse a JTAG para el análisis de volcado de memoria.
  7. 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.

Bare Metal, como su nombre lo indica, es donde puedes interactuar directamente con el hardware. El software en la parte superior del hardware generalmente se abstrae en varias capas. Tome el caso de una PC con algunos SO. Cada vez que ejecuta una aplicación, por simplicidad, digamos Webcam, realiza llamadas de software para tomar la imagen capturada por la cámara web y almacenarla en el disco duro. Esto implicaría una interfaz de llamada del sistema que rastrea las llamadas que requieren el procesamiento del núcleo, la traducción de la memoria del espacio virtual al físico, etc. Por lo tanto, la llamada del software atraviesa varias capas abstraídas según la arquitectura del sistema operativo, antes de darle lo que desea. En resumen, el metal desnudo elimina todos estos gastos generales y abstracciones y le proporciona el código sin procesar para alternar los bits de hardware de la manera que desee.

La programación simple se refiere al caso en que no se utiliza ningún sistema operativo (en el sentido de alguna distribución de Linux o cualquier otro sistema operativo). “Metal desnudo” significa que su aplicación está accediendo al chip de silicio directamente sin ningún intermediario como un sistema operativo. La aplicación es el único software que se ejecuta en el microprocesador / microcontrolador. Muchos diseños de microcontroladores se pueden considerar como programación básica. También hay ejemplos de diseños basados ​​en procesadores de metal desnudo.

Escribe el código que controla el procesador directamente. No hay otras capas involucradas.

Metal desnudo significa programación de microcontroladores, que es totalmente independiente de cualquier sistema operativo.

More Interesting

¿Cuáles son los temas importantes para la entrevista del desarrollador integrado?

¿Cuánto salario puedo esperar si me mudo a Bangalore con 3 años de experiencia en un inicio de sistemas integrados que me paga 6.4 lakhs CTC actualmente en Kochi (Kerala)?

¿Por qué no se utilizan microcontroladores PIC en la industria? ¿Por qué todos van por PLC?

¿Cómo puedo diseñar un sistema integrado para un microcontrolador que no puedo simular?

¿Cómo funciona openOCD?

¿Cuál es el mejor libro para incrustar?

¿Cuál es la diferencia entre periféricos y hardware en sistemas embebidos?

¿Qué sucede realmente dentro de un Arduino Uno R3 cuando ejecuto el código para parpadear un LED?

¿Cómo puedo encontrar la dirección (la dirección de retorno es suficiente) de la persona que llama de una función?

Siendo un Mech Engg, ¿cómo se puede aprender / dominar los sistemas integrados y el IoT?

¿Vale la pena hacer MS de Alemania en el campo de los sistemas integrados después de 6 años de trabajo y buen salario en India?

Soy un desarrollador integrado que ha trabajado en pocos códigos de metal desnudo uC. Estoy pensando en aprender sobre Linux para sistemas embebidos. ¿Donde debería empezar?

¿Qué debe saber un desarrollador de sistemas integrados en 2015?

¿Es Arduino una mala forma de aprender sistemas embebidos? Mis habilidades en C son buenas y quiero ser un ingeniero de software integrado profesional. Compré un kit Arduino y comencé a hacer proyectos, pero fue fácil. No estoy aprendiendo ¿Cuál debería ser el siguiente paso?

Si me gusta el software, los sistemas integrados y el IoT, ¿qué maestría sería mejor para mí, CS o ECE?