Un système avec une réponse déterministe aux événements
Les facteurs qui influencent la qualification d'un système comme "temps réel" sont : les exigences de temps, les conséquences du non-respect des délais, et la complexité du système
Fonction du microcontrôleur (MCU) dans l'exemple du fer à souder
Mesure et réglage de la température de la panne
Avantages des systèmes temps réel basés sur le matériel
Opérations parallèles et exécution instantanée
Inconvénient des firmwares bare-metal pour les systèmes temps réel
Complexité accrue du code et des dépendances
Avantage d'un RTOS par rapport à un firmware bare-metal
Amélioration de la réactivité et du multitâche
Système temps réel qui doit respecter ses délais à 100% du temps
Temps réel strict
Exemple de système temps réel souple
Régulateur de vitesse de voiture
Principale caractéristique des systèmes embarqués
Ils ne s'arrêtent jamais
Problème principal des super boucles dans les systèmes temps réel complexes
Difficulté à maintenir la réactivité aux événements
Comment les interruptions peuvent améliorer la réactivité d'une super boucle
En signalant des événements importants sans polling
Avantage principal de l'utilisation du DMA
Transfert de données sans intervention du CPU
Cas où un RTOS est particulièrement utile
Systèmes complexes avec des tâches gourmandes en temps
Différence entre une tâche RTOS et une fonction dans une super boucle
Les tâches ont leur propre piled'exécution
Ordonnancement Round-Robin
Chaque tâche reçoit une tranche de temps d'exécution
Avantage de l'ordonnancement préemptif par rapport au Round-Robin
Garantie d'exécution des tâches les plus importantes
Famine de tâches
Lorsque les tâches de faible priorité ne s'exécutent jamais
Compromis principal lors de l'utilisation d'un RTOS
Augmentation de la complexité du système
File d'attente (queue) RTOS
Un tampon circulaire avec des propriétés de sécurité multi-thread
Comportement par défaut d'une tâche qui tente d'envoyer un élément à une file d'attente pleine
La tâche se met en attente jusqu'à ce qu'il y ait de la place disponible
Utilisation des files d'attente pour la communication entre les tâches
En stockant des données partagées entre les tâches
Utilisation des sémaphores RTOS
Signaler des événements et synchroniser les tâches
Différence entre un sémaphore binaire et un sémaphore de comptage
Un sémaphore de comptage peut avoir une valeur maximale, tandis qu'un sémaphore binaire est toujours 0 ou 1
Inversion de priorité
Lorsqu'une tâche de faible priorité s'exécute avant une tâche de haute priorité
Sémaphore binaire
Peut être utilisé pour la synchronisation, contrairement à un sémaphore de comptage
Sémaphore de comptage
Peut avoir une valeur maximale, contrairement à un sémaphore binaire qui est toujours 0 ou 1
Sémaphore binaire
Plus efficace en termes de ressources
Sémaphore de comptage
Plus facile à utiliser
Comment les mutex aident à minimiser l'inversion de priorité
En augmentant temporairement la priorité de la tâche qui détient le mutex
Si une tâche ne parvient pas à acquérir un sémaphore dans le délai imparti
La tâche doit prendre une action alternative
Première étape pour démarrer une application RTOS
Initialiser le matériel MCU
Comment une tâche peut se supprimer elle-même
En appelant vTaskDelete avec un pointeur NULL
Différence entre xTaskCreate et xTaskCreateStatic
xTaskCreate utilise la pile FreeRTOS, xTaskCreateStatic utilise une pile statique
Ce que fait la fonction vTaskStartScheduler
Démarre le planificateur RTOS
Comment obtenir le descripteur d'une tâche créée
En le passant comme argument à xTaskCreate
Comment une tâche peut être mise en état bloqué
En appelant vTaskDelay
Manière inefficace de surveiller un événement dans une tâche
En utilisant le polling
Si aucune tâche ne s'exécute après le démarrage du planificateur
Vérifier si la pile FreeRTOS est suffisamment grande
Type de données pouvant être transmis par une file d'attente FreeRTOS
N'importe quel type de données, y compris les structures et les pointeurs