Ответ 1
Во-первых, позвольте мне указать лишь пару вопросов о руководстве, в котором вы сказали, что следуете:
-
он требует (он говорит так в самом первом абзаце), вы понять USB, что противоположно попытке установить соединение USB между двумя компьютерами с помощью кабеля A-A (оба) и ожидая его работы.
-
Известно, что Линаро (организация, опубликовавшая руководство) за его работу по улучшению Linux на платформе ARM. Руководство просто делает не применяются к компьютерам на базе x86.
Кроме того, вам нужно понять, что USB
- это асимметричный протокол между USB Host
(ведущим) и USB Device
(ведомый). Это правило не существует. Чтобы иметь возможность подключать 2 устройства с помощью USB
- для одного устройства должен быть настроен USB-контроллер как USB Host
, а другой должен иметь контроллер USB, настроенный как USB Device
. Проблема с аппаратными USB-контроллерами, которые используются на персональных компьютерах (автономных или встроенных в Intel PCH), заключается в том, что они могут работать только как USB Host
. Никакое программное обеспечение не может изменить это.
Все проекты и ресурсы, на которые вы ссылались в своем вопросе, пытаясь доказать, что ваш желаемый результат возможен, были разработаны для платформ, отличных от ПК.
Если вы настаиваете на использовании ПК в качестве USB Device
, очень мало доступных в продаже USB-адаптеров (в основном, плат USB-контроллера), которые используют чипы USB-контроллера с поддержкой UDC. Но из-за их редкости они обычно довольно дороги (те, что я видел, продавались примерно за 200 долларов). Поэтому, если ваше первоначальное намерение заключалось в том, чтобы снизить затраты на разработку, переключившись на товарное оборудование - этот вариант вам тоже не поможет.
Вот как выглядит один из таких адаптеров: