Polytech-soft.com

ПК журнал
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

S usb html

Популярно о USB. Часть 1

Немоляев А. В, г. Екатеринбург

Введение

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

Публикация адресована начинающим разработчикам, тем, кто не знаком с USB, но хотел бы узнать больше. Статья носит учебный характер, и не является исчерпывающим справочным пособием. Для более простого вхождения в тему примеры основаны на стандарте USB 1.1. Если не сказано отдельно, то подразумевается режим FS (Full speed). В статье нет широко освещенных в других источниках сведений об общей топологии USB, о кабелях, хабах и разъемах. Здесь больше информации о том, что нужно знать разработчику устройств с микроконтроллерами о протоколе USB для своих разработок. Для устройств USB подключаемых к PC, таких, как мышь, клавиатура, микроконтроллер с поддержкой шины USB, использую термин USB-устройство. Персональный компьютер, к которому подключается USB-устройство, называю хостом. Доступное изложение теории, будет сопровождаться примерами программ на языке С для микроконтроллера AT90USB162 из популярной линейки megaAVR фирмы Atmel. В качестве источника справочной информации по USB рекомендую книгу Гук М. Ю. «Шины PCI, USB и FireWire. Энциклопедия», издательство «Питер».

Обзор темы

Программное обеспечение хоста делится на два отдельных типа: программное обеспечение инициализации канала связи и программное обеспечение поддержки рабочего режима обмена данными. Программное обеспечение инициализации начинает работать при подключении к хосту нового USB-устройства. Происходит обмен служебной информацией между хостом и USB-устройством. В результате обменов служебной информацией, хост определяет: тип устройства, его требования к энергопотреблению, возможность поддержки «спящего режима», тип драйверов для правильной работы USB-устройства, и, даже, возможна ли загрузка необходимых прикладных программ для работы с USB-устройством. Это новые веяния в духе спецификации PNP (plug and play). Устройства могут подключаться и отключаться в горячем режиме. При подключении и отключении происходит автоматическое переконфигурирование программного обеспечения хоста. Процесс настройки хоста на обмен данными, напоминает процесс раскрутки. Первоначально обмениваются простейшими сигналами по шине, затем процесс усложняется и, наконец, выход на рабочий режим.

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

В последнее время имеется тенденция к унификации не только протоколов обмена, но и устройств, взаимодействующих с персональным компьютером. Точнее, унификация требований к каналу связи. Идея такая. Придумывается универсальная шина для всего, что только можно подключить. Конечно, эта шина устроена сложно, она многоуровневая, гибкая и адаптируемая для разных конфигураций устройств. Унифицируются и драйверы операционной системы персонального компьютера, который взаимодействует с подключаемым устройством. Преимущество – отпадает необходимость в написании драйвера для ОС разработчиками USB-устройства. Это должно повышать надежность ОС, так как созданием драйверов могут заняться разработчики ОС, а не разработчики устройств. В общем, все плюсы унификации и стандартизации. Но есть и минусы. Очевидная сложность и связанная с ней избыточность, громоздкость технических решений. Тот же подход, что и в протоколах коммуникаций на большие расстояния. Академический стек протоколов OSI и знаменитый TCP/IP.

В связи с вышесказанным, в спецификации USB вводится понятие класса устройств. Все электронные устройства, подключаемые к персональному компьютеру, по своим функциональным качествам очень схожи. Например, звуковые платы предоставляют сервис приблизительно одного уровня. Поэтому устройства стали делить на унифицированные классы. Класс – это группа устройств, объединенных общими характеристиками и способных управляться общим для них программным драйвером операционной системы. Отдельное устройство может объединять функциональность сразу нескольких устройств, принадлежащих к разным классам. Если функциональность вашего устройства подходит к некоторому классу, и оно поддерживает спецификацию USB для устройств класса, то не нужно писать драйвер для ОС. Вероятнее всего, драйвер уже имеется в ОС. Функциональность устройства, подпадающего под определенный класс, может быть расширена разработчиком устройства добавлением отдельных команд. Точнее говоря, в стандарте USB предусмотрена возможность некоторого расширения функциональности. В стандарте предусмотрено множество возможностей, которые разработчик устройства может использовать для своих целей, добавляя к базовой функциональности функциональность расширенную. В спецификации USB есть две большие области, это собственно USB базового уровня и протоколы устройств классов. Протоколы устройств классов – это некоторая надстройка над протоколами нижнего уровня. Логично сначала разобраться с базовыми принципами, а уж потом со всем остальным.

Виртуальные каналы и конечные точки

Все примеры в статье даются в среде операционной системы Linux. По моему субъективному мнению, для новичка разобраться в реализации USB для Windows труднее, чем для Linux. Приходится много перерабатывать информации, специфичной для Windows, и ни как не относящейся к стандарту USB. В Linux к пониманию существа дела можно добраться более коротким путем. Разобравшись с Linux, можно легко перейти и к Windows.

В режиме передачи данных, когда процесс конфигурирования (энумерации) уже закончился, между USB-устройством и хостом должны быть налажены мосты. Это некий набор виртуальных каналов, по которым идет обмен данными и служебной информацией. Англоязычный термин pipe – труба. Каналы разделяют единственную среду передачи, а потому они являются мультиплексированными и, соответственно, виртуальными. Можно провести аналогию с локальной сетью. Шина Ethernet одна, но соединений TCP может быть несколько. Но в TCP/IP соединения TCP могут возникать и завершаться много раз в процессе работы. В USB типы каналов и их количество фиксируются на стадии процесса энумерации.

В стандарте определяются четыре типа каналов: управляющие, по прерыванию, массивов данных и изохронные. Только управляющий канал является двунаправленным, остальные каналы могут быть только однонаправленными. Для двустороннего обмена требуется организация хотя бы трех каналов. Обязательный управляющий канал и по одному для каждого направления. В USB принято, что канал называется каналом ввода, если данные передаются в хост, и канал вывода, если из хоста. Применяя специальные приемы, можно использовать канал управления для передачи небольших объемов данных. Но это нестандартное использование канала, и применяется редко. Напоминаем, что все информационные обмены на шине, для всех видов каналов происходят под управлением хоста. Первым делом хост посылает запрос, а затем USB-устройство отвечает.

Управляющий канал используется для передачи команд протокола USB; передача данных с использованием канала управления не является стандартным использованием канала. Хотя можно приспособить канал управления для передачи данных прикладной программы. В каждом USB-устройстве должен быть хотя бы один управляющий канал.

Канал передачи по прерыванию используется для небольших объемов данных, но с гарантированными задержками. Хост опрашивает USB-устройство на предмет готовности порции данных, и если USB-устройство готово для обмена, то обмен происходит. Время реакции USB-устройства задается при конфигурировании и лежит в диапазоне от 1 до 255 мс. Так что, это не связано напрямую с прерываниями в общепринятом понимании. Один канал по прерыванию типа ввода, используется мышью USB (Рисунок 1). По каналу передаются клики и координаты указателя. В моей клавиатуре USB используются два канала по прерыванию и один канал управления.

Рисунок 1.

Изохронные каналы – применяются для передачи потока данных, например аудио и видео. Характерной особенностью является отсутствие повторной передачи данных в случае ошибок. Поврежденные пакеты просто отбрасываются без запроса повторной передачи. Такая политика позволяет воспроизводить поток данных в реальном времени без временных задержек. С периодом в 1 миллисекунду хост запрашивает данные, и буфер USB-устройства передается на хост. В веб-камерах используются изохронные каналы.

Канал передачи массивов данных используется в типах устройств, не требующих временной привязки при передаче данных и оперативной реакции на внешние события. Принципиальное отличие от двух предыдущих типов каналов заключается в том, что временной интервал, по истечении которого данные будут доставлены, не гарантирован. В изохронном канале хост опрашивает устройство с периодичностью 1 мс. В канале передачи по прерыванию хост может опрашивать USB-устройство с периодом от 1 до 255 миллисекунд. В канале передачи массивов хост начинает запрашивать данные для приема в свободное от всех остальных передач время. В случае искажения данных при передаче происходит повторная передача искаженных данных. В моей флэшке используются два канала передачи массивов данных: один на передачу и один на прием, не считая канала управления.

Читать еще:  Добавление маршрутов при работе с vpn

