USB MSD. Часть 3. USB класс накопителей данных (перевод)

[* Несколько слов о книге и авторе. Здесь представлен перевод третьей части книги Йена Акселсона (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 (при западной-то любви ко всякого рода правам и копирайтам), но то, что это не первая такая книга, попавшая мне в руки, может говорить о некой системе. Возможно это способ дать заработать участникам рабочих групп или что-либо подобное. Но от этого не легче.

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


USB MSD Часть 3
USB класс накопителей данных (перевод)


Перевод teap0t<caxapa.ru> v1.100 10-Aug-2014


Данная глава описывает класс накопителей данных и представляет код для устройства, который демонстрирует обмен между управляющей системой и устройством. [* - не, не демонстрирует, так как книжный "код" является прямым переводом структур USB и SCSI из таблиц на естественном языке в исходники на языке Си. Если вы не можете сделать такой перевод сами, то поищите книгу в сети. ]


Общие требования

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


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

Класс "накопитель данных" обращается к нескольким документам. "Обзор спецификаций" (Specification Overview) и "Передача неструктурированных данных" (Bulk-Only Transport) касаются почти всех устройств. Документ "Требования к загрузочным накопителям" (Bootability) относится только к устройствам, с которых может запускаться операционная система. Два дополнительных документа - "Control/Bulk/Interrupt (CBI) обмен" и "Спецификация команд UFI" касаются только некоторых приводов гибких дисков.

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


Блоковая логическая адресация

Адреса чтения и записи данных накопителя задаются в формате блоковой логической адресации (Logical Block Address - LBA), описанной в части 1. Все USB накопители должны поддерживать доступ к данным в этом формате.


Запросы накопителей данных

В протоколе передачи неструктурированных данных (bulk-only) определены два управляющих запроса. "Bulk Only Mass Storage Reset" (Сброс накопителя данных) предписывает устройству быть готовым к приёму нового командного блока. "Get Max LUN" запрашивает наибольший номер поддерживаемого устройством логического накопителя. В операционной системе Windows каждому логическому накопителю или разделу соответствует своя буква диска. Устройство с единственным логическим накопителем должно возвращать ноль или переходить в состояние останова (stall). Устройство с двумя логическими накопителями "LUN 0" и "LUN 1" возвращает "1". Максимальное значение - "15". Весь остальной обмен идёт через передачу неструктурированных данных (bulk).

В CBI-протоколе (control/bulk/interrupt) определён один управляющий запрос - "принять зависящую от устройства команду" (Accept Device-Specific Command - ADSC). На этапе пересылки данных передаётся собственно команда. Устройство может использовать обмен по прерыванию для сообщения о завершении предписаных действий.

Центральная система может использовать управляющие передачи для выведения оконечных точек из состояния блокировки (halt), для чего следует послать устройству стандартный управляющий USB запрос "Clear Feature (ENDPOINT_HALT)".

ПредпросмотрAttachmentSize
usb_msd_3.zip68.8 КБ