PDF de programación - PlatTR_Bloque2_04_drivers_marte

Imágen de pdf PlatTR_Bloque2_04_drivers_marte

PlatTR_Bloque2_04_drivers_martegráfica de visualizaciones

Publicado el 14 de Enero del 2017
725 visualizaciones desde el 14 de Enero del 2017
93,3 KB
13 paginas
Creado hace 10a (07/05/2014)
1



Master en Computación

Plataformas de Tiempo Real

Bloque II: Manejadores de dispositivos y drivers

Tema 1. Arquitectura de E/S
Tema 2. Programación básica de E/S en Linux
Tema 3. Programación avanzada de E/S en Linux

Tema 4. Programación de E/S en MaRTE OS

Tema 5.
Tema 6. Buses

Interfaces de E/S de datos

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

Tema 4. Programación de E/S en MaRTE OS
4.1. Relación entre el computador y su entorno
4.2. Modelos de drivers en MaRTE OS
4.3. Drivers en MaRTE OS: Aspectos generales
4.4. Drivers y sistema de ficheros en MaRTE OS
4.5. Creación e instalación de un driver C
4.6. Operaciones disponibles para drivers
4.7. Ejemplo de un driver C: demo_driver_c.c

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

2

4.1 Relación entre el computador y su entorno

4.1 Relación entre el computador y su entorno

Reloj

Temporizador

Controlador

de interrupciones

Computador

Dispositivos

de E/S

Controla o
monitoriza

Planta

Plataformas de Tiempo Real

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

3

Tema 4. Programación de E/S en MaRTE OS

4.1 Relación entre el computador y su entorno
Relación entre el computador y su entorno (cont.)

Los dispositivos de entrada/salida ponen en contacto al
computador con su entorno

Una parte fundamental del software de un sistema empotrado será
el código encargado de controlar los dispositivos de E/S

• el código encargado de controlar un dispositivo se denomina

manejador de dispositivo (o "driver")

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

4

4.1 Relación entre el computador y su entorno

Acceso al hardware
En un PC los mapas de memoria y de E/S son independientes
• instrucciones ensamblador
diferentes para acceder a la
memoria (MOV, XCHG, etc.) o a
los registros de E/S (IN, OUT,
etc.)
• la línea MEM/IO del bus de
control selecciona el mapa

Mapa de Memoria

Memoria RAM

Memoria RAM

UMA

(384 Kb)

$0020

$0023

$0000

$000F

$0040

$0043

$0a0000

$100000

$000000

Mapa de E/S

Controlador

de DMA

Timer

(640 Kb)

(2 Mb)

Controlador de
Interrupciones

$300000

$FFFFFFFF

No utilizado

$FFFF

Los registros de los dispositivos pueden encontrarse tanto
mapeados en memoria como en el mapa de E/S

1

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

5

4.1 Relación entre el computador y su entorno

Acceso al hardware (cont.)
El acceso a un registro mapeado en memoria se realiza utilizando
un puntero que apunte a la dirección de memoria deseada

// registro en la dirección de memoria 0xFE000100
char *punt_reg = (char *)0xFE000100;
*punt_reg = 0x2A; // escribe 0x2A en el registro

El acceso a los registros de un dispositivo en el mapa de E/S se
consigue con las funciones definidas en <sys/pio.h>

// lee un byte de la direc. de E/S indicada por port
char inb(unsigned short port)
// escribe un byte en la direc. indicada por port
outb(unsigned short port, char val)

• también hay funciones leer y escribir 2 bytes (inw, outw) y 4
bytes (inl, outl)

Plataformas de Tiempo Real

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

6

Tema 4. Programación de E/S en MaRTE OS

Ejemplo de dispositivo en E/S: puerto paralelo
Mapa de E/S

4.1 Relación entre el computador y su entorno

Dirección de E/S
puerto1/puerto2

Registro

Modo

$378/$278
$378/$278
$379/$279

$37A/$27A

$37A/$27A

Entrada de Datos
Salida de Datos
Lee valor líneas
auxiliares de entrada
Lee configuración y líneas
auxiliares de salida
Establece configuración y
valor de líneas auxiliares
de salida

Lect.
Esc.
Lect.

Lect.

Esc.



2
o
e

l

l



a
r
a
p
o
t
r
e
u
P



1
o
e

l

l



a
r
a
p
o
t
r
e
u
P

$276
$277
$278
$279
$27A
$27B
$27C
$27D

$376
$377
$378
$379
$37A
$37B
$37C
$37D

Entrada/Salida

Lee líneas entrada
Lee/escribe config.

Entrada/Salida

Lee líneas entrada
Lee/escribe config.

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

7

4.1 Relación entre el computador y su entorno

Puerto paralelo: Registro de configuración
Permite leer y escribir el estado de las 4 líneas auxiliares de salida
También permite configurar el funcionamiento de la puerta:
• puerta de salida (Output=>0) o de entrada (Output=>1)
• interrupción habilitada (IRQ enable=>1)

X

X

Output

IRQ Select
enable

Init

Auto Strobe

Ejemplo: habilita las interrupciones del puerto paralelo 1, dejando
los demás bits del registro de control como estaban:

char valor_anterior = inb(0x37A);
outb(0x37A, 0x10 | valor_anterior);

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

8

4.2 Modelos de drivers en MaRTE OS

4.2 Modelos de drivers en MaRTE OS
Existen dos modelos fundamentales de integración de los drivers
con el sistema operativo y el resto de la aplicación:
• El dispositivo se mapea como un fichero (p.e. /dev/lpt0)
• se accede a él mediante las funciones de acceso a ficheros
(open(), write(), read(), ...) y la función ioctl()
- el driver implementa esas funciones

• estrategia habitual en sistemas tipo UNIX
• El driver se implementa como una librería de funciones
específicas:
• lee_canal_AD(), configura_puerto_serie(), ...
MaRTE OS permite ambas estrategias

Plataformas de Tiempo Real

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

9

Tema 4. Programación de E/S en MaRTE OS

4.2 Modelos de drivers en MaRTE OS

Ventajas e inconvenientes de los modelos
• Dispositivo mapeado como un fichero:

 Interfaz estándar de llamadas al sistema (open(), write(),
read(), close(), ioctl())
 Facilita (hasta cierto punto) el intercambio de un dispositivo
por otro sin modificar la aplicación
 Poca flexibilidad en las llamadas, se acaba abusando de
ioctl()

• Librería de funciones específicas

 Interfaz flexible y fácil de utilizar
 No estándar

En este curso nos centraremos en el modelo basado en
dispositivos mapeados como ficheros

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

10

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

4.3 Drivers en MaRTE OS: Aspectos generales

4.3 Drivers en MaRTE OS: Aspectos generales
Tipos de dispositivos

• sólo existen los dispositivos de caracteres

Identificación de drivers

• Números mayores y menores con un significado similar al que

tienen en Linux

Instalación de los drivers

• Instalación estática a través de la modificación de la tabla de

dispositivos

• Requiere la recompilación del kernel

Los drivers se pueden escribir tanto en Ada como en C

• si se escriben en C necesitan un envoltorio Ada

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

11

4.3 Drivers en MaRTE OS: Aspectos generales
Drivers en MaRTE OS: Aspectos generales (cont.)

Los drivers pueden usar todas las funciones POSIX

• threads, mutexes, variables condicionales, temporizadores,

semáforos, ...

• excepto en las rutinas de servicio de interrupción, donde no se

pueden usar operaciones bloqueantes
- esto incluye escribir en otros drivers (p.e., no usar la entrada/
salida estándar)
- alternativamente existe una operación printc para escribir
en consola directamente

El código de cada driver debe ir localizado en un subdirectorio de
• marte/x86_arch/drivers/

Plataformas de Tiempo Real

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

12

Tema 4. Programación de E/S en MaRTE OS

Puntos de entrada de los drivers
Puntos de entrada de los drivers

• create/remove

4.3 Drivers en MaRTE OS: Aspectos generales

funciones de instalación/desinstalación del driver, externas al
sistema de archivos
- Linux: suplen las operaciones de instalación y desinstalación

de módulos

• open/close y read/write

funciones de entrada/salida básicas de POSIX

• ioctl

función que permite transmitir un comando al dispositivo

Plataformas de Tiempo Real

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

13

Tema 4. Programación de E/S en MaRTE OS

4.3 Drivers en MaRTE OS: Aspectos generales

Ejemplo: puntos de entrada del driver my_drv
int my_drv_create (void);
int my_drv_remove (void);
int my_drv_open (int file_descriptor,
int file_access_mode);
int my_drv_close (int file_descriptor);
ssize_t my_drv_read (int file_descriptor,
void *buffer,
size_t bytes);
ssize_t my_drv_write (int file_descriptor,
void *buffer,
size_t bytes);
int my_drv_ioctl (int file_descriptor,
int request,
void *argp);

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

14

Plataformas de Tiempo Real

Tema 4. Programación de E/S en MaRTE OS

4.4 Drivers y sistema de ficheros en MaRTE OS

4.4 Drivers y sistema de ficheros en MaRTE OS
El sistema de ficheros en MaRTE OS utiliza tres tablas:
• Tabla de drivers (editada por el usuario):

- Vincula cada driver (número mayor) con las funciones que

constituyen sus puntos de entrada

• Tabla de ficheros de dispositivo (editada por el usuario):

- Define los ficheros de dispositivo existentes (sus nombres)
- Vincula cada fichero de dispositivo con el número mayor de

su driver

- Asocia el número menor de los ficheros de dispositivo

• Tabla de descriptores de fichero (gestionada por MaRTE OS):

- Mantiene los descriptores de fichero correspondientes a los

dispositivos abiertos en cada momento por la aplicación

Plataformas de Tiempo Real

© J.J. Gutiérrez, M. Aldea, M. González

mayo-2014

15

Tema 4. Programación de E/S en MaRTE OS

Tabla de drivers
Definición de los drivers:

4.4 Drivers y sistema de ficheros en MaRTE OS

• Vincula cada driver (número mayor) con las
  • Links de descarga
http://lwp-l.com/pdf1135

Comentarios de: PlatTR_Bloque2_04_drivers_marte (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