Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sistemas Operativos(Interrupciones) - Coggle Diagram
Sistemas Operativos(Interrupciones)
¿Qué es una interrupción ?
Fuerza el proceso a pausar la actividad
Ejecuta un código (rutina de servicio de interrupciones)
Se usa para responder a eventos hardware internos o externos:
Se pulsa un botón en un periférico
Reciben un mensaje en un puerto
Acceso a la memoria restringida
Interrupción invalida
Usos
Permite al procesador hacer multitasking
Preventiva(preferente)
Posee las de prioridad si la tarea es más urgente
No preventiva (sin preferencia)
No para la tarea que está en proceso(se puede usar un reloj del sistema para ir dando tiempo igual a la tarea)
Permiten al procesador responder la interación humanas o eventos urgentes
Rutinas de interrupción
Interrupt Handler
Reset Handler
Una ISR que carga el programa principal cuando se enciende o resetea el procesador
Inicializa la memoria las variables
Salta al main
Vector Interrupción
Hay un ISR a cada interrupción
Se guarda en una tabla el número de interrupción
Nº de interrupción +15 es el índice de la tabla
Cuando se inicia el procesador:
Se inicializa el SP
Se inicializa el PC
Cuando hay una interrupción se mira su prioridad
Si hay un handler con más prioridad se tiene que esperar
Para identificar las interrupciones se usan números definidos por los fabricantes
Cuando se procesa el número se guarda en el programa status register(PSR)
(No se usa complemento a2, suma 15)
Interrupt handler(ISR)
Es una rutina nueva con el mismo nombre se usa esa
No devuelve ningún valor porque las llamada el hardware
No requiere parámetros
El Reset_Handler() tiene prioridad -3 la más alta
(Cuanto mayor nº menor prioridad)
Las primeras 15 interrupciones tienen un comportamiento extraño(excepciones del sistema)
Las demás son para periféricos(Interrupciones externas)
Se pueden mover la tabla para arrancar en otras zonas de memoria
LLamada ISR
La ISR tiene que preservar el entorno
El programa ejecutado no puede saber la llamada de la subrutina
La ISR se guarda en
R1-R3
R12
LR
PC
PSR
en la pila
Limpia los bits del NVIC
Se guarda el PC porque no se sabe como sucede la interrupción
Nested Vectored Interrupt Controller(NVIC)
habilitar y desabilitar interrupciones individualmente
Definir su prioridad individualmente(depende del fabricante)
Marcar o desmarcar el bit de manejo de una interrupción
Cada interrupción tiene 6 bits de control
Los Cortex -M tienen
32x8=255 interrupciones
Para habilitar una interrupción se guarda 1 en
Enable bit
0 no hace nada
Disable bit
0 no hace nada
Pending bit
Cuando ocurre una interrupción se escribe 1(cuando no se puede procesar lo hace después )
Desabilitar interrupción globalmente
Se pueden habilitar y desabilitar interrupciones globalmente
PRISMASK
máscaras en los registros especiales 1 desabilita las interrupciones
ni execepciones
ni enmascarables
Definidas por el fabricantes
FAULTMASK
1 desabilita las interrupciones
Ni enmascarables
ni NMI
ni definidas por el fabricante
BASEPRI
mayor que 0 desabilita las interrupciones con un valor de prioridad más alta
pone masked a esas y a las demás son unmasked