PDF de programación - Practica 3. Gestión básica de excepciones y traps

Imágen de pdf Practica 3. Gestión básica de excepciones y traps

Practica 3. Gestión básica de excepciones y trapsgráfica de visualizaciones

Publicado el 5 de Febrero del 2019
596 visualizaciones desde el 5 de Febrero del 2019
244,4 KB
7 paginas
Creado hace 12a (01/01/2012)
Laboratorio de Sistemas Empotrados

Practica 3. Gestión básica de

excepciones y traps.

interrupciones,

1. Objetivo

En esta práctica se pretende que el alumno comprenda los mecanismos hardware que
dan soporte a interrupciones, excepciones y traps, de forma que sea capaz de definir y
utilizar rutinas básicas para su gestión. El dominio de estás rutinas permitirá al alumno
entender como, a partir de ellas, se pueden definir otros servicios de más alto nivel
propios de los sistemas software empotrados (drivers de dispositivos o llamadas al
sistema), y como tratar las situaciones excepcionales que se pueden producir durante su
ejecución.

2. Introducción

Los mecanismos de atención a los eventos (interrupciones, excepciones y traps) que
proporcionan los procesadores facilitan el acceso a los recursos del sistema de forma
protegida, asegurando su integridad frente a los usos inadecuados.
Por una parte, mediante instrucciones tipo TRAP (también llamadas interrupciones
software) el usuario puede solicitar servicios que fueron configurados durante la etapa
de inicialización del sistema. Estos servicios permiten gestionar abstracciones tales
como los sistemas de archivos, los procesos o el acceso a puertos de comunicación.
El mecanismo de las interrupciones, por su parte, permite a los dispositivos externos
solicitar la atención del procesador, con el fin de que se ejecute una rutina como
respuesta a su petición. Gracias a este mecanismo es posible evitar el control por sondeo
de los trabajos asignados a los dispositivos.
Las excepciones, finalmente, permiten definir qué hacer cuando el procesador se
encuentra en un estado no estable como cuando ejecuta una instrucción cuyo código no
es válido, o se produce una división por cero o un overflow en las instrucciones de
operación aritmética.


Llamada al sistema

TA 2
JMP %l1
LD

[ %l5 ], %l7



SDIV %l1, %l2, %l1

Registro de instrucciones



¡ Excepción !
si %l2 es 0

Procesador

Dispositivo

¡Interrupción!



Figura 1. Mecanismos de atención a eventos proporcionados por el procesador.



© Óscar Rodríguez Polo 2012-2013



1

Laboratorio de Sistemas Empotrados



3. Tabla de Vectores de Interrupción


La tabla de vectores de interrupción es una zona de memoria en la que el procesador
localiza el código a ejecutar cuando se produce una interrupción, una excepción o se
ejecuta una instrucción de tipo TRAP. La estructura de esta tabla depende de cada
procesador, y puede tener tamaños muy diferentes en función de si se trata de un
procesador de propósito general o de una pequeña CPU de 8 bits integrada en un
microcontrolador. La figura 2 muestra una estructura de tabla de vectores de
interrupción genérica donde cada evento es antendido por el procesador ejecutando el
manejador cuya dirección se encuentra almacenada en el propio vector.



Manejadores de Excepción

Nº vector Vector de Interrupción

Figura 2. Tabla genérica de vectores de interrupción.


Esta tabla debe ser configurada durante la inicialiación del sistema (en el caso de contar
con un Sistema Operativo, será éste el que se encarge de fijar la configuración inicial) .
De esta forma, al ejecutarse posteriormente las aplicaciones el sistema ya será estable, y
tendrá una respuesta controlada a cualquier evento que pueda ocurrir.

© Óscar Rodríguez Polo 2012-2013



2

0
1
2
...



Dir Gestor llamadas Sistema



Excepciones

HW IRQs

TRAPS



...

Manejadores de Interrupción



Gestor de
llamadas
Sistema



...

Rut. Serv. SC 1
Rut. Serv. SC 2

Rut. Serv. SC 3

Rut. Serv. SC N


Laboratorio de Sistemas Empotrados

Una configuración que los sistemas operativos emplean habitualmente es la de utilizar
un único vector de la tabla para gestionar todas las llamadas al sistema. Una rutina,
denominada gestor de llamadas al sistema, centraliza todas las peticiones, y en función
de un parámetro recibido (bien a través de un registro predeterminado, bien a través de
la pila) identifica la llamada al sistema solicitada, e invoca a su rutina de servicio.



4. Tabla de Vectores de Interrupción del procesador LEON3
El procesador LEON3 presenta una estructura de tabla de vectores de interrupción en la
que cada elemento de la tabla no es una dirección a la que saltar, sino un conjunto de 4
instrucciones que el procesador ejecuta diréctamente cada vez que se produce el evento.


Nº vector

X

Instrucción-1

Instrucción-2

Instrucción-3

Instrucción-4

Vector de Interrupción

Esta estructura permite definir una respuesta rápida al evento. Sin embargo, cuando la
respuesta es compleja, es necesario saltar a una rutina para poder definir la respuesta. La
siguiente configuración de un vector, define cuatro instrucciones que permiten saltar a
una función denominada handler,guardando en el registro %l0 el registro de estado
%psr, y en el registro %l3 el número del vector. Ambos registros podrán ser utilizados
por la rutina handler para realizar un tratamiento adecuado al evento.


rd %psr,%10

sethi %hi(handler), %l4

jmp %l4 + %lo(handler) mov vector,%l3

Vector de Interrupción

Para poder manejar mejor la gestión de esta tabla de vectores de interrupción, es de gran
utilidad definirse funciones que, a partir de el número del vector, y de un puntero a la
rutina, gestione la forma en la que esta tabla debe completarse. Un prototipo de función
con estas caractarísticas sería el siguiente:



void leon3_install_handler( uint32_t vector_num ,


void (* handler) (void))



El parámetro vector_num corresponde al número de vector, mientras que handler es
el puntero a la función que queremos que se invoque cuando se atiende al evento.



© Óscar Rodríguez Polo 2012-2013



3

Laboratorio de Sistemas Empotrados



GAISLER

11

LEON3 / LEON3-FT
La siguiente figura muestra la tabla de vectores de interrupción del procesador LEON3,
donde TT indica el número de vector, Trap el evento al que está asociado el vector
2.2.10 Exceptions
(puede ser una excepción, una interrupción hardware o un trap provocado por una
instrucción) y Pri la prioridad con la que se atiende al evento. Las primeras 15 entradas
LEON adheres to the general SPARC trap model. The table below shows the implemented traps and
corresponden a excepciones del procesador, las 15 siguientes son interrupciones
their individual priority. When PSR (processor status register) bit ET=0, an exception trap causes the
externas, mientras que el rango definido por 0x80-0xFF está reservado para ser
processor to halt execution and enter error mode, and the external error signal will then be asserted.
invocado a través de la instrucción TRAPS
Table 3. Trap allocation and priority

TT
0x00
0x2b
0x01
0x02
0x03
0x04
0x24
0x0B
0x05
0x06
0x20
0x07
0x08
0x28
0x09
0x0A
0x2A
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
0x80 - 0xFF

Pri
1
2
3
5
4
6
6
7
8
8
9
10
11
11
13
14
15
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16

Description
Power-on reset
write buffer error during data store
Error during instruction fetch
UNIMP or other un-implemented instruction
Execution of privileged instruction in user mode
FP instruction while FPU disabled
CP instruction while Co-processor disabled
Hardware breakpoint match
SAVE into invalid window
RESTORE into invalid window
register file EDAC error (LEON-FT only)
Memory access to un-aligned address
FPU exception
Co-processor exception
Access error during data load, MMU page fault
Tagged arithmetic overflow
Divide by zero
Asynchronous interrupt 1
Asynchronous interrupt 2
Asynchronous interrupt 3
Asynchronous interrupt 4
Asynchronous interrupt 5
Asynchronous interrupt 6
Asynchronous interrupt 7
Asynchronous interrupt 8
Asynchronous interrupt 9
Asynchronous interrupt 10
Asynchronous interrupt 11
Asynchronous interrupt 12
Asynchronous interrupt 13
Asynchronous interrupt 14
Asynchronous interrupt 15
Software trap instruction (TA)



Trap
reset
write error
instruction_access_error
illegal_instruction
privileged_instruction
fp_disabled
cp_disabled
watchpoint_detected
window_overflow
window_underflow
register_hadrware_error
mem_address_not_aligned
fp_exception
cp_exception
data_access_exception
tag_overflow
divide_exception
interrupt_level_1
interrupt_level_2
interrupt_level_3
interrupt_level_4
interrupt_level_5
interrupt_level_6
interrupt_level_7
interrupt_level_8
interrupt_level_9
interrupt_level_10
interrupt_level_11
interrupt_level_12
interrupt_level_13
interrupt_level_14
interrupt_level_15
trap_instruction



Copyright Aeroflex Gaisler AB

March 2010, Version 1.1

© Óscar Rodríguez Polo 2012-2013



4

Laboratorio de Sistemas Empotrados

5. Creación de proyecto para LEON3


Creación de un nuevo proyecto denominado prac3 cuyo ejecutable sea para la
plataforma Sparc Bare C. En ese proyecto crear dos subdirectorios include y src.
En el directorio src añadir los archivos leon3_bprint.c y leon_uart.c de la práctica
anterior e igualmente los archivos leon3_irqs_asm.S leon3_traps.c y leon3_irqs.c que
encontrarás también en el archivo enlazado como prac3_fuentes en la página web. El
contenido de cada uno de estos archivos se determina a continuación:




leon3_traps.c. Implementa la función leon3_install_handler que permite
instalar una rutina de atención a un evento, independientemente de si es una
interrupción, un trap o una excepción. El prototipo de la función es el siguiente,
donde vector_num es el número de vector y hanlder la rutina a instalar:

void leon3_install_handler( uint32_t vector_num ,


void (* handler) (void))
  • Links de descarga
http://lwp-l.com/pdf15068

Comentarios de: Practica 3. Gestión básica de excepciones y traps (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad