Vous êtes sur la page 1sur 25

Système embarqué temps réel 2020/2021

Introduction

Les systèmes embarqués temps réel sont devenus omniprésents. Ils sont présents dans les
voitures, les téléphones portables, les assistants personnels numériques (PDAs), les montres,
les télévisions et les appareils électroménagers. Il existe également des systèmes embarqués
temps réel plus importants et plus complexes, tels que les systèmes de contrôle du trafic aérien,
les systèmes de contrôle des processus industriels, les systèmes multimédias en réseau et les
bases de données temps réel. Il est rapporté que dans la Lexus LS-460 publié en septembre
2006, il y a plus de 100 microprocesseurs intégrés lorsque toutes les fonctionnalités optionnelles
sont installées. De même, on estime que 98% de tous les microprocesseurs sont fabriqués en
tant que composants de systèmes embarqués. En fait, notre vie quotidienne est devenue de plus
en plus tributaire des applications embarquées en temps réel.

Ce premier chapitre explique les concepts de systèmes embarqués et de systèmes temps réel,
présente les caractéristiques fondamentales des systèmes embarqués temps réel et définit les
systèmes temps réel « durs » et « doux ». Le système de freinage antiblocage (en anglais
Antilock Braking System ABS) dans un véhicule est utilisé comme exemple pour montrer un
système embarqué temps réel.

Système embarqué

Un système embarqué est un système sur micro-ordinateur intégré dans un système plus grand
et conçu pour un ou deux services spécialisés. Il est intégré dans un dispositif complet qui
comporte souvent des parties matérielles et mécaniques. Citons par exemple les contrôleurs
intégrés dans nos appareils électroménagers. La plupart des systèmes embarqués sont des
systèmes qui doivent respecter les contraintes de temps imposées, c'est pourquoi on les appelle
aussi systèmes embarqués temps réel. Par rapport aux systèmes informatiques à usage général
qui ont des fonctionnalités multiples, les systèmes embarqués sont souvent consacrés à des
tâches spécifiques. Par exemple, le système embarqué de contrôle de l'airbag n'est chargé que
de détecter la collision et de gonfler l'airbag si nécessaire, et le contrôleur embarqué dans un
climatiseur n'est chargé que de surveiller et de réguler la température d'une salle par exemple.

Une autre différence importante entre un système informatique générale et un système


embarqué est qu’un système général dispose d'un système d'exploitation complet, tandis que
les systèmes embarqués peuvent ou non disposer d'un système d'exploitation. De nombreux

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

systèmes embarqués de petite taille sont conçus pour effectuer des tâches simples et n'ont donc
pas besoin d'une prise en charge du système d'exploitation.

Les systèmes embarqués sont des systèmes réactifs. Ils sont essentiellement conçus pour réguler
une variable physique en réponse au signal d'entrée fourni par les utilisateurs finals ou les
capteurs, qui sont connectés aux ports d'entrée. Par exemple, le but d'un système embarqué de
cuisson des céréales est de réguler la température d'un four en ajustant la quantité de carburant
injectée dans le four. La régulation ou le contrôle est effectué en fonction de la différence entre
la température souhaitée et la température réelle détectée par des capteurs de température.

Les systèmes embarqués peuvent être classés en fonction de leur complexité (microcontrôleur)
et de leurs performances en petite, moyenne et grande échelle.

1.Systèmes embarqués à petite échelle (Small Scale ES) :

Les systèmes à petite échelle remplissent des fonctions simples et sont généralement construits
sur la base de microprocesseurs ou de microcontrôleurs bas de gamme de 8 ou 16 bits. Pour le
développement de logiciels embarqués pour les systèmes embarqués à petite échelle, les
principaux outils de programmation sont un éditeur, un assembleur, un cross-assembler et un
environnement de développement intégré (IDE). Les souris et les télécommandes de télévision
sont des exemples de systèmes embarqués à petite échelle. Ils fonctionnent généralement sur
batterie. Normalement, on ne trouve pas de système d'exploitation dans ces systèmes.

2.Systèmes embarqués à moyenne échelle (Medium Scale ES) :

Les systèmes embarqués de taille moyenne sont conçus à l'aide des microprocesseurs ou
microcontrôleurs de 16 ou 32 bits. Ces systèmes embarqués à moyenne échelle sont plus rapides
que les systèmes embarqués à petite échelle1.

L'intégration du matériel et des logiciels est complexe dans ces systèmes. Java, C, C++ sont les
langages de programmation utilisés pour développer des systèmes embarqués à moyenne
échelle. Différents types d'outils logiciels comme le compilateur, le débogueur, le simulateur,
etc. sont utilisés pour développer ce type de systèmes. Exemples des systèmes embarqués de
taille moyenne sont les distributeurs automatiques et les machines à laver.

1
https://www.geeksforgeeks.org/classification-of-embedded-systems(13/11/2020).

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

3.Systèmes embarqués sophistiqués ou complexes (Large-scale ES) :

Les systèmes embarqués à grande échelle ou sophistiqués présentent une énorme complexité
matérielle et logicielle. Ils sont conçus à l'aide de multiples microcontrôleurs de 32 ou 64 bits,
ainsi que d'une série d'autres circuits intégrés à haute vitesse. Ils sont utilisés pour des
applications de pointe qui nécessitent des techniques de codage matériel et logiciel. Des
exemples de systèmes embarqués à grande échelle sont les systèmes de trains d'atterrissage, les
systèmes de freinage des voitures et les applications militaires.

Les systèmes embarqués temps réel :

Les systèmes embarqués peuvent être en temps réel ou non. Pour un système non soumis à des
contraintes de temps, nous disons qu'il est correctement conçu et développé s'il fournit les
fonctions souhaitées en recevant des stimuli externes ou des déclencheurs internes, avec un
degré de QoS (Quality of Service) satisfaisant. Des exemples de ce type de systèmes sont les
télécommandes de télévision et les calculatrices.

