El paquete Rowley Crossworks (incluye compilador, IDE, interfaz de depuración, etc.) también incluye algo llamado Crossworks Tasking Library (CTL). Desde su sitio web:
Biblioteca de tareas de CrossWorks, conocida como CTL. CTL es una biblioteca de tareas libre de regalías que proporciona una función de sincronización y cambio de tareas de prioridad múltiple y preventiva. Además, la biblioteca también puede proporcionar soporte para el manejo de interrupciones y temporizadores.
Principalmente entiendo la descripción de la parte de tareas de mis investigaciones sobre los programadores de tareas (con la excepción de la sincronización... ¿qué significa eso?). Sin embargo, el soporte para el manejo de interrupciones y temporizadores me tiene completamente desconcertado. ¿Eso no está construido en el entorno gcc (que crossworks usa por cierto)? ¿Eso significa que usan algún tipo de contenedor para la sintaxis de gcc?
ISR(PORTB_INT0_vect)
{
int_pin_handler();
}
Si es así, ¿qué ventaja ofrece poner eso en un kernel en lugar de simplemente escribir manualmente en los puertos apropiados, etc., como se haría en una programación verdaderamente completa? Finalmente, ¿es común que los sistemas operativos pequeños (estoy pensando en FreeRTOS, VxWorks no kernels de Linux) hagan este tipo de cosas?
Gracias
El punto no es adjuntar un ISR a una interrupción, como dijiste, la mayoría de los compiladores pueden hacer eso.
El punto es lo que se le permite hacer dentro de la ISR, especialmente con las primitivas de sincronización y comunicación (bandera, semáforo, cola, buzón, etc.) que proporciona la TL. Este es un asunto complicado, porque el TL no tiene control sobre cuándo ocurre una interrupción (a menos que deshabilite las interrupciones, lo que afecta la latencia máxima de interrupción, que es una cifra muy importante para un TL). Lograr un buen equilibrio entre el aumento de la latencia de interrupción y prohibir a los ISR hacer todo tipo de llamadas TL es uno de los problemas al escribir un TL, henec 'soporte' para interrupciones significa que al menos han pensado en esto.
NickHalden
NickHalden
Wouter van Ooijen