У USB-устройства приемником и передатчиком данных служит буфер, который называется конечной точкой. Тип конечной точки определяет тип канала, который связывает ее с хостом. Например, контроллер USB микроконтроллера AT90USB162 фирмы Atmel имеет в общей сложности 4 конечных точки, не считая конечной точки управления (из 4 возможных буферов обмена). Программа микроконтроллера должна, соответственно, сконфигурировать необходимое количество конечных точек для своих нужд. Все конечные точки контроллера USB перенумерованы. Нулевая конечная точка всегда используется для нужд канала управления и не может быть переконфигурирована для других целей. Если не создается драйвер ОС, то на стороне хоста расположение буфера знать необязательно, так как взаимодействие программы на стороне хоста с USB-устройством происходит через системные вызовы операционной системы и скрыто от пользовательской программы.

Хабы, адреса, хост контроллеры

Кратко опишем аппаратуру хоста. На стороне хоста обязательно должен присутствовать хотя бы один контроллер хоста и связанный с этим контроллером корневой хаб. В современных PC имеется несколько контроллеров хоста и, соответственно, несколько корневых хабов. Основателем каждой шины USB является корневой хаб, поэтому, если на PC несколько корневых хабов, то и несколько шин. В Linux имеющиеся шины USB можно посмотреть с помощью команды lsusb. Ниже приведен дамп вывода на моем компьютере:

В колонке слева перенумерованы имеющиеся в компьютере шины USB, а, значит, и контроллеры хабов и корневые хабы. Каждое USB-устройство на шине имеет уникальный адрес в диапазоне от 1 до 127. Нулевой адрес выполняет служебные функции, и не может быть назначен USB-устройству постоянно. Адреса распределяются по USB-устройствам хостом в процессе энумерации и сохраняются на все время работы устройства на шине. Из работы программы lsusb видно, что мышь USB подключена к шине 03, и на этой шине ей назначен адрес 02. Устройство хранения данных подключено к шине 01 с адресом 03. Можно поиграть, поменять последовательность включения и посмотреть, как это отразится на выводе lsusb. В следующей колонке указан идентификационный код устройства ID. Этот код состоит из 2 частей: идентификатора изготовителя (vendor ID) и идентификатора изделия (product ID). Они представляют собой два уникальных числа, используемых для идентификации конкретного устройства. Операционная система по этим кодам может определять, какой драйвер требуется загрузить для работы. Значение кода изготовителя назначается форумом разработчиков USB по заказу фирмы. Код устройства устанавливает сам производитель. Программист микроконтроллеров может задать эти числа произвольно. Другое дело, что такие устройства, поступившие в широкую продажу, могут вызвать возражения фирмы собственника кода. Кроме этих чисел, для идентификации можно использовать номер версии устройства (ID Device).

Создаем простейшее usb-устройство для общения со своей программой

В продолжение темы о создании собственного USB-гаджета.
Создание простого устройства.

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

Самым простым вариантом передачи данных является использование класса коммуникационных устройств USB (CDC).
При таком подключении устройство будет видно в системе как обычный виртуальный COM-порт.
Плюсом такого подключения является отсутствие необходимости писать собственные драйвера.
Так же радует простота приема и передачи данных: для работы с портом в Windows достаточно открыть его как текстовый файл и производить обычные операции чтениязаписи.

Железо.

Возьмем схему с минимальной обвязкой МК.

На этот раз нам нужно добавить только 4 контакта к USB и одну кнопку (кнопка нужна только для бутлоадера: куда проще нажать ее и заменить прошивку в устройстве по USB, нежели переставлять чип в программатор).

Не сильно стараясь сделать красиво, разводка может выглядеть так:

Но при желании часто экспериментировать с подключаемыми компонентами лучше сразу развести каждую ногу МК сделав аналог ардуино — Jaluino.

Прошивка

include 18f2455 — библиотека для используемого МК

enable_digital_io () — переключение всех входов на цифровой режим

alias Button is pin_B7 — раз уж у нас подключена кнопка, объявим ее
pin_B7_direction = input — кнопка у нас работает на вход

— одна строчка — и у нас есть все необходимое для работы с USB CDC
include usb_serial — бибилотека для работы с usb

usb_serial_init () — —инициализируем USB CDC
forever loop — основной цикл, выполняется постоянно
usb_serial_flush () — обновление usb. Данная процедура выполняет все необходимые
— действия для поддержания соединения с ПК
end loop

Скомпилировав данный код, записав полученный HEX файл в МК при помощи бутлоадера и запустив устройство можно будет наблюдать как в системе опрделится новое устройство: Виртуальный сom-порт.

Теперь, когда устройство уже работает, научим его общаться.

Для чтения принятого байта существует функция usb_serial_read(byte):boolean. При наличии полученного байта она заносит его в указанную переменную и возвращает true, иначе возвращает false.

Для отправки байта существует процедура usb_serial_data. Она замаскирована под переменную, потому для отправки байта достаточно присвоить ей значение отправляемого байта.

Объявим переменную размером в байт до основного цикла, в основном цикле будем проверять наличие полученных байт, и при их наличии отправлять их обратно.

include 18f2455

enable_digital_io ()

alias Button is pin_B7
pin_B7_direction = input


include usb_serial

usb_serial_init ()
var byte ch — объявляем переменную
forever loop — основной цикл
usb_serial_flush ()
if ( usb_serial_read ( ch ) ) then — если байт получен, он будет записан в ch
usb_serial_data = ch — отправляем полученный байт обратно
end if
end loop

Компилируем, зажимаем кнопку, передергиваем питание, запуская бутлоадер, меняем прошивку, запускаем.
Устройство снова определилось в системе, теперь нам нужен софт, дабы протестировать работу устройства.

Пока у нас нет своего, используем готовый терминал: я использовал программу RealTerm.
Открываем порт с нужным номером и отправляем данные.


И нам в ответ приходит то, что мы отправили. Значит, все работает как надо.

Итак, наш микроконтроллер умеет принимать байты и тут же отправлять их обратно. Теперь напишем свой софт для общения с ним (я буду использовать Delphi).

Создаем новый проект, раскидываем по форме необходимые компоненты:
SpinEdit1 — для указания номера порта
Button1 — для установки соединения
Button2 — для разрыва соединения
SpinEdit2 — для ввода байта в десятичном виде
Button3 — для отправки байта
Memo1 — для вывода принятой информации.

Как уже было сказано выше, с com-портом нужно работать так же, как и с обычным текстовым файлом: используя функции CreateFile, WriteFile и ReadFile.

Дабы не вдаваться в подробности, возьмем готовую библиотеку для работы с com-портом: ComPort.

Вешаем на каждую кнопку необходимую задачу и получаем конечный код:

uses
Windows, Messages, SysUtils, Variants, >Graphics , Controls, Forms,
Dialogs, StdCtrls, Spin,ComPort;

type
TForm1 = class (TForm)
SpinEdit1: TSpinEdit;
Button1: TButton;
Button2: TButton;
SpinEdit2: TSpinEdit;
Button3: TButton;
Memo1: TMemo;
procedure OnRead(Sender: TObject; ReadBytes: array of Byte );
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
< Private declarations >
Port: TComPort;
public
< Public declarations >
end;

var
Form1: TForm1;
num: integer;
implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
Port := TComPort.Create(SpinEdit1.Value, br115200); //создаем соединение
Port.OnRead := OnRead; //создаем поток чтения принятых данных
Button2.Enabled := true ; //активируем кнопку закрытия соединения
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Port.Free; //закрываем соединение
Button2.Enabled := false ; //отключаем кнопку
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if Button2.Enabled then Port.Write([SpinEdit2.Value]);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if Button2.Enabled then
Port.Free;
end;

procedure TForm1.OnRead(Sender: TObject; ReadBytes: array of Byte );
var
i:integer;
begin
for i := Low(ReadBytes) to High(ReadBytes) do //проходим по массиву принятых байт
begin
Memo1.Text := Memo1.Text + ‘.’ +InttoHex(ReadBytes[i],2); //добавляем его HEX значение в окно
inc(num); //считаем колв-о принятых байт
end;
if num > 10 then begin
Memo1.Lines.Add( » ); //переносим строку
num := 0;
end;
end;

Читать еще:  Практические задания по html и css

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

Вот и готов наш самый простой терминал для работы с самым простым usb-устройством.

Как видно, чтение и запись происходит динамическими массивами байт.

Обрабатывая получаемую информацию можно составить необходимый протокол обмена, подходящий для текущей задачи.

include 18f2455

enable_digital_io ()

alias Button is pin_B7
pin_B7_direction = input


include usb_serial

