Вопрос или проблема
Я подключил встроенный хаб к своему микропроцессору. Встроенный хаб — это USB2514B, а микропроцессор — STM32MP1.
Я могу указать соединение с встроенным хабом, используя OHCI (Open Host Controller Interface), но тогда я получу сообщения об ошибках.
usb 1-1.4: device descriptor read/64, error -62
usb 1-1-port4: не удается перечислить USB-устройство
Это означает, что OHCI (USB 1.1) не может взаимодействовать с USB2514B, который требует спецификацию USB 2.0.
Но если я подключу свой встроенный хаб, используя EHCI (Enhanced Host Controller Interface), который является USB 2.0.
Тогда в Linux я не получу никаких ошибок относительно описания устройства. Мой lsusb
выглядит так:
>> lsusb
Шина 001 Устройство 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Вопрос:
Означает ли это, что 1d6b:0002
— это хаб USB2514B, или это означает, что это внутренний USB процессора?
Я ищу способ подтвердить, есть ли у меня соединение с USB2514B или lsusb
показывает только моё внутреннее USB-соединение от процессора.
ПРИМЕЧАНИЕ: Этот встроенный USB-хаб не требует внешних интерфейсов связи, таких как SMDbus, I2C или других. Только обычное USB-соединение + конфигурация устройства в дереве Linux.
&usbh_ehci{
status = "okay";
/* USER CODE BEGIN usbh_ehci */
phys = <&usbphyc_port1>;
#address-cells = <1>;
#size-cells = <0>;
/* встроенный HUB */
hub@1 {
compatible = "usb424,2514";
reg = <1>;
vdd-supply = <&v3v3>;
};
/* USER CODE END usbh_ehci */
};
&usbh_ohci{
status = "disabled";
};
Полезные источники:
Ответ или решение
Когда вы подключаете встроенный USB-хаб, такой как USB2514B, к вашему микропроцессору STM32MP1, важно понимать, как операционная система интерпретирует эту конфигурацию. Ваша проблема заключается в том, как выявить, регистрируется ли хаб USB2514B как корневой USB-хаб или как внешнее устройство. Давайте рассмотрим ключевые аспекты.
Проблема с обнаружением
Вы упомянули, что при подключении к хабу через Open Host Controller Interface (OHCI) возникают ошибки. Это связано с тем, что OHCI поддерживает спецификацию USB 1.1, которая не совместима с вашим USB2514B, так как он требует USB 2.0. Эти ошибки указывают на то, что ваша система не может корректно инициализировать USB-хаб.
Когда вы переключаетесь на Enhanced Host Controller Interface (EHCI), который поддерживает USB 2.0, система начинает обнаруживать хаб без ошибок, и lsusb
отображает только Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
. Но интересно, что это означает в контексте вашего устройства.
Интерпретация вывода lsusb
Вывод команды lsusb
фактически показывает корневой USB-хаб, который управляется вашим микропроцессором. Код 1d6b:0002
присваивается "Linux Foundation" и означает, что это не идентификатор вашего USB2514B. Вместо этого это указывает на внутренний USB-хаб, встроенный в STM32MP1. Поскольку EHCI работает на уровне контроллера, вывод lsusb
не может продемонстрировать наличие подключенного внешнего хаба, если он не был детектирован или зарегистрирован правильно в системе.
Путь к подтверждению подключения к USB2514B
Чтобы проверить успешное подключение к USB2514B, следуйте этим шагам:
-
Проверьте последовательность питания: Убедитесь, что все необходимые линии питания, такие как VDD, подключены к USB2514B и обеспечивают корректную работу.
-
Рассмотрите вывод dmesg: Проверьте вывод команды
dmesg
, чтобы увидеть, нет ли сообщений об обнаружении USB-устройств,/ошибках инициализации или других проблем, которые могут указать на отсутствие USB2514B. -
Обновите конфигурацию устройства: Убедитесь, что выставлены все необходимые параметры в конфигурации Device Tree. Ваша конфигурация уже содержит крепление для вашего устройства, что является позитивным знаком.
-
Подключите внешние USB-устройства: Если возможно, подключите устройство (например, флеш-накопитель) к USB2514B и проверьте, будет ли оно отображаться в
lsusb
. Если устройство определяется, значит, связь с хабом установлена. -
Используйте анализаторы USB: Если доступно, используйте USB-анализатор, чтобы отслеживать трафик на шине USB и подтвердить, что данные проходят через ваш USB2514B.
Заключение
В итоге, вывод команды lsusb
с 1d6b:0002
не указывает на USB2514B, а лишь показывает встроенный хаб вашего микропроцессора. Чтобы убедиться в правильной работе USB2514B, потребуется дополнительная диагностика через dmesg
, анализ подключения внешних устройств или использование специализированного оборудования. Это поможет вам убедиться, что ваша система полностью функционирует и корректно взаимодействует с USB-хабом.