Tema 2: Soporte de interrupciones Ejercicios

Anuncio
Departamento de Arquitectura y Tecnología de Computadores
Universidad del País Vasco / Euskal Herriko Unibertsitatea
Master Oficial en Ingeniería de Sistemas Empotrados
2010-11
Introducción al tiempo real en sistemas empotrados
Tema 2: Soporte de interrupciones
Ejercicios
1
Un sistema se controla mediante interupciones vectorizadas. Cuando se
produce una interrupción, el PIC suministra a la CPU un vector de 3 bits (xyz)
identificando la interrupción, a partir del cual la CPU genera una dirección de 16 bits
con el patrón
1111 1111 1110 xyz0
donde x, y, z son los bits del vector. De esta forma, el sistema operativo almacena las
rutinas de servicio de las interrupciones (ISR) en cualquier lugar de la memoria,
apuntando las direcciones de comienzo de las ISRs desde las posiciones
direccionadas con el patrón (tabla de vectores de interrupciones). Obsérvese que la
memoria es direccionable a nivel de byte y que todas las direcciones son de 16 bits.
Se destinan 32 bytes para almacenar la tabla de VIs, por lo que éste es capaz de
apuntar a 16 direcciones (vectores de interrupción).
El sistema operativo utiliza también la tabla de VIs para apuntar a la ubicación de las
rutinas de servicio a excepciones y de las rutinas que ejecutan las llamadas al
sistema. Por ejemplo, la dirección de la llamada al sistema SC_1() se almacena en la
dirección:
1111 1111 1111 0000
Se pide que representes un esquema con el direccionamiento y la ubicación de la
tabla de VIs. Supón como ejemplo que la rutina de servicio de la interrupción
vectorizada 010 está cargada en la posición hexadecimal 7FF0, y que el código de la
llamada al sistema SC_1() está cargado en la 38FE. Representa sobre el esquema la
ubicación y el direccionamiento de estas rutinas ejemplo.
2
En el sistema descrito en el ejercicio anterior se establece que las interrupciones
son prioritarias sobre las llamadas al sistema. Supón que un programa P está
ejecutando una subrutina S que a su vez ha invocado la llamada al sistema SC_1().
Durante la ejecución de SC_1() se produce la interrupción 010. Describe las sucesivas
etapas por las que pasa el estado de la pila de este programa desde antes de la
llamada a SC_1() hasta que ésta finaliza.
Alberto Lafuente. Departamento de ATC – UPV-EHU
Descargar