Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Регистры ввода-вывода универсального хост-контроллера шины USB

Регистры ввода-вывода универсального  

хост-контроллера шины USB.

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

Драйвер интерфейса USB управляет работой хост-контроллера через регистры. Регистры универсального хост-контроллера принят разделять на две группы: группу конфигурационных регистров PC (USB PCI Configuration Registers) и группу регистров пространств ввода-вывода (USB Host Controller IO Space Registers). Ниже рассматриваются регистры ввода-вывода хост-контроллера.  Непосредственная работа с конфигурационными регистрами из прикладных программ нежелательна (может привести к «зависанию» системы). Для описания режима доступа к данным в регистрах USB используются следующие стандартные обозначения: RO - возможно только считывание данных; WO - возможна только запись данных; R/W - разрешено выполнение как записи, так и считывании данных; R/WC - разрешено считывание данных и сброс отдельных разрядов регистра (запись единицы в некоторый разряд регистра приводит к тому, что этот разряд сбрасывается в ноль). Список регистров ввода-вывода хост-контроллера шины USB при веден в табл.1. Доступ к этим регистрам осуществляется через группу портов ввода/вывода, базовый адрес которой задан в конфигурационном регистре USBBA.

Таблица 1. Регистры ввода-вывода универсального хост-контроллера шины USB 

Смещение

Размер

Доступ

Мнемонике

Наименование регистра

00h

WORD

 

R/W

 

USBCMD

 

Регистр команды USB

02h

WORD

 

R/WC

 

USBSTS

 

Регистр состояния USB

04h

WORD

 

R/W

 

USBINTR

Регистр управления прерываниями USB

06h

WORD

 

R/W

 

FRNUM

 

Регистр номера кадра USE

08h

DWORD

 

R/W

 

FLBASEADD

Регистр базового адреса списка кадров USB

0Ch

BYTE

 

R/W

 

SOFTMOD

Регистр модификатора начала кадра USB

10h

WORD

 

R/WC

 

PORTSCO

Регистр состояния и управления порта 0

12h

WORD

 

R/WC

 

PORTSC1

Регистр состояния и управления порта 1

 

Регистр команды USB (USBCMD) предназначен для передачи команды хост-контроллеру и доступен как

для записи, так и для считывания данных. Контроллер начинает выполнение команды сразу же после того, как она записана в регистр. Назначение разрядов регистра команды USB:

 - бит 0 (RS)  -  запуск/останов,  запись единицы в данный разряд активизирует работу контроллера, контроллер приступает к обработке и передаче данных, а запись нуля приводит к немедленной остановке контроллера и прекращению всех выполняемых операций (контроллер сам может сбрасывать данный разряд в ноль в случае возникновения серьезных ошибок и сбоев);

 - бит 1 (HCRESET)  -  сброс хост- контроллера,  запись единицы в данный разряд приводит к сбросу регистров, отражающих внутреннее состояние контроллера, механизм, обеспечивающий обнаружение подсоединения и отсоединения устройств обнуляется, работа обоих портов хост-контроллера блокируется. В результате происходит «виртуальное отсоединение» подключенных  к контроллеру устройств, биты 1 и 3 в регистрах состояния портов контроллера ycтанавливаются в единицу, а биты 0 и 8 сбрасываются. После завершения процесса обнуления всех внутренних регистров контроллер самостоятельно сбрасывает бит HCRESET и разрешает обнаружение подсоединенных устройств и определение скорости их работы, что приводит к соответствующему
изменению битов 0 и 8 в регистрах состояния портов;

 - бит 2 (GRESET)  -  глобальный сброс, запись единицы в данный разряд вызывает общий сброс хост-контроллера и всех подклю­ченных к нему устройств. Снять сигнал глобального сброса мож­но по прошествии не менее 10 мс после его установки, записав в данный разряд ноль.     

 - бит 3 (EGSM)  -  переключение в глобальный режим ожидания. За­пись единицы в данный разряд вызывает переключение хост-кон­троллера и всех подключенных к нему устройств в режим ожи­дания. Перед установкой в единицу бита EGSM необходимо остановить контроллер, сбросив бит запуска/останова RS. При выходе из режима ожидания данный бит сбрасывается в ноль программным обеспечением после сброса в ноль бита 4;

 - бит 4 (FGR)  -  общий выход из режима ожидания. Запись едини­цы в данный разряд выводит хост-контроллер и подключенные к нему устройства из режима ожидания. Устанавливать данный разряд может не только программное обеспечение, но и сам хост-контроллер  -  при обнаружении подключения или отключения устройства во время пребывания системы в режиме ожидания. Снять сигнал «пробуждения» можно по прошествии не менее 20 мс после его установки, записав в данный разряд ноль;

 - бит 5 (SWDBG)  -  переключение в режим отладки. Устанавливать бит SWDBG можно только при сброшенном бите RS, то есть толь­ко тогда, когда работа контроллера приостановлена. Запись еди­ницы в данный разряд переводит контроллер в режим отладки программного обеспечения. В режиме отладки контроллер оста­навливается после выполнения каждой транзакции и сбрасыва­ет бит RS. Возобновление работы контроллера происходит после того, как программное обеспечение установит бит RS в единицу.

 - бит 6 (CF)  -  флаг завершения конфигурирования контроллера. Данный разряд может быть установлен в единицу программным обеспечением после завершения процесса конфигурирования хост-контроллера, но на работу самого контроллера никак не влияет;

 - бит 7 (МАХР)  -  максимальный размер пакета завершения кадра (0 - 32 байта, 1 - 64 байта);               ,

 - биты 8-15 зарезервированы (всегда должны быть сброшены в ноль).

После  аппаратного или  программного сброса контроллера регистр команды USB содержит значение 0000h.

Регистр состояния USB (USBSTS) отражает текущее состояние хост-контроллера. Регистр USBSTS доступен для чтения и сброса (за­пись единиц в какие-либо его разряды сбрасывает эти разряды в ноль).  Назначение разрядов регистра состояния USB:

 - бит 0 (USBINT)  -  признак USB-прерывания. Данный разряд уста­навливается контроллером при возникновении запроса преры­вания по завершению транзакции (при установленном бите ЮС
в дескрипторе передачи) или при обнаружении короткого паке­та (размер пакета меньше заданной в дескрипторе величины);

 - бит 1 -  признак прерывания по ошибке, которая произошла при выполнении транзакции;

 - бит 2 (RSMDET)  -  признак поступления на шину сигнала «про­буждения» от устройства USB;

 - бит 3  -  признак системной ошибки (устанавливается при возникновении сбоев в процессе передачи данных по шине РСI);

 - бит 4   -  признак обнаружения ошибки в работе контроллера;

 - бит 5  -  признак останова контроллера (устанавливается после сброса в ноль бита RS в регистре команды USB);

 - биты 6-15 зарезервированы.

После аппаратного или программного сброса контроллера регистр состояния USB содержит значение 0020h.

Регистр управления прерываниями (USBINTR) позволяет разрешать и запрещать генерацию прерываний различных типов хост-контрол­лером. Регистр USBINTR доступен для записи и считывания. На­значение разрядов регистра управления прерываниями:

 - бит 0  -  управление прерыванием по тайм-ауту и обнаружению ошибок CRC (0 - прерывание запрещено, 1 - разрешено);

 - бит 1  -  управление прерыванием по сигналу пробуждения (0 - прерывание запрещено, 1 - разрешено);

 - бит 2  -  управление прерыванием по завершению транзакции IOС (0 - прерывание запрещено, 1 - разрешено);

 - бит 3  - управление прерыванием по обнаружению короткого па­кета (0 - прерывание запрещено, 1 - разрешено);

 - биты 4-15 зарезервированы.

Регистр управления прерываниями позволяет за­блокировать любые прерывания от контроллера USВ, кроме пре­рываний, генерируемых при обнаружении ошибок в работе самого контроллера. После аппаратного или программного сброса контроллера регистр USBINTR содержит значение 0000h, т.е. все прерывания (за исключе­нием прерываний по сбоям в работе контроллера) запрещены.

Регистр номера кадра (FRNUM) содержит текущий номер кадра USB. Младшие 11 разрядов регистра (биты 0-10) содержат текущий но­мер кадра, а остальные разряды зарезервированы и должны содер­жать нули. Регистр доступен для чтения в любой момент времени, а запись данных разрешена только в том случае, если работа кон­троллера приостановлена (бит RS в регистре команды USB сбро­шен в ноль). Значение, содержащееся в разрядах 0-10 регистра FRNUM, увеличи­вается на единицу (инкрементируется) после завершения каждого кадра; после достижения значения 7FFh регистр обнуляется. Содер­жимое разрядов 0-10 служит номером кадра и передается в начале кадра в SOF-пакете. Кроме того, разряды 0-9 используются при формировании индекса текущего элемента в списке кадров (соот­ветствуют разрядам

2-11 индекса). После аппаратного или программного сброса контроллера регистр FRNUM содержит значение 0000h.

Регистр базового адреса списка кадров USB (FRBASEAOD) содержит начальный (абсолютный) адрес списка кадров в оперативной памя­ти компьютера. Регистр доступен FRBASEADD для записи и считыва­ния данных. Используются только старшие 20 бит регистра FRBA­SEADD, соответствующие битам 12-31 линейного адреса, а младшие 12 бит зарезервированы и должны содержать нули. Таким образом, базовый адрес списка кадров должен быть выровнен на границу гранулярности свопинга памяти процессоров Intel x86 (4 Кбайт).

Контроллер формирует указатель на текущий элемент списка кад­ров путем комбинирования сдвинутых влево на два разряда битов 0-9 из регистра номера кадра и битов 12-31 из регистра базового адреса. Разряды 0 и 1 указателя всегда равны нулю (указатель вы­ровнен на границу двойного слова). Количество указателей в спис­ке кадров равно 1024, а размер списка составляет 4 Кбайт. После аппаратного или программного сброса контроллера значение регистра базового адреса считается «неопределенным»: перед запус­ком контроллера надлежит создать в оперативной памяти список кадров и загрузить его абсолютный (линейный) адрес в регистр FRBA­SEADD.

