Programmation en Langage D'Assemblage: Cours N°1: Présentation Du CORTEX M3

Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 32

PROGRAMMATION EN

LANGAGE D’ASSEMBLAGE

V.MAHOUT

Cours n°1 : Présentation du CORTEX M3


C’est ça !!!

C ’est pas
gagné !
Programme informatique…
 = Séquence d'ordres numériques, appelées
instructions
 lues en mémoire
 codées sous forme binaire que l’on exprime (affichage)
souvent en héxadécimal
  Ecrire un programme = Ecrire des séquences
binaires dans un espace mémoire accessible par un
processeur
Donc … c’est aussi ça !
Moi qui croyais
que c’était un
clavier pour
lépreux….
Soyons raisonnables….!
 Utilisons
 Le langage d’assemblage associé au processeur
 Quelle
Un estAssembleur
assembleur la valeur hexadécimale
: programme qui traduit le listing en code
binaire
de 10011101000010100011
(Logiciel de traduction) ?
Et jouons : est sa valeur décimale ?


Quelle
1001 1101 0000 1010 0011
mov R1, #0xAA
=0x 9 D 0 A 3
 Langage
Le=registre général d’assemblage
R1 du processeur reçoit la valeur
(((9*16+13)*16+0)*16+10)*10+3
170.
=643235
 En héxa cela aurait donné : E3A010AA
 Soit en binaire : 11100011101000000001000010101010
Les gros défauts
 Langage d’assemblage propre à chaque
processeur….
 Jeu d’instructions réduit et rudimentaire
 Pénible et fastidieux
 Très peu lisible
 Impossible de développer de gros projets

Alors à quoi ça
sert ?
Avantages Est-ce plus
clair
maintenant ?
 En programmation
 Maîtrise « totale » du code exécuté
 Optimisation (temps ou taille de code)
 Pédagogeek
 Lien SFO – Langage haut niveau
 Comprendre un compilateur
 Mieux appréhender : structures algorithmiques de
base, pointeurs, structures de données, variables
locales, passage d’arguments…
Quand utiliser
Exemple cedetype
d’insertion code ende langage?
langage
d’assemblage dans un programme en C
-----------------------------
 Quand on n’a pas
int f(int x) le choix !
 Besoin
{ d’efficacité (utilisation partielle par
insertion
int r0;dans un langage structuré)
 __asm
Besoin de certification
 { d’accéder à des ressources très bas niveau
Besoin
ADD r0, x, 1
 Besoin de EOR
mettrex,au r0,
point x(bogue vicieuse)
 Besoin
} de hacker
 return
Besoin x;
de développer un compilateur
}
Concrètement…
 Appréhender le langage d’assemblage avec une
vision générique
 les mécanismes de base sont toujours similaires
 programmation modulaire systématique

 …appliquée à un processeur : le Cortex-M3


Le STM32F103

M’sieur le Cortex
c’est même pô un
processeur !!
Objectifs supplémentaires
 Se former en pratique (TP) avec
des méthodes et des outils de
développement avancés :
compilateur Keil µvision

 Commencer à comprendre quelques mécanismes


de la problématique Temps Réel et de la
programmation de périphériques
Le monde selon
 Cortex M3 : cœur de µcontrôleur de chez ARM.
 : Advanced Risc Machines
 Société basé à Cambridge
 Pas un fondeur mais un concepteur de circuits
 Fabrique du brevet (61 licences pour le Cortex)
 Spécialité locale : le cœur de processeur 32 bits
 Architecture RISC (reduced instruction-set computer)
 Grosse implantation dans l’embarqué : 95% du marché
de la téléphonie mobile
Vision sur le Cœrtex

Le cœur du cœur : l’objet de toutes nos attentions…


Vision sur le Cœrtex

Gestionnaire d’interruption : à ne pas ignorer…


Vision sur le Cœrtex
L’idée générique du DEBUG
« matériel » Option

Option

Offrir la possibilité de tester,


fiabiliser (voire certifier) le code
sans jamais introduire la moindre
modification .

De multiples systèmes Hardware de fonction DEBUG


Vision sur le Cœrtex

Bus multiples et complexes + interface avec l’extérieur


Importance du NVIC
 Microcontrôleur =
Cortex + µmachines
 Nécessité
 De communication
 Partage de ressources
 Ordonnancement
 Besoin de gérer les
incidents d’éxécution
Importance du NVIC
 Mode de
communication
adpaté :
Exceptions et
Interruptions

 NVIC : gestionnaire
d’interruptions = chef
d’orchestre
Le cœur et le corps…
 Le Cortex M3 est intégré à un circuit « complet » :
