Article de reference

FreeRTOS

FreeRTOS est un noyau de système d'exploitation temps réel pour les dispositifs embarqués qui a été porté sur 40 plateformes de microcontrôleurs . Il est distribué sous la licen...

FreeRTOS est un noyau de système d'exploitation temps réel pour les dispositifs embarqués qui a été porté sur 40 plateformes de microcontrôleurs . Il est distribué sous la licence MIT .

Histoire

Le noyau FreeRTOS a été initialement développé par Richard Barry vers 2003, puis développé et maintenu par sa société, Real Time Engineers Ltd. En 2017, la gestion du projet FreeRTOS a été confiée à Amazon Web Services (AWS). Richard Barry continue de travailler sur FreeRTOS au sein d'une équipe AWS. Suite à ce passage sous le contrôle d'Amazon, les versions ultérieures du projet sont passées de la licence GPL version 2 (avec des exceptions pour la liaison statique à du code propriétaire extérieur au noyau FreeRTOS) à la licence MIT.

Mise en œuvre

FreeRTOS est conçu pour être compact et simple. Il est principalement écrit en langage C afin de faciliter son portage et sa maintenance. Il comprend également quelques fonctions en langage assembleur , notamment dans les routines de commutation de contexte spécifiques à l'architecture utilisées par le planificateur.

Gestion des processus

FreeRTOS propose des méthodes pour la gestion de plusieurs threads ou tâches , des mutex , des sémaphores et des temporisateurs logiciels . Un mode sans interruption est disponible pour les applications basse consommation. La gestion des priorités des threads est prise en charge. Les applications FreeRTOS peuvent être allouées statiquement, mais les objets peuvent également être alloués dynamiquement selon cinq schémas de gestion de la mémoire (allocation) :

  • allouer seulement;
  • allouer et libérer avec un algorithme très simple et rapide ;
  • un algorithme d'allocation et de libération de mémoire plus complexe mais rapide avec coalescence de la mémoire ;
  • une alternative au schéma plus complexe qui inclut la coalescence de la mémoire, permettant de diviser un tas sur plusieurs zones de mémoire.
  • et la bibliothèque C alloue et libère de la mémoire avec une protection d'exclusion mutuelle.

Les systèmes d'exploitation temps réel (RTOS) ne possèdent généralement pas les fonctionnalités avancées présentes dans des systèmes d'exploitation comme Linux et Microsoft Windows , telles que les pilotes de périphériques , la gestion avancée de la mémoire et les comptes utilisateurs. L'accent est mis sur la compacité et la rapidité d'exécution. FreeRTOS peut être considéré comme une bibliothèque de gestion de threads plutôt que comme un système d'exploitation, bien qu'une interface en ligne de commande et une abstraction des entrées/sorties (E/S) de type POSIX soient disponibles.

FreeRTOS gère le multithreading grâce à l'appel, par le programme hôte, d'une méthode de gestion des threads à intervalles courts et réguliers. Cette méthode alterne les tâches selon leur priorité et un algorithme d'ordonnancement de type round-robin . L'intervalle habituel est de 1 à 10 millisecondes ( de 1/1000 à 1/100 de seconde) via une interruption provenant d'un timer matériel, mais cet intervalle est souvent adapté aux besoins spécifiques de l'application .

La distribution logicielle inclut des configurations et des exemples prêts à l'emploi pour chaque port et compilateur, permettant une conception rapide des applications. Le site web du projet fournit la documentation, des tutoriels sur le système d'exploitation temps réel (RTOS) et des détails sur sa conception.

Caractéristiques principales

  • Livres et manuels de référence.
  • Faible consommation de mémoire, faible surcharge et exécution rapide.
  • Option sans tic-tac pour les applications basse consommation.
  • Conçu aussi bien pour les amateurs que pour les développeurs professionnels travaillant sur des produits commerciaux.
  • Le planificateur peut être configuré pour le multitâche préemptif ou coopératif.
  • Prise en charge des coroutines (les coroutines dans FreeRTOS sont des tâches simples et légères avec une utilisation limitée de la pile d'appels )
  • La prise en charge du traçage s'effectue via des macros de traçage génériques. Des outils tels que Tracealyzer, développé par Percepio, partenaire de FreeRTOS, permettent ainsi d'enregistrer et de visualiser le comportement d'exécution des systèmes basés sur FreeRTOS à des fins de débogage et de vérification. Cela inclut la planification des tâches et les appels au noyau pour les opérations sur les sémaphores et les files d'attente.

Architectures prises en charge

Dérivations

Amazon FreeRTOS

Amazon propose une extension désormais obsolète de FreeRTOS, à savoir FreeRTOS avec des bibliothèques pour la prise en charge de l'Internet des objets (IoT), spécifiquement pour Amazon Web Services . Depuis la version 10.0.0 en 2017, Amazon assure la maintenance du code de FreeRTOS, y compris les mises à jour du noyau d'origine.

SAFERTOS

SAFERTOS a été développé comme une version complémentaire de FreeRTOS, avec des fonctions communes, mais conçu pour les environnements critiques. FreeRTOS a fait l'objet d'une étude des risques et de l'opérabilité (HAZOP), ce qui a permis d'identifier et de corriger ses faiblesses. Le résultat a ensuite été soumis à un cycle de développement complet conforme à la norme IEC 61508 SIL 3, le niveau le plus élevé pour un composant logiciel.

SAFERTOS a été développé par Wittenstein High Integrity Systems, en partenariat avec Real Time Engineers Ltd, principal développeur du projet FreeRTOS. SAFERTOS et FreeRTOS partagent le même algorithme d'ordonnancement, des interfaces de programmation ( API ) similaires et sont par ailleurs très semblables, mais ont été développés avec des objectifs différents. SAFERTOS a été développé exclusivement en langage C afin de répondre aux exigences de certification à la norme IEC 61508.

Pour être conforme aux normes , SAFERTOS peut résider exclusivement dans la mémoire morte (ROM) intégrée au microcontrôleur. Lorsqu'il est implémenté en mémoire matérielle, le code SAFERTOS ne peut être utilisé que dans sa configuration d'origine certifiée. Cela signifie que la certification d'un système ne nécessite aucun nouveau test de la partie noyau. SAFERTOS est inclus dans la ROM de certains microcontrôleurs Stellaris de Texas Instruments. Le code source de SAFERTOS n'a pas besoin d'être acheté séparément. Dans ce cas d'utilisation, un fichier d'en-tête C est utilisé pour associer les fonctions de l'API SAFERTOS à leur emplacement en mémoire morte.

OPENRTOS

OPENRTOS est une version commerciale d'Amazon FreeRTOS, distribuée par Wittenstein High Integrity Systems. Ce produit offre un support et permet aux entreprises d'utiliser le noyau et les bibliothèques d'Amazon FreeRTOS sous les termes d'une licence commerciale plutôt que sous la licence open source MIT.