La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cours microprocesseurs.

Présentations similaires


Présentation au sujet: "1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cours microprocesseurs."— Transcription de la présentation:

1 1 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cours microprocesseurs IUT GEII 1 ère année

2 2 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Licence P aternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique 2.0 France Vous êtes libres : * de reproduire, distribuer et communiquer cette création au public * de modifier cette création, selon les conditions suivantes : Paternité. Vous devez citer le nom de l'auteur original. Pas d'Utilisation Commerciale. Vous n'avez pas le droit d'utiliser cette création à des fins commerciales. Partage des Conditions Initiales à l'Identique. Si vous modifiez, transformez ou adaptez cette création, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identiqueà celui-ci. * A chaque réutilisation ou distribution, vous devez faire apparaître clairement aux autres les conditions contractuelles de mise à disposition de cette création. * Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des droits. Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...) voir le contrat complet sous : http://fr.creativecommons.org/contrats.htm

3 3 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cours microprocesseurs Les différents types de mémoires Architecture des microprocesseurs Un système minimum Microcontrôleurs Le PIC 18F452 Architecture / Périphériques Les instructions 18F Du C vers le code machine Principes de programmation Périphériques Outils de développement

4 4 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire Une mémoire est un circuit à semi-conducteur permettant d’enregistrer, de conserver et de restituer des informations Elle est utilisée pour stocker les instructions d'un programme ainsi que les données associées (variables, constantes). Une mémoire peut être représentée comme une armoire de rangement constituée de différents tiroirs. Chaque tiroir représente alors une case mémoire qui peut contenir un seul élément : des données. Chaque tiroir possède un numéro appelé adresse. Chaque donnée devient alors accessible grâce à son adresse.

5 5 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire 01111001 01001111 00001011 11001011 01001001 10011001 00001000 01111111 Données Adresses 1111111111111 100 000000000000 0011 000000000000 0010 000000000000 0001 000000000000 0000 1111111111111 111 1111111111111 110 1111111111111 101

6 6 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire 01111001 01001111 00001011 11001011 01001001 10011001 00001000 01111111 Données (ici 8bits) Adresses (16bits) 0xFFFC 0x0003 0x0002 0x0001 0x0000 0xFFFF 0xFFFE 0xFFFD

7 7 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Notation hexadécimale Quatre chiffres binaires = 1 chiffre hexa Pour écrire en hexadécimal un nombre binaire dont le nombre de chiffres n'est pas multiple de 4, on rajoute 1, 2 ou 3 zéros à gauche. Exemple : 10 0000 1001 1010 = 0010 0000 1001 1010 = 0x208A Des nombres codés sur 14 bits ont donc des valeurs comprises entre 0x0000 (tous les bits à 0) et 0x3FFF (tous les bits à 1).

