Sistemas operativos de microcontroladores


De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Micro-Controller Operating Systems ( MicroC / OS , estilizado como μC / OS ) es un sistema operativo en tiempo real (RTOS) diseñado por Jean J. Labrosse en 1991. Es un kernel preventivo en tiempo real basado en prioridades para microprocesadores , escrito sobre todo en el lenguaje de programación C . Está diseñado para su uso en sistemas integrados .

MicroC / OS permite definir varias funciones en C, cada una de las cuales se puede ejecutar como un hilo o tarea independiente. Cada tarea se ejecuta con una prioridad diferente y se ejecuta como si fuera propietaria de la unidad central de procesamiento (CPU). Las tareas de menor prioridad pueden ser reemplazadas por tareas de mayor prioridad en cualquier momento. Las tareas de mayor prioridad utilizan los servicios del sistema operativo (SO) (como un retraso o un evento) para permitir la ejecución de las tareas de menor prioridad. Los servicios de SO se proporcionan para administrar tareas y memoria, comunicarse entre tareas y cronometrar. [1]

Historia

El kernel de MicroC / OS se publicó originalmente en un artículo de tres partes en la revista Embedded Systems Programming y en el libro μC / OS The Real-Time Kernel de Jean J. Labrosse ( ISBN  0-87930-444-8 ). Al principio, el autor pretendía simplemente describir las partes internas de un sistema operativo portátil que había desarrollado para su propio uso, pero luego desarrolló el sistema operativo como un producto comercial en las versiones II y III.

μC / OS-II

Basado en el código fuente escrito para μC / OS, e introducido como un producto comercial en 1998, μC / OS-II es un núcleo portátil , compatible con ROM, escalable , preventivo, en tiempo real, determinista, multitarea para microprocesadores y digital. procesadores de señales (DSP). Gestiona hasta 255 tareas de la aplicación. Su tamaño se puede escalar (entre 5 y 24 Kbytes) para contener solo las funciones necesarias para un uso determinado.

La mayor parte de μC / OS-II está escrito en ANSI C altamente portátil , con código específico del microprocesador de destino escrito en lenguaje ensamblador . El uso de este último se minimiza para facilitar la migración a otros procesadores.

Usos en sistemas embebidos

μC / OS-II fue diseñado para usos integrados. Si el productor tiene la cadena de herramientas adecuada (es decir, compilador, ensamblador y localizador de enlaces de C), μC / OS-II puede integrarse como parte de un producto.

μC / OS-II se utiliza en muchos sistemas integrados, que incluyen:

  • Aviónica
  • Equipos y dispositivos médicos
  • Equipo de comunicaciones de datos
  • Electrodomésticos ( electrodomésticos )
  • Teléfonos móviles , asistentes digitales personales (PDA), MID
  • Controles industriales
  • Electrónica de consumo
  • Automotor

Estados de la tarea

μC / OS-II es un sistema operativo multitarea . Cada tarea es un ciclo infinito y puede estar en cualquiera de los siguientes cinco estados (ver la figura a continuación adicionalmente)

  • Latente
  • Listo
  • Corriendo
  • Esperando (por un evento)
  • Interrumpido ( rutina de servicio de interrupción (ISR))

Además, puede gestionar hasta 255 tareas. Sin embargo, se recomienda que ocho de estas tareas se reserven para μC / OS-II, dejando una aplicación hasta 247 tareas. [2]

Granos

El núcleo es el nombre que se le da al programa que realiza la mayoría de las tareas de limpieza del sistema operativo. El cargador de arranque entrega el control al kernel, que inicializa los distintos dispositivos a un estado conocido y prepara la computadora para las operaciones generales. [3] El kernel es responsable de administrar tareas (es decir, administrar el tiempo de la CPU) y comunicarse entre tareas. [4] El servicio fundamental proporcionado por el kernel es el cambio de contexto .

