Análisis del sistema operativo integrado en tiempo real UCS II
Palabras clave: sistema operativo en tiempo real; UCS II; microcontrolador
Introducción
Ya en la década de 1960, algunas personas comenzaron a investigar y desarrollar sistemas operativos integrados. . Sin embargo, sólo recientemente se ha mencionado cada vez más en China. Su posición cada vez más importante en campos que requieren procesamiento en tiempo real, como las comunicaciones, la electrónica y la automatización, también ha atraído cada vez más atención. Sin embargo, la gente tiende a hablar de algunos núcleos comerciales conocidos, como VxWorks, PSOS, etc.
Características de ucos ii
1. ucos ii es un núcleo abierto escrito por el Sr. Labrosse. La característica más importante es que el código fuente es abierto. La característica más importante de ucos ii es el código fuente abierto. Esta es una bendición a medias para los usuarios. La ventaja es que es gratuito y por otro lado los usuarios pueden modificarlo según sus necesidades. La desventaja es la falta del soporte necesario y de paquetes de software potentes. Los usuarios normalmente necesitan escribir sus propios controladores, especialmente cuando utilizan microcontroladores menos comunes, y también deben escribir sus propios programas de portabilidad.
2. UCOS II es un kernel preventivo, lo que significa que las tareas de alta prioridad pueden privar a las de baja prioridad del uso de la CPU cuando estén listas. Esta característica lo convierte en un mejor kernel en tiempo real que los kernels no preventivos. Por lo general, dejaremos que las tareas de alta prioridad entren en el estado listo (como enviar una señal) en la rutina del servicio de interrupción, de modo que después de salir de la rutina del servicio de interrupción, se realice el cambio de tarea y se ejecute la tarea de alta prioridad. Tomando el microcontrolador 51 como ejemplo, los beneficios de esto se pueden ver mediante comparación. Si es necesario interrumpir la recopilación y el procesamiento de un lote de datos, el procesamiento de datos complejo no se puede realizar en la rutina del servicio de interrupción en el método de programación tradicional, porque esto prolongará demasiado el tiempo de apagado de la interrupción. Entonces, el método común es establecer un bit de bandera y luego salir de la interrupción. Dado que el programa principal se ejecuta en un bucle, siempre existe la posibilidad de que detecte este indicador e ingrese a la rutina de procesamiento de datos. Sin embargo, dado que es imposible determinar con precisión dónde se ejecutó el programa cuando ocurrió la interrupción, ni cuánto tiempo lleva completar el programa de procesamiento de datos, no se puede determinar el tiempo de respuesta a la interrupción y no se puede determinar el rendimiento en tiempo real del sistema. fuerte. Si usa μC/OS-II, siempre que la prioridad del controlador de datos sea más alta y entre en el estado listo en la rutina del servicio de interrupción, el controlador de datos se ejecutará inmediatamente después de que finalice la interrupción. Esto puede limitar el tiempo de respuesta a la interrupción dentro de un cierto rango. Esto es esencial para algunos sistemas que tienen requisitos estrictos sobre el tiempo de respuesta a interrupciones. Sin embargo, cabe señalar que este enfoque puede no ser apropiado si el programa de procesamiento de datos es relativamente simple. Debido a que ucos ii necesita usar la función OSINTEXIT al final de la rutina del servicio de interrupción para decidir si realizar el cambio de tarea, esto lleva una cierta cantidad de tiempo.
3. A diferencia de los famosos sistemas operativos de tiempo compartido como Linux, ucos ii no admite el método de rotación de intervalos de tiempo. Ucos II es un sistema operativo en tiempo real basado en prioridades. La prioridad de cada tarea es definitivamente diferente. El análisis de su código fuente encontrará que Ucos II usa la prioridad de la tarea como identificador de tarea. las tareas no se distinguirán. No hay forma de diferenciar entre tareas si sus prioridades son las mismas. La tarea de mayor prioridad que ingresa al estado listo obtiene el derecho a usar la CPU primero, y solo después de que cede el derecho a usar la CPU se pueden ejecutar otras tareas. Por lo tanto, esto sólo puede describirse como multitarea, no como multiprocesamiento, al menos no como el tipo de multiprocesamiento con el que estamos familiarizados. Obviamente, si solo se considera el rendimiento en tiempo real, definitivamente es mejor que el sistema de tiempo compartido, porque el sistema de tiempo compartido puede garantizar que las tareas importantes siempre tengan prioridad en la CPU, pero en este sistema, las tareas importantes están limitadas después Todo, lo que hace que cómo determinar otras prioridades de tareas se convierta en una cuestión desconcertante. Además, resulta más beneficioso para los usuarios realizar algunas tareas de forma alternativa.
Por ejemplo, cuando se utiliza un microcontrolador para controlar dos pantallas pequeñas, tanto el programador como el usuario seguramente querrán que funcionen simultáneamente, en lugar de mostrar información de una pantalla primero y luego de la otra. En este momento, sería más apropiado si ucos ii admitiera el método de prioridad y admitiera el método de rotación de intervalos de tiempo.
4. Ucos ii proporciona un mecanismo de protección para recursos habilitados para ****. Como se mencionó anteriormente, ucos ii es un sistema operativo que admite multitarea. Un programa completo se puede dividir en múltiples tareas y diferentes tareas realizan diferentes funciones. De esta forma, una tarea equivale a un submódulo en un diseño modular. Al agregar código a una tarea, no tiene que preocuparse por interactuar con él siempre que no sea un recurso que disfrute mucho. Ucos ii también proporciona una buena solución para recursos habilitados para ****, como puertos serie. Generalmente, el método utilizado es el método de registro. En pocas palabras, primero cree e inicialice una señal. Cuando una tarea necesita utilizar los recursos de los que disfruta ****, primero debe solicitar este registro. Una vez que obtenga este registro, este registro solo se liberará cuando haya terminado de utilizar los recursos. Durante este proceso, incluso si la tarea de mayor prioridad entra en el estado lista, no puede utilizar el recurso porque no puede obtener la señal. Los beneficios de esta característica son obvios, por ejemplo, cuando el monitor muestra información, se genera una interrupción externa y la rutina del servicio de interrupción requiere que el monitor muestre otra información. Por lo tanto, después de salir de la rutina del servicio de interrupción, la información original puede destruirse. En μC/OS-II, este fenómeno se puede evitar utilizando un enfoque de señal, que permite que la pantalla muestre nueva información después de que se haya mostrado la información original. Sin embargo, este enfoque se produce a expensas del rendimiento en tiempo real del sistema. Si lleva mucho tiempo mostrar la información original, el sistema debe esperar. Por tanto, esto equivale a ampliar el tiempo de respuesta a la interrupción, lo que sin duda es fatal si la información que no se muestra es información de alarma. Cuando esto sucede, se llama inversión de prioridad en μC/OS-II, donde una tarea de mayor prioridad debe esperar a que se complete una tarea de menor prioridad. En la situación anterior, la inversión de prioridad entre las dos tareas es inevitable. Por lo tanto, cuando utilice ucos II, debe comprender completamente el sistema que está desarrollando antes de decidir si utilizará semáforos para los recursos que disfruta.
Algunas características de ucos ii utilizadas en microcontroladores
1. Integrar ucos ii en un sistema de microcontrolador mejorará la confiabilidad del sistema y simplificará la depuración del programa. En el pasado, el trabajo de desarrollo de microcontroladores tradicionales a menudo encontraba situaciones en las que el programa daba vueltas o entraba en un bucle infinito. Los perros guardianes se pueden utilizar para resolver el problema de la velocidad del programa, pero en el último caso, especialmente cuando se trata de cálculos matemáticos complejos, sólo se pueden establecer puntos de interrupción y dedicar mucho tiempo a analizar lentamente. Las cosas son mucho más sencillas si ucos ii está integrado en el sistema. El programa completo se puede dividir en muchas tareas, cada tarea es relativamente independiente y luego se establece una función de tiempo de espera en cada tarea. Una vez que se agota el tiempo, la tarea debe ceder el derecho a usar la CPU. Incluso si ocurre un problema en una tarea, no afectará el funcionamiento de otras tareas. Esto no sólo mejora la confiabilidad del sistema, sino que también facilita la depuración del programa.
2. Integrar ucos ii en un sistema de microcontrolador aumentará la sobrecarga del sistema. El microcontrolador 51 que se utiliza actualmente generalmente se refiere al 87C51 o 89C51, y su chip tiene una cierta cantidad de RAM y ROM. Para algunos programas simples, si utiliza métodos de programación tradicionales, no es necesario ampliar la memoria. Si incorpora ucos ii en él y solo usa servicios de programación de tareas, cambio de tareas, manejo de señales, retraso o tiempo de espera, no se necesita ROM externa, pero sí RAM externa. Dado que ucos ii es un sistema operativo simplificado, la cantidad de RAM requerida depende de cuánta funcionalidad tenga el sistema operativo. Por ejemplo, μC/OS-II permite al usuario definir el número máximo de tareas. Cuando se crea cada tarea, se genera una estructura de datos TCB correspondiente, que ocupará una gran parte del espacio de memoria. Por tanto, a la hora de definir el número máximo de tareas, se deben considerar las necesidades de la situación real. Si es demasiado grande, provocará un desperdicio innecesario.
Después de incorporar ucos ii, el requisito total de RAM se puede obtener mediante la siguiente expresión:
Requisito total de RAM = requisito de RAM de la aplicación + requisito de RAM del área de datos del kernel + (requisito de pila de tareas + requisito máximo de pila de anidamiento de interrupciones) - Número de tareas
Afortunadamente, μC/OS-II puede definir individualmente el tamaño del espacio de pila de cada tarea y los desarrolladores pueden asignar espacio de pila en función de las necesidades reales de la tarea. Sin embargo, cuando la capacidad de la RAM es limitada, aún debe tener cuidado con el uso de matrices, estructuras de datos y funciones grandes, y no olvide que los parámetros formales de las funciones también se insertan en la pila.
3. El trasplante de ucos ii también es una tarea destacable. Si no hay ejemplos de portabilidad listos para usar, debe escribir el código de portabilidad usted mismo. Aunque solo es necesario modificar dos archivos, aún es necesario estar familiarizado con el microprocesador correspondiente. Es mejor consultar los ejemplos de trasplante existentes. Además, incluso si hay ejemplos de portabilidad, es mejor leerlos antes de programar porque implican manipulación de la pila. Al escribir una rutina de servicio de interrupción, el orden en que los registros se insertan en la pila debe ser coherente con el orden en el código transferido.
4. A diferencia de otros sistemas operativos integrados conocidos, el proceso de inicio de ucos ii en el sistema de microcontrolador es relativamente simple, a diferencia de algunos sistemas operativos que requieren que el kernel se compile en un archivo de imagen y se escriba. a la ROM. Después del reinicio, cargue el archivo de la ROM a la RAM antes de ejecutar la aplicación. El kernel de ucos ii se compila junto con la aplicación en un archivo y la aplicación se compila junto con el kernel en un archivo. La aplicación se arma y se compila en un archivo que el usuario simplemente convierte al formato HEX y escribe en la ROM, que luego se ejecuta como un programa de microcontrolador normal al encenderse.
Conclusión
Como se puede ver en la introducción anterior, ucos ii tiene las ventajas de ser gratuito, fácil de usar, alta confiabilidad y buen rendimiento en tiempo real, pero también tiene dificultades en el trasplante y carece de la tecnología necesaria. Desventajas como el soporte, especialmente porque no se usa tan ampliamente ni se investiga y actualiza continuamente como los sistemas integrados comerciales. Sin embargo, la apertura permite a los desarrolladores personalizar y agregar las funciones necesarias, desempeñando un papel único en muchas áreas de aplicaciones. Por supuesto, la incorporación de ucos ii en un sistema de microcontrolador debería depender del desarrollo del proyecto. Para algunos proyectos simples y de bajo costo, no es necesario utilizar un sistema operativo integrado.