Publicado el 14 de Enero del 2017
1.085 visualizaciones desde el 14 de Enero del 2017
301,9 KB
14 paginas
Creado hace 19a (29/03/2006)
Instrumentación de Tiempo Real
UNIVERSIDAD DE CANTABRIA
Tema 1. Introducción
Tema 2. Recursos de acceso al hardware
Tema 3. Interrupciones
Tema 4. Puertas básicas de entrada/salida (I)
Tema 5. Recursos de temporización de bajo nivel
Tema 6. Multitarea en Ada
Tema 7. Puertas básicas de entrada/salida (II)
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
1
Conceptos fundamentales
• Interrupción: mecanismo mediante el cual es posible
interrumpir la ejecución del programa ejecutado por la CPU
UNIVERSIDAD DE CANTABRIA
• Tras la interrupción el programa permanece suspendido
mientras se ejecuta la rutina de servicio de interrupción
(ISR) (también denominada manejador de la interrupción)
Ejecución secuencial
del programa
...
A := B + 4;
Put (A);
C := 2 * PI * R;
if A > 0 then
A := 0;
else
B := B + 1;
end if;
...
Interrupción
Continua la
ejecución secuencial
del programa
Manejador
begin
código del
manejador;
end Manejador;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
2
Conceptos fundamentales
(cont.)
UNIVERSIDAD DE CANTABRIA
Las interrupciones pueden ser de origen interno o externo a la
CPU:
• excepción: interrupción generada como consecuencia del
resultado de una ejecución de una instrucción
- P.e.: desbordamiento aritmético ("overflow"), división
por cero, etc.
• interrupción software:
- generadas expresamente por el programa con una
instrucción ensamblador (INT 4)
• interrupción hardware: generada por un dispositivo
- P.e.: expiración de un temporizador, nuevo dato
disponible en un dispositivo de E/S, etc.
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
3
Conceptos fundamentales
(cont.)
UNIVERSIDAD DE CANTABRIA
• Las distintas interrupciones que se pueden producir en un
computador se identifican mediante un número (tipo de la
interrupción)
• La tabla de vectores de interrupción establece el enlace
entre cada tipo de interrupción y su ISR asociada
Tabla de vectores
de interrupción
tipo de
interrupción
0
1
2
3
4
5
...
Manejador1
begin
...;
end Manejador1;
Manejador2
begin
...;
end Manejador2;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
4
Aspectos hardware:
Ciclo de atención a interrupción
UNIVERSIDAD DE CANTABRIA
1. Se genera una interrupción, el procesador termina la ins-
trucción ensamblador que estaba ejecutando
Interrupción
PCPC
µΡ
Flags
...
mov 0x80616d3,%eax
movl $0xf,0x4(%esp)
mov %eax,(%esp)
sub $0x4,%esp
mov 0x4(%ebp),%edx
...
2. Se salva en el stack el estado del procesador (contador de
programa y registro de estado)
PCPC
µΡ
Flags
stack
PC
Flags
XX
XX
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
5
Aspectos hardware:
Ciclo de atención a interrupción
UNIVERSIDAD DE CANTABRIA
3. La CPU lee el tipo de interrupción y obtiene la dirección de
su ISR utilizando la tabla de vectores de interrupción
Tipo de
Tabla de vectores
de interrupción
interrupción
5
Bus de datos
PCPC
µΡ
Flags
Manejador5
begin
...;
end Manejador5;
4
5
6
4. Se carga la dirección de comienzo de la ISR en el PC y se
deshabilitan nuevas interrupciones
Deshabilita
interrupciones
PCPC
µΡ
Flags
Manejador5
begin
...;
end Manejador5;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
6
Aspectos hardware:
Ciclo de atención a interrupción
UNIVERSIDAD DE CANTABRIA
5. Se ejecuta la ISR hasta llegar a la instrucción de retorno de
interrupción (RTI)
PCPC
µΡ
Flags
Manejador5
begin
...;
RTI;
end Manejador5;
6. La instrucción RTI recupera del stack el estado original de
la CPU, con lo que el procesador continua la ejecución del
programa interrumpido
stack
PC
Flags
XX
XX
PCPC
µΡ
Flags
...
mov 0x80616d3,%eax
movl $0xf,0x4(%esp)
mov %eax,(%esp)
sub $0x4,%esp
mov 0x4(%ebp),%edx
...
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
7
Aspectos hardware:
Controlador de interrupciones
UNIVERSIDAD DE CANTABRIA
µΡ
i
s
e
n
o
c
p
u
r
r
e
t
n
i
l
r
o
d
a
o
r
t
n
o
C
e
d
Temporizador
Líneas de requerimiento
de interrupción
Las líneas de requerimiento
de interrupción de cada
dispositivo no se conectan
directamente al procesador,
si no que lo hacen a través
del Circuito Controlador de
Interrupciones
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
8
Aspectos hardware: Tabla de
vectores de interrupción de un PC
UNIVERSIDAD DE CANTABRIA
Tipo de
interrupción
0
1
2
3
4
5
6
7
Temporizador
Teclado
PIC esclavo
COM2
COM1
Paral. 2/tarj. sonido
Disquete
Paralelo 1
8
9
10
11
12
13
14
15
RTC
Reservada
Reservada
Reservada
Ratón PS/2
Coprocesador
Disco Duro
Reservada
...
...
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
9
Gestión de interrupciones en
MaRTE OS
UNIVERSIDAD DE CANTABRIA
La gestión de interrupciones se realiza utilizando el paquete
MaRTE_Hardware_Interrupts. Este paquete incluye:
• constantes predefinidas para los 16 primeros tipos de
interrupción:
type Hardware_Interrupt is ...;
TIMER_INTERRUPT
CTLR2_INTERRUPT
SERIAL1_INTERRUPT
DISKETTE_INTERRUPT
RTC_INTERRUPT
RESERVED1_INTERRUPT
RESERVED3_INTERRUPT
FIXED_DISK_INTERRUPT
KEYBOARD_INTERRUPT
SERIAL2_INTERRUPT
PARALLEL2_INTERRUPT
PARALLEL1_INTERRUPT
SOFT_INTERRUPT
RESERVED2_INTERRUPT
COPROCESSOR_INTERRUPT
RESERVED4_INTERRUPT
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
10
Gestión de interrupciones en
MaRTE OS
(cont.)
UNIVERSIDAD DE CANTABRIA
• Definición del tipo de procedimiento manejador de
interrupción:
type Interrupt_Handler_Function is
access function (Area : in System.Address;
Intr : in Hardware_Interrupt)
return Handler_Return_Code;
• Posibles valores de retorno del procedimiento manejador:
POSIX_INTR_HANDLED_NOTIFY -- para informar al
-- sistema operativo de que el manejador ha atendido
-- la interrupción
POSIX_INTR_NOT_HANDLED -- para informar al sistema
-- operativo de que el manejador NO ha atendido la
-- interrupción
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
11
Gestión de interrupciones en
MaRTE OS
(cont.)
UNIVERSIDAD DE CANTABRIA
• Los manejadores de interrupción se ejecutan en el contexto
del sistema operativo
• Una buena práctica de programación consiste en hacer los
manejadores lo más cortos posibles
• Además, existen algunas limitaciones en las operaciones
que puede realizar un manejador de interrupción
- NO ejecutar operaciones potencialmente bloqueantes
- como regla general NO realizar operaciones de entrada
salida de texto (Put, Get):
- sólo podrían utilizarse los procedimientos "Put"
definidos en el paquete Basic_Console_IO (normalmente
para depuración)
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
12
Gestión de interrupciones en
MaRTE OS
(cont.)
UNIVERSIDAD DE CANTABRIA
Asociar un manejador con un tipo de interrupción:
function Associate
(Intr : in Hardware_Interrupt;
Handler : in Interrupt_Handler_Function;
Area : in System.Address;
Area_Size : in Size_T)
return Int;
-- Retorna 0 si no se ha producido ningún error
-- Cuando Area y Area_Size no se usan (lo normal):
-- Area => System.Null_Address
-- Area_Size => 0
function Disassociate
(Intr : in Hardware_Interrupt;
Handler : in Interrupt_Handler_Function)
return Int;
-- Retorna 0 si no se ha producido ningún error
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
13
Gestión de interrupciones en
MaRTE OS
(cont.)
UNIVERSIDAD DE CANTABRIA
Deshabilitar ("lock") y habilitar ("unlock") una fuente de
interrupción en el controlador de interrupciones:
function Lock (Intr : in Hardware_Interrupt)
return Int;
-- Retorna 0 si no se ha producido ningún error
function Unlock (Intr : in Hardware_Interrupt)
return Int;
-- Retorna 0 si no se ha producido ningún error
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
14
Ejemplo: Tarjeta A/D operando con
interrupciones
UNIVERSIDAD DE CANTABRIA
LoDato ($240)
HiDato ($241)
Control ($242)
Estado ($246)
D3 D2 D1 D0 X
X
X
X
D11 D10 D9 D8 D7 D6 D5 D4
X
B
X
X
X
X
X
X
X
X
X
X
X
X
IH
X
Vi
A/D
D11-D0
Dato
$FFF
$000
Vi
0V
+10V
• El bit IH del registro de control sirve para habilitar (1) o
deshabilitar (0) las interrupciones por fin de conversión
- la interrupción se deshabilita tras cada dato convertido,
por lo que habrá que rehabilitarla en el manejador
• La conversión de un nuevo dato se inicia escribiendo
cualquier valor en el registro Estado
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
15
Ejemplo: Tarjeta A/D operando con
interrupciones
(cont.)
UNIVERSIDAD DE CANTABRIA
with MaRTE_OS;
with Basic_Integer_Types; use Basic_Integer_Types;
with IO_Interface; use IO_Interface;
with MaRTE_Hardware_Interrupts;
use MaRTE_Hardware_Interrupts;
with Text_IO; use Text_IO;
with System;
procedure Lee_AD_Con_Interrupciones is
-- Direcciones de los registros de E/S del
-- convertidor A/D
BASE_AD : constant IO_Port := 16#240#;
Reg_LoDato : constant IO_Port := BASE_AD + 0;
Reg_HiDato : constant IO_Port := BASE_AD + 1;
Reg_
Comentarios de: Instrumentación de Tiempo Real - Tema 3. Interrupciones (0)
No hay comentarios