¿El tamaño de la pila de tareas de FreeRTOS para el tamaño de la pila de interrupción?

3

Tengo FreeRTOS ejecutándose en un MKE06 Cortex-M0 + (basado en la demostración SAMD20), cadena de herramientas GCC. Estoy tratando de averiguar el tamaño óptimo de la pila de tareas (con la ayuda de avstack.pl).

Quiero usar solo la asignación de memoria estática. En las Preguntas frecuentes , he leído esto:

  

Los requisitos de pila de las rutinas de servicio de interrupción, que para muchos puertos RTOS son cero , ya que el RTOS cambiará para usar una pila de interrupción dedicada al ingresar a una rutina de servicio de interrupción.

Utilizo este puerto . No conozco mucho el ensamblaje, pero creo que no veo nada que pueda configurar el puntero de pila por separado para las interrupciones (¿esto es incluso compatible con M0 +?). Asigné la pila para la tarea inactiva manualmente (con vApplicationGetIdleTaskMemory), pero no encontré una función para proporcionar espacio de pila para las interrupciones. Las interrupciones funcionan bien, no uso interrupciones anidadas.

Mis preguntas:

  1. ¿Debería aumentarse el tamaño de mi pila de tareas al menos el mayor tamaño posible de pila de interrupción?
  2. ¿Puedo asignar una pila de interrupciones por separado en Cortex M0 + en plano C (es decir, sin agregar su propio ensamblaje a cada ISR)?
pregunta filo

2 respuestas

4

La rutina de servicio de interrupción usará la pila que también está utilizando para main (). Tienes una pila definida en tu script de vinculador, esta es la que se usa para main e ISR, separada de la pila de las tareas de FreeRTOS.

    
respondido por el Fabien
1

Cuando un dispositivo Cortex-M0 acepta una interrupción, cambia automáticamente para usar una pila diferente, por lo que las interrupciones no usan ninguna pila de la tarea.

Asegúrese de usar un gancho de desbordamiento de pila ( enlace ) en caso de que obtenga el tamaño es pequeño, y supervise el uso de la pila real ( enlace ) para asegurarse de que no esté asignando demasiada cantidad.

    
respondido por el Richard

Lea otras preguntas en las etiquetas