Из таблицы 2.2 видно, что два младших бита идентификатора определяют группу, к которой он принадлежит:
- 00 — специальный пакет;
- 01 — маркер-пакет;
- 10 — пакет подтверждение;
- 11 — пакет данных.
Структура данных пакета зависит от группы, к которой он относится.
На рис. 2.9 изображена структурная схема предлагаемого устройства защиты информации (ЗИ).
Рис. 2.9. Структурная схема устройства
Программная часть подробно описана в подразделе 2.4, аппаратная – в подразделе 2.3.
В качестве аппаратного устройства управления потоком данных предлагается использование контроллера фирмы Atmel.
ATMEL содержит полноскоростной USB-модуль, совместимый с техническими требованиями USB версий 1.1 и 2.0. Данный модуль интегрирует USB-трансиверы со стабилизатором напряжения 3,3 В и процессор последовательного интерфейса (SIE) с цифровой схемой ФАПЧ для синтеза частоты 48 МГц. Модуль USB также содержит логику определения USB-события (сброс и приостановка/возобновление), а также буферы FIFO, поддерживающие принудительное управление конечной точкой (EP0) и до 6 универсальными конечными точками (EP1/EP2/EP3/EP4/EP5/EP6) при минимальном программном описании [36].
ATMEL поддерживает функции младших версий и отличается расширением объема флэш-памяти до 32 кБ, внутреннего ОЗУ до 256 байт, 4-уровневой системой прерываний, двумя 16-разрядными таймерами-счетчиками (T0/T1), полнодуплексным УАПП и встроенным генератором.
Кроме того, ATMEL содержит встроенное расширенное ОЗУ размером 1024 байт, двойной указатель данных, 16-разрядный реверсивный таймер (T2), программируемый счетный массив (PCA), до 4 программируемых источников тока для управления светодиодами, программируемый аппаратный сторожевой таймер и схема сброса при подаче питания.
ATMEL имеет два программно выбираемых режима для снижения потребляемой мощности. В режиме холостого хода (idle) работа ЦПУ приостанавливается, но таймеры, последовательные порты и система прерываний остаются в работе. В режиме выключения (power-down) сохраняется содержимое ОЗУ, останавливается синхронизация периферийных устройств, но микроконтроллер сохраняет возможность пробуждения через событие USB или по внешнему прерыванию [36].
Отличительными особенностями данного контроллера являются его следующие характеристики:
1. Ядро (6 тактов на инструкцию):
максимальная частота ядра 40 МГц в режиме X1;
двойной указатель данных;
полнодуплексный улучшенный УАПП( УУАПП);
три 16-разрядных таймера-счетчика: T0, T1 и T2;
256 байт сверхоперативной памяти.
2. 32-кБ встроенной флэш-памяти с внутрисхемным программированием через USB или УАПП
3. 4 кБ ЭППЗУ для загрузочного сектора (3 кБ) и данных (1 кБ)
4. Встроенное расширенное ОЗУ (XRAM): 1024 байт
5. Модуль USB с прерыванием на завершение передачи:
Конечная точка 0 для управления передачей : 32 байтный буфер FIFO;
6 программируемых конечных точек с направлениями ввода и вывода и с режимами передачи: массовый, прерывающийся и изохронный.
6. Конечные точки 1, 2, 3: 32-байтный буфер FIFO
7. Конечные точки 4, 5: размер буфера FIFO 2 x 64-байта с двойной буферизацией (режим Ping-pong)
8. Конечная точка 6: 2 x 512-байтный буфер FIFO с двойной буферизацией ( режим Ping-pong):
Прерывания по приостановке/возобновлению;
Сброс при подаче питания и сброс USB шины;
Генерация 48 МГц схемой ФАПЧ для полноскоростного функционирования шины;
Разъединение USB шины по запросу микроконтроллера.
9. 5 канальный программируемый счетный массив (PCA) с 16-разрядным счетчиком, быстродействующим выходом, сравнением/захватом фронтов, функциями ШИМ и сторожевого таймера
10. Программируемый сторожевой таймер (однократно разрешает после сброса): от 50 мс 6 с при 4 МГц
11. Интерфейс подключения клавиатуры с генерацией прерывания на порте P1 (8 разрядов)
12. SPI интерфейс (режим главный/подчиненный)
13. 34 линии ввода-вывода
14. 4 вывода для подключения светодиода с программируемым источником тока : 2-6-10 мА типично
15. 4-уровневая система прерываний с приоритетами (11 источников)
16. Режимы холостого хода и экономичный
17. Встроенный генератор 0…32 МГц с аналоговой схемой ФАПЧ для синтеза 48 МГц
18. Стабилизатор напряжения и выход опорного источника : 3.3В/4 мА
19. Низкий диапазон напряжения источника питания:
3.0В…3.6В;
Максимальный рабочий ток 30 мА (при 40 МГц);
В экономичном режиме потребление 100 мкА.
20. Коммерческий и промышленный температурные диапазоны
21. Корпуса: PLCC52, VQFP64, MLF48, SO28
Структура микроконтроллера представлена на рис. 2.10. Структурная схема USB-модуля в микроконтроллере ATMEL представлена на рис. 2.11. Расположение выводов контроллера показана на рис. 2.12.
SHAPE
\* MERGEFORMAT
Р
ис.
2.11. Структурная схема USB-модуля в
микроконтроллере ATMEL
Рис. 2.12. Расположение выводов ATMEL
ATMEL содержит специальный аппаратный модуль, который позволяет ему обеспечивать обмен данными по USB. Для этого необходимы опорные синхроимпульсы с частотой 48 МГц, которые вырабатываются контроллером синхронизации. Эти синхроимпульсы используются для формирования тактовых импульсов с частотой 12 МГц из принятого дифференциального потока данных USB и передачи данных на высокой скорости, соответствующей требованиям к USB устройствам. Формирование синхроимпульсов выполняется цифровой системой ФАПЧ [36].
Блок автоматов последовательного интерфейса (SIE) выполняет NRZI кодирование и декодирование, вставку бита, формирование битов проверки на четность (CRC кодирование и декодирование) и последовательно-параллельное преобразование данных.
Описание светодиодов, перемычек и кнопок
Светодиод VD1 показывает подключен ли интерфейс RS232, VD3 и VD4 служат для индикации обмена данными по линиям Rx и Tx RS232 интерфейса, VD5 – индикатор питания. Перемычка P1 соединяет кнопку с линией PSEN либо с линией KINO, P2 – отключает сигнал VREF от USB – это необходимо для того, чтобы при подключенном USB кабеля к плате, отключить постоянное напряжение 3,3В, тогда операционная система воспримет это действие как отключение устройства от USB. Кнопка К1 - кнопка сигнала внешнего прерывания INT0, К2 – нажимается перед подключением платы к USB порту компьютера, позволяет войти в режим In-System программирование, К3 - кнопка сброса.
Для обеспечения необходимого для зашумления значения напряжения сигнала на выходе микроконтроллера требуется подключить усилитель сигнала. Используется традиционная схема усилителя на биполярном транзисторе, работающем в ключевом режиме, включенным по схеме с общим эмиттером. Напряжение, подаваемое на базу транзистора, определяется стабилитроном VD1. Резисторы R1, R2, R3 ограничивают ток через стабилитрон VD1 и транзистор VT1.
Каждое USB-устройство, спроектированное по спецификации Plug and Play (PnP), должно иметь идентификатор, который однозначно определяет модель данного устройства. Этот идентификатор должен быть предоставлен шинному аппаратному обеспечению и, соответственно, шинному драйверу при поступлении запроса [23]. Секция описания модели содержит поле hwid, играющее роль идентификатора модели.
Идентификатор устройства должен иметь строго определенный для данного класса устройств формат. Для USB-устройств идентификатор имеет следующий формат:
USB\Vid_ww&Pid_ddddSRev_rr
Здесь ww — идентификатор поставщика (поле idvendor дескриптора устройства, зарегистрированный в Комитете USB-производителей; dddd — идентификатор, присвоенный производителем данный модели USB-устройства (поле idProduct); rr — номер версии разработки. Все эти поля вводятся как шестнадцатеричные числа.
В INF-файле допустимо указывать усеченные варианты идентификаторов, например:
USB\Vid_ww&Pid_dddd
USB\Class_cc&SubClass_ss_Prot_pp
USB\Class_cc&SubClass_ss USB\Class_cc
Здесь ее — код базового класса из полученного дескриптора устройства или дескриптора интерфейса данного USВ-устройства; ss — код подкласса; рр — идентификатор протокола.
Примеры USB-идентификаторов:
usb\vid_040a&pid_oioo — цифровая USB-камера Kodak;
usb\root_hub20 — USB-хаб;
- usb\vid_067bspid_2303 — USB-мобильный телефон.
WDM (Windows Driver Model, драйверная модель Windows) — новая модель архитектуры драйверов, предложенная Microsoft для Windows 2000. Конечно, эта архитектура развивалась начиная с Windows 3.11, продолжала развиваться в Windows 98 и Windows NT, но по-настоящему полной она стала только в Windows 2000.
Архитектура WDM позволяет распределить процесс передачи данных (рис. 2.13).
С точки зрения WDM, существуют три типа драйверов.
Драйвер шины (bus driver), обслуживающий контроллер шины, адаптер, мост или любые другие устройства, имеющие дочерние устройства. Драйверы шин нужны для работы системы и в общем случае поставляются Microsoft. Для каждого типа шины (PCI, PCMCIA и USB) в системе имеется свой драйвер. Сторонние разработчики создают драйверы для поддержки новых шин, например, для VMEbus, Multibus или Futurebus.
Функциональный драйвер (function driver) — основной драйвер устройства, предоставляющий его функциональный интерфейс. Обязателен кроме тех случаев, когда устройство используется без драйверов (т. е. ввод/вывод осуществляется драйвером шины или драйвером фильтров шины). Функциональный драйвер по определению обладает наиболее полной информацией о своем устройстве. Обычно только этот драйвер имеет доступ к специфическим регистрам устройства.
Рис. 2.13. WDM-модель для USB-интерфейса
Драйвер фильтра (filter driver), поддерживающий дополнительную функциональность устройства (или существующего драйвера) или изменяющий запросы на ввод/вывод и ответы на них от других драйверов (это часто используется для коррекции устройств, предоставляющих неверную информацию о своих требованиях к аппаратным ресурсам). Такие драйверы не обязательны и их может быть несколько. Они могут работать как на более высоком уровне, чем функциональный драйвер или драйвер шины, так и на более низком. Обычно эти драйверы предоставляются производителями или независимыми поставщиками оборудования.
Согласно типам драйверов, существуют три типа объектов:
объекты физических устройств (PDO, Physical Device Object);
объекты функциональных устройств (FDO, Functional Device Object);
объекты фильтров устройств (FiDO, Filter Device Object).
Объекты PDO создаются для каждого физически идентифицируемого элемента аппаратуры, подключенного к шине данных. Объект FDO подразумевает единицу логической функциональности устройства. Объекты фильтров предоставляют дополнительную функциональность.
В среде WDM один драйвер не может контролировать все аспекты устройства: драйвер шины информирует диспетчер РпР об устройствах, подключенных к шине, в то время как функциональный драйвер управляет устройством. Драйверы фильтров низкого уровня позволяют исправлять информацию о требованиях устройства к системным ресурсам, а драйверы фильтров высокого уровня добавляют устройству дополнительную функциональность (например, производят дополнительную защиту клавиатуры).
В поставку Windows входят два низкоуровневых драйвера, избавляя программиста от множества рутинной работы:
драйвер хоста отвечает за обмен данными с аппаратурой;
драйвер шины USB отвечает за управление транзакциями, питанием и распознавание устройств.
С точки зрения прикладного программиста, наибольший интерес представляют драйвер класса (class driver) и интерфейс обращения к этому драйверу. Здесь операционная система Windows делает еще один шаг на пути унификации интерфейсов. Все USB-устройства делятся на группы, согласно общим свойствам, выполняемым функциям и требованиям к ресурсам [23,24,25].