Interruptions et priorités

Systèmes embarqués - SNT Seconde

Interruptions et priorités

30 min+20 XPapprentissage

Objectifs

  • Comprendre le concept d'interruption matérielle et logicielle.
  • Définir la notion de priorité dans un système temps réel.
  • Identifier des exemples concrets d'utilisation des interruptions dans l'embarqué.

Introduction

Imaginez un robot qui doit éviter un obstacle tout en continuant à avancer, ou un four qui doit surveiller la température pendant que le minuteur tourne. Comment un seul processeur peut-il gérer plusieurs tâches simultanément et réagir instantanément à des événements imprévus ?

Comment un système informatique peut-il gérer des événements imprévus et multiples tout en respectant des contraintes de temps critiques ?

Le fonctionnement d'une interruption

Dans un système embarqué, le processeur exécute normalement un programme séquentiellement, instruction par instruction. Une interruption est un signal envoyé au processeur pour lui demander de suspendre temporairement l'exécution de son programme principal et d'exécuter une routine spécifique, appelée gestionnaire d'interruption (ou ISR - Interrupt Service Routine). C'est comme si, en plein cours, le haut-parleur de l'établissement émettait un signal sonore urgent : le professeur (le processeur) interrompt son explication (le programme principal), traite l'information urgente (exécute l'ISR), puis reprend son cours exactement là où il s'était arrêté. Il existe deux grands types d'interruptions : les interruptions matérielles, déclenchées par un composant électronique externe (un bouton poussoir, un capteur de température, une arrivée de données sur un port série), et les interruptions logicielles, déclenchées par une instruction spéciale dans le programme lui-même ou par une erreur (division par zéro). Le processeur sauvegarde automatiquement son état (le contexte) avant de passer au gestionnaire, ce qui permet un retour transparent.

Points clés

  • Une interruption suspend le programme en cours.
  • Elle déclenche l'exécution d'une routine spécifique (ISR).
  • Il existe des interruptions matérielles (externes) et logicielles (internes).
  • Le contexte est sauvegardé pour un retour transparent.

La gestion des priorités

Dans un système complexe, plusieurs interruptions peuvent survenir en même temps ou de manière très rapprochée. Il faut donc un mécanisme pour décider laquelle traiter en premier. C'est le rôle de la priorité. Chaque source d'interruption se voit attribuer un niveau de priorité, généralement fixé matériellement ou configuré par logiciel. Lorsque deux interruptions surviennent simultanément, le processeur exécute d'abord le gestionnaire de l'interruption la plus prioritaire. De plus, une interruption de haute priorité peut interrompre le gestionnaire d'une interruption de plus basse priorité : c'est l'imbrication d'interruptions. Prenons l'exemple d'un drone : une interruption provenant du capteur de distance (pour éviter une collision) aura une priorité bien plus élevée qu'une interruption provenant du système de transmission vidéo. Si le drone est en train de traiter l'envoi d'une image et qu'un obstacle est détecté, le traitement vidéo sera immédiatement mis en pause pour laisser la place à la manœuvre d'évitement, critique pour la sécurité. Cette gestion est au cœur des systèmes dits 'temps réel', où le respect des délais de réponse est essentiel au bon fonctionnement, voire à la sécurité.

Points clés

  • Les interruptions ont des niveaux de priorité.
  • La priorité détermine l'ordre de traitement en cas de requêtes simultanées.
  • Une interruption haute priorité peut en interrompre une de plus basse priorité (imbrication).
  • La priorisation est cruciale pour les systèmes temps réel.

Applications pratiques

Les interruptions sont omniprésentes dans les systèmes embarqués qui nous entourent. Dans une voiture moderne, l'appui sur le bouton de clignotant génère une interruption pour activer les feux, indépendamment de ce que fait l'ordinateur de bord (affichage de la radio, calcul de la consommation). Le système de freinage ABS utilise en permanence des interruptions haute priorité pour analyser la rotation des roues et moduler la pression de freinage des dizaines de fois par seconde, évitant ainsi le blocage. Dans un smartphone, l'appui sur le bouton de mise en veille, la réception d'un SMS, ou un timer pour l'affichage de l'heure sont tous gérés par interruptions. Dans un projet Arduino classique, la fonction `attachInterrupt()` permet justement de définir une routine à exécuter lorsqu'un bouton est pressé sur une broche spécifique, sans avoir besoin de scruter en permanence l'état de cette broche dans la boucle principale (`loop`). Cela libère le processeur pour d'autres tâches et garantit une réaction immédiate.

Points clés

  • Automobile : clignotants, ABS, airbags.
  • Objets connectés : boutons, réception de données, minuteries.
  • Développement sur carte type Arduino avec `attachInterrupt()`.
  • Permet une réaction immédiate et une gestion efficace de l'énergie.

À retenir

Les interruptions sont un mécanisme fondamental permettant à un système embarqué de réagir de manière asynchrone et rapide à des événements internes ou externes. La gestion des priorités est essentielle pour traiter les événements les plus critiques en premier, garantissant ainsi le comportement temps réel du système. Ces concepts sont à la base du fonctionnement de la plupart des objets électroniques interactifs et critiques de notre quotidien.

  • Une interruption permet de réagir à un événement sans scrutation permanente (polling).
  • Les priorités organisent le traitement des interruptions simultanées ou imbriquées.
  • Les interruptions sont indispensables pour les systèmes réactifs et temps réel comme dans l'automobile ou la domotique.
Techno