usb_serial_init ()
var byte ch
var byte i — объявляем вторую переменную
forever loop — основной цикл
usb_serial_flush ()
if ( usb_serial_read ( ch ) ) then — если байт получен выполняем необходимые действия
case ch of — перебираем номер байта
0 : usb_serial_data = 0xff
1 : usb_serial_data = Button — отправка состояния кнопки
OTHERWISE block — если получено что-то иное
for 16 using i loop — отправляем 10 байт с данными
usb_serial_data = ch + i — от ch до ch+15
end loop
end block
end case
end if
end loop

Дополнительные возможности

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

Упрощение отправки данных

Отправлять информацию по одному байту — не всегда удобно. Очень часто может пригодиться библиотека print. Она содержит процедуры по отправке данных всевозможной длины всевозможными форматами: byte,hex,dec,bin,boolean что может упростить вывод данных в программе.

> include print
.
var dword data
print_dword_hex ( usb_serial_data , data )

Название всех команд можно посмотреть в файле библиотеки.

Ожидание подключения к ПК

Если перед стартом основного цикла микроконтроллера необходимо предварительно установить соединение с ПК, то можно дописать перед ним строчки

while ( usb_cdc_line_status () == 0x00 ) loop
end loop

Привязываем к устройству номер порта

Если оставить все как есть, система при каждом новом подключении будет выделять первый свободный номер порта. А это значит что за ним придется всегда следить.
Для того, что бы этого не происходило, необходимо устройству присвоить уникальное значение серийного номера до подключения библиотеки usb:
Номер может быть любой длины и содержать различные символы.

Меняем имя устройства на свое

Поменять имя устройства, видимое в системе до установки драйверов можно объявив массив с именем, как и серийный номер, это необходимо сделать до подключения библиотеки USB.

Но увы, после установки драйверов устройство поменяет имя на указанное в .inf файле, потому поменяем имя и там

Организуем автоподключение устройства

Увы, никаких прямых путей выполнить данную задачу нет, потому придется исхитриться.

Прежде всего необходимо присвоить своему устройству уникальное значение производителя и продукта, дабы легко определять его среди сотен других стандартных CDC-прошивок.
VID и PID выдаются за денюжку, потому пойдем по пуути китайцев: втихую возьмем себе заведомо свободные значения.

Прошивка:
В прошивке необходимо объявить две переменные до подключения библиотеки USB

const word USB_SERIAL_PRODUCT_ID = 0xFF10
const word USB_SERIAL_VENDOR_ID = 0xFF10

Вместо FF10 можно вставить любые два слова (2 байта). Конечный результат содержится в прилагаемом архиве.

Драйвера:
Так как драйвера не предназначены для нашей комбинации VID и PID, допишем наши значения в .inf файл вручную:

[DeviceList]
%DESCRIPTION%=DriverInstall, USBVID_FF10&PID_FF10

[DeviceList.NTamd64]
%DESCRIPTION%=DriverInstall, USBVID_FF10&PID_FF10

Софт:
Для отлова событий подключенияотключения устройства подключим библиотеку ComponentUSB. Не считаю нужным пояснять каждую строчку: все изменения можно увидеть в прилагаемом проекте.

Результат

На скриншоте сложно разглядеть, но кнопка отправки активна только в момент наличия подключенного устройства, при этом каждые 50мс программа подает запрос на получение состояния кнопки (что, впрочем, неправильно, потому как нажатие кнопки должно обрабатываться на МК).

Как видно, организовать обмен данными между МК и ПК через USB — не самое сложное занятие. Полученное соединение можно использовать не только для конечынх целей: оно так же подходит для отладки программы. Ведь отправить на компьютер результаты расчетов, текущие состояния регистров и переменных куда нагляднее, чем моргать парой светодиодов азбукой морзе.

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

Обзор Kingston Nucleum с USB Type-C: увеличиваем количество портов в ноутбуке до 7

Всем привет! Сегодня хочу рассказать, как можно увеличить количество портов на вашем ноутбуке, планшете или macbook до 7 при помощи небольшого и легкого хаба. Называется он Kingston Nucleum. Данный хаб имеет стильный внешний вид и очень компактный, весит всего лишь как маленькая шоколадка. Такое устройство занимает мало места, но несет в себе огромный потенциал.

Узнать цену на usb hub Kingston Nucleum в своем городе можно здесь

Технические характеристики

