Vous êtes sur la page 1sur 20

Systèmes embarqués

Introduction aux systèmes embarqués


I. C’est quoi un système embarqué
Un système embarqué peut-être vu comme le système (ensemble physique, électronique et
informatique) embarqué dans le produit (souris, clavier, montre, voiture, fusée spatiale, carte
bancaire, etc la liste est très longue).

Un système embarqué peut être vu comme l'ensemble des sous composantes ou sous- systèmes
suivants. Ce ‘’tout’’ forme un système embarqué complet de stockage, d’échange et de traitement
de l’information :
• Système Physique (hardware/matériel) : Interfaces avec l'environnement extérieur au produit
(capteurs, actionneurs et antennes).
• Système Électronique Analogique (hardware/matériel) : Conditionnement et mise en forme des
signaux de mesure et de contrôle (chaîne d'instrumentation) ainsi que des chaînes de
communication.
• Système Électronique de Puissance (hardware/matériel) : Mise en forme et dimensionnement des
entrées électriques d’énergie (redresseur, hacheurs flyback, forward, etc). Stockage de l'énergie
électrique sur système embarqué autonome (batterie).
• Système Électronique Numérique (hardware/matériel) : Stockage numérique des données
(mémoire donnée) et des programmes (mémoire programme). Traitement des données par
exécution du programme puis mise en forme de l'information (processeur). Interfaces numériques
de communication et d'échange avec l’extérieur (fonctions périphériques).
• Système Informatique (software/logiciel et firmware/micrologiciel) : Couche système (système
d'exploitation du matériel), couche bibliothèque (utilitaires et fonctionnalités pour les applications)
et couche applicative (missions de supervision du système appliquées à des besoins spécifiques
voire problématiques de calcul).
I. Introduction
I.1. Chaîne de traitement de l’information
Exemple de chaîne de traitement de l’information

Avantages / inconvénients de l’utilisation d’un système de traitement à microprocesseur


+ évolutivité de la solution : on peut modifier les algorithmes
+ bonne immunité aux bruits de la partie commande
+ coût
- demande un investissement initial (matériel, logiciel, humain)
- ce n’est pas parfait, le système introduit des erreurs liés à la conversion A/N, aux
calculs. Il faut s’assurer que la précision est suffisante.
I.2. Système à microprocesseurs
• Les systèmes à microprocesseurs manipulent de l’information.
Information : n. f. élément de connaissance susceptible d’être codé pour être conservé, traité ou
communiqué – Petit Larousse Illustré - 2001.
• Quels types d’informations ?
– n’importe quelle grandeur physique mesurée via un capteur puis échantillonnée,
– des nombres issus de la lecture de l’état de boutons poussoir (appuyé/relâché), utilisés pour
faire de calcul numérique, …
– du texte : suite de nombres qui représentent les lettres de l’alphabet,
– des images : tableau à deux dimensions de nombres qui représentent la couleur de l’élément
atomique d’image (pixel),
– de la musique : suite de nombres qui représentent les valeurs de l’onde sonore échantillonnée
au cours du temps.
• Exemple de système à microprocesseur
Microprocesseur et microcontrôleur
Un microcontrôleur est un microprocesseur possédant dans le même circuit intégré de la
mémoire et d'autres périphériques (pour gérer par exemple un bus I2C, un bus série ...)

µC en boite
Architecture globale de µC

Différence en µP et µC

Domaine d’application de µP et µC
II. DIVERSITÉ DES ARCHITECTURES PROCESSEUR
II.1 Architectures modernes

II.2 Applications
Les microcontrôleurs (MCU, Microcontroller Units) sont les processeurs les plus répandus dans
notre environnement.
Les microcontrôleurs sont des processeurs dédiés à la supervision des systèmes électroniques. Ils
contrôlent leur environnement via leurs interfaces et leur firmware embarqué développé pour une
application spécifique.
Ils ciblent des marchés où les applications sont faible coût, faible consommation, faible
encombrement et gros volumes de production.
II.3 Familles de MCU
Il existe un très grand nombre de solutions MCU chez différents fondeurs, permettant de
résoudre un cahier des charges.

II.4 Familles de MCU


Le cœur AVR possède les caractéristiques suivantes :

 architecture Harvard 8 bits RISC


 32 registres de calcul divisés en 2 sous-ensembles :
o les registres r0 à r15 ne permettent pas de travailler avec les valeurs immédiates
o et les registres r16 à r31 le permettent.
Jeu de 90 à 135 instructions (selon le composant).
La plupart des instructions (sauf les instructions de saut ou d'accès mémoire)
s'exécutent en un seul cycle processeur. L'architecture AVR met en œuvre un pipeline,
ce qui permet d’exécuter une instruction par cycle d'horloge. Le cœur AVR atteint donc
environ 1 Mips/MHz.
Représentation de l’information
1.Introduction
• Tout (instructions des programmes de traitement et données à traiter) est codé
numériquement en binaire (0 ou 1).
– le codage des instructions est propre à chaque microprocesseur,
– le codage des données simples (nombres, caractères) est standardisé. Les données
complexes sont une association de données simples. ⇒ permet une interprétation
cohérente des données quel que soit le système.
• Les microprocesseurs sont caractérisés par un format limité à n bits pour représenter
l’information numérique. Les opérateurs de calcul sont définis pour ce format. On dira
généralement que la machine peut traiter des mots de n bits.
Les formats usuels sont :
4 bits : quartet (nibble),
8 bits : octet (byte),
16 bits : mot (word) / demi-mot (half word),
32 bits : long mot (long word) / mot (word),64 bits : très long mot / long mot (long word).
Les formats de 4,8 et 16 bits, bien qu’ayant disparus dans les ordinateurs, sont toujours
utilisés dans les microprocesseurs des petits automatismes.
1.1. Rappels sur la représentation d’un nombre dans une base B
• Base de numération B : un ensemble ordonné de B symboles
– base 2 : x ∈  
– base 10 : x ∈          
– base 16 : x ∈          ABCDEF
• Représentation X d’un nombre dans une base B = suite ordonnée de symboles xi. i est
le rang ou l’indice du symbole dans la représentation. Les symboles sont appelés digits.
X = (. . . 𝑥 𝑥 𝑥 𝑥 𝑥 )
Plutôt que de spécifier la base à chaque fois, on utilise des préfixes ou des suffixes : $,
0x ou H pour la base 16, % ou B pour la base 2, et rien pour la base 10. En base 2, le
digit est appelé bit (binary digit).
• Pondération : affectation d’un poids croissant à chaque digit suivant sa position en
partant de la droite. Ce poids est une puissance entière Bi. i est le rang du digit. Le digit
le plus à gauche est le digit de poids fort (de poids le plus élevé).
Le digit le plus à droite est le digit de poids faible (de poids le plus faible).
• Valeur de la représentation : c’est la valeur décimale (base 10) associée à la
représentation d’un nombre. Elle est définie par
𝑋= 𝑥𝐵 = 𝑥𝐵 + 𝑥 𝐵 = 𝐸(𝑋) + 𝐹(𝑋)

Avec i un entier, 𝐸(𝑋) = ∑ 𝑥 𝐵 la partie entière du nombre et 𝐹(𝑋) = ∑ 𝑥 𝐵 sa


partie fractionnaire ou décimale.
• Exemples
base 10 : .   10   10   10
base 2 : (101.01)   2   2   2   2 2  .
base 16 : (43.7) = 16   16   16  .
1.2. Changement de base• Quelques repères

Position du problème : exprimer un nombre X représenté dans une base B’ (base


initiale) dans une base B (base finale).
• Traitement de la partie entière
Principe : on effectue les divisions successives de la partie entière E(X) par B (les
calculs se font dans la base initiale B’). Les restes des divisions successives, exprimés
dans la base B, constituent les digits (des poids faibles vers les poids forts) de la
représentation de la partie entière dans la base B.
• Traitement de la partie décimale
Principe : on multiplie successivement la partie fractionnaire F(X) par B (calculs dans la
base initiales B’). Les parties entières successivement obtenues (exprimés dans la base
B) constituent les digits (des poids forts aux poids faibles) de la représentation de la
partie fractionnaire dans la base B.
• Remarques pour les bases 2-8-16
Pour passer de la base  à une base B = 2 , avec n entier positif, il suffit de regrouper
les digits de la représentation en base  par “paquets” de n symboles, en partant des
poids faibles pour la partie entière, et des poids forts pour la partie décimale. Il reste
alors à coder chaque “paquet” dans la base B.
L’opération peut être réalisée dans l’autre sens pour passer d’une base B = 2 en base
.
2. Représentation des nombres entiers dans un format limité à n bits
2.1. Entiers naturels
• 0, 1, 2, 3, 4, 5, …2.1.1. Codage en binaire naturel• Codage supporté de manière native
par tous les microprocesseurs.
• Les nombres sont codés en binaire (base 2), ou pour une écriture plus compacte, en
hexadécimal (base 16 = 2 ). La valeur 4que peut prendre un entier naturel codé sur n
bits est comprise dans l’intervalle
 ≤ X ≤ 2   (2.1)
• Certaines opérations arithmétiques peuvent fournir un résultat dont la représentation
dépasse la capacité de codage liée au format de la machine : il y a débordement.
• Si la capacité de codage de la machine n’est pas suffisante pour représenter les
nombres sur lesquels on travaille (n  format de la machine), il est toujours possible de
réaliser des opérations sur des mots plus long que le mot de base de la machine
numérique. C’est alors au programmeur de prendre en charge l’implantation des
opérations arithmétiques : c’est le calcul en multiprécision.

2.1.2. Code binaire réfléchi


• Certains capteurs comme les codeurs angulaires utilisent ce code. Il a l’avantage
d’avoir des combinaisons qui ne sont modifiées que d’un seul bit à chaque fois.
• Le code n’est pas supporté de manière native par les microprocesseurs, car non
pondéré. Pour l’exploiter, il est nécessaire de passer en code binaire naturel par une
opération de transcodage

• Opérations de transcodage
2.1.3. Code BCD
• Certains processeurs supportent ce codage et permettent de réaliser des opérations
simples (addition, soustraction).
• Decimal Codé Binaire : on code chaque digit décimal (base 10) en binaire sur 4 bits :

Son principal intérêt est qu’il permet de travailler avec le système décimal sur un
microprocesseur qui, à la base, ne comprend que le binaire. Il permet également
d’afficher à l’aide d’un simple transcodage (BCD - 7 segments) les valeurs.
2.2. Entiers relatifs
• … -4, -3, -2, -1, 0, 1, 2, 3, 4, …
• Convention : on utilise le bit de poids fort (de rang n-1) comme bit de signe.
∗ 0 : nombre positif
∗ 1: nombre négatif
2.2.1. codage amplitude-signe
• La représentation est constituée du bit de signe (codée sur 1 bit) et de la valeur absolue du
nombre codée sur (n-1 bits). Ilest possible de coder des valeurs dans l’intervalle
2   ≤ X ≤ 2  (2.2)
Exemple :
n   bits      x F et       xBF
• Cette représentation présente des inconvénients pour le calcul sur machine
:– 0 peut avoir deux représentations : +0 ou -0. Par convention, on écarte la deuxième
possibilité.
– Pour réaliser une addition ou une soustraction, il faut tester le signe des opérandes
afin de savoir quelle opération doit être réellement effectuée. Une comparaison des
valeurs absolues peut également être nécessaire, ce qui complique la réalisation de
l’opérateur de calcul.
⇒ Cette représentation n’est pas employée par les opérateurs de calcul des machines
numériques.
2.2.2. codage en complément à 𝟐𝒏
• Soit un nombre X ≥  codé sur n-1bits et avec le bit de poids fort à 0 (bit de signe). On
a
𝑋+𝑋 =2    𝑋 + 1 = 2 − 𝑋 = −𝑋 𝑚𝑜𝑑𝑢𝑙𝑜 2
• La représentation en complément à 𝟐𝒏 (ou complément à la base ou complément à 2)
d’un nombre X se définit comme suit :
– Si le nombre est positif ou nul, le nombre est codé sur n-1bits, le bit de poids fort (le
signe) valant 0.
– Si le nombre est négatif, le code correspond au complément à 2 de la valeur absolue
du nombre :
𝐶𝑉(|𝑋|) = 2 − |𝑋| = |𝑋| + 1
Le codage aboutit à une représentation avec le bit de poids fort (le signe) égal à 1
.∗ Pour retrouver la valeur absolue du nombre :
CV(CV(X ))  X .
∗ méthode rapide à partir du code binaire de la valeur absolue : en partant des poids
faibles, on recopie les bits à "0"jusqu’au premier "1" rencontré. On recopie ce "1". On
complémente tous les bits suivants.
– La valeur (décimale) d’un nombre représenté en complément à 2 est :

• La représentation en complément à 2 de nombres codés sur n bits permet le codage


de nombres compris dans l’intervalle
−2 ≤X≤2  

Exemple pour n = 4 :
• Remarques :
– Le bit de poids fort représente le signe, bien qu’il fasse partie intégrante du codage du
nombre.
– Il n’existe qu’une représentation du zéro.
• Intérêt de la représentation complémentaire: l’addition et la soustraction peuvent
être traités par le même opérateur.
S  X  Y  X    n Y   X  CV Y  (2.7)
∗ Un simple additionneur binaire permet de réaliser l’addition ou la soustraction.
∗ Problèmes liés au débordement de la capacité de codage : il est possible de générer
un indicateur de débordement (V).
2.3. Opérations sur les entiers
• Opérations arithmétiques : addition, soustraction, multiplication et division. Sur
certains microprocesseurs les deux dernièresopérations sont émulées.
• Opérations logiques : AND, OR, XOR.
• Opérations de décalage logique ou arithmétique et rotation – gauche ou droite.
• Opération de comparaison : cela revient à faire une soustraction qui positionne les
indicateurs NZVC, mais sans résultat.
3. Représentation des nombres réels dans un format limité à n bits
Contrairement aux nombres entiers, il est impossible de représenter exactement, sur un
nombre fini de bits, une valeur réelle quelconque. On introduit, au moment du codage,
une erreur de troncature.
3.1. Codage en virgule flottante
• Principe de la représentation en virgule flottante : cela consiste à représenter un
nombre réel sous la forme
𝑋 = ±𝑚𝐵 (3.1)
avec  la base de représentation,  la mantisse (la partie significative du nombre) et
 l’exposant. La représentation est dite
si 1 ≤ m < .
• En binaire ( = 2), le format de représentation de  et  est fini. Exemple : 1 ≤ m < 2
codé sur p = 3 bits, - 1 ≤ e ≤ 2

• Il n’est pas possible de représenter la valeur 0.

• La norme IEEE P754∗ Cette norme propose deux formats de représentation pour un
nombre sous la forme X   .M  2 : un format simple précision sur 32 bits et un format
double précision sur 64 bits.

Le bit de signe suit la convention habituelle. Les intervalles de valeurs codables sont :

L’exposant négatif est plus petit en valeur absolue que l’exposant positif afin que des
opérations telles que ne provoquent pas un débordement du format de codage
(overflow). Le fait que l’opération ne soit pas codable (débordement inférieur de
capacité ou underflow) est considéré comme non critique, le résultat pouvant alors être
approximé par 0.
∗ La norme admet les conventions de représentation suivantes,

Exemple : le ,  ∞, ∞ , et NaN (Not a Number : 0/0) sont codés de la manière suivante


en simple précision

Opérations sur les nombres réels


Certains microprocesseurs supportent le standard IEEE P754 de manière matérielle par
la présence d’une unité de calcul en flottant ou d’un coprocesseur mathématique. Pour
les autres, le support est logiciel (par émulation à partir de l’arithmétique entière).
Exemples d’opérations : 𝑋  𝑀 2 , 𝑋  𝑀 2
∗ addition/soustraction
1. Comparer les 2 exposants
2. Démoraliser les mantisses en décalant vers la droite la mantisse correspondant à
l’exposant le plus petit d’une valeur correspondant à la valeur absolue de la différence
des exposants.
3. Calculer le signe du résultat.
4. Additionner/Soustraire les mantisses.
5. Normaliser le résultat
6. Recoder l’ensemble (exposant, signe and mantisse) au format IEEE.
∗ multiplication : 𝑋 . 𝑋 = 𝑀 . 𝑀 2
∗ division : = 2
3.2. Codage en virgule fixe
• Principe du codage en virgule fixe (fixed point) : on associe un format [p,q], avec p et q
entiers ≥ , et tels que n=p+q,pour définir la position de la virgule dans la
représentation. On a p digits pour la partie entière et q digits pour la partie fractionnaire.

Le choix de la position de la virgule est laissé à l’initiative du programmeur en fonction


de l’intervalle de valeurs qui doivent être représentées et de la précision nécessaire
dans les calculs.
• La précision (le plus petit écart entre deux valeurs successives) est
𝜀 2
Architecture AVR
I. Présentation ATMega 16
L'ATméga16 est un composant intermédiaire de la famille AVR 8 de taille raisonnable (40
broches), qui existe en boîtier DIP et qui est très bien fourni en périphériques.
– Disponible en boîtier DIP40
– 32 lignes d'entrée/sorties
– 512 octets de SRAM
– 16Ko de mémoire Flash
– 512 octets EEPROM

Le brochage (DIP) est donné sur la figure ci-dessus (vue du dessus, noter l'encoche supérieure
permettant de repérer l'orientation). Les noms entre parenthèses correspondent à une
2ème/3ème fonctionnalité de la broche. Ces fonctionnalités sont configurables (activables) de
manière logicielle. Les broches indispensables pour câbler un ATMEGA
– VCC +5V (fonctionne jusqu'à 2.7V)
– GND masse
– RESET Réinitialisation du microcontrôleur (actif a l'état BAS, A CONNECTER A +5V pour
fonctionnement)
– XTAL1/XTAL2 Quartz ou entrée d'horloge (freq<16MHz sous 5V)
Pour citer quelques-unes des fonctionnalités
– PA0, PA1...PA7 Port A : Entrées Sorties
– PBx,PCx,PDx Port B,C,D : 8 Entrées Sorties pour chaque port
– ADC0, ADC7 Seconde fonctionnalité du port A = Entrée analogique
– /SS,MOSI,MISO,SCLK Entrée/sortie série synchrone SPI (PB4/PB7)
– INT0/INT1/INT2 Entrée d'interruption du processeur par un événement externe
– RXD/TXD Liaison série Asynchrone RS232 (communication PC)
– ...
L'architecture interne du microcontrôleur est donnée figure suivante. Elle est représentative des
microcontrôleurs AVR. Suivant le microcontrôleur (ATMEGA, tiny) certains périphériques
disparaîtront ou apparaîtront, mais sans changer la structure interne.
Au centre à gauche : la CPU, c'est le coeur du microcontroleur, c'est la CPU qui exécute les
instructions. On y reconnaît l'architecture Harvard avec ses mémoires données (SRAM) et
programme (PROGRAM FLASH) séparées.
En haut et en bas : les 4 ports d'entrées sorties A B C D : On peut y remarquer les doubles
fonctionnalités des broches. Par exemple les 8 broches du port A sont également connectées au
bloc de conversion analogique numérique (MUX&ADC).
A droite les blocs fonctionnels de contrôles du microcontrôleur et de certains périphériques :
– TIMER,
– clock source,
– contrôleur d'interruption (INTERRUPT)
– liaisons séries TWI, USART, SPI
– ....
Enfin au milieu : un bus permettant le transfert de données entre les périphériques/mémoires et la
CPU
II. ORGANISATION MEMOIRE
Les CPU AVR contiennent plusieurs types de mémoires :
– la mémoire dédiée aux programmes, cette mémoire est de type FLASH, elle conserve les
programmes (ici le programme qu'exécutera le microcontrôleur) même en absence
d'alimentation.
– la mémoire RAM qui contient les données, cette mémoire est de type SRAM. La SRAM perd
les données en absence d'alimentation.
– La mémoire EEPROM, qui contient des données mais conserve ces données si l'alimentation
est coupée. Son fonctionnement est similaire à celui d'un périphérique.
– 2 zones supplémentaires sont assimilables à de la mémoire :
– les 32 registres de travail R0 à R31
– les 64 registres I/O
Les registres sont des « cases mémoires » spécifiques qui peuvent etre spécialisés pour une
utilisation particulière (PC, SP, ...)
II.1 Mémoire programme
Un programme microcontrôleur est composée d'une suite d'instructions assembleurs (le langage
du microcontrôleur est appelé son « jeu d'instructions ») qui sont exécutées les unes après les
autres. Ces instructions sont « flashées » dans le microcontrôleur lors de la programmation de
celui-ci. Elles sont stockées dans la zone de mémoire appelée PROGRAM MEMORY en
mémoire FLASH.
Les instructions du jeu d'instruction AVR ont une largeur de 16 ou 32 bits, la mémoire
programme d'un ATMega 16 est de 16koctets = 8192 mots de 2 octets. Une instruction occupe 1
ou 2 mots de 2octets=16bits soit 16 ou 32 bits suivant les instructions.
Ces instructions sont donc stockées à des adresses allant de 0 à 8191 soit 0x0000 à 0x1FFF en
hexadécimal. Ces adresses sont représentables par un nombre binaire de 13 bits (213 = 8192).
Le registre PC = Program Counter est un registre spécial qui stocke toujours l'adresse de la
prochaine instruction à exécuter.
Pour l'ATMega16 qui dispose de 8192 =213 adresses pour stocker des instructions, seuls les
13 bits de poids faible de PC sont utilisés.
Lors de l'exécution d'une instruction : PC est incrémenté de 1 unité ou remplacé par l'adresse
d'une nouvelle instruction (cas des sauts).
II.1.1 Registres génériques
Les microcontrôleurs AVR disposent de 32 registres génériques directement reliés à l'unité de
calculs arithmétiques et logiques (ALU) en charge de l'exécution de ce type d’instructions
(ADD, SUB, OR, AND, etc...).
Ces registres sont notés R0 à R31. L'ALU ne travaillent QUE sur ces 32 registres.
Exemples d'instructions :
ADD R21,R25
Additionne le contenu 8 bits du registre R25 au contenu de R21.
R25 est appelé registre source (Rs), R21 est le registre de destination (Rd)
Le mnémonique de ADD est ADD Rd,Rs
Il est a noté que le contenu de R25 n'a pas été modifié par l'instruction, le résultat est placé dans
la destination R21, ce qui a détruit son contenu initial
ANDI R21,0x0F
Réalise un « ET logique » bit a bit entre 0x0F (0000 1111) et le contenu de R21.
ANDI = AND Immédiat car la valeur 0x0F est disponible immédiatement (l'ALU n'a pas à aller
la prendre dans un registre)
II.1.2 Les registres IO
Les microcontrôleurs AVR disposent de 64 registres I/O, numérotés 0x00 à 0x3F. Ces registres
permettent de :
– Contrôler les périphériques d'entrée/sortie,
– Contrôler certains modes de fonctionnement du processeur
1 registre particulier concerne le fonctionnement général du processeur.
Le Status REGister SREG est le registre de statut du processeur (n° 0x3F sur l'ATMega16):

Vous aimerez peut-être aussi