Как я могу использовать целевой режим в Linux с USB?

7

Ядро 3.5 представляет:

Этот выпуск включает драйвер для использования соединения IEEE-1394 в качестве транспорта SCSI. Это позволяет предоставлять устройства SCSI другим узлам на шине Firewire, например жестким дискам. Эта функция аналогична режиму целевого диска Firewire на многих компьютерах Apple.

В этом выпуске также добавлен драйвер USB-гаджета, который делает то же самое с USB. Драйвер поддерживает два поддерживаемых протокола USB: BBB или BOT (только для группового транспорта) и UAS (SCSI с USB-подключением). BOT объявляется на альтернативном интерфейсе 0 (основной), а UAS - на альтернативном интерфейсе 1. Оба протокола могут работать на USB 2.0 и USB 3.0. UAS использует функцию USB 3.0, называемую поддержкой потоков.

http://kernelnewbies.org/Linux_3.5

У меня есть Arch Linux с ядром 3.5.3-1 и я хочу попробовать эту функцию.

dash17291
источник
Взгляните на SCST и libusb-gadget (последнее обновление 3 года назад), которые могут быть полезны.
Harrymc

Ответы:

4

FireWire - это одноранговая архитектура, поэтому все, что требуется для того, чтобы компьютер притворился жестким диском, - это какое-то программное обеспечение.

USB, с другой стороны, строго различает хост (ПК) и устройства. Может ли ваше оборудование работать как хост или как устройство (или и то, и другое, в случае USB-On-The-Go), зависит от того, для чего предназначен ваш интерфейсный чип USB.

Linux работает как на ПК, так и на устройствах, поэтому у нее есть драйверы для обоих типов интерфейсов USB. Однако все драйверы «USB Gadget» требуют, чтобы интерфейсная микросхема поддерживала режим устройства, и ни один из контроллеров, встроенных в ПК, этого не делает.

Единственный шанс запустить этот код - использовать какое-либо встроенное устройство, например, маршрутизатор, сетевое хранилище или телефон.

CL.
источник
2

Из кода под этим сообщением вы можете увидеть патчи. Тот, который имеет отношение к вам:

--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -798,6 +798,16 @@ config USB_MASS_STORAGE
          Say "y" to link the driver statically, or "m" to build
          a dynamically linked module called "g_mass_storage".

+config USB_GADGET_TARGET
+       tristate "USB Gadget Target Fabric Module"
+       depends on TARGET_CORE
+       help
+         This fabric is an USB gadget. Two USB protocols are supported that is
+         BBB or BOT (Bulk Only Transport) and UAS (USB Attached SCSI). BOT is
+         advertised on alternative interface 0 (primary) and UAS is on
+         alternative interface 1. Both protocols can work on USB2.0 and USB3.0.
+         UAS utilizes the USB 3.0 feature called streams support.
+
 config USB_G_SERIAL
        tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
        help

Это показывает, что USB_GADGET_TARGETбыло добавлено: если вы включите эту опцию в своем ядре и перекомпилируете / переустановите ядро, вы сможете использовать целевой режим в Linux с USB. Обратите внимание, что вы также должны включить TARGET_CORE.

Более подробную информацию можно найти по адресу:

Тамара Вийсман
источник