Onde estão as informações armazenadas no núcleo USB em relação ao driver de classe e aos HCDs, para que ele verifique?

0

É óbvio pela pergunta, o núcleo USB tem uma matriz ou algo (talvez uma lista encadeada) onde todas as informações dos drivers de classe e informações do HCD (um nome ou algum número) são armazenadas para verificar e atribuir o necessário quando um dispositivo é conectado?

    
por akshay 10.04.2014 / 07:54

2 respostas

1

No kernel do Linux, o carregador de módulos é ativado quando um novo dispositivo é detectou. Ela passou por uma string " modalias ", que identifica o dispositivo e parece algo assim para dispositivos USB:

usb:v058Fp6387d0103dc00dsc00dp00ic08isc06ip50in00

Você pode encontrar o seu dispositivo modalias (e o driver HCD) usando o seguinte comando:

udevadm info --export-db

Esta é a seção relacionada ao meu pen drive:

P: /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0
E: DEVTYPE=usb_interface
E: DRIVER=usb-storage
E: ID_MODEL_FROM_DATABASE=Flash Drive
E: ID_VENDOR_FROM_DATABASE=Alcor Micro Corp.
E: INTERFACE=8/6/80
E: MODALIAS=usb:v058Fp6387d0103dc00dsc00dp00ic08isc06ip50in00
E: PRODUCT=58f/6387/103
E: SUBSYSTEM=usb
E: TYPE=0/0/0
E: USEC_INITIALIZED=530904794

Esta string contém a classe de dispositivo (usb) e informações específicas da classe (fornecedor / produto / número de série, classe de dispositivo, etc). Cada driver do kernel contém uma linha como:

MODULE_ALIAS("usb:...")

Qual deve combinar os usbalias (os curingas são usados para combinar múltiplos dispositivos). Se os modalias correspondem a um que o driver suporta, este driver é carregado (ou notificado do novo dispositivo, se já estiver lá).

Você pode ver os dispositivos compatíveis (por modalias) e seus módulos associados com

more /lib/modules/'uname -r'/modules.alias

Se você usar o driver de dispositivo de armazenamento usb, verá que ele tem algum dispositivos específicos suportados pelo fornecedor e pelo ID do dispositivo e também para suportar qualquer dispositivo com a classe certa (armazenamento), não importa o fornecedor / dispositivo.

Os modalias USB podem ser decodificados da seguinte forma:

usb:
v   vendor_id (4 hex)
p   product_id (4 hex)
d   revision (4 hex)
dc  class (2 hex)
dsc subclass (2 hex)
dp  protocol (2 hex)
ic  interface_class (2 hex)
isc interface_subclass (2 hex)
ip  interface_protocol (2 hex)

Fonte

    
por Sylvain Pineau 10.04.2014 / 12:32
0

lsusb

ARQUIVOS

   /var/lib/usbutils/usb.ids
          A  list  of  all  known  USB  ID’s  (vendors, products, classes,
          subclasses and protocols).

Esse arquivo só está presente se houver dispositivos USB.

por Rinzwind 10.04.2014 / 11:21