un microcontrôleur
 NXP : LP17xx
 FREESCALE : Kinetis

 TI : Gamme Stellaris

 AMTEL : AT91SAM

 …

 Et bien sûr STmicro : STM32


 Concurrence : AMTEL (AVR32), Microchip (PIC32),
NEC (V850xx)
Le STM32
 Microcontrôleur sur des cartes « starter Kit »
Accompagnés par
On l’a aussi
quelques gadgets
en version
• Poussoir
• LEDS
avec
• Ecran presque
Il est là !!
que le
• Potar

processeur…
 Il se suffit à

lui-même !
Et pour vos TP… Proto n°1

La carte précédente

Des drivers de LED

Une barette de LED RVB

Un alimentation volante
Et pour vos TP… Proto n°2

La même chose en plus grand…

Alimentation traversante (balais)

Un capteur compte-tour visible


Et pour vos TP… Proto n°3

Circuit imprimé qui inclut le STM32

Drivers de LED plus évolués

Vitesse variable en face avant


Et pour vos TP… le définitif

PCB « industriel »

Chassis designé spécifiquement


Le STM32 : une belle bête !

Ajout de mémoire…..
Le STM32 : une belle bête !

Mécanique des horloges internes…..


Le STM32 : une belle bête !

Mesure du temps …..


Le STM32 : une belle bête !

Lecture de signaux analogiques…..


Le STM32 : une belle bête !

Envoie de signaux « analogiques » …..


Le STM32 : une belle bête !

Gérer des signaux Tout ou Rien…..


Le STM32 : une belle bête !

Gestion de communications normalisées


Mémoire
Choix du fondeur :
 Le Cortex n’a pas
• Quantité de mémoire…
de mémoire embarqué dans sa puce
 • Implémentation
Le Cortex est une structure Harvard
physique des périphériques
 Le mapping mémoire est figé

Ce qui laisse la place pour plus de


130 000 000 lignes de code en L.A.
La famille STM32 F10X (en décembre 2010!!)
Flash size (bytes)

1 MB STM32F1O1RG STM32F1O3RG STM32F1O1VG STM32F1O3VG STM32F1O1ZG STM32F1O3ZG

768K STM32F1O1RF STM32F1O3RF STM32F1O1VF STM32F1O3VF STM32F1O1ZF STM32F1O3ZF

612K STM32F1O1RE STM32F1O3RE STM32F1O1VE STM32F1O3VE STM32F1O1ZE STM32F1O3ZE

384K STM32F1O1RD STM32F1O3RD STM32F1O1VD STM32F1O3VD STM32F1O1ZD STM32F1O3ZD

STM32F1O6RC STM32F1O7RC STM32F1O6VC STM32F1O7VC


256K
STM32F1O1RC STM32F1O3RC STM32F1O1VC STM32F1O3RC
STM32F1O3VC STM32F1O1ZC STM32F1O3ZC

STM32F151RB STM32F152RB STM32F151VB STM32F152VB


STM32F151CB STM32F152CB STM32F1O6RB STM32F1O7RB STM32F1O6VB STM32F1O7VB
128K
STM32F1O3TB STM32F1O1CB STM32F1O3CB STM32F1O1RB STM32F1O3RB STM32F1O1VB STM32F1O3VB

STM32F1O1TB STM32F1O0CB STM32F1O2CB STM32F1O0RB STM32F1O2RB STM32F1O0VB

STM32F151R8 STM32F152R8 STM32F151V8 STM32F152V8


STM32F151C8 STM32F152C8 STM32F1O6R8 STM32F1O6V8
64K
STM32F1O3T8 STM32F1O1C8 STM32F1O3C8 STM32F1O1R8 STM32F1O3R8 STM32F1O1V8 STM32F1O3V8
STM32F1O1T8 STM32F1O0C8 STM32F1O2C8 STM32F1O0R8 STM32F1O2R8 STM32F1O0V8

STM32F1O3T6 STM32F1O1C6 STM32F1O3C6 STM32F1O1R6 STM32F1O3R6


32K
STM32F1O1T6 STM32F1O0C6 STM32F1O2C6 STM32F1O0R6 STM32F1O2R6

STM32F1O3T4 STM32F1O1C4 STM32F1O3C4 STM32F1O1R4 STM32F1O3R4


16K Pin count
STM32F1O1T4 STM32F1O0C4 STM32F1O2C4 STM32F1O0R4 STM32F1O2R4

36 pins 48 pins 64 pins 100 pins 144 pins


QFN LDFQ/QFN LDFQ/BGA/CSP LDFQ/BGA LDFQ/BGA
STM32F-1 series legend STM32L-1 series legend
Connectivity line USB Access line Value line Performance line Access line STM32L152 STM32L151

Vous aimerez peut-être aussi