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

 
 
> Usbser.sys и AT91SAM7x256
antoxa1
сообщение Jan 9 2008, 09:29
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 6-04-06
Пользователь №: 15 889



Есть плата(самоделка) на основе AT91SAM7x256. Из примеров, поставляемых с Keil, из папки Boards\Atmel\AT91SAM7S взят пример для HID устройства. Данный пример, переработан с целью исполнения CDC устройства(изменены дискрипторы и т.д. и т.п).
При подключении к шине USB устройство определяется нормально. В качестве драйвера виртуального COM порта установлен usbser.sys.
Ситуация такая: через HyperTerminal на устройство отправляется байт данных, в ответ на это устройством должен отправляется байт "подтверждения", HyperTerminal принимает этот байт в первый раз нормально..при отправке следующего байта в устройство должно произойти тоже самое, но терминал не получает никаких данных в ответ. Отправка байт в устройство проходит нормально. При этом если работать с устройством через программу BusHound(монитор шины USB) то отправка и последующий приём выполняются корректно.
Вопрос: почему терминал не принимает второй и, соответственно, последующие байты "подтверждения"? Если кто может объяснить как работать с usbser.sys(или виртуальными COMпортами), откликнитесь, пожалуйста.
P.S. мой поиск по данной теме не дал видимых результатов
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
antoxa1
сообщение Jan 9 2008, 17:23
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 6-04-06
Пользователь №: 15 889



Ошибочен ли следующий алгоритм: от хоста отправить данные--->в обработчике прерывания конечной точки типа OUT выполнить над принятыми данными необходимые действия--->в этом же обработчике записать нужные данные в буфер конечной точки типа IN --->ждать очередного пакета данных от хоста и повторить весь алгоритм

Драйвер usbser.sys отправляет запрос на чтение данных с устройства периодически или сразу же за запросом на запись в устройство?
Go to the top of the page
 
+Quote Post
Alechek
сообщение Jan 9 2008, 18:17
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(antoxa1 @ Jan 9 2008, 23:23) *
Ошибочен ли следующий алгоритм: от хоста отправить данные--->в обработчике прерывания конечной точки типа OUT выполнить над принятыми данными необходимые действия--->в этом же обработчике записать нужные данные в буфер конечной точки типа IN --->ждать очередного пакета данных от хоста и повторить весь алгоритм

Смотря какой размер входных данных, помещаются ли они в одной Endpoint, идут ли они одной Булкой, посылаются ли с HT какие-то служебные символы (\r\n etc). Как ведет себя точка IN при поступлении запроса на посылку данных, но попылать нечего? И тп.. Ньюансов больше чем кажется. Самый простой вариант - не очищается буфер приема после принятия данных.

Цитата
Драйвер usbser.sys отправляет запрос на чтение данных с устройства периодически или сразу же за запросом на запись в устройство?

Драйвер ничего не запрашивает с устройства, он общается только с хост-контроллером. а вот хост уже запрашивает данные с устройств. Периодически, с максимальным периодом
Go to the top of the page
 
+Quote Post



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

 


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


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