FreeRTOS et variable persistante
Bonjour,
C'est la première fois que j’utilise un OS (FreeRTOS) sur un µControleur et j'aimerai être certain de ne pas faire de boulettes sur la gestion des variables persistantes partagées entre plusieurs threads.
Mon application : j'ai un équipement qui est configurable via plusieurs processus (HTTP, Telnet, FTP, console série, ...). Une variable persistante contient la configuration active du produit.
Pour la modification de la configuration, je pensais mettre en place un système avec de mutex. Lorsque des commandes de configurations sont reçues par l'équipement, le processus actif :
- réserve le mutex
- copie dans une variable temporaire persistante la configuration active
- traite les commandes reçues en modifiant la variable temporaire
- si pas d'erreur détecté pendant le traitement (on a validé que toutes les commandes reçues étaient valide) : copie la configuration de la variable temporaire vers la variable de la configuration active
- libère le mutex
=> Le traitement dure entre 100 et 1000ms (ex: traitement fichier de configuration par FTP) s'il n'y a pas de problème de communication Ethernet (et donc beaucoup plus en cas de perte de paquets Ethernet).
Pour l'affichage de la configuration active par l'un des processus, je pense faire comme ça :
- réserve le mutex
- affiche les informations contenues dans la variable configuration active
- libère le mutex
=> Le traitement peut dure entre 50 et 300ms s'il n'y a pas de problème de communication Ethernet
Remarque : il n'y qu'une variable temporaire pour tous les processus. Cela permet d'éviter de devoir créer une variable temporaire pour chaque socket de chaque processus, ce qui permet de limiter la consommation de la RAM (la variable configuration active fait environ 25% de la RAM disponible).
Remarque : le traitement de modification de la configuration peut donc bloquer les traitement d'affichage de la configuration.
Est-ce que vous pensez que c'est la bonne méthode ?
Merci d'avance