Introdução aos Sistemas Operacionais/Exemplo de Drivers USB em Linux: Logitech MediaPlay Cordless Mouse USB Linux driver

Objetivos editar

Introdução editar

Informações gerais editar

  • Autores:
    • João Paulo Ozório
    • Leandro Pereira Freitas
    • Paulo César Ferreira Melo
  • Versão do kernel:
  • Identificação do driver analisado:
    • Nome: USB Logitech MediaPlay Cordless Mouse driver - lmpcm_usb
  • Outras informações relevantes:


Carga (load ou init) editar

  • Módulos Carregados:

MODULE_AUTHOR ( "David Oliveira <d.oliveira@prozone.org>" )

MODULE_DESCRIPTION ( "USB Logitech MediaPlay Cordless Mouse driver" )

MODULE_LICENSE ( "GPL" )

MODULE_DEVICE_TABLE (usb, usb_lmpcm_id_table)

module_init(usb_lmpcm_init)

module_exit(usb_lmpcm_exit)


  • Processo de carga do módulo
  • Parâmetros que podem ser passados na carga do módulo
  • Como passar uma parâmetro para o módulo, etc;

Reconhecimento ou detecção (probe) editar

  • Dispositivos que podem ser reconhecidos segundo o fabricante:



  • Dispositivos que não podem ser reconhecidos:


  • Como se processa a identificação do dispositivo
  • O que ocorre quando o driver não é reconhecido (erro), etc;

Inicialização de estruturas editar

  • Quais estruturas são inicializadas
  • Tipo de estruturas inicializadas (buffer, por exemplo)
  • Registro de URB;

Registro do driver (register) editar

  • Como o driver é reconhecido
  • Quais procedimentos (comandos) para verificar qual dispositivo específico que foi reconhecido
  • Quais drivers que foram carregados para o dispositivo, etc;

Comunicação editar

  • Arquivos especiais de dispositivo (/proc, /dev e /sys)
  • Criação de interface
  • Criação de endpoint
  • Criação de configuração (configuration)
  • Tipos de comunicação utilizados pelo driver (control, bulk, etc);

Finalização editar

  • Mensagens de remoção do dispositivo
  • Desalocação/liberação de estruturas;

Considerações finais editar

  • Informações gerais do driver
  • Conclusões
  • Mapa conceitual sobre o driver estudado;

Bibliografia/Referências editar