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

 
 
> Проблема с передачей данных от хоста девайсу at91sam7s, использую родной драйвер atm6124.sys
Bulat
сообщение Jan 21 2009, 06:33
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



От хоста девайсу at91sam7s по USB передаю послыки одинаковый длины 50 байт. Содержимое следующих друг за другом посылок разное и повторяется через одну псылку. В качестве подтверждения, жду от девайса пакет, содержащий контрольную сумму (сумма значений всех байт посылки). По идее я должен принимать два чередующихся значения этой суммы, т.е. примерно такую последовательность 300 228 300 228 ... и т.д. А на самом деле числа повторяются, т.е. 300 300 300 228 300 228 300 228 228 .. и т.п. Если запускать приложение в режиме отладки, то повторений почти не встречается, но все же они есть, а если в обычном режиме запускать приложение, то повторений очень много.

Пример кода приложения:

Код
nBytes = 50;
PurgeComm(PipeOut,PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
Success = WriteFile(PipeOut, &buf_w, 50, &nBytes, NULL);

//Ожидание подтверждения прихода на передачу
while(RealRead<64)
{
    ReadFile(PipeIn, &buff, 64, &RealRead, NULL);
}
RealRead = 0;
PurgeComm(PipeIn,PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);


Может еще как-то буфер надо чистить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Bulat
сообщение Jan 22 2009, 11:24
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



После однократного выполнения WriteFile(PipeOut, buf, 50, &nBytes, NULL) USBTrace показал 2 передачи по 50 байт:
- одна через device objects Device\USBPDO-9 (он относится к драйверу хоста usbuhci.sys),
- другая через device objects Device\USBPDO-4 (он относится к драйверу хаба usbhub.sys).
Но при приеме USBTrace показал только один пакет (сколько и должно быть) через device objects Device\USBPDO-4.
Так и должно быть??
Go to the top of the page
 
+Quote Post
Bulat
сообщение Jan 23 2009, 06:11
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



Цитата(Bulat @ Jan 22 2009, 16:24) *
После однократного выполнения WriteFile(PipeOut, buf, 50, &nBytes, NULL) USBTrace показал 2 передачи по 50 байт:
- одна через device objects Device\USBPDO-9 (он относится к драйверу хаба usbhub.sys),
- другая через device objects Device\USBPDO-4 (он относится к драйверу хоста usbuhci.sys).
Но при приеме USBTrace показал только один пакет (сколько и должно быть) через device objects Device\USBPDO-4.
Так и должно быть??

Я посмотрел как работает обычный флеш-накопитель, при отправке данных на флешку также посылаются 2 пакета:
- первый пакет через драйвер хаба Device\USBPDO-9 (usbhub.sys);
- второй пакет через драйвер самого девайса (драйвер класса \Device\000000b3 USBSTOR.SYS ). В отличие от моего случая, когдав второй пакет посылался через драйвер хоста Device\USBPDO-4 (usbuhci.sys), а не через драйвер моего девайса atm6124.sys (\Device\000000b1).

Это особенность драйвера atm6124.sys?
P.S. Проверял на других USB-девайсах, картина такая же как и с флеш-накопителем, то есть отличается от моего девайса.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:30
Рейтинг@Mail.ru


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