Usb slave что это
"оптимального" там нет - все зависит от того, как вы подключаете устройства
Если к одному шлейфу подключены два устройства, одно из них обычно называется ведущим (англ. master), а другое ведомым (англ. slave). Обычно ведущее устройство идёт перед ведомым в списке дисков, перечисляемых BIOS’ом компьютера или операционной системы. В старых BIOS’ах (486 и раньше) диски часто неверно обозначались буквами: «C» для ведущего диска и «D» для ведомого.
Если на шлейфе только один привод, он в большинстве случаев должен быть сконфигурирован как ведущий. Некоторые диски (в частности, производства Western Digital) имеют специальную настройку, именуемую single (то есть «один диск на кабеле») . Впрочем, в большинстве случаев единственный привод на кабеле может работать и как ведомый (такое часто встречается при подключении CD-ROM’а на отдельный канал) .
Настройка, именуемая cable select (то есть «выбор, определяемый кабелем» , кабельная выборка) , была описана как опциональная в спецификации ATA-1 и стала широко распространена начиная с ATA-5, поскольку исключает необходимость переставлять перемычки на дисках при любых переподключениях. Если привод установлен в режим cable select, он автоматически устанавливается как ведущий или ведомый в зависимости от своего местоположения на шлейфе. Для обеспечения возможности определения этого местоположения шлейф должен быть с кабельной выборкой. У такого шлейфа контакт 28 (CSEL) не подключен к одному из разъёмов (серого цвета, обычно средний) . Контроллер заземляет этот контакт. Если привод видит, что контакт заземлён (то есть на нём логический 0), он устанавливается как ведущий, в противном случае (высокоимпедансное состояние) — как ведомый.
Во времена использования 40-проводных кабелей, широко распространилась практика осуществлять установку cable select путём простого перерезания проводника 28 между двумя разъёмами, подключаемыми к диску. При этом ведомый привод оказывался на конце кабеля, а ведущий в середине. Такое размещение в поздних версиях спецификации было даже стандартизировано. К сожалению, когда на кабеле размещается только одно устройство, такое размещение приводит к появлению ненужного куска кабеля на конце, что нежелательно — как из соображений удобства, так и по физическим параметрам: этот кусок приводит к отражению сигнала, особенно на высоких частотах.
80-проводные кабели, введённые для UDMA4, лишены указанных недостатков. Теперь ведущее устройство всегда находится в конце шлейфа, так что, если подключено только одно устройство, не получается этого ненужного куска кабеля. Кабельная выборка же у них «заводская» — сделанная в самом разъёме просто путём исключения данного контакта. Поскольку для 80-проводных шлейфов в любом случае требовались собственные разъёмы, повсеместное внедрение этого не составило больших проблем. Стандарт также требует использования разъёмов разных цветов, для более простой идентификации их как производителем, так и сборщиком. Синий разъём предназначен для подключения к контроллеру, чёрный — к ведущему устройству, серый — к ведомому.
Термины «ведущий» и «ведомый» были заимствованы из промышленной электроники (где указанный принцип широко используется при взаимодействии узлов и устройств) , но в данном случае являются некорректными, и потому не используются в текущей версии стандарта ATA. Более правильно называть ведущий и ведомый диски соответственно device 0 (устройство 0) и device 1 (устройство 1). Существует распространённый миф, что ведущий диск руководит доступом дисков к каналу. На самом деле управление доступом дисков и очерёдностью выполнения команд осуществляет контроллер (которым, в свою очередь, управляет драйвер операционной системы) . То есть фактически оба устройства являются ведомыми по отношению к контроллеру.
Ведущий, ведомый, определяется автоматически. На современных компах роли не играет, просто соблюдается правило обратной совместимости для старинных компов.
Они относятся к ситуации, когда на шлейфе два дисковода. Если один - ставь MASTER, если два - ставь один MASTER, второй - SLAVE.
CSEL - "определяется кабелем" (шлейфом) . Этим режимом никогда не пользуюсь.
Надписи игнорировать, дисковод выбросить, купить флешку, жесткие диски покупать только SATA - они работают по принципу 1 жесткий - 1 провод.
Для общего образования можно почитать первый пост, очень интересный и познавательный.
Возможно, я бы и не стал писать обзор новой версии медиаплеера Egreat, если бы не несколько приятных обновлений. Как и все устройства подобного класса, плеер предназначен для демонстрации видео в разрешении HDTV (1080p) и неплохо справляется со своей задачей. Естественно, без помощи компьютера.
Обзор первой версии Egreat M-31A можно посмотреть здесь и здесь, поэтому я не буду останавливаться на уже рассмотренных возможностях.
Простые вопросы: что такое шрифт и что такое семейство шрифтов?
Что такое шрифт? Что такое семейство шрифтов? Когда были впервые изобретены шрифты? Каковы характеристики шрифта? Как хранятся шрифты в Windows?
Впечатления и выводы
Сборка плеера, установка жесткого диска, обновление при необходимости прошивки и установка NMT-приложений никаких проблем не вызывает. Особенно для человека, мало-мальски знающего основы пользования компьютером. Ничего сложного не представляет собой и настройка сетевых сервисов (BitTorrent). Но все-таки это устройство нельзя относить к плеерам «для чайников». После выхода обзора первой версии мне пришлось отвечать на множество вопросов по поводу того, что не поддерживались многие MKV-рипы, которые без проблем воспроизводились на том же «Попкорне». Потом выяснилось, что все дело в прошивке, которую следовало обновить. Из личного опыта могу сказать, что очень многие пользователи просто не желают забивать себе голову подобными проблемами. Вторая версия в этом смысле намного удачнее, но определенных проблем с плеером я не исключаю. Так что потенциальному владельцу поневоле придется освоить самые необходимые действия или читать специализированные форумы. При тестировании этого плеера я отказался от создания отельного NTFS-раздела на диске и пользовался только разделами, созданными при форматировании диска. В то же время коллега изначально установил в плеер жесткий диск, отформатированный в NTFS, поскольку сетевые функции ему были просто не нужны. В первом случае (разделы ext2) я заранее был готов к тому, что просто так скопировать содержимое с внешнего компьютера на диск может и не получиться, так как соответствующий драйвер устанавливают далеко не все. Так что вариант с выделением раздела под NTFS является более универсальным. В том же случае, если вы не пользуетесь плеером для закачки торрентов, можно сразу использовать жесткий диск в NTFS. Тогда плеер можно без проблем использовать в качестве емкого переносного накопителя или для просмотра фильмов «на вынос». Например, при походе в гости. Укомплектованный диском плеер достаточно тяжел, но в то же время достаточно компактен. С учетом наличия стандартных разъемов с собой, помимо плеера, придется взять только адаптер питания.
О скорости копирования я уже писал выше. В среднем копирование одного фильма занимает около часа, так что для того чтобы забить под завязку террабайтный диск, может потребоваться около суток при передаче данных через LAN-интерфейс. Скорость передачи данных через USB примерно в 5 раз выше (проверялось на "чистой" системе), а при копировании данных через интерфейс eSATA скорость ограничена скоростью записи жесткого диска.
Во время работы вентилятор плеера во время просмотра не слышен вообще, но при выключенном компьютере шум слышен хорошо, особенно ночью. Так что устанавливать плеер в спальне я бы не стал. Намного проще установить его в стойку рядом с телевизором, а доступ к локальной сети обеспечить через розеточные адаптеры PowerLine, о которых мы тоже писали.
Устройства подобного типа будут пользоваться популярностью до тех пор, пока у нас будет доступна закачка фильмов c самых разнообразных трекеров. С точки зрения авторских прав это достаточно сомнительное мероприятие, которое, тем не менее, пользуется большой популярностью. Сам я тоже грешен, поскольку диски с фильмами в высоком разрешении являются достаточно редкими предметами в ближайших точках реализации мультимедийной продукции. Да и смотреть фильм с жесткого диска намного удобнее, чем с DVD-плеера.
Поэтому общее заключение будет следующим: хороший плеер с уникальными для данного сегмента функциями, который для нормальной работы требует минимальной технической подготовки и желание устранять возникающие проблемы самостоятельно.
Выражаем благодарность компании HD1080 за предоставленный на тестирование сетевой медиаплеер.
[an error occurred while processing this directive]
Установка диска и программного обеспечения
В принципе она не отличается от уже описанной в обзоре плеера Egreat M-31A (/articles/2008/egreat-m13a-2.shtml), поэтому никаких особенностей в этой части не добавилось. Еще раз отмечу только, что для обновления прошивки и установки NMT-приложений файлы необходимо скопировать на флэш-диск и запускать обновление прошивки уже с него через менеджер установки. Одновременно с установкой приложений происходит форматирование жесткого диска в файловую систему Linux (ext2 или ext3). Для просмотра этих разделов с настольного компьютера требуется установка драйвера, который имеется на сайте разработчиков в разделе поддержки.
После установки программного обеспечения плеер может выступать в качестве сетевого накопителя с поддержкой сервисов FTP, Sumba, BitTorrent, сетевого IPTV и музыкальных трансляций. Подробно эти опции плеера описаны в обзоре первой версии плеера. В этом обзоре я приведу только скорости копирования данных при подключении плеера к компьютеру через различные интерфейсы. Как уже указывалось выше, проверить скорость копирования через интерфейс eSATA не удалось. Как только у меня появится соответствующий адаптер, я обязательно выложу эти данные на нашем форуме.
Для тестирования использовался файл размером 16.7 Гб.
Интерфейс | USB-HOST | USB-Slave | FTP | Sumba |
Время | 42 мин | 46 мин | 1 час 35 мин | 91 мин |
Таким образом, скорость копирования составляет от 6.6 (USB-HOST) до 2.9 Мб/сек (FTP).
Видео: NOVA & USB sLAve - Blackout | Ninety9Lives Release (Май 2022).
Разъемы USB следуют за отношениями ведущего и подчиненного. Это означает, что одно устройство, обычно персональный компьютер, выполняет роль главного, управляя информацией, поступающей в порт USB и из него. Периферийное устройство USB, например небольшая флешка, действует как подчиненное устройство. Им может управлять только мастер или он не будет работать. В этом отношении некоторые USB-слэйвы бесполезны, если они не подключены к главному устройству.
USB-ведомые могут содержать только данные и не работать как анонимные блоки.
Универсальная последовательная шина - это метод передачи данных и порты, используемые для подключения определенных устройств к компьютеру. Иногда термин «USB» также используется для соединительного кабеля или даже самого периферийного устройства. Современные компьютеры обычно имеют несколько портов USB. Во многих случаях для использования периферийного устройства с USB-портом необходимо просто подключить его. Затем ваш компьютер будет искать драйвер на устройстве или использовать существующие драйверы для загрузки файлов. Эти периферийные устройства называются USB-рабами.
USB Рабы
Термин «ведомые устройства USB» охватывает весь спектр периферийных устройств. Одной из наиболее распространенных форм USB-слэйва является флэш-накопитель или флэш-накопитель. Эти небольшие устройства подключаются к USB-концентраторам на компьютерах, предлагая куски внешнего хранилища размером от 256 МБ до 16 ГБ и более. Тем не менее, USB-устройства также включают такие устройства, как веб-камеры, принтеры или сканеры. В каждом случае устройству требуется главный компьютер для полной функциональности, хотя некоторые USB-устройства, такие как камеры, будут работать независимо. Некоторые периферийные устройства, такие как смартфоны, не являются строго подчиненными устройствами, хотя они действуют как таковые при подключении к компьютеру.
Комплект поставки
Глобальных изменений комплект поставки не претерпел, однако все же несколько особенностей имеется. Из комплекта поставки исчез оптический SPDIF-кабель и добавился кабель для интерфейса eSATA.
- Плеер
- Адаптер питания
- Кабель USB – 2 штуки (один из них с нестандартным разъемом типа штекер/штекер)
- Кабель HDMI
- Кабель eSATA
- Кабель 3хRCA (тюльпан)
- Пульт дистанционного управления
- Диск с программным обеспечением и инструкцией на английском языке
Внешний вид и дизайн
Внешний вид плеера не изменился – это все тот же прямоугольный бокс с небольшими пластиковыми ножками на нижней панели. Теперь бокс сделан из черного пластика, что добавило ему строгости во внешнем облике. На переднюю панель вынесены разъемы eSATA, причем один из них предназначен для подключения плеера в режиме «HOST», второй – в режиме «SLAVE», что в принципе позволяет подключать плеер напрямую к компьютеру для более быстрой передачи данных. Сразу оговорюсь: соответствующий разъем на материнской плате отсутствовал, поэтому эта возможность детально не тестировалась. Здесь же расположены светодиодные индикаторы для визуального отображения состояния устройства. На одной из боковых граней находится вентилятор для охлаждения.
Наиболее насыщена разъемами задняя панель. Самое первое, на что я обратил внимание, - это отсутствие аппаратного выключателя устройства. Запуск и, соответственно, выключение плеера сейчас проводится только с пульта. На задней панели расположены:
- Разъем для адаптера питания
- Два разъема USB-HOST
- Разъем USB-Slave
- Разъем для подключения сетевого кабеля
- Разъем HDMI
- Компонентный разъем для подключения видео
- Композитные разъемы для подключения видео и аудио
- Оптический разъем SPDIF
По сравнению с версией Egreat M-31A нужно отметить отказ от нестандартных (типа PS/2) разъемов для подключения видео- и аудиоустройств и возврат (или переход?) к стандартным RCA-тюльпанам. Это однозначно правильное решение, поскольку плеер можно использовать в качестве переносного проигрывателя, а ношение с собой еще и нестандартных кабелей является, на мой взгляд, ненужным излишеством.
Сборка плеера заключается в установке жесткого диска, закреплении его двумя винтами на нижней панели с последующей установкой верхней пластиковой крышки. В новом плеере реализована аппаратная поддержка DTS-звука, однако пока эта опция заблокирована, поэтому для прослушивания звуковой дорожки в DTS-формате требуется внешний ресивер, который нужно подключать через оптический кабель. В этой связи отсутствие такого кабеля в комплекте поставки не совсем понятно. Второй способ решения проблемы с DTS-звуком заключается в установке дополнительной платы расширения, которая транскодирует DTS-звук и переводит его на RCA-разъемы. Плата устанавливается перед передней панелью. В стандартный комплект поставки она не входит, поэтому при заказе плеера ее наличие нужно оговаривать отдельно.
Пульт тоже изменился. Он приобрел более вычурную форму, изменилось привычное по прошлому пульту расположение клавиш при сохранении общей функциональности. Клавиши пульта изготовлены из белой резины, в состав которой включен люминофор, который обеспечивает непродолжительное пассивное свечение клавиш пульта в темноте. Инфракрасный датчик обладает узконаправленным лучом, поэтому для управления плеером пульт необходимо направлять на приемник достаточно точно.
взаимодействие
Истинные USB-ведомые не могут взаимодействовать друг с другом, только с главным устройством. Таким образом, веб-камера USB не будет подключаться к игровому контроллеру USB. Большинство устройств, выпущенных после 2000 года, используют для связи USB 2.0, что является более быстрой спецификацией, чем у оригинальных USB-устройств с большей пропускной способностью. Некоторые USB-порты после 2010 года теперь используют USB 3.0, хотя по состоянию на июль 2011 года это относится только к высококлассному оборудованию. USB 3.0 обеспечивает скорость передачи 5 гигабит в секунду, что значительно выше, чем скорость USB 2.0 480 мегабит в секунду.
Что такое стекло гориллы? что такое 2.5d стекло? как они сравниваются?
Что такое Gorilla Glass? Что это значит? Что такое 2.5D стекло? Есть ли разница? Какое стекло лучше или долговечнее?
В данном цикле статей будет рассмотрен под разными углами интерфейс 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 устройства и рассмотрим процедуру инициализации устройства (запрос дескрипторов хостом и т. д.). Увы, но опять будет много теории, запаситесь терпением. :) Ничего, нам осталось «пережевать» дескрипторы устройств, после чего появятся примеры кода.
Итак, нам осталось разобраться с процессом обработки стандартных запросов USB и с дескрипторами. Давайте сначала разберемся с теорией, а потом подробно разберем пример обработки конкретного запроса.
Обработка запросов.
Процесс обработки запроса состоит из трех фаз (SETUP, DATA, STATUS), причем фаза DATA является опциональной.
Как мы помним из предыдущей статьи, для передачи запросов хост использует специальный TOKEN пакет — TOKEN SETUP. Собственно говоря, первая фаза состоит из того, что хост посылает TOKEN SETUP, затем посылает пакет данных (8 байт) который содержит запрос. Устройство подтверждает получение запроса ACK пакетом. Структуру запроса мы рассмотрим ниже, пока перейдем к следующей фазе – фазе обмена данными.
Дело в том, что некоторые типы запросов предполагают передачу дополнительных данных, как от хоста к устройству (передача дополнительных параметров запроса) так и от устройства к хосту (получение хостом ответа на запрос). Этот обмен и составляет фазу обмена данными.
Хост, отравив запрос в SETUP фазе, знает тип запроса и, соответственно, знает: нужна ли для данного типа запроса фаза обмена данными и в какую сторону будет происходить обмен.
Если запрос предполагает передачу дополнительных параметров — хост отправляет TOKEN OUT и пакет данных содержащий дополнительные параметры запроса. Устройство подтверждает получение пакета данных, после чего хост может послать следующий пакет данных и т. д.
Соответственно, если запрос предполагает получение ответа от устройства, хост посылает TOKEN IN и ожидает пакет данных от устройства.
Последняя (STATUS) фаза нужна для подтверждения корректности обработки всего запроса. На данной фазе устройство или хост просто посылает пакет данных нулевой длины, что свидетельствует об успешной обработке запроса на логическом уровне. Если запрос предполагал получение ответа от устройства – то данный пакет посылает хост, подтверждая, что ответ получен/обработан. В другом случае – пакет нулевой длины шлет устройство, подтверждая, что запрос (запрос и дополнительные параметры) получены и обработаны.
Если что-то пошло не так (например, мы получили запрос который не умеем обрабатывать), устройство может послать STALL пакет, что свидетельствует об ошибке на логическом уровне. Но хост расценит это как фатальную ошибку т. к. стандартные запросы должны всегда корректно обрабатывается всеми USB устройствами.
Теперь заглянем «внутрь» запроса (8 байт данных полученных устройством в SETUP фазе). Запрос состоит из следующих полей:
bmRequestType — 1 байт
bRequest – 1 байт
wValue – 2 байта, WORD
wIndex – 2 байта, WORD
wLength – 2 байта, WORD
bmRequestType – битовое поле, которое содержит характеристики запроса:
Бит 7: Направление передачи данных в DATA фазе:
0 = от хоста к устройству
1 = от устройства к хосту
Биты 6. 5: Тип запроса
0 = стандартный запрос USB
1 = стандартный запрос для определенного класса устройств USB
2 = пользовательский запрос
3 = зарезервировано
Биты 4. 0: Кому адресован запрос
0 = устройству
1 = интерфейсу
2 = конечной точке
3 = другое
4. 31 = зарезервировано
bRequest – уникальный код запроса (например, 0 = GET_STATUS, 5 = SET_ADDRESS, 6 = GET_DESCRIPTOR и т. д.)
Здесь следует пояснить, зачем нужны биты 4..0 поля bmRequestType. Например, для получения статуса хост посылает запрос GET_STATUS (bRequest = 0). Значение бит 4. 0 поля bmRequestType определяет, статус чего именно хочет получить хост: 0 – статус устройства, 1 – статус интерфейса, 2 – статус контрольной точки и т. д.). Таким образом, «тип запроса» определяется битами 4..0 поля bmRequestType и полем bRequest.
wValue – данное поле может использоваться для передачи параметров запроса. Например, для запроса SET_ADDRESS данное поле содержит адрес, который нужно присвоить устройству. Если параметры запроса не помещаются в 2 байта wValue, то хост их передает в DATA фазе.
wIndex – значение данного поля зависит от типа запроса. Например, для запроса GET_STATUS к конечной точке, данное поле содержит индекс конечной точки, статус которой хост хочет получить.
wLength – данное поле содержит размер данных, которые будут переданы хостом в DATA фазе либо которые хост ожидает получить в DATA фазе.
Для примера, рассмотрим алгоритм обработки запроса GET_DESCRIPTOR.
1. Хост посылает устройству запрос:
bmRequestType = 0x80
bRequest = 6 (GET_DESCRIPTOR)
wValue = 0x100 (тип дескриптора, который хост хочет получить, в данном случае дескриптор устройства)
wIndex = 0 (в данном случае параметр не используется)
wLength = 18 (в ответ хост хочет получить 18 байт)
Из запроса видно, что хост хочет получить дескриптор нашего устройства и что за SETUP фазой предполагается DATA фаза «от устройства к хосту».
2. Устройство посылает хосту 18 байт дескриптора (DATA фаза).
3. Хост подтверждает успешное завершение обработки запроса, отправив устройству пакет данных нулевой длины (STATUS фаза).
Будем считать, что с обработкой запросов мы разобрались. Все запросы подробно разбирать мы не будем, т. к. это очень объемный материал. Детально все типы стандартных запросов описаны в разделе 9.3 официальной спецификации.
Касательно нашего CDC устройства — помимо стандартных запросов USB, для нашего класса устройств предусмотрено несколько дополнительных запросов (SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE). Эти запросы предназначены для установки параметров (Baudrate, Stop Bits, Parity, Data bits) нашего виртуального COM-порта. В нашей реализации эти параметры нам не нужны, но обрабатывать эти запросы мы обязаны, поэтому реализуем обработку в виде «заглушек».
Дескрипторы
Теперь поговорим о дескрипторах.
Стандартом определены следующие типы дескрипторов:
— Дескрипторы устройства
— Дескрипторы конфигурации
— Дескрипторы интерфейса
— Дескрипторы конечной точки
— Строковые дескрипторы
Дескриптор устройства всегда один, он содержит базовую информацию об устройстве (код производителя, код устройства, класс устройства и т. д.). Мы позже детально разберем данный дескриптор на примере нашего устройства.
Дескрипторы конфигурации описывают конфигурации нашего устройства.
Здесь остановимся немного подробнее. Дело в том, что устройство может поддерживать несколько альтернативных конфигураций. Например, в конфигурации «1» устройство питается от интерфейса USB, а в конфигурации «2» – от внешнего источника. Или в конфигурации «1» устройство для обмена данными с хостом использует дополнительные контрольные точки типа bulk, а в конфигурации «2» – весь обмен идет через «нулевую конечную точку».
Для каждой из конфигураций устройство хранит свой дескриптор конфигурации. Хост получает по запросу дескрипторы всех конфигураций и выбирает одну из возможных конфигураций (логика выбора «рабочей» конфигурации из возможных заложена в драйвере устройства). После этого, хост назначает устройству номер текущей конфигурации (отправив стандартный запрос SET_CONFIGURATION) и дальнейшая работа устройства происходит в соответствии с выбранной хостом конфигурацией.
Для каждой конфигурации устройства определен один или несколько «интерфейсов». Интерфейс определяет, какие контрольные точки будут использоваться для обмена данными между хостом и устройством. Эта информация и есть «дескриптор интерфейса».
Информация о каждой конечной точке интерфейса называется «дескриптор конечной точки». Для каждой конечной точки дескриптор описывает тип конечной точки, ее параметры (такие как максимальный размер буфера обмена и т. д.)
Каждый дескриптор конфигурации содержит в себе дескрипторы интерфейса, а каждый дескриптор интерфейса содержит дескрипторы конечных точек.
Строковые дескрипторы опциональны, они позволяют получить хосту, в виде UNICODE строки, название устройства, название производителя устройства, серийный номер устройства.
Для примера, рассмотрим «дескриптор устройства», пример которого уже приводился в одной из статей.
Итак, в дескрипторе содержится следующая ключевая информация:
1. Устройство поддерживает версию стандарта 2.0
2. Устройство относится к классу CDC
3. Код производителя 0x03EB (Atmel)
4. Код продукта (в рамках производителя) 0x6127
5. Код ревизии устройства 0x0110
6. Устройство поддерживает одну конфигурацию
Компания Atmel позволяет использовать свой код производителя (VID) при создании USB устройств на базе ее продукции, правда с небольшими оговорками. Остальные параметры (Код продукта, Код ревизии устройства) выбраны «с потолка» :)
Комбинация VID/PID используется ОС для идентификации устройства и поиска «подходящего» драйвера. В некоторых случаях, для поиска драйвера используется информация о классе устройства (например, для HID и MSD устройств).
Описывать «побитно» все дескрипторы мы не будем, эта информация подробно описана в разделе 9.6 спецификации.
Теперь фрагмент кода — реализации данного уровня логики USB.
Эта статья завершает цикл.
Как и обещал – выкладываю исходные коды примера реализации (не стоит забывать, что это лишь пример, реализация очень упрощена). Для демонстрации работы стека в main.c реализована простая эхо-отвечалка, все данные полученные от ПК устройство отправляет обратно :)
Вместе с исходниками лежит файл USBCDC.inf – этот файл нужен ОС Windows для того, чтобы связать VID/PID нашего устройства со стандартным драйвером виртуального USB COM-порта (usbser.sys)
Просмотр видео
В новой прошивке для плеера Egreat M-31B существенно улучшена поддержка видеоформатов, использующихся для хранения видео в высоком разрешении. После обзора прошлой версии плеера на специализированных форумах появилось много претензий к ограниченной поддержке формата MKV. Эта проблема была решена с выходом новой версии прошивки. Прошивка Egreat M-31B изначально решена этих недостатков. Все фильмы, которые я просматривал во время тестирования, воспроизводились без проблем.
Для просмотра видео использовался широкоформатный монитор Samsung SyncMaster 400DXn с размером диагонали 40 дюймов и максимальным разрешением 1366х768 точек. На рисунках ниже приведены фотографии с экрана монитора. Фильмы с разрешением 1920х1080 автоматически подстраивались под разрешение экрана без потери в качестве и при отсутствии тормозов при воспроизведении. Следствием такой автоматической подстройки стали лишь черные полосы по верхней и нижней граням монитора. На телевизоре с поддержкой полного HDTV (1920х1080) таких полос уже не будет.
соединение
Многие USB-устройства подключаются к главному компьютеру с помощью соединительного кабеля. Большинство USB-кабелей имеют стандартный разъем на одном конце, предназначенный для подключения к классическому USB-порту на персональных компьютерах и аналогичных устройствах. Однако разъем на другом конце может отличаться в зависимости от типа USB-устройства. Например, на другом конце он может иметь микро-разъем для подключения к мобильному телефону или меньшему устройству.
Комплект поставки
Глобальных изменений комплект поставки не претерпел, однако все же несколько особенностей имеется. Из комплекта поставки исчез оптический SPDIF-кабель и добавился кабель для интерфейса eSATA.
- Плеер
- Адаптер питания
- Кабель USB – 2 штуки (один из них с нестандартным разъемом типа штекер/штекер)
- Кабель HDMI
- Кабель eSATA
- Кабель 3хRCA (тюльпан)
- Пульт дистанционного управления
- Диск с программным обеспечением и инструкцией на английском языке
Что такое 802.11ax, 802.11ad, 802.11ac и 802.11n? что такое Wi-Fi 6, Wi-Fi 5 и так далее?
Что такое Wi-Fi 6, Wi-Fi 5 или Wi-Fi 4? Что такое 802.11ax, 802.11ac или 802.11n? Что означают эти аббревиатуры? Что такое 802.11ad?
Читайте также: