Red de conocimiento informático - Conocimiento informático - Análisis del sistema operativo integrado en tiempo real ucosii

Análisis del sistema operativo integrado en tiempo real ucosii

Características de ucos ii

1. ucos ii es un kernel abierto escrito por el Sr. Labrosse. La característica principal es que el código fuente es abierto. Esto tiene ventajas y desventajas para los usuarios. La ventaja es que, por un lado, es gratuito y, por otro, los usuarios pueden modificarlo según sus propias necesidades. La desventaja es que carece del soporte necesario y no tiene un paquete de software potente. Los usuarios generalmente necesitan escribir sus propios controladores, especialmente si el usuario usa un microcontrolador menos utilizado, también debe escribir su propio programa de trasplante.

2. Ucos II es un kernel preventivo, es decir, las tareas de alta prioridad que están listas pueden privar a las tareas de baja prioridad en ejecución de los derechos de uso de la CPU. Esta característica hace que su rendimiento en tiempo real sea mejor que el de los núcleos no preventivos. Por lo general, hacemos que las tareas de alta prioridad entren en el estado listo (como la señalización) en la rutina del servicio de interrupción. De esta manera, después de salir de la rutina del servicio de interrupción, se realizará el cambio de tarea y se ejecutará la tarea de alta prioridad. Tome el microcontrolador 51 como ejemplo. Puede encontrar los beneficios de hacer esto comparándolo. Si necesita utilizar interrupciones para recopilar un lote de datos y procesarlos, no puede realizar un procesamiento de datos complejo en el programa de servicio de interrupciones en el método de programación tradicional, porque esto prolongará demasiado el tiempo de apagado de la interrupción. Por lo tanto, el método más utilizado es establecer una 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 y vaya al programa de procesamiento de datos. Sin embargo, debido a que es imposible determinar dónde se ejecuta el programa cuando ocurre una interrupción, también es imposible determinar cuánto tiempo pasará antes de que se ejecute el programa de procesamiento de datos. No se puede determinar el tiempo de respuesta a la interrupción y el tiempo real. La naturaleza del sistema no es fuerte. Si utiliza μC/OS-II, siempre que la prioridad del programa de procesamiento de datos sea mayor y entre en el estado listo en la rutina del servicio de interrupción, el programa de procesamiento 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 esto puede no ser apropiado si el programa de procesamiento de datos es simple. Debido a que ucos ii requiere el uso de la función OSINTEXIT al final del programa de servicio de interrupción para determinar si se debe realizar el cambio de tarea, esto lleva una cierta cantidad de tiempo.

3. Ucos ii se diferencia de los conocidos sistemas operativos de tiempo compartido, como Linux, en que no admite el método de rotación de intervalos de tiempo. Ucos II es un sistema operativo en tiempo real basado en prioridad. La prioridad de cada tarea debe ser diferente. Al analizar su código fuente, encontrará que Ucos II utiliza la prioridad de la tarea como identificación de la tarea. , la tarea no podrá distinguir. La tarea con la prioridad más alta que ingresa primero al estado listo obtiene el derecho a usar la CPU. Solo después de que entrega el derecho a usar la CPU se pueden ejecutar otras tareas. Por lo tanto, sólo se puede decir que es multitarea, no multiproceso, al menos no el tipo de multiproceso con el que estamos familiarizados. Obviamente, si solo consideramos el rendimiento en tiempo real, ciertamente es mejor que el sistema de tiempo compartido. Puede garantizar que las tareas importantes siempre ocupen la CPU primero. Pero en el sistema, después de todo, las tareas importantes están limitadas, lo que hace que priorizar otras tareas sea un problema problemático. 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 definitivamente quieren que funcionen al mismo tiempo, en lugar de mostrar la información en una pantalla y luego mostrar la información en la otra pantalla. En este momento, sería más apropiado si ucos ii admitiera tanto el método de prioridad como el método de rotación de intervalos de tiempo.

4. ucos ii proporciona un mecanismo de protección para *recursos compartidos. Como se mencionó anteriormente, ucos ii es un sistema operativo que admite multitarea. Un programa completo se puede dividir en varias 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, siempre que los recursos no se compartan, no tiene que preocuparse por afectarse entre sí.