8 8 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Capacité d'une mémoire Le nombre de bits d'adresse fixe le nombre de cases possibles. n bits d'adresses permettent de référencer 2 n cases. Le nombre de bits d'une case est la taille des données. C'est souvent 8 bits (un octet). Capacité d'une mémoire en bits :2 n.(nombre de bits d'une donnée) en octets :capacité en bits / 8 Si la taille des données est 8 bits, la capacité en octets est 2 n

9 9 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Capacité d'une mémoire En informatique : 1 kilo = 2 10 = 1024 1 Mega = 2 10 k = 2 20 = 1024.1024 = 1048576 1 Giga = 2 10 M = 2 20 k = 2 30 1 Tera = 2 10 G = 2 20 M = 2 30 k = 2 40 Comme 1024 est proche de 1000, dans les publicités ont trouve parfois l'approximation 1ko = 1000o, 1Mo = 1 million d'octets, etc... Remarque : en anglais octet = byte (kb,Mb,...)

10 10 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Ordres de grandeur Une page de texte brut (1octet par caractère) 1ko Une page de traitement de texte : 100 ko Une image : webcam : 640x480 pixels codés sur 32bits = 1200ko appareil photo : 4Mpixels en JPEG qualité moyenne = 1Mo Du son : 1 minute de mp3 : 1Mo 1 minute de format brut : 48Khz, 16 bits stéréo = 11Mo On estime que le cerveau humain stockerait l'équivalent de 200Mo...( http://www.merkle.com/humanMemory.html )

11 11 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Ordre de grandeur Programmes d'applications à microcontrôleur : Pas ou peu de graphisme ni de réseau : 1ko à 10-30ko (clé de voiture, télécommande TV, souris (non optique) Graphique, réseau, traitement du signal : 100ko à 1-4Mo (petit routeur, modem, téléphone, appareil photo,...

12 12 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Différents types de mémoire RAM "famille RAM" (random access memory) Mémoire volatile : alimentation nécessaire pour la rétention des données stockées. Accès rapide en lecture et en écriture : ( <100 ns ) ROM "famille ROM" (read only memory) Mémoire non volatile (permanente) : rétention des données après la coupure de l'alimentation Accès : rapide en lecture ( < 100 ns ) impossible ou lent en écriture ( ~ ms )

13 13 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoire RAM RAM dynamique Grande capacité à faible coût (par rapport au statique) Gestion complexe car les données doivent être rafraîchies en permanence (stockage dans un "condensateur" qui se décharge) C'est la mémoire RAM principale des ordinateurs de bureau

14 14 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoire RAM RAM statique Coût plus élevé que les RAM dynamique à capacité égale Accès facile et très rapide Utilisation : pour des petites tailles (jusqu'à quelques Mo) lorsque la gestion et l'accès doivent être simple et rapide. Mémoire cache des ordinateurs de bureau Mémoire cache des contrôleurs de disques durs Mémoire RAM des micro-contrôleurs. Registres internes des circuits électroniques (µP,UART,...)

15 15 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoire famille ROM Masked ROM Programmée en usine à partir d'un masque. Non reprogrammable Utilisée uniquement dans les circuits intégrés et pour les application à très fort volume. OTP (One Time Programmable) Programmée par l'utilisateur une seule fois. Utilisée pour le stockage d'un programme dans des applications à fort volume. Faible coût.

16 16 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Mémoire famille ROM EEPROM (Electricaly Erasable Programmable Memory) Mémoire effaçable électriquement et donc reprogrammable. Lente en écriture (qq ms). Lecture assez rapide Utilisée pour stocker des données qui ne changent pas très souvent : programmes, constantes de calibration, codes d'accès,... (100000 à 1M d'écritures seulement) FLASH (flash rom) Mémoire effaçable électriquement et donc reprogrammable. Grande densité d'intégration à faible coût. Utilisation : mémoire programme micro-contrôleur, stockage de données : clé usb, appareil photo, carte compact flash,... Autre caractéristiques voisines de l'EEPROM

17 17 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Et les MRAM ? La technologie MRAM (Magnetic RAM) permet de réaliser des mémoires qui cumulent certains avantages des Flash, des RAM dynamiques et des RAM statiques : Accès rapide en lecture et écriture (≈25ns) Non volatile Grande densité d'intégration Faible consommation Accès simple comme les RAM statiques Ex : Freescale MR2A16A 256k mots de 16bits (4Mb) Ces circuits devraient bientôt remplacer les DRAM de nos ordinateurs de bureau. Ils pourraient ainsi démarrer très rapidement.

18 18 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Un circuit mémoire (ram statique) CY62256 A0-A14 : entrées adresses I/O0-I/O7 : entrées/sorties données (parfois notées D0-D7) /CE : chip enable (parfois noté /CS chip select) /WE : write enable (parfois R/W) 0 : écriture I/00-I/O7 sont des entrées 1 : lecture I/O0-I/O7 sont des sorties /OE : activation des sorties D0-D7

19 19 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Ecriture CY62256 /CE=0 /OE=1 /WE=0 1) on applique l'adresse 2) /CE=0 /OE=1 /WE=0 3) on applique les données sur les broches I0-I7 qui sont alors des entrèes. données adresses

20 20 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Lecture CY62256 /CE=0 /OE=0 /WE=1 1) on applique l'adresse 2) /CE=0 et /OE=0 (/WE=1) 3) les données sont présentes sur les broches O0-O7 qui sont alors des sorties. données adresses

21 21 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Capacité d'un circuit mémoire On peut la déterminer à partir du nombre n de broches d'adresse : 2 n cases et du nombre de broches de données : taille des cases Exemple : CY 62256 A0-A14 donc 15 bits d'adresses = 2 15 cases I/O0-I/O7 donc 8 bits : un octet par case Capacité 2 15 o = 2 10.2 5 o = 32ko 32k x 8bits = 256k bits (d'où CY62256)

