Віртуальні емулятори usb для комп'ютера. Створюємо віртуальну флешку в комп'ютері

Проект Олоф Лагерквист, відмінна програма для емуляції дисків, але оскільки диски емулювати можуть всі, а от створити флешку або дискету не всі можуть похвалитися. Диски створюються в віртуальної пам'яті, фізично їх можна вивантажувати в файлові образи. Після установки, програма доступна з панелі управління ПК.

Тиснемо "ОК" все віртуальний образ готовий.

образ
Образ можна зберегти і монтувати при необхідності. Де це стане в нагоді? Наприклад для ледачих на таку віртуальну флешку можна закинути сертифікати для КріптоПро.)) Або використовувати як диск в оперативній пам'яті для зберігання кеша, файлу підкачки і іншого.
Є ще альтернативна GUI -

Автоматичне підключення:
echo off
rem помістити в автозавантаження для автоматичного монтування
c: \\ WINDOWS \\ system32 \\ imdisk.exe -a -f "% PROGRAMFILES% \\ flash.img" -m f: -o rem

Деякі параметри командного рядка:

imdisk.exe -e -s 300M -m B: - збільшення диска B на 300 Мб

imdisk -a -t file -o ro -m y: -f C: \\ Boot.img - монтувати образ Boot.img диском Y, тільки читання

imdisk -a -t file -m y: -f C: \\ Boot.img - монтувати образ Boot.img диском Y, тільки читання / запис

imdisk -d -m y: - демонтувати диск Y

imdisk -a -s 150M -m #: -p "/ fs: ntfs / y / q / v: imdisk - створити диск розміром 150 Мб, буква диска перша вільна, форматування в NTFS, мітка диска imdisk

imdisk -a -s 10% -m #: -p "/ fs: ntfs / y / q / v: imdisk - теж що і попереднє, тільки розмір вказаний як 10 відсотків від вільної пам'яті.

imdisk -a -s -500M -m #: -p "/ fs: ntfs / y / q / v: imdisk - теж що і попереднє, тільки розмір вказаний зі знаком мінуса, тобто рівний обьему вільної пам'яті мінус зазначений розмір. При 1200 Мб вільної пам'яті розмір диска стане 1200-500 \u003d 700Мб

imdisk.exe -a -t proxy -o ip -f 127.0.0.1:80 -m Z: - використання з сервером, знайшов в інеті, на ділі не перевіряв.

A - підключення вирт. диска.

D - відключення вирт. диска.

E - редагування вирт. диска.

_________________________

B - вказати зсув, тобто початок даних на диску, вказується для дисків створених в різних програмах, в образах яких потрібно пропустити початкові атрибути у файлі.

S - розмір віртуального диска. Розмір є кількістю байтів якщо не додано суфікс a (авто), b (кільк. 512 байтових блоків), k (тисяча байт), m (мільйон байт), g (мільярд байт), t (трильйона байт), K (кілобайт) , M (мегабайт), G (гігабайт) або T (терабайт). Тисяча байт і кілобайт, відрізняються тим, що в кілобайті 1024 байт, а не 1000. Наприклад. -s 150M або -s 10% - 10 відсотків від вільної пам'яті. Параметр -500M - зі знаком мінуса визначає розмір створюваного диска як об'єм вільної пам'яті мінус зазначений розмір.

O - встановити опції, застосовується спільно з параметрами зазначеними нижче

ro - тільки читання

rw - читання / запис

rem - встановити як змінний диск (флешка). Це визначає властивості диска, кешування та інше.

fix - встановити як постійний, фіксований диск (на противагу rem)

cd - створення віртуального CD-ROM / DVD-ROM.

fd - створення флоппі диска. За замовчуванням для розмірів 160K, 180K, 320K, 360K, 640K, 720K, 820K, 1200K, 1440K, 1680K, 1722K, 2880K, 123264K or 234752K.

hd - створення розділу хард-року.

ip - параметр для підключення до проксі сервера.

comm - підключення до сервера пам'яті через COM-порт.

________________

M - Визначає потрібний диск F. Наприклад -m B: або -m y: або -m #: - перша вільна буква диска.

F - ім'я файлу вирт. диска, наприклад -f C: \\ Boot.img або -f \\\\ server \\ share \\ image.bin або -F \\ Device \\ Harddisk0 \\ Partition1 \\ image.bin - останнє, коли буква диска не призначена і визначення по номеру хард-року, номеру партіціі (логічного диска) і далі реальний шлях.

Розробка різних пристроїв на основі мікроконтролерів - заняття, гідне справжнього комп'ютерного гику. Безсумнівно, корисною фішкою будь-якого гаджета буде USB-інтерфейс для підключення до комп'ютера. Але що робити, якщо в мікросхемі AVR не передбачена апаратна підтримка USB?

V-USB: розмір має значення

При розробці власного гаджета часто постає проблема його підключення до комп'ютера. Треба сказати, що порти LPT і COM - тепер екзотика на материнських платах ПК, не кажучи про ноутбуки, у яких ці інтерфейси зникли давним-давно. Тому у сучасних комп'ютерів практично не залишилося альтернатив інтерфейсу USB.

