Systèmes embarqués et firmware

Lorsqu'on représente les registres d'un périphérique par une structure C à champs de bits, à quoi faut-il prendre garde ?

  1. ALes champs de bits rendent toujours le programme deux fois plus rapide
  2. BL'ordre des bits notamment peut varier selon le compilateur, si bien qu'un autre compilateur peut manipuler des bits différents de ceux prévus
  3. CLes champs de bits ne peuvent pas représenter de valeurs de plus de 8 bits
Afficher la réponse et l'explication

Réponse : B. L'ordre des bits notamment peut varier selon le compilateur, si bien qu'un autre compilateur peut manipuler des bits différents de ceux prévus

Les champs de bits rendent le code lisible, mais la norme C laisse à l'implémentation l'ordre des bits dans la structure (du poids fort ou du poids faible), le traitement des champs chevauchant une frontière, la largeur des accès, etc. Un code correct avec un compilateur peut donc lire ou écrire des bits différents avec un autre compilateur ou un autre processeur. Les en-têtes fournis par les fabricants de microcontrôleurs sont le plus souvent écrits avec des masques et des décalages.

S'entraîner sur ce thème Retour au thème

Autres questions sur Systèmes embarqués et firmware

  1. 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.) ?
  2. Que permettent les interfaces de débogage comme JTAG ou SWD ?
  3. 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 ?
  4. Quel est le rôle de la détection de baisse de tension (BOD, réinitialisation sur baisse de tension) d'un microcontrôleur ?
  5. 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