Autor Tema: c y rtos preemptive como elegir  (Leído 1650 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alexrlopez86

  • PIC10
  • *
  • Mensajes: 25
c y rtos preemptive como elegir
« en: 12 de Octubre de 2011, 15:39:52 »
ando buscando un rtos preemptive y un compilador de c compatible con dicho rtos e probado el rtos de ccs pero no es preemptive,me atrae el sdcc pero no encuentro el rtos, también me gustaría que el código sea portable a pic 16 aunque solo sea sin rtos espero su ayuda

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: c y rtos preemptive como elegir
« Respuesta #1 en: 12 de Octubre de 2011, 17:57:20 »
Hola Alex.
Tengo entendido q el RTOS del CCS es preeptive,Esta tambien el uCOS que es preeptive ,esta bien documentado y muy popular ,peeeero es probable que no entre o tenga un port para estos pic16f.
Si pensas en un futuro con los cooperativos ,te recomiendo fuertemente uno que estoy usando el OSA soporta muchos pic & compiladores(CCS inclusive) y es gratis .El autor Victor Timofeev responde los mails y es muy atento.
Saludos
No es la conciencia del hombre la que determina su ser, sino, por el contrario, es su ser social el que determina su conciencia

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: c y rtos preemptive como elegir
« Respuesta #2 en: 17 de Octubre de 2011, 10:18:14 »
El RTOS de CCS es cooperativo.

Un excelente RTOS preentivo para pics es el FreeRTOS, yo lo he trabajado y es muy efectivo y se comporta muy bien. Lo he probado en PIC18, PIC24, dsPIC y PIC32, en todos los casos funciona bien. Además se puede configurar como cooperativo.

En el caso de los PIC16 no se puede implementar un RTOS preentive porque no se puede acceder a la pila del contador de programas y por tanto no se puede hacer un cambio de contexto expropiando a una tarea del procesador. El cambio de contexto requiere que desde la ISR del planificador se pueda leer la pila del contador de programa para poder salvar el contexto de la tarea expropiada. Del mismo modo se requiere poder escribir en la pila para que cuando el scheduler retorne de la ISR lo haga hacia la tarea que gana el procesador. Los PIC16 tampoco dejan escribir la pila del PC, por tanto nada de planificación expropiativa en esos micros.

En mi opinión el RTOS de CCS es una opción decente para los PIC16, pero en cuanto cambias a los PIC18 es mejor pasarse a algo más serio como FreeRTOS, que tiene un excelente soporte para las familias de Microchip.

Con el RTOS de CCS hay que tener cuidado porque este es un RTOS del tipo single executive del tipo table driven y puede tener problemas el sistema si no se comporta en tiempo real. Es normal que si pierdes el plazo de una tarea el resto comience a perder plazos como en efecto dominó y el sistema se vuelva inestable. En general este es un problema común a los planificadores del tipo cooperativo, pero en los PIC16 es más complejo porque al no tener la posibilidad de reaccionar activamente ante fallas producto del asunto de la pila del contador de programas, es muy difícil poder recuperarse de errores, como no sea RESET o que el WatchDog ladre.

Con los precios del mercado, yo creo que cualquier aplicación suficientemente compleja que requiera el uso de un RTOS debería implementarse en PIC24, dsPIC o PIC32, ya que estos uC están saliendo incluso más baratos que los PIC18, así ganas mejora en arquitectura, costo y la posibilidad de utilizar un buen RTOS.

Saludos
Reinier


 

anything