Clac ton Proc Questions et réponses Si j’ai un bus d’adresse comprenant 4 fils, quel est le nombre maximum d’adresses possibles ? Si j’ai un bus de données comprenant 16 fils, quel est le nombre maximum d’adresses possibles ? Si je dis que mon processeur est un processeur 64 bits. De quoi est-ce que je parle ? A quoi sert l’unité arithmétique et logique ? Réponse : Réponse : 2^4 soit 16 adresses. Les nombres placés dans les registres d’un périphérique sontils des nombres décimaux, hexadécimaux, des adresses mémoire ? Autre ? Réponse : Les nombres sont enregistrés via une information logique dans les bascules D. L’information est binaire (0 ou 1). Info+ :Peu importe la représentation du nombre par la suite. Décimal, hexa… ce ne sont que des représentations conventionnelles pour nous faciliter la lecture. Réponse : On ne peut pas savoir, le calcul se fait uniquement à partir du bus d’adresse. Traduire en une seule ligne C optimisée, sachant que Zt et Yt sont des variables qui ne sont pas utilisées dans la suite du programme : (le symbole ‘*’ doit disparaître) Zt = Z*16 Yt = Y & Zt X=Yt Réponse : x = y & (z<<4) Le *16 doit impérativement être remplacé par « << » Réponse : du nombre de bits que le processeur va pouvoir manipuler à un instant donné, c'est-à-dire du nombre de bits traités par l’UAL à un instant donné. à effectuer des opérations arithmétiques et logiques (Addition, ET, OU, …) sur des informations provenant des registres ou du bus de données. Quelle est la différence entre un microcontrôleur et un microprocesseur ? Est-il possible de concevoir une architecture avec un bus d’adresse ayant un nombre de fils différent du nombre de fils du bus de données. Réponse : Un microcontrôleur contient un microprocesseur avec des périphériques, de la mémoire, etc. Le microcontrôleur est autonome et peut fonctionner seul contrairement au microprocesseur. Réponse : Oui rien ne l’interdit. Quel est le rôle du séquenceur (ou unité de contrôle) dans un processeur ? Réponse : Le séquenceur interprète chaque instruction et assure le bon déroulement de chaque exécution. Info + : il génère les signaux de contrôle pour guider les éléments d’un endroit à un autre. C’est un circuit logique qui exécute un automate fini. Quelle est la différence entre une architecture Von Neumann et Harvard ? Réponse : L’architecture Harvard possède une mémoire avec un accès spécifique pour les instructions et une mémoire avec un accès spécifique pour les données. Pour l’architecture Von Neumann, la mémoire contient les données, les instructions, etc. L’accès se fait par un bus d’adresse et un bus de données commun à toute la mémoire. Peut-on programmer avec un langage dit de haut niveau un microcontrôleur ? Donnez les éléments fondamentaux d’une carte de prototypage à microcontrôleur comme nous l’avons fait en mini-projet. Réponse : Oui C’est une histoire de compilateur. Par exemple C18 est un compilateur C pour les PIC18f. Le langage C est un langage dit haut niveau. Sur un forum un internaute explique : « Je ne comprends pas, sur ma carte demo board pic18f45k20, j’ai écris LATD=0xFF et mes leds qui sont sur le port D ne s’allume pas ». Quel serait votre premier conseil avisé ? Réponse : configurer le port D en sortie ! Réponse : Alimentation, le microcontrôleur, quartz (si pas d’usage d’un oscillateur interne), un programmateur in-situ du microcontrôleur Vous voulez choisir un microcontrôleur. Donnez 4 critères qui vont vous permettre de choisir ce microcontrôleur. Réponse : Le nombre/choix des périphériques/interfaces proposées, la taille de la mémoire volatile, non volatile, coût, puissance de calcul, outils, disponibilité, support, contrainte thermique/énergétique/taille, documentation, compétences, fournisseur, partenaires... Je viens d’acheter un processeur de 12 watts. Mon voisin vient d’en acheter un de 60 watts. Son processeur est-il 5 fois plus puissant pour faire des calculs ? Réponse : On ne peut pas savoir. Ici le watt reflète la puissance électrique consommée par le processeur qui dépend de l’architecture, de la technologie de fabrication du processeur, de sa cadence, et de sa tension d’alimentation. Question collaborative : un élément à chaque joueur si la bonne réponse est trouvée. Le joueur qui lit la question ne participe pas mais gagne quand même un élément. Quelle programme est le plus rapide à s’exécuter sur un microcontrôleur type PIC18f sans optimisation compilateur. Prg1 : For(int i=0 ; i+2; i < 1000) i-=1; Prg2 : i+=2; i-=1; Ces deux instructions recopiées 2100 fois Réponse : Le programme 2. Info+ : dans le programme 1 il faut faire un test, ajouter et soustraire, ce qui fait 3/4 instructions élémentaire en langage machine sans compter le problème dû à la boucle (pipeline). Comment se nomme la phase qui consiste à transformer un programme écrit en langage de haut niveau en un fichier image, fichier écrit dans la mémoire du microcontrôleur contenant tout le programme ? switch(state) { case INIT: state = (condition)?STA1:STA2; } case STA1: function1(); state = INIT; case STA2: function2(); state = INIT; default: Que manque t’il à cette machine à états ? Réponse : La phase de compilation Réponse : Des « break; » pour chaque case ! Question en lien avec la bio Si vous deviez comparer un microcontrôleur à un organe du corps humain, quel serait celui le plus approprié : Félicitation vous venez de gagner une LED. Donnez un exemple d’une suite logicielle pour compiler un programme pour microcontrôleur PIC18F. Réponse : MCC18. Attention : MPLAB n’est pas un logiciel pour compiler, c’est un IDE qui s’interface avec le compilateur. Autres exemples : il existe aussi les outils GNU pour pic (gcc, gdb…), ou encore CCS... La famille des microcontrôleurs PIC18 s’appuie sur un cœur de processeur de type Harvard ou Von Neumann ? Donnez un exemple d’une chaine de compilation croisée. Réponse : mcc18 (pour les pic), les outils GNU pour ARM (GCC+ GDB+AS +linker), CCS (pour les pics). Attention à ne pas citer d’IDE (comme Eclipse, MPLAB, etc.). Ce sont les compilateurs qui génères un fichier image, exécutable par un processeur différent du processeur utilisé par la chaine de compilation Félicitation vous venez de gagner une LED. Prenez une LED puis rejouez. Prenez une LED puis rejouez. Réponse : Réponse : Le cerveau C’est un cœur Harvard. Question en lien avec l’option TST : La plupart des processeurs récents disposent de mémoire cache. Peut-on les considérer comme des microcontrôleurs ? Réponse : Non car ils ne peuvent pas s’utiliser de manière indépendante pour exécuter un programme La personne qui dit la première à l’exception du lecteur : « j’aime les microprocesseurs » gagne une led. Le joueur qui devait avoir une question rejoue. traduisez : « un microprocesseur et un microcontrôleur » en anglais. Réponse : a microprocessor and a microcontroller Comment effectuer en une instruction C intelligente une division par 32 de l’entier non signé contenu dans une variable a ? Comment effectuer en une instruction C intelligente une multiplication par 128 de l’entier non signé contenu dans une variable a ? Réponse : a>>=5 ou a=a>>5 Réponse : a<<=7 ou a=a<<7 Je souhaite effectuer un filtre à réponse impulsionnelle finie pour filtrer un signal audio. Est-ce que je peux utiliser le pic18f452 utilisé dans le miniprojet ? Réponse : Non Info+ : Trop de calcul serait demandé Comment s’appelle en anglais le regroupement des transistors assemblés sur une plaque de silicium pour en faire un circuit intégré comme par exemple un processeur ? Dans un processeur, quelle unité de mémorisation temporaire de l’information possède le temps d’accès le plus court et est le plus coûteux à fabriquer. Réponse : The ‘die’. Réponse : Les registres internes du processeur Donnez deux exemples d’optimisation du cœur du processeur pour accélérer le traitement des instructions. Le jeu d’instructions est-il dépendant de l’architecture du processeur. Justifiez. Réponse : Réponse : les optimisations matérielles et logicielles sont acceptées. Il est possible de citer : le compilateur, la finesse de gravure de la puce, le pipeline, superscalaire (SMT), architecture dédiée (DSP, GPU, co-processeur), le multi-coeur Vous voulez choisir un microcontrôleur. Donnez un paramètre à prendre en compte qui ne rentre pas dans les paramètres de choix d’un microprocesseur. Oui, une fonction arithmétique, logique ou autre ne peut exister que si la fonction existe réellement dans l’architecture du processeur. La manière d’aller chercher en mémoire l’information dépend également de l’architecture et donc les instructions seront spécifiques pour l’architecture. Quelle unité de mesure peut on utiliser pour caractériser la puissance d’un processeur ? Réponse : Réponse : Le nombre/choix des périphériques/interfaces proposées, la taille de la mémoire volatile, non volatile Le nombre d’instructions par seconde souvent par multiple du million (MIPS) ou du milliard (GIPS) Vous voulez choisir un microprocesseur pour répondre à une application donnée. Donnez trois paramètres à prendre en compte dans votre choix. Sur un forum de joueur de jeux en réseau l’internaute 1 dit : « Je ne comprends pas, je joue à wow (World of Warcraft) et ça rame. J’ai pourtant un processeur double cœurs ». L’internaute 2 répond : « Mets un 4 cœurs, tu verras, moi ça a résolu mes soucis ». Réponse : Que pensez-vous de la réponse de l’internaute 2 ? Consommation, chaine de compilation, durée de vie, performance du cœur, moyen de tests, documentation, retour utilisateur, le SAV, code d’exemple, etc. Réponse : Le nombre de cœur est indépendant de la rapidité d’exécution d’une application. Il faut analyser en détail les applications lancées et l’occupation des ressources de l’ordinateur Donnez un exemple de logiciel de débogage pour ARM. Réponse : GNU GDB. Attention : Eclipse n’est pas un logiciel de débogage, c’est un IDE qui s’interface avec GDB. Autres exemples : ADU (ARM Debugger for UNIX), ARM RV Debugger Sur l’ARM cortex M4, comment est décomposé le pipeline (quelles sont les étapes de ce pipeline) : Réponse : Fetch : recherche instruction Decode : décodage/ préparation des blocs Execute : exécution de l’instruction La famille des microcontrôleurs STM32 s’appuie sur un cœur de processeur de type Harvard ou Von Neumann ? Question en lien avec l’option ESPRIT : Qu’est ce qu’une architecture superscalaire ? Je souhaite effectuer un filtre à réponse impulsionnelle finie pour filtrer un signal audio. Quel est le type de processeur le plus adapté pour faire ces calculs ? (Déclinez l’acronyme) Réponse : C’est un cœur Harvard (bus d’accès spécifique pour les données et les instructions) Pour m’amuser : - Je construis manuellement les mots correspondant à la traduction en code machine d’instructions assembleur. - Je stocke ces mots à une adresse mémoire. - Je place cette adresse dans PC. Le processeur peut-il ainsi exécuter cette suite d’instructions « construite manuellement » ? Justifiez. Réponse : Oui, rien ne l’empêche. Cela revient à faire le travail du compilateur. Le processeur ne fait pas la différence entre une instruction et une donnée. Il ne sait qu’exécuter les instructions situés à l’adresse [PC]... Réponse : Propose plusieurs unités de traitement des instructions pour paralléliser les instructions. Question collaborative : un élément à chaque joueur si la bonne réponse est trouvée. Le joueur qui lit la question ne participe pas mais gagne quand même un élément. Quelles sont les différentes étapes de l’exécution d’une instruction, en partant du décodage de l’instruction jusqu’à la fin de son exécution ? Partez de l’exemple de l’addition pour vous aider. Réponse : (1- le séquenceur va chercher l’instruction dans la mémoire,) 2- il active la fonction sur l’UAL, 3- les bons registres sont lus 4- l’opération est faite 5- le résultat est éventuellement rangé en mémoire ou dans un registre Réponse : DSP (digital signal processor) mov r2, #1 ldr r0, =longueur_chaine bl chaine_longueur mov r1, r2 /*chaine_longueur est la fonction de calcul de la longueur d’une chaine de caractères d’une chaîne passé dans le premier paramètre*/ Protype d’une fonction : init_eleve_femme(T_eleve* eleve_a_initialiser, int age, char* son_nom). Question : On souhaite écrire ce sousprogramme en assembleur ARM. Expliquez comment récupérer age et son_nom une fois l’appel de la fonction fait. Que vaut r1 après l’exécution de l’instruction mov r1, r2 ? Réponse : on ne peut pas savoir. (la norme EABI n’impose pas de restituer r2) Réponse : premier paramètre dans R0 ici l’adresse de l’élève à initialiser, le deuxième dans R1 ici l’entier age , le troisième dans R2 ici l’adresse de la chaîne. Le sous-programme doit retourner la valeur maximale de deux entiers à comparer, contenus dans R0 et R1. Qu’est ce qu’un coprocesseur ? Fonction_valeur_max: STMDB SP!,{R0-R1, LR} CMP R0, R1 MOVGT R0, R1 LDMIA SP!,{R0-R1, PC} Cette fonction est-elle correcte ? Justifiez. Réponse : L’instruction LDMIA écrase la valeur de retour placée dans R0. Il est d’ailleurs inutile de sauvegarder R0 et R1 dans la convention AAPCS. mov r4, #1 ldr r0, =longueur_chaine bl chaine_longueur mov r1, r4 /*chaine_longueur est la fonction de calcul de la longueur d’une chaine de caractères comme dans le mini-projet*/ Que vaut r4 après l’exécution de l’instruction mov r1, r4 ? Réponse : 1 (la convention AAPCS impose de restituer r4) donc R4 vaut 1 Réponse : Un coprocesseur est spécialisé dans des calculs souvent complexes. Le coprocesseur peut être abrité par un microprocesseur. Traduire en une instruction assembleur ARM (vous pouvez regarder l’aide mémoire des instructions) : x = y & (z<<4). Vous attribuerez un registre à chaque variable. Réponse : AND R0, R1, R2 LSL #4 avec R0 : x, R1 : y, R2 : z Comment traduire la notion de sousprogramme en langage d’assemblage ARM ? Réponse : En utilisant une étiquette. + MOV PC, LR à la fin du sous-prg. Info+ : attention, la notion de sousprogramme n’existe pas. Ainsi il est pris comme convention de donner une étiquette avec le nom du sousprogramme. Avant l’appel de l’instruction à cette étiquette, l’adresse de la prochaine instruction à exécuter après le retour du sousprogramme est enregistrée dans un registre (LR = R14). Ainsi le sousprogramme doit se terminer par un mov PC, LR pour indiquer au processeur la prochaine instruction à exécuter (donnée par PC) qui est l’adresse de la prochaine instruction après l’exécution du sous-programme. Traduire en quelques instructions assembleur ARM pour cortex M4 l’algorithme (vous pouvez regarder l’aide mémoire des instructions) : // x : R0, y : R1 et z : R2 if (x<10) //x est signé z=y*13 ; //puis appel au sousprogramme une_fonction une_fonction() ; Réponse : CMP R0, #10 IT LT MULLT R2, R1, #13 BL une_fonction Question collaborative. Un élément à chaque joueur si la bonne réponse est trouvée. Le joueur qui lit la question ne participe pas, mais gagne quand même un élément. Traduire en quelques instructions l’algorithme : if (x<10 && y==0 && z == 1) x=100 ; // x : R0, y : R1 et z : R2 sont signés Réponse : CMP R0, #10 BGE suite CMP R1, #0 BNE suite CMP R2, #1 IT EQ MOVEQ R0, #100 suite : … Attention il n’est pas possible de faire : CMP R0,#10 CMPLT R1, #0 CMPEQ R2, #1 Proposez une traduction en langage C ou en langage algorithmique de : CMP R0,#10 CMP R1, #0 IT EQ ADDEQ R2, R2, #1 ADD R2, R2, #2 Réponse : if (y == 0) z +=1; z+=2; Question collaborative. Un élément à chaque joueur si la bonne réponse est trouvée. Le joueur qui lit la question ne participe pas, mais gagne quand même un élément. Proposez une traduction en langage d’assemblage ARM des instructions suivantes : while (x !=y){ if (x>y) x = x-y; if (x<y) y = y-x; } boucle: Réponse : CMP R0, R1 IT GT SUBGT R0, R0, R1 IT LT SUBLT R1, R1, R0 BNE boucle Comment effectuer en une instruction une division par 4 de l’entier non signé contenu dans le registre R11 ? Réponse : MOV R11, R11, LSR #2 Info + : pour un entier signé : MOV R11, R11, ASR #2 if(k%4) Comment effectuer en une instruction une multiplication par 5 de la valeur contenue dans R0, SANS UTILISER L’INSTRUCTION MUL ? i++; ANDS R2, R0, #0x3 IT NE ADDNE R1, R1, #1 /*R0 = k*/ /*R1 = i*/ Complétez la traduction en langage d’assemblage ARM de : for (i=0 ; i<10 ; i++) s = s + X[i] Pourquoi le pointeur de pile évolue-t-il de 4 en 4. Traduction proposée : MOV R0, #0 Boucle_for : CMP R0, #10 /* A compléter */ BLT Boucle_for On suppose que le vecteur X est rempli d’entiers de 32 bits dont l’adresse de base est déjà présente dans R1 Réponse : ITTT LT LDRLT R3, [R1, R0, LSL #2] ADDLT R2, R2, R3 ADDLT R0, R0, #1 Est-il possible d’écrire cette instruction dans le langage d’assemblage ARM : « ADD R1, #2, R2 ». Pourquoi ? Réponse : Car le pointeur de pile permet d’enregistrer dans la pile des mots (32 bits). A une adresse est associé un octet, un mot doit donc être écrit sur une adresse multiple de 4. SP doit varier de 4 en 4. Lorsque je veux sauvegarder dans la mémoire différents registres du microprocesseur ARM, quelle est l’instruction la plus adaptée à cette opération ? Est-ce que cette traduction est équivalente ? Justifiez. Réponse : ADD R0, R0, LSL #2 /* R0 = R0 + R0<<2 */ /* R0 = R0 + R0 * 4 */ Réponse : Oui. L’instruction ANDS met à jour le CPSR selon le résultat de : R0 & 0x0000 0003 Si ce résultat est non nul, on incrémente R1. Réponse : Non car à la place de #2, nous devons forcément y placer un registre Réponse : STM. Il faut ajouter ensuite le préfixe pour indiquer le sens de déplacement dans la mémoire par exemple IA, ou DB Dans mon registre R1, je veux enregistrer le caractère ‘0’. J’ai écrit ces deux instructions : MOV R1, #’0' MOV R1, #0x30 Sachant que le code ASCII de ‘0’ est 0x30, quelle est l’instruction que peut utiliser ? Réponse : Les deux. Info + : au final, le caractère va être codé dans l’instruction en elle-même. Ce sont donc des 0 et des 1 qui vont être écrit dans la mémoire quelque soit la représentation faite par le programmeur Dans une table d’exception, que trouve-t-on toujours dans le début de cette table pour tous processeurs ? Réponse : Le point d’entrée pour le démarrage du programme Vous venez de lire en mémoire le mot : 0b1110 0011 1000 0000 0001 0000 0000 0000 Sachant que c’est une instruction ARM et qu’il s’agit d’un ADD, retrouvez le registre Rn et Rd. Information : le registre Rn est enregistré entre dans les bits de 16 à 19 et Rd de 12 à 15. Traduire « addressing mode ». Comment s’appelle la table regroupant l’ensemble des adresses (ou instructions suivant le microprocesseur) pour chercher le sousprogramme spécifique à exécuter en fonction des différentes exceptions ? Réponse : Les modes d’adressage Réponse : Rn = R0 et Rd = R1 Donnez un exemple de logiciel de débogage pour ARM. Réponse : GNU GDB. Attention : Eclipse n’est pas un logiciel de débogage, c’est un IDE qui s’interface avec GDB. Autres exemples : ADU (ARM Debugger for UNIX), ARM RV Debugger Réponse : La table d’exception ou le vecteur d’exception Que peut-on analyser avec un débogueur + sonde JTAG ? Quel est le principal circuit logique qui constitue les registres du processeur ? Réponse : analyser les registres processeur, les valeurs des cellules mémoire (dont variables, constantes, code machine, etc…), les registres des périphériques soit en cours d’exécution soit au moment de l’erreur. Etc. Réponse : Les bascules D Peut-on instancier un microcontrôleur dans un FPGA ? Réponse : Oui ! Cela est couramment utilisé pour doter un FPGA d’un cœur exécutant du code. Le reste du FPGA est alors routé spécifiquement selon l’application. Un ‘0’ logique correspond à un niveau bas. A quoi correspond-il physiquement ? Réponse : Pour un composant donné, le ‘0’ logique est associé à une plage de tension (ou de courant). Par exemple, le 0 logique est considéré entre 0 V et 0.8 V ou entre -3 V et -15 V, etc. C’est une convention fixée par le circuit électronique conçu. Il existe cependant des standards (TTL, CMOS , BiCMOS, etc.). Qu’est ce qui différencie l’électronique numérique de l’électronique analogique ? Réponse : électronique numérique : système électronique fondé sur des états discontinus (ex : états logiques) ; électronique analogique : fondée sur des signaux continus. Que se passe-t-il, électriquement parlant quand un transistor bipolaire est saturé (au niveau du courant et de la tension) ? Réponse : Vce ≈ 0 et un courant circule dans le transistor suivant les besoins de la charge (limité par Isat). Qu’est ce que permet de caractériser le Farad ? Réponse : Exprime une charge électrique entre deux armatures. (par exemple celles d’un condensateur) A titre d’information, c’est la capacité d’un condensateur électrique entre les armatures duquel apparaît une différence de potentiel de 1 volt lorsqu’il est chargé d’une quantité d’électricité d’un coulomb (1 ampère pendant 1 seconde). Que se passe-t-il, électriquement parlant quand un transistor bipolaire est bloqué (au niveau du courant et de la tension) ? Réponse : I=0 et Vce = E Un ‘1’ logique correspond à un niveau haut. A quoi correspond-il physiquement ? Réponse : Pour un composant donné, le ‘1’ logique est associé à une plage de tension (ou de courant). Par exemple, le 1 logique est considéré entre 2.4 V et 5V ou entre 2 V et 3,3 V ou -3V et 15V. C’est une convention fixée par le circuit électronique conçu. Il existe cependant des standards (TTL, CMOS , BiCMOS, etc.). L’horloge cadence les instructions lues et exécutées par le processeur ici un PIC18f45k20 cadencé à 50 MHz. Sur un forum, un premier internaute, explique que son programme n’a pas pu exécuter assez vite le code qu’il souhaite. Un internaute lui propose de remplacer son quartz de 50 MHz par un quartz à 1Ghz. Que pensez-vous de la réponse du deuxième internaute ? Réponse : c’est un aberration ! il faut tenir compte de la limite de fréquence donnée par le constructeur : 1 GHz, c’est beaucoup trop ! (temps de propagation des signaux…) Le circuit logique 54ACT00 a-il une meilleure tenue en température que le circuit 74ACT04 ? Justifiez. Soit le circuit suivant : Ce circuit peut-il avoir une utilité ? Réponse : Oui la différence se fait entre le 54 et 74, gamme de températures normale pour le 74 (0°C à 70°C) ou militaire pour le 54 (-55°C à +125°C). Le 00 et le 04 indiquent la fonction logique. Réponse : Oui, il y a deux états stables possibles : 0 à gauche et 1 à droite ou 0 à droite et 1 à gauche. C’est un circuit bistable à la base des éléments de mémorisation dans une mémoire volatile statique. 5V Pourquoi un processeur qui subit un overclocking, c'est-à-dire lorsque l’on augmente la fréquence du processeur pour exécuter plus d’instructions par seconde, chauffe plus ? Réponse : Le processeur est conçu avec des millions de transistors. Le transistor dissipe beaucoup de puissance quand il change d’état. Quand il est sur un état stable, il consomme peu. Ainsi, plus ces transistors sont sollicités notamment pour changer d’état et plus le processeur a besoin de dissiper de chaleur. µC L Je souhaite piloter à l’aide d’un microcontrôleur une lampe qui consomme 1A sous 5V. Afin de ne pas faire débiter l’alimentation 5V par le microcontrôleur, je réalise le schéma ci-dessus. (le port est mis à 0 pour allumer la lampe) Ce montage est-il judicieux ? Justifiez. Réponse : Ce montage ne fonctionne pas (ou plutôt « pas longtemps »...). La limite du courant à débiter ou à recevoir est la même, et inférieure à 1A. Je risque donc d’endommager la sortie du microcontrôleur ! Expliquez ce qu’est l’état de haute impédance ? Quelle fonction logique réalise ce circuit : Réponse : état d’une pin de sortie d’un circuit logique qui est physiquement déconnecté du lien extérieur. Info + : Cette déconnection peut être pilotée par des registres du microcontrôleur par exemple. Réponse : un inverseur Je souhaite fabriquer une horloge (affichage de l’heure sur des afficheurs 7-segments) Pour la référence de temps, j’ai utilisé le quartz suivant : 32 768 Hz / 10 ppm (ppm = 10 parties par million) Est-ce qu’un microprocesseur est un circuit logique ? Quel peut être la déviation annuelle approximative de cette référence ? -> 10 millisecondes -> 500 millisecondes -> 30 secondes -> 5 minutes -> 32 minutes Réponse : Oui. Réponse : 5 minutes (10 ppm / 1 000 000) * 365 * 24 * 60 = 5,25 minutes Pour alimenter mon microcontrôleur, j’ai besoin d’une alimentation 5V. Cependant, je n’ai à ma disposition qu’une alimentation stabilisée de 9V continue. Comment résoudre ce problème ? Réponse : Il faut insérer après l’alimentation 9V un régulateur. Bien évidemment d’autres solutions existent mais ne sont pas aussi optimales A vous de juger de la pertinence de la solution (sauf le pont diviseur de tension qui est à bannir pour alimenter un circuit) ! Qu’est-ce qu’un relais en électronique ? Réponse : C’est un interrupteur commandé par un faible courant. Info + : Un relais est constitué d’un électroaimant permettant d’agir sur un mécanisme afin d’établir des contacts électriques. Cela permet d’avoir un circuit de commande et un circuit de puissance séparés J’utilise le convertisseur Analogique Numérique pour mesurer la température venant de mon capteur. Ce convertisseur transforme une tension présente sur son entrée entre 0 V et 6 V en un nombre sur 2 bits. Si je lis en sortie de mon convertisseur la valeur 0b10. Quelle est la tension d’entrée ? Réponse : 4 V. (quantum : (6-0)/2^2 = 2) puis quantum *0b10, soit 4 Un processeur chauffe car il est composé de plusieurs milliards de transistors qui sont en commutation. La puissance que doit dissiper le processeur peut se résumer ainsi : P = k*U²*f avec f la fréquence de fonctionnement, U la tension d’alimentation et k un facteur constant. Sur quelle paramètre vaut-il mieux jouer pour diminuer la puissance dissipée par un processeur ? Réponse : En France, quelle est la tension efficace normalisée qui arrive sur nos prises de courant ? Réponse : 230V Info + : Nous sommes passés de 220 V à 230 V efficaces en 1986. La tension (elle intervient au carré !!) Comment réaliser un optocoupleur (ou photocoupleur) ? Réponse : Il suffit d’une led présente dans le circuit de commande et d’une photodiode dans le circuit de réception. La Led et la photodiode doivent bien évidemment travaillés sur la même longueur d’onde. L’ensemble est placé dans un boîtier pour éviter que la photodiode ne capte la longueur d’onde d’une autre source lumineuse. De quoi parle-t-on quand on achète une résistance ¼ de watt ? Réponse : On achète une résistance qui peut supporter 0,25 watt. Audelà, la résistance est susceptible de se détruire. Info + : Rappel pour calculer la puissance : P=U*I tout simplement ! Qu’est ce qu’une jonction P-N ? Réponse : C’est une zone d’un solide cristallin comme le silicium où le dopage varie brusquement. C’est-à-dire que sur une partie de cette zone, nous rajoutons des impuretés comme des électrons (N), et sur l’autre zone, nous rajoutons des trous (P) Question en lien avec l’option EE Je viens d’acheter un processeur dont la boîte mentionne la finesse de gravure ici 32 nm Qu’est ce que représente la finesse de gravure d’un processeur ? Réponse : C’est un indicateur technologique vis-à-vis du processus de fabrication. Certains éléments sont plus grands, d’autres sont plus petits. Cela représente un cycle technologique. (Info +) Ce chiffre multiplie l’ancien par 0.7 (sqrt(½)). Chaque processus de fabrication double la densité de composant sur une même surface. Question en lien avec l’option EE Le concept d’ASIC s’oppose-t-il à celui de microcontrôleur. Question en lien avec l’option NRJ et l’électronique de commutation On dit souvent que l’electronique de puissance, c’est l’électronique de commutation. Dans un microprocesseur, il existe des milliards de transistor qui commutent. Peut-on considérer un microprocesseur comme un composant s’intégrant dans le domaine de l’électronique de puissance Réponse : Non car le microprocesseur ne change pas la forme de l’énergie électrique Lien avec le cours de logique Un périphérique relié sur un bus de données doit présenter une sortie avec quelle caractéristique ? Réponse : Absolument pas. Le microcontrôleur est un ASIC voire un SoC (System-onChip). Réponse : Une sortie 3 états (ou haute impédance ou Z). Quelle est la différence entre un quartz et un oscillateur ? Lien avec le cours des capteurs : Qu’elle est la différence entre un « capteur » et un « capteur intelligent » ? Réponse : Le quartz va devoir être excité par un circuit externe pour pouvoir osciller, alors que l’oscillateur doit être alimenter spécifiquement pour fonctionner. info+ : en conséquence, « souvent mais pas toujours», un quartz a 2 pins, un oscillateur en a 4). Réponse : Le capteur intelligent est capable de communiquer et de traiter la donnée à l’aide d’une unité de calcul. En gros le capteur + un micro spécifique Je souhaite faire l’acquisition d’un signal sur 10 bits à 1 Hz. Vaut-il mieux utiliser le convertisseur interne dans mon processeur ou utiliser un convertisseur séparé. Justifiez. Déclinez l’acronyme de FPGA ? Réponse : Cela dépend notamment de la proximité entre le capteur et le microcontrôleur (parasites). Il peut être nécessaire de faire l’acquisition du signal au plus près du capteur pour limiter les parasites. Si la carte et le capteur sont proches, il vaudra sûrement mieux utiliser l’ADC interne au microcontrôleur. Réponse : Field Programmable Gate Array (Réseau/Champ De Portes Programmables) A quoi sert une résistance de pull-up ? Réponse : A amener en un point du circuit à un potentiel électrique proche de la tension de l’alimentation positive. A l’inverse, on parle de pulldown, quand le signal va vers la masse. Sur une capacité chimique, il est écrit : « 10µF 25V ». Que signifie ce 25 V ? Réponse : La tension maximale admissible à ses bornes. Quand on souhaite piloter un transistor en commutation, quelle est la particularité de sa commande quand le transistor est de type bipolaire par rapport à un transistor MOS. Réponse : Bipolaire : commande en courant MOS : commande en tension Je route un PCB sous Altium. Mon schéma est correct. Le DRC valide mon routage. En conséquence, peut-on considérer que le routage est correct ? Réponse : Le routage doit répondre aux contraintes du schéma ET à des contraintes de placement des composants ! (mécaniques, CEM...) Par exemple, les condensateurs de découplage doivent être placés au plus proche des éléments producteurs et consommateurs. A quoi sert ce montage ? Réponse : C’est un suiveur de tension. Info+ : Il sert d’étage tampon en raison de son impédance d’entrée forte et son impédance de sortie faible Que signifie dans une datasheet la section : « absolute maximum ratings ». Réponse : C’est l’ensemble des limites physiques que peut supporter ‘au pire’ le dispositif sans être endommagé. Par exemple : la tension max d’alimentation, le courant max sur l’une des broches, la température min ou max de fonctionnement... Je souhaite repéré la présence de lumière dans une pièce. J’utilise une photorésistance (résistance qui varie en fonction de l’intensité lumineuse). Quel schéma électronique faut-il utiliser pour mesurer cette variation de résistance à l’aide de l’ADC de mon microcontrôleur. Réponse : Simplement faire un pont diviseur, Vcc->Rfixe>Rvariable->masse, le point de mesure entre Rfixe et Rvariable Lorsque l’on relie un signal susceptible d’être bruité par l’environnement à une entrée d’un microcontrôleur, on a pour habitude de le filtrer : Calculez l’ordre de grandeur du temps de réponse lors d’un changement d’état logique de ce signal. Réponse : R*C = 10k*100n = 1ms Qu’est-ce qu’une sortie à collecteur ouvert ? Qu’est-ce qu’un pont en H ? Réponse : Interface électronique servant à contrôler la polarité aux bornes d’un dipôle et d’injecter de la puissance dans celui-ci via la commande de 4 interrupteurs. Il est typiquement utilisé pour commander un moteur. Traduire en anglais « collecteur ouvert » dans le contexte des microprocesseurs. Réponse : Open drain Réponse : L’étage de sortie contient un transistor dont le collecteur est directement accessible sur le boitier du composant comportant une sortie à collecteur ouvert. La charge doit alors être rajouté à l’extérieur du circuit pour obtenir un niveau logique. Cette sortie est très utilisée pour des composants communicants sur une même broche (liaison I2C par exemple) ou réaliser des fonctions logiques Donnez deux sigles utilisés dans les documentations techniques désignant sur un schéma électrique la référence - ? Réponse : GND ou VSS Qu’est-ce qu’une sortie pushpull ? Qu’est ce qu’une entrée flottante sur un circuit intégré ? Réponse : L’étage de sortie contient deux transistors complémentaires permettant d’imposer le niveau logique ‘0’ ou ‘1’. Donnez un sigle utilisé dans les documentations techniques désignant sur un schéma électrique la référence + ? Réponse : VDD (parfois VCC) Réponse : Une entrée du circuit dont l’état logique n’est pas été fixé par un circuit externe. Citez un logiciel de simulation électronique et un logiciel permettant la réalisation de layout différent du précédent. Réponse : Simulation : psice (ou cadence ou orcad, c’est la même chose), Ltspice, QUCS, proteus Layout : Altium, orcad, kicad, Eagle Je souhaite allumer une led avec la sortie d’une broche de mon GPIO (montage GPIO->Résistance->LED>Masse). Quelle est la valeur de la résistance de protection à insérer pour allumer ma led sachant que mon GPIO sort du 3,3 V et que ma LED pour s’allumer consomme 10 mA sous 1,3 V. Le choix de cette question est une brillante idée. Prenez une LED de coopération pour continuer à t’éclairer pour la suite de votre aventure puis rejouez ! Sur le schéma ci-dessus, donnez le nombre de condensateurs nécessaire pour filtrer l’alimentation de ce microcontrôleur Réponse : 20 (19+1), cela se voit également sur le nombre de broche Vdd et Vss Réponse : 20 ohms = (3.3-1.3)/10m Avec quoi réalise-t-on un décodeur d’adresse ? Réponse : Avec des circuits logiques (éventuellement un circuit logique programmable type FPGA, CPLD). Qu’est ce que le pipeline dans le contexte des microprocesseurs ? Qu’est ce que l’hyperthreading (ou SMT)? Réponse : circuit électronique permettant de traiter les instructions suivant le principe du travail à la chaîne pour éviter de perdre du temps. Le pipeline permet au processeur d’anticiper et lui permet de préparer les instructions suivantes pendant l’exécution courante. Réponse : création de 2 processeurs logiques dans un processeur physique, par exemple en doublant les registres pour que chaque processeur logique possède ses propres registres. Le reste du cœur micro est commun. L’objectif est d’éviter au cœur du processeur d’attendre l’information. Sur le schéma ci-dessus, donnez le nombre de broches utilisé pour l’alimentation de ce microcontrôleur Réponse : 40 : 20 pour Vdd et 20 pour Vss Sur une datasheet, je vois le signal marqué nRW pour un signal permettant d’activer une lecture ou une écriture. Qu’est-ce que je peux en déduire concernant la valeur logique à appliquer pour effectuer une lecture ? Réponse : Il faut un signal au niveau bas. Le n indique que le signal Read est actif au niveau bas. Expliquez l’élément de base constituant un timer. Réponse : C’est un compteur légèrement plus évolué. (bascules D…) Info + : On charge une valeur dans le timer. On peut le configurer pour qu’il déclenche une interruption à l’issue du décompte. On peut également l’utiliser comme chronomètre en lisant sa valeur. On a relié un bouton poussoir à notre microcontrôleur et configuré une interruption pour qu’elle se déclenche à chaque appui. Expliquez comment réaliser un compteur synchrone 4 bits. Expliquez ce qu’est un signal PWM. Réponse : 4 bascules D, horloges communes, logique combinatoire devant chaque entrée pour préparer avant le front d’horloge l’état du compteur suivant sur les entrées D. Réponse : Pulse Width Modulation : signal à fréquence fixée dont le temps à l’état haut est variable (du coup le temps à l’état bas aussi.) On parle de variation du rapport cyclique. J’ai un microcontrôleur 8 bits, qui possède un convertisseur analogique numérique 10 bits. Serais-je limité à 8 bits pour récupérer la valeur numérisée par le convertisseur ? Justifiez. Comment le processeur peut accéder aux registres d’un périphérique quand il exécute notre programme ? A quelle autre technique oppose-t-on le mécanisme d’interruption ? Réponse : A la scrutation qui regarde de manière périodique l’arrivé d’un évènement. Réponse : Non. Le convertisseur est alors conçu pour placer les 10 bits dans deux registres. Si l’on souhaite récupérer les 10 bits, la lecture sera faite en deux temps. Réponse : la majorité des registres d’un périphérique sont accessibles par une adresse définie dans l’espace adressable qui est donnée par la datasheet. Traduisez en anglais le verbe scruter (dans le cadre d’une scrutation d’un évènement) : Réponse : to poll (ou polling pour la scrutation ou l’action de scruter) A quoi servent les registres d’un périphérique ? Réponse : les registres d’un périphériques permettent de le configurer, de récupérer des informations ou fournir des informations. C’est un moyen permettant de contrôler un périphérique. Déclinez l’acronyme GPIO ? Réponse : General Purpose Input Output Entrées / sorties à usage général... Quel est le désavantage d’intégrer un périphérique dans un microcontrôleur plutôt que de prendre un microprocesseur puis de mettre des périphériques à côté sur une carte électronique ? Réponse : Peu de choix dans le périphérique car il est imposé à la construction du microcontrôleur. Il est parfois nécessaire d’ajouter un périphérique spécifique. Comparez d’un point de vue électronique les registres du processeur aux registres d’un périphérique (par exemple ceux du GPIO). Réponse : D’un point de vue électronique, c’est la même chose : un ensemble de bascules D. Cependant leur fonction est différente. Pour un périphérique le registre a un rôle particulier alors que dans le processeur il sert à faire transiter des valeurs. Que peut-on analyser avec un débogueur (par ex. PicKIT3) et la chaine logicielle associée (par ex. MCC18 + MPLAB) ? Réponse : on peut analyser les registres processeur, les valeurs des cellules mémoire (dont variables, constantes, code machine, etc…), les registres des périphériques soit en cours d’exécution soit au moment de l’erreur. Etc. µC 5V Je souhaite relier un bouton poussoir à un microcontrôleur. J’ai réalisé le schéma ci-dessus qui ne fonctionne pas. Que doisje faire ? Justifiez. Réponse : Lorsque l’interrupteur est ouvert, le potentiel de la broche n’est pas définit. Dans le cas présenté, il faut ajouter une résistance de tirage entre la broche et la masse. (pull-down, valeurs possibles : 10k ou 100k par exemple) Dans un GPIO, il y a trois registres utilisateur principaux. Donnez le nom de ces registres sur un microcontrôleur de votre choix et la fonction associée à chaque registre. Réponse : Sur le PIC : PORT : registre qui récupère le signal sur l’entrée numérique LAT : registre qui impose le signal sur la sortie numérique TRIS : registre qui indique la direction du GPIO (entrée ou sortie) Quel est l’avantage d’intégrer un périphérique dans un microcontrôleur plutôt que de prendre un microprocesseur puis de mettre des périphériques à côté sur une carte électronique ? Réponse : Meilleure intégration => optimisation, de place, des ressources, de la consomation... Que puis-je faire en utilisant un périphérique ADC ? Réponse : ADC = Analog to digital converter. Ce périphérique permet de lire une valeur analogique et de la rendre accessible dans un programme sous la forme d’une valeur numérique (par exemple sur 8 ou 10 bits) Que puis-je faire d’un signal généré par un périphérique PWM ? Réponse : piloter un moteur à courant continu en faisant sa vitesse, générer une sinusoïde, génération d’une horloge, faire varier l’intensité moyenne en commandant un transistor dans une branche d’un circuit... Je veux faire des crêpes. Quel est la quantité de lait et la quantité de farine pour réaliser ce mets. Pour 0,5 litre de lait, la quantité de farine nécessaire est : A- 100 g, B- 250 g, C- 500 g, D- 1 kg ? Réponse : B + 3 œufs et un bon coup de fouet, c’est prêt ! Que génère un périphérique PWM ? Réponse : PWM = Pulse Width Modulation = Modulation de largeur d’impulsion : c’est un signal à fréquence choisie, dont le rapport cyclique est variable. (rapport cyclique = durée à l’état haut / période du signal) Quelle est/sont la/les différence(s), s’il y’en a, du point de vue du processeur, entre un accès mémoire et un accès registre de périphérique ? Réponse : il n’y en a pas. Le processeur ne fait pas la différence. Il accède aux registres des périphériques comme s’il s’agissait de simples cellules mémoires ! Le microcontrôleur que j’utilise dispose d’une EEPROM interne. Sachant que la mémoire programme est déjà une flash (mémoire non volatile), quel est l’intérêt d’une EEPROM ? Réponse : Souvent, le programme ne peut pas modifier lui-même la flash, il peut alors faire appel à l’EEPROM pour sauvegarder des données non volatiles… dépendantes de l’application Je suis en cours de microprocesseurs. Mon téléphone sonne. Répondre au téléphone : c’est A) traiter le téléphone comme une interruption B) traiter la sonnerie du téléphone comme une interruption C) traiter l’interlocuteur comme interruption D) exécuter un programme principal E) une erreur fatale. Réponse : B) (et un peu E aussi…) Question en lien avec l’électrotechnique Un moteur brushless est-il vu comme un capteur ou un actionneur ? Réponse : Un actionneur, puisque c’est un moteur… Même si bien souvent, on utilise des capteurs à effet hall pour bien le piloter. Comparez d’un point de vue fonctionnel les registres du processeur aux registres d’un périphérique (par exemple ceux du GPIO). Réponse : Leur fonction est différente. Pour un périphérique le registre a un rôle particulier alors que dans le processeur il sert à faire transiter des valeurs. A quoi sert un périphérique USART ? Une led doit-elle être vue comme un capteur ou comme un actionneur ? Félicitation vous venez de gagner une LED. Sur une communication série de 9600 bauds combien de bit par seconde sont envoyés si le symbole est un bit dans le cas présent. Prenez une LED puis rejouez. Réponse : A communiquer en série suivant un formalisme synchone ou asynchrone avec un autre système électronique Réponse : Un actionneur. Qu’est ce que « acquitter une interruption » ? Pourquoi les oignons font-il pleurer ? Réponse : Lorsqu’une interruption est levée, le microprocesseur interrompt le fonctionnement normal du programme pour aller exécuter une routine d’interruption. Dans cette routine, il faut acquitter l’interruption (=baisser le flag qui a généré l’interruption). Sinon, le microprocesseur retournera en boucle dans la routine d’interruption ! A) A cause d’une enzyme et du soufre contenu dans l’oignon B) Parce que c’est dur à couper C) A cause de notre glande lacrymale qui ne supporte pas l’odeur de l’oignon D) car la lame du couteau fait mal à l’oignon et que l’on est sensible à cela Réponse A) quand on coupe l’oignon, une réaction chimique se forme libérant un gaz irritant et urticant pour les yeux : le sulfate d’allyle Réponse : 9600 Bauds = symbole/seconde soit ici 9600 bit par seconde Pour deux systèmes électroniques qui communiquent ensemble, qu’est-ce qui permet aux deux entités de se comprendre ? A quoi sert un périphérique CAN ? (ne PAS confondre avec ADC) Réponse : Le respect d’un même protocole de communication. Réponse : à interfacer le microcontrôleur sur un bus de communication ‘CAN’ (couramment utilisé dans l’automobile). A quoi sert un capteur à effet hall ? Quel est la traduction anglaise de « convertisseur numérique analogique » Réponse : Réponse : A mesurer un champs magnétique. DAC : Digital-to-Analog Converter J’utilise le convertisseur analogique numérique de mon microcontrôleur. Il me permet d’avoir un quantum (q) de 10 mV. La documentation du constructeur me donne une valeur convertie à +-0.5q. Je mesure 105mV avec ma sonde à oscilloscope. Quelle est la valeur donnée par mon convertisseur analogique numérique ? Réponse : Un valeur qui de temps en temps sera 10 ou 11 (0xA ou 0xB en hexadécimale) Une liaison série dite nullmodem demande un câble avec combien de fils au minimum ? Réponse : 3 : un signal pour l’émission, un pour la réception et un pour la masse. Deux cartes électroniques reliées en ZigBee communiquent-elles de manière filaire ou non filaire ? Une souris optique sera considérée comme un périphérique interne à un microcontrôleur ou un périphérique externe au microcontrôleur. Réponse : Communication non filaire (à 2,45 GHz) Réponse : Un périphérique externe Question en lien avec la bio : Un microcontrôleur peut-il alimenter directement un périphérique externe en 24V ? Réponse : Non, il faut passer par un relai ou un transistor. Si vous deviez comparer le quartz inséré sur une carte microcontroleur à un organe du corps humain, quel serait cet organe. Réponse : Le coeur Comment le processeur peut accéder au registre d’un périphérique ? Sur votre téléphone portable, citez le nom du processeur principale (c’est la gamme du processeur qui est demandé) A défaut citez le système d’exploitation de votre téléphone (mais vous ne gagnez qu’une led) Réponse : la majorité des registres d’un périphérique sont accessibles par une adresse définie dans l’espace adressable. Qu’est-ce qu’un « pilote de périphérique » ? Si vous n’avez pas de téléphone portable, changez de question. Réponse : Un passage chez vous dans la documentation s’impose si vous ne savez pas… Sinon, regardez rapidement sur internet Le pipeline est-t-il un périphérique du microprocesseur : Réponse : C’est un programme permettant d’exploiter les fonctionnalités du périphérique pour lequel il a été développé Réponse : Non, le pipeline fait parti du cœur du processeur Je souhaite accéder à un registre d’un périphérique 16 bits qui est à l’adresse 0x400. Je souhaite accéder à un registre d’un périphérique 32 bits qui est à l’adresse 0x500. Proposez une déclaration en C pour déclarer MON_REG qui donne directement accès à l’information de ce registre ? Proposez une déclaration en C pour déclarer MON_REGISTRE qui donne directement accès à l’information de ce registre ? Réponse : #define MON_REG (*((short*) 0x400)) Ou : volatile short MON_REG = (volatile short*) 0x400 Réponse : #define MON_REGISTRE (*((int*) 0x500) Ou : volatile int MON_REGISTRE = (volatile int*) 0x500 Un GPU est-il considéré comme un périphérique ? Existe-t-il des interruptions logicielles ? Réponse : Réponse : Oui, il existe des instructions capables de déclencher le changement de contexte. Info+. Ces instructions sont utiles dans le cadre des systèmes d’exploitation. Non, le GPU pour Graphics Processing Unit est un processeur spécifique pour le rendu graphique, rien à voir avec un périphérique. Dans mon programme, j’ai déclaré une variable int i. Par la suite j’écris : i=0x30; i=’0'; //soit 0x30 Suivant la ligne du programme, comment l’information va-t-elle être enregistrée en mémoire pour faire la distinction entre ces deux lignes? Réponse : i contient un nombre, ce nombre est identique entre les deux lignes. Ce n’est qu’un formalisme qui fait que l’une ou l’autre des écritures est identique. Il n’y a pas de distinction ! Y’a t’il une différence entre un accès mémoire en mémoire volatile et un accès mémoire en mémoire non volatile DU POINT DE VUE du PROCESSEUR ? Si oui, justifiez. Réponse : le processeur ne voit pas la différence. Une mémoire ne possède que des valeurs. Ces valeurs sont regroupées par le programmeur suivant certaines zones. Donnez deux zones couramment utilisées. Réponse : Zone de variables, zone de pile, zone de constantes, zone de tas, zone de programme. Combien de mémoire RAM y’a t’il dans le PIC18F45k20 ? -> environ 1,5 Kio -> environ 150 Kio -> environ 1,5 Mio -> environ 1,5 Gio Réponse : 1536 octets… soit environ 1,5Kio Quelle est la différence entre bit et Byte ? Réponse : 1 bit plus petite unité de mesure en informatique 1 Byte : 1 symbole, souvent ce symbole est 1 octet Note : la réponse 1 Byte = 1 octet = 8 bits est acceptée. J'ai réalisé une carte électronique avec deux PIC18F45k20 qui communiquent ensemble via leurs entrées/sorties. Un microcontroleur peut-il directement accéder à la mémoire volatile de l'autre microcontrôleur ? Réponse : Non ! info + : il faudra établir un protocole de communication pour que le premier microcontrôleur fasse une demande au deuxième qui est le seul à accéder à sa mémoire interne. void test (char * c) { static char init = 0; if(!init){ init = 1; *c++; } } Le mot clé static permet d’allouer une variable de façon permanente en mémoire. Ainsi, la variable i conserve sa valeur d’un appel à l’autre de la fonction. Quel est l’impact du mot clé static sur l’exécution des instructions suivant le if(!init) ? Pourquoi cette variable est nommée « init » ? Réponse : Sans le mot clé static, if(!init) serait toujours VRAI. On a choisi le nom init pour indiquer que ces instructions ne sont exécutées qu’une seule fois, lors du premier appel de la fonction ! J’ai une mémoire non volatile qui commence à l’adresse 0x0000 0000. Cette mémoire fait 1 Kio. Quelle est l’adresse de la dernière cellule de la mémoire, écrite en hexadécimal. Indice : 2^1 = 0x0002 2^5 = 0x0020 2^10 = 0x0400 Réponse : 1 Kio = 2^10 o, l’adresse de fin est donc 2^10 -1, soit (0b0100 0000 0000) -1, soit 0x400-1, soit 0x3FF J’ai une mémoire non volatile qui commence à l’adresse 0x0000 0000. Cette mémoire fait 4 Kio. Quelle est l’adresse de la dernière cellule de la mémoire, écrite en hexadécimal. Indice : 2^1 = 0x0002 2^6 = 0x0040 2^12 = 0x1000 Réponse : 4 Kio = 2^12 o, l’adresse de fin est donc : 2^12 -1 = 0b01 0000 0000 0000-1 = 0x1000-1 = 0x0FFF Est-ce possible de déterminer, sans avoir ni le code source, ni d’outils pour décrypter les instructions, la localisation (adresses) des sous-programmes en mémoire ? Réponse : c’est impossible. Lors de la programmation d’une carte à microcontrôleur, que fait la programmateur ? Quel bus regroupe les signaux pour que le processeur signifie à la mémoire qu’il faut écrire une donnée ou lire une donnée ou que la mémoire indique au processeur d’attendre l’arrivée de la donnée. Réponse : Réponse : Il programme la mémoire du microcontrôleur Bus de contrôle Qu’est ce qu’un plan mémoire (ou mappage mémoire) ? Quelle est la différence entre un plan mémoire et l’espace adressable ? Réponse : le plan mémoire définit l’emplacement des débuts et fins des différents boitiers mémoires. Il précise ainsi l’emplacement des types de mémoire (volatile, non volatile). Réponse : le plan mémoire contient la répartition et la disposition des blocs mémoires alors que l’espace adressable contient la répartition et la disposition des blocs mémoires mais aussi des périphériques. Les périphériques possèdent des registres qui occupent de la place sur l’ensemble des cellules qui sont adressables ! Lorsque le processeur réagit à une interruption, dans quelle zone mémoire le processeur va t-il chercher les nouvelles instructions à exécuter ? Réponse : Dans le vecteur d’interruption plus globalement dans le vecteur d’exception. Soit la déclaration suivante : const char tab[19] = {‘j’, ’’’, ’a’, ’i’, ’m’, ’e’, ’ ‘, ’l’, ’e’, ’s’, ’ ‘, ’m’, ’i’, ’c’, ’r’, ’o’, ’s’, 0, 1} ; Après avoir indiqué si cette ligne était correcte, indiquez la taille mémoire pris par la variable tab en mémoire? Réponse : Déclaration correcte. Tab sera en mémoire non volatile (const) sur 19 octets. Combien de cellules mémoires sont utilisées pour coder un ‘int’ sur une architecture comme le PIC18f45k20 ? Réponse : 2 o soit 2 cellules. Info + : la taille du « int » n’est pas spécifiée par le C : int >= short >= char Combien de cellules mémoires sont utilisées pour coder un ‘char’ sur une architecture comme le PIC18f45k20 ? Réponse : 1 o soit 1 cellule. Info + : la taille du char est indépendante de l’architecture. En C, sizeof(char) renvoie toujours ‘1’, « mais ‘1’ quoi ? » Cela n’est pas normé. Souvent, c’est ‘1’ octet. Je développe une application avec un microcontrôleur qui est électriquement correctement connecté à une clé usb. Puis-je utiliser la clé usb pour : * enregistrer des mesures et l’heure (j’ai une RTC) ? * enregistrer une partie d’un programme à exécuter par le processeur ? Réponse : Oui dans les deux cas. void chaine_copier(char * dest, char * source); void ma_fonction(void) { char chaine1[10] = {‘a’, ‘b’, ‘c’, 0 }; chaine_copier(chaine1 + 2, chaine1); } Mon programme ne fonctionne pas. Pourquoi ? Réponse : Oui c’est la même chose. Prenez une LED puis rejouez. Réponse : Il est probable que chaine_copier écrase le caractère 0 et poursuive sa boucle sans rencontrer le caractère nul. Il se peut alors qu’on recopie les caractères a et b dans toute la mémoire… ! Question en lien avec l’option TST : La notion d’empreinte mémoire d’un programme est-elle être comparée avec la notion d’occupation de l’espace mémoire adressable ? Félicitation vous venez de gagner une LED. Je souhaite enregistrer une image de 8x8 pixels en niveau de gris (8 bits). Quel espace va prendre cette image en mémoire ? Réponse : 1 pixel est codé avec 8 bits d’information, soit 1o. Ainsi : 8*8 * 8 b = 64*1o = 64 o Il faut 64 octets ou 512 bits. Vous venez de lire en mémoire le mot 0x51E0. Donnez son équivalent en binaire. Réponse : 0b1001 0001 1110 0000 La stratégie consiste à décomposer chaque chiffre écrit en hexadécimal et de le convertir en binaire, puis de mettre les chiffres bout-à-bout Définissez la notion de mémoire volatile ? Définissez la notion de mémoire non volatile ? Réponse : Une mémoire qui perd son information quand on coupe l’alimentation. Réponse : Une mémoire qui garde son information quand on coupe l’alimentation. J’ai acheté une clé USB de 16 Gio. Mon voisin vient d’en acheter une de 16 Go, mon (ma) conjoint(e), une de 16 Gib et mon colocataire, une de 16 GB. Qui a la clé USB de plus grande et de plus petite capacité mémoire ? Réponse : Plus petite : le conjoint Plus grande : moi 16 Gio = 16*1024*1024*1024 octets 16 Go = 16 GB=16*1000*1000*1000 octets Souvent 1 Byte (B) = 1 o 16 Gib = 2Gio Un mot sur une architecture 16 bits prend combien d’octet en mémoire ? Réponse : 2 octets (16 bits / 8 bits = 2 o) Donnez un exemple de mémoire non volatile. Réponses possibles : Mémoire FLASH, EEPROM, EPROM, PROM, ROM Le fichier p18f45k20.h contient les liens vers les définitions des adresses des différents registres de périphériques. Je crée un nouveau projet. Je crée un nouveau fichier toto.c Dans ce fichier toto.c je fais appel à ce fichier. Comment dois-je écrire l’inclusion de ce fichier header appartenant au dossier du compilateur ? Réponse #include <p18f45k20.h> Info + : Les guillemets sont utilisées pour les fichiers dans le dossier projet Donnez un exemple de mémoire volatile. Réponses possibles : DRAM, SRAM Quelle équipement vous semble le plus approprié pour fonctionner avec un PIC18F452 : -> un routeur Wifi -> une télécommande ZigBee -> une ampoule à économie d’énergie -> une console de jeu Réponse : Une télécommande ZigBee. L’ampoule nécessite un microcontrôleur plus léger et moins cher. La console de jeu et le routeur wifi ont besoin d’une plus grande puissance de calcul. J’ai une architecture reposant sur un processeur 8 bits. Le concept de big endian / little endian est-t-il toujours vrai ? La pile peut-elle contenir des variables locales d’un sousprogramme ? Expliquez le codage big endian. Donnez un exemple sur le nombre 0x1234ABCD et rangez-le à partir de l’adresse 0x100. Expliquez le codage little endian. Donnez un exemple sur le nombre 0x01ABCDEF et rangez-le à partir de l’adresse 0x100. Réponse : l’OCTET de poids fort d’abord. Réponse : l’OCTET de poids faible d’abord (et pas les bits de poids faibles d’abord) ! Adresse 0x100 : EF, puis 0x101 : CD, puis 0x102 : AB, puis 0x103 : 01 Réponse : big endian / little endian est un concept pour ranger chaque octet. Cependant sur une architecture 8 bits, il est possible d’avoir des entiers codés sur 16 bits. L’ordre de rangement des données a donc son importance. Réponse : OUI ! Le compilateur GCC choisit les variables locales qu’il souhaite mettre dans la pile, et celle qu’il met dans les registres... Sur une architecture ARM cortex M4, est-ce possible de lire en mémoire en une instruction le mot situé à l’adresse 0x0000 0042 ? A quoi sert un décodeur d’adresse ? Réponse : Oui c’est possible. Info+ : Certaines architectures de processeur ne peuvent accéder à un mot dont l’adresse est non multiple de 4. Réponse : A sélectionner précisément un élément (cellule mémoire, registre, etc.) défini dans l’ensemble de l’espace adressable. Adresse puis puis puis 0x100 : 12, 0x101 : 34, 0x102 : AB, 0x103 : CD Combien de cellules mémoires sont utilisées pour coder un ‘int’ sur une architecture ARM Cortex M4 ? Combien de cellules mémoires sont utilisées pour coder un ‘char’ sur une architecture ARM Cortex M4 ? Réponse : 4 o soit 4 cellules soit 1 mot. Info + : la taille du « int » n’est pas spécifiée par le C : int >= short >= char Réponse : 1 o soit 1 cellule. Info + : la taille du char est indépendante de l’architecture. En C, sizeof(char) renvoie toujours ‘1’, « mais ‘1’ quoi ? » Cela n’est pas normé. Souvent, c’est ‘1’ octet. Pourquoi le pointeur de pile a une adresse qui évolue de 4 en 4 sur une architecture type ARM alors que sur une architecture type 8051, il évolue de 1 en 1 ? Réponse : Car le pointeur de pile permet d’enregistrer dans la pile des mots (32 bits). A une adresse est associé un octet, un mot doit donc être écrit sur une adresse multiple de 4. SP doit varier de 4 en 4 sur une architecture 32 bits, alors que le processeur 8051 est une architecture 8 bits (donc de 1 en 1). Soit la déclaration suivante : const char tab[19] = {‘j’, ’’’, ’a’, ’i’, ’m’, ’e’, ’ ‘, ’l’, ’e’, ’s’, ’ ‘, ’m’, ’i’, ’c’, ’r’, ’o’, ’s’, 0, 1} ; Après avoir indiqué si cette ligne était correcte, indiquez dans quelle section de la mémoire doit être rangé ce tableau ? Réponse : Déclaration correcte. Tab sera en mémoire non volatile (const). A quoi sert la MMU (Memory Management Unit) ? Réponse : gestion des adresses mémoires. Ce composant gère la localisation d’un programme en mémoire. Ainsi l’ensemble du programme peut très bien être localisé à différents endroits dans la mémoire (adresses physiques). La MMU donne du point de vue du processeur, un bloc contigu d’espace mémoire pour le programme en exécution (adresses logiques). La MMU empêche par exemple une écriture en mémoire à une adresse qui n’appartient pas à l’environnement d’un programme. Sur une architecture ARM, détaillez la méthode pour aller lire le mot à l’adresse 0x5F3C. Réponse : LDR R0, =#0x5F3C LDR R1, [R0] La première pour enregistrer tout d’abord l’adresse dans un registre, puis LDR R1, [R0] pour lire le mot. Tolérence, MOV R0, #0x5F3C est accepté même si dans la réalité, cela ne marche pas dans la mesure où l’instruction mov prend une valeur immédiate de 8 bits + rotation sur 4 bits *2. Bob Le Ponge, étudiant de l’ESEO révise sont devoir de microprocesseurs la vieille. Il enregistre les informations en mémoire swap. Sera-t-il suffisamment paré pour son devoir sur les microprocesseurs ? Justifiez en définissant qu’est ce que Que fait l’instruction suivante ? Réponse : Non : car c’est une partie du disque dur qui sert comme mémoire volatile pour l’exécution des programmes. Réponse : Elle lit en mémoire le mot dont l’adresse est donné par la valeur du registre R5. Ce mot est ensuite copié dans le registre R4 LDR R4, [R5] la mémoire swap ? typedef struct ma_struct { char[10] nom ; int entier ; } Tstruct J’ai une variable « ma_variable » de type Tstruct qui est déjà déclarée. J’ai déjà enregistré dans R0 l’adresse de ma_variable par LDR R0, =ma_variable. Indiquez la ou les instructions assembleur sur un cortex M4 pour initialiser ma_variable.entier à 200. Réponse : MOV R1, #200 STR R1, [R0, #10] Quelle est la différence entre l’instruction MOV et l’instruction LDR ? Réponse : L’instruction MOV travaille uniquement sur les données dans les registres (dans le processeur) alors que LDR permet d’accéder à l’information qui est dans la mémoire, en dehors du processeur. Sur une architecture ARM Cortex M4, j’ai écris un programme qui contient exactement 200 instructions toutes écrites sur 32 bits. Quelle est la taille de mon programme ? Réponse : 32 bits * 200 = 6400 bits = 800 o Exprimez : 4 Mio en Kio puis en octet. Réponse : 4Mio = 4* 1024 Kio = 4*1024*1024 o Pourquoi existe-t-il une mémoire cache sur le processeur ? Réponse : Pour que le processeur puisse accéder aux données plus rapidement. (info+ : Bien souvent la mémoire est bien plus lente que la capacité du processeur à exécuter les instructions. Sans cette mémoire cache, il passe beaucoup de temps à attendre que les informations soient disponibles.) A quoi sert un DMA ? Réponse : Le DMA (direct memory acces) permet de faire des transferts mémoire sans passer par le processeur (accès direct à la mémoire). Qu’est-ce qu’une mémoire cache ? Réponse : Vous avez un trou de mémoire. Mémoire temporaire servant de tampon entre avec une autre mémoire afin de diminuer le temps d’accès à la donnée. Revenez sur votre dernière case et effectuez l’action associée à cette case. Info+: Elle est souvent réalisée avec une technologie SRAM (bascule faite avec 4-6 transistors) Une mémoire EEPROM demande 10 µs pour écrire sa donnée. Sachant que le processeur ARM Cortex M4 cadencé à 100MHz doit copier un tableau d’entier en SRAM de 100 éléments, donnez une approximation du temps passer par le processeur pour faire cette copie ? Réponse : En gros, le processeur va passer son temps à attendre que l’EEPROM écrive son information du coup, ~100*10µs soit 1ms Je souhaite accéder à un registre d’un périphérique 8 bits qui est à l’adresse 0x1000. Proposez une déclaration en C pour déclarer MON_REGISTRE qui donne directement accès à l’information de ce registre ? Réponse : #define MON_REGISTRE (*((char*) 0x1000))) Ou : volatile char MON_REGISTRE = (volatile char*) 0x1000 La caractéristique de mon PC est la suivante : * Socket LGA1155 * Dual Core * Fréquence : 2.3 GHz * Cache L2 : Taille : 2 x 256 KB * Cache L3 : Taille : 3 MB Que signifie Cache L2 et Cache L3 ? Réponse : C’est la dénomination de 3 niveaux de mémoire cache. La troisième a une taille de 3Mo. Qu’est ce que la cryptographie asymétrique ou à clé publique ? Réponse : Méthode de chiffrement ou l’expéditeur chiffre son message avec une clé publique (diffusée à tous) et le destinateur le décode avec une clé privé (confidentielle) Question spéciale, thématique option NRJ : Qu’est ce que la directive RoHS ? Réponse : Restriction of the use of certain hazardous substance in electrical and electronic equipment. Règlementation qui vise à réduire l’utilisation de substance dangereuse comme le plomb, le mercure, le cadmium, le chrome, etc. et bientôt le PVC dans les équipements électriques et électroniques. Qu’est-ce qu’une table de hachage ? Réponse : Une structure de données associant une clé (numéro avec un élément). L’accès à l’élément se fait toujours via sa clé qui est disponible via une fonction de hachage. Quelle est l’unité la plus petite entre l’octet et le bit ? Réponse : 1octet = 8bits =>le bit est le plus petit Qu’est-ce qui différencie le servomoteur à rotation continue d’un moteur à courant continue ? Réponse : Le servomoteur peut s’opposer à une contrainte à l’état de repos contrairement au moteur à courant continue. Info+ : le seromoteur est un moteur asservi en position. La commande n’est pas la même (train d’impulsion contre un signal PWM variant de 0 à 100% pour un moteur CC) Comme le montre ces données, les processeurs graphiques sont plus puissants que les processeurs principaux mis dans les ordinateurs. Pourquoi ne les retrouvons nous pas encore comme processeur principal d’ordinateur ? Réponse : Les processeurs graphiques sont spécifiques pour certaines tâches. Un système d’exploitation serait plus lent à exécuter sur un processeur graphique Comment comparer la puissance de calcul de deux processeurs différents d’une même architecture ? Réponse : On peut utiliser l’unité « MIPS » (million d’instructions par seconde) ou « FLOPS » (floating point operations per second). Pour comparer deux processeurs de deux architectures différentes, ces unités ne suffisent pas. Sur des processeurs puissants/ complexes, c’est souvent par la mesure que l’on compare deux processeurs (benchmark). Est-il possible de reprogrammer un microcontrôleur par l’intermédiaire d’une simple communication série ? Réponse : Oui, il faut utiliser un bootloader qui utilise la liaison série. On entend parler des architectures 8 bits, 16 bits 32 bits et maintenant 64 bits ? Est-il possible de créer une architecture 12 bits, 31 bits… (qui n’est pas une puissance de 2) ? Pourquoi les fabricants de processeur ne font-ils pas tout de suite des architectures de 1024 bits (par exemple) ? Réponse : Oui, c’est possible. Il existe d’ailleurs des architectures 12 bits, 24 bits, 31 bits... Réponse : problème de coût et de capacité d’intégration des éléments sur une puce. Réponse : ARM (société ARM), x86 (sociétés Intel, AMD, Via, etc.), PowerPC (IBM, Motorola), 68000 (autres dérivés : coldfire, dragonball) (Motorola), Z80 (Zilog), Sparc (Sun), MIPS, DEC Alpha (Compac et Hewlett Packard), Itanium (Intel), Crusoe (Transmeta), Super H (Hitachi), MCore (Motorola) Soit deux microprocesseurs 32 bits identiques. Le premier est cadencé à 1 MHz et le deuxième à 40 MHz. En considérant ces deux microprocesseurs dans leur environnement (avec de la mémoire, des périphériques, etc.), peut-on dire que notre programme ira 40 fois plus vite avec une fréquence de 40 MHz ? Justifiez. En mini-projet C j’ai écrit un super jeu (bataille navale, etc…). Est-ce que je peux me servir directement du fichier généré à la compilation pour le mettre sur la carte du miniprojet microprocesseurs. Justifiez. Réponse : Oui et non. Oui si on considère que les instructions et les informations qui sont dans la mémoire et les périphériques n’ont pas de temps de latence, c’est-à-dire que l’information arrive tout de suite. Dans la réalité, le processeur passe du temps à attendre l’instruction ou la donnée provenant de la mémoire ou du périphérique. Le programme ira donc plus vite, mais pas 40x plus vite. Réponse : Non car le programme écrit lors du miniprojet C est écrit pour que le programme s’exécute sur une architecture x86. Or la carte simtec, c’est une architecture ARM, différente donc. http://en.wikipedia.org/wiki/31-bit Qu’est ce qu’un FPU (floating point unit) ? Réponse : unité qui effectue des opérations sur des nombres à virgule flottante, comme l’UAL le fait avec des nombres entiers. Soit deux microprocesseurs 32 bits de deux constructeurs différents. Ils sont tous les deux cadencés à 100 MHz. Les performances serontelles les mêmes ? Justifiez. Réponse : Non, cela dépend de l’architecture de chaque processeur. Donnez 3 familles de microprocesseurs. On ne demande pas les gammes dans les familles. Qu’est ce que l’overclocking ? Réponse : L’overclocking consiste à augmenter la fréquence de cadencement d’un processeur dans le but d’accélérer le traitement des instructions. Mais rappelez vous que le but n’est pas toujours d’aller vite… Qu’est ce que la transmission de données à flux tendu dans le cadre d’une communication RS232 asynchone ? Réponse : Dès qu’une trame a transmis son bit de stop, la ligne recommence aussitôt une nouvelle trame sans avoir de temps pour laisser la ligne à l’état de repos. Question en lien avec le cours d’architecture avancé dans ASTRE ou EE : Existe-t-il une différence entre un SOC (System on Chip) et un microcontrôleur ? Réponse : Un SOC est système complet pour répondre à une application (avec plusieurs microcontrôleur par exemple et d’autres périphériques), alors que le microcontrôleur pourra dans certain cas ne répondre qu’à une partie de l’application. Il est donc parfois possible de considérer le microcontrôleur comme SOC Quel est la différence entre la pile et le tas (stack vs heap) ? Quel est le préfixe décimal de 10^21 ? (ex : le préfixe décimal de 10^3 est ‘kilo’) Réponse : La pile contient les variables locales non statiques d’une fonction. Le tas contient les variables allouées dynamiquement. (malloc… !) Question en lien avec l’informatique Réponse : Le zetta Une architecture x86 est-elle une architecture 16 bits, 32 bits, 64 bits ? Qu’est ce qu’un système d’exploitation vis-à-vis du processeur ? Réponse : Réponse : C’est un simple programme Les trois réponses ! Cette architecture définie par Intel ne dépend pas de la largeur du bus de données. Qu’est ce qu’une modulation de type PDM (Pulse-density modulation) pour un signal audio ? Réponse : Une modulation qui code un signal analogique en signal numérique Qu’est ce qu’un contrôleur ethernet ? Réponse : C’est un circuit spécifique utilisé pour la gestion du protocole ethernet Qu’est-ce que le bit banding ? Réponse : C’est une manière d’accéder à un bit particulier dans l’espace adressable grâce à un alias sur un mot. Dans le chapitre power de la documentation de mon microcontrôleur, il parle de « Programmable Voltage Detector (PVD) ». You can use the PVD to monitor the VDD power supply by comparing it to a threshold selected by the PLS[2:0] bits in the PWR_CR register. Réponse : A alerter le microprocesseur quand la tension arrive en dessous d’un certain seuil afin de prévenir l’éventuel arrêt de l’alimentation. Qu’est ce que l’USB on the GO (USB OTG) ? L’ARM Cortex M4 mentionnent trois bus en plus du bus de contrôle et du bus d’adresse. Ils sont nommés : I-Bus, D-Bus et un S-Bus. En mettant le S-Bus (System Bus) de côté à quoi servent les deux autres d’après vous : Réponse : Norme USB permettant au périphérique connecté d’agir comme un maître ou un esclave. (Host ou Device) Qu’est-ce qu’un périphérique DCMI (Digital camera interface) ? Réponse : Un périphérique destiné à gérer un module caméra Réponse : I-bus : bus pour les instructions, D-Bus : bus pour les données Comment s’appelle le contrôleur d’exception rattaché à l’ARM Cortex M4 ? Réponse : NVIC : nested vector interrupt controller N°4 N°3 N°1 N°2 Comment obtenir un nombre pseudo aléatoire sur un système simple à processeur ? Quels sont les termes anglais désignant le bit de poids fort et le bit de poids faible sur un mot. Dans une communication série entre deux ordinateurs, expliquer pourquoi il faut prendre un câble croisé plutôt qu’un câble droit. N°6 N°5 Pourquoi existe-t-il une convention AAPCS défini par ARM ? Dans une communication I2C, expliquez pourquoi il faut des résistances de tirage sur les lignes de communication. Quelle représentation déclarative peut-on donner de la pile ? (Comment faire en C pour déclarer cette zone de pile ?) Réponse: La pile est un tableau de variable. Info + : Si l’on voulait déclarer la pile en C : int stack[1024]; int * stack_pointer = stack+1024; N°8 N°7 Qu’est ce qu’une contrainte d’alignement dans le contexte des microprocesseurs (Question spéciale, thématique option ASTRE.) Quelle est la différence entre un système rapide et un système temps réel ? N° 10 N°09 Que permet de faire un contrôleur d’interruption ? Quelle caractéristique différencie un programme écrit en java par rapport à un un programme écrit en C++, C ou assembleur ? N°14 N°13 Décrivez, avec les grandes lignes, deux manières pour qu’un processeur puisse exécuter plus d’instructions par seconde ? J’ai une mémoire non volatile qui commence à l’adresse 0x0000 (bus @ sur 16 b). Cette mémoire fait 1 Kio. Quelle est l’unique équation du signal logique CS (chip select) qui permet de sélectionner ce bloc mémoire. Le signal CS est valide sur niveau haut. Indice : 2^1 = 0x0002 2^5 = 0x0020 2^10 = 0x0400 N°12 N°11 Combien de cases comporte le jeu clac ton proc ? Nom Citez 8 périphériques d’un microcontrôleur et 4 grandeurs physiques qui peuvent être mesurées par des capteurs analogiques ou numériques. Prénom Points Position Prénom Points Position Nom N°4 N°1 Comment obtenir un nombre pseudo aléatoire sur un système simple à processeur ? Réponse : Certains microcontrôleurs disposent d’un périphérique pour générer un nombre aléatoire. Dans le cas contraire, il faut se débrouiller en lisant la valeur d’un compteur lorsque l’utilisateur effectue une action (appuie bouton par exemple) N°3 N°2 Quels sont les termes anglais désignant le bit de poids fort et le bit de poids faible sur un mot. Réponse : MSB et LSB pour Most/Least Significant Bit) N°6 N°5 Pourquoi existe-t-il une convention AAPCS défini par ARM ? Réponse : Pour assurer l’interopérabilité des différents programmes écrits par les programmeurs et générés par les compilateurs. (Norme sur l’utilisation des registres, le passage de paramètre…) Dans un communication série entre deux ordinateurs, expliquer pourquoi il faut prendre un câble croisé plutôt qu’un câble droit. Réponse : Comme il faut relier le signal de transmission du circuit 1 sur le signal de réception du circuit 2 et inversement et que les deux circuits sont identiques, il est nécessaire d’utiliser un câble qui croise les fils ! N°7 Dans une communication I2C, expliquez pourquoi il faut des résistances de tirage sur les lignes de communication. Qu’est ce qu’une contrainte d’alignement dans le contexte des microprocesseurs Réponse : Le bus I2C est un protocole de communication entre plusieurs circuits électroniques. Pour éviter les conflits électriques, les sorties sont à collecteur ouvert, (transistor avec le collecteur relié directement sur la broche du circuit. Il faut donc une charge externe (résistance de pull-up) pour que le circuit soit polarisé et rendre le dialogue possible Réponse : Contrainte sur l’adresse d’un élément en mémoire par rapport à son type et à l’architecture du processeur. Par exemple, certains processeurs 32 bits ne peuvent accéder à une variable de type int sur 32 bits qu’à la condition d’avoir l’adresse de la variable multiple de 4 Quelle représentation déclarative peut-on donner de la pile en C ? (Comment faire en C pour déclarer cette zone de pile ?) Réponse: La pile est un tableau de variable. Si l’on voulait déclarer la pile en C : int stack[1024]; int * stack_pointer = stack+1024; //stack_pointer évolue en décrémentant sa valeur lors d’un empilement => il faut commencer à l’adresse + taille pour que lors du premier empilement nous écrivions correctement dans la pile N°8 (Question spéciale, thématique option ASTRE.) Quelle est la différence entre un système rapide et un système temps réel ? Réponse : Les deux notions ne sont pas comparables. Un système temps réel se caractérise par la prise en compte de contraintes temporelles dont le respect est aussi important que l'exactitude du résultat. Plus qu'aller "vite", il faut exécuter chaque portion de code "au bon moment". N°12 Citez 8 périphériques d’un microcontrôleur et 4 grandeurs physiques qui peuvent être mesurées par des capteurs analogiques ou numériques. N° 10 N°09 Que permet de faire un contrôleur d’interruption ? Réponse : Il gère l’ensemble des sources d’interruption qui arrive à lui. N°13 Décrivez, avec les grandes lignes, deux manières pour qu’un processeur puisse exécuter plus d’instructions par seconde ? Réponse : Pipeline, finesse de gravure, optimisation du programme, cadence processeur, architecture superscalaire, multiprocesseur Quelle caractéristique différencie un programme écrit en java par rapport à un un programme écrit en C++, C ou assembleur ? Réponse : Un programme en java s’exécute sur une machine virtuelle s’affranchissant théoriquement d’écrire un programme spécifique pour un type de processeur et système d’exploitation. N°14 J’ai une mémoire non volatile qui commence à l’adresse 0x0000 (bus @ sur 16 b). Cette mémoire fait 1 Kio. Quelle est l’unique équation du signal logique CS (chip select) qui permet de sélectionner ce bloc mémoire. Le signal CS est valide sur niveau haut. Réponse : \A15.\A14.\A13\.A12.\A11.\ A10 N°11 Combien de cases comporte le jeu clac ton proc ? Réponses : 95 cases. Réponse : ADC, DAC, GPIO, UART, TIMER, PWM, RTC, SPI, I2S, SDIO, USB, DMA, contrôleur LCD, contrôleur caméra, ethernet, I2C, CAN, LIN, générateur de nombre aléatoire, comparateur… Capteurs : contact, angle, contrainte, courant, champ magnétique, déplacement, distance, lumière niveau, pression, température, force, son...