Интерфейс подключенияUSB Type-C
Количество USB Type-C1+1(внешнее питание)
Количество USB-A (USB 3.1 Gen-1)2
HDMI1 версия 1.4
microsd1
SD1
Power DeliveryДо 60Вт

Поставляется хаб Kingston Nucleum в небольшой стильной коробочке. На передней стороне изображено само устройство и имеется надпись о возможности подключения до 7 устройств.

На обратной стороне изображено подключение различных устройств.

Сам usb разветвитель Kingston Nucleum находится внутри коробки в пластиковом кейсе. Инструкции и заглушки порта USB Type-C в комплекте нет.

Kingston Nucleum имеет современный стильный внешний вид. Корпус хаба сверху и снизу выполнен из металла и окрашен в серебристый матовый цвет. Боковые части расширителя портов выполнены из черного пластика. Сверху нанесена черными чернилами надпись Nucleum, а на нижней стороне название фирмы производителя.

К ноутбуку, компьютеру или планшету usb разветвитель подключается при помощи USB Type-C разъема, кабель которого жестко заделан в корпусе Kingston Nucleum. При выходе кабеля из корпуса хаба имеется утолщение, чтобы избежать перелома кабеля в этом месте.

Теперь давайте рассмотрим расположение портов на USB Type-C хабе Kingston Nucleum. На одной стороне расположены USB Type-C, USB-A, слот для micro и SD карт памяти.

На второй стороне рядом находятся порты USB-A и USB Type-C с функцией внешнего питания, который поддерживает протокол Power Delivery до 60Вт. Говоря простым языком, вы можете подключить зарядное устройство и от хаба заряжать ноутбук и подключенный к Nucleum смартфон.

В торце расширителя портов находится разъем HDMI версии 1.4, который позволит вывести изображение с ноутбука на второй экран, проектор или большой телевизор в разрешении до 4К.

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

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

Для проверки скорости карты памяти Kingston Canvas React 128 ГБ через этот usb hub я сделал тест в Crystal DiskMark6 и результаты представлены ниже.

По итогу перед нами качественное устройство, которое позволяет одновременно использовать до 7 различных устройств и при этом использует всего лишь 1 разъем ноутбука или компьютера. Можно подключать мышки, клавиатуры, карты памяти, выводить изображение разрешением до 4К на второй экран и при этом заряжать ноутбук и смартфон. Nucleum очень компактное устройство и весит всего лишь 92г! Из субъективных недостатков я отмечу отсутствие разъема RJ45 и жестко заделанный кабель: хотелось бы иметь возможность подключать более длинный.

Свои мысли по поводу usb разветвителя Kingston Nucleum оставляйте в комментариях и поделитесь опытом эксплуатации этого или подобных устройств, если они у вас есть. Спасибо за внимание.

Flash Drive Information Extractor v9.3.0.630 – usbflashinfo

Отечественная разработка, от малоизвестной широкой публике компании ANTSpec Software. Позволяет выдать максимум информации о исследуемых флешках, благодаря опросу подпрограммы контроллера флэшки. Позволяет определить такие данные как: Controller, Possible Memory Chip(s), Memory Type, VID, PID, Flash ID, Manufacturer, Product, Query Vendor ID, Query Product ID, Query Product Revision, Physical Disk Capacity, Windows Disk Capacity, USB Version, Max. Power, ContMeas ID. Для некоторых контроллеров также определяет: Flash CE, Flash Channels, Chip F/W, MP Ver., ID_BLK Ver., Firmware Date.

Читать еще:  Плавающий фрейм html

Утилита Flash Drive Information Extractor, в отличии от двух своих аналогов (ChipEasy и ChipGenius) корректно работает в портах стандарта USB3.0 на контроллерах Asmedia.

Начиная с версии V7.0 программа выдает результат в не зашифрованном виде, что ставит её в один ряд с подобными утилитами. Рекомендую её при работе с контроллерами Alcor, Innostor, Phison и SMI.

СИСТЕМНЫЕ ТРЕБОВАНИЯ:
Windows 2000/2003/XP/Vista/2008/7/8/10.
– Место на жестком диске: 4 МБ.

В связи с прекращением официальной поддержки старых версии, которые выдавали результат в зашифрованным виде, я удалил их с данной страницы. Новые тоже стал со времен тереть. Так что все предыдущие версии утилиты я удаляю со страницы загрузки, но если кому (извращенцам) надо могу помочь найти старый образец. У меня на жестком диске, сохранилась небольшая коллекция предыдущих версий, которые когда-либо были на портале USBDev.

