реклама на сайте
подробности

 
 
> работа USB OHCI в LPC23xx, поясните по логике
zuy
сообщение Dec 15 2009, 09:27
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Подскажите пожалуйста по логике работы с трансфер дескрипторами в USB OHCI.
Имеется девайс, у которого кроме EP0 есть еще Bulk IN EP81 и Bulk OUT EP1. Весть трафик идет только по Bulk конечным точкам.

Я формирую связанный список из двух дескрипторов конечных точек.
Далее по мере появления транзакций на чтение и запись ставлю TD в очередь соответствующего ED и хост их обрабатывает.

А как правильно потом обрабатывать завершение этих транзакций?
Что делать с теми которые завершились с ошибкой? Удалять их из списка ED или хост их сам убрал?
Если транзакция на чтение долго не завершается т.к. нет данных в девайсе для передачи, мне нужно самому убрать ее по таймауту?
Если хост не завершил транзакцию на чтение, будет ли он обрабатывать транзакцию на запись по другой конечной точке?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zuy
сообщение Mar 10 2010, 13:49
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Допустим мой девайс имеет две Bulk конечные точки на вход и выход. Обзовем из BulkIN, BulkOUT и соответствуют дескрипторы конечных точек BulkIN_ED, BulkOUT_ED
Я их соединяю в список и цепряю к HcBulkHeadED.
Получаю HcBulkHeadED указывает на BulkIN_ED, BulkiIN_ED.NextED указывает на BulkOUT_ED, а BulkiOUT_ED.NextED=0;
Далее я планирую цеплять трансфер дескрипторы к нужным дескрипторам конечных точек и ожидаю, что хост контроллер будет бегать по ED и передавать данные в соответствии с TD.

Теперь к сути вопроса.
Девайс может как иметь данные для передачи хосту так может и не иметь.
Если он не имеет данных, я делаю TD для IN транзакции и цепляю ее к BulkIN_ED, хост ее запускает, но т.к. девайс не имеет данных для передачи,
эта транзакция висит не исполненная. В это время возникает необходимость сделать OUT транзакцию, я создаю TD и цепляю ее к BulkOUT_ED.
Хост исполнит транзакцию OUT несмотря на то, что по другой EP есть незавершенная IN ?
Если исполнит, и в ответ на нее у девайса появятся данные для передачи, то хост примет эти данные в незавершенную IN или надо ее как-то убирать и делать новую?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 03:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.02624 секунд с 7
ELECTRONIX ©2004-2016