Usb flash. часть 3 – заключительная. протокол scsi

7. Подключение USB-flash

7.1. Подключение USB-flash к компьютеру

Введение

В Linux я пользователь новый и с этим вопросом никогда не сталкивался, и более того — ядро по жизни собирал без поддержки USB устройств, т.к. ничего такого у меня просто нет :), но вот, как говорится — пришлось и срочно. И как оказалось — это довольно несложно.

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

Итак, начнем

Конфигурация ядра

USB флешки видны в Linux как scsi устройства,ибо поддержка usb устройств в ядре Linux реализуется именно посредством эмуляции скази, т.е. типа /dev/sda1(2,3) и т.д, смотря сколько партиций.

Следовательно, чтобы была возможность подключения флешки, сначала необходимо добавить поддержку scsi в ядро

Linux Kernel Configuration: Включаем поддержку SCSI

Device Drivers —>

 SCSI device support

  legacy /proc/scsi/ support

  — SCSI support type (disk, tape, CD-ROM)

  SCSI disk support

  SCSI generic support

  — Some SCSI devices (e.g. CD jukebox) support multiple LUNs

  Probe all LUNs on each SCSI device

Далее добавляем непосредственно поддержку USB (я не говорю о клавиатурах или других устройствах USB, а говорю только о флешке)

Linux Kernel Configuration: Поддержка USB

Device Drivers —>

 USB support

  Support for Host-side USB

  USB device filesystem

  EHCI HCD (USB 2.0) support

  < > OHCI HCD support

  UHCI HCD (most Intel and VIA) support

  USB Mass Storage support

Примечание: В разделе USB Mass Storage support есть куча других устройств — я там не отмечал ничего, у меня заработало и так. Подозреваю, что для специфических устройств (всмысле каких то навороченных флешок) нужно будет что нибудь еще там отметить.

Кроме того, для этих всяких сложных флешок скорее всего придется добавить MTD в ядро

Linux Kernel Configuration: MTD

Device Drivers —>

 Memory Technology Devices (MTD) —>

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

Монтирование

После загрузки с новым ядром, нажимаем Alt+F12 и вставляем флешку — если с ядром все ок- то сразу появятся сообщения, что мол есть устройство USB , потом пишется, что есть /dev/uba ну и т.п.

Если этого не происходит, делаем

dmesg | grep usb

Если и здесь ничего нет, то советую перегрузиться и посмотреть включены ли USB контроллеры в BIOS 🙂 как это не смешно звучит, но я сам себе это отрубил, когда ядро собирал, а потом включить забыл, и минут 15 гадал — чего же оно не работает 🙂

Если dmesg | grep usb выдает результат, а когда вставляем флешку — никакой реакции, то нужно проверить еще раз — все ли отмечено в ядре.

Вобщем — надеемся , что все заработало и теперь нужно смонтировать флешку.

Добавляем в /etc/fstab строку

Файл: /etc/fstab

/dev/uba1 /mnt/usbdir auto user,noauto,rw 0 0

и можно монтировать! но есть одно но, в опциях я не указал кодировки, т.к. кодировка по умолчанию указанна в разделе Native Languages конфигурации ядра.

Не будет лишним напомнить отмонтировать флешку перед тем как вытаскивать ее!

Если такой вариант вас не устраивает, то вы можете установить пакет submount и монтировать флэшку вот так:

Файл: /etc/fstab

 /dev/uba1 /mnt/usb  subfs  fs=vfat,auto,umask=0,quiet,sync 0 0

Параметр sync необходим чтобы отключить отложенную запись и избежать потерю данных при копировании файлов на флэшку.

Вроде бы все. Удачи всем!

И естественно- за любые комментарии, дополнения, уточнения и исправления ошибок – буду только благодарен 🙂

надеюсь, кому-то помог tradakad

исправил касательно монтирования при помощи submount (dernik)

7.2. Монтирование под kde

Установите пакеты: hal, dbus, and hotplug

Добавьте флаг hal в /etc/make.conf

emerge -avt kdebase-kioslaves

Убедитесь, что hal используется всеми пакетами:

emerge -DNu world

rc-update add dbus default

/etc/init.d/dbus start

rc-update add hald default

/etc/init.d/hald start

так же можно монтировать устройства без изменения /etc/fstab с помощью

emerge -av pmount

Добавьте себя в групп plugdev

gpasswd -a USER plugdev

Включите “Storage media” (“Устройства хранения данных” в русском варианте) в systray (на панель). Наслаждайтесь 🙂

7.3. Автоматическое монтирование

Если лень замарачиваться каждый раз при втыкании флэшки или сидюка, а хочется, чтоб как в одной другой ОС, добавьте параметр managed в /etc/fstab к требуемому устройству, например

Файл: /etc/fstab

 /dev/cdrw    /mnt/cdrom    iso9660    user,noauto,ro,managed          0 0

 /dev/sda     /mnt/flash    vfat       exec,user,noauto,sync,managed    0 0

Типа, все, теперь при появлении флэшки в системе будет появляться иконка на рабочем столе.

ps. распишите эту статью подробнее. Добавьте gpasswd в статью:

 http://gentoo-wiki.com/HOWTO_D-BUS,_HAL,_KDE_media:/

Источник: http://gentoo.theserverside.ru/book/ar43s07.html

Высокоскоростные интерфейсы: SCSI

SCSI (Small Computer Systems Interface — Системный интерфейс для малых компьютеров, по-русски произносится как «скази») — интерфейс, разработанный для объединения в единую систему устройств различного профиля: накопителей на жестких магнитных носителях, сканеров, стримеров, CD-ROM и т.п. Суть интерфейса состоит в том, чтобы обеспечить гибкий механизм управления этими устройствами и максимальную скорость их работы как единого, но делимого механизма.

Корни интерфейса SCSI уходят в далекий 1979 год, когда производитель накопителей информации М. Шугарт озадачился найти универсальный стандарт интерфейса для своих дисков, учитывая возможные потребности в будущем. В лабораториях М.

Шугарта в итоге был разработан интерфейс, поддерживавший логическую и физическую (головка/цилиндр/сектор) адресацию, базирующийся на протоколах 8-битной параллельной передачи данных по интерфейсу, состоящему из нескольких линий. Этот интерфейс был назван SASI (Shugart Associates Systems Interface — Связующий системный интерфейс Шугарта).

Интерфейс, кроме описания протоколов, включал также несколько 6-битных команд; минусом было то, что интерфейс разрабатывался для использования только одной пары хост — устройство.

Позже, в 1981 году, М. Шугарт передал документацию по интерфейсу SASI в комитет ANSI (American National Standarts Institute — Национальный Институт Стандартизации США, аналог ГОСТ), который принял ее за базовую для работы над проектом, который получил название SCSI.

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

В 1984 году рабочая документация стандарта SCSI была представлена на рассмотрение ANSI, и, после многочисленных корректировок и дополнений, в 1986 году был принят документ под номером X3.131-1986 — первый официальный стандарт SCSI, который сейчас принято называть SCSI-1.

В дополнение к стандарту SASI, SCSI-1 «оброс» такими важными функциональными возможностями, как 10-битные команды, протокола синхронной и асинхронной передачи данных, возможность подключения к одному хост-адаптеру до 8 различных устройств.

Последовавшие за SCSI-1, стандарты развивались как в направлении расширения командного языка и в увеличении и усложнении протоколов, так и в увеличении ширины шины, увеличении скорости и количества подключаемых к одному хост-адаптеру устройств. Для текущих стандартов SCSI ширина шины составляет 16 бит, количество подключаемых устройств также равно 16.

Индустрия ПК не пропустила возникновения нового стандарта, который тут же был взят на вооружение главным образом производителями НЖМД. На рис. 1, 2 изображены одни из первых образцов SCSI-дисков.

Рис. 1, 2. Первые образцы накопителей SCSI — фирмы SONY (емкость 40 мегабайт)

и Quantum (емкость 120 мегабайт)

Краткая история стандарта SCSI

