Usb mass storage bulk only

Usb mass storage bulk only

Для обозначения Mass Storage "в быту" используются две аббревиатуры — MSC и UMS. MSC (Mass Storage Class) является официальной, а UMS (возможны варианты расшифровки: USB/Universal Mass Storage) — "народной". Друг другу они не противоречат, а скорее дополняют.

MSC сообщает о том, что протокол входит в число утвержденных стандартных "классов устройств" в рамках спецификации USB и тем самым является индустриальным стандартом де-юре. UMS говорит об универсальности протокола, который на сегодня поддерживается большинством операционных систем и бесчисленным множеством конечных устройств, что делает его стандартом и де-факто. Вариант расшифровки UMS как USB Mass Storage дополняет эту информацию, уточняя, что в качестве физической линии используется интерфейс USB. Буквы MS (Mass Storage), общие для всех аббревиатур, показывают, что перед нами протокол, предназначенный для работы с устройствами хранения больших объемов данных. Именно для них и был разработан данный стандарт.

К классу устройств USB mass-storage относятся устройства, передающие файлы в одном или в двух направлениях. Типичные представители этого класса устройств: жесткие диски, CD-, DVD-приводы и флешки. Файловая система позволяет пользователю копировать, перемещать и удалять файлы в устройстве.

Почти все устройства USB mass-storage используют протокол передачи только массивов (bulk) данных (bulk-only transport, BOT, также называемый BBB). (исключение составляют некоторые полноскоростные дисководы для дискет, которые используют несколько типов передач данных: управляющие, передача массивов и передачи по прерываниям (control, bulk, interrupt), такой протокол называется CBI). Устройства USB mass-storage также используют команды SCSI, определяемые различными стандартами SCSI (Small Computer System Interface).

Протокол передачи только массивов данных определяет способ, с помощью которого USB хост может посылать команды и получать ответы используя передачу массивов данных, определенную в спецификации USB. В протоколе передачи только массивов данных каждый обмен информацией требует 2 или 3 USB передач данных. В первой передаче хост посылает команду в структуре, называемой CBW (Command Block Wrapper ). За множеством CBW следует передача, которая содержит данные, посылаемые хостом или устройством. В последней передаче устройство возвращает статус в структуре, называемой CSW (Command Status Wrapper ).

Достоинства протокола. Главное — простота: все операции осуществляются через стандартные файловые оболочки, в т.ч. Windows Explorer (Проводник), никакие дополнительные знания или обучение для работы с ним не требуются.

Читайте также:  Amd jaguar x86 64 цена

Распространенность — уже Windows Me и 2000 имели базовую поддержку протокола, Windows XP поддерживал его полностью. Множество других ОС — MacOS, Linux и т.п. — совместимы с Mass Storage.

Немаловажным является существование спецификации USB host (on the go), позволяющей подключать Mass Storage устройства к другим портативным (и не портативным) аппаратам.

Информационный портал по безопасности » Железо » Сделай Сам » Создаем USB Mass Storage Device(флешка) на PIC18F4550 с аппаратным шифрованием(опционально-маскированием)

Создаем USB Mass Storage Device(флешка) на PIC18F4550 с аппаратным шифрованием(опционально-маскированием)

Автор: admin от 20-01-2012, 14:07, посмотрело: 7263

Вступление

Однажды возникла довольно-таки интересная идея одного девайса.

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

  • Флэшки, которые мы используем работают по какому-то протоколу. Наверняка его описание можно найти, изучить и понять, что помимо данных есть служебные команды.
  • Ясное дело, что внутри флэшки находится контроллер и он обрабатывает команды от хоста и записывает данные в память.
  • Но мы же можем записывать не так, как нам приказал хост.
  • Таким образом мы можем проводить аппаратное шифрование(в более простом случае-маскирование) на уровне БИТОВ.
  • Сам я программист и с такими вещами сталкивался постольку-поскольку. Однако идея показалась мне достойной, и я решил во что бы то ни стало реализовать хотя бы прототип. Собственно, о нем и пойдет речь; приглашаю всех под кат. [Картинки!]

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

    Итак, требования к устройству:

  • Plug`n`Play. Я хочу, чтобы я мог просто вставить его в USB, набрать код на корпусе и всё. Никакого геммороядрайверов/софта.
  • Расширенные индикаторы состояния. Я хочу видеть, как работает устройство. подробнее про ссостояния — ниже.
  • Теория

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

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

    Читайте также:  Tp link мощность передатчика

    «MSD или Mass Storage Class это ничто иное, как один из стандартных классов USB для описания и взаимодействия с утройствами хранения информации. Реализаций и стандартов MSD довольно много и заморачиваться на каждом из них нет смысла. Опишу самый распространенный из них(он же самый простой на мой взгляд): Bulk-only или BBB.

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

    Конечная точка имеет следующие основные параметры:

  • Частота доступа к шине
  • Допустимая величина задержки обслуживания
  • Требуемая ширина полосы пропускания канала
  • Номер конечной точки
  • Способ обработки ошибок
  • Максимальный размер пакета, который конечная точка может принимать или отправлять;
  • Используемый конечной точкой тип посылок
  • Направление передачи данных
  • Любое USB-устройство имеет конечную точку с нулевым номером (Endpoint Zero). Эта точка позволяет хосту опрашивать устройство с целью определения его типа и параметров, выполнять инициализацию и конфигурирование устройства.

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

    Для низкоскоростных устройств допускается наличие одной или двух дополнительных конечных точек, а для высокоскоростных — до 15 входных и 15 выходных дополнительных точек.

    Но это только теория, которая выглядит довольно абстрактно. Будем считать, что конечная точка, это ничто иное как фунция в языке C, которая только принимает параметры, или только возвращает значения.

    Так вот, мы строим устройство, отвечающее спецификации bulk-only. И тут самое приятное: все события делятся на три фазы:

    Прием команды от хоста(копьютера)(CBW)

    Прием/Передача запрашиваемых данных(DATA)

    Передача хосту результата выполнения принятой комманды(STATUS)»

    Читайте также:  Принцип работы сглаживающего фильтра

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

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

    Аппаратная часть

    Были долгие попытки реализовать это на Arduino, просто AVRках(8bit). Чтобы сэкономить кучу времени тем, кто сейчас занимается этим же самым пишу большими буквами: НЕ ПЫТАЙТЕСЬ, ЛИШЬ ПОТЕРЯЕТЕ ВРЕМЯ.

    Имеет смысл использовать лишь те чипы, которые сами аппаратно поддерживают USB. Да и то, зависит от конкретной задачи. Требования к нашему проекту:

  • Микроконтроллер:
  • Аппаратное USB
  • SPI
  • Периферия:
  • Слот под SD/MMС
  • 4 светодиода
  • USB коннектор
  • Это минимум. Мне было дорого мое время и я решил приобрести отладочную плату USB-PIC-STK и программатор к нему Pic Kit 2.

    Дешевле всего это добро стоило в Терраэлектронике. Не сочтите за рекламу, но там НАМНОГО дешевле — платка всего 1300р.

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

    Реализация

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

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

    В описании к этому комбайну я не нашёл упоминания о mass storage, т. е. ограничений со стороны Microsoft в проигрывании "пиратского" видео быть не должно. Тем более, есть указание на MPEG4, стандарт, включающий в себя и AVI.
    Но точно можно будет сказать только после того, как вставите флешку в соответсвующем формате. Т. е. проверьте экспериментально.

    Ссылка на основную публикацию
    Adblock
    detector