Якщо ресурси чіпа використовуються на всі сто відсотків, то краще відразу дивитися в бік пристроїв з апаратною підтримкою універсальної послідовної шини (такі мікроконтролери присутні в лінійці будь-якого виробника). В інших випадках можна використовувати Софтова USB.

Для мікроконтролерів Atmel існує чудовий проект V-USB, який пропонує програмну реалізацію низької пристрої USB 1.1. Код V-USB буде працювати на будь-якому пристрої AVR, у якого є хоча б 2 КБ Flash-пам'яті і 128 байт ОЗУ, з тактовою частотою 12; 12,8; 15; 16; 16,8 або 20 МГц.

Використання продукту можливо як в рамках open source ліцензії GPL, так і на комерційній основі. Для того щоб розробляти власні USB-пристрої, зазвичай також потрібно купувати щось на зразок ліцензії. Але хлопці з V-USB подбали і про це, придбавши пару Vendor ID - Product ID і дозволивши їх використовувати будь-кому.

Апаратна обв'язка для підключення USB-шини до мікроконтролеру дуже проста. Якщо пристрій споживає не надто багато, то живити його можна прямо від шини (вважається, що лінія харчування USB комп'ютера здатна віддавати струм до 500 мА). Так як інформаційні лінії (D + і D-) використовують рівень сигналу 3,6 В, крім токоограничивающих резисторів, необхідні стабілітрони для узгодження з 5-вольтової логікою чіпа. Щоб позначити тип підключення, потрібно «підтягнути» напруга живлення через опір 1,5 кОм до лінії D-.

Альтернативний варіант сполучення по USB - знизити напругу живлення контролера за допомогою відповідної мікросхеми стабілізації або просто парою діодів. Останню схему можна знайти на сайті проекту V-USB.

програматор USBtiny

Для мікроконтролерів AVR існує безліч різних програматорів. USBtiny тут згадується, зокрема, тому, що містить програмну реалізацію USB, аналогічну V-USB. Схема цього програматора проста: версія 2 містить дві мікросхеми, а перша версія - лише одну (власне чіп ATtiny2313). Завдяки детальному опису на сайті і простим комплектуючих пристрій легко зробити навіть початківцю. USBtiny сумісний з популярною програмою avrdude, використовуваної для програмування мікроконтролерів AVR.

Єдина проблема полягає в заливці прошивки в чіп програматора - для цього потрібен ... програматор. Якщо є комп'ютер з LPT-портом, то можна зробити один з варіантів FBPRG ака «п'ять дротів», який залізно

готуємо санки

Програмний інструментарій, необхідний для реалізації найпростішої прошивки USB-гаджета, гранично аскетичний: компілятор gcc-avr, бібліотека avr-libc, програматор avrdude і набір binutils для AVR. В Debian / Ubuntu все, що потрібно, встановлюється однією командою:

$ Sudo apt-get install avrdude binutils-avr gcc-avr avr-libc

На безмежних просторах інтернету нескладно знайти дуже докладний посібник з V-USB і libusb (англійською). Згідно мануалу, для додавання підтримки USB в проект потрібно папка usbdrv з архіву з останньою версією V-USB. В корені цієї папки є шаблон конфігурації usbconfig-prototype.h. Потрібно зробити копію цього файлу, назвавши її usbconfig.h. Далі - виправити usbconfig.h, вказавши порт (D), лінії якого будуть використовуватися для введення-виведення, безпосередньо номера лінії D + (2) і D- (3), а також частоту (12 МГц), на якій працює чіп (ATtiny2313 ):

#define USB_CFG_IOPORTNAME D #define USB_CFG_DMINUS_BIT 3 #define USB_CFG_DPLUS_BIT 2 #define USB_CFG_CLOCK_KHZ 12000

Щоб скористатися ліцензією V-USB для пристрою, числові ідентифікатори виробника і пристрої змінювати не треба. А ось символьні імена можна вибрати на свій смак (вони дозволять відрізнити кілька пристроїв на основі V-USB, підключених до одного і того ж комп'ютера):

#define USB_CFG_VENDOR_ID 0xc0, 0x16 #define USB_CFG_DEVICE_ID 0xdc, 0x05 #define USB_CFG_VENDOR_NAME "n", "e", "t", "s", "4", "g", "e", "e", "k" , "s", ".", "c", "o", "m" #define USB_CFG_VENDOR_NAME_LEN 14 #define USB_CFG_DEVICE_NAME "U", "S", "B", "e", "x", "a" , "m", "p", "l", "e" #define USB_CFG_DEVICE_NAME_LEN 10

різноманітні гаджети

У тебе є ідея якогось пристрою? Не поспішай паяти і кодувати, а пошукай, можливо, хтось подібне вже робив. Якщо не вийде скористатися готовими схемами і кодами, то хоча б не доведеться починати все з нуля.

Наприклад, проект V-USB завдяки ліцензійної політики накопичив пристойну базу готових (в тому числі і вільно розповсюджуваних) рішень. Тут можна знайти різні реалізації клавіатур, USB-адаптерів для джойстиків, геймпадов (в тому числі і раритетних, наприклад SNES / NES, Nintendo 64, ZX Spectrum джойстик, Sony PlayStation 1/2) тощо. Адаптери DMX, віртуальні порти COM і UART, i2c, Servo, бездротові інтерфейси DCF77, IR - все, що допоможе підключити до ПК більше нових пристроїв. Логгер, платформи для датчиків і сенсорів, адаптери для LCD-дисплеїв, програматори і завантажувачі також можуть виявитися корисними в господарстві.

Програма для чіпа - елементарно!

При взаємодії по шині USB комп'ютер - це головне пристрій, який періодично відправляє керуючі повідомлення-запити. Контролер, відповідно, підпорядковане і повинен відповідати на запити. Формат керуючого повідомлення визначається структурою usbRequest_t з файлу usbdrv.h:

Typedef struct usbRequest (uchar bmRequestType; uchar bRequest; usbWord_t wValue; usbWord_t wIndex; usbWord_t wLength;) usbRequest_t;

Створимо файл main.c на одному рівні з папкою usbdrv і опишемо в ньому необхідні заголовні файли, визначення та змінні:

#include #include #include #include "usbdrv.h" #define F_CPU 12000000L // Частота МК #include #define DATA_OUT 1 // Команда відправки #define DATA_IN 2 // Команда отримання // Буфер static uchar replyBuf \u003d "Hello World!"; static uchar dataLength \u003d 0, dataReceived \u003d 0;

У main.c перевизначити функцію usbFunctionSetup, яка викликається автоматично при отриманні нового запиту:

USB_PUBLIC uchar usbFunctionSetup (uchar data) (usbRequest_t * rq \u003d (void *) data; switch (rq-\u003e bRequest) (case DATA_OUT: // Обробити команду відправки даних usbMsgPtr \u003d replyBuf; // Вказати буфер return sizeof (replyBuf); / / Повернути розмір буфера case DATA_IN: // Обробка команди отримання даних dataLength \u003d (uchar) rq-\u003e wLength.word; // Отримати довжину dataReceived \u003d 0; // Викликів usbFunctionWrite буде багато if (dataLength\u003e sizeof (replyBuf)) // Перевірка на переповнення dataLength \u003d sizeof (replyBuf); return USB_NO_MSG; // Повернути 255) return 0;)

Як видно з лістингу, найпростіший спосіб відправити дані комп'ютера - встановити в usbFunctionSetup значення покажчика usbMsgPtr на буфер ОЗУ (replyBuf), де знаходяться дані, а потім повернути його довжину. Розмір буфера не повинен перевищувати 254 байта. Для ATtiny2313 c його 128 байтами ОЗУ цього достатньо. Для більш функціональних пристроїв є другий спосіб - перевизначення функції usbFunctionRead.

Щоб отримати дані, по-перше, потрібно в функції usbFunctionSetup витягти довжину повідомлення з поля wLength запиту і зберегти її в глобальній змінній dataLength. По-друге, в main.c потрібно перевизначити функцію usbFunctionWrite, призначену для обробки одержуваних даних і спричинюється автоматично (і очевидно, кілька разів), якщо usbFunctionSetup повертає значення USB_NO_MSG (255):

USB_PUBLIC uchar usbFunctionWrite (uchar * data, uchar len) (uchar i; // Зберегти отриману порцію даних в буфер for (i \u003d 0; dataReceived< dataLength && i < len; i++, dataReceived++) replyBuf = data[i]; return (dataReceived == dataLength); }

Власне, функція usbFunctionWrite займається тим, що заповнює буфер replyBuf отриманими даними.

До речі, щоб цей метод працював, потрібно внести зміни в usbconfig.h:

#define USB_CFG_IMPLEMENT_FN_WRITE 1

Ну і остання функція прошивки - main:

Int main () (usbInit (); // Ініціалізувати USB usbDeviceConnect (); // Підключити пристрій sei (); // Дозволити переривання // У нескінченному циклі чекати керуючі повідомлення while (1) usbPoll (); return 0;)

Задіємо USART / UART

Хороша альтернатива програмному / апаратному USB - використання в чіпі популярного інтерфейсу USART / UART зі стороннім перетворювачем цього протоколу в USB, який можна виконати, наприклад, на основі мікросхеми FT232RL.

Libusb: і не одягнена, і не оголена

Ти запитаєш: а чи доведеться писати драйвер для операційної системи комп'ютера, щоб підключити USB-пристрій? Якщо використовувати libusb, то можна обійтися без реалізації повноцінного модуля ядра. Libusb - це open source бібліотека, яка дозволяє швидко запрограмувати, по-перше, пошук пристрою на шині, а по-друге - обмін даними з ним.

Під Linux бібліотеку і необхідні заголовні файли можна отримати з вихідних кодів. А краще скористатися стандартним репозиторієм твого дистрибутива. Для Debian / Ubuntu, наприклад, так:

$ Sudo apt-get install libusb-dev

Існує також порт libusb під Windows - libusb-win32. Всупереч назві проекту, також підтримуються 64-бітові ОС від Microsoft (починаючи з версії 1.2.0.0).

Але libusb - це окрема тема розмови. Думаю, з програмуванням для ПК ти знаком і зможеш в цьому розібратися сам. Тому буду лаконічним. Створюємо файл usbtest.c і починаємо наповнювати його контентом. Спочатку необхідні заголовки та визначення:

#include [...] // Для комп'ютера сенс команд зворотний, // але позначення залишаються ті ж #define DATA_OUT 1 #define DATA_IN 2

Функція usbOpenDevice для ініціалізації пристрою:

Usb_init (); // Ініціалізувати USB usb_find_busses (); // Знайти шини usb_find_devices (); // Знайти пристрої // Перебрати всі шини for (bus \u003d usb_get_busses (); bus; bus \u003d bus-\u003e next) (// Перебрати всі пристрої на шині for (dev \u003d bus-\u003e devices; dev; dev \u003d dev-\u003e next) (// Якщо ідентифікатори вендора і продукту не збігаються ... if (dev-\u003e descriptor.idVendor! \u003d vendor || dev-\u003e descriptor.idProduct! \u003d product) continue; // ... пропустити цю ітерацію // спробувати отримати дескриптор пристрою if (! (handle \u003d usb_open (dev))) (fprintf (stderr, "% s \\ n", usb_strerror ()); continue;) return handle; // Повернути дескриптор)) // Пристрій не знайдено return NULL;

Як видно, параметрами usbOpenDevice виступають числові ідентифікатори виробника і пристрої. У разі якщо пристрій присутній на шині, повертається його дескриптор. Якщо пристроїв на V-USB буде кілька - доведеться дописати перевірку символьних імен вендора і продукту.

І функція main консольної утиліти usbtest:

Int main (int argc, char ** argv) (// Дескриптор пристрої usb_dev_handle * handle \u003d NULL; int nBytes \u003d 0; char buffer; // Шукаємо пристрій handle \u003d usbOpenDevice (0x16C0, 0x05DC); if (handle \u003d\u003d NULL) (fprintf (stderr, "Could not find USB device! \\ n"); exit (1);) // Аргумент out - отримати дані від чіпа if (strcmp (argv, "out") \u003d\u003d 0) (nBytes \u003d usb_control_msg (handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, DATA_OUT, 0, 0, (char *) buffer, sizeof (buffer), 5000); printf ( "Got% d bytes:% s \\ n", nBytes, buffer); // аргумент in - відправити рядок (наступний аргумент)) else if (strcmp (argv, "in") \u003d\u003d 0 && argc\u003e 2) (nBytes \u003d usb_control_msg (handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, DATA_IN, 0, 0, argv, strlen (argv) +1, 5000);) if (nBytes< 0) fprintf(stderr, "%s\n", usb_strerror()); usb_close(handle); // Закрыть дескриптор return 0; }

Тут править бал функція usb_control_msg, яка оголошена в який включається файлі usb.h. Вона має купу параметрів і власне створює ті керуючі повідомлення, обробка яких реалізована в прошивці мікроконтролера.

Proteus відпочиває

Всенародно улюблений симулятор електричних схем Proteus ISIS марний при розробці пристроїв з програмною реалізацією USB. Його емулятор USB підтримує тільки чіпи з апаратною підтримкою універсальної послідовної шини (наприклад, AT90USB646 або AT90USB1286).

Збираємо, прошиває, тестуємо

Нижче наведено невеликий, але дуже корисний Makefile, c допомогою якого командою make з main.c і usbtest.c легко отримати прошивку для чіпа - main.hex і бінарник утиліти usbtest:

CC \u003d avr-gcc OBJCOPY \u003d avr-objcopy CFLAGS \u003d -Wall -Os -Iusbdrv -mmcu \u003d attiny2313 OBJFLAGS \u003d -j .text -j .data -O ihex OBJECTS \u003d usbdrv / usbdrv.o usbdrv / oddebug.o usbdrv / usbdrvasm .o main.o CMDLINE \u003d usbtest # Мета: зібрати все all: main.hex $ (CMDLINE) # Збірка утиліти для комп'ютера $ (CMDLINE): usbtest.c gcc -I ./libusb/include -L ./libusb/lib / gcc -O -Wall usbtest.c -o usbtest -lusb # Очистити проект від бінарного коду clean: $ (RM) * .o * .hex * .elf usbdrv / *. o # Отримання файлу прошивки з elf-файлу%. hex:% .elf $ (OBJCOPY) $ (OBJFLAGS) $< [Email protected] # Збірка elf-файлу main.elf: $ (OBJECTS) $ (CC) $ (CFLAGS) $ (OBJECTS) -o [Email protected] # Збірка файлів бібліотеки V-USB $ (OBJECTS): usbdrv / usbconfig.h # C в об'єктний код% .o:% .c $ (CC) $ (CFLAGS) -c $< -o [Email protected] # Asm в об'єктний код% .o:% .S $ (CC) $ (CFLAGS) -x assembler-with-cpp -c $< -o [Email protected]

Щоб залити прошивку в мікроконтролер за допомогою програматора usbtiny, набираємо команду:

$ Sudo avrdude -p t2313 -c usbtiny -e -U flash: w: main.hex: i -U lfuse: w: 0xef: m

У avrdude фьюз задаються не дуже наочно, але їх можна легко розрахувати в одному з online-калькуляторів.


Підключаємо пристрій до комп'ютера і перевіряємо, як воно працює (usbtest c параметром out зчитує рядок, in - записує вказаний рядок в буфер чіпа):

$ Sudo ./usbtest in all_ok $ sudo ./usbtest out

Ложка дьогтю

Софтова USB-пристрій не є панацея. Програмні реалізації зазвичай мають ряд спрощень, таких як відсутність перевірки контрольної суми і симетричності каналу, що негативно позначається на помехозащищенности. Також зазвичай софтові бібліотеки використовують низькошвидкісні режими роботи USB. Та й код USB-бібліотеки «їсть» і без того невелику пам'ять чіпа.

Підглядаємо ...

На рівні логіки протокол USB - це, по суті, багаторівнева пакетна передача даних. У цьому неважко переконатися (а заодно дізнатися багато цікавого про USB), скориставшись аналізатором мережевих протоколів Wireshark. Попередньо необхідно завантажити драйвер USB-монітора:

$ Sudo modprobe usbmon

Тепер в списку інтерфейсів Wireshark можна вибирати шини USB. Подивитися номер шини пристрої можна, наприклад, в балках.

висновок

Сподіваюся, після того, як ти навчився пересилати дані між комп'ютером і мікроконтролером AVR, твоя пристрасть до електроніки запалився з новою силою, породивши чимало оригінальних і корисних пристроїв. Залишається лише побажати тобі успіхів на цьому складному, але цікавому терені.

Іноді виникає ситуація, коли потрібна флешка, а її немає під рукою. Наприклад, для роботи деяких бухгалтерських та звітних програм потрібна наявність зовнішнього накопичувача. У такій ситуації можна створити віртуальний накопичувач інформації.

Використовуючи спеціальне програмне забезпечення, це можна зробити декількома способами. Розглянемо кожен з них покроково.

Спосіб 1: OSFmount

Ця невелика програма дуже виручає, коли немає під рукою флешки. Вона працює в будь-якій версії Windows.

Після того, як Ви скачали програму, зробіть ось що:



У роботі з цією програмою можуть знадобитися додаткові функції. Для цього потрібно увійти в головному вікні в пункт «Drive Actions». А далі можливо буде використовувати такі опції:

  • Dismount - демонтувати тому;
  • Format - форматування томи;
  • Set media read-only - ставить заборону на запис;
  • Extendsize - розширює розмір віртуального пристрою;
  • Savetoimagefile - служить для збереження в потрібному форматі.

Спосіб 2: Virtual Flash Drive

Хороша альтернатива вищеописаного способу. При створенні віртуальної флешки ця програма дозволяє захистити інформацію на ній за допомогою пароля. Перевагою такої є її працездатність в старих версіях Windows. Тому, якщо у Вас на комп'ютері стоїть версія Windows XP або нижче, ця утиліта допоможе швидко підготувати віртуальний накопичувач інформації на комп'ютері.

Інструкція з використання даної програми виглядає ось так:

  1. Скачайте і встановіть Virtual Flash Drive.
  2. У головному вікні натисніть кнопку «Mount new».
  3. з'явиться вікно «Create new volume», Вкажіть в ньому шлях для створення віртуального носія і натисніть «Ок».


Як бачите, програма дуже проста в обігу.

Спосіб 3: ImDisk

Це одна з найбільш популярних програм для створення віртуальної дискети. Використовуючи файл образу або пам'ять комп'ютера, вона створює віртуальні диски. При використанні спеціальних ключів при її завантаження, в якості віртуального знімного диска буде фігурувати флеш-носій.


Спосіб 4: Хмарне сховище

Розвиток технологій дозволяє створювати віртуальні флешки, і зберігати на них інформацію в інтернеті. Даний спосіб являє собою папку з файлами, яка доступна певному користувачеві з будь-якого комп'ютера, підключеного до інтернету.

До таких сховищ даних відносяться Яндекс.Діск, Google Drive і Хмара Mail.ru. Принцип використання цих сервісів однаковий.

Розглянемо, як працювати з Яндекс Диском. Цей ресурс дозволяє безкоштовно зберігати на ньому інформацію до 10 Гб.



Робота з таким віртуальним носієм інформації дозволяє вам повністю керувати вашими даними: групувати їх в папки, видаляти непотрібні дані і навіть ділитися посиланнями на них з іншими користувачами.

11

У мене є додаток Linux, для якого я хотів би автоматизувати деякі тести, і його стан повинен змінюватися в залежності від стану певних пристроїв, тобто USB-пристроїв, WLAN-пристроїв, WAN-пристроїв. Однак у нас більше немає фізичних USB-пристроїв, WLAN, WAN і т. Д Пристроїв, тому мені потрібно з'ясувати спосіб тестування цієї програми без фактичного підключення фізичних пристроїв, включення / вимикання їх і т. Д.

Я починаю з простого створення віртуального USB-пристрою, який я можу контролювати з робочих просторів, але з мого боку, з'являється монументальна недолік знань, який заважає мені приймати будь-які зі схожих тим на цих форумах і застосовувати їх до мого проекту. Я відчуваю, що мені потрібно створити якийсь віртуальний USB-драйвер, а потім зв'язати його з якоюсь програмою на рівні користувача, а не з usbfs. Однак, навіть якщо я створюю цей віртуальний драйвер, як мені «підключити» цей пристрій з робочих просторів і отримати мою програму, зареєстровану за допомогою цього конкретного драйвера? Чи є то, що я намагаюся зробити, навіть можливо?

  • 2 відповіді
  • Сортування:

    активність

0

Чи не могли б ви протестувати додаток у віртуальному середовищі за допомогою VMWare? Потім ви можете «підключити» будь віртуальний пристрій на своєму комп'ютері до гостьової віртуальної машині і протестувати додаток таким чином.

8

Кращий спосіб - використовувати драйвери та обладнання для гаджетів Linux, які дозволяють вам бути USB-пристроєм. Драйвер гаджета дозволяє комп'ютеру «прикидатися» будь-яким пристроєм. Тоді ваша тестована система має один кабель USB OTG для гаджета. Вам навіть не потрібно відключати кабель, якщо у вашого гаджета є відповідне обладнання. «Гаджет-ящик» може бути вашим робочим столом / ноутбуком під управлінням Linux (якщо він підтримує USB OTG) або навіть Android-телефоном або малиною Pi. (Обережно, що USB кабелів висмоктувати Просто тому, що канатні припадки не означає, що він правильно підключений до USB OTG.).

Після того, як ви маєте право апаратного USB OTG, гаджет коробок все програмне забезпечення:

1) Якщо тестоване пристрій підтримує OTG, переконайтеся, що ваш гаджет не намагається і не є USB-хостом. (Тоді ваше тестоване пристрій стане USB-клієнтом.) I.e. переконайтеся, що такі речі, як usb_storage, не завантажуються автоматично.

2) Ядро підтримує гаджети для USB-концентраторів, USB-Ethernet, USB-послідовних портів і USB-накопичувачів. Просто завантажте потрібні модулі в свій гаджет, і він «просто працює». Наприклад, щоб створити USB-накопичувач, зробіть щось на зразок цього: «insmod g_file_storage.ko file \u003d / dev / ram0». Дальня сторона буде думати, що ви підключили USB-накопичувач.

Для послідовних пристроїв, гаджет може працювати в просторі користувача код, який «піднімає трубку» на / Dev / USBx »і переговори в пристрій під випробуванням. (Мабуть, емулює модем 4G або будь-який інший.)

Тонни пристроїв дійсно «USB-серійний» під капотом, тому що виробник був занадто ледачий, щоб зрозуміти USB.

3) З невеликим повторним компіляцією або налаштуванням ви можете використовувати ці універсальні пристрої для гаджета, ID або повертати різні рядки постачальника і т. Д. Це не буде таким же, як «тестування на реальному апаратному забезпеченні», але, по крайней мере, ви тестируете стандартну версію цих пристроїв.

4) Для типів пристроїв, які ще не знаходяться в ядрі (наприклад, Wi-Fi або щось ще), ви самі по собі. З достатньою кількістю поту і сліз крові ви можете написати свій власний тип гаджета. (В ідеалі, використовуйте якомога більше в просторі користувача і обробляйте тільки критично важливі компоненти в ядрі ..)

Що це таке і навіщо воно потрібне?
Якщо у магнітоли в машині є вхід для CD чейнджером, до нього можна підключити подібний адаптер, він обдурить магнітолу і вона вирішить, що до неї підключили чейнджер, причому замість дисків використовується звичайна флешка з музикою. Адаптером можна буде управляти штатними засобами, включаючи управління з керма.

На муська вже було кілька оглядів подібних адаптерів, найвідоміші - китайські Yatour.

Я ж вирішив піти нестандартним шляхом, вирішив спробувати російський Тріома Флиппер 2.
Загальна оцінка - відмінно, покупкою задоволений, рекомендую.

За подробицями прошу під кат

Передмова

Є просте бажання - хочеться слухати в машині музику. По радіо далеко не завжди йде щось підходяще, возити з собою купу CD дисків, та й постійно їх записувати, набридло.
У мене в Пежо 407 2007 року стоїть ГУ (Головне Пристрій), в подальшому обзивали просто магнітолою, без USB, блютуза, та й без звичайного AUX входу.

Якщо в машині коштує звичайна магнітола, що не зав'язана на управління якимись функціями машини, найпростіше просто купити нову магнітолу. Брендовий магнітолу з USB входом можна купити в межах сотні євро. Ще якусь суму доведеться витратити, щоб вона розуміла управління з керма.

Можна поколхозіть і приробити AUX (аудіо) вхід, але все одно буде потрібен джерело звуку, та й про управління з керма доведеться забути.

Варіанти з FM трансмітерами я давно відкинув - пробував пару різних трансмиттеров, якість звуку було не дуже.

Є ще один шлях, підключити до магнітоли на вхід CD чейнджером апаптер, який дозволить слухати музику з флешок, керуючи адаптером штатними засобами магнітоли, в тому числі з керма. Можна знайти подібні адаптери від різних виробників з різними параметрами і відрізняються якістю, надійністю, зручністю або ціною.
Найвідоміший адаптер - Yatour. Найкрутіший, мабуть, американський Grom Audio, який грає, в тому числі, FLAC. Ну і до купи ще кілька пристроїв - Audiolink, Xcarlink, DMC, Dension.

В першу чергу, став дивитися на yatour. На ali cтоит від 50 $. Але відгуки в інтернеті ентузіазм трохи пригасили. На адаптері лінійний вихід з фіксованим рівнем, тому на багатьох магнітолах рівень гучності помітно нижче, ніж з магнітоли. Іноді нестабільна робота, зависання, критичність до наявності сторонніх файлів на флешці. Кількість підтримуваних каталогів - скільки дисків підтримує магнітола, в моєму випадку, це 6.

Офіційного сайту у yatour немає, сайти Ятура в інтернеті - це сайти продавців. І інформацію доводиться збирати по крупицях в різних місцях, в основному відписуються ті, хто його собі ставив, але їх досвід не завжди підійде для вашої магнітоли.
Але мені пощастило, натрапив на білоруського продавця yatour Сергія aka SSD, який відповів на всі мої запитання, включаючи особливості роботи з моєї магнітолою.
В цілому - працює, але можуть бути проблеми з гучністю і нестабільною роботою. Від Сергія вперше почув і про Grom Audio і про Тріоме, яку він теж продає.

Grom Audio на андроїд, підтримує FLAC, але немає моделі для мого автомобіля.

А ось Тріома Флиппер 2 зацікавив. В першу чергу можливістю регулювання рівня виходу (гучності). Крім того, у нього набагато зручніша організація папок і їх може бути набагато більше. І він набагато менш глючний.
За запозичив хорошу таблицю порівняння Yator і Trioma


Уточнення по Ятурам:
1. Сторонні файли не заважають відтворенню. Як мінімум, на деяких прошивках.

Отже, я свій вибір зробив. Тріома !!!
При покупці подібного адаптера треба обов'язково вибирати модель під свій автомобіль. Точніше, під автомагнітолу свого автомобіля. У різних магнітол можуть бути різні роз'єми під чейнджер, не сумісні між собою.

Де можна купити Тріому?

На сайті виробника є, які продають продукцію Тріоми. З покупкою адаптера в Росії або Білорусії проблем немає. А в європі, звідки мені купити простіше і не доведеться розмитнювати і платити НСО, ціни вище в два рази, від 120eur без вартості доставки.

Став шукати знайомих, які могли б привезти мені адаптер з Росії або Білорусії. Знайшов !!! Знайшов знайомого з Росії, який замовив і на початку лютого вже привіз мені адаптер! Олег, спасибі!

І ось адаптер у мене вдома!



У комплект входить сам адаптер, кабель для підключення до магнітоли і USB кабель.
Довжина кабелю для підключення до магнітоли всього 40см, що відразу накладає обмеження на розташування адаптера в машині - його доводиться розміщувати безпосередньо за магнітолою, навіть до бардачка з ним не дотягнутися.
Адаптер розміром десь з сигаретну коробку. Проста пластмасова коробка з стирчав кабелем для підключення під пристроїв або AUX кабелю. Втім, після того, як я підключу адаптер до магнітоли, його більше ніхто не побачить.
Додатково взяв AUX кабель з мініджеком на кінці (+ 500р)


Ще кілька фоток

Роз'єм для підключення доп.устройств, AUX кабелю або bluetooth адаптера


Мама на адаптері


Папа на кабелі


Роз'єм для магнітоли RD4


Чи не розкривати, гарантія


установка

Магнітола RD4, шестигранником відкручуємо два гвинти і дістаємо магнітолу.

Ззаду два відповідні роз'єми, на одному з них працювати не буде - перевірено;)
На фотке вказано потрібний роз'єм. У ньому штатно вже підключена проводка для підключення чейнджера, витягуємо встановлений роз'єм і включаємо свій.


Підключаємо кабель з адаптером, включаємо запалювання і чудо - все відразу запрацювало !!! Причому рівень гучності приблизно такий же як з вбудованого CD.

А ось далі починаємо думати - куди б вивести USB кабель. Найпростіше в моєму випадку виявилося прокинути кабель під кермом в маленький бардачок лівіше водія.


Сам адаптер засунув в нішу ззаду-ліворуч від магнітоли. Місця там небагато, після установки магнітоли на місце адаптер виявився там затиснутий кабелями, так що додатково закріплювати адаптер не було потрібно.

На всіх форумах пишуть, що на магнітоли потрібна активізація Чейнджера в сервісі. У мене ж все виявилося набагато простіше. Магнітола після включення сама визначила, що до неї підключений чейнджер і його стало можливо вибрати через перемикач входів (радіо / CD / чейнджер).
Як виявилося, активізація потрібна не для магнітоли, а для дисплея, щоб він міг відображати інформацію для Чейнджера.
Але півроку тому я а китайці, молодці, надсилають дисплей з усіма активізованими функціями. Так що у мене все запрацювало без додаткової активізації.

Робота адаптера

Якість звуку. Порівняно з CD плеєром. Штатна акустика в автомобілі досить посередня, так що різницю зі штатним CD плеєром на моїй машині ви точно не почуєте.
швидкість включення. Менше пари секунд після включення запалення на флешці з парою десятків каталогів. На форумах пишуть, що при декількох сотнях каталогів швидкість поменше. Адаптер запам'ятовує, де він грав до виключення і починає грати з цього ж місця. Це властивість цінно для любителів послухати аудіокниги. Адаптер запам'ятовує місце з 4-х останніх флешок /
Перемикання треків. Частки секунди, немає різниці в цьому ж або іншому каталозі знаходиться трек. Під час перемикання немає ніяких сторонніх звуків.
Заміна флешки. Під час роботи магнітоли витягуємо флешку і засовуємо нову. Вона визначається в перебігу декількох секунд і відразу починає грати. Під час заміни може прозвучати дуже тиха коротка трель.

Адаптер розуміє 32 каталогу, в яких може бути по 32 підкаталогу, в кожному з яких може бути до 99 файлів. Але скоро я зрозумів, що перемикач дисків у мене перемикає тільки перші шість дисків. Хоча в режимі Random адаптер бачить все каталоги.

Задав питання на форумі Тріоми, підтримка відповіла дуже швидко і запропонувала варіанти організації каталогів. Проблема виявилася в тому, що на RD4 кнопки хоч і виконують функцію Disc + / Disk-, в дійсності вони посилають на адаптер команди прямого вибору диска 1-6. Так що цими кнопками можна тільки перемикати 6 кореневих каталогів або 6 підкаталогів.
І управляти 1024-ма каталогами на моїй магнітоли не вийде. Управляти можна всього 32 * 6 \u003d 192-ма каталогами;)

В описі сказано, що кнопки FF / FR виконують подвійну функцію - зміну каталогів / підкаталогів і перемотування.
Але на RD4 Track + / Track- суміщені з FF / FR і для адаптера ці кнопки мають Потрійне призначення:
1. Коротке натискання - Track + / Track-
2. Натискання 2-3сек, віджимання, коли пропаде звук від поточного треку - перемикання каталогу
3. Довге натиснення\u003e 3сек, йде прискорений приглушений звук - перемотування
Час приблизне, орієнтуватися треба на звук

Ще до покупки припускав, що запишу одну велику мегафлешку з сотнями каталогів. Але вже зараз бачу, що зручніше мати кілька флешок з різними вибірками.
У мене зараз це:
1. Російська естрада 80-90-е
2. Зарубіжна естрада 80-90-е
3. інструменталку

Разом. За відносно невеликі гроші я отримав безглючная адаптер з гарною якістю звуку і простим інтуїтивно зрозумілим управлінням. Купівлею дуже задоволений, Тріома - молодці !!!

додаткові посилання

міні Часті запитання

Якісь питання залишилися поза даного огляду, їх я вирішив винести в окремий мініфак. Сюди ж буду додавати питання, які виникнуть в коментарях.
  • Що потрібно зробити для того, щоб назви (імена файлів, теги або взагалі хоч що-небудь) показувалося на дисплеї?
  • Адаптери Тріома безумовно «бачать» і теги, і імена файлів, і імена папок. Там де це можливо вони виводять текстові рядки на штатні дисплеї магнітоли: BMW і всі автомобілі з оптичною шиною MOST. Можливо скоро буде реалізований висновок тексту для деяких апаратів Toyota / Lexus.
  • CD-чейнджери без проблем справляються із завданням.
  • Боюся, Ви помиляєтеся: нам невідомі зовнішні чейнджери крім перерахованих вище моделей, які справляються з цим завданням. Чейнджери, вбудовані в головний апарат-інша справа, там висновок тексту відбувається безпосередньо в контролер дисплея, - це зовсім інший механізм.
  • Чи можна до адаптера Тріома Флиппер 2 з'єднання з іншими пристроями?
  • До адаптера можна підключити або кабель-перехідник AUX-миниджек 3,5 тато
Планую купити +23 Додати в обране огляд сподобався +21 +46