Par opposition, un système temps réel est un système informatique devant répondre à des
stimuli de l’environnement en tenant compte de contraintes de temps. Le comportement correct
d’un tel système ne dépend donc pas uniquement des résultats fournis, mais également de la
date à laquelle ces résultats sont communiqués. Un calcul correct mais tardif sera considéré
comme faux, si les contraintes temporelles du système sont strictes, ‘le résultat est inutile,
même s'il est correct’.

Un exemple typique est un pilote automatique dans un avion. Un tel système pourrait être
décomposé en une tâche responsable de récupérer les valeurs de différents capteurs (altitude,
vitesse, ...), une tâche responsable de calculer la puissance à fournir aux réacteurs ainsi que les
angles des empennages, et une dernière tâche responsable des actuateurs (arrivée de carburant,
empennages). Si une mesure des capteurs est effectuée régulièrement, que les données sont
transmises à la tâche de calcul, qui ensuite transmet ses résultats à la dernière tâche, il serait
judicieux que ce processus ne prenne pas un temps trop important. En effet, à 300km/h lors
d’un atterrissage, une second d’inattention pourrait être fatale. Dans ce cas, les tâches doivent
avoir des délais stricts, et ces délais doivent absolument être respectés pour que le
fonctionnement global soit considéré comme correct, un fonctionnement anormal pouvant avoir
des conséquences désastreuses.

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Cet exemple peut montrer qu’il faut que le système effectue son traitement le plus rapidement
possible. Mais attention à ne pas tomber dans le piège : Un système temps réel n’est pas un
système qui effectue du calcul de manière rapide. En effet, les systèmes que nous traiterons
doivent fournir les résultats dans un temps bien spécifique, mais celui-ci peut être long. La
rapidité n’est pas un critère, par contre la fiabilité, liée au respect de contraintes temporelles, en
est un.

Les domaines d'application des systèmes embarqués temps réel :

Les domaines d'application traditionnels des systèmes embarqués temps réel comprennent :

✓ Télécommunications (transport de la parole, systèmes de commutation, …),


✓ Domaine médical (assistance et supervision de malades, …),
✓ Contrôle de différents équipements dans les voitures, bus, trains, avions, …,
✓ Contrôle et régulation de trafic en milieu urbain,
✓ Guidage de véhicules en milieu urbain,
✓ Industrie (contrôle/commande de procédés manufacturiers ou continus, …),
✓ Domaine militaire (suivi de trajectoires de missiles, …)
✓ Aérospatial (suivi de satellites, simulation de vols, pilotage automatique, …),
✓ Multimédia (transport d’images et de voie, téléconférences, …),
✓ Finance (suivi du cours des devises et actions, ...),
✓ Loisirs (consoles de jeu, ...),
✓ Domotique (sécurité d’habitations, …),
✓ Contrôle/Commande d’appareils électroménagers.

Toutefois, avec les progrès rapides et continus des technologies de l'information et de la


communication et l'émergence de l'Internet des objets et de l'informatique omniprésente
(ubiquitaire), les applications embarquées en temps réel se retrouveront dans tous les objets qui
peuvent être rendus intelligents.

Exemple : Système de freinage antiblocage des roues (ABS) :

L’ABS, ou antiblocage des roues (en anglais automobile Antilock Braking System), est un
système qui permet au conducteur de garder la maîtrise de son véhicule lors d’un freinage
intense. Lorsque vous freinez brusquement et que votre véhicule n’est pas équipé de l’ABS, les
roues se bloquent et la voiture part en glisse. Dans ce cas-là, comme les roues sont bloquées,

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

vous avez beau manœuvrer votre volant pour changer de trajectoire, rien n'y fait, la voiture
fonce tout droit.

L’ABS permet donc de débloquer les roues afin que le conducteur puisse manier le volant afin
d'éviter un obstacle par exemple2.

Le fonctionnement d’un ABS est très simple. Votre véhicule est équipé de capteurs (un sur
chaque roue de manière générale) qui relèvent en temps réel la vitesse de rotation des roues.
Lorsque ces capteurs détectent que la vitesse de rotation d’une roue est nulle, elles transmettent
alors l’information sous forme de signaux à l'ECU de l'ABS (ECU signifiant Electrical Control
Unit), qui va alors commander le pompage du liquide de frein grâce à l'unité de commande
hydraulique afin de diminuer la pression exercée sur le disque de frein. Pour le dire autrement,
et plus simplement, le système commande de relâcher la pression des freins afin que la roue en
question puisse tourner.

Le système va alors effectuer cette tâche jusqu’à 24 fois par seconde en bloquant et débloquant
les freins. D’ailleurs, ce sont ces réajustements successifs que le conducteur ressent sous sa
pédale de freinage.

Figure1. Schéma synoptique d'un système électro-hydraulique d'ABS additionnel automobile.

2
https://fr.motor1.com/news/176191/fonctionnement-systeme-abs-voiture/

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Structure du système :

Un système embarqué temps réel interagit avec son environnement de manière continue et en
temps réel. L'exemple de l’ABS aurait dû nous donner une idée de ce à quoi ressemble un
système embarqué temps réel et comment il interagit avec le système dans lequel il réside pour
accomplir la fonction requise.

– Pour que le système puisse récupérer les données de son environnement., le système doit
posséder des capteurs. La récupération des données est alors faite par l’intermédiaire de
capteurs (en anglais sensors) qui permettent d’obtenir des informations sous la forme des
interruptions (information tout ou rien) ou des mesures (information continue) en provenance
du procédé physique. Par exemple, l'ABS dispose de plusieurs types de capteurs, notamment
des capteurs de vitesse de roue, des capteurs de décélération, et des capteurs de pression de
freinage.