22 22 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Notion de bus Un bus est un ensemble des lignes binaires. Bus d'adresses : ensemble des lignes d'adresses (unidirectionnel) Bus de données : ensemble des lignes de données (généralement bidirectionnel) Bus de contrôle : lignes /WE, horloges, etc... Plusieurs circuits peuvent être câblés en parallèle sur un bus. La logique trois états (0,1, Haute impédance) est utilisée pour éviter les conflits.

23 23 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Décodage d'adresses RAM1RAM2Flash Décodeur d'adresses Bus d'adresses Bus de données /CE Le décodeur d'adresse est un circuit combinatoire qui positionne les signaux /CE en fonction de la valeur présente sur le bus d'adresses

24 24 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Décodage d'adresses Exemple de partage : Avec un bus d'adresses sur 16 bits on dispose de 2 16 adresses = 64K adresses 0x0000 à 0xFFFF C'est l'espace adressable. Que l'on peut partager en : 0x0000 à 0x1FFF RAM1 0x2000 à 0x3FFF inutilisé 0x4000 à 0x7FFF RAM2 0x8000 à 0xFFFF Flash Dans ce cas l'équation pour /CEFlash est simplement A15 Exercice : Ecrire les équations de /CSRAM1 et /CSRAM2

25 25 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Décodage d'adresses Capacité de l'espace d'adresses allouées à une zone : Nombre de cases = Adresse Haute – Adresse Basse + 1 Exemple : Taille Flash = 0xFFFF – 0x8000 +1 = 0x7FFF + 1 = 0x8000 cases 0x8000 = 8. 16 3 + 0. 16 2 + 0. 16 1 + 0. 16 0 8. 16 3 = 8. (2 4 ) 3 = 2 3. 2 12 = 2 15 = 2 5. 2 10 = 32ko Exercice : calculer les tailles des zones RAM1, libre et RAM2

26 26 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Microprocesseur On caractérise le microprocesseur par : – sa fréquence d’horloge : en MHz ou Ghz – sa puissance de calcul : c'est le nombre d’instructions par secondes qu’il est capable d’exécuter : Mips (10 6 instructions/s) Mflops (10 6 ins sur float /s) – la taille de son bus de données : en bits Il existe des microprocesseurs 4, 8, 16, 32 ou 64 bits.

