Débutez avec le Zynq-7000 et ZYBO/Gestion des interruptions

Qu'est-ce qu'une interruption ?

modifier

Une interruption est un signal envoyé au processeur, ayant pour effet de stopper momentanément ses activités en cours pour en effectuer d'autres. Un exemple classique d'interruption est l'appui sur une touche du clavier d'un ordinateur : la frappe déclenche une interruption qui provoque la saisie de la lettre désirée.

Les interruptions sont particulièrement utilisées dans les applications à temps-réel ; en effet, elles permettent de tenir compte d'événement asynchrones par rapport au déroulé du programme. La figure ci-dessous illustre l'avantage que représente l'emploi d'exceptions dans un programme : dans la première situation, l'état d'une variable est testée de façon répétitive de façon synchrone. Dans la deuxième situation, l'interruption se déclenche dès lors que la condition d'interruption est atteinte.

Cette condition peut s'exprimer de deux manières[1] :

  • level-triggered : l'interruption se déclenche lorsqu'un niveau logique est atteint ;
  • edge-triggered : l'interruption se déclenche lors de la variation d'un niveau logique (front montant, front descendant).

D'autre part, les interruptions peuvent provenir de trois types de sources :

  • le matériel (nous mettrons tout à l'heure en œuvre une exception issue d'un bouton-poussoir) ;
  • le logiciel (déclenchement d'un événement particulier) ;
  • le processeur lui-même, dans le cas d'une exception rencontrée dans l'exécution du programme.

Indépendamment de la source, ces interruptions peuvent être masquables ou non : cela signifie qu'il sera possible de passer outre certaines d'entre elles et d'autres non.

Les interruptions avec le Zynq-7000

modifier
  1. Des situations hybrides peuvent aussi se présenter, mais nous n'en faisons pas mention ici.