Sistemas integrados - Condiciones

Contador de programa

El contador de programa es un registro de 16 o 32 bits que contiene la dirección de la siguiente instrucción que se ejecutará. La PC aumenta automáticamente a la siguiente ubicación de memoria secuencial cada vez que se obtiene una instrucción. Las operaciones de bifurcación, salto e interrupción cargan el Contador de programa con una dirección distinta a la siguiente ubicación secuencial.

La activación de un reinicio de encendido hará que se pierdan todos los valores del registro. Significa que el valor de la PC (contador de programa) es 0 al reiniciar, lo que obliga a la CPU a buscar el primer código de operación de la ubicación de memoria ROM 0000. Significa que debemos colocar el primer byte de código ascendente en la ubicación ROM 0000 porque es donde La CPU espera encontrar la primera instrucción

Restablecer vector

El significado del vector de reinicio es que apunta al procesador a la dirección de memoria que contiene la primera instrucción del firmware. Sin el vector de reinicio, el procesador no sabría dónde comenzar la ejecución. Al reiniciar, el procesador carga el Contador de programa (PC) con el valor del vector de reinicio desde una ubicación de memoria predefinida. En la arquitectura CPU08, se encuentra en la ubicación $ FFFE: $ FFFF.

Cuando el vector de reinicio no es necesario, los desarrolladores normalmente lo dan por sentado y no programan en la imagen final. Como resultado, el procesador no se inicia con el producto final. Es un error común que se produce durante la fase de depuración.

Puntero de pila

La pila se implementa en la RAM y se usa un registro de la CPU para acceder a ella llamada registro SP (Stack Pointer). El registro SP es un registro de 8 bits y puede direccionar direcciones de memoria del rango 00h a FFh. Inicialmente, el registro SP contiene el valor 07 para señalar la ubicación 08 como la primera ubicación que utiliza el 8051 para la pila.

Cuando el contenido de un registro de CPU se almacena en una pila, se denomina operación PUSH. Cuando el contenido de una pila se almacena en un registro de CPU, se denomina operación POP. En otras palabras, se inserta un registro en la pila para guardarlo y se extrae de la pila para recuperarlo.

Bucle infinito

Un bucle infinito o un bucle sin fin se pueden identificar como una secuencia de instrucciones en un programa de computadora que se ejecuta sin fin en un bucle, debido a las siguientes razones:

  • bucle sin condición de terminación.
  • bucle con una condición de terminación que nunca se puede cumplir.
  • bucle con una condición de terminación que hace que el bucle comience de nuevo.

Estos bucles infinitos normalmente provocaban que los sistemas operativos más antiguos dejaran de responder, ya que un bucle infinito consume todo el tiempo disponible del procesador. Las operaciones de E / S que esperan entradas del usuario también se denominan "bucles infinitos". Una posible causa de que una computadora se "congele" es un bucle infinito; otras causas incluyendeadlock y access violations.

Los sistemas integrados, a diferencia de una PC, nunca "salen" de una aplicación. Permanecen inactivos a través de un bucle infinito esperando que se produzca un evento en forma de interrupción opre-scheduled task. Para ahorrar energía, algunos procesadores ingresansleep o wait modes en lugar de permanecer inactivo a través de un bucle infinito, pero saldrán de este modo con un temporizador o una interrupción externa.

Interrupciones

Las interrupciones son principalmente mecanismos de hardware que le indican al programa que ha ocurrido un evento. Pueden ocurrir en cualquier momento y, por lo tanto, son asíncronos al flujo del programa. Requieren un manejo especial por parte del procesador y, en última instancia, son manejados por una Rutina de servicio de interrupción (ISR) correspondiente. Las interrupciones deben manejarse rápidamente. Si se toma demasiado tiempo para reparar una interrupción, es posible que pierda otra interrupción.

Little Endian Vs Big Endian

Aunque los números siempre se muestran de la misma forma, no se almacenan de la misma forma en la memoria. Las máquinas Big-Endian almacenan el byte de datos más significativo en la dirección de memoria más baja. Una máquina Big-Endian almacena 0x12345678 como -

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

Las máquinas Little-Endian, por otro lado, almacenan el byte de datos menos significativo en la dirección de memoria más baja. Una máquina Little-Endian almacena 0x12345678 como -

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