En lugar de solo comparar un sistema basado en uC versus un sistema embebido basado en Linux, hagamos un análisis más profundo.
Programar un uC (microcontrolador) desde cero es similar a escribir su propio sistema operativo y luego escribir la aplicación en ese sistema operativo. Esto se convierte en una tarea gigantesca, especialmente si la aplicación es compleja y tiene muchas partes móviles, un juego de palabras destinado en casos como robots. Pero si su aplicación es bastante simple, comienza a tener mucho sentido, ya que no necesitará algunas de las funcionalidades de un sistema operativo, como la programación de hilos, el manejo de mensajes, etc. Por ejemplo, si todo lo que necesita es controlar, tal vez solo un motor paso a paso en una forma de avance, no necesita muchas campanas y silbatos.
Ahora, tenga en cuenta que los uC son dispositivos muy simples, tiene memoria limitada, una tonelada de periféricos integrados, tal vez tenga DMA y, definitivamente, un solo núcleo (aunque hay algunos uC con múltiples núcleos asimétricos y simétricos) , y definitivamente no MMU, ya que toda su memoria está en el chip y no necesita la complejidad adicional.
- ¿Qué hace un ingeniero de sistemas en el campo integrado?
- ¿Cuáles son las mejores instituciones en formación integrada en pune?
- ¿Es Arduino una buena introducción a la programación integrada?
- Hay muchos microprocesadores y microcontroladores como 8085 8086 PIC, etc. ¿En qué se diferencian entre sí y el estudio de cualquier microprocesador y microcontrolador le da una comprensión de todos los demás?
- ¿Cuáles son las habilidades / conocimientos básicos necesarios para la programación integrada / sistemas / firmware?
Pero puede haber un caso en el que su aplicación sea lo suficientemente grande como para garantizar el uso de un sistema operativo, algo que proporciona algún tipo de programación de subprocesos, E / S y manejo de interrupciones, manejo de mensajes o protección de datos, etc. Ingrese, sistemas operativos mínimos como FreeRTOS, Estos son básicamente núcleos “nano”, que le proporcionan las necesidades mínimas básicas. Su “aplicación”, en tales sistemas, está integrada hasta cierto punto con el núcleo.
Entonces, supongamos que tiene una aplicación, donde requiere esencialmente un sistema operativo totalmente operativo, pero no desea invertir en hardware adicional. Tiene opciones de hardware para estos sistemas, como MCU de doble núcleo LPC ARM Cortex-M0 y M4F | NXP donde tiene periféricos y memoria integrados, y puede agregar memoria y periféricos adicionales. En un sistema de este tipo, puede tener múltiples programas de aplicación que deben cargarse y luego ejecutarse, elementos de interacción humana mucho más complejos, como quizás una GUI en una pantalla táctil LCD +, una consola de terminal, etc. El beneficio de estos sistemas es que el diseño del hardware es más simple, ya que tiene memoria RAM y memoria de programa a bordo del chip, y puede agregar memoria adicional con interfaces mucho más simples que en un procesador completo. Para tales sistemas, definitivamente querría un sistema operativo. Pero como su elemento de procesamiento no es un procesador normal con MMU, necesita una versión reducida del sistema operativo. Entra, uCLinux.
Finalmente, desea un sistema informático completamente desarrollado, con un procesador con MMU, implementado para una tarea específica, es decir, un sistema integrado. Ahí es donde puedes usar Linux o un sabor de BSD.
Ahora hay un problema. La mayoría de los sistemas integrados, incluso si tienen elementos complejos de interacción humana como la pantalla táctil, se implementan para aplicaciones en tiempo real, como el control de máquinas. Linux tradicional es una mala elección en esas aplicaciones, ya que el kernel no es un kernel preventivo en tiempo real. Puede usar RTLinux o RTAI si solo se siente cómodo con un entorno de trabajo Linux, o puede usar un RTOS como QNX Neutrino.
Los sistemas operativos en tiempo real proporcionan un límite superior al tiempo que lleva completar una tarea de aplicación. Hard Real-Time Systems utiliza elementos de hardware como temporizadores Watchdog o incluso temporizadores normales para proporcionar dicha funcionalidad. Sus controladores de interrupción también se escriben teniendo en cuenta dicha funcionalidad. Entonces, esta es una diferencia crítica que un sistema Linux puro tendría contra varios sistemas en tiempo real.