Análisis de Interrupciones y E/S en Sistemas Embebidos
Análisis de Interrupciones y E/S
Rutina RTI y Manejo de Interrupciones
Cuando la subrutina RTI recibe 0 como resultado de invocar a LINEA con el valor 1 pasado como parámetro en D0, esto indica una situación inesperada según la especificación del proyecto. En el proyecto de E/S, una interrupción de transmisión por el puerto B se atiende cuando el puerto está listo para transmitir, las interrupciones están habilitadas en el registro de estado y el bit 4 de IMR (TxRDYB) está activo.
Afirmaciones sobre la Rutina PRINT
- La rutina PRINT debe habilitar las interrupciones de transmisión en IMR para una línea si se ha copiado algún carácter 0x0D (retorno de carro) del buffer que se pasa como parámetro al buffer interno.
- Cuando la subrutina PRINT recibe 0XFFFFFFFFF como resultado de invocar a LEECAR o ESCCAR con el valor 2 o 1 pasado como parámetro, esto no puede ocurrir según la especificación del proyecto.
Afirmaciones sobre la Rutina SCAN
- Cuando se llama a SCAN con el parámetro tamaño a 3000, se debe devolver el valor 0 en D0.
Opciones sobre la Rutina RTI
Marque la afirmación que considere correcta:
- La RTI debe salvaguardar los registros que utiliza.
- La RTI debe generar un nuevo marco de pila.
- La RTI debe identificar la fuente de la interrupción.
- Ninguna de las otras respuestas es correcta.
Manejo de Interrupciones y E/S
Suponga que las posiciones de memoria $0000000008 y siguientes contienen los siguientes datos de 32 bits: $1000, $1002 y $1004… y BREAK (valor 1). Marque la afirmación que considere correcta:
- Si la interrupción es de recepción y el buffer interno está lleno, hay que leer el carácter y descartarlo.
- Tanto PRINT como SCAN deben salvaguardar los registros que utilizan.
- Si la interrupción es de transmisión y no hay una línea en el buffer interno, se debe generar una interrupción de error.
- Ninguna de las otras respuestas es correcta.
Afirmaciones sobre Interrupciones y E/S
Marque la afirmación que considere correcta:
- En el proyecto no se pueden recibir más de 16000 interrupciones por segundo.
- En el proyecto no se pueden recibir más de 8000 interrupciones por segundo.
- La transmisión de un carácter por un puerto es más rápida si se usa la E/S programada en lugar de la E/S por interrupciones.
- En el proyecto no se pueden recibir más de 4000 interrupciones por segundo.
Opciones sobre la Rutina RTI
Marque la afirmación que considere correcta:
- Ninguna de las respuestas es correcta.
- La RTI solo inhibe las interrupciones de recepción.
- La RTI solo inhibe las interrupciones de transmisión.
- La RTI inhibe las interrupciones de transmisión del puerto A utilizando la instrucción BCLR #0, $effcob.
Manejo de Excepciones y Vectores de Interrupción
Marque la opción que considere correcta:
La instrucción MOVE.W D0,$12000 genera la excepción BUS ERROR.
Configuración del Vector de Interrupción
Si INIT se estableciera el vector de interrupción mediante la instrucción MOVE.B #$61,$EFFC19. Marque la opción correcta:
Además, habría que establecer la dirección de la RTI mediante la instrucción MOVE.L, #RTI, $184.
Funcionalidad de las Subrutinas SCAN y PRINT
Subrutina SCAN
Si en el buffer correspondiente hay una línea con tamaño menor al especificado en el parámetro tamaño, copiará la línea, devolviendo su tamaño en D0.
Subrutina PRINT
Debe habilitar las interrupciones de transmisión en IMR para un puerto serie si se ha introducido un carácter $0D en el buffer interno de dicho puerto.
Afirmaciones sobre Rutinas y Manejo de Líneas
Marque la afirmación que considere correcta:
- La rutina LINEA se llama desde la RTI para comprobar si hay una línea en el buffer interno de dicho puerto.
- Cuando la rutina ESCCAR encuentra un carácter de nueva línea, se llama a la rutina LINEA.
- Cuando llega un carácter por uno de los puertos, se llama a la rutina LINEA.
- Ninguna es correcta.
Afirmaciones sobre Tiempos de Transmisión
Marque la afirmación que considere correcta:
- La transmisión de una línea de 1000 caracteres para los dos puertos (dos llamadas a PRINT consecutivas) tarda 250 ms aproximadamente.
- La transmisión de un carácter durante la E/S programada tarda 10 microsegundos.
- La transmisión de una línea de 1000 caracteres para un puerto (una llamada a PRINT) tarda 125 ms aproximadamente.
- La transmisión de una línea de 1000 caracteres para un puerto (una llamada a PRINT) tarda 250 ms aproximadamente.
Opciones sobre la Rutina RTI
Marque la opción que considere correcta:
- Ninguna de las otras respuestas es correcta.
- La RTI debe identificar la fuente de la interrupción.
- La RTI debe salvaguardar los registros que usa.
- La RTI debe generar un nuevo marco de pila.
Configuración del Vector de Interrupción
Si en INIT se estableciera el vector de interrupción mediante la instrucción MOVE.B #60,$EFFC19. Marque la opción que considere correcta:
Además, habría que establecer la dirección de la RTI mediante la instrucción MOVE.L #RTI,$180.
Funcionalidad de las Subrutinas PRINT y SCAN
Subrutina PRINT
Debe habilitar las interrupciones de transmisión en IMR para una línea cuando ha insertado en el buffer interno al menos una línea.
Subrutina SCAN
La subrutina SCAN del ejercicio de E/S por interrupciones copiará del buffer interno al buffer de llamada a lo sumo tantos caracteres como indique el parámetro tamaño.
Afirmaciones sobre Interrupciones y Manejo de Buffers
Marque la afirmación correcta:
- Si la interrupción es de recepción y el buffer interno está lleno, hay que leer el carácter y descartarlo.
- Tanto PRINT como SCAN deben salvaguardar los registros que utilizan.
- Si la transmisión es de recepción y no hay espacio en el buffer interno, se debe generar una interrupción de error.
- Ninguna de las otras es correcta.
Prevención de Condiciones de Carrera
Para evitar condiciones de carrera, en las rutinas SCAN y PRINT hay que acceder en modo atómico a las variables que se puedan escribir concurrentemente en estas y en la RTI.