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

 
 
> пропажа пакетов на USB
Sagittarius
сообщение Mar 11 2009, 17:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



Здравствуйте.

Есть AT91SAM7SE512. Одна из endpoint сконфигурена на прием как bulk, 64 байта. От PC из верхнего софта посылаются пакеты по 2кбайта, которые где то внутри виндов бьются по 64 байта и сваливаются в микроконтроллер. Скорость обмена примерно 200кб/сек на прием и столько же на передачу. Проблема в том, что иногда какой ни будь из этих кусков по 64 байта пропадает.
Собственно вопрос - это нормальная ситуация или чего то в программе надо/можно подправить?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
galjoen
сообщение Mar 11 2009, 17:41
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Sagittarius @ Mar 11 2009, 20:18) *

Программу на базе примера делали? Если так, то ничего удивительного. Примеры они такие...
А вообще, скорее всего у вас ACK в ответ на битый пакет от хоста шлётся. Как в изохронном режиме.
Или приём разрешается до того, как буфер прочитан.
Go to the top of the page
 
+Quote Post
Sagittarius
сообщение Mar 11 2009, 18:17
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



Цитата(galjoen @ Mar 11 2009, 20:41) *
Программу на базе примера делали? Если так, то ничего удивительного. Примеры они такие...
А вообще, скорее всего у вас ACK в ответ на битый пакет от хоста шлётся. Как в изохронном режиме.
Или приём разрешается до того, как буфер прочитан.

прогу сам писал, просто сделал класс USB который теперь таскаю из проекта в проект правя дескрипторы: стандартная клава, CDC, свой драйвер. Вся работа на прерывании.
А как управлять отсылкой ACK? при вызове прерывания я смотрю что пришли данные и в правильный банк, вычитываю, сбрасываю флаг прихода данных (AT91C_UDP_RX_DATA_BKx) и собственно все. В ручную ACK-ом шевелить даже не знаю как laughing.gif
Так как ожидается приход не одного пакета в 64 байта а кучи данных в 2к то есть таймаут и проверка на целостность, и иногда какой то из пакетов теряется (приблизительно 1 на 2-10 миллиона в тестах с максимальной нагрузкой). Сейчас это решено на уровне софта в МК и PC через повторы, но причину хочу найти и устранить.
Go to the top of the page
 
+Quote Post



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

 


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


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