Para recursos compartidos (como puertos serie), ucos ii también proporciona una buena solución. Generalmente se utiliza el método del semáforo. En pocas palabras, cree un semáforo e inicialícelo. Cuando una tarea necesita utilizar un recurso compartido, primero debe solicitar el semáforo. Una vez que obtiene el semáforo, el semáforo no se liberará hasta que se agote el recurso. Durante este proceso, incluso si una tarea con mayor prioridad entra en el estado listo, el recurso no se puede utilizar porque no se puede obtener el semáforo. Los beneficios de esta característica son obvios, por ejemplo, cuando la pantalla muestra información, se genera una interrupción externa y la pantalla necesita mostrar otra información en el programa de servicio de interrupción. De esta forma, después de salir de la rutina del servicio de interrupción, la información original puede destruirse. Cuando se utiliza el método del semáforo en μC/OS-II, la nueva información se puede mostrar solo después de que la pantalla haya terminado de mostrar la información original, evitando así este fenómeno. Sin embargo, este enfoque se produce a expensas del rendimiento en tiempo real del sistema. Si mostrar la información original lleva mucho tiempo, el sistema tiene que esperar. A juzgar por los resultados, equivale a extender el tiempo de respuesta a la interrupción, lo que sin duda es fatal para la situación en la que la información no mostrada es información de alarma. Cuando esto sucede, se denomina inversión de prioridad en μC/OS-II, donde una tarea de alta prioridad debe esperar a que se complete una tarea de baja prioridad. En la situación anterior, la inversión de prioridad entre las dos tareas es inevitable. Por lo tanto, al utilizar ucos ii, debe tener una comprensión clara del sistema que está desarrollando antes de poder decidir si utilizar un semáforo para un determinado recurso compartido.

Algunas características de ucos ii en el uso de microcontroladores

1. La integración de ucos ii en el sistema del 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 programas que se escapaban o caían en bucles interminables. Puede utilizar un perro guardián para resolver el problema de la fuga del programa. En el último caso, especialmente si se trata de cálculos matemáticos complejos, solo puede establecer puntos de interrupción y dedicar mucho tiempo a analizarlo lentamente. Si ucos ii está integrado en el sistema, las cosas serán mucho más sencillas. 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 al 89C51, que tiene una cierta cantidad de RAM y ROM en el chip. Para algunos programas simples, si se utilizan métodos de programación tradicionales, ya no se necesita una memoria de expansión externa. Si ucos ii está integrado en él, si solo necesita utilizar servicios de programación de tareas, cambio de tareas, procesamiento de semáforos, retraso o tiempo de espera, no es necesaria una expansión externa de la ROM, pero sí una expansión externa de la RAM. Dado que ucos ii es un sistema operativo escalable, la cantidad de RAM que requiere depende de la cantidad de funciones del sistema operativo. Por ejemplo, μC/OS-II permite a los usuarios definir una cantidad máxima de tareas. Dado que cada vez que se crea una tarea, se genera una estructura de datos TCB correspondiente, y esta estructura de datos ocupa una gran parte del espacio de memoria. Por lo tanto, al definir el número máximo de tareas, se deben considerar las necesidades de la situación real. Si se establece demasiado grande, inevitablemente 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, pila máxima de anidamiento de interrupciones) requisito) ·Número de tareas

Afortunadamente, μC/OS-II puede definir el tamaño del espacio de pila para cada tarea por separado, y los desarrolladores pueden asignar espacio de pila de acuerdo con las necesidades reales de la tarea. Sin embargo, cuando la capacidad de la RAM es limitada, aún debe prestar atención al uso de matrices, estructuras de datos y funciones grandes. No olvide que los parámetros formales de las funciones también deben insertarse en la pila.

3. El trasplante de ucos ii también es una tarea que necesita atención. Si no hay un ejemplo de trasplante listo para usar, debe escribir el código de trasplante 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 un ejemplo de trasplante, es mejor leerlo antes de programar, porque implica operaciones de pila. Al escribir una rutina de servicio de interrupción, el orden en el que los registros se insertan en la pila debe corresponder al 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, es necesario compilar el kernel en un archivo de imagen y escribirlo en la ROM. Al reiniciar, comienza desde Cargue el archivo de la ROM a la RAM y luego ejecute la aplicación. El núcleo de ucos ii se compila en un archivo junto con el programa de aplicación. El usuario sólo necesita convertir este archivo al formato HEX y escribirlo en la ROM. Después del encendido, se ejecutará como un programa de microcontrolador normal.

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 del soporte técnico necesario y otras deficiencias, especialmente no tan ampliamente utilizados y continuamente investigados y actualizados como los sistemas integrados comerciales. Sin embargo, la apertura permite a los desarrolladores cortar y agregar las funciones requeridas por sí mismos, desempeñando un papel único en muchos campos de aplicación. Por supuesto, la incorporación de ucos ii en el sistema de microcontrolador debería depender del proyecto que se esté desarrollando. Para algunos proyectos simples y de bajo costo, no es necesario utilizar un sistema operativo integrado.