Dans le monde réel, en revanche, la plupart des données sont caractérisées par des signaux
analogiques. Afin de pouvoir manipuler les données à l'aide d'un microprocesseur, les données
analogiques doivent être converties en signaux numériques, de sorte que le microprocesseur
puisse lire, comprendre et manipuler les données. Un convertisseur analogique-numérique
(convertisseur A/N) est donc nécessaire entre un capteur et un microprocesseur.
-Le cerveau d'un système embarqué est l’unité de contrôle, qui comprend un ou plusieurs
microprocesseurs, une mémoire, quelques périphériques et un logiciel de système d'exploitation
temps réel.
– actions réalisées par l’intermédiaire d’actionneurs (actuators) qui permettent d’agir sur le
procédé physique sous la forme de commandes (modification d’état physique du système) ou
simplement sous la forme d’un affichage (diodes, lampes, afficheurs, écrans, etc.). Dans le cas
de l'ABS, l'actionneur est l'unité de commande hydraulique. La sortie que le microprocesseur
produit est un signal numérique, tandis que l'actionneur est un dispositif physique et ne peut
agir que sur une entrée analogique. Par conséquent, une conversion numérique-analogique
(convertisseur N/A) doit être effectuée afin d'appliquer la sortie du microprocesseur à
l'actionneur.
La figure 2 montre les relations entre toutes les composantes du système

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Figure 2. Structure des systèmes embarqués temps réel.

Caractéristiques du système embarqué temps réel

Un système temps réel typique sera décomposé en tâches, chaque tâche étant responsable de la
gestion d’une partie du système. A priori, le code de chacune des tâches composant un tel
système est connu. Il peut donc être analysé en termes de temps d’exécution, ressources
nécessaires, et dépendance envers d’autres tâches. Les propriétés suivantes devraient être
respectées :

-Réponse temps réel


Les résultats doivent être corrects, non seulement en termes de valeur, mais également termes
de temps d’arrivée. Le système doit garantir que les tâches se terminent dans les délais impartis,
en respectant les contraintes de temps imposées. Un exemple typique est le système ABS.

- Environnements fortement contraignants


Les systèmes embarqués temps réel sont souvent exploités dans des environnements aux
ressources très restreintes, ce qui rend la conception et l'optimisation des performances du
système assez difficiles. De nombreux systèmes embarqués fonctionnent dans un
environnement difficile et incontrôlé. Ils doivent survivre à une chaleur excessive, l'humidité,
les vibrations, les chocs ou même la corrosion. L'ABS et les systèmes embarqués automobile
qui contrôlent l'allumage, la combustion et la suspension sont des exemples de ce type de

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

systèmes. Les systèmes embarqués doivent donc être optimisés en termes de taille, de poids, de
fiabilité, de performances, de coût et de consommation d'énergie pour s'intégrer dans
l'environnement informatique et accomplir leurs tâches. Ainsi, les systèmes embarqués
nécessitent généralement une optimisation bien plus importante que les applications de bureau
standard.

-prise en compte des comportements concurrents


La concurrence est une propriété des systèmes dans lesquels plusieurs calculs s'exécutent
simultanément et interagissent potentiellement les uns avec les autres. Les systèmes embarqués
sont conçus pour interagir étroitement avec leur environnement physique. L'environnement
physique est par nature concurrent - plusieurs processus se produisent en même temps. Par
exemple, les événements suivants dans les systèmes ABS peuvent se produire en même temps
:

- Événement du capteur de vitesse de roue

- Événement du capteur de décélération

- Événement de la pédale de frein

-Prédictibilité
A chaque décision liée à l’ordonnancement des tâches, le système doit être capable de prédire
les conséquences de son choix. Il doit pouvoir dire si les tâches sont ordonnançables, et si tel
est le cas proposer un ordonnancement. S’il n’est pas possible de gérer l’ensemble de tâches,
des actions coordonnées doivent être prises afin de ne pas compromettre le fonctionnement du
système. Un système temps réel tel qu'un ABS, ou le système de contrôle de vol d'un avion,
doit toujours être prédictible à 100%, sinon des vies humaines sont en jeu.

-Sûreté de fonctionnement
Les systèmes de type temps réel mettent souvent en jeu des applications qui demandent un
niveau important de sécurité pour raisons de coût ou de vies humaines. Pour répondre à cette
demande, il est nécessaire de mettre en œuvre toutes les réponses de la sûreté de fonctionnement
(développements sûrs, tests, méthodes formelles, prévisibilité, déterminisme, continuité de
service, tolérance aux fautes, redondance, etc.). Les stimulateurs cardiaques et les systèmes de
contrôle de vol sont deux exemples.

On classe souvent les systèmes temps réel en deux catégories :

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Les systèmes temps réel a tolérance zéro (temps réel dur : hard real time) qui doivent
impérativement respecter leurs délais. Dans le cas d’un robot soudeur, une soudure faite trop
tôt ou trop tard peut sérieusement compromettre un véhicule. Sur une chaîne de montage
automobile, si une action doit absolument avoir lieu à tel instant (ou dans un certain délai), on
se trouve dans une situation de temps réel dur.

Les systèmes temps réel avec tolérance (temps réel mou : soft real time) qui ne doivent pas
faillir à leurs échéances, mais pour lesquels quelques échecs restent tolérable. Les système
audionumériques et multimédia se rangent dans cette catégorie, de même que les systèmes de
téléphone numériques.

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Introduction :

Cette partie introduit les composants matériels des systèmes embarqués temps réel. Comme les
systèmes embarqués temps réel vont depuis les plus petits, comme ceux des coffee makers et
des montres numériques, aux plus grands et sophistiqués, comme les systèmes de contrôle
ferroviaire et les commutateurs du service des mobiles, et il existe une grande différence dans
l'ensemble des composants matériels utilisés.

Le processeur :

Les processeurs utilisés dans les systèmes embarqués varient en fonction de la puissance de
calcul nécessaire pour chaque application embarquée. Ils se rangent dans deux catégories
principales. L'une est celle des microprocesseurs à usage général, l'autre est celle des
processeurs à usage spécifique. Les microcontrôleurs et les circuits intégrés à application
spécifique (en anglais Application-Specific Integrated Circuits ou ASICs) sont les processeurs
spéciaux les plus populaires. La figure 3 montre un ensemble d'éléments hardware de systèmes
embarqués typiques.

Figure 3. Éléments hardware du système embarqué temps réel.

Microprocesseurs :

De nombreux systèmes embarqués temps réel utilisent des microprocesseurs d’usage général.
Un microprocesseur désigne un processeur qui possède des composants électroniques
suffisamment miniaturisés pour pouvoir tenir dans un seul circuit intégré. Il contient toutes, ou
la plupart, des fonctions de l'unité centrale de traitement (en anglais the Central Processing Unit

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

CPU). La figure 4 montre un ensemble d'éléments qui sont nécessaires aux microprocesseurs
pour effectuer des tâches.

Figure 4. Les éléments du microprocesseur.

Un microprocesseur est conçu pour effectuer des opérations arithmétiques et logiques qui
utilisent un petit espace de mémoire appelé "registres de stockage". Il dispose d'une unité de
contrôle qui est chargée de commander le processeur pour qu'il exécute les instructions de
programme stockées. Elle communique à la fois avec l'unité arithmétique et logique (UAL)
et à la mémoire. Toutes les instructions qui sont extraites de la mémoire sont stockées dans le
registre des instructions sous forme de valeurs binaires. Le décodeur d'instructions lit ces
valeurs et indique à l'UAL les circuits de calcul à activer pour exécuter la fonction. L'UAL
effectue des opérations arithmétiques avec des entiers et logiques au niveau des bits. Ces
opérations sont le résultat d'instructions qui font partie de la conception du microprocesseur.
Le compteur de programme enregistre l'adresse de la prochaine instruction à exécuter. Les
microprocesseurs opèrent sur des nombres et des symboles représentés dans le système de
numération binaire.

Le premier microprocesseur commercial Intel 4004 a été inventé par Federico Faggin et ses
collègues au début des années 1970. L'Intel 4004 est un processeur 4 bits par Intel Corporation.
La plupart des microprocesseurs modernes sont soit 32 bits, soit 64 bits, bien que des
microprocesseurs de 128 bits soient également disponibles. Parmi les exemples de
microprocesseurs à usage général, citons Intel 80x86, SPARC et Motorola 68HCxxx.

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Les microprocesseurs sont destinés à des applications où les tâches ne sont pas spécifiques. Par
exemple, ils peuvent être utilisés pour développer des logiciels, des jeux et des sites web, éditer
des photos ou créer des documents. Dans ces cas, la relation entre l'entrée et la sortie n'est pas
définie. Ils nécessitent un grand nombre de ressources, telles que la RAM, la ROM et les canaux
d'entrée/sortie (E/S). Le logiciel embarqué peut être fait à des tâches spécifiques qui sont conçus
pour un système embarqué.

Microcontrôleurs

Par rapport à un microprocesseur à usage général, un microcontrôleur est un système autonome


avec des périphériques, de la mémoire et un processeur qui est conçu pour accomplir des tâches
spécifiques. Les microcontrôleurs sont utilisés dans des systèmes où la relation entre l'entrée et
la sortie est généralement bien définie. On peut citer comme exemple une souris d'ordinateur,
machine à laver, appareil photo numérique, micro-ondes, voiture, téléphone portable et montre
numérique. Comme ces applications sont très spécifiques, elles ont peu de demande en
ressources telles que la RAM, la ROM, les ports d'E/S, et peuvent donc être embarquées sur
une seule puce avec le processeur. Par rapport à des systèmes électroniques à base de
microprocesseurs et autres composants séparés, les microcontrôleurs permettent de diminuer la
taille, la consommation électrique et le coût des produits. De plus, les microcontrôleurs sont
généralement construits à base d'une technologie connue sous le nom de semi-conducteurs
complémentaires à l'oxyde de métal (en anglais Complementary Metal–Oxide–Semiconductor
CMOS). Une technologie de fabrication de composants électroniques et, par extension, les
composants fabriqués selon cette technologie. Ce sont pour la plupart des circuits logiques
(NAND, NOR, etc.). Cette technologie utilise moins de puissance et elle est plus résistante aux
pics de puissance que les autres techniques.

Les séries PIC24, Z16F et IA188 sont des exemples de microcontrôleurs 16 bits couramment
utilisés pour les systèmes embarqués à échelle moyenne. Les tailles les plus communes pour la
RAM sont 1.5, 2, 4, 8, 16 et 32 kB.

Circuits intégrés pour applications spécifiques (ASICs)

Un ASIC (acronyme de l'anglais Application-Specific Integrated Circuit, littéralement « circuit


intégré propre à une application »), est un circuit intégré spécialisé. Il intègre plusieurs fonctions
dans une seule puce et réduit ainsi le nombre total de circuits nécessaires. Les ASIC’s sont très
coûteux à fabriquer, et une fois qu'il est fabriqué, il n'y a pas moyen de le modifier ou de

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

l'améliorer. Si vous souhaitez modifier le jeu d'instructions ou faire une opération similaire,
vous devez modifier le layout du circuit intégré en silicium. Les ASIC’s sont largement utilisés
dans les systèmes de communication, médicaux, de réseau et multimédia, tels que les téléphones
portables, les routeurs et les consoles de jeux. La plupart des puces SoC (Systems-on-a-Chip «
système monopuce ») sont également des ASIC. Pour une application déterminée, les solutions
ASIC sont normalement plus efficaces que les solutions basées sur des softwares qui tournent
sur des microprocesseurs.

Field-Programmable Gate Arrays (FPGAs)

Un FPGA (Field Programmable Gate Arrays ou « réseaux logiques programmables ») est un


ASIC programmable. Il contient une grille régulière de cellules logiques qui peuvent être
rapidement reconfigurées, ce qui facilite le prototypage rapide de systèmes embarqués.
L'avantage des FPGA est de pouvoir être configuré sur place, sans envoi du circuit chez le
fabricant, ce qui permet de les utiliser quelques minutes après leurs conceptions. Les FPGA les
plus récents sont configurables en une centaine de millisecondes3.

Le premier FPGA commercial a été développé par Xilinx en 1985. Les FPGA modernes sont
fabriqués à l'aide de la technologie la plus avancée et permettent la mise en œuvre de systèmes
à très hautes performances. Par exemple, le dernier Xilinx Virtex Ultra-Scale est construite sur
une technologie de 20 nm, introduite en mai 2014.

Un FPGA peut être utilisé pour résoudre tout problème qui est calculable. Les applications
spécifiques des FPGA comprennent le traitement des signaux numériques, radio réalisée par
logiciel (RRL), le prototypage ASIC, l'imagerie médicale, la vision par ordinateur, la
reconnaissance vocale, la cryptographie, la bio-informatique, l'émulation de matériel
informatique, la radioastronomie, la détection de métaux et un nombre croissant d'autres
domaines.

La taille du marché mondial des FPGA devrait passer de 5,9 milliards de dollars en 2020 à 8,6
milliards de dollars en 20254.

3
http://proxacutor.free.fr/ (19/11/2020)
4
https://www.marketsandmarkets.com/Market-Reports/ (19/11/2020)

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Digital Signal Processors (DSPs)

Un DSP (de l'anglais « Digital Signal Processor », qu'on pourrait traduire par « processeur de
signal numérique » ou « traitement numérique de signal ») est un microprocesseur optimisé
pour exécuter des applications de traitement numérique du signal (filtrage, extraction de
signaux, etc.) le plus rapidement possible5. Les DSP sont deux à trois fois plus rapides que les
microprocesseurs à usage général dans les applications de traitement du signal, y compris les
applications audio, vidéo et de communication. Parmi les inconvénients, citons le coût qui est
généralement élevé.

Application-Specific Instruction Set Processors (ASIPs)

Un processeur de jeu d'instructions spécifique à une application (ASIPs de l'anglais «


Application-Specific Instruction Set Processors ») est un composant utilisé dans la
conception de système sur puce. Le jeu d'instructions d'un ASIP est conçu pour bénéficier à une
application spécifique. Cette spécialisation du cœur offre un compromis entre la flexibilité d'un
CPU à usage général et les performances d'un ASIC. Les avantages des ASIP comprennent des
performances élevées et une grande flexibilité de conception, car les modifications ultérieures
de la conception peuvent être prises en compte en mettant à jour le software appliqué sur l'ASIP.

Multicore Processors

Un processeur multicœur (multi-core en anglais) est un circuit intégré auquel deux ou plusieurs
processeurs ont été fixés pour améliorer les performances et réduire la consommation d'énergie,
et assurer un traitement simultané plus efficace de multiples tâches. La plupart des systèmes
actuels sont multicœurs. Sur les systèmes mono-cœurs, le fonctionnement multitâche peut
dépasser les capacités de l’UC, entraînant une baisse des performances liée à la mise en attente
des opérations à traiter. Sur les systèmes multicœurs, dans la mesure où chaque cœur dispose
de sa propre mémoire cache, le système d’exploitation dispose de suffisamment de ressources
pour traiter en parallèle les tâches les plus exigeantes en calculs. Si plusieurs applications sont
exécutées simultanément sur l’ordinateur, celui-ci peut dès lors répartir ce travail entre les
cœurs de processeurs, plutôt que d’effectuer les opérations en alternance sur un seul
processeur6.

5
https://fr.wikipedia.org/wiki/Processeur_de_signal_num%C3%A9rique (19/11/2020)
6
http://dictionnaire.sensagent.leparisien.fr/Microprocesseur%20multi-c%C5%93ur/fr-fr/ (19/11/2020)

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Von Neumann Architecture et Harvard Architecture

Il existe deux architectures informatiques principales, à savoir l'architecture de Von Neumann


et l'architecture de Harvard. Les deux architectures utilisent un mécanisme de programme
stocké, qui conserve les instructions et les données du programme en lecture-écriture, dans une
mémoire vive (en anglais Random-Access Memory RAM). La différence est que l'architecture
Von Neumann utilise une mémoire commune pour stocker à la fois les données et les
instructions, et donc, une extraction d'instructions (instruction fetch) et une exploitation de
données ne peuvent pas se produire en même temps parce qu'elles partagent le même bus.
L'architecture de Harvard, en revanche, sépare le stockage des instructions de celui des données.
De cette façon, le CPU peut à la fois lire une instruction et effectuer un accès aux données
stockées dans la mémoire en même temps. Les deux architectures sont illustrées dans la figure
5.

Figure 5. Deux architectures informatiques fondamentales. (a) l'architecture von Neumann et


(b) l'architecture Harvard.

L'architecture Von Neumann partage un seul bus commun pour les instructions et les données,
ce qui se traduit par une faible performance par rapport à l'architecture de Harvard. C'est ce
qu'on appelle souvent le goulot d'étranglement de von Neumann (en anglais von Neumann
bottleneck). Plusieurs approches pour surmonter le goulot d'étranglement de von Neumann ont
été développées. L'une d'elles consiste à utiliser la mémoire cache. De plus, une corruption de
la mémoire programme peut se produire avec l'architecture von Neumann, car la mémoire de
données et le programme sont stockés physiquement dans la même puce. Cependant, comme la
mémoire de données et la mémoire de programmes sont stockées physiquement à des
emplacements différents dans l'architecture de Harvard, il n'y a aucune chance de corruption
accidentelle de la mémoire de programmes.

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

L’architecture Harvard est plutôt utilisée dans des microprocesseurs spécialisés pour des
applications temps réels, comme les DSP. Il existe cependant quelques rares DSP à structure
Von Neumann. La raison de ceci est liée au coût supérieur de la structure de type Harvard. En
effet, elle requiert deux fois plus de bus de données, d’adresses, et donc de broches sur la puce.

Jeux d'instructions complexes (CISC) et les jeux d'instructions réduits (RISC)

