Vous êtes sur la page 1sur 45

Microprocesseur

Microcontrôleur ARM

D’un point de vue matériel, un système info minimal est constitué


•  d’un processeur,
•  d’une mémoire,
•  d’entrées sorties

19/01/21 Pr. Aicha ALAMI HASSANI 1


Microprocesseur
Microcontrôleur ARM

1.  Le processeur (CPU) :

Il a pour mission
•  de rechercher les instructions qui sont en mémoire,
•  de les décoder
•  de les exécuter.
il composée de plusieurs éléments internes :
CPU = UAL + UC + registres CPU

19/01/21 Pr. Aicha ALAMI HASSANI 2


Microprocesseur
Microcontrôleur ARM

1.  Le processeur (CPU) : CPU = UAL + UC + registres CPU


•  unité arithmétique et logique (UAL) : chargée des calculs +,-,*,/, AND, OR, NOT
•  unité de commande chargée de traduire puis d’exécuter les commandes
Son rôle est d’aller chercher une information en mémoire centrale, d’analyser
cette instruction (décodage), d’exécuter cette instruction, de localiser l’instruction
suivante.
• Un décodeur d’instruction
• Un séquenceur et des circuits de commande
Un ensemble de circuits électronique commandés par l’unité de contrôle et
permettant :
•  D’échanger des informations avec la mémoire centrale et avec le monde
extérieur (avec les périphériques)
•  D’effectuer des opérations sur les données (Unité Arithmétique et
Logique : UAL ou ALU en anglais)
•  De mémoriser l’adresse de la prochaine instruction dans un registre
particulier PC (program counter))
•  De mémoriser le résultat d’opérations dans des mémoires spéciales : les
Registres de travail
19/01/21 Pr. Aicha ALAMI HASSANI 3
Microprocesseur
Microcontrôleur ARM

1.  Le processeur (CPU) : CPU = UAL + UC + registres CPU


