Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 302

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 296 297 298 299 300 301 < 302 > 303 304 305 306 307 308 .. 528 >> Следующая

передавая в этом пакете новый назначенный уникальный адрес устройства,
позволяющий отличить это устройство от других подключенных к шине. Если
присоединенное устройство - концентратор и есть USB-устройства,
подключенные к его портам, то вышеупомянутая процедура сопровождается для
каждого из присоединенных USB-устройств. Если присоединенное устройство -
функция, то уведомление о подключении будет послано в программное
обеспечение хоста.
Затем хост посылает еще запросы, запрашивая остальную информацию об
устройстве. Из этих ответов хост узнает, как много каналов устройство
имеет, его требования по питанию, необходимую пропускную способность
канала и какой драйвер следует загрузить.
Отключение USB-устройств. Когда USB-устройство отключается от порта,
концентратор автоматически отключает порт и сообщает на хост об удалении
устройства. Если удаленное USB-устройство-функция, уведомления об
удалении посылаются программному обеспечению хоста. Затем хост удаляет
информацию относительно данного USB-устройства из всех своих структур
данных. Если же удаленное USB-устройство - концентратор, процесс удаления
должен быть выполнен для всех USB-устройств, которые были предварительно
присоединены к концентратору.
Прием пакетов. После того как USB-контроллер получит маркер OUT token, он
должен начать прием данных. Контроллер проверяет в таблице дескрипторов,
которые связаны с данной конечной точкой, следующий буферный дескриптор
и, если он свободен, начинает прием в буфер данных, адрес которого указан
в дескрипторе. После заполнения текущего буфера контроллер закрывает
буфер, сбрасывает бит незанятости Е := 0 (Empty) в слове состояния его
дескриптора и, если в слове состояния дескриптора установлен бит
прерывания I = 1 (Interrupt), формирует запрос на прерывание.
Если длина принимаемого кадра данных превышает размер буфера, выделенного
в памяти, то контроллер продолжает запись принимаемых данных в буфер,
адрес которого указан в следующем дескрипторе, но только если у этого
дескриптора установлен бит незанятости Е = 1. Если же следующий
дескриптор окажется занятым, то будет зарегистрирована ошибка. После
завершения приема всех данных из пакета в слове состояния буферного
дескриптора последнего занятого буфера памяти устанавливается бит L = 1
(Last) и буфер закрывается.
Если принимаемый пакет содержит поле "идентификатор пакета" (DATA0/DATA1
packet ID (PID)), то в буфер будет записано только содержимое пакета, а
содержимое поля PID будет занесено в соответствующие поля PID слова
состояния дескриптора.
Протокол USB-шины предусматривает принцип "запрос-ответ" при реализации
обмена по сети. Если при приеме пакета обнаружена ошибка, то пакет с
подтверждениями не
538
ОРГАНИЗАЦИЯ КОММУНИКАЦИОННЫХ ПРОЦЕССОРНЫХ МОДУЛЕЙ В КМК
посылается и в слове состояния буферного дескриптора последнего буфера
сданными из пакета устанавливаются соответствующие биты ошибок. Если же
пакет принят без ошибок и проверка CRC контрольной суммы завершилась
успешно, то содержимое пакета сохраняется в буфере памяти и в ответ на
получение OUT-маркера может быть послано подтверждение. Тип пакета
подтверждения определяется в битах RHS в регистре конфигурации конечной
точки USEPx.
Протокол предусматривает обработку ошибок на аппаратном и программном
уровнях. Аппаратная обработка включает в себя анализ целостности
сообщения и повторение неудачных передач. Хост-контроллер повторит
передачу ошибочного кадра данных три раза, а затем проинформирует
клиентское программное обеспечение об ошибке.
Большинство ошибок, которые регистрирует USB-контроллер в МРС823 при
своей работе, фиксируются установкой соответствующих битов ошибок в слове
состояния буферных дескрипторов. Ниже перечислены ошибки, регистрируемые
при приеме.
• Переполнение буфера FIFO приемника (Overrun). Данная ошибка
регистрируется, если
USB-контроллер не успел переписать данные из общего для всех конечных
точек (endpoints) буфера FIFO приемника в буферы памяти, а по шине уже
получены новые данные, которые были записаны в FIFO-буфер поверх старых.
При возникновении этой ошибки контроллер закрывает буфер, устанавливает
бит ошибки OV := 1 в слове состояния дескриптора и устанавливает бит
прерывания RXB в регистре событий USB-контроллера. Если новый пакет
данных был принят без ошибок, то после завершения его приема USB-
контроллер передает по шине отрицательное подтверждение NAK.
• Занятость (Busy). Данный тип ошибки регистрируется, если по шине принят
корректный кадр данных, но RISC-контроллер не обнаружил свободных буферов
для приема данных. При этом в регистре событий USB-контроллера
устанавливается бит прерывания BSY.
• Нарушение формата кадра (Non Octet Aligned). Данный тип ошибки
регистрируется, если принят кадр, длина которого не кратна 8 битам. При
возникновении этой ошибки контроллер сохраняет принятый кадр данных в
буферах памяти, закрывает буфер, устанавливает бит ошибки N0 := 1 в слове
Предыдущая << 1 .. 296 297 298 299 300 301 < 302 > 303 304 305 306 307 308 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed