Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 154

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 148 149 150 151 152 153 < 154 > 155 156 157 158 159 160 .. 166 >> Следующая

18.2.2. Дескриптор передачи
Дескриптор передачи (TD, Transfer Descriptor) описывает параметры транзакции, запрашиваемой клиентом. Дескриптор должен быть выровнен на границу 16 байт. Дескрипторы всех четырех типов передач имеют одинаковую структуру.
Каждый дескриптор имеет размер 32 байта и состоит из двух частей: младшие четыре двойных слова (DWORD) занимает область данных хост-контроллера, а старшие четыре двойных слова — область данных программного обеспечения, которая не обрабатывается и на функционирование хост-контроллера не влияет.
31 30 29 28 27 !26 25 24 23 21 І 20 і 19 і 18 16 ',15! 14 11 і 10 8 і 7 4 3 2 1 0
I LP olvr QlTl
і ! і lit III I lit it і і • ¦і і і і і
I " SPO с .ERR I LS ISO IOC Status I r ActLen
і І І і і
і MaxLen ¦ |r|o| EndPt I OevAddr I PIO I
Указатель на буфер данных (Buffer Pointer)
Зарезервировано для использования программным обеспечением
10-13Н 14-17Н 18-1ВН 1C-1FH
Рис. 18.1. Структура дескриптора передачи
На рис. 18.1 показана структура дескриптора передачи, состоящего из следующих полей:
? двойное слово 0 (00—ОЗН) — указатель на следующий элемент списка дескрипторов (TD Link Pointer):
• [31:4] указатель на следующий элемент списка дескрипторов (LP,'Link Pointer);
512
Часть V. Справочник
• [3] зарезервирован, при записи должен быть равен 0;
• [2] порядок обработки очередей (Vf, Depth/Breadth Select) — значение 0 означает обработку "в ширину", а 1 — "в глубину"; при обработке "в ширину" при завершении обработки данного дескриптора контроллер переключится на обработку следующей очереди, а при обработке "в глубину" будет обрабатываться следующая транзакция в текущей очереди;
• [1] тип структуры данных (Q, QH/TD Select) — значение 0 означает дескриптор передачи, а 1 — заголовок очереди;
• [0] признак последнего элемента списка (Т, Terminate) — если этот бит равен 0, то в поле указателя содержится адрес следующего элемента списка, а если 1, то данный элемент является последним в списке и поле указателя не должно обрабатываться;
? двойное слово 1 (04—07H) — слово управления и состояния (TD Control and Status):
• [31:30] зарезервированы и должны содержать нули;
• [29] разрешение приема укороченного пакета данных (SPD, Short Packet Detect):
0 0 — прием запрещен;
0 1 — если длина принимаемого пакета меньше заданной, дескриптор передачи становится неактивным, заголовок очереди не изменяется и (по окончании кадра) устанавливается бит usbint в регистре состояния и вырабатывается прерывание (если оно разрешено);
• [28:27] счетчик ошибок (CJERR, Number of Error) — работает на вычитание (его значение уменьшается на единицу после каждой неудачной попытки выполнения транзакции):
0 00 — нет лимита ошибок;
0 10 — допускается одна ошибка;
0 01 — допускаются две ошибки;
0 11 — допускаются три ошибки.
После исчерпания лимита ошибок транзакция становится неактивной, и устанавливается признак сбоя (бит 22);
• [26] тип устройства (LS, Low Speed Device): 0 0 — полноскоростное устройство;
0 1 — низкоскоростное устройство;
Глава 18. Хост-контроллер UCH
513
• [25] признак дескриптора изохронной передачи (ISO, Isochronous Select):
О 1 — дескриптор изохронной передачи (после выполнения изохронные дескрипторы отмечаются как неактивные независимо от результата выполнения транзакции);
О 0 — дескриптор другого типа передачи;
• [24] управление сигналом прерывания по завершении кадра (IOC, Interrupt on Complete) — при значении этого бита 0 прерывание не вырабатывается, а при значении 1 по завершении кадра, в котором выполнялась обработка данного дескриптора, вызывается прерывание;
• [23:16] состояние процесса выполнения команды (Status):
О [23] признак активного дескриптора (Active) — устанавливается в единицу программным обеспечением при включении дескриптора в очередь и сбрасывается хост-контроллером после завершения связанной с данным дескриптором транзакции или после обнаружения фатальной ошибки при ее выполнении;
О [22] признак сбоя при выполнении транзакции (Stalled) — устанавливается в единицу при обнаружении серьезной ошибки в процессе выполнения транзакции; при установке этого бита контроллер одновременно сбрасывает бит 23;
О [21] признак ошибки в буфере данных (Data Buffer Error) — устанавливается в 1 при переполнении буфера в процессе приема или опустошении буфера в процессе передачи данных;
О [20] признак обнаружения перекрестных помех (Babble Detected) — устанавливается в единицу при обнаружении помех при выполнении транзакции;
0 [19] признак отказа от транзакции (NAK Received) — устанавливается в единицу, если контроллер получил сигнал NAK при выполнении транзакции;
0 [18] признак обнаружения ошибки тайм-аута или ошибки CRC
(CRC/Time out Error) — устанавливается в единицу, если устройство не отвечает на запрос или при выполнении транзакции обнаружено несовпадение контрольной суммы;
Предыдущая << 1 .. 148 149 150 151 152 153 < 154 > 155 156 157 158 159 160 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100