Где хранится информация, хранящаяся в ядре USB относительно драйвера класса и HCD, для проверки?

Очевидно, вопрос: есть ли в ядре USB массив или что-то (может быть, связанный список), где хранится вся информация о драйверах класса и информация о HCD (имя или какой-то номер), чтобы он проверял и назначал требуется, когда устройство подключено?

0
задан 10 April 2014 в 13:19

2 ответа

В ядре Linux разбужен загрузчик модуля, когда новое устройство обнаруживается. Это передало строку "modalias", которая определяет устройство и выглядит примерно так для USB-устройств:

usb:v058Fp6387d0103dc00dsc00dp00ic08isc06ip50in00

Можно найти устройство modalias (и драйвер HCD) использование следующей команды:

udevadm info --export-db

Это - раздел, связанный с моей Картой памяти:

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

Эта строка содержит класс устройства (usb) и определенная для класса информация (поставщик/продукт/порядковый номер, класс устройства, и т.д.). Каждый драйвер ядра содержит строку, такую как:

MODULE_ALIAS("usb:...")

Который должен соответствовать usbalias (подстановочные знаки используются для соответствия нескольким устройствам). Если modalias соответствует тому, который поддерживает драйвер, этот драйвер загружается (или уведомляется относительно нового устройства, если это уже там).

Вы видите поддерживаемые устройства (modalias) и их связанные модули с

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

Если Вы grep для драйвера устройства хранения USB, Вы будете видеть, что он имеет некоторые определенные устройства, он поддерживает поставщиком и идентификатором устройства, и также попытается поддерживать любое устройство с правом (устройство хранения данных) класс, неважно, поставщик/устройство.

USB modalias может декодироваться как это:

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)

Источник

1
ответ дан 10 April 2014 в 13:19

файлы lsusb

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

, Что файл только присутствует, если существуют USB-устройства.

0
ответ дан 10 April 2014 в 13:19

Другие вопросы по тегам:

Похожие вопросы: