1. Traduit et adapté de l’anglais
MIC7340
Introduction aux
microcontrôleurs
Mounir Boukadoum
2. 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
3. Traduit et adapté de l’anglais
Étapes
d’exécution
(programme)
Entrée des
données
Mémorisation
Accumulateur
de résultats
Sortie des
données
On peut reproduire les fonctions précédentes avec
des registres et compteurs logiques
• 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 !
4. Traduit et adapté de l’anglais
• 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
Encodage des Instructions et données
5. Traduit et adapté de l’anglais
Encodage des Instructions et données
• Un programme exécution consistera en une
séquence de nombres binaires :
Code d’opération Argument
É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 à
.
.
.
• 147+332=479 => 017018117218619519
6. Traduit et adapté de l’anglais
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
7. Traduit et adapté de l’anglais
Ordinateur à programme emmagasiné
• Peut itérer les instructions
• Peut séparer les codes d’instructions des données
1
2
1
2
Commutateur :
1 : Lire entrée et mettre en mémoire
2 : Lire code d`instruction en mémoire
Adresse en
mémoire
Données
• Sans entrées, sorties
ou mémoire, c’est
un microprocesseur
(CPU)
8. Traduit et adapté de l’anglais
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
CISC
(Intel 486)
RISC
(MIPS
R4000)
#instructions 235 94
Addr. modes 11 1
Inst. Size
(bytes)
1-12 4
GP registers 8 32
9. Traduit et adapté de l’anglais
Architectures d’accès à la mémoire
Entrées/
sorties
Unité
Arithmétique et
logique
Programme
et données
A
D
A=Adresse
D=données
Machine de Von Neuman
Architecture de Harvard
Entrées/
sorties
Unité
Arithmétique et
logique
Programme
A
D
Données
(x2)
A
D
10. Traduit et adapté de l’anglais
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 micro-
ordinateur
11. Traduit et adapté de l’anglais
CLAVIER
Port d'entrée
Port de sortie ÉCRAN
Port de sortie IMPRIMANTE
Port d'E/S DISQUE
Port d'E/S MODEM
Mémoire morte
ROM, EPROM,
EEPROM
Mémoire vive
RAM
CPU
(Unité centrale
de traitement)
UC
(Unité centrale)
Mémoire interne Micro-processeur Ports d'E/S Périphérique externes
Modem
externe
Clavier
Écran Imprimante
M
O
D
E
M
Ligne téléphonique
UC +
Disques
Micro-ordinateur
12. Traduit et adapté de l’anglais
Quelques ordinateurs
Nokia 6070
(ARM7 51MHz)
iPod classic
(ARM7 80MHz)
Game Boy Advanced
(ARM7 16.78MHz)
VAIO Z46TD
(Intel Core 2 Duo P9700 2.8GHz)
Desktop
(Intel Pentium D
3GHz, Nvidia 7900)
13. Traduit et adapté de l’anglais
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
14. Traduit et adapté de l’anglais
Périphérique
Port
Port Périphérique
Port Périphérique
Mémoire CPU
CPU
Mémoire
Périphérique
Port
Port Périphérique
Port Périphérique
Microcontrôleur
Microcontrôleur
(Microprocesseur)
• Micro-ordinateur à
ressources réduites
• « CPU » pour
systèmes embarqués
• Composantes
fondamentales d’un
micro-ordinateur
intégrées sur une puce
15. Traduit et adapté de l’anglais
CPU
Mémoire
Périphérique
Port
Port Périphérique
Port Périphérique
Mémoire
Port Périphérique
Microcontrôleur en mode expansible
• Forme intermédiaire entre un microprocesseur et un
microcontrôleur
16. Traduit et adapté de l’anglais
CPU
Mémoire
Alimentation
Port
Horloge
Mémoire
Port
Interrupt
Interrupt
Bus d'adresses
Bus de données
Bus de contrôle
Périphérique
Périphérique
Composants et interconnections
• Trois bus
fondamentaux
17. Traduit et adapté de l’anglais
Microcontrôleur en mode autonome
• Les bus sont
internes
18. Traduit et adapté de l’anglais
Microcontrôleur en mode d’adressage étendu
• Certains/tous les
bus sont
accessibles de
l’extérieur
19. Traduit et adapté de l’anglais
3
5xx Gen Summary …
32-bit ARM
Cortex™-M3
MCUs
16-bit ultra-
low power
MCUs
DSP
DSP+ARM
ARM
Cortex-A8
MPUs
Stellaris®
ARM® Cortex™-M3
MSP430™
Sitara™
ARM® Cortex™-A8
& ARM9
C6000™
DaVinci™
video processors
TI Embedded Processors
Digital Signal Processors (DSPs)
Microcontrollers (MCUs) ARM®-Based Processors
OMAP™
Software & Dev. Tools
Up to
100 MHz
Flash
8 KB to 256 KB
USB, ENET
MAC+PHY CAN,
ADC, PWM, SPI
Connectivity, Security,
Motion Control, HMI,
Industrial Automation
$1.00 to $8.00
300MHz to
>1GHz
Cache,
RAM, ROM
USB, CAN,
PCIe, EMAC
Industrial computing,
POS & portable
data terminals
$5.00 to $20.00
Up to
25 MHz
Flash
1 KB to 256 KB
Analog I/O, ADC
LCD, USB, RF
Measurement,
Sensing, General
Purpose
$0.25 to $9.00
300MHz to >1Ghz
+Accelerator
Cache
RAM, ROM
USB, ENET,
PCIe, SATA, SPI
Floating/Fixed Point
Video, Audio, Voice,
Security, Conferencing
$5.00 to $200.00
32-bit
real-time
MCUs
C2000™
Delfino™
Piccolo™
40MHz to
300 MHz
Flash, RAM
16 KB to 512 KB
PWM, ADC,
CAN, SPI, I2C
Motor Control,
Digital Power,
Lighting, Ren. Enrgy
$1.50 to $20.00
Ultra
Low power
DSP
C5000™
Up to 300 MHz
+Accelerator
Up to 320KB RAM
Up to 128KB ROM
USB, ADC
McBSP, SPI, I2C
Audio, Voice
Medical, Biometrics
$3.00 to $10.00
Multi-core
DSP
C6000™
24.000
MMACS
Cache
RAM, ROM
SRIO, EMAC
DMA, PCIe
Telecom test & meas,
media gateways,
base stations
$40 to $200.00
20. Traduit et adapté de l’anglais
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
21. 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
22. Traduit et adapté de l’anglais
MSP430F5438A Block Diagram
22
MSP-EXP430F5438 …
23. Traduit et adapté de l’anglais
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 $
23
24. Traduit et adapté de l’anglais
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)
24
25. Traduit et adapté de l’anglais
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
26. 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
28. 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.
29. Traduit et adapté de l’anglais
Addition et Soustraction de nombres entiers à 8-Bit unipolaires
30. Traduit et adapté de l’anglais
Addition et Soustraction de nombres entiers à 8-Bit bipolaires
32. Traduit et adapté de l’anglais
Perspective du programmeur pour un
CPU simple
ACC
FLAGS
R0
R1
R2
Registers
R3
Memory
0000h
FFFFh
• Typique d’une architecture de Von Neumann
33. Traduit et adapté de l’anglais
Cycle de développement de
programme en assembleur absolu
É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.
34. Traduit et adapté de l’anglais
Processus global
de génération de
code
• 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
EDITOR
ASSEMBLER
LINKER
LOCATOR
HEX Conversion
source file (*.s)
relocatable object file (*.o)
relocatable linked object file
absolute executable file (*.axf)
HEX-ASCII object file (*.hex)
DEVICE
PROGRAMMER
list file (*.lst)
linker map file (*.map)
locator map file (*.map)
programmed device
blank device
Other object files
from assembler
or HLL compilers
Target
35. Traduit et adapté de l’anglais
Processus global
de génération de
code
EDITOR
ASSEMBLER
LINKER/
LOCATOR
ADuC7026
Simulator
source file (*.s)
relocatable object file (*.o)
absolute executable file (*.axf)
ULink JTAG Pod
list file (*.lst)
map file (*.map)
Other object files
from assembler
or HLL compilers
ADuC7026
Hardware
HEX
conversion
Device
Programmer
JTAG POD
Device
Simulator
Target
hardware
Target
computer
36. Traduit et adapté de l’anglais
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 Reset_Handler ;make available to linker
IOPORT_ADDRESS EQU 0x80001000
AREA Reset, CODE, READONLY
ARM
Reset_Handler
LDR PC, aLoop ;load PC with program start address
Loop
LDR R0, aPort ;load address of port
LDR R1, [R0] ;read switch state
LSL R1, #8 ;shift left 8 bits to align
MVN R1, R1 ;complement
STR R1, [R0] ;write LEDs
NOP ;do nothing
B Loop ;repeat forever
aLoop DCD Loop ;
aPort DCD IOPORT_ADDRESS
END
37. Traduit et adapté de l’anglais
Listage du code généré (1)
5 …
6 00000000 EXPORT Reset_Handler ;make available t
o linker
7 00000000
8 00000000 80001000
IOPORT_ADDRESS
EQU 0x80001000
9 00000000
10 00000000 AREA Reset, CODE, READONLY
11 00000000 ARM
12 00000000
13 00000000 Reset_Handler
14 00000000 E59FF018 LDR PC, aLoop
15 00000004 Loop
16 00000004 E59F0018 LDR R0, aPort ;load address of po
rt
17 00000008 E5901000 LDR R1, [R0] ;read switch state
18 0000000C E1A01401 LSL R1, #8 ;shift left 8 bits
to align
19 00000010 E1E01001 MVN R1, R1 ;complement
20 00000014 E5801000 STR R1, [R0] ;write LEDs
21 00000018 E1A00000 NOP ;do nothing
22 0000001C EAFFFFF8 B Loop ;repeat forever
23 00000020
24 00000020 00000000
aLoop DCD Loop
25 00000024 80001000
aPort DCD IOPORT_ADDRESS
26 00000028
27 00000028 END
38. Traduit et adapté de l’anglais
Test du design à l’aide d’une carte d’evaluation
40. Traduit et adapté de l’anglais
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
41. Traduit et adapté de l’anglais
41
Le cycle de programmation
High-Level Language
Assembly Language
Operating System
Instruction Set
Architecture
Microarchitecture
Digital Logic Level 0
Level 1
Level 2
Level 3
Level 4
Level 5
42. Traduit et adapté de l’anglais
L’usage de langages de haut niveau
42
High-Level Language
Assembly Language
Operating System
Instruction Set
Architecture
Microarchitecture
Digital Logic Level 0
Level 1
Level 2
Level 3
Level 4
Level 5
• Réduit la « distance
cognitive » entre l’être
humain et la machine
• Augmente la productivité en
utilisant des instructions
« fonctionnelles »
• Demande un compilateur ou
un interpréteur pour traduire
les instructions en langage
assembleur
Compilateur
43. Traduit et adapté de l’anglais
43
Cycle de génération de programmes en
langage de haut niveau
Assembleur
« linker »
« loader »
Source de haut niveau
Fichier
object
Fichier objet
exécutable
• Charge le fichier objet exécutable en mémoire
pour exécution par la machine cible
• Agrège les fichiers objet générés
• Génère l’information d’agrégation
Machine cible
Assembleur
Source de haut niveau
Compilateur Compilateur
Fichier asm
Source asm
Assembleur
• Traduit le code asm en code
machine (obj) et génère un
fichier de listage
• Traduit le code de haut niveau en code
assembleur (asm) et génère un fichier de listage
44. Traduit et adapté de l’anglais
Langages de haut niveau
Code
assembleur
Code machine
Langage
Rom, Ram,
“Firmware” fixe
Compilé
C, C++, Ada,
Forth, etc.
Interpreté (?)
Perl, Python,
Javascript
À balises
HTML, XML
Java
Finissent tous en
code machine !
45. Traduit et adapté de l’anglais
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