Systèmes embarqués et firmware

Pourquoi le micrologiciel d'un petit microcontrôleur évite-t-il souvent l'allocation dynamique de mémoire, comme malloc ?

  1. AParce que les fonctions C sont totalement inutilisables sur microcontrôleur
  2. BParce que la RAM est petite, que la fragmentation peut faire échouer l'allocation et que la durée d'allocation est difficile à prévoir
  3. CParce que la mémoire allouée dynamiquement persiste hors tension
Afficher la réponse et l'explication

Réponse : B. Parce que la RAM est petite, que la fragmentation peut faire échouer l'allocation et que la durée d'allocation est difficile à prévoir

Sur un microcontrôleur ne disposant que de quelques KB à quelques centaines de KB de RAM, des allocations et libérations répétées fragmentent l'espace libre, et une grande allocation peut échouer alors que le total disponible suffit. Pour un équipement fonctionnant des mois durant, le risque d'un échec à terme existe. De plus, la durée d'allocation n'étant pas constante, elle convient mal aux traitements temps réel. On privilégie donc une conception qui alloue statiquement dès le départ la mémoire nécessaire.

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

Autres questions sur Systèmes embarqués et firmware

  1. Sur un petit microcontrôleur sans MMU, quelle précaution concernant la surconsommation de pile est correcte ?
  2. 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 ?
  3. 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 ?
  4. Lorsqu'on représente les registres d'un périphérique par une structure C à champs de bits, à quoi faut-il prendre garde ?
  5. 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.) ?

Comparatifs sur ce thème