Самый первый стандарт — SCSI-1; в этом стандарте можно было к одной шине подключить до восьми устройств, включая контроллер. Интерфейс содержит развитые средства управления и в то же время не ориентирован на какой-либо конкретный тип устройств.

Имеет 8-pазpядную шину данных, максимальная скорость передачи — до 1,5 МБ/с в асинхронном режиме (по методу «запрос-подтверждение»), и до 5 МБ/с в синхронном режиме (метод «несколько запросов — несколько подтверждений»). Может использоваться контроль четности для обнаружения ошибок.

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

SCSI-2 — существенное развитие базового SCSI. Увеличена скорость передачи (до 3 МБ/с в асинхронном и до 10 МБ/с в синхронном режиме) — Fast SCSI. Добавлены новые команды и сообщения, поддержка контроля четности сделана обязательной. Введена возможность расширения шины данных до 16 разрядов (Wide SCSI), что обеспечило скорость до 20 МБ/с.

Введен новый 68-контактный соединительный разъем. Последующая спецификация, SCSI-3, уже не только ввела новые скорости передачи, но и значительно расширила систему команд.

Кроме того, в качестве среды передачи допускается использование, наряду с традиционным параллельным шинным интерфейсом, и других параллельных и последовательных протоколов: Fibre Channel, IEEE 1394 Firewire и Serial Storage Protocol (SSP).

Интерфейс Ultra SCSI, использует частоту шины 20 МГц. Интерфейс Ultra/Wide SCSI поддерживает 16 устройств и обеспечивает скорость передачи данных до 40 МБ/с. Более скоростной Ultra-2 Wide SCSI, обеспечивающим скорость передачи до 80 МБ/с.

Следующие интерфейсы — Ultra-3 SCSI, Ultra 320 SCSI, Ultra 640 SCSI — не привнесли ничего принципиально нового в стандарт, кроме скорости. Они остаются также с шириной шины 16 бит, и также к интерфейсу можно подключить до 16 устройств.

Сравнительная характеристика стандартов SCSI приведена в таблице 1.

Таблица 1. Сравнительная характеристика стандартов SCSI

Стандарт Максимальная скорость шины, Мбайт/сек. Разрядность шины Максимальная длина кабеля, м Максимальное число устройств
Единственное уст-во LVD HVD
SCSI-1 5 8 6 (3) 25 8
SCSI-2 10 8 3 (3) 25 8
Wide SCSI-2 20 16 3 (3) 25 16
SCSI-3 20 8 1.5 (3) 25 8
Wide SCSI-3 40 16 (3) 25 16
Ultra2 SCSI 40 8 (4) 12 25 8
Wide Ultra-2 SCSI 80 16 (4) 12 25 16
Ultra-3 SCSI, или Ultra-160 SCSI 160 16 (4) 12 (5) 16
Ultra 320 SCSI 320 16 (4) 12 (5) 16
Ultra 640 SCSI 640 16 (4) (7) (5) 16

Что такое хост-адаптер?

Хост-адаптер — это устройство, подключаемое к шине ПК, обеспечивающее хосту (значение слова «хост» применительно к стандартам, описывающим интерфейсы передачи данных (англ.

host), наиболее полно описывает словосочетание «хозяин шины») связь с устройствами SCSI.

Наименование «адаптер» выбрано не случайно — этим указывается, что вся логика работы устройств расположена в периферийных устройствах на шине; для устройств называемых «контроллер» логика расположена в них самих.

Следующие производители выпускают или выпускали в прошлом хост-адаптеры для SCSI-устройств:

Adaptec: http://www.adaptec.com/
Arrow Enterprise Storage Solutions: http://www.arrownacp.com/
Atto Technology: http://www.attotech.com/
Document Imaging Solution Products: http://www.disusa.com/
Info X Fibre Channel Solutions: http://www.info-x.com/
Ingram Micro: http://www.ingrammicro.

com/
Inito Corporation: http://www.initio.com/
LSI Logic: http://storageio.lsilogic.com/
MSI: http://www.msiinet.com/
Pacific Data: http://www.pacificdata.com/
SBE Inc.: http://www.sbei.net/
SCSI Stuff: http://www.scsistuff.com/
Techexport: http://www.techexport.com/
Tekram: http://www.tekram.

com

Примером хост-адаптера может служить устройство, изображенное на рис. 3.

Рис. 3. SCSI хост-адаптер фирмы Adaptec

Современные производители НЖМД SCSI

В настоящее время рынок НЖМД переживает бурную эволюцию — новые, высокоскоростные стандарты Serial ATA приходят на смену Parallel АТА.

И, хотя новые устройства SATA уже вплотную приблизились по скорости работы к устройствам SCSI, а где-то и обгоняют их, SCSI-устройства остаются всё так же популярны в High-End компьютерах — серверах и информационных массивах.

Связано это, прежде всего, с высокой надежностью SCSI-накопителей — как в силу относительной простоты стандартов SCSI и продуманным электрическим интерфейсом, так и в связи с традиционно более тщательной конструкторской и производственной проработкой устройств.

На долю SCSI приходится приблизительно 30 процентов всего рынка НЖМД, и вряд ли он когда-нибудь перешагнет этот рубеж: оборудование ПК всеми необходимыми кабелями, переходниками, а также покупка самого хост-адаптора обойдется приблизительно в $100, накопители же будут стоить в несколько раз больше их IDE-собратьев. Современными производителями дисков SCSI являются:

Western Digital: http://www.wdc.com
Seagate: http://www.seagate.com
Hitachi: http://www.hgst.com
Fujitsu: http://www.fujitsu.com
Maxtor: http://www.maxtor.com

Конкуренция на рынке SCSI-дисков невелика — скорее всего, оттого, что рынок имеет достаточную наполненность и не развивается так бурно, как рынок IDE-устройств — и связано это, прежде всего, с тем, что SCSI-устройства используются чаще всего в серверах, спрос на которые не так велик.

Удобство SCSI-устройств состоит в том, что они могут быть легко заменяемы по ходу работы, без отключения и потери работоспособности сервера. Это очень важно для серверов, и совершенно не обязательно для рабочих станций. Как правило, сервера (рис. 4) оборудованы специальными салазками (рис.

5), в которые диск в специальном креплении (рис. 6) вставляется очень легко.

Рис. 4. Серевер, оборудованный дисками SCSI
Рис. 5. Отсек для дисков SCSI
Рис. 6. Крепление для дисков SCSI, применяемое в серверах с поддержкой функции «горячая замена»

Стоить заметить, что очень часто производители серверов перемаркировывают накопители, давая им свои бренды. Как пример приведу накопители, изъятые из серверов Hewlett Packard и IBM e-Server (рис. 7, 8), на которых реального производителя НЖМД можно узнать только по названию модели; автор видел также диски, извлеченные из серверов Dell, на которых даже эта информация отсутствовала.

Рис. 7, 8. Современные SCSI-диски, используемые в серверах

Типы разъемов SCSI

Рис. 9. Используемые в настоящее время типы разъемов SCSI

Устройства SCSI могут иметь различные типы разъемов для их подключения к хост-адаптеру (см. рис. 9) — прежде всего это связано с конструктивными особенностями самого устройства.

Наиболее часто для HDD применяется разъем HD68 (рис. 10), немного менее часто — SCA80 (рис. 11). В далеком прошлом, в конце 80-х — начале 90-х годов, практически все накопители SCSI соединялись с хостом посредством разъема НЕ50 (рис. 12).

В настоящее время этот разъем практически не встречается.

Рис. 10. Разъем HD68. Рис. 11. Разъем SCA80.

Рис. 12. Разъем НE50.

