Systèmes embarqués - Conditions

Compteur de programme

Le compteur de programme est un registre de 16 ou 32 bits qui contient l'adresse de la prochaine instruction à exécuter. Le PC incrémente automatiquement à l'emplacement de mémoire séquentiel suivant chaque fois qu'une instruction est extraite. Les opérations de branchement, de saut et d'interruption chargent le compteur de programmes avec une adresse autre que l'emplacement séquentiel suivant.

L'activation d'une réinitialisation à la mise sous tension entraînera la perte de toutes les valeurs du registre. Cela signifie que la valeur du PC (compteur de programme) est 0 lors de la réinitialisation, forçant la CPU à extraire le premier opcode de l'emplacement de mémoire ROM 0000. Cela signifie que nous devons placer le premier octet de upcode dans l'emplacement ROM 0000 car c'est là que le Le processeur s'attend à trouver la première instruction

Réinitialiser le vecteur

La signification du vecteur de réinitialisation est qu'il pointe le processeur vers l'adresse mémoire qui contient la première instruction du micrologiciel. Sans le vecteur de réinitialisation, le processeur ne saurait pas par où commencer l'exécution. Lors de la réinitialisation, le processeur charge le compteur de programmes (PC) avec la valeur vectorielle de réinitialisation à partir d'un emplacement de mémoire prédéfini. Sur l'architecture CPU08, c'est à l'emplacement $ FFFE: $ FFFF.

Lorsque le vecteur de réinitialisation n'est pas nécessaire, les développeurs le prennent normalement pour acquis et ne programment pas dans l'image finale. En conséquence, le processeur ne démarre pas sur le produit final. C'est une erreur courante qui se produit pendant la phase de débogage.

Pointeur de pile

Stack est implémenté dans la RAM et un registre CPU est utilisé pour y accéder appelé registre SP (Stack Pointer). Le registre SP est un registre à 8 bits et peut adresser des adresses de mémoire comprises entre 00h et FFh. Initialement, le registre SP contient la valeur 07 pour pointer vers l'emplacement 08 comme premier emplacement utilisé pour la pile par le 8051.

Lorsque le contenu d'un registre de CPU est stocké dans une pile, il s'agit d'une opération PUSH. Lorsque le contenu d'une pile est stocké dans un registre CPU, cela s'appelle une opération POP. En d'autres termes, un registre est poussé sur la pile pour le sauvegarder et sorti de la pile pour le récupérer.

Boucle infinie

Une boucle infinie ou une boucle sans fin peut être identifiée comme une séquence d'instructions dans un programme informatique qui s'exécute sans fin dans une boucle, pour les raisons suivantes -

  • boucle sans condition de fin.
  • boucle avec une condition de fin qui ne peut jamais être remplie.
  • boucle avec une condition de fin qui provoque le redémarrage de la boucle.

De telles boucles infinies empêchaient normalement les anciens systèmes d'exploitation de répondre, car une boucle infinie consomme tout le temps processeur disponible. Les opérations d'E / S en attente d'entrées utilisateur sont également appelées "boucles infinies". Une des causes possibles du «gel» d'un ordinateur est une boucle infinie; d'autres causes incluentdeadlock et access violations.

Les systèmes embarqués, contrairement à un PC, ne «quittent» jamais une application. Ils restent inactifs à travers une boucle infinie en attendant qu'un événement se produise sous la forme d'une interruption ou d'unpre-scheduled task. Afin d'économiser de l'énergie, certains processeurs entrentsleep ou wait modes au lieu de tourner au ralenti à travers une boucle infinie, mais ils sortiront de ce mode sur une minuterie ou une interruption externe.

Les interruptions

Les interruptions sont principalement des mécanismes matériels qui indiquent au programme qu'un événement s'est produit. Ils peuvent survenir à tout moment et sont donc asynchrones par rapport au déroulement du programme. Ils nécessitent un traitement spécial par le processeur et sont finalement traités par une routine de service d'interruption (ISR) correspondante. Les interruptions doivent être traitées rapidement. Si vous prenez trop de temps pour traiter une interruption, vous risquez de manquer une autre interruption.

Little Endian Vs Big Endian

Bien que les nombres soient toujours affichés de la même manière, ils ne sont pas stockés de la même manière en mémoire. Les machines Big-Endian stockent l'octet de données le plus significatif dans l'adresse mémoire la plus basse. Une machine Big-Endian stocke 0x12345678 comme -

ADD+0: 0x12 
ADD+1: 0x34 
ADD+2: 0x56 
ADD+3: 0x78

Les machines Little-Endian, en revanche, stockent l'octet de données le moins significatif dans l'adresse mémoire la plus basse. Une machine Little-Endian stocke 0x12345678 comme -

ADD+0: 0x78 
ADD+1: 0x56 
ADD+2: 0x34 
ADD+3: 0x12