Ibrahim

Cards (425)

  • Temps réel
    Tout système qui a une réponse déterministe à un événement donné
  • Système défaillant
    Système qui ne répond pas à une exigence de synchronisation
  • Les exigences en temps réel peuvent varier considérablement, à la fois dans la vitesse de l'exigence de synchronisation et la gravité des conséquences si les délais en temps réel requis ne sont pas respectés
  • MCU lisant l'ADC
    1. L'ADC affirme une ligne matérielle, signalant qu'une conversion a été effectuée et qu'elle est prête pour que le MCU transfère la lecture dans sa mémoire interne
    2. Le MCU qui lit le CAN a jusqu'à 20 ms pour transférer les données du CAN à la mémoire interne avant qu'une nouvelle lecture ne soit effectuée
    3. Le MCU doit également exécuter l'algorithme de contrôle pour calculer les valeurs actualisées de la sortie du chauffage à 5 Hz (200 ms)
  • Moyens de garantir un comportement en temps réel
    • Résister à l'envie de trop compliquer une tâche simple
    • Faire en sorte que le système soit aussi simple que possible tout en répondant aux exigences
  • Types de systèmes en temps réel
    • Matériel
    • Micrologiciel de type "bare-metal"
    • Micrologiciel basé sur un RTOS
    • Logiciel basé sur un RTOS
  • Systèmes en temps réel basés sur le matériel
    • Effectuer des opérations en parallèle et instantanément
    • Consommer moins d'énergie qu'une solution basée sur un MCU
  • Inconvénients du matériel en temps réel
    • Manque de flexibilité des dispositifs non programmables
    • Expertise requise généralement moins disponible que celle des développeurs de logiciels/micrologiciels
    • Coût élevé des dispositifs programmables complets
    • Coût élevé du développement d'un ASIC personnalisé
  • Micrologiciel de type "bare-metal"

    • Le code de l'utilisateur a le contrôle total de tous les aspects du matériel
    • Le seul moyen d'interrompre l'exécution du code de la boucle principale est de déclencher une interruption
  • Micrologiciel basé sur un RTOS
    • L'introduction de l'ordonnanceur et de certains primitifs RTOS permet aux tâches de fonctionner avec l'illusion qu'elles ont le processeur pour elles-mêmes
    • L'utilisation d'un RTOS permet au système de rester réactif aux événements les plus importants tout en exécutant d'autres tâches complexes en arrière-plan
    • Des interdépendances peuvent apparaître entre les tâches qui partagent des données, ce qui peut entraîner le blocage inattendu d'une tâche
  • Logiciels basés sur un RTOS
    • Plus de cœurs de processeurs disponibles fonctionnant à des fréquences d'horloge plus élevées
    • Gigaoctets de mémoire vive (RAM) et de mémoire persistante disponibles
    • Ajout de matériel périphérique peut être aussi simple que l'ajout d'une carte
    • Multitude de solutions open source et propriétaires pour les piles de réseaux, le développement d'interfaces utilisateur, la gestion des fichiers, etc.
    • Le noyau est toujours implémenté de manière à ce que les tâches critiques ne soient pas bloquées pendant une période de temps indéfinie
  • RTOS
    Système d'exploitation qui fournit au programmeur d'applications de nombreuses primitives différentes (telles que les threads et les mutex) qui peuvent être utilisées pour créer des programmes en temps réel
  • Logiciels pour les piles de réseaux, le développement d'interfaces utilisateur, la gestion des fichiers, etc.

    • Solutions open source
    • Solutions propriétaires
  • Sous toutes ces capacités et options, le noyau est toujours implémenté de manière à ce que les tâches critiques ne soient pas bloquées pendant une période de temps indéfinie, ce qui est possible avec un système d'exploitation traditionnel
  • Il est toujours possible d'obtenir des performances déterministes, tout comme avec un microprogramme RTOS
  • Système d'exploitation
    Fournit un environnement de programmation cohérent qui fait abstraction du matériel sous-jacent afin de faciliter l'écriture et la maintenance des programmes informatiques
  • Primitives fournies aux programmeurs d'applications
    • Threads
    • Mutex
  • Programme multithread avec accès protégé à des données partagées
    1. Création de threads
    2. Utilisation de mutex
  • Avantages d'utiliser les primitives du système d'exploitation
    • Code de l'application moins complexe
    • Plus facile à comprendre
    • Mêmes primitives utilisées quel que soit le programmeur
    • Meilleure portabilité du matériel
  • Système en temps réel dur
    Doit respecter son délai 100% du temps, sinon considéré comme un échec
  • Systèmes en temps réel dur
    • Dispositifs médicaux (stimulateurs cardiaques)
    • Systèmes de contrôle avec paramètres contrôlés de manière extrêmement stricte
  • Système en temps réel ferme
    Doit respecter ses délais presque tout le temps
  • Système en temps réel souple
    Offre une promesse de meilleur effort pour respecter les délais
  • Système en temps réel souple
    • Régulateur de vitesse d'une voiture
  • Gamme de RTOS
    • RTOS 8-32 bits axés sur les MCU (FreeRTOS, Keil RTX, Micrium μC, ThreadX, etc.)
    • RTOS pour processeurs d'application 32 et 64 bits (Wind River VxWorks, Wind River Linux, Integrity OS de Green Hills, Linux avec PREEMPT_RT)
  • FreeRTOS est l'une des implémentations de RTOS les plus populaires pour les MCU et est très largement disponible
  • FreeRTOS existe depuis plus de 15 ans et a été porté sur des dizaines de plateformes
  • En se concentrant sur FreeRTOS, on sera bien placé pour migrer rapidement sa connaissance vers d'autres matériels ou pour passer à un autre RTOS si nécessaire
  • CEG4566/CSI4541/SEG4545 est le code du cours "Conception de systèmes informatiques en temps réel"
  • Le cours est donné en hiver 2024
  • Le professeur est Mohamed Ali Ibrahim, ing., Ph.D.
  • Super-boucle
    Boucle infinie dans laquelle des fonctions sont appelées de manière séquentielle
  • Réaliser des opérations parallèles avec des super-boucles
    1. Utiliser les interruptions
    2. Utiliser le DMA (contrôleur d'accès direct à la mémoire)
  • Sujets abordés
    • Introduction à la programmation en super-boucles
    • Réaliser des opérations parallèles avec des super-boucles
    • Comparaison entre les tâches RTOS et les super-boucles
    • Réaliser des opérations parallèles avec des tâches RTOS
    • Tâches RTOS et super boucles - avantages et inconvénients
  • Caractéristiques des super-boucles
    • Elles n'ont pas de point de sortie
    • Le code intégré est généralement censé être toujours disponible
  • Exemple de super-boucle
    • void main ( void )
    • while(1)
    • {
    • func1() ;
    • func2() ;
    • func3() ;
    • //font des choses utiles, mais ne renvoient rien
    • //(sinon, où irions-nous... que ferions-nous... ?!)
    • }
  • Limites des super-boucles
    • Tout retard introduit par une fonction se propage à la fonction suivante
    • La fréquence à laquelle les événements externes sont vérifiés dépend du temps d'exécution des fonctions
    • Risque de gigue (différence de temps non constante) dans la détection des événements
  • Déterminisme
    Capacité d'un système à répondre de manière fiable à un événement dans un délai spécifié
  • Interruptions
    Signaux envoyés au microcontrôleur pour l'informer d'un événement et le faire passer à une routine de service d'interruption (ISR)
  • Caractéristiques des ISR
    • Elles doivent être les plus courtes possible pour minimiser le temps passé dans l'interruption
    • Elles peuvent être imbriquées et avoir des priorités différentes