Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo determinar si la pila de la tarea ostaskcreate de ucos ii se ha desbordado?

¿Cómo determinar si la pila de la tarea ostaskcreate de ucos ii se ha desbordado?

1.1. Cuando la pila de tareas se desborda, significa que el sistema falla. En una unidad de múltiples microprocesadores (MMU) o un sistema de unidades de múltiples microprocesadores (MPU), detectar un desbordamiento de pila es muy sencillo porque es una de las funciones necesarias. (Para procesadores sin MMU y MPU, existe una estrategia de detección de desbordamiento de pila en uCOS-II/uCOS-III)

1.2. Al configurar el tamaño de la pila, debe considerar: todas las funciones que la pila puede llamar y el número de niveles de anidamiento de esas funciones, el tamaño de las variables locales asociadas y el espacio requerido para la rutina del servicio de interrupción. Además, la pila debe almacenarse en registros de CPU y, si el procesador tiene registros FPU de unidad de punto flotante, registros FPU. (Nota: por lo tanto, existe una regla tácita en los sistemas integrados para evitar escribir funciones recursivas)

1.3 Aunque el tamaño de la pila de tareas se puede calcular manualmente, hay demasiados factores a considerar y no puede ser muy grande. cálculo preciso. Por ejemplo, el uso de parámetros de llamadas a funciones en anidamiento jerárquico, la reserva de espacio de registro de la CPU durante cambios de contexto, la reserva de espacio de registro de la CPU durante interrupciones y el espacio de pila de los manejadores de interrupciones son un problema demasiado grande. Especialmente cuando la tarea usa printf() y otras funciones con argumentos variados, calcular estos argumentos es más difícil. Por tanto, este enfoque es poco realista en cualquier caso. número impar.

1.4. Se recomienda multiplicar stk_size por 1,5 o 2,0 para tareas que utilizan stk_size con menor precisión.