9. Introduction aux microcontrôleurs

publicité
MIC7340
Introduction aux
microcontrôleurs
Mounir Boukadoum
Traduit et adapté de l’anglais
Comment additionne-t’on 147 et 332 ?
1. On écrit les deux nombres l’un au
dessus de l’autre
2. On les additionne colonne par
colonne avec les retenues
3. On note le résultat final
Traduit et adapté de l’anglais
On peut reproduire les fonctions précédentes avec
des registres et compteurs logiques
Entrée des
données
Mémorisation
Étapes
d’exécution
(programme)
Accumulateur
de résultats
Sortie des
données
• Pour être réalisés avec des circuits logiques, programme et données
doivent être encodés dans un format reconnu par les circuits => 1 et 0 !
Traduit et adapté de l’anglais
Encodage des Instructions et données
• Données numériques : direct
– Ex. 10dec = 1010bin
• Données non numériques : format numérique représentatif
– Ex. ‘A’  65dec = 01000001bin
• Instructions du programme : format numérique représentatif
– Ex. table d`instructions pour l`additionneur précédent
Traduit et adapté de l’anglais
Encodage des Instructions et données
• Un programme exécution consistera en une
séquence de nombres binaires :
Étape 1 : lire 1er nombre et mettre dans la case mémoire 17
Étape 2 : lire 2nd nombre et mettre dans la case mémoire 18
Étape 3 : Mettre 0 dans l’accumulateur et ajouter le
contenu de 17 à
.
.
.
Code d’opération
• 147+332=479 => 017018117218619519
Traduit et adapté de l’anglais
Argument
Un automate logique simple pour
additionner deux nombres
• Vu de l’extérieur, le programme exécuté est :
017018117218619519
• Un machine capable d’exécuter le programme
automatiquement est dite ordinateur à programme
emmagasiné (stored program computer)
• Distinction des instructions et des arguments : Il faut un
interprète qui détermine le sens d’un chiffre selon sa
position. Cela demande :
– Un séquenceur de programme (Program counter)
– Un registre de sauvegarde des instructions et des données
– Un circuit de contrôle
Traduit et adapté de l’anglais
Ordinateur à programme emmagasiné
• Peut itérer les instructions
• Peut séparer les codes d’instructions des données
• Sans entrées, sorties
ou mémoire, c’est
un microprocesseur
(CPU)
1
2
Données
1
2
Commutateur :
1 : Lire entrée et mettre en mémoire
2 : Lire code d`instruction en mémoire
Traduit et adapté de l’anglais
Adresse en
mémoire
Jeux d’instructions
• CISC (complex instruction set)
– Grand nombre d’instructions
– Opérations de haut niveau en microcode
(simplifient l’usage de langages de
programmation de haut niveau)
– Ex.: Presque tous les processeurs pour
ordinateurs de bureau (Pentium, Athlon,
etc.)
• RISC (reduced instruction set)
– Nombre réduit d’instructions
– Opérations simples uniquement
– Exécution directe par le matériel (pas de
microcode)
– Facile d’ajouter de nouvelles capacités
– Ex. : ARM, PowerPC, MIPS
Traduit et adapté de l’anglais
CISC
(Intel 486)
RISC
(MIPS
R4000)
#instructions
235
94
Addr. modes
11
1
1-12
4
8
32
Inst. Size
(bytes)
GP registers
Architectures d’accès à la mémoire
Machine de Von Neuman
A
Programme
et données
D
Entrées/ Unité
sorties Arithmétique et
logique
A=Adresse
D=données
Architecture de Harvard
A
Programme
Traduit et adapté de l’anglais
D
Entrées/ Unité
sorties Arithmétique et
logique
A
D
Données
(x2)
Caractéristiques de mise en oeuvre
• Le CP a besoin d’une horloge
• L’accumulateur peut être multiple
et fait partie d’une unité
arithmétique et logique
• Des registres auxiliaires existent
avec des fonctions diverses
• Un CPU enrichi de mémoires
externes et d’interfaces au
monde extérieur forme un microordinateur
Traduit et adapté de l’anglais
Micro-ordinateur
Port d'entrée
CLAVIER
Port de sortie
ÉCRAN
Port de sortie
IMPRIMANTE
Port d'E/S
DISQUE
Port d'E/S
MODEM
Ports d'E/S
Périphérique externes
Mémoire morte
ROM, EPROM,
EEPROM
CPU
(Unité centrale
de traitement)
Mémoire vive
RAM
Mémoire interne
Micro-processeur
UC
(Unité centrale)
Écran
Ligne téléphonique
M
O
D
E
M
Imprimante
UC +
Disques
Clavier
Modem
externe
Traduit et adapté de l’anglais

Quelques ordinateurs
Desktop
(Intel Pentium D
3GHz, Nvidia 7900)
VAIO Z46TD
(Intel Core 2 Duo P9700 2.8GHz)
Game Boy Advanced
(ARM7 16.78MHz)
Traduit et adapté de l’anglais
iPod classic
(ARM7 80MHz)
Nokia 6070
(ARM7 51MHz)
Et ceux-ci aussi !
•
•
Les systèmes embarqués comptent pour 94% des ventes
Étendent les applications bien au delà des applications
bureautiques ou de gestion
Traduit et adapté de l’anglais
Microcontrôleur
• Micro-ordinateur à
ressources réduites
• « CPU » pour
systèmes embarqués
Mémoire
CPU
• Composantes
fondamentales d’un
micro-ordinateur
intégrées sur une puce
Mémoire
Port
Périphérique
Port
Périphérique
Port
Périphérique
Port
Périphérique
Port
Périphérique
Port
Périphérique
CPU
(Microprocesseur)
Microcontrôleur
Traduit et adapté de l’anglais
Microcontrôleur en mode expansible
• Forme intermédiaire entre un microprocesseur et un
microcontrôleur
Mémoire
Port
Périphérique
Port
Périphérique
Mémoire
Port
Périphérique
Port
Périphérique
CPU
Traduit et adapté de l’anglais
Composants et interconnections
Bus d'adresses
Bus de données
Mémoire
Alimentation
Bus de contrôle
CPU
Horloge
Mémoire
Interrupt
Port
Périphérique
• Trois bus
fondamentaux
Interrupt
Port
Périphérique
Traduit et adapté de l’anglais
Microcontrôleur en mode autonome
• Les bus sont
internes
Traduit et adapté de l’anglais
Microcontrôleur en mode d’adressage étendu
• Certains/tous les
bus sont
accessibles de
l’extérieur
Traduit et adapté de l’anglais
TI Embedded Processors
Microcontrollers (MCUs)
ARM®-Based Processors
16-bit ultralow power
MCUs
32-bit
real-time
MCUs
32-bit ARM
Cortex™-M3
MCUs
ARM
Cortex-A8
MPUs
MSP430™
C2000™
Delfino™
Piccolo™
Stellaris®
Sitara™
ARM® Cortex™-M3
ARM® Cortex™-A8
& ARM9
Digital Signal Processors (DSPs)
DSP
DSP+ARM
C6000™
DaVinci™
40MHz to
300 MHz
Up to
100 MHz
300MHz to
>1GHz
Flash
1 KB to 256 KB
Flash, RAM
16 KB to 512 KB
Analog I/O, ADC
LCD, USB, RF
PWM, ADC,
CAN, SPI, I2C
Measurement,
Sensing, General
Purpose
Motor Control,
Digital Power,
Lighting, Ren. Enrgy
Flash
8 KB to 256 KB
USB, ENET
MAC+PHY CAN,
ADC, PWM, SPI
$0.25 to $9.00
$1.50 to $20.00
Ultra
Low power
DSP
C6000™
C5000™
video processors
OMAP™
Up to
25 MHz
Multi-core
DSP
24.000
MMACS
Up to 300 MHz
+Accelerator
Cache,
RAM, ROM
300MHz to >1Ghz
+Accelerator
Cache
RAM, ROM
Cache
RAM, ROM
Up to 320KB RAM
Up to 128KB ROM
USB, CAN,
PCIe, EMAC
USB, ENET,
PCIe, SATA, SPI
SRIO, EMAC
DMA, PCIe
USB, ADC
McBSP, SPI, I2C
Connectivity, Security,
Motion Control, HMI,
Industrial Automation
Industrial computing,
POS & portable
data terminals
Floating/Fixed Point
Video, Audio, Voice,
Security, Conferencing
Telecom test & meas,
media gateways,
base stations
Audio, Voice
Medical, Biometrics
$1.00 to $8.00
$5.00 to $20.00
$5.00 to $200.00
$40 to $200.00
$3.00 to $10.00
Software & Dev. Tools
Traduit et adapté de l’anglais
3
5xx Gen Summary …
La famille MSP430 : Architecture générale
• Bus interne de données interne de16 bits et
externe de 8 bits
• Jusqu’à 20 bits d’espace d’adressage
• Site web de TI
Traduit et adapté de l’anglais
La famille TMS430 : CPU de la famille 5xx
• Architecture RISC (Reduced
Instructions Set Computing)
– Nombre d’instructions réduit
– Architecture Von Neumann :
• Emmagasinage commun des
instructions et des données.
• Seize registres à 16-bits-20-bits
– 4 des registres (R0-R3) ont des fonctions
dédiées (PC, SP, SR, et générateur de
constantes) ;
– 12 sont à usage général (R4 -R15)
• Unité arithmétique et logique (ALU):
– Addition, soustraction, comparaison et
opérations logiques (AND, OR, XOR) ;
– Sémaphores pour débordement, zéro,
négatif, and bit de retenue
• Architecture optimisée pour les
compilateurs c
Traduit et adapté de l’anglais
MSP430F5438A Block Diagram
Traduit et adapté de l’anglais
22
MSP-EXP430F5438 …
Kits de démarrage (eZ430-RF2500) 1/2
• Outil de développement pour le microcontrôleur MSP430F2274 et le
transmetteur sans fil 2.4 Ghz CC2500;
• Circuit imprimé cible Z430-RF2500T détachable : peut être utilisé seul,
intégré dans un système, ou avec l`interface de débogage USB;
• Peut communiquer avec un PC par le bais du UART intégré dans le
MSP430.
• Alimentation autonome ou via le port USB
• 50 $
Traduit et adapté de l’anglais
23
Kit de démarrage eZ430-RF2500 :
MSP430F2274 et périphériques 2/2
• Performance de 16-MIPS;
• Convertisseur A-N à approximations successives avec 10 bits de
résolution et fréquence d`échantillonnage jusqu’à 200 ke/s
• Compteur/temporisateur de 16 bits
• 2 amplificateur opérationnels intégrés
• Compteur/temporisateur de 16 bits
• Chien de garde (« Watchdog timer »)
• Module sériel universel supportant UART/LIN, (2) SPI, I2C, or IrDA
• Taux de transfert de données programmable jusqu’à 500 kb/s
• 5 modes d’opération à faible courant (0.7 μA en mode standby)
• Transmetteur RF 2.4-GHz externe (CC2500)
Traduit et adapté de l’anglais
24
Organisation de l’espace mémoire
• Mémoire de travail
(primaire) : Suite de locations
ayant une adresse et un
contenu
– Le contenu peut être à lecture
seule (ROM) ou lecture/
écriture (RAM)
– Les mémoires à lecture seule
sont préprogrammées
• On peut aussi avoir des
mémoires secondaires (pour
l`emmagasinage de masse ou
à long terme) : disque dur,
DVD, flash, etc.
– Le mémoires secondaires
peuvent aussi être è lecture
seule ou lecture/écriture
Traduit et adapté de l’anglais
Accès à la mémoire
• Trois étapes :
1. Génération de l’adresse
sur le bus de données;
2. Spécification du mode
d’accès (ligne commune
r/w ou lignes rd et wr)
3. Lecture/écriture vers ou
à partir du bus de
données
Traduit et adapté de l’anglais
Cycle de fonctionnement d’un CPU
Traduit et adapté de l’anglais
Notation en complément de X
(a) Odomètre hypothétique montrant la notation en complément de 10; (b) Cercle de
nombres de 8 bits montrant la notation en complément de 2.
Traduit et adapté de l’anglais
Addition et Soustraction de nombres entiers à 8-Bit unipolaires
Traduit et adapté de l’anglais
Addition et Soustraction de nombres entiers à 8-Bit bipolaires
Traduit et adapté de l’anglais
Notation en virgule flottante
Traduit et adapté de l’anglais
Perspective du programmeur pour un
CPU simple
ACC
0000h
FLAGS
R0
R1
R2
R3
Registers
FFFFh
Memory
• Typique d’une architecture de Von Neumann
Traduit et adapté de l’anglais
Étapes de développement de
programme
• 017018117218619519 ?!
• On rend le programme plus lisible en
remplaçant les codes d’instructions
par des représentations
mnémoniques
– Ex. : 017  mov @17,A
• Un assembleur traduit à nouveau le
programme obtenu (en langage
« pour assembleur ») en langage
machine avant l’exécution
• Si les locations en mémoire sont
fixées à l’avance, on a un assembleur
absolu.
Traduit et adapté de l’anglais
Cycle de développement de
programme en assembleur absolu
Processus global
de génération de
code
EDITOR
source file (*.s)
ASSEMBLER
Other object files
from assembler
or HLL compilers
• Des fichiers intermédiaires
sont générés
• Des fichiers d’information
sont aussi générés
• Un fichier de configuration
est aussi requis pour l’éditeur
de liens
blank device
Traduit et adapté de l’anglais
list file (*.lst)
relocatable object file (*.o)
LINKER
linker map file (*.map)
relocatable linked object file
LOCATOR
locator map file (*.map)
absolute executable file (*.axf)
HEXTarget
Conversion
HEX-ASCII object file (*.hex)
DEVICE
PROGRAMMER
programmed device
Processus global
de génération de
code
Other object files
from assembler
or HLL compilers
EDITOR
source file (*.s)
ASSEMBLER
list file (*.lst)
relocatable object file (*.o)
LINKER/
LOCATOR
map file (*.map)
absolute executable file (*.axf)
Target
computer
Traduit et adapté de l’anglais
ADuC7026
Device
Simulator
Simulator
HEX
conversion
JTAG
POD
Pod
JTAG
ULink
Device
Programmer
ADuC7026
Target
Hardware
hardware
Example de code source
;
;
;
;
Filename:
sample.s
Author:
ECE 353 Staff
Description: sample program for a ARM7tdmi
do **NOT** use this as the basis for any programming!
EXPORT
IOPORT_ADDRESS
AREA
ARM
Reset_Handler
LDR
Loop
LDR
LDR
LSL
MVN
STR
NOP
B
aLoop
aPort
DCD
DCD
END
Traduit et adapté de l’anglais
Reset_Handler
EQU
;make available to linker
0x80001000
Reset, CODE, READONLY
PC, aLoop
;load PC with program start address
R0,
R1,
R1,
R1,
R1,
;load address of port
;read switch state
;shift left 8 bits to align
;complement
;write LEDs
;do nothing
;repeat forever
aPort
[R0]
#8
R1
[R0]
Loop
Loop
IOPORT_ADDRESS
;
Listage du code généré (1)
5 …
6 00000000
EXPORT
7 00000000
8 00000000 80001000
IOPORT_ADDRESS
EQU
9 00000000
10 00000000
AREA
11 00000000
ARM
12 00000000
13 00000000
Reset_Handler
14 00000000 E59FF018
LDR
15 00000004
Loop
16 00000004 E59F0018
LDR
Reset_Handler ;make available t
o linker
0x80001000
Reset, CODE, READONLY
PC, aLoop
R0, aPort
;load address of po
rt
;read switch state
;shift left 8 bits
to align
;complement
;write LEDs
;do nothing
;repeat forever
17 00000008 E5901000
18 0000000C E1A01401
LDR
LSL
R1, [R0]
R1, #8
19
20
21
22
23
24
MVN
STR
NOP
B
R1, R1
R1, [R0]
DCD
Loop
DCD
IOPORT_ADDRESS
00000010
00000014
00000018
0000001C
00000020
00000020
E1E01001
E5801000
E1A00000
EAFFFFF8
00000000
aLoop
25 00000024 80001000
aPort
26 00000028
27 00000028
Traduit et adapté de l’anglais
END
Loop
Test du design à l’aide d’une carte d’evaluation
Traduit et adapté de l’anglais
Allure dans une fenêtre de desassemblage
0x00080000
0x00080004
0x00080008
0x0008000C
0x00080010
0x00080014
aLoop 0x00080018
0x0008001C
0x00080020
0x00080024
0x00080028
aPort 0x0008002C
0x00080030
0x00080034
Adresses
Traduit et adapté de l’anglais
E59FF018
E59F0018
E5901000
E1A01401
E1E01001
E5801000
E1A00000
EAFFFFF8
00080004
80001000
00000000
00000000
00000000
00000000
Code machine
DD
LDR
LDR
MOV
MVN
STR
NOP
B
DD
ANDHI
ANDEQ
ANDEQ
ANDEQ
ANDEQ
0xE59FF018
R0,[PC,#0x0018]
R1,[R0]
R1,R1,LSL #8
R1,R1
R1,[R0]
?
0x00080004
0x00080004
R1,R0,R0
R0,R0,R0
R0,R0,R0
R0,R0,R0
R0,R0,R0
Code Assembleur equivalent
Débogage
• Tout comme le génie, l’écriture de programmes exige 1%
d’inspiration et 99% de transpiration 
– Un code source fonctionne rarement du premier coup !
– Une fois devenu fonctionnel, il doit être validé
– Ensuite, il faut le maintenir
• Un débogueur permet de :
–
–
–
–
Charger un programme dans un environnement d’exécution contrôlé
Exécuter le programme pas à pas
Établir dynamiquement des points d’arrêt (« breakpoints »)
Afficher/modifier des valeurs de registres ou locations en mémoire
Traduit et adapté de l’anglais
Le cycle de programmation
High-Level Language
Level 5
Assembly Language
Level 4
Operating System
Level 3
Instruction Set
Architecture
Level 2
Microarchitecture
Level 1
Digital Logic
Level 0
Traduit et adapté de l’anglais
41
L’usage de langages de haut niveau
High-Level Language
Assembly Language
Operating System
Instruction Set
Architecture
Microarchitecture
Digital Logic
• Réduit la « distance
Level 5
cognitive » entre l’être
Compilateur
humain et la machine
Level 4
• Augmente la productivité en
Level 3
utilisant des instructions
« fonctionnelles »
Level 2
• Demande un compilateur ou
un interpréteur pour traduire
Level 1
les instructions en langage
Level 0
assembleur
Traduit et adapté de l’anglais
42
Cycle de génération de programmes en
langage de haut niveau
Source de haut niveau Source de haut niveau
Compilateur
Compilateur
• Traduit le code de haut niveau en code
assembleur (asm) et génère un fichier de listage
Source asm
Fichier asm
Assembleur
Assembleur
Fichier
object
« linker »
Assembleur
• Traduit le code asm en code
machine (obj) et génère un
fichier de listage
• Agrège les fichiers objet générés
• Génère l’information d’agrégation
Fichier objet
exécutable
« loader »
• Charge le fichier objet exécutable en mémoire
pour exécution par la machine cible
Machine cible
Traduit et adapté de l’anglais
43
Langages de haut niveau
Langage
Compilé
C, C++, Ada,
Forth, etc.
Interpreté (?)
Perl, Python,
Javascript
À balises
HTML, XML
Java
Finissent tous en
code machine !
Code
assembleur
Code machine
Traduit et adapté de l’anglais
Rom, Ram,
“Firmware” fixe
Exigences pour le code d’un système
embarqué
• Densité
• Rapidité
• Accès direct au matériel
(registres, bits, etc.)
• Robustesse (redondance ?)
Contraintes souvent
contradictoires étant
données les ressources
Traduit et adapté de l’anglais
Téléchargement