Ya escribí software bare metal y usé FreeRTOS en dispositivos integrados. Pero me gustaría entender por qué algunas personas eligen usar Linux integrado o un kernel en un dispositivo integrado. ¿En qué casos sería, por ejemplo, inevitable que necesite usar Linux integrado o un kernel en un dispositivo integrado? ¿Cómo llegaría uno a la conclusión de que necesita una de esas dos cosas?
En general, no usaría un sistema operativo en algo que realiza tareas de microcontrolador reales. En tales casos, el sistema operativo interfiere más de lo que ayuda. Los sistemas operativos consisten en virtualizar recursos de hardware y proporcionar abstracciones como hilos y procesos. Estas cosas son de poca utilidad cuando el hardware que está manejando es fácil de controlar directamente, no hay problemas de portabilidad y, de todos modos, no es el tipo de cosas que los sistemas operativos virtualizan para usted. Los sistemas operativos de propósito general tampoco manejan bien los requisitos de tiempo real, o en absoluto, y eso es algo que suele ser importante en las aplicaciones de controlador verdadero.
La razón por la que a veces ves sistemas operativos en microcontroladores de gama alta es porque esos procesadores en realidad se usan como computadoras integradas, no como controladores. Cuando desee conectarse a un teclado estándar, un mouse, manejar una pantalla estándar, conectarse a una red, ser un host USB, almacenar archivos en una estructura de árbol arbitraria o hacer cualquier otra cosa con la que los sistemas operativos están destinados a ayudar, entonces un sistema operativo puede ser útil.
¿Linux en microcontroladores? Solo usando versiones sin MMU (Memory Management Unit) - ej. uC Linux. Cortex-M (M - microcontrolador) tiene MPU (Unidad de protección de memoria). Cortex-A (A - aplicación) tiene MMU. Por lo general, los microprocesadores no incorporaban periféricos ordinarios que se encuentran en los microcontroladores comunes. Aunque es muy rápido, ejecuta tanto el sistema operativo como las aplicaciones del usuario. No manejan muy bien los pines de E/S y los protocolos que demandan baja latencia , pero son ideales para manejar imágenes, audio y transferencia de megabytes de datos en alto rendimiento .(USB, Ethernet, etc.). Una Raspberry-PI es buena para ver una película, pero no es adecuada para implementar el control FOC de un motor trifásico, por ejemplo. Por razones similares a las ya comentadas, no es raro encontrar soluciones que involucren una placa con dos procesadores: un Cortex-A ejecutando Linux y un Cortex-M encargado de tareas críticas (ejemplo placa UDOO). El BeagleBone es ligeramente diferente cuando se incluye en el mismo chip, control dedicado y periféricos de temporización.
Eugenio Sh.
oscuro
usuario3528438
TonyM
oscuro
TonyM
oscuro