El planificador es la parte del kernel responsable de determinar qué tarea se ejecuta a continuación. [5] La mayoría de los núcleos en tiempo real se basan en prioridades. En un kernel basado en prioridades, el control de la CPU siempre se otorga a la tarea de mayor prioridad lista para ejecutarse. Existen dos tipos de núcleos basados ​​en prioridades: no preventivos y preventivos . Los núcleos no preventivos requieren que cada tarea haga algo para ceder explícitamente el control de la CPU. [5] Se utiliza un kernel preventivo cuando la capacidad de respuesta del sistema es más importante. Por lo tanto, μC / OS-II y la mayoría de los núcleos comerciales en tiempo real son preventivos. [6] La tarea de mayor prioridad lista para ejecutarse siempre recibe el control de la CPU.

Asignar tareas

Las tareas con la tasa de ejecución más alta reciben la prioridad más alta mediante la programación de tasa monótona . [7] Este algoritmo de programación se utiliza en sistemas operativos en tiempo real (RTOS) con una clase de programación de prioridad estática . [8]

Gestionar tareas

En informática , una tarea es una unidad de ejecución . En algunos sistemas operativos , una tarea es sinónimo de un proceso , en otros de un hilo . En los sistemas informáticos de procesamiento por lotes , una tarea es una unidad de ejecución dentro de un trabajo . El usuario del sistema de μC / OS-II puede controlar las tareas utilizando las siguientes funciones:

  • Característica de la tarea
  • Creación de tareas
  • Pila de tareas y comprobación de pila
  • Eliminación de tareas
  • Cambiar la prioridad de una tarea
  • Suspender y reanudar una tarea
  • Obtener información sobre una tarea [9]

Manejo de la memoria

Para evitar la fragmentación , μC / OS-II permite que las aplicaciones obtengan bloques de memoria de tamaño fijo a partir de una partición formada por un área de memoria contigua. Todos los bloques de memoria tienen el mismo tamaño y la partición contiene un número entero de bloques. La asignación y desasignación de estos bloques de memoria se realiza en tiempo constante y es un sistema determinista . [10]

Gestionar el tiempo

μC / OS-II requiere que se proporcione una fuente de tiempo periódica para realizar un seguimiento de los retrasos y tiempos de espera. Un tic debe ocurrir entre 10 y 1000 veces por segundo, o Hertz . Cuanto más rápida sea la tasa de ticks, más sobrecarga μC / OS-II impone al sistema. La frecuencia del tic del reloj depende de la resolución de tic deseada de una aplicación. Las fuentes de tic se pueden obtener dedicando un temporizador de hardware o generando una interrupción desde una señal de línea de alimentación de corriente alterna (CA) (50 o 60 Hz). Esta fuente de tiempo periódica se denomina tic del reloj. [11]

Una vez que se determina un tic del reloj , las tareas pueden ser:

  • Retrasar una tarea
  • Reanudar una tarea retrasada

Comunicarse entre tareas

La comunicación entre tareas o entre procesos en μC / OS-II se produce a través de: semáforos , buzón de mensajes, colas de mensajes, tareas y rutinas de servicio de interrupción (ISR). Pueden interactuar entre sí cuando una tarea o un ISR indica una tarea a través de un objeto del núcleo llamado bloque de control de eventos (ECB). La señal se considera un evento.

μC / OS-III

μC / OS-III es el acrónimo de Micro-Controller Operating Systems Versión 3, introducido en 2009 y que agrega funcionalidad al μC / OS-II RTOS.

μC / OS-III ofrece todas las características y funciones de μC / OS-II. La mayor diferencia es la cantidad de tareas admitidas. μC / OS-II permite solo 1 tarea en cada uno de los 255 niveles de prioridad, para un máximo de 255 tareas. μC / OS-III permite cualquier número de tareas de aplicación, niveles de prioridad y tareas por nivel, limitado solo por el acceso del procesador a la memoria. [12] [13]