Все вопросы, по традиции, направляем на форум, иначе их публикация и ответ на них, скорее всего не последует!

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

Flash Drive Information Extractor v9.3.0.630 ; usbdriveinfo.zip; size: 4 255 884 bytes

Volume: G:
Controller: Phison 2151-53
Possible Memory Chip(s):
Samsung K9W8G08U1M
Memory Type: SLC
Flash ID: ECDCC115 54
Chip F/W: 01.03.10
Firmware Date: 2005-02-03
VID: 1005
PID: B113
Manufacturer:
Product: USB FLASH DRIVE
Query Vendor ID:
Query Product ID: USB FLASH DRIVE
Query Product Revision: RMAP
Physical Disk Capacity: 1031798784 Bytes
Windows Disk Capacity: 1027604480 Bytes
Internal Tags: 2QYP-S99X
File System: FAT32
USB Version: 2.00
Declared Power: 200 mA
ContMeas ID: 59D8-01-00
Microsoft Windows XP SP2 x64

; Solid State System – чип:

Volume: G:
Controller: TC58NC6688 (SSS 6690)
Possible Memory Chip(s):
Toshiba TH58NVG4T2ETA00
Memory Type: TLC
Flash ID: 98D598B2 7654
Flash CE: 1
VID: 0930
PID: 6544
Manufacturer:
Product: USB Flash Memory
Query Vendor ID:
Query Product ID: USB Flash Memory
Query Product Revision: 1.00
Physical Disk Capacity: 2003795968 Bytes
Windows Disk Capacity: 2003173376 Bytes
Internal Tags: 386N-9P3F
File System: FAT
Relative Offset: 31 KB
USB Version: 2.00
Declared Power: 100 mA
ContMeas ID: 59D8-01-06
Microsoft Windows XP SP2 x64

12 comments

v8.8.0.599 – Вроде как, программа стала работать с чипами Innostor IS917. Улучшено определение значения параметра FlashID у некоторых контроллеров.
– – – – – –
v8.7.0.597 – Добавлена поддержка современных контроллеров SSS 6131 и Genesys GL3224, которые активно ставятся в такие флешки, как например, Kingston DT100 G3.
– – – – – –
v8.6.0.595 – по идее, должна работать со всеми дистрибутивами Windows 10. Память кое-какую добавили.
– – – – – –
v8.4.0.586 – исправлена критическая ошибка 8.4.0.585 версии, из-за которой приложение отказывалось работать с файлами некоторых типов (например .dat) в каталоге утилиты.
– – – – – –
v8.3.0.580 – добавлено в частности полное отображение моделей Micov-контроллеров, перечня шире чем у Гениуса. Пофиксены названия некоторых моделей контроллеров, например Silicon Motion SM3261 AB, который предшествующими версиями ошибочно отображался как SM3261 AA S.
– – – – – –
v8.2.0.578 – наконец-то адаптирована работа утилиты с неисправными флешками на контроллерах SM3257ENLT и SM3257ENBA. Ранее же, утилита могла выдавать информацию, только по живым пациентам.
– – – – – –
v8.2.0.577 – некоторые улучшения качества у SMI, но проблемы с последними чипами 57ENLT и 57ENBA, всё еще остаются.
– – – – – –
v8.2.0.575 – добавлено распознавание контроллера SM3257ENBA.
– – – – – –
v8.2.0.570, в новой версии стали частично определяться параметры флешек на контроллере ITE 1176:

Volume: I:
Controller: ITE IT1176 A1BA
Possible Memory Chip(s): Not available
Internal Version: 1.76D.01.05 1400611
FlashDB: 300028
FW Date: 2014-08-24 01:09:46
FW Ver.: FMLD1.05S5E

Жаль что FID пока не выдает, но он пока особо и не нужен, т.к. всё равно нету производственных прошивальщиков для него.

