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:
- ¿Debería aumentarse el tamaño de mi pila de tareas al menos el mayor tamaño posible de pila de interrupción?
- ¿Puedo asignar una pila de interrupciones por separado en Cortex M0 + en plano C (es decir, sin agregar su propio ensamblaje a cada ISR)?