Создание виртуальной флешки на примере программы OSFmount. V-USB — программная реализация USB для AVR V-USB: размер имеет значение

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=/dev/ram0 ». Дальняя сторона будет думать, что вы подключили USB-накопитель.

Для последовательных устройств, гаджет может работать в пользовательском пространстве код, который «поднимает трубку» на/Dev/USBx»и переговоры в устройство под испытанием. (По-видимому, эмулирующий модем 4G или любой другой.)

Тонны устройств действительно «USB-серийный» под капотом, потому что производитель был слишком ленив, чтобы понять USB.

3) С небольшим повторным компиляцией или настройкой вы можете использовать эти универсальные устройства для гаджета, ID или возвращать различные строки поставщика и т. Д. Это не будет таким же, как «тестирование на реальном аппаратном обеспечении», но, по крайней мере, вы тестируете стандартную версию этих устройств.

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

Иногда возникает ситуация, когда нужна флешка, а ее нет под рукой. Например, для работы некоторых бухгалтерских и отчетных программ требуется наличие внешнего накопителя. В такой ситуации можно создать виртуальный накопитель информации.

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

Способ 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 Гб.



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

Разработка различных устройств на основе микроконтроллеров - занятие, достойное настоящего компьютерного гика. Несомненно, полезной фишкой любого гаджета будет 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 = "Hello World!"; static uchar dataLength = 0, dataReceived = 0;

В main.c переопределим функцию usbFunctionSetup, которая вызывается автоматически при получении нового запроса:

USB_PUBLIC uchar usbFunctionSetup(uchar data) { usbRequest_t *rq = (void *)data; switch(rq->bRequest) { case DATA_OUT: // Обработать команду отправки данных usbMsgPtr = replyBuf; // Указать буфер return sizeof(replyBuf); // Возвратить размер буфера case DATA_IN: // Обработка команды получения данных dataLength = (uchar)rq->wLength.word; // Получить длину dataReceived = 0; // Вызовов usbFunctionWrite будет много if(dataLength > sizeof(replyBuf)) // Проверка на переполнение dataLength = 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 = 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=usb_get_busses(); bus; bus=bus->next) { // Перебрать все устройства на шине for(dev=bus->devices; dev; dev=dev->next) { // Если идентификаторы вендора и продукта не совпадают... if(dev->descriptor.idVendor != vendor || dev->descriptor.idProduct != product) continue; // ...пропустить эту итерацию // Попробовать получить дескриптор устройства if(!(handle = 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 = NULL; int nBytes = 0; char buffer; // Ищем устройство handle = usbOpenDevice(0x16C0, 0x05DC); if(handle == NULL) { fprintf(stderr, "Could not find USB device!\n"); exit(1); } // Аргумент out - получить данные от чипа if(strcmp(argv, "out") == 0) { nBytes = 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") == 0 && argc > 2) { nBytes = 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 = avr-gcc OBJCOPY = avr-objcopy CFLAGS = -Wall -Os -Iusbdrv -mmcu=attiny2313 OBJFLAGS = -j .text -j .data -O ihex OBJECTS = usbdrv/usbdrv.o usbdrv/oddebug.o usbdrv/usbdrvasm.o main.o CMDLINE = 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) $< $@ # Сборка elf-файла main.elf: $(OBJECTS) $(CC) $(CFLAGS) $(OBJECTS) -o $@ # Сборка файлов библиотеки V-USB $(OBJECTS): usbdrv/usbconfig.h # C в объектный код %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ # asm в объектный код %.o: %.S $(CC) $(CFLAGS) -x assembler-with-cpp -c $< -o $@

Чтобы залить прошивку в микроконтроллер с помощью программатора 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, твоя страсть к электронике воспылает с новой силой, породив немало оригинальных и полезных устройств. Остается лишь пожелать тебе успехов на этом сложном, но интересном поприще.

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

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

Образ
Образ можно сохранить и монтировать при необходимости. Где это пригодится? Например для ленивых на такую виртуальную флешку можно закинуть сертификаты для КриптоПро.)) Или использовать как диск в оперативной памяти для хранения кеша, файла подкачки и прочего.
Есть еще альтернативная 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=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 - Определяет букву накопителя. Например -m B: или -m y: или -m #: - первая свободная буква диска.

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

Что это такое и зачем оно нужно?
Если у магнитолы в машине есть вход для 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=192-мя каталогами;)

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

Еще до покупки предполагал, что запишу одну большую мегафлешку с сотнями каталогов. Но уже сейчас вижу, что удобнее иметь несколько флешек с разными подборками.
У меня сейчас это:
1. Российская эстрада 80-90-е
2. Зарубежная эстрада 80-90-е
3. Инструменталки

Итого. За относительно небольшие деньги я получил безглючный адаптер с хорошим качеством звука и простым интуитивно понятным управлением. Покупкой очень доволен, Триома - молодцы!!!

Дополнительные ссылки

Мини ЧАВО

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

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: