Microcontrôleurs PIC Systèmes embarqués Cours 5 General Instrument Fin des années 70 Processeur 16 bits (CP1600) Capacités d’entrées-sorties limitées par rapport à ses concurrents (Intel 8086 et Motolora 68000) Conception d’un contrôleur d’entrées-sorties à associer au CP1600 : Peripheral Interface Controller (PIC) Le CP1600 a disparu mais pas le PIC, pris en charge par MicroChip qui a repris la division microélectronique de General Instrument dans les années 80. Les microcontrôleurs PIC sont encore parmi les plus populaires aujourd’hui Réputation : extrême robustesse Systèmes embarqués Sylvain Tisserant - ESIL Systèmes embarqués - S. Tisserant - ESIL - 2009 Microcontrôleurs PIC (2) Microcontrôleurs PIC (3) Principalement manipulation d’octets (données sur 8 bits) Architecture RISC Les PICs se déclinent en 3 familles en fonction de la longueur Nouvelle famille de PIC avec des données de 16 bits dont des instructions machines Baseline : 12 bits Mid-Range : 14 bits High-End : 16 bits Jeux d’instructions presque identiques pour les deux premières familles (33 et 35 instructions respectivement) Les µC Mid-Range disposent de 2 bits supplémentaires pour l’adressage de la mémoire Le jeu d’instructions de la 3ème famille est un peu plus étendu avec 59 instructions certains composants sont plus orientés vers le traitement de signaux numériques (DSC : Digital Signal Controller) Autour de ces différents cœurs chaque circuit se distingue par le type des entrées-sorties (SPI, I2C, UART, CAN, LIN, USB, IrDA) et le type de mémoire non volatile. Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Microcontrôleurs PIC (3) ARM La nomenclature reflète ces déclinaisons : PIC xx X yyyy Acorn Computers yyyy : identification du type (taille mémoire, ADC, vitesse max, E/S, etc.) X : lettre (F : Flash, C : EPROM, CR : ROM) xx : famille (10, 12, 16 & 18 : 8 bits, 24 : 16 bits) dsPIC : DSC 30 & 33 Nombreux formats physiques (boîtiers, broches, etc.) Philosophie : conserver au maximum la compatibilité (instructions, brochages, etc.) avec les produits antérieurs 1985 : premier prototype ARM1 (Acorn RISC Machine) 1986 : commercialisation de l’ARM2 Architecture extrêmement simple Données 32 bits, adressage 26 bits, 16 registres Très performant pour une très faible consommation Très vite l’ARM2 est le microprocesseur 32 bits le plus vendu ARM : Advanced RISC Machines Fruit d’une collaboration Acorn, Apple et VLSI (1990) 1991 : ARM6 PDA Newton d’Apple RiscPC d’Acorn Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 ARM ARM Vente des cœurs sous forme de plans ou dessins : Une série de processeurs Propriété Intellectuelle (IP) : bloc fonctionnel conçu pour être intégré dans un système sur puce (SoC) Plusieurs niveaux de licences : masques, synthétisable (Verilog), etc. Beaucoup de microcontrôleurs sont basés sur des cœurs ARM Licences achetées par un grand nombre de fabricants de microprocesseurs et/ou microcontrôleurs Aujourd’hui : 75 % des processeurs embarqués Excellent rapport performance/consommation (MIPS/mW) Assistants, téléphones mobiles, consoles de jeux, lecteurs multimedia, routeurs, périphériques (disques durs, contrôleurs, etc.) Systèmes embarqués - S. Tisserant - ESIL - 2009 ARM7, ARM9, ARM10, ARM11 & Cortex Faible surface silicium ⇒ faible coût Faible consommation Système d’interruptions efficace Grande variété des modes d’adressage Cœurs très similaires, mais pas compatibilité totale ARM7 : 32 bits – Von Neuman – 3 étages de pipeline – 100 MHz ARM9 : ARM10 : 32 bits – Harvard – 5 étages de pipeline – 200 MHz 64 bits – Harvard – 5 étages de pipeline – 300 MHz Systèmes embarqués - S. Tisserant - ESIL - 2009 ARM7 ARM7 et mémoire Bus du processeur synchrone CLK & CLKEN Von Neumann Bus pour données et instructions Seules les instructions load, store et swap permettent l’accès à la mémoire Deux cycles d’horloge par transfert, mais un transfert peut être effectué à chaque cycle Adressage sur 32 bits (4 Go) ADDR[31:0] Bus de lecture et d’écriture distincts WDATA[31:0], RDATA[31:0] & WRITE Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 ARM7 et mémoire (2) ARM7 et mémoire (3) Transferts par mots (32 bits), demi-mots (16 bits) et octets SIZE[1:0] Le cycle lecture-écriture de l’instruction swap ne peut être Adresse de mots multiple de 4 et de demi-mots paire ADDR[1:0] ou ADDR[0] sont ignorés interrompu LOCK Accès aux périphériques en écrivant en mémoire Représentation big-endian ou little-endian CFGBIGEND Quatre type de cycles Interne : bloque le chargement du code Coprocesseur : aucun transfert mémoire Non séquentiel Séquentiel TRANS[1:0] Systèmes embarqués - S. Tisserant - ESIL - 2009 big endian little endian Octet 0 Octet 1 Octet 2 Octet 3 i i+1 i+2 i+3 Octet 3 Octet 2 Octet 1 Octet 0 i i+1 i+2 i+3 Systèmes embarqués - S. Tisserant - ESIL - 2009 adresse adresse ARM et coprocesseurs Modes de fonctionnement Interface disponible au niveau du processeur Sept modes de fonctionnement Signaux pour interfaçage matériel & instructions particulières Communication via le bus de données Jusqu’à 16 coprocesseurs Gestion de la mémoire Calcul en virgule flottante (VFP), etc. Si coprocesseur absent Instruction non définie permet exécution mais plus lente User : mode d’exécution normal mode de traitement d’une interruption rapide IRQ : mode de traitement d’une interruption normale Supervisor : mode privilégié (sur Reset ou SWI) en général pour système d’exploitation Abort : Impossibilité d’exécuter un transfert mémoire (ABORT) FIQ : Undefined : mode activé par un code d’instruction non défini System : Systèmes embarqués - S. Tisserant - ESIL - 2009 ARM7 et registres permet émulation d’un coprocesseur mode privilégié avec accès aux mêmes registres que le mode User Systèmes embarqués - S. Tisserant - ESIL - 2009 ARM7 et banques de registres Au total 37 registres de 32 bits Pas tous visibles simultanément Selon le mode de fonctionnement 13 registres généraux : R0 à R12 2 registres mixtes par mode R13 : pointeur de pile privée pour chaque mode R14 : adresse de retour Compteur ordinal : R15 Accessible au programmeur Registre d’état (CPSR : Current Program Status Register) Indicateurs d’états, mode de fonctionnement, masques d’interruption, etc. Un registre par mode de fonctionnement Une sauvegarde par mode privilégié (SPSR : Saved PSR) Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Le registre d’état (CPSR et SPSR) Les instructions Toutes les instructions travaillent sur des registres, sauf les instructions load, store et swap. Indicateurs conditionnels N : négatif Z : zéro C : retenue V : débordement Q : débordement dans une série d’opérations (sur certains modèles) Validation des interruptions I : masque IRQ F : masque FIQ Mode Thumb T = 0 : mode ARM (32 bits) T = 1 : mode Thumb (16 bits) Indicateurs de mode 5 bits de bas poids 10000 : user 10001 : FIQ 10010 : IRQ 10011 : supervisor 10111 : abort 11011 : undefined 11111 : system Gain en performances grâce à une architecture simplifiée Codage des instructions sur un seul mot Flux régulier dans le pipeline Pipeline à 3 étages pour ARM7 Chargement, codage et exécution Un cycle d’horloge par instruction Pas d’anticipation des branchements Systèmes embarqués - S. Tisserant - ESIL - 2009 Deux jeux d’instructions Systèmes embarqués - S. Tisserant - ESIL - 2009 Codage des instructions ARM ARM : 58 instructions de 32 bits avec accès aux 15 registres 3 opérandes : OP dest, src1, src2 Instructions à exécution conditionnelle Décalage de src2 (barrel shifter) : spécificité de ARM Thumb : 30 instructions de 16 bits avec accès à 8 registres (R0 à R7) Sous ensemble des instructions ARM 2 opérandes : OP dest/src1, src2 Pas d’exécution conditionnelle Pas de décalage de src2 Réduction de la taille du programme Sans dégradation importante des performances car décompression au niveau du matériel, avant décodage Systèmes embarqués - S. Tisserant - ESIL - 2009 Bits 28-31 : condition d’exécution (cond) Bits 21-27 : code opération Bit 20 : modification du registre d’état si S = 1 Bits 16-19 : registre source 1 Bits 11-15 : registre destination Bits 0-10 : identification source 2 (plusieurs formes : constante, registre, registre avec décalage, etc.) Systèmes embarqués - S. Tisserant - ESIL - 2009 Exécution conditionnelle Exécution conditionnelle (2) If (R0 != 5) R1 = R1+R0-R2 Solution classique CMP BEQ ADD SUB R0, #5 SUITE R1, R1, R0 R1, R1, R2 SUITE … Exécution conditionnelle CMP R0, #5 ADDNE R1, R1, R0 SUBNE R1, R1, R2 … Systèmes embarqués - S. Tisserant - ESIL - 2009 Assembleur Systèmes embarqués - S. Tisserant - ESIL - 2009 Exemple : traitement des données Traitement de données Opérations arithmétiques, opérations logiques, mouvements de registres, comparaisons Mise à jour du CPSR si S ajouté au mnémonique Multiplications Transferts entre mémoire et registres Load (LDR) et store (STR) : mots, demi-mots et octets Load multiple (LDM) et store multiple (STM) Contrôle de flot BX et BLX : passage de ARM vers Thumb et vice-versa Gestion de sémaphores (SWP) Cycle lecture-écriture atomique Interruption logicielle (SWI) Coprocesseurs Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Opérandes et modes d’adressage Opérandes et modes d’adressage (2) Registre Transfert multiple Indirect par registre R0 = Mem[R1] R2 = Mem[R1+4] R5 = Mem[R1+8] LDMIA R1!, {R0,R5,R2} idem et R1 = R1+12 Ordre des registres sans importance : toujours pris dans ordre croissant Extension : IA (increment after), IB (increment before), DA (decrement After), DB (decrement before) Adressage pile STMFD R13!, {R0,R1,R5} pour empiler LDMFD R13!, {R0,R1,R5} pour dépiler Extension : FD (full descending), FA (full assending) LDR R0, [R1] STR R0, [R1] Base + déplacement LDR R0, [R1,#4] LDR R0, [R1,#4]! LDR R0, [R1],#4 R0 = Mem[R1] Mem[R1] = R0 R0 = Mem[R1+4] R0 = Mem[R1+4] & R1 = R1+4 R0 = Mem[R1] & R1 = R1+4 LDMIA R1, {R0,R5,R2} Systèmes embarqués - S. Tisserant - ESIL - 2009 Opérandes : source 2 Systèmes embarqués - S. Tisserant - ESIL - 2009 Contrôle de flot Branchement Conditionnel ou non Branchement avec lien de retour … BL Routine R14=PC+4; PC=Routine … Routine: … … MOV PC,R14 PC=R14 Passage des paramètres Registres et pile Récupération des résultats Registres, pile et registre d’état Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Contrôle de flot (2) Exceptions et interruptions Appels imbriqués Table des vecteurs … BL fun1 R14=PC+4; PC=Routine … fun1: STMFA R13!,{R14} … BL fun2 … LDMFA R13!,{R15} fun2: … MOV R15,R14 Il faut sauvegarder l’adresse de retour (dans la pile), sauf si dernier appel Source Adresse Mode Retour nRESET 0x00000000 supervisor Inval. Instr. 0x00000004 undefined MOVS R15,R14 SWI 0x00000008 supervisor MOVS R15,R14 Prefetch abort 0x0000000C abort SUBS R15,R14,#4 Data abort 0x00000010 abort SUBS R15,R14,#4 nIRQ 0x00000018 IRQ SUBS R15,R14,#4 nFIQ 0x0000001C FIQ SUBS R15,R14,#4 A chaque adresse on doit avoir chargé une instruction du type B IR_handler Systèmes embarqués - S. Tisserant - ESIL - 2009 Différences entre IRQ et FIQ Systèmes embarqués - S. Tisserant - ESIL - 2009 Un exemple FIQ prioritaire IRQ est masquée par FIQ FIQ mon masquée par IRQ FIQ dispose de 5 registres privés (R8_fiq à R12_fiq) Pas de sauvegarde si 5 registres suffisent pour traiter l’interruption Donc prise en compte de FIQ plus rapide En général une seule source connectée à l’entrée nFIQ Contrôleur d’interruptions connecté à nIRQ Gestion des priorités et des masques Mémorisation des interruptions Accès (programmation des masques, adresse de la routine de traitement, etc.) depuis ARM dans l’espace d’adressage Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Bus AMBA Mise au point embarquée Bus proposé par ARM Certaines versions (par exemple : ARM7TDMI) propose un Bus rapide : Advanced High Bus (AHB) Bus lent (< 1 Mb/s) : Advanced Peripheral Bus (APB) système de mise au point embarqué EmbeddedICE Logic : suivi des activités du processeur avec gestion de points d’arrêt sur conditions spécifiques EmbeddedICE Trace Macrocell : capture d’états du processeur avant et après un événement programmé accès aux registres et données Interface JTAG Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Extensions Extensions (2) Extensions pour traitement de signaux numériques Jazelle DBX (Direct Bytecode eXcecution) DSP enhancement instructions Exécution du bytecode Java Un bit (J) du CPSR qui indique le mode Jazelle Instructions sur 8 bits Une partie des instructions de la JVM est exécutée directement par du microcode. Les autres sont émulées. A partir de ARM9 Intelligent Energy Manager (ARM IEM) Matériel : Dynamic Voltage and Frequency Scalling (DFVS) Algorithmique associée au système d’exploitation IEM sofware + Intelligent Energy Controller (IEC) + Advanced Power Controller (APC) Cœurs ARM intégré dans certains FPGA (Excalibur d’Altera) Advanced SIMD (NEON) Single Instruction Multiple Data Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 ARM IEM Systèmes embarqués - S. Tisserant - ESIL - 2009 Liaison série Un exemple ARM710 Systèmes embarqués - S. Tisserant - ESIL - 2009 Liaison série (2) Une liaison série est en général le moyen de communication le moins coûteux et le plus facile à mettre en œuvre dans un système embarqué Transfert des données bit à bit sur un seul fil Une interface série convertit donc une information parallèle (spatiale) en une information série (temporelle) Elément de base : registre à décalage Emission : chargement parallèle & lecture série Réception : chargement série & lecture parallèle Synchronisation entre émission et réception Communication synchrone : transmission d’un signal d’horloge sur un second fil Communication asynchrone : pas d’horloge avec les données Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Liaison série (3) UART La plupart des microcontrôleurs comporte une interface série Ligne au repos : état haut Début de transmission : 1 start bit – état bas qui s’appelle selon les constructeurs : UART : Universal Asynchronous Receiver Transmitter ACIA : Asynchronous Communication Interface Adaptater SCI : Serial Communication Interface Liaison asynchrone Emetteur et récepteur doivent disposer chacun d’une horloge Même fréquence pour les deux Protocole pour synchroniser ces deux horloges Synchronisation de l’horloge du récepteur Données : entre 5 et 8 bits dans l’ordre des poids croissants Bit de parité (optionnel) Parité construite par émetteur et récepteur Doivent utiliser la même convention (paire ou impaire) Fin de transmission : 1 ou 2 stop bits – état haut Le bloc de données ne peut pas suivre avant au moins 1 ou 2 cycles d’horloge stop stop start 5 à 8 bits Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 UART parité SPI Serial Peripheral Interface Four-wire interface Développé initialement par Motorola Interface simple et bon marché entre microcontrôleur et un grand nombre de périphériques (mémoire, convertisseurs AN et NA, écrans LCD, capteurs, etc.) Existe sur de nombreux microcontrôleurs Protocole synchrone Du type maître-esclaves Horloge commune fournie par le maître Utilisée par le ou les esclaves Le maître sélectionne un esclave grâce à une ligne Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 SPI (2) SPI (3) maître esclave Un registre à décalage de chaque côté (maître et esclave) Pendant que le maître transmet un octet, il en reçoit un de Quatre lignes Master Out Slave In (MOSI) Serial In (SI) ou Serial Data In (SDI) Master In Slave Out (MISO) Serial Clock (SCLK ou SCK) Chip Select (CS) ou Slave Select (SS) Serial Out (SI) ou Serial Data Out (SDO) l’esclave Echange des deux octets Si écriture uniquement le maître ignore l’octet reçu Si opération de lecture uniquement le maître doit envoyer un octet sans signification Le signal d’horloge ne bat que pendant les transferts, sinon niveau stable Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 SPI (4) SPI (5) Le protocole permet l’envoi de plusieurs octets en série Un des quatre modes : horloge polarité basse et phase zéro Par exemple : esclave = mémoire Le protocole supporte le chaînage (sous contrôle du maître) Mais ce n’est pas implémenté dans tous les périphériques Quatre modes de fonctionnement possibles Inactivité : SCK niveau haut ou bas Validité des données sur front montant ou descendant Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 I2C I2C (2) Inter-Integrated Circuit Parfois dénommé IIC Microchip, Philips, Intel, etc. Bus bidirectionnel synchrone de type maîtres-esclaves Basse vitesse (100 à 400 kb/s) Autorise connexion et déconnexion sans affecter les autres périphériques sur le bus Deux lignes Serial Data (SDA) : partagée pour transmission du maître et réponse de l’esclave Serial Clock (SCL) Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 I2C (3) I2C (4) Protocole très simple Début de transfert et premier bit Inactivité : SDA et SCL état haut Début de transmission : SDA, puis SCL passent dans état bas Prévient les récepteurs Pour chaque bit : Échantillonné sur front montant de SCL Systèmes embarqués - S. Tisserant - ESIL - 2009 Séquence de deux bits Systèmes embarqués - S. Tisserant - ESIL - 2009 I2C (5) I2C (6) Fin de transfert Accusé de réception Pas de limitation du nombre d’octets dans un transfert Si un récepteur ne peut accepter d’autres données : il maintient la ligne SCL en niveau haut, cela force l’émetteur à attendre avant de poursuivre Accusé de réception (après 8ème bit) Maître libère la ligne SDA et produit un cycle SCL supplémentaire Le récepteur doit alors forcer ligne SDA dans l’état bas Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 IrDA IrDA (2) Infrared Data Association Couche physique Au départ HP-SIR (Serial Infra Red) 150 compagnies Standard en couches Deux modes Systèmes embarqués - S. Tisserant - ESIL - 2009 RZ (3/10) 4PPM Systèmes embarqués - S. Tisserant - ESIL - 2009 IrDA (3) IrDA (4) IrLAP Link Access Protocol Etablir une liaison fiable Contrôle de flux de bas niveau Détection d’erreurs, retransmissions IrLMP Link Management Protocol Connexion des applications à IrLAP Négociation des performances Multiplexage (plusieurs clients sur le seul IrLAP) Résolution d’adresses, etc. Systèmes embarqués - S. Tisserant - ESIL - 2009 IrDA (5) TinyTP Tiny Transport Protocol Contrôle le flux plus évolué Optionnel, mais souvent indispensable IrOBEX Object Exchange Protocol Pour applications orientées objets IrCOMM Emulation ports série et parallèle Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009