•  les registres CPU : cellules mémoire interne au processeur (rapide)
•  1 compteur ordinal (PC) pointant à l’adresse mémoire où se trouve la
prochaine instruction à rechercher et exécuter. Après chaque recherche
d’instruction, le compteur ordinal est incrémenté afin de pointer à la prochaine
instruction ( en fait après le chargement de l’octet ou du mot mémoire faisant
partie d’une instruction, de manière à pointer sur un code d’instruction.

•  1 registre d’instruction (I) qui contient le code de l’instruction (code


opératoire) recherchée en mémoire.

•  Les registres de données (X, Y, D0, Dx,..) permettent de stocker les


opérandes nécessaires aux instructions de calcul ainsi que les résultats lors
d’opérations logiques et arithmétiques.

•  Les registres d’adresses (A, A0, Ax,..) permettent de stocker les adresses
d’opérandes qui se trouvent en mémoire.
19/01/21 Pr. Aicha ALAMI HASSANI 4
Microprocesseur
Microcontrôleur ARM

2.  la mémoire :
La mémoire est utilisée pour le stockage
•  d’instruction,
•  de données
•  de la pile (portion mémoire réservée pour sauvegarder le contexte
d’execution d’une procédure )

La mémoire est constituée de cellule de mémorisation binaires, groupées en


mots de 8, 16, 32 ou 64 bits.

La mémoire est adressée par mots de 8 bits, c.a.d par octets (bytes).

Une position mémoire est spécifiée par l’adresse d’un octet.

19/01/21 Pr. Aicha ALAMI HASSANI 5


Microprocesseur
Microcontrôleur ARM

2.  Le bus système :


Il comporte les lignes permettant de relier entre eux le processeur, la
mémoire, et les entrées sorties.

Il comprend
•  les lignes d’adresses provenant du microprocesseur,
•  les lignes de données bidirectionnelles
•  les lignes de contrôle.

Le cœur d’un système informatique est formé par l’interaction entre le


processeur et sa mémoire.

19/01/21 Pr. Aicha ALAMI HASSANI 6


Microprocesseur
Microcontrôleur ARM

3.  Une horloge :


Un circuit oscillateur délivrant des impulsions à une certaine fréquence

Sera nécessaire pour exécuter les opérations séquentiellement.

Plus la fréquence sera grande , plus l’unité centrale travaillera vite

4.  Les entrées –sorties


Elles permettent au processeur d’accéder au monde extérieur par
l’intermédiaire de cycle de lecture et d’écriture sur des interfaces:
•  D’entrées (clavier, souris ….)
•  De sorties (écran , imprimante…)
•  D’entrées /sorties (mémoire de masse, lecteur ….)

19/01/21 Pr. Aicha ALAMI HASSANI 7


Microprocesseur
Microcontrôleur ARM

Exécution de programme :

Le système doit respecter les 4 règles suivantes:


1.  Les instructions et les données sont dans une mémoire unique,
banalisée, accessible en lecture/écriture
2.  Les contenus de la mémoire sont accessibles par leurs adresses
3.  La commande de l’ensemble , l’execution des opérations se fait de
manière séquentielle. L’execution d’une opération doit être terminée
avant le lancement de la suivante.
4.  L’unité de traitement contient un jeu complet des opérations de
l’algèbre e Boole (au minimum)

19/01/21 Pr. Aicha ALAMI HASSANI 8


Microprocesseur
Microcontrôleur ARM

Exemples d’instructions:

19/01/21 Pr. Aicha ALAMI HASSANI 9


Jeux d’instructions RISC / CISC
Microcontrôleur ARM

Les processeurs généraux actuels se répartissent en deux grandes


catégories appelées
•  CISC pour Complex Instruction Set Computer
•  RISC pour Reduced Instruction Set Computer.

Les processeurs de ces deux catégories se distinguent par la conception de


leurs jeux d'instructions.
•  Les processeurs CISC possèdent un jeu étendu d'instructions complexes.
Chacune de ces instructions peut effectuer plusieurs opérations
élémentaires comme charger une valeur en mémoire, faire une opération
arithmétique et ranger le résultat en mémoire.

•  Au contraire, les processeurs RISC possèdent un jeu d'instructions réduit


où chaque instruction effectue une seule opération élémentaire. Le jeu
d'instructions d'un processeur RISC est plus uniforme. Toutes les
instructions sont codées sur la même taille et toutes s'exécutent dans le
même temps (un cycle d'horloge en général).
19/01/21 Pr. Aicha ALAMI HASSANI 10
Jeux d’instructions RISC / CISC
Microcontrôleur ARM

CISC plus compact que RISC

Une instruction complexe équivaut à plusieurs instructions simples

19/01/21 Pr. Aicha ALAMI HASSANI 11


Jeux d’instructions RISC / CISC
Microcontrôleur ARM

CISC plus compact que RISC

•  RISC (Reduced Instruction-Set Computer)


– Taille d’instruction fixe
– Opérations simples : lit 2 registres maxi, écrit 1 registre maxi
– Modes d’adressage mémoire simples
– l’exécution d’une instruction par cycle horloge
– Microarchitecture plus simple
– Exemple: MIPS, Alpha, PowerPC, Sparc

• CISC (Complex Instruction-Set Computer)


– Taille d’instruction variable
– Opérations complexes autorisées
– Plusieurs cycles d’horloge pour s’executer
– Modes d’adressage mémoire complexes autorisés
– Prend moins de place en mémoire
– Exemple: IBM 360, VAX, Intel X86
19/01/21 Pr. Aicha ALAMI HASSANI 12
Les Interruptions
Microcontrôleur ARM

Une interruption consiste à suspendre le flot d’exécution du processeur pour


réaliser un nouveau traitement avant de reprendre là où il avait été
suspendu.

19/01/21 Pr. Aicha ALAMI HASSANI 13


Les Interruptions
Microcontrôleur ARM

La source peut être un autre processeur, un contrôleur d'entrées-sorties ou


tout autre dispositif physique externe

On distingue deux types d’interruptions :

•  les interruptions provenant de périphériques ouvert sur le monde


extérieur (reset, bouton poussoir, clavier, changement d’état d’un
signal extérieur, communication série,… )

•  les interruptions provenant de périphériques internes (timer,passage


par zero d’un compteur interne,..)

19/01/21 Pr. Aicha ALAMI HASSANI 14


Les Interruptions
Microcontrôleur ARM

Le processeur doit donc être capable de différencier les différentes sources


pour réaliser le traitement voulu.

Pour gérer cela, le processeur dispose d’un gestionnaire d’interruption (le


NVIC) dont le rôle est d’associer à chaque interruption sa fonction de
traitement.

NVIC

pour utiliser le mécanisme d’interruption en provenance d’un périphérique, il


va falloir :
•  autoriser le périphérique à lancer une interruption ;
•  configurer le processeur pour gérer l’interruption ;
•  écrire le code associé à l’interruption.
19/01/21 Pr. Aicha ALAMI HASSANI 15
Du Microprocesseur au Microcontrôleur
Microcontrôleur ARM

19/01/21 Pr. Aicha ALAMI HASSANI 16


Du Microprocesseur au Microcontrôleur
Microcontrôleur ARM

19/01/21 Pr. Aicha ALAMI HASSANI 17


Microcontrôleur
Microcontrôleur ARM

19/01/21 Pr. Aicha ALAMI HASSANI 18


Microcontrôleur
Microcontrôleur ARM

19/01/21 Pr. Aicha ALAMI HASSANI 19


Microcontrôleur
Microcontrôleur ARM

Microcontrôleur (µC, uC, MCU)


Circuit intégré rassemblant les éléments essentiels d’un ordinateur
•  unité de calcul et de contrôle (le coeur)
•  mémoire vive
•  périphériques: (ex : port série, timers, DMA, flash. . .)
•  entrées/sorties (ex : convertisseurs analogique/numérique)

Exemples d’utilisation
Electroménager & Internet of Things
•  montres connectées, bracelets santé
•  capteurs domotiques, four, machine à laver, thermostat. . .
•  smartphones, tablettes
Automobile, Aeronautique
•  une voiture moderne intègre 30 MCUs
•  logiciel critique dans l’avionique

Un foyer moyen possède 4 CPUs et 30 MCUs.


19/01/21 Pr. Aicha ALAMI HASSANI 20
Microcontrôleur
Microcontrôleur ARM

Quelques MCUs fameux dans leur habitat naturel

•  Microchip PIC16
(1990, 8 bits, 1MHz, quelques registres)

•  Microchip PIC12
(1990, très utilisé en DIY)

•  Atmel AVR
(2000, 8/16 bits, base des Arduino)

19/01/21 Pr. Aicha ALAMI HASSANI 21


Microcontrôleur
Microcontrôleur ARM

Quelques MCUs fameux dans leur habitat naturel

•  ARM
(2000, Coeurs communs, différents constructeurs
ST, Texas Instruments, Microchip. . .)

•  SoC Freescale, Broadcom, TI etc.


(2010, Raspberry Pi)
1GHz, 64 bits, RAM 512 Mo

19/01/21 Pr. Aicha ALAMI HASSANI 22


Microcontrôleur
Microcontrôleur ARM

L’intérêt
•  forte intégration (une puce intègre toutes les fonctions)
•  faible consommation électrique (1–500mW)
•  faible coût (0.10–10e)
•  généricité (par rapport au silicium dédié)

Les limitations
•  peu de capacité de calcul (1–200 MHz)
•  très faible stockage (1–512 Ko RAM, 1K–1M flash)

19/01/21 Pr. Aicha ALAMI HASSANI 23


Microcontrôleur
Microcontrôleur ARM

Un MCU n’est pas :

•  un CPU (Central Processing Unit)


(ex : Intel i7, Apple A11, . . .)
o  puissance de calcul supérieure (GHz)
o  pas de mémoire embarquée (quelques registres)
o  pas de périphériques embarqués (bus externes)

•  un FPGA (Field-Programmable Gate Array)


(ex : Xilinx, Altera. . .)
o  circuit intégré reconfigurable
o  grand nombre de portes logiques généralistes
o  “programmation” en Verilog/VHDL

19/01/21 Pr. Aicha ALAMI HASSANI 24


Microcontrôleur
Microcontrôleur ARM

Protocoles de communication embarqués


Toute communication entre le cœur et ses périphériques s’établit selon un
protocole (une langue commune)

•  Interne
bus de données : unité de calculçèRAMçèDMA,

•  Externe
communication avec puces externes ; communication inter-MCU
(ex : réseau de capteurs)

•  Architectures
symétrique, en réseaux, client-serveur. . .
en général : couches de nombreux protocoles

•  Exemples
UART, SPI, I2C, CAN, USB. . .
19/01/21 Pr. Aicha ALAMI HASSANI 25
ARM: Introduction
Microcontrôleur ARM

ARM: Advanced RISC Machine

19/01/21 Pr. Aicha ALAMI HASSANI 26


ARM: Caractéristiques principales
Microcontrôleur ARM

19/01/21 Pr. Aicha ALAMI HASSANI 27


Quelques processeurs à coeur(s) ARM
Microcontrôleur ARM

19/01/21 Pr. Aicha ALAMI HASSANI 28


Quelques produits à base à coeur(s) ARM
Microcontrôleur ARM

19/01/21 Pr. Aicha ALAMI HASSANI 29


Quelques produits à base à coeur(s) ARM
Microcontrôleur ARM

19/01/21 Pr. Aicha ALAMI HASSANI 30


La famille ARM
Microcontrôleur ARM

Différentes versions du standard : ARMvX-M

19/01/21 Pr. Aicha ALAMI HASSANI 31


Cortex
Microcontrôleur ARM

Cortex-A pour Application (ex : smartphones)


Cortex-R pour Real-time (temps d’exécution déterministe)
Cortex-M pour eMbedded (faible consommation)
•  M0 ARMv6-M, petit et pas cher
•  M3 ARMv7-M, *,/ hardware, plus d’instructions
•  M4 ARMv7E-M, FPU, DSP
•  Licences Cortex-M4 : Atmel, STMicroelectronics, NXP, TI

19/01/21 Pr. Aicha ALAMI HASSANI 32


Hardware Abstraction Layer
Microcontrôleur ARM

une couche d'abstraction matérielle (HAL pour hardware abstraction layer)


est un logiciel intermédiaire entre le système d'exploitation et le matériel
informatique.

Elle offre des fonctions standardisées de manipulation du matériel


informatique tout en cachant les détails techniques de la mise en œuvre.

De nombreux producteurs de système d'exploitation incluent la HAL dans


leurs produits. Dans les systèmes d'exploitation portables — susceptibles
d'être utilisés sur différents types de matériel : en cas de portage seule la
couche d'abstraction matérielle nécessite adaptation. 33
Hardware Abstraction Layer
Microcontrôleur ARM

Le but du HAL est d'éviter aux développeurs d'implémenter manuellement le


code spécifique à un périphérique. À la place, ils peuvent utiliser une couche
connectable qui fournit des informations à propos du dit périphérique, tel que
cela se passe par exemple lorsqu'un utilisateur branche ou débranche un
périphérique USB.

Cette couche implémente un certain nombre de fonctions spécifiques au


matériel : interfaces d'entrées-sorties, contrôleur d'interruptions, caches
matériels, mécanismes de communication multiprocesseur... Elle isole ainsi
le noyau du système des spécificités des plates-formes matérielles.

Les systèmes d'exploitation disposant du HAL (BSD, Linux et Windows NT)


ont une portabilité simplifiée à travers différents types de matériels tels que
les systèmes embarqués, ou encore les serveurs disposant de différentes
architectures propres à leur fonctionnement : Intel x86, ARM, DEC Alpha,
MIPS, PowerPC, etc.

19/01/21 Pr. Aicha ALAMI HASSANI 34


Hardware Abstraction Layer
Microcontrôleur ARM

La HAL fournit une abstraction qui agit comme une API sur le matériel de
sorte que les développeurs de logiciels n'ont pas besoin de comprendre le
matériel sous-jacent pour écrire un logiciel compatible.

Les développeurs de systèmes embarqués qui utilisent cette couche HAL


dans leur projet bénéficieront donc d’un niveau de confiance élevé dans ce
code enfoui sans avoir à dépenser du temps à déboguer ou à revalider cette
couche logicielle en fonction de tel ou tel pilote de bas niveau utilisé.

La couche HAL a été soumise à des tests de validation unitaires et


fonctionnels, à la fois au niveau des briques logicielles de base et au niveau
système, via des méthodes de validation spécifiquement adaptées aux
architectures des microcontrôleurs STM32 : fonctions testées avec tous les
paramètres possibles, test exhaustif des fonctionnalités des périphériques,
analyse des interactions entre les briques logicielles de base au niveau
système (par exemple pour les timings critiques).
La pile de firmware HAL de ST est livrée au sein de la plate-forme de
développement STM32Cube disponible pour toutes les familles STM32.
Mise en oeuvre d’un STM32 à base
d’ARM Cortex M
Microcontrôleur ARM

La famille des MCU STMicroelectronics STM32

STM32L0 Cortex M0+, 32MHz, 8Ko SRAM, 32-64Ko flash


STM32F1 Cortex M1, 24-72MHz, 4-96Ko SRAM, 16-1024Ko
STM32F3 Cortex M4 + FPU, 72MHz, 16-40Ko SRAM, 64-256Ko
STM32F7 Cortex-M7F, 216MHz, 512-1024Ko RAM, . . .
. ..
Chaque famille contient divers périphériques (E/S, calcul, . . .) :
•  2xADC multiplexé, 2xDAC 12/16 bits
•  USART, SDIO, I2C, SPI, USB, . . .
•  EEPROM, flash, ROM.. .
•  DMA, timers, watchdogs, RTC, RNG.. .

Applications
•  DSP audio (ADC/DAC)
•  contrôle de moteur, prototypage généraliste
(ex : Arduino, cartes Nucleo/Discovery)
19/01/21 Pr. Aicha ALAMI HASSANI 36
Mise en oeuvre d’un STM32 à base
d’ARM Cortex M
Microcontrôleur ARM

L’objectif principal de cette partie est de mettre en service et programmer une


carte STM32 et son core ARM Cortex-M3, qui représente une alternative très
intéressante et abordable au Arduinos classiques et leur architecture 8 bits
vieillissante qui peut être dans certains projets un facteur qui limite les
possibilités en terme de vitesse de calcul.

Les applications à réaliser sont :


•  Allumer des LED , commander des LED par des switch
•  Mesure d'une tension analogique
•  Configuration et utilisation du convertisseur analogique/numérique
•  Utilisation du debugger, visualisation des registres et des mémoires
•  Modulation par largeur d'impulsion (PWM)
Matériel requis
•  Une plateforme blue pill STM32F103C8T6 (Cortex-M3 72Mhz)
•  Un programmeur STLINK/V2
Logiciel requis
•  STM32CubeMx
•  Keil µvision5 (IDE)
Description de la platine
Microcontrôleur ARM

la carte blue pill utilise un µC ARM stm32f103c8t6 avec un CPU Cortex M3


32 bits.

•  Plage de tension d'utilisation de 2V à 3.6V


•  Tension de sortie : 3V3
•  Mémoire flash : 64ko
•  Mémoire SRAM : 20ko
•  Unité de calcul CRC, ID unique 96 bits
•  Deux convertisseurs A/N 1µs 12 bits (jusqu'à 10 voies)
•  Résolution des entrées : 4096
•  Contrôleur DMA 7 voies,
•  3 timers à usage général
•  1 timer de contrôle avancé
•  37 ports E/S rapides (GPIO :port d'entrée-sortie généraliste)
•  Interfaces de débogage fil série (SWD) et JTAG
•  Interfaces : deux SPI, deux I2C, trois USART, une USB, une CAN
•  Gamme de température ambiante de -40°C à 85°C
Description des broches
Microcontrôleur ARM
Description des broches
Microcontrôleur ARM

La carte intègre :
•  deux leds d’état : la première indique l’état de la carte (ON ou OFF) et la
seconde est connectée au GPIO PC13.
•  un switch pour avoir la possibilité de faire un reset matériel,
•  deux jumper qui permettent de basculer le mode de boot du mode
programmation, au mode fonctionnement normal.
•  10 broches qui peuvent être utilisées comme entrées analogiques sont:
A0, A1, A2, A3, A4, A5, A6, A7, B0 et B1 (elles peuvent mesurer une
tension située entre 0 et 3,3 V avec une résolution de 12 bits càd la valeur
mesurée varie donc entre 0 et 4095, ce qui permet en principe de
distinguer entre elles deux tensions séparées d'aussi peu que 1 mV).

Attention: contrairement à plusieurs autres broches de la Blue Pill (qui


tolèrent officiellement des tensions de 5 V), la tension à chacune de ces 10
broches pouvant servir d'entrée analogique ne doit en aucun cas dépasser
3,3 V.
Programmation de la carte
Microcontrôleur ARM

Pour programmer la carte

•  il est nécessaire de télé-verser le code propre à l’application, pour ce faire


on doit d’abord connecter la carte cible (blue pill) à la machine hôte (PC)
et ceci à travers programmateur STLINK/V2 qui est connecté comme suit :
3V3 > 3V3,
GND > GND,
SWDIO > SWDIO (transmet les données),
SWCLK > SWCLK (est l’horloge).
•  il faut déplacer manuellement le jumper BOOT0 à la position 1 pour entrer
en mode de programmation, et le repositionner sur la position 0 pour
revenir au mode de fonctionnement normal.
Programmation de la carte
Microcontrôleur ARM

Les fonctions de base des entrées et des sorties digitales sont regroupées dans le tableau suivant :

Les fonctions d’initialisation et de récupération de la donnée de conversion.


Programmation de la carte
Microcontrôleur ARM

La mise en œuvre d’applications basées sur la carte STM32F103C8T6 ne peut


s’effectuer sans passer par les phases de configuration et de programmation.

•  Le fabriquant a mis à la disposition de l’utilisateur le software STM32CubeMx pour


la configuration.

•  Cependant, pour la programmation des taches à exécuter plusieurs softwares de


compilations sont développées par différents concepteurs qui sont disponible sur le
marché. Dans notre travail, nous avons opté pour le compilateur Keil (MDK) V5.
Programmation de la carte
Microcontrôleur ARM

STM32CubeMx est un outil de configuration graphique qui simplifie et automatise la


configuration et la génération de code C pour l’initialisation du microcontrôleur
STM32, qui est ainsi prêt à l’emploi dans plusieurs environnements de
développement.

La plate-forme de développement comprend


•  Un configurateur graphique,
•  Un générateur de code C pour initialisation qui guide les utilisateurs étape par
étape,
•  Un riche ensemble de composants logiciels embarqués qui évitent d’intégrer des
logiciels provenant de sources multiples.
•  Une couche d’abstraction matérielle (HAL) qui simplifie le portage entre deux
microcontrôleurs STM32.
Programmation de la carte
Microcontrôleur ARM

Keil µvision5 est un environnement de développement simplifié pour le


développement logiciel intégré, il est conçu pour créer, stimuler et déboguer les
applications intégrées sur les cartes à puce et les microcontrôleurs.

Le kit de développement de microcontrôleur Keil (MDK) nous aide à créer des


applications embarquées pour les microcontrôleurs ARM basés sur le processeur
Cortex-M. Le MDK est outil puissant en programmation ou en compilation.

La version 5 se compose du Core MDK, plus Packs de logiciels spécifiques à


l'appareil, qui peut être téléchargé et installé sur la base des exigences de
l’application.

Vous aimerez peut-être aussi