Introducci贸n a RTOS, sistemas operativos en tiempo real

Discutiremos c贸mo, cu谩ndo y quiz谩 el por que utilizar un sistema operativo en tiempo real (RTOS) en su sistema embedded.

Existe la percepci贸n generalizada de que un sistema operativo en tiempo real est谩 conectado solo con tecnolog铆a de alta gama y dispositivos complicados que realizan operaciones cr铆ticas o de vida o muerte.聽Esto es cierto solo a medias.

Hoy en d铆a, un RTOS se puede usar en casi todos los chips para implementar diferentes tipos de tareas, y no es necesario que todas sean de importancia cr铆tica.聽Este art铆culo lo ayudar谩n a explorar las oportunidades de RTOS para su propio proyecto.

驴Qu茅 es un sistema operativo (SO)?

Antes de empezar a hablar de RTOS, veamos brevemente qu茅 es un sistema operativo.聽Generalmente, un sistema operativo, o SO, es el sistema de soporte vital de una computadora o sistema integrado.

Es una pieza de software que asegura el funcionamiento del hardware y es responsable de la interacci贸n entre el hardware y las aplicaciones que se ejecutan por encima, en la computadora.

Un sistema operativo cumple una serie de funciones importantes, incluida la gesti贸n de la CPU, la memoria y los dispositivos perif茅ricos de entrada / salida.聽Adem谩s, un sistema operativo interact煤a entre el usuario y la m谩quina proporcionando una interfaz de usuario y servicios para todas las aplicaciones.

Sin embargo, hay casos en los que es posible que no necesite un sistema operativo.聽En estos casos, todas las operaciones deben ser preestablecidas por un desarrollador y la ejecuci贸n de la tarea y sub tareas est谩 asegurada por los algoritmos desarrollados.

Esto funciona bien para sistemas simples con hardware simple y una peque帽a cantidad de tareas o cuando un microcontrolador (MCU) o cualquier otro chip no es compatible con un sistema operativo.

En general, un sistema operativo sigue siendo la soluci贸n m谩s eficaz para la multitarea. El uso de un sistema operativo ahorra tiempo y esfuerzo al usuario al eliminar la necesidad de una gran cantidad de programaci贸n.

驴Qu茅 es un sistema operativo en tiempo real (RTOS)?

Un sistema operativo se ocupa de muchas tareas diferentes entre si, algunas de las cuales son cr铆ticas y deben ejecutarse de inmediato, por ejemplo, con aplicaciones en tiempo real.聽Otras tareas pueden ser de menor importancia y tambi茅n hay casos en los que el incumplimiento o incluso el retraso en la ejecuci贸n de una tarea de alta prioridad pueden ser cruciales y tener consecuencias.

Un sistema operativo, que tambi茅n puede denominarse sistema operativo de prop贸sito general, puede ejecutar tareas cr铆ticas y no cr铆ticas de acuerdo con la priorizaci贸n establecida por el desarrollador.

El principal problema es que lo que un GPOS es capaz de hacer en teor铆a puede no traducirse en la pr谩ctica.聽Por ejemplo, un GPOS puede cambiar de una tarea cr铆tica a otra operaci贸n, completando la tarea cr铆tica solo cuando surge la oportunidad.

Entonces, 驴C贸mo puede obtener una garant铆a de que una tarea de alta prioridad se ejecutar谩 a su debido tiempo sin demoras?聽Mediante el uso de un sistema operativo en tiempo real o RTOS.聽Este es un tipo de sistema operativo que garantiza que la ejecuci贸n de las tareas se lleve a cabo dentro del per铆odo de tiempo especificado.

Al aplicar limitaciones al tiempo de ejecuci贸n,聽un RTOS permite ejecutar aplicaciones en tiempo real que necesitan una respuesta inmediata.聽Este tipo de respuesta normalmente se mide en milisegundos o incluso microsegundos.

Real time operating system 2
El uso de RTOS es muy importante para los sistemas relacionados con las industrias de la salud.

El uso de RTOS es muy importante para los sistemas relacionados con las industrias de la salud, automotriz y aeroespacial, o cualquier otro sistema donde la falla podr铆a ser catastr贸fica o potencialmente mortal.

RTOS se usa com煤nmente en sistemas integrados basados 鈥嬧媏n microcontroladores, as铆 que profundicemos en esto.

Conceptos y principios de RTOS

Un sistema operativo en tiempo real proporciona un聽enfoque聽deterministaque excluye todo lo que sea aleatorio de la secuencia de operaciones realizadas en un sistema.聽En otras palabras, el sistema se comporta de forma predecible.

Siempre que los algoritmos se desarrollen e implementen correctamente, un RTOS asegura una gesti贸n adecuada de los recursos para que una tarea se ejecute con el tiempo exacto.聽El comportamiento temporal de un RTOS se considera determinista.

Excepto por el tiempo garantizado, un RTOS asegura el cambio de tareas en el intervalo previsto.聽Las tareas se interrumpen y se adelantan entre s铆 de acuerdo con la priorizaci贸n establecida por el desarrollador.聽A esto se le llamaprogramaci贸n preventiva.

La programaci贸n es un procedimiento importante para el desempe帽o de un sistema operativo que administra la lista de espera de tareas y determina la secuencia de eventos de acuerdo con las prioridades predefinidas.

En la programaci贸n RTOS, que es preventiva, cualquier proceso puede ser interrumpido por una tarea de m谩s alta prioridad siempre que se le asigne.聽Por lo tanto, las tareas cr铆ticas siempre prevalecer谩n sobre las tareas de baja prioridad.

Lo opuesto a la programaci贸n preventiva es la programaci贸n no preventiva o cooperativa.聽Un RTOS con un programador cooperativo era la primera versi贸n de un sistema operativo en tiempo real y no permit铆a interrumpir y cambiar a otra tarea hasta que una de ellas se completara o se pusiera en estado de espera.

En la programaci贸n preventiva, las tareas cambian en per铆odos de tiempo iguales, mientras que en la programaci贸n no preventiva, no hay un tiempo estricto en el cambio de tareas
En la programaci贸n preventiva, las tareas cambian en per铆odos de tiempo iguales, mientras que en la programaci贸n no preventiva, no hay previsto un tiempo estricto en el cambio de tareas

Otro principio importante establecido por un RTOS es laherencia prioritaria.聽Esto ocurre cuando las tareas de menor y mayor prioridad comparten un mismo recurso del sistema.

Para liberar el recurso lo antes posible para una tarea de alta prioridad, un subproceso con baja prioridad se bloquea y luego se restaura para que pase su secci贸n cr铆tica.

En otras palabras, la tarea hereda la prioridad y tan pronto como se completa la parte cr铆tica de la operaci贸n, la priorizaci贸n vuelve al estado inicial.

La herencia de prioridad no funciona para un GPOS: una tarea de alta prioridad tendr谩 que esperar hasta que una tarea de baja prioridad pase todas las secciones y luego se ejecute.聽Significa que una tarea de alta prioridad puede retrasarse durante un per铆odo de tiempo impredecible, esto es inaceptable en un RTOS.

Real time operating system 4
Los subprocesos de baja prioridad en un GPOS no heredan la prioridad de los subprocesos de mayor prioridad. 
Este gr谩fico muestra un sistema con dos subprocesos, pero puede tener muchos m谩s.

Los principios descritos anteriormente muestran la confiabilidad de RTOS, especialmente para aplicaciones en tiempo real que necesitan tiempo de latencias predecibles.聽As铆 es como funciona RTOS: siempre conoce el tiempo de respuesta exacto de cualquier operaci贸n que se ejecute en su sistema.

Por lo tanto, un sistema operativo en tiempo real es el l铆der absoluto en la competencia entre RTOS y SO cuando se trata de capacidad de respuesta.

RTOS en sistemas integrados

Los sistemas modernos requieren una mejor funcionalidad, m谩s opciones y oportunidades. Es por eso que la popularidad de los sistemas operativos en tiempo real est谩 creciendo r谩pidamente en el mundo de las soluciones integradas.

Garantizar la ejecuci贸n oportuna de las tareas de alta prioridad es extremadamente importante para las aplicaciones cr铆ticas o que salvan vidas y los sistemas en tiempo real que tienen plazos estrictos de ejecuci贸n.

Hoy en d铆a, se puede instalar un RTOS en pr谩cticamente todos los MCU modernos.聽De hecho, mi equipo implement贸 aplicaciones RTOS en casi todos los proyectos basados 鈥嬧媏n MCU que entregamos dentro de nuestros聽servicios de dise帽o electr贸nico聽en los 煤ltimos a帽os.

Este tipo de sistema operativo ofrece una amplia gama de beneficios.聽Entonces, 驴por qu茅 usar RTOS integrados en MCU?

Una de las razones m谩s obvias es la multitarea. Esto es innecesario con un sistema simple que solo tiene un par de tareas ejecut谩ndose en secuencia. Pero si necesita realizar muchas tareas simult谩neamente, RTOS est谩 a su servicio. Permite al desarrollador ejecutar varias tareas al mismo tiempo.

