Cifre su hardware con este RTOS de código abierto

En general, el sistema operativo es el software que proporciona las funciones básicas de un ordenador. Esto garantiza que el ordenador detecte y responda a los periféricos (como teclados, pantallas, dispositivos móviles, impresoras, etc.) y administre la memoria y el espacio en disco.

Aunque en los sistemas operativos modernos parece que se ejecutan varios programas al mismo tiempo, el núcleo de la CPU solo puede ejecutar un subproceso a la vez. Cada tarea se realiza tan rápido y en una secuencia tan rápida que el resultado parece ser una gran multitarea. Esto es controlado por la subrutina a planificador.

Los sistemas operativos generalmente están diseñados para ordenadores. El sistema operativo está instalado en su disco duro y administra las tareas del ordenador.

Índice

    Por qué RTOS es importante para los sistemas integrados

    Descubrí el software embebido en 2008 cuando era estudiante de programación informática. ISS-51 chip. Como yo era informático, todos los programas que hice en otros cursos se ejecutaron en una PC. Pero programar en un chip fue una experiencia completamente diferente. Vi por primera vez que mis programas se ejecutaban en una placa de metal y todavía recuerdo la emoción cuando mi primer programa de lámparas para bicicletas fue un éxito.

    Pero la emoción duró relativamente poco. Cuanto más escribía programas simples, más problemas encontraba. No estaba solo en esta decepción. Programar un chip directamente es difícil y hay buenas razones por las que las PC usan un sistema operativo. Desafortunadamente, los chips de ordenador (sistema integrado) generalmente no tienen un sistema operativo. Están "codificados firmemente" con código sin un sistema operativo para ayudar a controlar cómo se ejecuta el código.

    Estos son los problemas que puede encontrar con la codificación dura de un chip de ordenador:

    Paralelismo

    No tienes demonios en el chip para controlar la ejecución. Para programas de desnudos, inevitablemente enorme while (1) un ciclo que contiene casi toda la lógica de transacción de todo el proyecto. Cada transacción provoca una o más funciones de retraso. Se ejecutan secuencialmente cuando el procesador realiza una función de retardo. Nada evita retrasos innecesarios, por lo que el restablecimiento de la transacción debe esperar. Como resultado, la mayor parte del tiempo de la CPU se gasta en ciclos vacíos, lo que es malo para el paralelismo.

    Modularidad

    En términos de diseño de software, el principio de alta cohesión y baja comunicación siempre se enfatiza en el proceso de desarrollo. Sin embargo, los módulos del software bare metal suelen ser muy interdependientes. Como se mencionó anteriormente, la mayoría de las características están reunidas en un enorme while (1) un ciclo difícil de dividir en módulos. Es un inconveniente desarrollar software con un bajo nivel de comunicación, lo que complica el desarrollo de grandes proyectos en tableros desnudos.

    Además, los desarrolladores deben tener cuidado al usar funciones de latencia cuando está habilitado un temporizador de vigilancia. Si el tiempo de retraso es demasiado largo, la función principal no tiene la capacidad de restablecer el temporizador de vigilancia, por lo que el temporizador de vigilancia se inicia en tiempo de ejecución. Para diseñar sin metal hay demasiadas cosas que considerar, incluso al llamar a la función de retardo. Cuanto más complejo sea el proyecto, más cuidadoso debe ser. Imagina que estás tratando de separar esta serie de interacciones con el tiempo sutil en un módulo.

    Ecosistema

    Muchos componentes de software avanzados dependen de la implementación de un sistema operativo de nivel inferior. Por ejemplo, desarrollé un proyecto de código abierto GratisModbus que planeé trasplantar a diferentes plataformas, incluso bare metal. Pero frente a la conveniencia de adaptarlo a diferentes sistemas operativos, algunas características son demasiado complejas para implementarlas en todas las ollas. Peor aún, muchas implementaciones deben desarrollarse desde cero en diferentes plataformas de hardware debido a la falta de elementos comunes.

    En este punto, mi implementación de pila Modbus aún no puede ejecutarse en placas de metal desnudo.

    Muchos kits de desarrollo de software Wi-Fi proporcionados por las principales empresas, como Realtek, TI y MediaTek, solo pueden ejecutarse en el sistema operativo. No publican el código fuente de su firmware para que el usuario pueda cambiarlos, por lo que no puedes usarlos en un entorno de puro metal.

    Capacidad en tiempo real

    Se requiere capacidad en tiempo real para algunas aplicaciones. En algunos casos, el uso del software de pasos críticos debe ejecutarse en un momento determinado. Para controlar la industria, por ejemplo, los dispositivos mecánicos deben realizar acciones en una forma y tiempo predeterminados. Sin posibilidad de averías en tiempo real que puedan poner en peligro la vida de los trabajadores. En plataformas bare metal, cuando todas las características se ponen en una grande while (1) ciclo, es imposible mantener las capacidades en tiempo real.

    reutilizable

    La reutilización depende de la modularidad. Nadie quiere hacer el mismo trabajo una y otra vez, especialmente cuando se trata de escribir código. Esto no solo es una pérdida de tiempo, sino que también hace que el mantenimiento del código sea mucho más difícil. Y, sin embargo, en diferentes plataformas de hardware con diferentes chips, la misma función debe adaptarse a diferentes hardware porque la implementación depende del hardware de bajo nivel. Inevitablemente inventa la rueda.

    Beneficios de RTOS

    Afortunadamente, existen sistemas operativos escritos para chips: se denominan sistemas operativos en tiempo real (RTOS) y, como la mayoría de los sistemas operativos, tienen un programador que proporciona un orden predecible de ejecución de código.

    Primero usé RTOS para bare metal en 2010 STM32 una serie de microcontroladores (MCU) comenzaron a hacerse populares y, debido a que eran tan potentes y ricos en funciones, muchas personas utilizaban sus sistemas operativos. solía RT-hilo un sistema operativo que tiene muchos componentes disponibles y listos para usar incorporados. Está disponible bajo la licencia Apache 2.0 y me siento más cómodo con él en comparación con otros sistemas operativos. Lo he estado desarrollando durante 10 años.

    Para la programación sin metal, RTOS resuelve la mayoría de los problemas más grandes que enfrentamos.

    Modularidad

    Con el sistema operativo, todo el software se puede dividir en varias tareas (conocidas como subprocesos). Cada subproceso tiene su propio espacio de ejecución independiente. Son independientes entre sí, lo que mejora la modularidad.

    Paralelismo

    Cuando un subproceso provoca una función de retraso, transfiere automáticamente la CPU a otros subprocesos que necesitan ejecutarse, lo que mejora el uso de la CPU y, en última instancia, el paralelismo.

    Tiempo real

    RTOS está diseñado con capacidades en tiempo real. A cada flujo se le asigna una prioridad específica. Los flujos más importantes tienen mayor prioridad y los flujos menos importantes tienen menor prioridad. Por lo tanto, el rendimiento de todo el software en tiempo real está garantizado.

    Eficiencia de desarrollo

    El sistema operativo proporciona un único nivel de interfaces abstractas. Esto facilita la acumulación de componentes reutilizables y aumenta la eficiencia del diseño.

    El sistema operativo es el producto de la sabiduría de un grupo de geeks del software. Muchas funciones de software comunes, como semáforos, notificaciones de eventos, buzones de correo, búfer de anillo, listas de cadenas unidireccionales, listas bidireccionales, etc., se encapsulan y abstraen para que estén listas para usar.

    Los sistemas operativos, como Linux y RT-Thread, implementan un conjunto estándar de interfaces de hardware para hardware fragmentado. Esto se conoce como la estructura del controlador del dispositivo. Debido a esto, un ingeniero de software puede concentrarse en el desarrollo sin preocuparse por el hardware básico o inventar una rueda.

    Ecosistema de software

    La riqueza del ecosistema RT-Thread reduce el proceso de cambio cuantitativo a cualitativo. La modularidad mejorada y la reutilización con el sistema operativo permite a los programadores encapsular componentes basados ​​en RTOS reutilizables que son fáciles de integrar. Se pueden usar en proyectos y compartir con otros desarrolladores de aplicaciones integradas que necesitan maximizar el valor del software.

    Por ejemplo, el proyecto LkdGui es una biblioteca gráfica de código abierto para pantallas monocromáticas. Puede ver su uso en entornos industriales para interfaces gráficas simples y hermosas para paneles de control. LkdGui proporciona funciones gráficas como puntos de dibujo, líneas, rectángulos, visualización de texto, widgets de botones e indicadores de progreso.

    La capacidad de reutilizar una biblioteca extensa y confiable como LkdGui significa que los programadores pueden aprovechar el trabajo de sus pares. Sin RTOS esto sería imposible.

    Prueba RT-Thread

    Soy un fanático del código abierto y he incorporado software de código abierto en GitHub. Antes de crear software de código abierto, rara vez hablaba con otras personas sobre mis proyectos porque las personas inevitablemente usaban diferentes chips o plataformas de hardware, por lo que nuestro código difícilmente podía funcionar en el hardware de los demás. RTOS, como RT-Thread, mejora en gran medida la reutilización del software, por lo que muchos expertos diferentes de todo el mundo pueden hablar entre sí sobre el mismo proyecto. Esto anima a más y más personas a compartir y hablar sobre sus proyectos. Si te gusta la programación sin metal, prueba RT-Thread en tu próximo proyecto.

    Artículos de interés

    Subir