4 diapos par page - Sylvain Tisserant

publicité
Microcontrôleurs PIC
Systèmes embarqués
Cours 5
General Instrument
Fin des années 70
Processeur 16 bits (CP1600)
Capacités d’entrées-sorties limitées par rapport à ses
concurrents (Intel 8086 et Motolora 68000)
Conception d’un contrôleur d’entrées-sorties à associer au
CP1600 : Peripheral Interface Controller (PIC)
Le CP1600 a disparu mais pas le PIC, pris en charge par
MicroChip qui a repris la division microélectronique de General
Instrument dans les années 80.
Les microcontrôleurs PIC sont encore parmi les plus populaires
aujourd’hui
Réputation : extrême robustesse
Systèmes embarqués
Sylvain Tisserant - ESIL
Systèmes embarqués - S. Tisserant - ESIL - 2009
Microcontrôleurs PIC (2)
Microcontrôleurs PIC (3)
Principalement manipulation d’octets (données sur 8 bits)
Architecture RISC
Les PICs se déclinent en 3 familles en fonction de la longueur
Nouvelle famille de PIC avec des données de 16 bits dont
des instructions machines
Baseline : 12 bits
Mid-Range : 14 bits
High-End : 16 bits
Jeux d’instructions presque identiques pour les deux premières
familles (33 et 35 instructions respectivement)
Les µC Mid-Range disposent de 2 bits supplémentaires pour
l’adressage de la mémoire
Le jeu d’instructions de la 3ème famille est un peu plus étendu
avec 59 instructions
certains composants sont plus orientés vers le traitement de
signaux numériques (DSC : Digital Signal Controller)
Autour de ces différents cœurs chaque circuit se distingue par le
type des entrées-sorties (SPI, I2C, UART, CAN, LIN, USB,
IrDA) et le type de mémoire non volatile.
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
Microcontrôleurs PIC (3)
ARM
La nomenclature reflète ces déclinaisons : PIC xx X yyyy
Acorn Computers
yyyy : identification du type (taille mémoire, ADC, vitesse
max, E/S, etc.)
X : lettre (F : Flash, C : EPROM, CR : ROM)
xx : famille (10, 12, 16 & 18 : 8 bits, 24 : 16 bits)
dsPIC : DSC 30 & 33
Nombreux formats physiques (boîtiers, broches, etc.)
Philosophie : conserver au maximum la compatibilité
(instructions, brochages, etc.) avec les produits antérieurs
1985 : premier prototype ARM1 (Acorn RISC Machine)
1986 : commercialisation de l’ARM2
Architecture extrêmement simple
Données 32 bits, adressage 26 bits, 16 registres
Très performant pour une très faible consommation
Très vite l’ARM2 est le microprocesseur 32 bits le plus
vendu
ARM : Advanced RISC Machines
Fruit d’une collaboration Acorn, Apple et VLSI (1990)
1991 : ARM6
PDA Newton d’Apple
RiscPC d’Acorn
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
ARM
ARM
Vente des cœurs sous forme de plans ou dessins :
Une série de processeurs
Propriété Intellectuelle (IP) : bloc fonctionnel conçu pour être
intégré dans un système sur puce (SoC)
Plusieurs niveaux de licences : masques, synthétisable
(Verilog), etc.
Beaucoup de microcontrôleurs sont basés sur des cœurs
ARM
Licences achetées par un grand nombre de fabricants de
microprocesseurs et/ou microcontrôleurs
Aujourd’hui : 75 % des processeurs embarqués
Excellent rapport performance/consommation (MIPS/mW)
Assistants, téléphones mobiles, consoles de jeux, lecteurs
multimedia, routeurs, périphériques (disques durs,
contrôleurs, etc.)
Systèmes embarqués - S. Tisserant - ESIL - 2009
ARM7, ARM9, ARM10, ARM11 & Cortex
Faible surface silicium ⇒ faible coût
Faible consommation
Système d’interruptions efficace
Grande variété des modes d’adressage
Cœurs très similaires, mais pas compatibilité totale
ARM7 :
32 bits – Von Neuman – 3 étages de pipeline – 100 MHz
ARM9 :
ARM10 :
32 bits – Harvard – 5 étages de pipeline – 200 MHz
64 bits – Harvard – 5 étages de pipeline – 300 MHz
Systèmes embarqués - S. Tisserant - ESIL - 2009
ARM7
ARM7 et mémoire
Bus du processeur synchrone
CLK & CLKEN
Von Neumann
Bus pour données et instructions
Seules les instructions load, store et swap permettent
l’accès à la mémoire
Deux cycles d’horloge par transfert, mais un transfert peut être
effectué à chaque cycle
Adressage sur 32 bits (4 Go)
ADDR[31:0]
Bus de lecture et d’écriture distincts
WDATA[31:0], RDATA[31:0] & WRITE
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
ARM7 et mémoire (2)
ARM7 et mémoire (3)
Transferts par mots (32 bits), demi-mots (16 bits) et octets
SIZE[1:0]
Le cycle lecture-écriture de l’instruction swap ne peut être
Adresse de mots multiple de 4 et de demi-mots paire
ADDR[1:0] ou ADDR[0] sont ignorés
interrompu
LOCK
Accès aux périphériques en écrivant en mémoire
Représentation big-endian ou little-endian
CFGBIGEND
Quatre type de cycles
Interne : bloque le chargement du code
Coprocesseur : aucun transfert mémoire
Non séquentiel
Séquentiel
TRANS[1:0]
Systèmes embarqués - S. Tisserant - ESIL - 2009
big endian
little endian
Octet 0
Octet 1
Octet 2
Octet 3
i
i+1
i+2
i+3
Octet 3
Octet 2
Octet 1
Octet 0
i
i+1
i+2
i+3
Systèmes embarqués - S. Tisserant - ESIL - 2009
adresse
adresse
ARM et coprocesseurs
Modes de fonctionnement
Interface disponible au niveau du processeur
Sept modes de fonctionnement
Signaux pour interfaçage matériel & instructions particulières
Communication via le bus de données
Jusqu’à 16 coprocesseurs
Gestion de la mémoire
Calcul en virgule flottante (VFP), etc.
Si coprocesseur absent
Instruction non définie
permet exécution
mais plus lente
User :
mode d’exécution normal
mode de traitement d’une interruption rapide
IRQ :
mode de traitement d’une interruption normale
Supervisor : mode privilégié (sur Reset ou SWI) en général
pour système d’exploitation
Abort :
Impossibilité d’exécuter un transfert mémoire
(ABORT)
FIQ :
Undefined : mode activé par un code d’instruction non défini
System :
Systèmes embarqués - S. Tisserant - ESIL - 2009
ARM7 et registres
permet émulation d’un coprocesseur
mode privilégié avec accès aux mêmes registres
que le mode User
Systèmes embarqués - S. Tisserant - ESIL - 2009
ARM7 et banques de registres
Au total 37 registres de 32 bits
Pas tous visibles simultanément
Selon le mode de fonctionnement
13 registres généraux : R0 à R12
2 registres mixtes par mode
R13 : pointeur de pile privée pour chaque mode
R14 : adresse de retour
Compteur ordinal : R15
Accessible au programmeur
Registre d’état (CPSR : Current Program Status Register)
Indicateurs d’états, mode de fonctionnement, masques
d’interruption, etc.
Un registre par mode de fonctionnement
Une sauvegarde par mode privilégié (SPSR : Saved PSR)
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
Le registre d’état (CPSR et SPSR)
Les instructions
Toutes les instructions travaillent sur des registres, sauf les
instructions load, store et swap.
Indicateurs conditionnels
N : négatif
Z : zéro
C : retenue
V : débordement
Q : débordement dans une
série d’opérations (sur
certains modèles)
Validation des interruptions
I : masque IRQ
F : masque FIQ
Mode Thumb
T = 0 : mode ARM (32 bits)
T = 1 : mode Thumb (16 bits)
Indicateurs de mode
5 bits de bas poids
10000 : user
10001 : FIQ
10010 : IRQ
10011 : supervisor
10111 : abort
11011 : undefined
11111 : system
Gain en performances grâce à une architecture simplifiée
Codage des instructions sur un seul mot
Flux régulier dans le pipeline
Pipeline à 3 étages pour ARM7
Chargement, codage et exécution
Un cycle d’horloge par instruction
Pas d’anticipation des branchements
Systèmes embarqués - S. Tisserant - ESIL - 2009
Deux jeux d’instructions
Systèmes embarqués - S. Tisserant - ESIL - 2009
Codage des instructions ARM
ARM : 58 instructions de 32 bits avec accès aux 15 registres
3 opérandes : OP dest, src1, src2
Instructions à exécution conditionnelle
Décalage de src2 (barrel shifter) : spécificité de ARM
Thumb : 30 instructions de 16 bits avec accès à 8 registres (R0
à R7)
Sous ensemble des instructions ARM
2 opérandes : OP dest/src1, src2
Pas d’exécution conditionnelle
Pas de décalage de src2
Réduction de la taille du programme
Sans dégradation importante des performances car
décompression au niveau du matériel, avant décodage
Systèmes embarqués - S. Tisserant - ESIL - 2009
Bits 28-31 : condition d’exécution (cond)
Bits 21-27 : code opération
Bit 20 :
modification du registre d’état si S = 1
Bits 16-19 : registre source 1
Bits 11-15 : registre destination
Bits 0-10 : identification source 2 (plusieurs formes : constante,
registre, registre avec décalage, etc.)
Systèmes embarqués - S. Tisserant - ESIL - 2009
Exécution conditionnelle
Exécution conditionnelle (2)
If (R0 != 5) R1 = R1+R0-R2
Solution classique
CMP
BEQ
ADD
SUB
R0, #5
SUITE
R1, R1, R0
R1, R1, R2
SUITE …
Exécution conditionnelle
CMP
R0, #5
ADDNE R1, R1, R0
SUBNE R1, R1, R2
…
Systèmes embarqués - S. Tisserant - ESIL - 2009
Assembleur
Systèmes embarqués - S. Tisserant - ESIL - 2009
Exemple : traitement des données
Traitement de données
Opérations arithmétiques, opérations logiques, mouvements
de registres, comparaisons
Mise à jour du CPSR si S ajouté au mnémonique
Multiplications
Transferts entre mémoire et registres
Load (LDR) et store (STR) : mots, demi-mots et octets
Load multiple (LDM) et store multiple (STM)
Contrôle de flot
BX et BLX : passage de ARM vers Thumb et vice-versa
Gestion de sémaphores (SWP)
Cycle lecture-écriture atomique
Interruption logicielle (SWI)
Coprocesseurs
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
Opérandes et modes d’adressage
Opérandes et modes d’adressage (2)
Registre
Transfert multiple
Indirect par registre
R0 = Mem[R1]
R2 = Mem[R1+4]
R5 = Mem[R1+8]
LDMIA R1!, {R0,R5,R2}
idem et R1 = R1+12
Ordre des registres sans importance : toujours pris dans
ordre croissant
Extension : IA (increment after), IB (increment before), DA
(decrement After), DB (decrement before)
Adressage pile
STMFD R13!, {R0,R1,R5}
pour empiler
LDMFD R13!, {R0,R1,R5}
pour dépiler
Extension : FD (full descending), FA (full assending)
LDR R0, [R1]
STR R0, [R1]
Base + déplacement
LDR R0, [R1,#4]
LDR R0, [R1,#4]!
LDR R0, [R1],#4
R0 = Mem[R1]
Mem[R1] = R0
R0 = Mem[R1+4]
R0 = Mem[R1+4] & R1 = R1+4
R0 = Mem[R1]
& R1 = R1+4
LDMIA R1, {R0,R5,R2}
Systèmes embarqués - S. Tisserant - ESIL - 2009
Opérandes : source 2
Systèmes embarqués - S. Tisserant - ESIL - 2009
Contrôle de flot
Branchement
Conditionnel ou non
Branchement avec lien de retour
…
BL Routine
R14=PC+4; PC=Routine
…
Routine: …
…
MOV PC,R14
PC=R14
Passage des paramètres
Registres et pile
Récupération des résultats
Registres, pile et registre d’état
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
Contrôle de flot (2)
Exceptions et interruptions
Appels imbriqués
Table des vecteurs
…
BL
fun1
R14=PC+4; PC=Routine
…
fun1: STMFA R13!,{R14}
…
BL
fun2
…
LDMFA R13!,{R15}
fun2: …
MOV R15,R14
Il faut sauvegarder l’adresse de retour (dans la pile), sauf si
dernier appel
Source
Adresse
Mode
Retour
nRESET
0x00000000 supervisor
Inval. Instr.
0x00000004 undefined MOVS R15,R14
SWI
0x00000008 supervisor MOVS R15,R14
Prefetch abort 0x0000000C abort
SUBS R15,R14,#4
Data abort
0x00000010 abort
SUBS R15,R14,#4
nIRQ
0x00000018 IRQ
SUBS R15,R14,#4
nFIQ
0x0000001C FIQ
SUBS R15,R14,#4
A chaque adresse on doit avoir chargé une instruction du type
B IR_handler
Systèmes embarqués - S. Tisserant - ESIL - 2009
Différences entre IRQ et FIQ
Systèmes embarqués - S. Tisserant - ESIL - 2009
Un exemple
FIQ prioritaire
IRQ est masquée par FIQ
FIQ mon masquée par IRQ
FIQ dispose de 5 registres privés (R8_fiq à R12_fiq)
Pas de sauvegarde si 5 registres suffisent pour traiter
l’interruption
Donc prise en compte de FIQ plus rapide
En général une seule source connectée à l’entrée nFIQ
Contrôleur d’interruptions connecté à nIRQ
Gestion des priorités et des masques
Mémorisation des interruptions
Accès (programmation des masques, adresse de la routine
de traitement, etc.) depuis ARM dans l’espace d’adressage
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
Bus AMBA
Mise au point embarquée
Bus proposé par ARM
Certaines versions (par exemple : ARM7TDMI) propose un
Bus rapide : Advanced High Bus (AHB)
Bus lent (< 1 Mb/s) : Advanced Peripheral Bus (APB)
système de mise au point embarqué
EmbeddedICE Logic :
suivi des activités du processeur avec gestion de points
d’arrêt sur conditions spécifiques
EmbeddedICE Trace Macrocell :
capture d’états du processeur avant et après un événement
programmé
accès aux registres et données
Interface JTAG
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
Extensions
Extensions (2)
Extensions pour traitement de signaux numériques
Jazelle DBX (Direct Bytecode eXcecution)
DSP enhancement instructions
Exécution du bytecode Java
Un bit (J) du CPSR qui indique le mode Jazelle
Instructions sur 8 bits
Une partie des instructions de la JVM est exécutée
directement par du microcode. Les autres sont émulées.
A partir de ARM9
Intelligent Energy Manager (ARM IEM)
Matériel : Dynamic Voltage and Frequency Scalling (DFVS)
Algorithmique associée au système d’exploitation
IEM sofware + Intelligent Energy Controller (IEC) +
Advanced Power Controller (APC)
Cœurs ARM intégré dans certains FPGA (Excalibur d’Altera)
Advanced SIMD (NEON)
Single Instruction Multiple Data
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
ARM IEM
Systèmes embarqués - S. Tisserant - ESIL - 2009
Liaison série
Un exemple ARM710
Systèmes embarqués - S. Tisserant - ESIL - 2009
Liaison série (2)
Une liaison série est en général le moyen de communication le
moins coûteux et le plus facile à mettre en œuvre dans un
système embarqué
Transfert des données bit à bit sur un seul fil
Une interface série convertit donc une information parallèle
(spatiale) en une information série (temporelle)
Elément de base : registre à décalage
Emission : chargement parallèle & lecture série
Réception : chargement série & lecture parallèle
Synchronisation entre émission et réception
Communication synchrone : transmission d’un signal
d’horloge sur un second fil
Communication asynchrone : pas d’horloge avec les
données
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
Liaison série (3)
UART
La plupart des microcontrôleurs comporte une interface série
Ligne au repos : état haut
Début de transmission : 1 start bit – état bas
qui s’appelle selon les constructeurs :
UART : Universal Asynchronous Receiver Transmitter
ACIA : Asynchronous Communication Interface Adaptater
SCI : Serial Communication Interface
Liaison asynchrone
Emetteur et récepteur doivent disposer chacun d’une
horloge
Même fréquence pour les deux
Protocole pour synchroniser ces deux horloges
Synchronisation de l’horloge du récepteur
Données : entre 5 et 8 bits dans l’ordre des poids croissants
Bit de parité (optionnel)
Parité construite par émetteur et récepteur
Doivent utiliser la même convention (paire ou impaire)
Fin de transmission : 1 ou 2 stop bits – état haut
Le bloc de données ne peut pas suivre avant au moins 1 ou
2 cycles d’horloge
stop stop
start
5 à 8 bits
Systèmes embarqués
- S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
UART
parité
SPI
Serial Peripheral Interface
Four-wire interface
Développé initialement par Motorola
Interface simple et bon marché entre microcontrôleur et un
grand nombre de périphériques (mémoire, convertisseurs AN et
NA, écrans LCD, capteurs, etc.)
Existe sur de nombreux microcontrôleurs
Protocole synchrone
Du type maître-esclaves
Horloge commune fournie par le maître
Utilisée par le ou les esclaves
Le maître sélectionne un esclave grâce à une ligne
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
SPI (2)
SPI (3)
maître
esclave
Un registre à décalage de chaque côté (maître et esclave)
Pendant que le maître transmet un octet, il en reçoit un de
Quatre lignes
Master Out Slave In (MOSI)
Serial In (SI) ou Serial Data In (SDI)
Master In Slave Out (MISO)
Serial Clock (SCLK ou SCK)
Chip Select (CS) ou Slave Select (SS)
Serial Out (SI) ou Serial Data Out (SDO)
l’esclave
Echange des deux octets
Si écriture uniquement le maître ignore l’octet reçu
Si opération de lecture uniquement le maître doit envoyer un
octet sans signification
Le signal d’horloge ne bat que pendant les transferts, sinon
niveau stable
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
SPI (4)
SPI (5)
Le protocole permet l’envoi de plusieurs octets en série
Un des quatre modes : horloge polarité basse et phase zéro
Par exemple : esclave = mémoire
Le protocole supporte le chaînage (sous contrôle du maître)
Mais ce n’est pas implémenté dans tous les périphériques
Quatre modes de fonctionnement possibles
Inactivité : SCK niveau haut ou bas
Validité des données sur front montant ou descendant
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
I2C
I2C (2)
Inter-Integrated Circuit
Parfois dénommé IIC
Microchip, Philips, Intel, etc.
Bus bidirectionnel synchrone de type maîtres-esclaves
Basse vitesse (100 à 400 kb/s)
Autorise connexion et déconnexion sans affecter les autres
périphériques sur le bus
Deux lignes
Serial Data (SDA) : partagée pour transmission du maître et
réponse de l’esclave
Serial Clock (SCL)
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
I2C (3)
I2C (4)
Protocole très simple
Début de transfert et premier bit
Inactivité :
SDA et SCL état haut
Début de transmission :
SDA, puis SCL passent dans état bas
Prévient les récepteurs
Pour chaque bit :
Échantillonné sur front montant de SCL
Systèmes embarqués - S. Tisserant - ESIL - 2009
Séquence de deux bits
Systèmes embarqués - S. Tisserant - ESIL - 2009
I2C (5)
I2C (6)
Fin de transfert
Accusé de réception
Pas de limitation du nombre d’octets dans un transfert
Si un récepteur ne peut accepter d’autres données : il maintient
la ligne SCL en niveau haut, cela force l’émetteur à attendre
avant de poursuivre
Accusé de réception (après 8ème bit)
Maître libère la ligne SDA et produit un cycle SCL
supplémentaire
Le récepteur doit alors forcer ligne SDA dans l’état bas
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
IrDA
IrDA (2)
Infrared Data Association
Couche physique
Au départ HP-SIR (Serial Infra Red)
150 compagnies
Standard en couches
Deux modes
Systèmes embarqués - S. Tisserant - ESIL - 2009
RZ (3/10)
4PPM
Systèmes embarqués - S. Tisserant - ESIL - 2009
IrDA (3)
IrDA (4)
IrLAP
Link Access Protocol
Etablir une liaison fiable
Contrôle de flux de bas niveau
Détection d’erreurs, retransmissions
IrLMP
Link Management Protocol
Connexion des applications à IrLAP
Négociation des performances
Multiplexage (plusieurs clients sur le seul IrLAP)
Résolution d’adresses, etc.
Systèmes embarqués - S. Tisserant - ESIL - 2009
IrDA (5)
TinyTP
Tiny Transport Protocol
Contrôle le flux plus évolué
Optionnel, mais souvent indispensable
IrOBEX
Object Exchange Protocol
Pour applications orientées objets
IrCOMM
Emulation ports série et parallèle
Systèmes embarqués - S. Tisserant - ESIL - 2009
Systèmes embarqués - S. Tisserant - ESIL - 2009
Téléchargement