En caso de que su sistema integrado tenga una priorizaci贸n estricta de tareas, el programador preventivo de un RTOS permite cambiar a una operaci贸n de alta prioridad en cualquier momento, asegurando que se complete primero. Un desarrollador no tiene necesidad de controlar la ejecuci贸n de la tarea porque un RTOS se encarga de ello.

Un RTOS ofrece a los desarrolladores la capacidad de realizar m煤ltiples subprocesos y sincronizar, lo que facilita su trabajo.聽Sin RTOS, la implementaci贸n de estas opciones llevar铆a mucho m谩s esfuerzo.

Un efecto secundario que puede encontrar al usar un RTOS son los problemas de memoria. No es el RTOS en s铆 el que necesita los recursos de memoria, sino las m煤ltiples tareas que puede completar en tiempo real. Por lo tanto, debe asegurarse de que su MCU tenga suficiente RAM para adaptarse a un sistema operativo en tiempo real.

La falta de recursos centrales de la CPU tambi茅n puede ser motivo de preocupaci贸n para una soluci贸n RTOS. La sobrecarga depender谩 de un microcontrolador en particular y su funcionalidad.

Las caracter铆sticas del chip junto con los requisitos del proyecto deben tenerse en cuenta si decide optar por un RTOS.

Por ejemplo, el nRF52832 es un sistema multiprop贸sito en un chip (SoC) ofrecido por Nordic Semiconductor que se usa ampliamente con aplicaciones basadas en BLE. Sin duda, es compatible con una soluci贸n RTOS.

En uno de nuestros proyectos, desarrollamos un sistema de seguimiento con dispositivos BLE basado en el nRF52832. Tuvimos que abandonar la idea de usar un RTOS con este chip para poder reducir el consumo de energ铆a.

Otro ejemplo est谩 relacionado con el desarrollo de un dispositivo de ECG basado en el BGM113, que es un m贸dulo BLE desarrollado por Silicon Labs. No utilizamos una soluci贸n RTOS en este proyecto, por lo que pudimos ahorrar recursos de memoria de la MCU.

Por supuesto, puede prescindir de un RTOS y seguir cumpliendo los plazos de las aplicaciones en tiempo real. Esto es as铆 en procesos que constan de una sola tarea ( o dos), aunque esta sea estricta.

Por ejemplo, puede usar una m谩quina de estado y manejadores de interrupciones para dise帽ar todos los algoritmos necesarios para que una MCU habilite alg煤n tipo de multitarea, sincronizaci贸n y otras funciones 煤tiles.

Sin embargo, para implementar todo esto, necesitar谩 recursos de desarrollo adicionales.聽Eso es algo que la mayor铆a de las empresas tratan de evitar.聽Es por eso que se prefiere incorporar RTOS a聽la programaci贸n completa聽.

Un sistema operativo en tiempo real distribuye recursos, toma el control de todas las operaciones y ahorra tiempo.

C贸mo elegir un RTOS

Un RTOS puede ayudar a su proyecto de varias maneras. Antes de elegir un RTOS, aseg煤rese de que su sistema basado en MCU realmente necesite una soluci贸n RTOS.

Las soluciones RTOS son necesarias para lo siguiente:

  • Si necesita ejecutar varias tareas simult谩neamente para cumplir con los plazos especificados.
  • Si las tareas de alta prioridad necesitan una garant铆a de ejecuci贸n inmediata.
  • Si una respuesta oportuna es crucial para el sistema y se debe predecir la latencia.

Aqu铆 hay una breve lista de verificaci贸n de las cosas m谩s importantes que debe tener en cuenta al momento de decidirse por una soluci贸n RTOS:

  • Compruebe el potencial del n煤cleo de la CPU que se utiliza en el microcontrolador y si se puede ejecutar un RTOS en 茅l.
  • Vea las capacidades de RAM. Si no hay suficiente RAM disponible, probablemente deber铆a pensar en seleccionar otro chip.
  • Aseg煤rese de poder obtener todo el software necesario para ajustar un RTOS a su hardware. Estos pueden incluir paquetes de soporte de placa, controladores, bibliotecas, etc.
  • Consulte la disponibilidad de herramientas de desarrollo y depuraci贸n.
  • Asegure la disponibilidad de la documentaci贸n RTOS requerida y / o una amplia comunidad de desarrolladores.