Le jeu d'instructions est l'ensemble des instructions machines qu'un processeur d'ordinateur peut
exécuter. Ces instructions visent à orienter le processeur en termes de manipulation des
données. Le jeu d'instructions précise aussi quels sont les registres du processeur manipulables
par le programmeur (les registres architecturaux). Une instruction comprend généralement un
opcode (le code opération, en abrégé opcode) qui spécifie l'instruction à exécuter : addition,
multiplication, le chargement du contenu de la mémoire dans un registre, etc. Une architecture
de jeu d'instructions peut servir comme interface pour permettre une communication facile entre
le programmeur et le hardware. Il prépare le processeur à répondre à toutes les commandes de
l'utilisateur.

Il existe deux architectures de jeu d'instructions principales : microprocesseur à jeu d'instruction


étendu (en anglais Complex Instruction Set Computer (CISC)), désigne un microprocesseur
possédant un jeu d'instructions comprenant de très nombreuses instructions mixées à des modes
d'adressages complexes. L'architecture CISC est opposée à l'architecture du microprocesseur à
jeu d'instructions réduit (Reduced Instruction-Set Computer (RISC)).

Le premier objectif de l'architecture du CISC est de réaliser une tâche en quelques lignes
d'instructions. Disons que nous voulons multiplier deux nombres. Un processeur CISC est livré
avec une instruction spécifique, par exemple MULT, qui, une fois exécutées, chargent les deux
nombres de la mémoire principale dans deux registres séparés, les multiplient dans l'unité
d'exécution, puis stockent le produit dans un registre approprié ou le remettent en mémoire.

Ainsi, toute la tâche de multiplication de deux nombres est accomplie avec une seule instruction
telle que :

MULT A, B

MULT est une instruction complexe. Elle fonctionne directement sur les zones mémoire de
l'ordinateur et ne nécessite pas que le programmeur appelle explicitement des fonctions de

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

chargement ou de stockage. L'exécution d'une instruction complexe peut nécessiter plusieurs


cycles d'horloge.

Dans les processeurs RISC, au contraire, on n'utilise que des instructions simples qui peuvent
être exécutées dans un cycle d'horloge. Pour effectuer une opération de multiplication, par
exemple, les instructions simples suivantes sont nécessaires :

LOAD R1, A ; load A into register R1


LOAD R2, B ; load B into register R2
PROD R1, R2 ; multiply A and B, product saved in R1
STOR R1, A ; store A*B into a memory location

Des exemples de processeurs CISC sont Intel x86 et SHARC. Les exemples de processeurs
RISC sont ARM 7 et ARM 9.

La mémoire est l'une des composantes de base des systèmes embarqués, dont la cellule de
mémoire est le composant fondamental.

Mémoire

La cellule de mémoire est un circuit électronique qui stocke un bit d'information binaire, et elle
doit être configurée pour stocker un 1 logique (niveau de tension élevé) et remise à zéro pour
stocker un 0 logique (niveau de tension faible). Sa valeur est maintenue jusqu'à ce qu'elle soit
modifiée par le processus d’initialiser / réinitialiser (set/reset). La mémoire est utilisée pour
stocker à la fois des programmes et des données.

On peut envisager la mémoire comme une matrice de bits, où la longueur de chaque ligne
correspond à la taille de l'unité adressable par la mémoire, le nombre total de lignes représentant
la capacité de la mémoire. Chaque ligne est un registre qui possède une adresse unique. Les
adresses mémoire commencent généralement à 0 et augmentent. En général, la mémoire est
adressable par octet, ce qui signifie que chaque registre possède 8 bits. Certaines machines
peuvent traiter 32 bits à la fois, et la mémoire est implémentée avec des registres de 32 bits.
Nous disons que la mémoire est adressable par mot sur 32 bits.

Read-Only Memory : ROM

Originellement, l'expression mémoire morte (en anglais, Read-Only Memory : ROM) désignait
une mémoire informatique non volatile (c’est-à-dire une mémoire qui ne s’efface pas lorsque
l’appareil qui la contient n’est plus alimenté en électricité) et dont le contenu est fixé lors de sa

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

programmation, qui pouvait être lue plusieurs fois par l'utilisateur, mais ne pouvait plus être
modifiée7.

PROM (Programmable Read Only Memory) est presque identique à la ROM, sauf qu'elle est
programmable. Nous pouvons acheter une puce vierge et la faire programmer par un
programmateur PROM pour répondre à nos besoins. Mais, une fois que nous l'avons
programmée, nous ne pouvons plus la modifier.

EPROM (Erasable Programmable Read Only Memory) est également une mémoire non
volatile. Ce qui la distingue de la ROM ou de la PROM est qu'une fois programmée, une
EPROM peut être effacée en l'exposant à une forte lumière ultraviolette et ensuite un nouveau
programme peut y être enregistré.

EEPROM (de l'anglais Electrically Erasable Programmable Read Only Memory) est utilisé
de la même manière que le disque dur d'un ordinateur personnel, pour stocker des paramètres
qui peuvent changer occasionnellement et qui doivent être mémorisés au prochain démarrage
de l'ordinateur. Il peut essentiellement être écrit, effacé, réécrit électroniquement. Aucun
traitement particulier n'est nécessaire pour effacer les données. Elles constituent désormais le
principal type de mémoire morte avec les mémoires SD, USB, CompactFlash et enfin les
disques SSD.

Flash est la plus récente ROM et la technologie la plus populaire utilisée aujourd'hui dans le
domaine de la conception de systèmes embarqués. La mémoire flash est un support de stockage
électronique non volatil qui peut être effacé et reprogrammé électriquement. La mémoire flash
est techniquement un type d'EEPROM. La mémoire flash a gagné son nom en raison de sa
grande vitesse (similaire à celle du flash d'un appareil photo) d'effacement de toutes les données
d'une puce semiconductrice.

Random-Access Memory (RAM)

La mémoire vive, parfois abrégé avec l'acronyme anglais RAM (Random Access Memory), est
un type de mémoire qui permet de stocker des informations provisoires. La RAM permet de lire
ou d'écrire des éléments de données en un temps presque identique, quel que soit l'emplacement
physique des données dans la mémoire. Contrairement à la ROM, la RAM est volatile, ce qui
signifie qu'une mise hors tension effacera toutes les données de la RAM. Il existe deux types

7
https://fr.wikipedia.org/wiki/M%C3%A9moire_morte (22/11/2020)

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

de RAM qui sont largement utilisés, à savoir la RAM statique (en anglais Static RAM (SRAM))
et la RAM dynamique (en anglais Dynamic RAM (DRAM)), qui utilisent différentes
technologies pour le stockage des données. Les cellules de SRAM ont bien évolué depuis les
toutes premières versions jusqu’au SRAM actuelles. La SRAM utilise six transistors par cellule
de mémoire, alors que la DRAM n'utilise qu'un seul transistor par cellule de mémoire. Par
conséquent, la SRAM est plus coûteuse à produire. La SRAM n'a pas besoin d'un tel processus
lorsque sous-alimentation électrique. La DRAM même sous-alimentation électrique, doit être
réactualisée périodiquement pour éviter la perte d'information.

SDRAM ou Synchronous Dynamic Random Access Memory (en français, mémoire


dynamique synchrone à accès aléatoire) est un type particulier de mémoire vive ayant une
interface de communication synchrone. Jusqu'à son apparition, les mémoires DRAM étaient
asynchrones, cela signifie qu'elles n'attendaient pas un signal de l'horloge du bus pour réagir
aux signaux d'entrée, donc qu'elles n'étaient pas synchronisées avec le bus8.

Mémoire cache

La vitesse du processeur a considérablement augmenté ces dernières années. Lorsqu'un


processeur rapide fonctionne avec une mémoire lente, la vitesse globale est faible, car quelle
que soit la vitesse de fonctionnement du processeur, sa vitesse réelle est limitée au taux de
transfert de données depuis la mémoire. Par conséquent, un processeur plus rapide signifie
simplement qu'il passe plus de temps à son état d'inactivité.

La mémoire cache est développée pour surmonter ce problème. La mémoire cache est un type
de mémoire vive auquel un microprocesseur peut accéder beaucoup plus rapidement qu'elle ne
peut accéder à la RAM normale. Cette mémoire est généralement intégrée directement au
processeur ou placée sur une puce séparée qui dispose d'un bus propre interconnecté avec le
processeur. La mémoire cache est utilisée pour stocker les instructions de programme qui sont
fréquemment ré-référencées par le software pendant leur exécution, alors que les données moins
fréquemment utilisées sont stockées dans une mémoire de grande taille et à faible vitesse.

8
https://fr.wikipedia.org/wiki/SDRAM (22/11/2020)

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Lorsque le processeur traite des données, il regarde d'abord dans la mémoire cache ; s'il y trouve
les instructions, il n'a pas besoin de faire une lecture plus longue des données de la mémoire
vive. Sinon, un segment de la mémoire vive, composé d'un nombre fixe de mots, est lu dans la
mémoire cache, puis le mot est transmis au processeur. Une telle structure augmente la vitesse
globale d'exécution du logiciel. L'idée est illustrée dans la figure 6.

Figure 6. Mémoire cache.

Certains processeurs ont une mémoire cache à multi-niveau. Elles sont appelées L1 pour le
niveau un, L2 pour le niveau deux, L3 pour le niveau trois, etc. Un CPU fonctionne directement
avec la mémoire cache L1. Le but du cache L1 est de s'aligner avec le CPU afin qu'il obtienne
des données pour un meilleur fonctionnement à chaque cycle de processeur. Il s'agit d'un petit
cache à haute vitesse incorporé directement dans la puce du processeur.

La taille du cache L1 varie généralement de 8 à 64 Ko et utilise high-speed SRAM. Le cache


L2 est censé envoyer des données au cache L1 tous les quelques cycles du processeur, tandis
que le cache L3 peut envoyer des données au cache L2 à un rythme encore plus lent. Les trois
niveaux échangent des données en fonction des besoins du CPU. La figure 7 montre un
processeur dual-core avec deux niveaux de mémoire cache. Chaque cœur a une cache L1
indépendante, mais ils partagent la cache L2 et, bien sûr, la mémoire principale.

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

Figure 7. Un processeur à dual-core avec deux niveaux de mémoire cache.

Les interfaces d'entrée/sortie

Les processeurs embarqués communiquent avec le monde extérieur par des interfaces
d'entrée/sortie. Une interface E/S est un dispositif électronique, sous forme de broches de la
puce, dont un côté est relié au processeur et l'autre côté aux dispositifs d'E/S. Par exemple, le
clavier d'un micro-ondes est un dispositif électronique permettant aux utilisateurs d'interagir
avec le micro-ondes. Il existe un circuit spécial entre le clavier et le microcontrôleur embarqué
qui fonctionne comme interface. Lorsqu'un utilisateur appuie sur une touche, le circuit capte
l'événement, le convertit en un nombre binaire unique et reconnaissable et le présente au port
d'E/S du processeur. Le processeur lit le numéro sur le port et le traite en fonction de sa
signification.

Dans le cas des E/S analogiques, un convertisseur A/N ( A/D converter ) est nécessaire pour
coder les entrées analogiques ( en général un voltage ) en un mot numérique ( en général 8 bits
ou 16 bits ), et un convertisseur N/A ( D/A converter ) est nécessaire pour décoder les sorties
numériques.

Capteurs et actionneurs

-Un capteur est un dispositif d'entrée des systèmes embarqués. Les capteurs sont des éléments
qui transforment une grandeur physique en information électrique. Ils rendent compte de l’état
du système à un moment donné. L’information est délivrée sous la forme d'un signal qui sera

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

exploité par une interface programmable. Par exemple, un capteur à ultrasons convertit les
ondes ultrasonores en signaux électriques, un accéléromètre convertit l'accélération en tension...
Il existe de nombreux types de capteurs. Les capteurs de déplacement, les capteurs de pression,
les capteurs d'humidité, les capteurs gyroscopiques, les capteurs de température et les capteurs
de lumière sont parmi les plus utilisés.

Figure 8. Un capteur à ultrasons.

Capteurs actifs vs passifs

Les capteurs passifs nécessitent une source d'alimentation externe pour fonctionner, ce que l'on
appelle un signal d'excitation. Le signal est modulé par le capteur pour produire un signal de
sortie. Par exemple, une thermistance ne génère aucun signal électrique, mais en faisant passer
un courant électrique à travers elle, sa résistance peut être mesurée en détectant des variations
de courant ou de tension aux bornes de la thermistance.

Les capteurs actifs, en revanche, génèrent un courant électrique en réponse à un stimulus


externe qui sert de signal de sortie sans avoir besoin d'une source d'énergie supplémentaire. De
tels exemples sont une photodiode et un capteur piézoélectrique, un thermocouple.

-Un actionneur est un transducteur qui convertit l'énergie électrique en une autre forme
d'énergie, telle que le mouvement, la chaleur, la lumière ou le son, pour déplacer ou contrôler
un système. Par exemple, Dans un circuit, l’actionneur hydraulique constitue l’outil
indispensable pour convertir l’énergie hydraulique en énergie mécanique grâce à un fluide sous

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

pression9. Certains actionneurs nouvellement développés, tels que les piézoélectriques, les
alliages à mémoire de forme et les dispositifs magnétostrictifs, sont basés sur des matériaux à
changement de forme. Ils sont de plus en plus utilisés dans de nouvelles applications.

Le Timer/Compteur

Le Timer/Compteur joue un rôle central dans les systèmes embarqués temps réel. Le Timer est
un type d'horloge spécialisé qui est utilisé pour mesurer les intervalles de temps. Un compteur
compte le nombre d'événements externes qui se produisent sur une broche. Le composant
principal d'un Timer est un compteur binaire (free-running binary counter), qui s'incrémente
Pendant le temps de l'impulsion. Comme il fonctionne librement, il peut compter les entrées,
qui peuvent être des impulsions d'horloge, pendant que le processeur exécute le programme
principal. Si les impulsions d'entrée arrivent à un taux fixe, alors le comptage des impulsions
mesure précisément l'intervalle de temps. Par exemple, si la fréquence des impulsions d'entrée
est de 1MHz et que le compteur a enregistré 1000 impulsions, le temps écoulé est de 1000
microsecondes. Lorsque le compteur est débordé, un signal de sortie est affirmé. Le signal de
débordement peut ainsi déclencher une interruption du processeur ou définir un bit que le
processeur peut lire. La figure 9 montre un compteur de 16 bits qui prend en entrée des cycles
d'horloge.

Figure 9. Structure d'un compteur de 16 bits.

L'Atméga 328 qui équipe l'arduino UNO possède 3 Timers/Compteurs :

▪ Le TC0 est un Timer/Compteur de 8 bits qui compte jusqu'à 256 (0 à 255), le


débordement interviendra lors du passage de 255 à 0,
▪ Le TC1 est un Timer/Compteur de 16 bits qui compte jusqu'à 65536 (0 à 65535), le
débordement interviendra lors du passage de 65535 à 0,

9
https://www.ingenieurs.com/documents/memoire/actionneurs-hydrauliques--47.php (23/11/2020)

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

▪ Le TC2 est un Timer/Compteur de 8 bits qui compte jusqu'à 256 (0 à 255), le


débordement interviendra lors du passage de 255 à 0.

Les impulsions d'entrée peuvent être différentes des impulsions d'horloge. Dans ce cas, on
utilise un prescaler pour générer les impulsions. Un prescaler est un circuit diviseur d'horloge
configurable. Il prend la fréquence d'horloge de base et la divise par une certaine valeur avant
de l'envoyer au compteur. Avec un prescaler, nous pouvons laisser le compteur compter à la
fréquence choisie. Par exemple, si nous configurons le prescaler pour diviser le 1MHz de la
fréquence d'horloge par 8, alors le nouveau taux du timer sera de 106 /8=125KHz, et ainsi, un
timer 16 bits peut enregistrer jusqu'à 65,535 × 8=524,280 microsecondes avant de déborder.

Le compteur est souvent relié à un registre appelé Input Capture Register ou encore registre
de capture d’entrée, comme l'illustre la figure 10.

Figure 10. Un Timer avec un prescaler et un registre de capture.

Un registre de capture peut automatiquement charger la sortie actuelle du compteur lors de


l'apparition d'un événement, généralement un signal sur une broche d'entrée. Lorsque le
détecteur de front repère un événement sur une broche, il envoie un signal d’écriture (WRITE)
pour que la valeur binaire du Timer, soit recopiée dans le registre de capture d’entrée (Input
Capture Register), et au même instant, positionne à 1 le drapeau (Input Capture Flag). Cette
opération effectue une datation de l’événement puisqu’un Timer, comme son nom l’indique,
est fait pour compter le temps qui s’écoule.

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia
Système embarqué temps réel 2020/2021

En fait dans un microcontrôleur le timer/compteur joue un rôle essentiel, il permet10 :

▪ Mesurer le temps qui passe ;

▪ Mesurer la durée d'une action d'un évènement (Génération d'un signal DCC) ;

▪ Compter le nombre d'évènement arrivant sur une broche (Principe de l'analyseur de


trame DCC) ;

▪ Générer des signaux PWM (Modulation à Largeur d'Impulsion),

▪ Réaliser des comparaisons,

▪ Générer des interruptions,

▪ …

Références

Prof. Yann Thoma, INTRODUCTION À LA PROGRAMMATION TEMPS RÉEL,2010.

COTTET, Francis et GROLLEAU, Emmanuel. Systèmes temps réel de contrôle-


commande: conception et implémentation. Dunod, 2005.

LI, Qing et YAO, Caroline. Real-time concepts for embedded systems. CRC Press, 2003.

WANG, Jiacun. Real-time embedded systems. John Wiley & Sons, 2017.

10
https://lesiteferroviaire.pagesperso-orange.fr/Le%20timer-compteur.htm (23/11/2020)

Université Mohamed El Bachir El Ibrahimi Département d’Electronique


Dr. SID AHMED Soumia

Vous aimerez peut-être aussi