Моделирование USB-устройства для автоматизации

Мне нужно смоделировать USB-устройство для автоматизации и тестирования (в Linux). Оригинальный драйвер/приложение для этого устройства использует «libusb» для связи с ним.

У меня нет большого опыта работы с Linux и моделированием, после некоторых поисков я понял, что мне нужно написать драйвер уровня ядра и приложение в пользовательском пространстве для имитации этого устройства. Это правильно? Если да, то как это можно сделать?

Заранее спасибо.


person Gaurav Agrawal    schedule 03.06.2012    source источник
comment
Другим вариантом может быть использование программного обеспечения для виртуализации с поддержкой USB (например, VirtualBox или Qemu) и написание подключаемого модуля для того, что эмулирует USB-устройство для гостевой системы. (это может быть проще)   -  person pmdj    schedule 04.06.2012


Ответы (3)


Наконец, реализовал это, изменив «libusb», изменив его для отправки и получения передач через usb из очереди сообщений вместо usbfs. Запрограммировал мой симулятор на создание передач типа libsub и их отправку/получение с использованием очередей сообщений.

Симулятор теперь интерпретирует входящие переводы и отправляет их парсеру команд, который отправляет запрос/сообщение в систему автоматизации, используя сокеты в определенном формате. Система автоматизации отправляет свою инструкцию, отправляя парсеру команд через сокет. Этот сокет вызывает метод, специфичный для каждого запроса в симуляторе. Теперь симулятор формирует соответствующую структуру передачи и передает плагину устройства (через libusb) через очередь сообщений.

person Gaurav Agrawal    schedule 28.06.2012
comment
Было бы здорово, если бы вы поделились кодом для этого, я думаю, я найду это полезным. - person Didi Kohen; 21.03.2013

Я думаю, что то, что вы ищете, будет называться виртуальным USB-устройством. В настоящее время в стандартном ядре нет ничего. Некоторые виртуальные машины обеспечивают эмуляцию USB, например. KVM обеспечивает эмуляцию USB. Существует фреймворк gadget, в котором можно искать ваше решение. Или найдите что-нибудь в проекте Linux USB.

Спасибо, Абхиджит.

person Abhijeet Kasurde    schedule 09.06.2012
comment
Спасибо за ваше предложение, посмотрел API гаджета, прежде чем задавать этот вопрос. Были трудности с реализацией. - person Gaurav Agrawal; 28.06.2012
comment
@gaurav-agrawal, не могли бы вы поделиться ссылкой или примером исходного кода для этого вопроса? - person Abhijeet Kasurde; 29.06.2012

Проект usb-vhci может быть полезен, если вы хотите, чтобы устройство было представлено ядру. так же, как настоящее оборудование.

person Tyler Hall    schedule 10.07.2013