You are on page 1of 45

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 Argument

• 147+332=479 => 017018117218619519


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

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 :
Adresse en
1 : Lire entrée et mettre en mémoire mémoire
2 : Lire code d`instruction en mémoire

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)
CISC RISC
– Ex.: Presque tous les processeurs pour (Intel (MIPS
ordinateurs de bureau (Pentium, Athlon, 486) R4000)
etc.) #instructions 235 94

• RISC (reduced instruction set) Addr. modes 11 1


Inst. Size 1-12 4
– Nombre réduit d’instructions (bytes)
– Opérations simples uniquement GP registers 8 32
– 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
Architectures d’accès à la mémoire
Machine de Von Neuman
A A=Adresse
Entrées/ Unité
Programme sorties Arithmétique et D=données
et données D logique

Architecture de Harvard
A A
Entrées/ Unité
Programme D sorties Arithmétique et D
Données
logique (x2)

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

Traduit et adapté de l’anglais


Micro-ordinateur Port d'entrée CLAVIER

Mémoire morte
ROM, EPROM,
EEPROM Port de sortie ÉCRAN

CPU
(Unité centrale Port de sortie IMPRIMANTE
Mémoire vive de traitement)
RAM

Port d'E/S DISQUE

Port d'E/S MODEM

Mémoire interne Micro-processeur Ports d'E/S Périphérique externes

UC Ligne téléphonique
(Unité centrale)

M
O
Écran Imprimante D
E
M

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 iPod classic Nokia 6070


(ARM7 16.78MHz) (ARM7 80MHz) (ARM7 51MHz)

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

Traduit et adapté de l’anglais


Microcontrôleur
• Micro-ordinateur à
P ort P ériphérique
ressources réduites
• « CPU » pour M ém oire CPU P ort P ériphérique
systèmes embarqués
• Composantes
P ort P ériphérique
fondamentales d’un
micro-ordinateur
intégrées sur une puce
P ort P ériphérique
M ém oire

P ort P ériphérique

CP U

P ort P ériphérique
(Microprocesseur)

Microcontrôleur

Traduit et adapté de l’anglais


Microcontrôleur en mode expansible

• Forme intermédiaire entre un microprocesseur et un


microcontrôleur

Port Périphérique
Mémoire

Port Périphérique
Mémoire

Port Périphérique
CPU

Port Périphérique

Traduit et adapté de l’anglais


Composants et interconnections
B us d'adresses

B us de données
M ém oire
A lim entation B us de contrôle

CPU
Horloge
M ém oire

Interrupt P ort
P ériphérique

• Trois bus
fondamentaux
Interrupt
P ort
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 Digital Signal Processors (DSPs)

16-bit ultra- 32-bit 32-bit ARM ARM Ultra


Cortex™-M3 DSP Multi-core
low power real-time Cortex-A8 Low power
MCUs MCUs DSP+ARM DSP
MCUs MPUs DSP

C2000™ Sitara™ C6000™


Delfino™ Stellaris® DaVinci™ C6000™ C5000™
MSP430™ ARM Cortex™-M3
®
ARM® Cortex™-A8
& ARM9
Piccolo™ video processors
OMAP™ 24.000
Up to 40MHz to Up to 300MHz to MMACS Up to 300 MHz
25 MHz 300 MHz >1GHz 300MHz to >1Ghz
100 MHz +Accelerator +Accelerator
Flash Flash, RAM Flash Cache, Cache
Cache RAM, ROM Up to 320KB RAM
1 KB to 256 KB 16 KB to 512 KB 8 KB to 256 KB RAM, ROM RAM, ROM Up to 128KB ROM
Analog I/O, ADC PWM, ADC, USB, ENET USB, CAN, USB, ENET, SRIO, EMAC USB, ADC
LCD, USB, RF CAN, SPI, I2C MAC+PHY CAN, PCIe, EMAC PCIe, SATA, SPI DMA, PCIe
ADC, PWM, SPI McBSP, SPI, I2C
Measurement, Motor Control, Connectivity, Security, Industrial computing, Telecom test & meas, Audio, Voice
Digital Power, POS & portable Floating/Fixed Point
Sensing, General Motion Control, HMI, Video, Audio, Voice, media gateways,
Purpose Lighting, Ren. Enrgy Industrial Automation data terminals base stations Medical, Biometrics
Security, Conferencing
$0.25 to $9.00 $1.50 to $20.00 $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 5xx Gen Summary …


3
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 MSP-EXP430F5438 …


22
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
0000h
ACC

FLAGS

R0

R1

R2

R3
FFFFh

Registers 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. Cycle de développement de
programme en assembleur absolu

Traduit et adapté de l’anglais


Processus global EDITOR

de génération de source file (*.s)

code Other object files


ASSEMBLER list file (*.lst)

from assembler relocatable object file (*.o)


or HLL compilers
LINKER linker map file (*.map)
• Des fichiers intermédiaires
sont générés relocatable linked object file

• Des fichiers d’information LOCATOR locator map file (*.map)

sont aussi générés


absolute executable file (*.axf)
• Un fichier de configuration
HEX Target
Conversion
est aussi requis pour
l’éditeur de liens HEX-ASCII object file (*.hex)

DEVICE
blank device PROGRAMMER

Traduit et adapté de l’anglais


programmed device
Processus global
EDITOR
de génération de source file (*.s)
code ASSEMBLER list file (*.lst)
Other object files
from assembler relocatable object file (*.o)
or HLL compilers
LINKER/
map file (*.map)
LOCATOR

absolute executable file (*.axf)

Target ADuC7026
Device HEX JTAG
ULink JTAGPOD
Pod
computer Simulator
Simulator conversion

Device Target
ADuC7026
Programmer Hardware
hardware

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

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

Traduit et adapté de l’anglais


Test du design à l’aide d’une carte d’evaluation

Traduit et adapté de l’anglais


Allure dans une fenêtre de desassemblage
0x00080000 E59FF018 DD 0xE59FF018
0x00080004 E59F0018 LDR R0,[PC,#0x0018]
0x00080008 E5901000 LDR R1,[R0]
0x0008000C E1A01401 MOV R1,R1,LSL #8
0x00080010 E1E01001 MVN R1,R1
0x00080014 E5801000 STR R1,[R0]
aLoop 0x00080018 E1A00000 NOP
0x0008001C EAFFFFF8 B 0x00080004
0x00080020 00080004 DD 0x00080004
0x00080024 80001000 ANDHI R1,R0,R0
0x00080028 00000000 ANDEQ R0,R0,R0
aPort 0x0008002C 00000000 ANDEQ ? R0,R0,R0
0x00080030 00000000 ANDEQ R0,R0,R0
0x00080034 00000000 ANDEQ R0,R0,R0

Adresses Code machine Code Assembleur equivalent

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

Traduit et adapté de l’anglais


Le cycle de programmation

Traduit et adapté de l’anglais


41
L’usage de langages de haut niveau
• Réduit la « distance
cognitive » entre l’être
Compilateur
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
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

• Traduit le code de haut niveau en code


Compilateur Compilateur assembleur (asm) et génère un fichier de listage
Source asm
Fichier asm
• Traduit le code asm en code
Assembleur Assembleur Assembleur machine (obj) et génère un
fichier de listage
Fichier
object
• Agrège les fichiers objet générés
« linker » • Génère l’information d’agrégation

Fichier objet
exécutable
• Charge le fichier objet exécutable en mémoire
« loader » pour exécution par la machine cible

Machine cible
Traduit et adapté de l’anglais
43
Langages de haut niveau
Langage

Compilé Interpreté (?)


À balises
C, C++, Ada, Perl, Python,
HTML, XML
Forth, etc. Javascript

Java
Finissent tous en
code machine ! Code
assembleur
Rom, Ram,
Code machine “Firmware” fixe

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

Traduit et adapté de l’anglais

You might also like