Регистр модификатора начала кадра USB (SOFMOD) служит для под­стройки частоты кадров USB с целью обеспечения синхронизации всех устройств системы при работе в режиме реального времени. Значение младших семи разрядов этого регистра складывается с чис­лом 11936, в результате чего формируется делитель частоты квар­цевого резонатора генератора тактовой частоты. Старший разряд регистра SOFMOD (бит 7) зарезервирован и должен содержать зна­чение 0. Частота кварцевого резонатора составляет 12 МГц, а значение, уста­навливаемое в регистре модификатора начала кадра после аппарат­ного или программного сброса контроллера равно 64 (40h), поэтому частота генерации кадров равна 1 кГц. Изменяя значение модифи­катора от 0 до 127, можно осуществлять подстройку частоты кадров USB в пределах ± 0,5 %.

Регистр состояния и управления порта (PORTSC) позволяет контро­лировать режим работы порта хост-контроллера. Регистры PORTSC0 и PORTSC 1 доступны для записи и считывания данных. Назначе­ние разрядов регистра состояния порта:

 - бит 0  -  текущий статус подключения. Данный разряд доступен только для считывания и служит для определения наличия под­ключения USB-устройства к данному порту (0 - к порту ничего не подключено, 1 - к порту подключено устройство USB);

 - бит 1  -  признак изменения статуса подключения: устанавлива­ется в единицу при любых изменениях текущего статуса подклю­чения (см. бит 0). Бит признака изменения статуса подключения доступен для считывания и сброса (запись единицы в данный разряд сбрасывает его в ноль);

 - бит 2 (PORTEN)  -  включение и отключение порта (0 - порт за­блокирован, 1 - работа порта разрешена). Данный разряд доступен для записи и считывания: запись нуля (блокировка порта) может выполняться как программным обеспечением, так и хост-контроллером (при возникновении сбоя в работе порта), а запись единицы - только программным обеспечением. Состояние дан­ного разряда не изменяется, пока не изменится реальное состояние порта (возможна задержка срабатывания);

 - бит 3  -  признак включения и отключения порта (0 - состояние порта не изменялось, 1 - произошло включение или отключе­ние порта). Бит признака включения и отключения порта досту­пен для считывания и сброса (запись единицы в данный разряд сбрасывает его в ноль);

 - бит 4  -  состояние линии D+. Данный бит отражает текущей ло­гический уровень линии D+ и доступен только для чтения;

 - бит 5  -  состояние линии D-. Данный бит отражает текущей ло­гический уровень линии D- и доступен только для чтения;

 - бит 6 (RSM_DET)  -  признак обнаружения сигнала пробуждения (0 - сигнал не поступал, 1 - поступил сигнал пробуждения). Бит признака обнаружения сигнала пробуждения доступен для за­писи и считывания. Хост-контроллер устанавливает бит RSM_DET в 1 при обнаружении сигнала пробуждения; программное обеспечение устанавливает бит RSM_DET для формирования сигнала пробуждения. Если бит RSM_DET имеет значение 1, запись нуля при­водит к тому, что порт посылает низкоскоростной ЕОР (до окончания ЕОР бит остается в состоянии 1);

 - бит 7 зарезервирован, доступен только для считывания и при счи­тывании всегда имеет значение 1;

 - бит 8  -  признак подключения низкоскоростного устройства. Дан­ный бит доступен только для считывания и устанавливается в единицу, если к порту подключено низкоскоростное устройство;

 - бит 9  -  сброс порта. Бит сброса в современных контроллерах доступен только для считывания, хотя ранние варианты допуска­ли выполнение операции записи. Бит сброса порта устанавлива­ется в единицу при подаче команды сброса и находится в этом состоянии до тех пор, пока процедура сброса не будет завершена;

 - бит 10  -  признак активности линии «Overcurrent» (0  -  линия неактивна, 1  - линия активна). Бит 10 используется лишь в со­временных контроллерах и доступен только для считывания;

 - бит 11  -  признак изменения состояния линии «Overcurrent». Данный бит доступен для считывания и сброса. Он устанавли­вается контроллером в состояние 1 при переходе линии «Over-current» из неактивного состояния в активное. Признак сбрасыва­ется программным обеспечением путем записи единицы в бит 11. Бит 11 используется только в современных контроллерах;

 - бит 12  -  признак режима ожидания (устанавливается в 1, когда порт находится в режиме ожидания). Данный бит доступен для считывания и записи; он может использоваться программным обеспечением для перевода в состояние ожидания отдельного порта;

 - биты 13-15 зарезервированы.

После аппаратного или глобального сброса оба регистра PORTSC со­держат значение 0080h: бит 7 имеет значение 1, остальные разряды сброшены. После сброса контроллера (HCRESET) могут быть установлены биты 1 и 3. В современных контроллерах после осуществле­ния сброса бит 11 может иметь значение 1.

 


Лицензия