μC / OS-II y μC / OS-III son actualmente mantenidos por Micrium, Inc., una subsidiaria de Silicon Labs, y se pueden licenciar por producto o por línea de productos.

Usos en sistemas embebidos

Los usos son los mismos que para μC / OS-II

Estados de la tarea

μC / OS-III es un sistema operativo multitarea . Cada tarea es un ciclo infinito y puede estar en cualquiera de los cinco estados (inactivo, listo, en ejecución, interrumpido o pendiente). Las prioridades de las tareas pueden oscilar entre 0 (prioridad más alta) y un máximo de 255 (prioridad más baja posible).

Programación por turnos

Cuando dos o más tareas tienen la misma prioridad, el kernel permite que una tarea se ejecute durante un período de tiempo predeterminado, se denomina cuanto y luego selecciona otra tarea. Este proceso se denomina programación por turnos o división del tiempo. El kernel da control a la siguiente tarea en línea si:

  • La tarea actual no tiene trabajo que hacer durante su intervalo de tiempo, o
  • La tarea actual se completa antes del final de su intervalo de tiempo, o
  • La franja de tiempo termina.

Granos

La funcionalidad del kernel para μC / OS-III es la misma que para μC / OS-II.

Gestionar tareas

La administración de tareas también funciona de la misma manera que para μC / OS-II, sin embargo, μC / OS-III admite la multitarea y permite que una aplicación tenga cualquier cantidad de tareas. El número máximo de tareas está limitado únicamente por la cantidad de memoria (tanto el código como el espacio de datos) disponible para el procesador.

Una tarea se puede implementar mediante la programación de ejecución hasta su finalización , en la que la tarea se borra a sí misma cuando finaliza, o más típicamente como un bucle infinito , esperando que ocurran eventos y procesando esos eventos.

Manejo de la memoria

La gestión de la memoria se realiza de la misma forma que en μC / OS-II.

Gestionar el tiempo

μC / OS-III ofrece las mismas funciones de gestión del tiempo que μC / OS-II. También proporciona servicios a las aplicaciones para que las tareas puedan suspender su ejecución por retrasos definidos por el usuario. Los retrasos se especifican mediante un número de tics del reloj u horas, minutos, segundos y milisegundos .

Comunicarse entre tareas

A veces, una tarea o ISR debe comunicar información a otra tarea, porque no es seguro que dos tareas accedan a los mismos datos específicos o recursos de hardware a la vez. Esto se puede resolver mediante una transferencia de información, denominada comunicación entre tareas. La información se puede comunicar entre tareas de dos formas: a través de datos globales o mediante el envío de mensajes.

Cuando se utilizan variables globales, cada tarea o ISR debe asegurarse de tener acceso exclusivo a las variables. Si hay un ISR involucrado, la única forma de garantizar el acceso exclusivo a las variables comunes es deshabilitar las interrupciones . Si dos tareas comparten datos, cada una puede obtener acceso exclusivo a las variables deshabilitando las interrupciones, bloqueando el planificador, usando un semáforo o, preferiblemente, usando un semáforo de exclusión mutua . Los mensajes se pueden enviar a un objeto intermedio llamado cola de mensajes, o directamente a una tarea, ya que en μC / OS-III, cada tarea tiene su propia cola de mensajes incorporada. Utilice una cola de mensajes externa si varias tareas deben esperar mensajes. Envíe un mensaje directamente a una tarea si solo una tarea procesará los datos recibidos. Mientras una tarea espera a que llegue un mensaje, no utiliza tiempo de CPU.

Puertos

