Publicado el 28 de Junio del 2018
732 visualizaciones desde el 28 de Junio del 2018
178,9 KB
12 paginas
Creado hace 19a (20/03/2006)
Programación de drivers en Linux
Ing. Carlos Hernández Cenzano
03/15/06
Tipos de Dispositivos
• Dispositivos de caracter (byte): puerto serial, puerto paralelo,
teclado, etc. Transfieren la información byte por byte.
• Dispositivos de bloques: unidades de discos duros, unidades de
discos flexibles, tarjeta de , etc. Transfieren la información por
bloques.
• Dispositivos de red: tarjetas ethernet, tarjetas WiFi, etc.
2
Archivos especiales de caracter y bloque
3
Interfaces de los dispositivos de red
4
El archivo especial
Tipo de
Archivo
especial
Identificador
de tipo de
dispositivo
MAJOR NUMBER
Número de
dispositivo de un
tipo
MINOR NUMBER
5
¿Cómo se accede a los dispositivos con archivos
especiales?
• Como si se tratase de archivos ordinarios:
– fopen
– fread
– fwrite
– fclose
•
excepto por ioctl (Input / Output Control)
– ioctl se utiliza para dar comandos al dispositivo, por ejemplo para
un puerto serial se tiene los comandos: TIOCMGET, TIOCMBIS,
TIOCMBIC, TIOCMSET, TIOCSBRK y TIOCCBRK. (Serial
HOWTO http://www.tldp.org/HOWTO/Serial-HOWTO.html)
6
¿Qué incluye un driver?
• Registrar el driver del dispositivo (insmod) MAJOR NUMBER
• Retirar el registro del driver del dispositivo (rmmod)
• Usar el dispositivo (fopen)
• Comandos de control (ioctl)
• Operación de lectura (fread)
• Operación de escritura (fwrite)
• Dejar el dispositivo (fclose)
7
Compilar driver.c
• Makefile
obj-m += driver.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
•
# make all
8
Crear el dispositivo especial
mknod
• Para la primera versión de chardev.c de The Linux Kernel Module
Programming Guide
mknod /dev/chardev c 254 0
Tipo de
Archivo
especial
Identificador
de tipo de
dispositivo
MAJOR NUMBER
Número de
dispositivo de un
tipo
MINOR NUMBER
9
¿Qué se necesita para programar un driver?
• Concocimientos de Lenguaje C
• Uso de las sentecias para E/S outb, outw, outl, etc.
• Compilador gcc
•
• La información técnica del dispositivo.
• Conocimientos sobre el bus del dispositivo ISA, PCI, etc.
Librerías, código fuente del kernel
10
Lab PC + / Lab PC 1200 (ISA)
11
Referencias
• The Linux Kernel Module Programming Guide
http://www.tldp.org/LDP/lkmpg/
• Linux Device Drivers, Third Edition
Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
12
Comentarios de: Programación de drivers en Linux (0)
No hay comentarios