A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

[ Linux ] USB Device Drivers

Apresentações semelhantes


Apresentação em tema: "[ Linux ] USB Device Drivers"— Transcrição da apresentação:

1 [ Linux ] USB Device Drivers
Por: Augusto Farina

2 KIT LAB. PROCESSADORES Processador MSC1213Y4 da Texas, núcleo 8051
Chip FT232R da FTDI – conversor USB para serial UART

3 SUPORTE A USB NO LINUX

4 USB HOST DRIVERS Interagem com o hardware de controle USB
São dependentes da arquitetura e plataforma OHCI, UHCI e EHCI

5 USB CORE DRIVERS Implementam a especificação USB
São independentes da arquitetura do sistema

6 USB DEVICE DRIVERS São drivers para os dispositivos USB
Em geral são específicos para cada equipamento (câmeras, teclados e etc)

7 UDEV É um gerenciador dinâmico de dispositivos para o linux 2.6
Sucessor do devfs e do hotplug Executado inteiramento no espaço de usuário Fica escutando eventos que o kernel envia quando um dispositivo é inserido ou removido do sistema Criação de regras através de arquivo texto

8 REGRAS DO UDEV /etc/udev/rules.d/
ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe –Q $env{MODALIAS}“ MODALIAS: usb:v0403p6001d*dc*dsc*dp*ic*isc*ip* Modprobe procura o MODALIAS fornecido nos módulos do kernel e carrega os que coincidirem # modinfo ftdi_sio.ko ... alias:          usb:v0403p6001d*dc*dsc*dp*ic*isc*ip

9 ESTRUTURA DOS DRIVERS Includes importantes Informações sobre o driver
#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/usb.h> #define DRIVER_VERSION "v.0.0.1" #define DRIVER_AUTHOR "Augusto Farina #define DRIVER_DESC "USB Data Aquisition - MSC1213 Board"

10 ESTRUTURA DOS DRIVERS Definição dos IDs, é através deles que o udev saberá qual driver inserir ou remover Podem ser comprados em #define FTDI_VID 0x /* Vendor Id */ #define FTDI_PID 0x /* Product Id */

11 ESTRUTURA DOS DRIVERS Criação da tabela de IDs
As estruturas então são registradas static struct usb_device_id id_table [] = { { USB_DEVICE(FTDI_VID, FTDI_PID) }, { } }; MODULE_DEVICE_TABLE(usb, id_table);

12 ESTRUTURA DOS DRIVERS Registro do driver static int usbdaq_probe() {
info("usbdaq now attached"); } static struct usb_driver usbdaq_driver = { .name = "usbdaq", .probe = usbdaq_probe, .disconnect = usbdaq_disconnect, .id_table = id_table, }; static int __init usbdaq_init() { usb_register(&usbdaq_driver);

13 ESTRUTURA DOS DRIVERS Desregistro do driver
static void usbdaq_disconnect() { info("usbdaq now disconnected"); } static void __exit usbdaq_exit() { usb_deregister(&usbdaq_driver);

14 ESTRUTURA DOS DRIVERS Indicação das funções de início (quando inserido) e fim (quando removido) do driver e registro das informações sobre o mesmo module_init(usbdaq_init); module_exit(usbdaq_exit); MODULE_VERSION(DRIVER_VERSION); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL")

15 ESTRUTURA DOS DRIVERS Makefile obj-m := usbdaq.o
KDIR := /lib/modules/`uname -r`/build PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

16 RESULTADO # tail -f /var/log/messages
kernel: usb 3-1: new full speed USB device using ohci_hcd kernel: usb 3-1: configuration #1 chosen from 1 choice kernel: usbdaq now attached kernel: usbcore: registered new interface driver usbdaq kernel: usbdaq now disconnected kernel: usb 3-1: USB disconnect

17 F I M !


Carregar ppt "[ Linux ] USB Device Drivers"

Apresentações semelhantes


Anúncios Google