USB MSD. Часть 3. USB класс накопителей данных (перевод)
- переводы |
- USB |
- MSD |
- Mass Storage Device
Строковые описатели
Строковые описатели содержат поясняющий текст. Поддержка большинства из них не обязательна, но каждый накопитель данных, использующий BBB-протокол, обязан иметь строковый описатель, содержащий серийный номер. Серийный номер должен быть не короче 12 цифр и состоять только из Unicode символов "0".."9" (0x0030..0x0039) и "A".."F" (0x0041..0x0046). Обратите внимание, что строчные буквы, дефисы (тире) и все остальные символы запрещены. 12 последних цифр серийного номера должны отличаться от 12 последних цифр номера любого другого устройства с такими же значениями полей "idVendor" и "idProduct" в описателе устройства. Серийный номер позволяет хосту сохранять реквизиты устройства, такие как буква диска или политика доступа, после подключения устройства к другому USB-порту или в случае подключения нескольких устройств с одинаковыми "idVendor" и "idProduct".
Поле "iSerialNumber" описателя устройства содержит индекс строкового описателя серийного номера.
В таблице 3-5 приведены поля строкового описателя. Ниже приводится более подробное описание каждого поля и особенности его использования в накопителях данных.
0 | bLength | Длина описателя в байтах |
1 | bDescriptorType | Тип описателя ("STRING") |
2 |
bSTRING или wLANGID |
Для описателя с нулевым индексом содержит массив из одного и более идентификаторов языков, для описателей с ненулевыми индексами содержит строку в формате Unicode |
-
bLength
Длина описателя в байтах. Равно двум байтам ("bDescriptorType" и "bLength") плюс удвоенное число идентификаторов языков в массиве "wLANGID" или удвоенное количество символов в строке поля "bString".
-
bDescriptorType
Константа, соответствующая типу описателя. Для текстового описателя ("STRING") равна 0x03.
-
wLANGID[0...n] или bString
Когда в пакете "Setup" хост запрашивает строковый описатель, младший байт поля "wValue" содержит индекс. Если индекс равен нулю, хост запрашивает идентификаторы используемых языков (language ID). Если индекс больше нуля, запрашивается строковый описатель с указанным индексом.
Нулевой описатель содержит набор 16-битных кодов языков, в которых представлены остальные строковые описатели. Код для английского языка, используемого на территории США (U.S. English) - 0x0409, и, похоже, что это единственный поддерживаемый операционной системой Windows код. Значение "wLANGID" должно содержать действительные коды языков для всех наличествующих в устройстве строковых описателей. Устройствам, не возвращающим строковых описателей, запрещено возвращать список поддерживаемых языков. Список идентификаторов языков, определённых к настоящему моменту, можно найти на сайте USB-IF.
Для значений индекса большего нуля поле "bString" содержит строку в кодировке Unicode. Кодировка символов ANSI с 0x00 по 0x7F соответствует, с незначительными исключениями, значениям Unicode с 0x0000 по 0x007F. Например, строка "Gizmo" в формате Unicode будет представлена пятью 16-битными словами:
0x0047 0x0069 0x007A 0x006D 0x006F
и при передаче строкового описателя через USB будет передаваться младшим байтом вперёд:
0x47 0x00 0x69 0x00 0x7A 0x00 0x6D 0x00 0x6F 0x00
В отличие от языка "Си", строки в описателях не оканчиваются нулём.
- блог пользователя teap0t
- 106731 просмотр
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Recent comments
4 года 33 недели назад
4 года 49 недель назад
5 лет 7 недель назад
5 лет 8 недель назад
5 лет 16 недель назад
5 лет 41 неделя назад
5 лет 42 недели назад
5 лет 45 недель назад
6 лет 4 недели назад
6 лет 36 недель назад