27 27 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Exemples de microprocesseurs IBM BlueGene/L 280 TFlops (groupement de 131072 µP) Pentium 4 32bits 2.5 Gflops à 2.8 Ghz ARM7 32bits 15 Mips à 16.8Mhz (utilisé dans GBA) ARM9 32bits 200 Mips à 180 Mhz Microchip 18F452 8 bits 10 Mips à 40Mhz Microchip dsPIC33F 16 bits 40 Mips à 40 Mhz Cerveau humain : estimations entre 10 7 et 10 13 Mips ( http://www.merkle.com/brainLimits.html ) Grossièrement 1 flops = 2 à 10 Mips (dépend de l'architecture)

28 28 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 L'horloge L'horloge cadence toutes les activités du microprocesseur. Sa période fixe la vitesse d'exécution des instructions. Pour une architecture donnée : Fréquence horloge élevée = Grande puissance de calcul Mais La consommation augmente avec la fréquence de l'horloge. Le prix d'un µP est très lié à la fréquence d'horloge. Dans des applications alimentées par batteries ou à faible coût, il n'est pas toujours souhaitable d'utiliser une fréquence d'horloge élevée. On peut faire varier la fréquence d'horloge en fonction des phases de fonctionnement de l'application.

29 29 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Puissance de calcul Attention la fréquence de l'horloge n'est qu'un facteur parmi d'autres qui intervient sur les performances d'un µP. Il faut également considérer : Le nombre de bits (taille des données manipulées) La présence d'unités de calculs spécialisées (MAC, multiplieur,...) L'architecture générale (pipeline, traitements parallèles,...) Ainsi que les autres composants du système : taille et vitesse de la mémoire.... mémoire cache.... canaux DMA.... Il n'y a pas vraiment d'architecture meilleure que d'autres pour toutes les applications. Certaines architectures sont spécialisées pour certains types de problèmes.

30 30 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 L'unité centrale L'unité centrale est chargé : - d’interpréter et d’exécuter les instructions du programme, - de lire ou de sauvegarder les résultats dans la mémoire CPU : central processing unit

31 31 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Un microprocesseur se compose : d'une unité de commande qui : lit l'instruction en mémoire la décode ( prépare les opérations suivantes) prépare la lecture de l'instruction suivante d'une unité de traitement qui exécute l'instruction (ALU) met à jour les registres internes en fonction du résultat sauve éventuellement les résultats en mémoire Constitution d'un microprocesseur

32 32 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Le compteur programme PC : program counter (compteur ordinal) C'est un registre du µP qui contient l'adresse en mémoire de l'instruction à exécuter. Au départ (au RESET), il prend un valeur fixe. (généralement la première ou la dernière adresse mémoire) A chaque instruction, il est incrémenté pour contenir l'adresse de l'instruction suivante.

33 33 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Unité arithmétique et logique : ALU W Bits fixant l'opération Opérande 1Opérande 2 Registre recevant le résultat de l'opération (accumulateur) L'ALU est la partie du µP effectuant les opérations (+,-,ET,OU,XOR,....) Le type d'opération est déterminé par des bits issus du code l'instruction Les opérandes peuvent être issus du code de l'instruction ou bien lus en mémoire Registre d'état

34 34 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Registre d'état bit N : indique si le résultat est <0 bit OV : dépassement de capacité bit Z : indique si le résultat est 0 bit DC : retenue sur le 4 ème bit bit C : retenue sur le MSB Ces bits sont utilisés par les instructions conditionnelles pour déterminer les prochaines instructions exécutées.

35 35 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cycle machine Il correspond à un multiple d'une période de l'horloge du µP. Les durées des instructions sont des multiples du temps de cycle. Un cycle compose de : Lecture en mémoire du code de l'instruction (adresse PC) Décodage (configuration pour les actions suivantes) Exécution de l'instruction Sauvegarde du résultat en mémoire Le PC pointant maintenant l'instruction suivante, un nouveau cycle recommence.

36 36 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Instructions Une instruction réalise une opération élémentaire. (addition, soustraction, test d'un bit, écriture mémoire,etc...) Elle est codée par un ou plusieurs mots en mémoire. Son format est spécifique au type de microprocesseur.

37 37 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Instructions courantes Un microprocesseur possède généralement des instructions : de lecture et d'écriture dans la mémoire (move) entre mémoire et registre interne (parfois entre deux cases mémoires) de calculs arithmétiques et logiques addition, soustraction, ET, OU, décalage de bit,.... (parfois multiplication, division,...) de branchement et de saut (conditionnel ou non) ces instructions permettent la réalisation d'opération conditionnelle (if/else, boucles) et les appels de fonctions (saut à une adresse et retour) spéciales (liées aux périphériques), mise en veille, etc...

38 38 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Instructions (exemple) Le code binaire de cette instruction est 0x0F15

39 39 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Instructions (exemple)

40 40 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cycles d'un move

41 41 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Branchement conditionnel (exemple) Effectue un branchement à 2n cases mémoires de l'instruction courante (PC+2+2n) si le bit Z du registre d'état vaut 1. Donc si le résultat de l'instruction précédente était 0. => if/else, boucles...

42 42 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Branchement conditionnel (exemple)

43 43 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Architecture de Von Neuman Unité centrale Mémoire Bus d'adresses Bus de données Le même espace mémoire est utilisée pour stocker des données et des instructions

44 44 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Système minimum (Von Neuman) µPRAMFlash Bus d'adresses Bus de données Périphériques d'E/S horloge ( Instructions, constantes ) (variables)

45 45 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Architecture de Harvard µP Mémoire Programme Bus d'adresse programme Bus de données programme Deux espaces mémoires indépendants pour stocker les données (variables) et les instructions (programme). Plus de broches mais accès simultané données/instructions Mémoire données Bus d'adresse données Bus de données données

46 46 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Architecture mixte µP Prog data Prog & data Harvard interne / Von Neuman externe

47 47 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 CISC / RISC CISC : Complex Instruction Set Computer Beaucoup d'instructions Format d'instruction variable Les instructions s'exécutent sur un ou plusieurs cycles Ex : Intel 8051, Pentium, Freescale 68XXX RISC : Reduced Instruction Set Computer Seulement les instructions les plus utilisées Format d'instruction fixe Les instructions s'exécutent toutes en un cycle machine Ex : Microchip PIC, PowerPC, ARM

48 48 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Système embarqué Un système informatique embarqué est un système comprenant un microprocesseur mais qui n'est pas vu comme un ordinateur par l'utilisateur final. Exemples : un lecteur DVD, un autoradio, une machine à laver une télécommande, un appareil photo,... un téléphone ? de moins en moins On parle également de système informatique enfoui.

49 49 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Caractéristiques des systèmes embarqués Ils doivent être très fiables. Certains tournent H24 La vie humaine peut en dépendre Le programme est figé à la conception (firmware). Un changement de programme est une opération peu fréquente et contrôlée par le fabricant (mise à jour).

50 50 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Système embarqué Dans un système embarqué, le programme est stocké dans une mémoire non volatile (Flash, OTP,...). En général le programme s'exécute directement depuis cette mémoire : Le processeur lit les instructions dans cette mémoire puis les exécute. La mémoire RAM (statique le plus souvent) est utilisée pour stocker les variables du programme. Système embarqué Programme : Rom (flash,otp) Variables : Ram

51 51 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Système embarqué (Von Neuman) µPRAMFlash Bus d'adresses Bus de données Périphériques d'E/S horloge ( Instructions, constantes ) (variables) Un programme unique (mise à jour exceptionnelle)

52 52 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Ordinateur généraliste L'utilisateur d'un ordinateur généraliste peut charger et exécuter les programmes qu'il souhaite. Ces programmes peuvent même être inconnus lors de la conception de la machine. La sécurité et la sûreté sont donc plus difficiles à garantir. On utilise un périphérique de stockage de masse pour stocker les différents programmes (disque dur, compact flash). Comme ces périphériques sont généralement lent, on charge le programme en RAM avant de l'exécuter. Ordinateur généraliste : Programme et variables en Ram

53 53 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Ordinateur généraliste RAM µP Stockage de masse permanent programmes et données Stockage temporaire programme et données pendant leur utilisation

54 54 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 L'ordinateur de bureau Un ordinateur de bureau est donc un ordinateur généraliste Cependant il est constitué de nombreux systèmes enfouis : carte mère (avec son BIOS stocké dans une mémoire Flash) carte vidéo disque dur clavier souris.....

55 55 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Microcontrôleur Un microcontrôleur est un circuit unique qui constitue un système minimum. Il permet de réaliser une application complexe avec très peu de composants annexes. Il comprend : un microprocesseur, de la mémoire RAM (pour stocker les variables), de la mémoire Flash ou OTP (pour stocker le programme), et de nombreux périphériques : - Ports d'entrées/sorties logiques - Convertisseurs analogique/numérique - Périphériques de communications (série,I2C,CAN,USB...) - Timers (compteurs utilisés pour la gestion du temps) - Générateur de signaux PWM etc....

56 56 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Microcontrôleur PIC18F452 µP Harvard/Risc 8 bits Instructions codées sur 16 bits 32 ko de Flash (16kinstructions) 1.5ko de RAM jusqu' à 10 Mips à 40Mhz multiplieur 8bx8b câblé

57 Alu Ram Program counter Flash PIC18F452PIC18F452 Décodage des instructions horloge

58 58 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Périphériques du 18F452 5 ports d'entrées sorties logiques (jusqu'à 34 broches E/S) 4 timers (2 8bits, 2 16bits) 2 modules PWM, capture, compare (génération et mesures de signaux) 1 port série synchrone (I2C ou SPI) 1 port série asynchrone (RS232, RS485) 1 convertisseur analogique numérique 10 bits (jusqu'à 8 canaux d'entrées) watch dog, détection tension alimentation basse fréquence horloge modifiable par programme 256o de mémoire EEPROM

59 59 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Schéma minimum de démarrage

60 60 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Schéma minimum de démarrage Si la tension Vdd s'établit assez rapidement,on peut se passer du circuit RC de Reset et relier directement la broche /Reset à Vdd. Pour une application où la précision sur les durées n'est pas critique, on peut utiliser un circuit RC pour générer l'horloge. L'utilisation du programateur/débugger ICD2 fait perdre l'usage de : 2 broches E/S (RB6 et RB7) 2 niveaux de pile (sur 31 possibles) 512 octets de mémoire programme 10 octets de mémoire data.

61 61 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire programme (Flash) 21 bits d'adresses = 2 Mo d'espace adressable Sur 18F452 seulement 32ko implémentés (de 0x0000 à 0x7FFF) Au Reset PC = 0x000000 Les instructions sont codées sur 16 bits (2 cases). Les instructions commencent donc toujours à une adresse paire. 32ko => 16k instructions

62 62 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire de données (Ram data memory) 12 bits d'adresses 0x000 à 0xFFF 8 bits de données soit 4ko possibles Seulement 1536o existent sur le 18F452

63 63 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire de données (Ram data memory) Elle est organisée en 16 banques de 256o: bank0 à bank15. On change de banque lorsque le chiffre héxa de poids fort change : bank0 0x000 – 0x0FF (256o) bank1 0x100 – 0x1FF bank2 0x200 – 0x2FF.... bank15 0xF00 – 0xFFF La zone 0xF80 – 0xFFF est allouée aux SFR : registre dédiés à une fonction (port E/S, configuration périphériques,...) SFR : special fonction register GP : General Purpose (case mémoire à usage général) Seules les banques 0 à 5 existent sur le 18F452 6x256o=1536o=1.5ko

64 64 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 La mémoire de données (Ram data memory) Le BSR Bank Select Register est un SFR qui contient le poids fort de l'adresse RAM utilisée (la banque). Un zone particulière de 256o constituée des 128 premiers octets de la banque 0 et des 128 SFR est appelée ACCESS BANK. Cette zone permet d'accéder à des registres GP et SFR sans devoir changer de banque (pas de modification du BSR) Pour optimiser la durée et la taille des programmes, les compilateurs C essayent de placer les variables le plus souvent utilisées et les résultats de calculs intermédiaires dans la zone ACCESS BANK.

65 65 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Fonctionnement Une instruction est d'abord lue en mémoire puis exécutée. Ce processus prend deux cycles : un cycle pour la lecture en mémoire programme (fetch) un cycle pour l'exécution et la sauvegarde du résultat. L'architecture de harvard permettant l'accès simultané aux deux mémoires, le pic exécute un cycle fetch sur la prochaine instruction pendant le cycle d'exécution de l'instruction en cours. Ainsi la plupart des instructions sont exécutées en un cycle.

66 66 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Relation Cycle / Horloge Un cycle dure 4 périodes de l'horloge dénommée : Q1,Q2,Q3,Q4. Tcy = 4. Tosc Tosc = 1/Fosc Fosc : fréquence de l'horloge Exemple : avec un quartz à 4 Mhz, un cycle dure 1µs Fosc=4Mhz d'où Tosc=0.125µs et Tcy = 4 x 0.125µs = 1µs

67 67 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cycles machines Un cycle "Fetch" : le PC est incrémenté sur Q1 puis l'instruction est lue (Q2,Q3) et placée dans le registre d'intructions (Q4). A la fin d'un cycle fetch le PC est incrémenté de 2 unités (instruction sur 16bits) et pointe l'adresse de la prochaine instruction.

68 68 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cycles machines Un cycle d'exécution : Q1 configuration par le registre d'instruction (décodage) Q2 lecture de l'opérande (data memory read) Q3 calcul Q4 écriture du résultat (destination write)

69 69 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 pipeline Grace à l'architecture de harvard, pendant l'exécution d'une instruction, on lit l'instruction suivante. Ainsi la plupart des instructions s'exécute en un seul cycle. Rupture de séquence : Les instructions de branchement (goto, call) et les instructions de branchement conditionnel provoquent des modifications du PC qui fait que l'instruction suivante qui avait été lue n'est plus valable. Un cycle (fetch) est nécessaire pour aller lire l'instruction à la nouvelle adresse avant de l'exécuter. Une instruction vide (nop) est exécutée à la place de l'instruction lue en avance dans le pipeline. Les instructions qui modifient le PC nécessitent donc 2 cycles.

70 70 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Chaîne de développement Source C Compilateur C Code Objet int x,y ;.... if(x!=0){ y=x++; } Le code objet est le code source traduit en instructions de processeur. Ce code n'est pas exécutable car il manque les adresses des différentes zone mémoires (sections). C'est un code dit relogeable. (Les adresses réellement utilisées seront fixées lors de l'édition de liens)

71 71 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Chaîne de développement Source en langage d'assembla ge Assembleur Code Objet Deb : movlw 5 goto Loop.... addwf X subf Y,w Loop: Le langage d'assemblage est un langage composé d'instructions du processeur écrites en mnémonique. Chaque type de processeurs possède son propre langage d'assemblage.

72 72 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Compilateur C Le compilateur transforme le code source C en code source assembleur avant de produire le code objet. Source C Source Assembleur Code Objet On peut généralement examiner le code source assembleur généré par un compilateur par l'option -S (stop). Ex : gcc -S test.c On estime qu'un compilateur C produit un programme 5 à 10% plus gros et moins rapide qu'un programme écrit en langage d'assemblage par un bon programmeur.

73 73 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Editeur de liens L'éditeur de liens (linker) rassemble les fichiers objets issus des fichiers sources (C, assembleur ou autre) ainsi que des fichiers de librairies (standard ou spécifiques) pour former le fichier exécutable. Il utilise pour cela les valeurs des adresses des différentes sections (code,data,....) qui sont spécifiques à la carte ou au microcontrôleur utilisé. Ces adresses lui sont fournies par un fichier de configuration (linker script)

74 74 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Chaîne de développement Code Objet main.o Code Objet fonc.o Code Objet adc.o Librairie math.lib Librairie std.lib Editeur de liens (linker) Fichier Exécutab le Fichier de configuration du linker linker script

75 75 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Chaîne de développement

76 76 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Configuration linker pour 18f452 LIBPATH. FILES c018i.o //code de démarrage FILES clib.lib //librairie standard FILES p18f452.lib //lib librairie spécifique f452 CODEPAGE NAME=vectors START=0x0 END=0x29 PROTECTED CODEPAGE NAME=page START=0x2A END=0x7FFF CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED ACCESSBANK NAME=accessram START=0x0 END=0x7F DATABANK NAME=gpr0 START=0x80 END=0xFF DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF DATABANK NAME=gpr3 START=0x300 END=0x3FF DATABANK NAME=gpr4 START=0x400 END=0x4FF DATABANK NAME=gpr5 START=0x500 END=0x5FF ACCESSBANK NAME=accesssfr START=0xF80 END=0xFFF PROTECTED SECTION NAME=CONFIG ROM=config STACK SIZE=0x100 RAM=gpr5 section programme section Ram data memory

77 77 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Du C à l'assembleur puis dans le µP Instructions µP movlw 3 movwf 0x000 movf 0x000, w addlw 2 movwf 0x001 Portions de programme C : char x, y ;....; x=3; y=x + 2 ;....; Compilate ur Comme les véritables adresses sont inconnues à ce stade, on prend 0 comme base. par exemple : 0x000 pour x, 0x001 pour y

78 78 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Du C à l'assembleur puis dans le µP x = 3 ; movlw 3 déplace (move) la constante (literal) 3 dans w movwf 0x000 déplace w dans la mémoire (file) d'@ 0x000 y = x + 2 ; movf 0x000, w move file 0x000 (x) dans w (w=x) addlw 2 add literal 2 to w result in w (w=w+2) movwf 0x001 move w to file 0x001 (y) (y=w) NB : si ces deux instructions C se suivent, l'instruction movf 0x000,w est inutile. C'est le rôle de l'optimiseur de s'en apercevoir et de la supprimer pour rendre le programme plus court et plus rapide.

79 79 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Du C à l'assembleur puis dans le µP if( x == y ){ y=122; x++; } 0x000000 movf 0x000,w (w=x) 0x000002 subwf 0x001,w (w=y-w) 0x000004 bnz 0x003 0x000006 movlw 122 0x000008 mowf 0x001 0x00000A incf 0x000,1 0x00000C...... On va soustraire x de y. si le bit n°2 (Z) du registre d'état (0xFD8) ne vaut pas 1 on saute les instructions du if (bnz : branch if not Zero)

80 80 © Copyright 2005, Philippe Arlotto http://arlotto.univ- tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Et dans le µP Address Opcode Disassembly 00E6 0000NOP 00E8 5100MOVF x, W, BANKED 00EA 5D01SUBWF y, W, BANKED 00EC E103BNZ 0xf4 00EE 0E7AMOVLW 0x7a 00F0 6F01MOVWF y, BANKED 00F2 2B00INCF x, F, BANKED 00F4 0000NOP 00F6 0000NOP Contenu de la mémoire programme


Télécharger ppt "1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 24/09/2016 Cours microprocesseurs."

Présentations similaires


Annonces Google