Un puerto implica tres aspectos: CPU, SO y código específico de la placa (BSP). μC / OS-II y μC / OS-III tienen puertos para los procesadores y placas más populares del mercado y son adecuados para su uso en sistemas integrados críticos para la seguridad , como aviación, sistemas médicos e instalaciones nucleares. Un puerto μC / OS-III consiste en escribir o cambiar el contenido de los archivos específicos de tres kernel: OS_CPU.H, OS_CPU_A.ASM, y OS_CPU_C.C. Es necesario escribir o cambiar el contenido de los archivos específicos de tres CPU: CPU.H, CPU_A.ASMyCPU_C.C. Finalmente, cree o cambie un paquete de soporte de placa (BSP) para la placa de evaluación o placa de destino que se está utilizando. Un puerto μC / OS-III es similar a un puerto μC / OS-II. Hay muchos más puertos de los que se enumeran aquí, y los puertos están sujetos a un desarrollo continuo. Tanto μC / OS-II como μC / OS-III son compatibles con bibliotecas populares SSL / TLS como wolfSSL , que garantizan la seguridad en todas las conexiones.


Cambio de licencia

Después de la adquisición por Silicon Labs, Micrium en 2020 cambió a un modelo de licencia de código abierto en febrero de 2020. Esto incluye uC / OS III, todas las versiones anteriores, todos los componentes (USB, sistema de archivos, GUI, TCP / IP, etc.).


Documentación y soporte

Además de un foro de soporte típico, se encuentran disponibles varios libros bien escritos. Los libros están disponibles como archivos PDF gratuitos o para su compra a bajo costo como libros de tapa dura. Varios libros están adaptados a una arquitectura / plataforma de desarrollo de microcontroladores en particular. El soporte pagado está disponible en Micrium y otros.

Referencias

  1. ^ "NiosII GCC con MicroC / OS" . Escuela de Ingeniería Eléctrica e Informática . Universidad de Cornell. Junio ​​de 2006 . Consultado el 25 de abril de 2017 .
  2. ^ Labrosse, Jean J. MicroC / OS-II: El núcleo en tiempo real (segunda ed.). pag. 77.
  3. ^ Wikiversidad: Sistemas operativos / Modelos de kernel # Kernel monolítico
  4. ^ Labrosse, Jean J. MicroC / OS-II: El núcleo en tiempo real (segunda ed.). pag. 39.
  5. ↑ a b Labrosse, Jean J. MicroC / OS-II: The Real Time Kernel (Segunda ed.). pag. 40.
  6. ^ Labrosse, Jean J. MicroC / OS-II: El núcleo en tiempo real (segunda ed.). pag. 42.
  7. ^ Liu, Chung Lang; Layland, James W. (1973). "Programación de algoritmos para multiprogramación en un duro entorno de tiempo real". Revista de la ACM . 20 (1): 46–61. CiteSeerX 10.1.1.36.8216 . doi : 10.1145 / 321738.321743 . 
  8. ^ Bovet, Daniel. "Comprensión del kernel de Linux" . Archivado desde el original el 21 de septiembre de 2014.
  9. ^ Labrosse, Jean J. MicroC / OS-II: El núcleo en tiempo real (segunda ed.). págs. 45–49.
  10. ^ Labrosse, Jean J. MicroC / OS-II: El núcleo en tiempo real (segunda ed.). págs. 273-285.
  11. ^ Labrosse, Jean J. MicroC / OS-II: El núcleo en tiempo real (segunda ed.). págs. 145-152.
  12. ^ "Comparación de características de μC / OS-II y μC / OS-III" . Micrium .
  13. ^ "Resumen de μC / OS-III" . Micrium .

Fuentes

  • Soporte de protocolo para μC / OS-II de Fusion Embedded
  • Manual de usuarios de Micrium-uCOS-III 1a edición
  • uC / OS-III: el núcleo en tiempo real para Renesas RX62N

enlaces externos

  • Página web oficial
  • SiliconLabs en GitHub
  • Resumen de estructuras de datos y funciones de uC / OS-II de uso común
  • NiosII GCC con MicroC / OS
  • Manual de referencia de μC / OS-II
  • Cómo ejecutar una aplicación μC / OS-II
Obtenido de " https://en.wikipedia.org/w/index.php?title=Micro-Controller_Operating_Systems&oldid=1028985557 "