Для подключения различных по конфигурации разъема устройств к шине часто могут потребоваться специализированные переходники. Такие переходники, например, выпускает компания SCS (http://www.scaadapters.com), их стоимость колеблется от $10 до $35 за штуку. Полный набор для работы с любым SCSI-устройством изображен на рис. 13, на рис. 14 — 18 каждый переходник изображен отдельно

Рис. 13. Необходимые для подключения SCSI-устройств переходники

Рис. 14 — 18. То же, что рис. 13, по отдельности.

Как работает SCSI

Для согласования нагрузок на шине SCSI используют терминаторы, которые по электрическим свойствам делятся на пассивные, активные и FPT-терминаторы. Терминаторы должны запитываться, поэтому в интерфейсе имеются линии питания терминаторов (Terminator Power).

Пассивные терминаторы использовались в устройствах SCSI-1, представляют собой обычные резисторы сопротивлением 132 Ом. Активные терминаторы представляют собой стабилизатор, вырабатывающий нужный сигнал — при этом каждая линия соединяется с этим стабилизатором через резистор сопротивлением 110 Ом.

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

Наконец, терминаторы FPT (Forced Perfect Terminator — Ускоренный улучшенный терминатор) суть улучшение активных терминаторов, оборудование их ограничителями выбросов. Их применение — в высокочастотных версиях SCSI.

Все устройства SCSI принято делить на инициаторы и исполнители.

При этом следует учитывать, что шина может быть стандартной (8 бит) или расширенной (16 бит) разрядности. Учитывая все это, все количество возможных комбинаций подключения устройств можно свести к четырем:

1. Стандартный инициатор — стандартный исполнитель 2. Расширенный инициатор — расширенный исполнитель 3. Стандартный инициатор — расширенный исполнитель 4. Расширенный инициатор — стандартный исполнитель

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

Состояния шины SCSI принято делить на фазы.

Таких фаз существует всего пять: шина свободна, арбитраж (при этом инициатор может получить управление шиной), выбор (при этом инициатор, вошедший в фазу арбитража первым, выбирает исполнителя для дальнейшей работы), перевыбор (исполнитель подтверждает инициатору, что он им выбран для работы и готов к работе) и информационная фаза (запрос-передача команд, данных, сообщений). Блок-схема последовательности фаз одного цикла работы по шине SCSI представлена на рис. 19.

После фазы выбора инициатор может произвести таймаут, для чего может использовать два способа — выполнить аппаратный сброс либо перейти в фазу «шина свободна».

В любом случае, окончанием цикла работы по шине SCSI будет выставление статуса «команда выполнена» либо передача соответствующего сообщения с освобождением шины.

Аналогично стандарту АТА, в системах SCSI может применяться сброс устройства по двум протоколам — по протоколу аппаратного сброса (hard reset) и по протоколу программного сброса (soft reset).

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

Рис. 19. Блок-схема фазовой последовательности работы шины SCSIНа шине SCSI используется девять сигналов управления: BSY (Busy, Занят), SEL (Selection, Выбор), C/D (Command/Data, Управление/Данные), I/O (Input/Output, Ввод/Вывод), MSG (Message, Сообщение), REQ (Request, Запрос), ACK (Acknowledge, Подтверждение), RST (Reset, Сброс), ATN (Attention, Внимание). Источниками сигналов Занят, Выбор и Сброс могут быть и инициатор, и исполнитель; только исполнитель может быть источником сигнала Подтверждение; остальные сигналы являются прерогативой инициатора. Типы передачи информации кодируются комбинациями бит, выставляемыми для сигналов Сообщение, Управление/Данные, Ввод/Вывод, как показано в табл. 2.

Таблица 2. Типы передачи информации по шине SCSI

Сигнал Фаза Направление
Сообщение Команда/Данные Ввод/Вывод
Исходящие данные Исполнитель —> Инициатор
1 Входящие данные Исполнитель  Инициатор
1 1 Состояние Исполнитель  Инициатор
1 1 1 Message In Исполнитель 

Источник: http://www.ihdd.ru/scsi-interface-description

15 – Протокол работы USB-шины

·                    Лекция 15. Протокол работы USB-шины.

Общие сведения об USB-шине

У любого компьютера, выпущенного в последнее время, вы обязательно обнаружите либо на лицевой панели, либо на задней стенке разъем USB. Шина USB (Universal Serial Bus) первоначально была разработана для обеспечения легкого подключения компьютера к телефонным линиям и расширения числа портов. Первая версия стандарта (версия 1.0) была выпущена в январе 1996 года.

Сейчас в основном используется версия 1.1. Стандарт USB 1.1 вполне удовлетворяет всем требованиям при работе с низко-скоростными устройствами, вроде мышей и клавиатур, и даже с устройствами, работающими на средних скоростях, вроде Ethernet-адаптеров (10 Mbit/sec) или устройств бытовой электроники (таких, как цифровые камеры и MP3-плейеры), которые пересылают только несколько мегабайт данных.

Но если на периферийное устройство или в обратном направлении необходимо пересылать большие объемы информации (примеры – жесткие диски, видеокамеры высокого разрешения, или одновременное использование нескольких сетевых адаптеров стандарта 100BaseT), то скорости, обеспечиваемые USB 1.1, уже недостаточны. Поэтому в 1999 году была разработана версия 2.

0 стандарта USB, обеспечивающая более высокие скорости обмена данными.

Современные компьютеры обычно имеют контроллер USB-шины, установленный на материнской плате. Для USB версии 1.1 было разработано два типа таких контроллеров, отличающихся интерфейсом взаимодействия с USB-устройствами: OHCI (Open Host Controller Interface) фирмы Compaq и UHCI (Universal Host Controller Interface) фирмы Intel.

Оба типа имеют примерно одинаковые возможности и USB-устройства работают с обоими типами контроллеров. Аппаратная часть UHCI-контроллеров проще, а значит, они дешевле, но зато требуют более сложных драйверов, что увеличивает нагрузку на процессор. Версия 2.

0 стандарта USB использует улучшенный вариант интерфейса – EHCI (Enhanced Host Controller Interface).

Стандарт USB предусматривает строгую иерархию устройств, управляемых основным хостом, и использование протокола master/slave для управления подключаемыми устройствами. На один USB-разъем могут быть последовательно подключены до 127 устройств.

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

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

Правда, такое решение приводит к некоторому снижению производительности. В результате USB-устройства версии 1.1 могут работать в двух режимах: так называемом low speed, обеспечивающем скорость передачи данных до 1.5 Mбит/сек, и full speed, в котором скорость передачи данных может составлять 12 Мбит/сек.

Это только теоретический предел, а реально производительность шины даже в идеальных условиях не превышает 8,5 Мбит/сек., а в среднем составляет около 2 Мбит/сек.

Интерфейс EHCI, используемый в устройствах версии 2, обеспечивает режим работы high speed, для которого скорость передачи данных может достигать 480 Мбит/сек.

Для того чтобы USB-устройства могли обмениваться данными с такой скоростью, и хост-контроллер и само устройство должны соответствовать стандарту USB 2.0 и обеспечивать работу с интерфейсом EHCI. Однако хост-контроллеры 2.0 успешно работают с устройствами версии 1.1.

И наоборот, вполне можно подключать устройства USB 2.0 к хосту (и к хабам) версии USB 1.1 и они будут прекрасно работать, но со скоростью не более 12, а не 480 Мбит/сек.

В настоящее время разработан широкий спектр устройств, подключаемых по шине USB. Это клавиатуры, мыши, джойстики, игровые приставки, сканеры, модемы, принтеры, цифровые камеры, устройства хранения информации – дисководы гибких и жестких дисков, дисководы Zip, LS120 и CD-ROM. Очень перспективный и интересный класс таких устройств образуют накопители на основе Flash-памяти [1].

Физическая среда

Шина USB, обладает полосой пропускания 1,5 или 12 Мбит/с.

USB-кабель состоит из 4 проводников:

– два провода формируют витую пару, применяемую в дифференциальных передачах данных;

– остальные два представляют собой линии питания и заземления устройств, не имеющих собственного питания 5 В постоянного напряжения.

USB стандарт предполагает два вида кабеля и два варианта разъемов. High-speed (высокоскоростные) кабели, для связи 12Mb в секунду, лучше экранированы, чем их менее дорогие 1.5 Mb заменители.

Каждый кабель имеет “А” разъем на одной стороне и “B” на другой. Рисунок 1 показывает как “А” разъемы подсоединяются к исходящему, а “В” к нисходящему.

Таким образом два типа физически различны и невозможно подключить их неправильно.

Рис 1. USB топологоия “подключение звездой”

USB шина позволяет подключать до 127 устройств. Использование такого количества устройств возможно при многоуровневом каскадировании. Наглядно это объясняет следующий рисунок:

Это первая архитектурная особенность шины USB: ее логическая топология – многоуровневая звезда.

Самым верхним уровнем является корневой концентратор, который обычно совмещается с USB контроллером.

Если функции контроллера понятны, то концентратор – устройство для периферийных интерфейсов не привычное.

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

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

С этой точки зрения устройства подключаемые к USB можно подразделить на функциональные устройства, т.е.

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

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

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

Физическая топология шины – звезда

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

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

Хост, как уже было сказано ранее, программно-аппаратный комплекс.

В обязанности хоста входит:

·         Слежение за подключением и отключением устройств

·         Организация управляющих потоков между USB-устройством и хостом.

·         Организация потоков данных между USB-устройством и хостом

·         Контроль состояния устроств и ведение статистики активности

·         Снабжение подключенных устройств электропитанием

Аппаратной частью является хост-контроллер – посредник между хостом и устройствами на шине.

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

Первой популярной операционной системой, в которой поддержка USB реализована была в полном объеме стала Windows 98 Second Edition.

Некоторые устройства могут быть работоспособными и под более ранними версиями (98 без SE, и изредка 95), но далеко не все и не всегда.

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

Хаб должен следить за подключением и отключением устройств, уведомляя хост об изменениях, управлять питанием портов. В концентраторе стандарта USB 2.0 можно выделить 3 функциональных блока: контроллер, повторитель, транслятор транзакций. Контроллер отвечает за соединения с хостом.

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

Подключенное к высокоскоростному (USB 2.0) порту старое медленное (USB 1.1) устройство съедало бы значительную часть времени, а следовательно и полезной пропускной способности шины, ведя обмен с хостом на низкой скорости (почему так происходит мы выясним позже при рассмотрении механизма обмена данными хост-устройство).

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

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

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

Описание протоколов используемых при передаче данных

Структура USB пакета

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

Каждая USB транзакция состоит из следующих частей:

·   Признак пакета (Заголовок определяющий что далее будет следовать)

·   Пакет данных (Опционально)

·   Пакет статуса транзакции (Используется для подтверждения нормального завершения транзакции и обеспечения коррекции ошибок при передаче)

Мастером на USB шине является хост. Он и является инициатором всех транзакций. Первым передаваемым пакетом является Признак (Token Packet).

Он генерируется хостом для определения что будет следовать далее, какая это будет транзакция: чтение или запись, к какому устройству и конечной точке будет обращение. Следующим пакетом, как обычно, следует пакет данных (Data Packet).

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

Поля USB пакета

Данные по USB шине всегда передаются младшими битами вперед. USB пакет состоит из следующих полей:

·   Поле синхронизации (Sync Field)

Все пакеты должны начинаться с поля синхронизации.

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

·   Поле идентификатора пакета (PID Field)

Идентификатор пакета следует непосредственно после поля синхронизации в каждом передаваемом USB пакете. PID состоит из четырехбитного типа пакета, следующего за четырехбитным проверочным полем как показано на рисунке 4.

(LSB) (MSB)
PID0 PID1 PID2 PID3 PID0 PID1 PID2 PID3

Рисунок 2. Формат поля PID.

Контрольная область PID генерируется как инверсия четырехбитного типа пакета и необходима для устранения ложного декодирования следующих за этим полем данных.

Ошибка PID детектируется в том случае, когда инвертированная контрольная область не совпадает с соответствующими битами идентификатора пакета.

Любой PID полученный с ошибкой или неуказанный в нижеследующей таблице, должен быть проигнорирован получателем пакета.

PID Тип Имя PID PID[3…0] Описание
Признак (Token) Out 0001 Адрес + номер конечной точки для транзакции ХОСТ –>Функция
In 1001 Адрес + номер конечной точки для транзакции ХОCT

Источник: https://studizba.com/lectures/10-informatika-i-programmirovanie/310-konspekt-vmsis/4128-15-protokol-raboty-usb-shiny.html

USB MSD. Часть 6. Команды SCSI (перевод)

[* Несколько слов о книге и авторе. Здесь представлен перевод третьей части книги Йена Акселсона (Jan Axelson) “USB Mаss Storаge – Designing аnd prоgrаmming dеviсеs and еmbeddеd hosts”. Я КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЮ ЭТУ КНИГУ И ЭТОГО АВТОРА.

Есть, знаете ли, некоторая категория технических писателей, которые паразитируют на человеческой неосведомлённости. Таким, с позволения, “писателем” является, скажем, В.Д.Разевиг, специализирующийся на переводах справочных систем к различным программным пакетам.

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

Подобным же непотребством занимается и Акселсон, но он не ворует чужие хелпы, а списывает документы, относящиеся к стандарту USB, и обзывает их чем-то вроде “Полное руководство по шине USB (“USB cоmplеte”).

Я выяснил этот печальный факт уже после того как выполнил основную работу по переводу и начал уточнять непонятные моменты в тексте стандарта. Тогда-то и выяснилась вся горечь катаклизма: плагиат чистой воды, буквально ничего своего. Он даже не утруждался стилевыми правками.

То-то я удивлялся скучности и невыразительности его изложения. Переводить ещё и стандарт я уже не стал. Извините. Непонятно, конечно, куда смотрела USB-IF (при западной-то любви ко всякого рода правам и копирайтам), но то, что это не первая такая книга, попавшая мне в руки, может говорить о некой системе. Возможно это способ дать заработать участникам рабочих групп или что-либо подобное. Но от этого не легче.

Вывод: не тратьте время на этого прохиндея, читайте сам стандарт.]

Перевод teap0t v1.000 10-Aug-2014

Набор команд SCSI разрабатывался, как протокол для устройств, использующих параллельный интерфейс для малых компьютерных систем (Small Computer Systems Interface – SCSI).

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

Набор команд SCSI используют многие накопители данных, подключаемые через другие аппаратные интерфейсы, в том числе через USB.

Общие сведения о командах

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

Спецификации

Как объяснялось в части 3, каждая команда передаётся упакованной в структуру, называемую описатель командного блока (command descriptor block – CDB), или, для краткости, просто “командный блок”. Первый байт CDB – код, определяющий команду. Существует несколько источников, публикующих спецификации команд для накопителей данных.

INCITS Technical Committee T10 (www.t10.org) предлагает следующие документы:

  • SCSI Architectural Model (SAM)

    Архитектурная модель SCSI. Предоставляет справочные данные о модели? используемой всеми устройствами SCSI. Текущая версия – SAM-3.

  • SCSI Primary Commands (SPC)

    Базовые команды SCSI. Описывает команды, используемые всеми устройствами SCSI. Текущая версия – SPC-3.

  • SCSI Block Commands (SBC)

    Блоковые команды SCSI. Описывает команды, используемые жёсткими дисками, флэш-дисками и другими блоковыми устройствами прямого доступа. Текущая версия – SBC-3.

  • Multi-Media Commands (MMC)

    Мультимедийные команды. Определяет команды, используемые приводами CD и DVD. Текущая версия – MMC-4.

INCITS Technical Committee T13 (www.t13.org) предлагает спецификацию ATA/ATAPI, определяющую команды для приводов CD и DVD. Текущая версия – ATA/ATAPI-7.

SFF Committee (www.sffcommittee.com) предлагает следующие документы:

  • ATA Packet Interface for CD-ROMs (SFF-8020i)

    Пакетный интерфейс ATA для CD-ROM. Ранняя версия спецификации ATA/ATAPI.

  • ATAPI Removable Rewritable Media Devices (SFF-8070i)

    ATAPI устройства со съёмными перезаписываемыми носителеми. Набор команд, используемый некоторыми приводами гибких дисков.

Рабочие черновики INCITS доступны на сайтах “www.t10.org” и “www.t13.org”, а проверенные и одобренные документы в виде стандартов ANSI продаются организацией Global Engineering Documents (www.global.ihs.com).

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

Источник: http://embedders.org/node/188

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}