Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 524 по 631.doc
Скачиваний:
6
Добавлен:
16.04.2019
Размер:
2.54 Mб
Скачать

Организация коммуникационных процессорных модулей в кмк

посылается и в слове состояния буферного дескриптора последнего буфера сданными из пакета устанавливаются соответствующие биты ошибок. Если же пакет принят без ошибок и проверка 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 битам. При возникновении этой ошибки контроллер сохраняет принятый кадр данных в буферах памяти, закрывает буфер, устанавливает бит ошибки NO := 1 в слове состояния дескриптора и устанавливает бит прерывания RXB в регистре событий USB-контроллера.

  • Ошибка проверки контрольной суммы (CRC Error). При обнаружении этой ошибки кон-

троллер закрывает буфер приема, устанавливает бит ошибки CR := 1 в слове состоя­ния дескриптора и устанавливает бит прерывания RXB в регистре событий USB-кон­троллера.

• Ошибка проверки алгоритма вставки/удаления бит-стаффинга. Если обнаруживается данная ошибка, то принятый кадр сохраняется в буфере памяти, заполняется его сло­ во состояния и последним в нем устанавливается бит AB(Frame Aborted) := 1.

Передача данных. При передаче данных пользователь должен предварительно заг­рузить данные в буфер FIFO выбранной конечной точки. Для этого пользователь должен подготовить данные для передачи в буферах памяти, заполнить слово состояния соот­ветствующего буферного дескриптора и установить бит STR := 1 в регистре команд USB-контроллера. Далее USB-контроллер перепишет данные в соответствующий FIFO-бу­фер конечной точки (endpoint) и будет ожидать появления маркера IN, при получении которого он начнет передачу данных в сеть.

Если при получении IN-маркера данные в буфере FIFO не готовы или в регистре кон­фигурации выбранной Endpoint USEPx установлено значение битов THS = 10, то в ответ на маркер IN посылается пакет с отрицательным подтверждением NAK. Значение битов THS определяет тип пакета подтверждения, который может быть передан в ответ на по­лучение маркера IN.

539