Пример отчёта (вариант):
Silicon Power Blaze B20 64GB:
Volume: K:
Controller: Phison PS2307
Possible Memory Chip(s): Not available
Flash ID: 983A9493 7651
Chip F/W: 01.10.10
Firmware Date: 2015-03-03
ID_BLK Ver.: 1.3.0.0
MP Ver.: MPALL v3.84.00
VID: 13FE
PID: 5500
Manufacturer: UFD 3.0
Product: Silicon Power64G
Query Vendor ID: UFD 3.0
Query Product ID: Silicon Power64G
Query Product Revision: PMAP
Physical Disk Capacity: 63216549888 Bytes = 60288
Windows Disk Capacity: 63201083392 Bytes
Internal Tags: 2Q6P-S74A
File System: FAT32
USB Version: 3.00 in 2.00 port
Declared Power: 300 mA
ContMeas ID: 10E0-02-00
Microsoft Windows XP SP3
Program Version: 8.3.0.581

Как определить память По виду и пиду Вроде контроллер UD6810 Можете дополнить в обновлении программы данный контроллер.
Volume: H:
Controller: Appotech
Possible Memory Chip(s): Not available
VID: CD12
PID: EF18
Manufacturer: Generic
Product: Mass storage
Query Vendor ID: Generic
Query Product ID: UDISK
Query Product Revision: 1.0a

По VID-PID ничего вообще определить нельзя, можно лишь строить крайне размытые догадки о модели контроллёра. О флеш-памяти там вообще нету никаких индикаторов.
А почему UD6810, а не несколько десятков других подходящих под эти же данные, например SG1580?
Что же касается самой программы, то никому пока что не удалось сделать программу различающую чипы Appotech, за исключением пару чипов и то там есть свои глюки и исключения из правил.

Программа до сих пор не знает древний контроллер USBVID_152D&PID_0602 (JMicron JMF603).

USB flash drive could not be found.
Plug in a USB flash drive and restart the utility.
При это флэшка рабочая.

Вариантов может быть далеко не один. Например, флешка работает в нестандартном режиме (CDROM и тому подобное). Или нужно переподключить флешку в USB-порту, так как вы какой-то специальной программой обратились к ней ранее.
В любом случае, лучше не зацикливаться на одной программе, а использовать её в связке с ChipGenius.

Помогите подобрать прошивальщик. Флешка 64 гб с Алиэкспресс. Приказала долго жить… (
Вот все, что определяется ChiGenius, Flash Extractor ее вообще не видит.

Description: [E:][F:]Caiiieia?uaa ono?ienoai aey USB(Generic Card-Reader)
Device Type: Mass Storage Device

Protocal Version: USB 2.00
Current Speed: High Speed
Max Current: 500mA

USB Device > Serial Number: 20100120100004

Device Vendor: Generic
Device Name: USB2.0 Device
Device Revision: 0103

Manufacturer: Generic
Product Model: Card-Reader
Product Revision: 1.03

Controller Part-Number: Unknown

Флешки собранные на картридерах и не должен определять usbdriveinfo. Да и не к чему это, так как ридеры, шьются достаточно редко.

Это не карт-ридер и не флешка. А карта памяти мини сд. В телефонах которые используются чаще всего. Ее этими средствами не восстановить, как я понимаю?

Так флеш-карты вообще никто не чинит, их сразу на помойку отправляют.

Программа последн. версии не работает 30.01.2018, пока не поменяешь дату в компе на 2017 год. Не знаю у всех ли, но у меня так. Windows 7.

USBDev Search

ГЛАВНЫЕ СТАТЬИ:

ИНСТРУКЦИИ К ПРОГРАММАМ:

РУКОВОДСТВА ПО ПОДБОРУ УТИЛИТ:

СВЕЖИЕ СТАТЬИ:

ЯНВАРЬ 2020:

МАРТ 2018:

ФЕВРАЛЬ 2018:

ЯНВАРЬ 2018:

СЕНТЯБРЬ 2017:

ИЮЛЬ 2017:

ИЮНЬ 2017:

МАЙ 2017:

ФЕВРАЛЬ 2017:

Вы можете пожертвовать немного средств, на развитие проекта USBDev, если у вас возникнет такое желание. РЕКВИЗИТЫ:

Яндекс.Деньги: 41001813980889
WMZ: Z108573796692
WMR: R406961209328

Чтобы перевести деньги на Яндекс.Деньги, даже не обязательно иметь кошелек, достаточно обладать любой банковской картой, мобильным телефоном или доступом к Сбербанк.Онлайн. Узнать и другие способы поддержки проекта, можно по этой ссылке — DONATE.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector