principio de ucos
ucos-ii es un sistema operativo en tiempo real con un kernel privable para stm32, utiliza el temporizador de tictac del sistema para generar un ritmo de reloj regularmente para promover la programación, administración y conmutación de tareas.
Acerca del principio operativo general del sistema
2. Cuando se genera un latido del reloj, si una tarea con una prioridad más alta que la tarea que se está ejecutando actualmente está lista, entonces la prioridad ( "prioridad "Cuando " es 0, la tarea con la prioridad más alta toma la CPU, y la CPU guarda el entorno de la escena y lo coloca en la pila de tareas. Luego saque el entorno en vivo de la pila de tareas de alta prioridad y escríbalo en el registro de la CPU. (Los registros de la CPU aún no se han estudiado detenidamente). Cuando la ejecución de esta tarea entra en un retraso, o necesita esperar un tiempo o semáforo determinado. Luego, renunciará al derecho de usar la CPU y el sistema le dará la máxima prioridad y a la tarea lista de la tabla de tareas listas el derecho a usar la CPU. En este punto, se promueve todo el sistema y se programan todas las tareas.
Cambio de la hora y las tareas del sistema UCOS cuando no se produce ninguna interrupción
① Suponga que la tarea que se está ejecutando actualmente es una tarea de baja prioridad y que algunos registros en el registro del programa de la CPU lo son. Tareas de baja prioridad. Tareas prioritarias
②Cuando el programa se ejecuta y detecta que una tarea de alta prioridad ha entrado en estado listo, la CPU envía algunos comandos para copiar el contenido de algunos de los registros del programa actual. CPU a tareas de baja prioridad en la pila de tareas. Ese es 1 proceso.
③ En este momento, a través del mecanismo de la lista lista en este momento, se puede obtener la tarea de mayor prioridad del programa, que es el proceso 2 =
④. El proceso 3 es copiar el puntero de pila de la tarea de alta prioridad en este momento al registro del programa de la CPU para realizar el cambio de tarea.
Cuando hay una interrupción, el principio de ejecución del sistema UCOS
Cuando el programa está ejecutando una función de servicio de interrupción, se produce una interrupción del tic del sistema, porque el temporizador del tic del sistema tiene un alta prioridad, por lo tanto, esta función de servicio de interrupción se interrumpirá para realizar el cambio de tareas. Y, a veces, la interrupción no se puede retrasar. Por ejemplo, al recibir datos, puede ocurrir un error de recepción. provocando graves consecuencias.
En este momento, existe la operación que se muestra en la imagen a continuación, que se puede evitar.
La excepción PendSV (yo la llamo interrupción) está programada como la interrupción de menor prioridad. Si se está ejecutando una interrupción y el sistema se adelanta a ella, entonces esta interrupción suspenderá una interrupción PendSV para posponer el cambio de tarea.
El tiempo de cambio de tarea de UCOS se puede configurar en os_cfg.h, la macro OS_TICKS_PER_SEC, el número de tareas de UCOS y otras configuraciones también se pueden encontrar en este archivo.
UCOS-II proporciona principalmente servicios
Gestión de memoria
Gestión multitarea
Gestión de recursos periféricos
Acerca de crear y compilar
Este aspecto se trata en el libro, así que también registré mi comprensión
Dado que normalmente uso un entorno de desarrollo integrado como keil, lo he estudiado durante un tiempo. antes de Linux, pero todavía no entiendo muy bien la compilación y el archivo MAKE.
Edite el archivo MAKE para compilar los archivos fuente y los archivos de encabezado incluidos en los archivos .obj requeridos y luego vincule estos archivos .obj al programa que desea generar. Con respecto a los archivos MAKE, parece que cada compilador tiene sus propias reglas y comandos para archivos MAKE, porque los archivos MAKE escritos por el compilador GCC que aprendí antes y el compilador BCC que leí en el libro parecen ser diferentes. Tampoco profundicé en ello.
Por lo tanto, un entorno de desarrollo integrado es mejor y las herramientas deben ser lo más convenientes posible. Debe comprender los principios cuando necesita aprenderlos. En aplicaciones reales, probablemente sea Shi Lezhi quien use su propio Makefile para compilar archivos.
Tareas UCOS
Tres elementos de tareas (según tengo entendido)
Bloque de control de tareas
OSTaskCreate((void()(void ))start_task,
//Función de tarea
(void*)0,
//Parámetros pasados a la función de tarea
(OS_STK*)amp;START_TASK_STK[START_STK_SIZE-1],
//La parte superior de la pila de tareas
(INT8U)START_TASK_PRIO,
//La Prioridad de la parte superior de la pila de tareas
Incluye principalmente la dirección superior de la pila de la tarea.
Si la pila del procesador crece hacia abajo desde direcciones altas, entonces la dirección superior de la pila