COURS_1 JC LP MD
Evolution des machines JC LP MD
Les 8 bits Machines de type load/store avec au minimum 1 accumulateur (registre) Machines à 1 opérande Load lire la mémoire et charger l’accumulateur Store écrire le contenu de l’accumulateur en mémoire Peu de modes d’adressage Immédiat Direct Indirect Indirect indexé JC LP MD
Familles microprocesseurs 8 bits Intel 8008, 8080 Motorola 6800 Zilog Z80 JC LP MD
Mainframes Machines multi users (16/32 bits) IBM CDC DEC (Digital Equipment Corporation) famille PDP UNIX Langage C JC LP MD
Les 16 bits Machines de type move avec 8/16 registres Machines à 2 opérandes Ex: add R1,R2 R1+R2->R2 Beaucoup de modes d’adressage Immédiat, direct, indirect, register, indirect register, indirect register post incrémenté, indirect register prés décrémenté ….. JC LP MD
Familles microprocesseurs 16 bits Machines dites CISC Intel 8086 architecture interne 16 bits data et adresse Motorola 68000 architecture interne 32 bits data et adresse (fortement inspiré du PDP) Zilog Z800 et Texas 9900: pas survécus JC LP MD
Problèmes des CISC Machines microprogrammées (lenteur d’exécution, mais facilité de rectifier des bugs de conception) Taille des instructions variable et temps d’exécution variable Difficile de faire du parallélisme pour l’exécution des instructions Difficultés pour tester les puces en usine Les compilateurs ne savaient pas utiliser toutes les ressources des boitiers Il fallait augmenter la fréquence de l’horloge pour augmenter la performance (chaufferettes!!!!) JC LP MD
Idée du RISC Machines à 3 opérandes Beaucoup de registres Machines 32/64 bits Taille des instructions unique Parallélisme d’exécution Machines câblées de type load/store But visé au début: 1 instruction par clock JC LP MD
Familles microprocesseurs RISC SUN architecture SPARC HP architecture PRECISION Silicon Graphics architecture MIPS IBM+Motorola architecture POWER PC Architecture ARM vendue à divers fondeurs Architecture tres simple, adaptée à la mobilité (Intel, Freescale (ex Motorola), Texas…..) JC LP MD
Microcontrôleurs PPC Famille IBM Boitier généraliste: famille 4XX (dont le 403) Famille Freescale Boitier pour les télécom: famille 8xx (dont le 860)puis 8XXX Boitier pour l’automobile: famille 5xx puis 5XXX, PXR4040 JC LP MD
PPC PXR4040 introduction JC LP MD
PXR4040 bloc diagram JC LP MD
General Purpose Register GPR0 …..GPR31 Appelés en assembleur r0…..r31 JC LP MD
Special Purpose Register Registres système Accessibles par des instructions spécifiques MSR mtmsr,mfmsr LR mtlr,mflr CTR mtctr, mfctr IVPR mfivpr,mtivpr JC LP MD
EABI JC LP MD
Accès mémoire en assembleur lis r3,MEM@h // Chargement de 32 bits dans un registre ori r3,r3,MEM@l lbz r5,d(r3) // lecture d’un byte (poids forts à 0) lwz r5,d(r3) // lecture d’un word (poids forts à 0) stb r6,d(r3) // écriture d’un byte stw r6,d(r3) // écriture d’un word (pour 16 bits: lhz et sth) JC LP MD
Utilisation du link register LR Appel de sous programme bl Retour de sous programme blr Chargement du LR mtlr rx Lecture du LR mflr rx JC LP MD
Décrément de CTR et branch target bdz target si CTR=0 Boucles (CTR) Décrément de CTR et branch target bdz target si CTR=0 bdnz target si CTR#0 JC LP MD
Utilisation d’assembleur avec le C Fonction en assembleur appelée par un programme C __asm int Read_IVPR(void) { mfivpr r3 //lecture du pointeur de la table d’interruptions blr } //passage de paramètres in et out avec r3 Instruction assembleur dans un programme en C asm ("rfi"); //return from interrupt JC LP MD
System Integration Unit siu System Integration Unit JC LP MD
Rôle du SIU JC LP MD
Registres du SIU à étudier pour le 1er TP Pad Configuration Register PCR (il y a 512 PCR) pour configurer la fonction de la PIN Registre de data en sortie (il y en a 512) pour donner un niveau à la PIN programmée en sortie JC LP MD
SIU_PCR JC LP MD
PXR4040.h en tête /****************************************************************************/ /* MODULE : SIU */ struct SIU_tag { } #define SIU (*( volatile struct SIU_tag *) 0xC3F90000 ) JC LP MD
PXR4040.h SIU_PCRn union { /* Pad Configuration Registers */ vuint16_t R; struct { vuint16_t:3; vuint16_t PA:3; vuint16_t OBE:1; vuint16_t IBE:1; vuint16_t DSC:2; vuint16_t ODE:1; vuint16_t HYS:1; vuint16_t SRC:2; vuint16_t WPE:1; vuint16_t WPS:1; } B; } PCR[512]; JC LP MD
PXR4040.h SIU_GPD i/o union { /* GPIO Pin Data Output Registers */ vuint8_t R; struct { vuint8_t:7; vuint8_t PDO:1; } B; } GPDO[512]; union { /* GPIO Pin Data Input Registers */ vuint8_t PDI:1; } GPDI[256]; JC LP MD
Liaison série JC LP MD
Principe de la RS232 JC LP MD
Trame RS232 en transmit sur la ligne JC LP MD
Gestion de flux JC LP MD
Types de liaisons JC LP MD
Module eSCI (A,B,C) JC LP MD
Paramètres de trame Nombre de bits de Data Nombre de bits de STOP Parité Vitesse de transmission en bauds Pour TP2 8bits DATA,1 bit de STOP, pas de parité, vitesse:9600 bauds (clock pour le baud rate générateur à 30 MHz) JC LP MD
Types d’erreurs possibles Parity error Framing error Overrun error JC LP MD