Adem谩s, piense en el presupuesto que est谩 dispuesto a asignar para la integraci贸n de RTOS. La elecci贸n entre un RTOS comercial y una soluci贸n de c贸digo abierto depende tanto del desarrollo como de los recursos financieros disponibles.

Hay varias opciones disponibles entre productos de c贸digo abierto o comerciales.聽Los sistemas operativos en tiempo real proporcionados bajo una licencia de pago normalmente est谩n respaldados con soporte t茅cnico, documentaci贸n y herramientas de desarrollo.聽Sin embargo, esto depende del proveedor.

Entonces, antes de comprar una licencia, aseg煤rese de tener todo lo que necesita para instalar y ejecutar sin problemas el RTOS en su dispositivo.

Los proveedores comerciales proporcionan actualizaciones peri贸dicas y parches de seguridad que facilitan el mantenimiento del sistema.

Algunos ejemplos de RTOS comerciales incluyen VxWorks de Wind River Systems, QNX de Blackberry, Integrity de Green Hills Software, embOS de SEGGER, ThreadX de Microsoft Express Logic.

Estos RTOS generalmente est谩n dise帽ados para sistemas integrados y pueden admitir las plataformas de hardware m谩s utilizadas. En cualquier caso, debe verificar la compatibilidad de un RTOS con su arquitectura MCU.

Un RTOS de c贸digo abierto es una soluci贸n flexible que brinda m谩s oportunidades de personalizaci贸n. Sin embargo, supone una carga adicional para un desarrollador debido a la ausencia de soporte regular y herramientas listas para usar necesarias para el funcionamiento de RTOS.

Entonces, si se decide por una soluci贸n de c贸digo abierto, le recomendamos que elija un RTOS con una gran comunidad de desarrolladores. Es m谩s probable que obtenga ayuda con herramientas de desarrollo, actualizaciones y parches de seguridad.

Entre los RTOS de c贸digo abierto se encuentran FreeRTOS, Zephyr, RTLinux, eCos, RIOT y muchos otros.

FreeRTOS es uno de los RTOS de c贸digo abierto m谩s populares que se utilizan en los sistemas integrados basados 鈥嬧媏n MCU. Lo usamos en varios proyectos recientes. Tambi茅n lo recomendamos a los novatos en el desarrollo de aplicaciones en tiempo real e integraci贸n de sistemas operativos.

Real time operating system 5

FreeRTOS es compacto, por lo que puede ejecutarse en cualquier chip de tama帽o peque帽o. Es bastante r谩pido y mantiene la concurrencia de tareas a altas velocidades, proporcionando una respuesta oportuna para las operaciones requeridas.

Una de las ventajas m谩s importantes de FreeRTOS es su alta portabilidad.聽Es compatible con todas las principales plataformas de hardware, incluidas ARM, Atmel AVR, PIC, x86, ESP32 y muchas otras.

Con todo, es realmente dif铆cil destacar el mejor RTOS en una comparaci贸n de RTOS de c贸digo abierto frente a comerciales. Un RTOS comercial puede no ser tan rentable y flexible como un RTOS de c贸digo abierto. Sin embargo, no se beneficiar谩 de una soluci贸n de c贸digo abierto si no tiene experiencia interna o una comunidad de desarrolladores s贸lida.

Las caracter铆sticas b谩sicas, como la seguridad, el rendimiento y la compatibilidad de la plataforma RTOS, dependen principalmente de cada producto en particular, independientemente del tipo de licencia.

Conclusi贸n

Un sistema operativo en tiempo real proporciona una respuesta inmediata dentro de un per铆odo de tiempo predecible. Es la opci贸n m谩s obvia para los sistemas que necesitan realizar tareas de alta prioridad con plazos cr铆ticos.

La principal ventaja de usar un RTOS en un microcontrolador es que hace que el proceso de desarrollo sea menos doloroso, lo que le ahorra tiempo y esfuerzo.

Al compensar las capacidades limitadas del microcontrolador, un RTOS se encarga de la gesti贸n de recursos, clasifica las prioridades y mantiene la concurrencia de tareas.

Tan pronto como se haya decidido a utilizar un RTOS en su proyecto, podr谩 encontrar una soluci贸n adecuada entre una amplia gama de diversas soluciones RTOS integradas. Hay opciones para cualquier plataforma de hardware ofrecida por proveedores propietarios o proyectos de c贸digo abierto.

Siempre es mejor intentar optimizar el proceso de desarrollo para que sea m谩s eficiente y requiera menos tiempo. Una forma de hacerlo para muchos proyectos es mediante el uso de un RTOS.


Deja un comentario