Интерфейс для подключения flash накопителя к компьютеру
В настоящий момент один из самых популярных интерфейсов — это безусловно USB. Девайсов, которые его используют, просто огромное количество. Это и мышки, и клавиатуры, и принтеры, и сотовые телефоны, и много чего ещё. В отличии от стремительно исчезающего RS-232, USB встречается во всех современных компьютерах, ноутбуках, телефонах… так что, если мы хотим создавать действительно универсальные девайсы, придётся нам этот интерфейс изучать. Вот прямо сейчас и начнём, а заодно, по ходу изучения, попытаемся сами посоздавать каких-нибудь USB-девайсов.
Итак, USB (universal serial bus) — универсальная последовательная шина. Большинство USB-устройств соответствуют спецификациям 1.1 и 2.0. В спецификации 1.1 определены две скорости передачи информации: LS (low speed) — низкая скорость, 1,5 Мбит/с и FS (full speed) — полная скорость, 12 Мбит/с. В редакции 2.0 к ним добавлена ещё и высокая скорость HS (high speed), 480 Мбит/с. Не так давно вышла ещё спецификация — 3.0, но устройства, поддерживающие этот стандарт, пока не очень распространены, поэтому и бог с ней.
Физические устройства на шине USB бывают трёх типов: хост-контроллер, хаб и конечное устройство.
Хост-контроллер — это главный управляющий шиной USB. Именно он обеспечивает связь устройств, подключенных к шине, с компьютером (с ОС и с клиентским ПО). Любые сеансы обмена данными может начинать только хост-контроллер, остальные устройства молчат в тряпочку, пока хост-контроллер к ним не обратится.
Контроллер взаимодействует с ОС через драйвер хост-контроллера (HCD — host controller driver). Этот драйвер привязан к конкретной модели хост-контроллера. Только он знает какие данные, в какие регистры и в каком порядке пихать в хост-контроллер, а также откуда какие данные брать, чтобы хост-контроллер сделал то, чего от него хотят.
Со стороны ОС шиной USB управляет ещё один драйвер — USBD (universal serial bus driver). Ему совершенно пофиг, как там конкретно реализован хост-контроллер и где у него какие регистры (для этого есть HCD), USBD решает общие (неспецифические для конкретного хост-контроллера) вопросы: взаимодействие с клиентским ПО, нумерация устройств на шине, их конфигурирование, распределение питания и пропускной способности шины и так далее. Это, можно сказать, своеобразный диспетчер, который осуществляет общий контроль над шиной и её взаимодействие с внешним миром (с клиентским ПО).
Хост-контроллер — птица гордая и пугливая, поэтому непосредственно ни с кем из подданных он не разговаривает. Для общения с подданными у него есть специальные помощники — хабы (их ещё иногда называют концентраторами).
Хабы — это устройства, которые позволяют физически подключить устройства USB к шине. Они предоставляют порты для подключения, ретранслируют трафик от хост-контроллера к конечным устройствам и обратно, отслеживают состояние и физически управляют электропитанием портов. У хабов есть один восходящий (upstream) порт, — это тот порт, который подключен по направлению к хост-контроллеру, и несколько нисходящих (downstream) портов, — это порты, к которым подключаются конечные устройства. Хабы можно каскадировать, подключая к нисходящему порту хаба ещё один хаб. Самый главный хаб, интегрированный с хост-контроллером, называется корневым хабом (он же — корневой концентратор или root hub).
Другими словами можно сказать, что у хаба есть две основных задачи: 1) создать хост-контроллеру иллюзию, что он непосредственно разговаривает с подключенным к хабу устройством; 2) наблюдать за своим сегментом шины (за девайсами, подключенными к нисходящим портам), сообщать «наверх» обо всех изменениях и, если надо, — подключать и отключать питание портов.
Конечные устройства — это все те полезные устройства, которые мы подключаем к шине USB (флэшки, принтеры, мышки и т.д.)
Нужно сказать, что физические устройства и логические устройства — это не всегда одно и тоже. Существуют, например, такие конечные устройства (называемые составными — compound devices), которые содержат внутри себя хаб, к которому подключено ещё несколько устройств. Несмотря на то, что в этом случае хаб и все, подключенные к нему устройства, запакованы в один корпус, с точки зрения логики шины это будут совершенно разные устройства.
Для логических конечных устройств обычно используют термин «функции». Таким образом, с точки зрения логики шины, устройства на ней можно разделить на хабы и функции (и неважно, запакованы ли они в один корпус или нет). Каждое логическое устройство на шине имеет уникальный адрес (1-127), присваеваемый ему хостом при подключении.
Исходя из описанного выше, получается, что физическая топология шины USB — дерево (ну, потому что хабы можно каскадировать), а логическая топология — звезда, центром которой является хост-контроллер. Физическая и логическая топологии шины USB показаны на рисунке ниже.
Идём дальше. Что же вообще представляет собой логическое устройство USB (как хабы, так и функции)?
Логическое устройство представляет собой набор так называемых конечных точек (endpoints или просто EP). Физически, конечные точки — это просто разные буферы в логическом устройстве USB, через которые происходит обмен данными с хостом. Логичный вопрос — а зачем нам иметь несколько буферов? Ну, просто потому что удобно для разных задач иметь разные буферы. Устройство же у нас может выполнять параллельно несколько разных задач. (Минимум две — отслеживать команды управления от хоста и делать что-то полезное.) У этих разных задач могут могут быть разные степени важности, требования к надёжности, своевременности и скорости доставки данных и, наконец, источники и потребители пересылаемой информации также могут быть разные (источником и потребителем полезной инфы обычно является клиентский драйвер, в то же время всякая управляющая инфа ему обычно нафиг не нужна).
Поскольку для решения описанных выше проблем недостаточно иметь просто разные буферы для разной передаваемой информации, то в дополнение к этому придумали ещё кое-что.
Во-первых, придумали 4 различных типа передач. Для каждой конечной точки должно быть определено, каким из этих типов передач с ней нужно общаться. Типы передач в USB существуют следующие:
Вернёмся к нашим конечным точкам. Для того, чтобы отличить одну точку от другой, — конечные точки, должны иметь уникальный номер. Но это не всё. Кроме номера, каждая конечная точка имеет ещё и направление. IN — если точка предназначена для передачи данных хосту, OUT — если точка предназначена для приёма данных от хоста. Точки с одинаковыми номерами, но с разными направлениями передачи данных — это разные с точки зрения логики шины конечные точки.
Единственное исключение — конечная точка EP0. У неё вообще особый статус. Она является служебной и предназначена для общего управления устройством (конфигурирование, настройка и т.д.). Кроме того, эта конечная точка двунаправленная и она должна обязательно присутствовать в любом USB-устройстве.
Исходя из всего вышеописанного, для идентификации какой-то конечной точки на шине, нам нужно знать адрес устройства, к которому относится конечная точка, её номер в устройстве и направление передачи данных через эту точку.
Поскольку устройство не всегда делает абсолютно всё на что оно только способно, да и способов решения одной и той же задачи оно может иметь несколько, то обычно нет необходимости задействовать абсолютно все конечные точки. Поэтому придумали такие понятия, как интерфейс, конфигурация и альтернативные установки. Интерфейс объединяет конечные точки, предназначенные для решения какой-либо одной задачи. Наборы используемых одновременно интерфейсов называются конфигурациями. Альтернативные установки позволяют включать или отключать какие-то входящие в конфигурацию конечные точки, в зависимости от способа решения задач для которых предназначена эта конфигурация.
Самих конфигураций и альтернативных установок у каждой из этих конфигураций для одного логического устройства может существовать несколько, но в каждый момент времени только один из этих наборов может быть активен. Причём хост должен знать, какой именно набор активен и в соответствии с этим обеспечивать связь с входящими в этот набор конечными точками. Остальные конечные точки, не входящие в активный набор, не будут доступны для связи.
На этом, пожалуй, с основами закончим и в следующей статье попробуем более детально рассмотреть механизм передачи данных по интерфейсу USB.
В данном цикле статей будет рассмотрен под разными углами интерфейс USB (USB 2.0) Попробуем разобраться, как он работает и закрепить полученные знания практически. «Копать» мы будем достаточно глубоко, не коснемся только физического уровня передачи данных (вернее коснемся вскользь). Физический уровень возьмет на себя соответствующий периферийный модуль МК.
Все примеры, которые я буду приводить, будут привязаны к линейке МК AT91SAM7S. Так как эта линейка МК не очень популярна в Сообществе, я постараюсь акцентировать внимание на работе самого интерфейса и по минимуму затрону специфические для этого МК особенности реализации.
Примеры будут базироваться на «глубоко модернизированном» и достаточно низкоуровневом примере реализации USB от Atmel. Готовые библиотеки рассматривать не будем. Не по тому, что это плохо, просто наша цель разобраться — как работает интерфейс.
В качестве практического задания – давайте поставим целью создать CDC-ACM устройство. На практике, за сокращением CDC-ACM стоит «обыкновенный» виртуальный СОМ-порт. С терминологией разберемся позже, пока скажем так: на уровне ОС устройство будет автоматически распознаваться как последовательный интерфейс (COM-порт в Win, /dev/ttyS в Linux и т. д.).
Общие сведения.
USB –последовательный интерфейс, используемый для подключения периферийных устройств. Соответственно, существуют понятие «главное устройство» (хост, он управляет обменом данными через интерфейс, выступает инициатором обмена) и «периферийное устройство» (клиент, в процессе обмена данными «подчиняется» хосту).
Логика работы у хоста и клиента принципиально отличается, соответственно нельзя напрямую соединять устройства «хост – хост» и «клиент – клиент».
Есть специальные устройства – хабы, которые подключаются в качестве клиента к одному хосту и, в тоже время, выступают хостом для других периферийных устройств. Хабы используют для «разветвления» шины USB.
Полагаю, изложенные факты общеизвестны, двигаемся далее.
Физический уровень.
Физически интерфейс USB использует 4 провода: «земля (GND)», «+5В (VBUS)», «D+», «D-». Первые два могут использоваться для питания периферийного устройства (максимальный ток 500 мА). Два последних служат для передачи данных (обозначение D+ и D- условны, с электрическими потенциалами это никак не связанно).
Как я уже сказал, физическую передачу данных через D+ и D- нам обеспечит USB модуль МК.
Нам нужно знать следующее:
1. Питание на периферийное устройство подается сразу после подключения к USB разъему хоста. Сам разъем сконструирован таким образом, что первыми входят в «зацепление» контакты «GND» и «VBUS», только потом «D+» и «D-».
2. Подключение устройства к USB разъему хоста не означает, что хост сразу определит подключение нового устройства. Если не вдаваться в подробности, подключение/отключение устройства хост определяет по наличию вешней подтяжки на линиях D+ и D-. Такая формулировка очень упрощена, детально ознакомиться с вопросом можно в разделе 7.1.7.3 официальной спецификации USB 2.0.
В нашем случае, для того чтобы «заявить о себе» нужно подтянуть линию D+ посредством сопротивления 1.5 кОм к напряжению 3.3 вольта. Если мы уберем данную подтяжку – хост определит отключение устройства.
Подтяжку можно сделать постоянной (в таком случае хост будет определять подключение / отключение устройства одновременно с подключением / отключением устройства к разъему USB), либо управлять подтяжкой через ключ, дергая ногой МК (тогда наше устройство сможет самостоятельно подключатся и отключатся от хоста).
Логический уровень
На логическом уровне, обмен данными происходит через некоторые логические, виртуальные каналы внутри одного физического USB интерфейса. Такие каналы называют «Конечными точками» (EndPoints).
Конечные точки (каналы) бывают 4 видов:
Control – данный тип канала используется хостом для управления периферийным устройством. Хотя иногда данный тип канала используется для передачи данных.
Bulk — данный тип канала используется для обмена данными. Гарантирование целостности данных и гарантированная доставка данных для данного типа канала реализована «в железе». Однако скорость передачи данных по такому каналу ограничена.
Isochronous — данный тип канала в основном используется для обмена потоковыми данными. Целостность и доставка данных не контролируются, зато скорость значительно выше чем для Bulk каналов.
Interrupt – используются для реализации подобия «прерываний». Такие «прерывания» являются логическими, и никак напрямую не связанны с аппаратными прерываниями МК или прерываниями ОС.
Минимальная реализация USB устройства требует наличие всего одного Control канала (так называемая «нулевая конечная точка»). Остальные типы каналов, как и их количество определяет разработчик устройства исходя из функций устройства.
Однако, существуют некоторые стандартизированные классы USB устройств. Для каждого такого класса количество каналов, их типы и назначение установлено стандартом для данного класса устройств.
Мы стремимся создать устройство класса CDC (communications device class). Использование стандарта, в данном случае, избавит нас от необходимости писать драйвер для ОС. Как правило, драйвера для стандартных классов устройств уже «вшиты» во все популярные ОС.
Детально ознакомляться с типами каналов будем по ходу реализации нашего устройства. Забегая наперед, скажу, что в нашем устройстве будет 3 канала. Control канал для управления и два Bulk канала для предачи данных по направлению «ПК-МК» и, соответственно «МК-ПК».
Первая — вводная статья получилась слишком теоретической.
В следующей статье мы поговорим о дескрипторах USB устройства и рассмотрим процедуру инициализации устройства (запрос дескрипторов хостом и т. д.). Увы, но опять будет много теории, запаситесь терпением. :) Ничего, нам осталось «пережевать» дескрипторы устройств, после чего появятся примеры кода.
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали авторы-волонтеры.
Универсальная последовательная шина USB – это протокол электронной связи, который широко используется в компьютерных принадлежностях и других небольших устройствах. Периферийные устройства вроде клавиатуры, мышки, камер, принтеров, запоминающих устройств и MP3-плееров обычно подключаются к компьютеру с помощью кабеля USB. Некоторые из них даже получают энергию при помощи такого кабеля. Подключая USB-накопитель к компьютеру, необходимо помнить несколько важных правил, чтобы ваше устройство работало безотказно.
- В таком случае драйвер обычно содержится на комплектном диске. Поместите компакт-диск в привод и следуйте подсказкам.
Включите устройство и компьютер. Если USB-накопитель оснащается переключателем питания или специальным кабелем, то перед подключением к ПК устройство необходимо включить. Также не забудьте включить компьютер.
Подключите кабель USB к устройству (при необходимости). Обычно небольшие запоминающие устройства имеют встроенный разъем USB, но переносные жесткие диски и другие приборы могут оснащаться кабелем. Подключите кабель к устройству, чтобы затем подключить его к компьютеру.
Найдите USB-порт на своем компьютере. Разъем будет выглядеть как небольшое отверстие прямоугольной формы с 4 металлическими контактами внутри. Обычно USB-порт обозначается соответствующим логотипом в виде круга и стрелки с тремя зубцами. Если такое устройство будет постоянно подключено к ПК, то лучше использовать порт с задней стороны компьютера. Передние разъемы более удобны для быстрого и кратковременного подключения.
Подключите USB-кабель к USB-порту компьютера. Решите, какой порт нужно использовать, после чего просто вставьте в него разъем накопителя. Разъем должен вставляться плотно и без усилий в одном направлении, поэтому разверните кабель на 360 градусов, если не удается подключить накопитель.
Дождитесь, пока завершится установка драйверов. При первом подключении устройства операционная система может выполнить поиск и установку необходимых драйверов. Через несколько секунд ваш компьютер выдаст оповещение о том, что установка драйверов завершена и устройство готово к использованию. Если вы уже установили драйверы вручную, то накопитель сразу будет готов к работе.
Выполнив необходимые действия, отключите USB-накопитель. После работы устройство следует отключить или "извлечь". В системе Windows нужно щелкнуть правой кнопкой мыши по иконке USB-устройства в Проводнике и выбрать пункт "Извлечь". В системе Mac выберите и перетащите иконку накопителя в корзину, чтобы появилась иконка "Извлечение". После этого нужно физически извлечь накопитель из разъема, не прикладывая особых усилий.
При эксплуатации компьютера неопытному пользователю важно всё делать правильно, чтобы не навлечь проблем. Ведь при больших неполадках придется вызывать мастера или мучительно разбираться самому.
Присоединять flash-устройство тоже нужно правильно, чтобы не повредить ни USB разъем, ни систему.
Использование flash-накопителя через USB
Чтобы использовать USB порт для подключения вашего устройства к персональному компьютеру, требуется проделать ряд несложных действий:
Система не может открыть устройство
Если возникает ошибка при открытии внешнего носителя данных, то лучшим способом будет форматирование устройства и дальнейшее восстановление данных. Делается эта процедура путем несложных действий:
-
Кликните по иконке flash-накопителя правой кнопкой мыши и выберите пункт «Форматировать».
Если эти действия не помогли, и устройства не оказалось, то возможно повреждение драйверов USB
Вам нужно их удалить и установить новые, следуя следующим действиям:
-
Перейдите в главное системное меню «Пуск». И выберите параметр «Панель управления».
Проделав все эти шаги, присоедините flash-устройство заново к персональному компьютеру, и система установит недостающие драйвера для использования накопителя, после чего его значок должен появиться в файловом менеджере.
Видео — Работа с флешкой
USB-накопитель, также называемый флэш-накопителем или картой памяти, представляет собой небольшое портативное устройство, которое подключается к USB-порту компьютера. USB-накопители обычно используются для хранения, резервного копирования и передачи файлов между устройствами. USB-накопители имеют разную емкость и разные порты, каждый из которых обладает уникальной формой. Использование USB-накопителя может отличаться в зависимости от типа компьютера, к которому вы хотите подключиться. Читайте эту статью и узнайте, как использовать USB-накопитель в системе Windows.
Совместим ли мой USB-накопитель с моим компьютером?
Если вы впервые используете USB-накопитель, важно убедиться, что он совместим с USB-портами вашего компьютера. Большинство людей узнают накопитель типа USB-A. Это большой USB-накопитель квадратной формы, который можно вставить в порт только одним способом. Однако на новых моделях компьютеров с ОС Windows порт USB-A часто заменяется более компактной, тонкой альтернативой — портом USB-C.
Если на вашем компьютере с ОС Windows есть только порт USB-C, однако вы используете накопитель USB-A, можно либо приобрести переходник USB-A/USB-C, либо купить недорогой новый накопитель USB-C.
Как вставить USB-накопитель?
USB-накопитель, совместимый с вашим компьютером с ОС Windows, можно вставить в USB-порт. На ноутбуке эти порты обычно расположены сбоку, а на настольном компьютере — на передней или задней панели. При использовании USB-A убедитесь, что вы вставляете USB-накопитель правильной стороной, чтобы предотвратить повреждение компьютера.
При первом подключении USB-накопителя Windows установит для его использования необходимое программное обеспечение драйвера. Далее должно открыться диалоговое окно. Выберите «Открыть папку для просмотра файлов». Если диалоговое окно не появляется, можно вставить USB-накопитель снова или открыть проводник и выбрать USB-накопитель.
Как отформатировать USB-накопитель в Windows 10?
Большинство USB-накопителей будут предварительно отформатированы. Накопители емкостью 32 ГБ или менее имеют файловую систему FAT32. Если емкость накопителя больше 32 ГБ (для групп емкости USB-накопителей Kingston это будет емкость 64 ГБ или больше), используется файловая система exFAT. Максимальный объем хранилища в FAT32 составляет 32 ГБ, поэтому форматирование накопителей большей емкости в этой файловой системе невозможно.
После подключения USB-накопителя к компьютеру можно копировать и перемещать файлы, форматировать или переименовывать накопитель. Чтобы переименовать накопитель, откройте проводник и в левой панели выберите «Этот компьютер». Щелкните правой кнопкой USB-накопитель и выберите «Переименовать». NTFS является стандартным форматом для загрузочного диска Windows, но внешний формат Windows exFAT или FAT32 позволяет использовать USB-накопитель как на компьютерах Mac, так и на компьютерах с ОС Windows. Возможно, вы захотите оставить на накопителе файловую систему exFAT или FAT32, чтобы можно было работать с ним на компьютере Mac, но можно и отформатировать накопитель в файловой системе NTFS. Для форматирования в NTFS откройте проводник и выберите «Этот компьютер» в левой панели. Затем щелкните правой кнопкой мыши USB-накопитель и выберите форматирование и NTFS. Обратите внимание, что все данные на накопителе будут удалены, поэтому предварительно сделайте их копию.
Если USB-накопитель был отформатирован для Mac (AFS+), но вы хотите использовать его на ПК, необходимо отформатировать его с файловой системой exFAT, FAT32 или NTFS. Однако учтите, что все данные на накопителе будут удалены.
После форматирования USB-накопитель должен быть готов к использованию. Для просмотра его содержимого откройте проводник и выберите USB-накопитель из списка на левой панели.
Как можно использовать USB-накопитель?
Получив доступ к USB-накопителю на компьютере с ОС Windows, вы можете использовать его как любую другую папку на компьютере.
- Можно сохранять документы непосредственно на USB-накопителе.
- Можно копировать файлы на USB-накопитель и с него. (Обратите внимание, что при копировании файлы дублируются.)
- Также можно удалить файл с USB-накопителя, перетащив его в корзину. Должно открыться диалоговое окно. Нажите «Да», чтобы подтвердить, что вы хотите навсегда удалить этот файл и освободить место на USB-накопителе. (Если диалоговое окно не появляется автоматически, щелкните правой кнопкой мыши корзину, затем выберите «Свойства» и установите флажок «Запрашивать подтверждение на удаление».)
Как извлечь USB-накопитель?
После завершения работы с USB-накопителем важно правильно извлечь его из компьютера с ОС Windows, чтобы не допустить повреждения файлов. Для этого нажмите маленькую стрелку в правой части панели задач, выберите значок USB и нажмите «Извлечь» во всплывающем меню нужного USB-устройства. Либо щелкните правой кнопкой мыши USB-накопитель и выберите «Извлечь».
Внешние хранилища, такие как USB- и твердотельные накопители, — это отличный способ для переноса файлов, резервного копирования важных документов и получения на компьютере с ОС Windows дополнительного места для запуска приложений и игр.
Использование старого твердотельного накопителя в качестве внешнего устройства хранения
Физические повреждения
Ваше устройство может не работать из-за неисправностей самого flash-носителя. Это может быть повреждение разъема:
- изгибы;
- трещины;
- битые контакты и т. п.;
- также и повреждение самой платы, из-за, например, деформации корпуса.
Примечание! Решением этой проблемы может послужить либо покупка нового устройства, либо ремонт у мастера, если вы не обладаете навыками ремонта подобных устройств.
Что касается USB разъема, то причина возникновения проблем с подключением носителя может скрываться в неисправности разъема панели системного блока.
Совет! Удостоверьтесь в работоспособности USB путем эксплуатации другого средства воспроизведения, либо выберите другой разъем.
Неисправности системы
Если в вашем файловом менеджере при подключении носителя нет доступа к нему, то есть несколько решений.
Система не распознает устройство
Вы можете посмотреть наличие доступа к накопителю через иной файловый менеджер:
Можно воспользоваться распространенным программным обеспеченьем «TotalCommander».
-
Для этого зайдите в любой удобный браузер и скачайте эту программу.
Открытие
- Теперь настало время использования flash-устройства. Для того чтобы открыть его, требуется воспользоваться стандартным проводником «Мой компьютер». Поэтому перейдите в «Пуск» меню и выберите параметр «Компьютер».
В графе «Устройства со съемными носителями» выбираем flash-накопитель и кликаем по нему дважды левой кнопкой мыши
После открытия можно смело пользоваться доступом к ресурсам вашего устройства.
Подключение
- Возьмите в руки flash-устройство и проверьте наличие разъема, также нужно убедиться в отсутствии его деформации (явные изгибы, царапины, трещины и т. п.).
- Найдите панель с USB разъемами, которая должна находиться либо сзади системного блока, либо спереди. Есть вариант размещения панелей, где они находятся и сзади, и спереди. В таком случае выберите удобную и доступную для вас панель.
Возникновение проблем с подключением и открытием flash-устройства
Часто возникает ряд проблем с подключением и дальнейшей эксплуатацией носителя данных. Рассмотрим исправление этих проблем.
Извлечение
Если время использования данных накопителя подошло к концу, то далее требуется безопасно извлечь flash-носитель. Эта процедура осуществляется путем проделывания нетрудных шагов:
- Закройте окна, которые вы вызывали из памяти устройства.
- Перейдите в файловый менеджер «Мой компьютер» и нажмите правой кнопкой мыши по значку flash-носителя. Выберите пункт «Извлечь».
Таким образом, проделав все эти шаги, вы можете не волноваться за исправность flash-накопителя и системы.
Видео — Как на компьютере открыть флешку
Читайте также: