1 / 17

[ Linux ] USB Device Drivers

[ Linux ] USB Device Drivers. Por: Augusto Farina. KIT LAB. PROCESSADORES. Processador MSC1213Y4 da Texas, núcleo 8051 Chip FT232R da FTDI – conversor USB para serial UART. SUPORTE A USB NO LINUX. USB HOST DRIVERS. Interagem com o hardware de controle USB

umed
Download Presentation

[ Linux ] USB Device Drivers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 <augustofr@gmail.com>" #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 www.usb.org #define FTDI_VID 0x0403 /* Vendor Id */ #define FTDI_PID 0x6001 /* 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 !

More Related