¿Cuáles son las reglas que debe cumplir la función para poder utilizarlas en RTOS?

1

Uso ATSAM4LC2A ARM que controla el 3xUSART , GPIOs , DMA . temporizadores con el uso de interrupciones y toda la lógica restante de mi aplicación ... El proyecto es funcional pero sin un RTOS todavía. Este es mi primer intento y quiero transferir mi lógica de código con la ayuda de FreeRTOS, pero tengo miedo de usarla porque la seguridad de seguridad es nueva para mí.

¿Hay algún comprobador de software que evalúe mi código como seguro para subprocesos? ¿O hay un conjunto de reglas escritas que puedo usar como lista de verificación para cada función que uso?

Las únicas reglas en las que puedo pensar son:

  • No se utilizan variables globales dentro de las funciones.
  • Use mutex si se usan variables globales ..

¿También es mejor buscar Thead-safe o reentrant para mi aplicación incrustada?

    
pregunta Tedi

1 respuesta

1

tu mejor apuesta aquí es seguir el idom "moverse rápido y romper cosas". Si su proyecto no es un núcleo de reactor nuclear, le sugiero que intente ver qué funciona y qué no, si tiene mentores cerca, pídales ayuda si se atasca y no puede resolverlo.

En general, un RTOS proporcionará formas de compartir datos entre tareas mediante el uso de buzones y bloqueos. Lo más importante es que en un modelo de memoria plana sin una MMU, ciertas funciones de la biblioteca tendrán versiones de reingreso que deben usarse. Por ejemplo, strtok usa el almacenamiento para almacenar la ubicación actual en la cadena, si dos subprocesos usan strtok, puede surgir una confusión entre llamadas sucesivas. En este cas debe utilizarse strtok_r.

Este documento en C / C ++ Thread Safety Analysis es una buena lectura.

    
respondido por el dizzyandlofty

Lea otras preguntas en las etiquetas