Systèmes embarqués et firmware
Apprenez les bases des systèmes embarqués et du firmware avec des QCM : accès aux registres et manipulation de bits, GPIO et timers, pièges des gestionnaires d'interruption, UART, SPI et I2C, RTOS et watchdogs.
Systèmes embarqués et firmware : points clés
Dans les appareils électroménagers, les voitures et les équipements industriels, un firmware exécuté sur des microcontrôleurs pilote l'appareil. Le firmware lit et écrit directement les registres des périphériques, en modifiant des bits précis par manipulation de bits, pour piloter les E/S des broches (GPIO), les timers et les périphériques de communication.
Le code embarqué a ses propres règles, comme garder les gestionnaires d'interruption courts et déclarer volatile les variables partagées. Des communications UART, SPI et I2C et des RTOS qui commutent les tâches selon leur priorité jusqu'au bootloader exécuté en premier à la mise sous tension et au watchdog qui rétablit le système après un emballement du code, ce thème couvre le logiciel le plus proche du matériel.
Toutes les questions sur Systèmes embarqués et firmware (50)
- En langage C, quelle écriture met à 1 uniquement le bit 3 du registre reg sans modifier les autres bits ?
- En langage C, quelle écriture met à 0 uniquement le bit 3 du registre reg sans modifier les autres bits ?
- On souhaite basculer, à chaque exécution, entre allumage et extinction le bit d'une broche de sortie reliée à une LED. Quelle écriture C est correcte ?
- Quelle condition C teste correctement si le bit 5 du registre d'entrée in vaut 1 ?
- Le code ci-dessus réécrit un champ de plusieurs bits du registre reg. Que fait-il ?
- Pendant que le traitement principal manipule un bit de registre par « reg |= mask; » (lecture-modification-écriture), si un gestionnaire d'interruption modifie un autre bit du même registre, quelle combinaison de problème possible et de remède est correcte ?
- Un interrupteur seul est relié à une broche d'entrée d'un microcontrôleur, sans résistance de tirage vers le haut ou vers le bas. Que peut-il se passer lorsque l'interrupteur est ouvert ?
- Lors de l'utilisation d'une broche GPIO (entrée-sortie à usage général) d'un microcontrôleur, que faut-il régler en premier ?
- Comment appelle-t-on le phénomène par lequel, à l'appui sur un interrupteur mécanique, les contacts rebondissent et alternent rapidement plusieurs fois entre fermé et ouvert ?
- Quelle méthode est la plus appropriée pour éliminer par logiciel le rebond d'un interrupteur ?
- Un temporisateur compte une horloge de 16 MHz divisée par 16 par le prédiviseur et déclenche une interruption tous les 1000 comptes. Quel est l'intervalle entre interruptions ?
- Pour un signal PWM de période 1000 comptes, la sortie est à 1 (High) pendant 250 comptes par période. Quel est le rapport cyclique ?
- Quelle méthode est couramment utilisée par un microcontrôleur pour régler la luminosité d'une LED ou la vitesse de rotation d'un moteur ?
- Quelle utilisation de la fonction de capture d'entrée (input capture) du temporisateur d'un microcontrôleur est correcte ?
- Que convient-il le plus d'éviter dans un gestionnaire d'interruption ?
- Lorsque le programme ci-dessus est compilé avec optimisation, led_on() peut ne pas être appelée même si l'interruption de temporisateur survient. Quelle combinaison de cause et de remède est correcte ?
- Sur un microcontrôleur 8 bits, une interruption de temporisateur incrémente une variable 32 bits ticks, et le traitement principal lit ticks pour calculer le temps écoulé. Quelle est la cause des valeurs parfois très erronées ?
- Quelle caractéristique de la communication série par UART est correcte ?
- Pour un UART à 115200 bps au format 8 bits de données, sans parité, 1 bit de stop (8N1), quelle valeur est la plus proche du nombre d'octets transmissibles par seconde ?
- Un léger écart de débit en bauds entre émetteur et récepteur UART peut produire des caractères corrompus. Pourquoi l'écart admissible est-il limité à quelques % environ ?
- Quelle caractéristique de la communication SPI est correcte ?
- Quelle combinaison correspond aux quatre signaux couramment utilisés en SPI ?
- Lorsqu'un composant SPI raccordé ne renvoie pas de données correctes, quel réglage convient-il le plus de vérifier ?
- Quelle caractéristique de la communication I2C est correcte ?
- En I2C, comment le récepteur d'un octet signale-t-il qu'il l'a reçu ?
- On veut raccorder deux capteurs de température I2C de même référence sur le même bus I2C, mais ils ont la même adresse. Quel remède est correct ?
- Quelle comparaison de l'UART, de la SPI et de l'I2C est correcte ?
- Parmi les méthodes de connaissance de l'état d'un périphérique, quelle différence entre scrutation (polling) et interruption est correcte ?
- Quelle description de l'organisation en « super-boucle », fréquente dans les programmes de microcontrôleur sans système d'exploitation, est correcte ?
- Quel est le principal objectif de l'utilisation d'un RTOS (système d'exploitation temps réel) dans un équipement embarqué ?
- Dans un RTOS préemptif, pendant l'exécution d'une tâche de faible priorité, une tâche de haute priorité reçoit les données qu'elle attendait et devient exécutable. Que se passe-t-il généralement ?
- Quelle description de l'inversion de priorité dans un RTOS est correcte ?
- Quel est le principe correct de « l'héritage de priorité », utilisé pour prévenir l'inversion de priorité ?
- Dans un RTOS, quel est l'avantage d'utiliser une file (file de messages) pour transmettre des données de la tâche de lecture des capteurs à la tâche d'affichage ?
- Quelle différence entre temps réel dur et temps réel souple est correcte ?
- Pourquoi est-il déconseillé de réarmer (« kicker ») inconditionnellement le chien de garde dans le gestionnaire d'interruption de temporisateur appelé toutes les 1 ms ?
- Quel est le rôle du chargeur d'amorçage (bootloader) d'un équipement embarqué ?
- Pour un équipement dont le micrologiciel est mis à jour par radio (mise à jour OTA), pourquoi prévoit-on deux emplacements (banque A et banque B) pour le micrologiciel en mémoire flash ?
- Dans un équipement embarqué fonctionnant sur pile, quel est le principal objectif du mode veille du microcontrôleur ?
- Un capteur fonctionne à 10 mA pendant seulement 1 % du temps et dort à 10 µA pendant les 99 % restants. Quelle valeur est la plus proche du courant moyen ?
- Pourquoi le micrologiciel d'un petit microcontrôleur évite-t-il souvent l'allocation dynamique de mémoire, comme malloc ?
- Sur un petit microcontrôleur sans MMU, quelle précaution concernant la surconsommation de pile est correcte ?
- Un convertisseur analogique-numérique 12 bits de tension de référence 3.3 V renvoie la valeur 2048. Quelle valeur est la plus proche de la tension d'entrée ?
- Lorsqu'un microcontrôleur acquiert à intervalle régulier un grand nombre de résultats de conversion analogique-numérique, quel est l'avantage d'utiliser le DMA ?
- Lorsqu'on représente les registres d'un périphérique par une structure C à champs de bits, à quoi faut-il prendre garde ?
- Sur de nombreux microcontrôleurs, quel est l'avantage de déclarer avec const les grandes tables non modifiées (données de police, etc.) ?
- Que permettent les interfaces de débogage comme JTAG ou SWD ?
- On veut effectuer un calcul de commande toutes les 1 ms. Quelle implémentation est la plus appropriée sur un microcontrôleur sans système d'exploitation ?
- Quel est le rôle de la détection de baisse de tension (BOD, réinitialisation sur baisse de tension) d'un microcontrôleur ?
- Sur un microcontrôleur à interruptions hiérarchisées, une interruption de haute priorité survient pendant l'exécution du gestionnaire d'une interruption de faible priorité. Que se passe-t-il généralement (imbrication des interruptions autorisée) ?
Comparatifs sur ce thème
- I2C vs SPI vs UART : différences et cas d'utilisationI2C, SPI et UART comparés dans un tableau : nombre de fils, horloge, vitesse, topologie, adressage, contrôle …
- MCU vs MPU : microcontrôleur et microprocesseur comparésMCU et MPU comparés dans un tableau : intégration, fréquence d'horloge, mémoire, système d'exploitation, comp…
- Interruption vs polling : différences et cas d'utilisationInterruption et polling comparés dans un tableau : fonctionnement, utilisation du CPU, latence, surcoût, comp…
Autres thèmes de Systèmes informatiques
- Arithmétique des ordinateurs IEEE 754, virgule fixe, erreur d'arrondi
- ISA et assembleur RISC-V, modes d'adressage, conventions d'appel
- Compilateurs Analyse syntaxique, SSA, optimisation, registres
- Éditeurs de liens, chargeurs et exécutables ELF, symboles, relocalisation, liaison dynamique
- Système d'exploitation et matériel Interruptions, appels système, défauts de page
- Hiérarchie mémoire Cache, remplacement, trois types de défauts
- Multicœur et synchronisation MESI, instructions atomiques, barrières mémoire
- Programmation GPU Warps, mémoire partagée, coalescence, occupation
- Pile matérielle et logicielle de l'IA Inférence/entraînement, quantification, roofline
- HDL et vérification Verilog, latches, machines à états, testbenches
- Interfaces d'E/S et bus PCIe, USB, SerDes, CXL
- Analyse des performances Loi d'Amdahl, CPI, goulots d'étranglement
- Sécurité matérielle Canaux auxiliaires, secure boot, TEE, PUF
- Gestion de l'énergie DVFS, power gating, états de veille