Sims 0 31 января, 2008 Опубликовано 31 января, 2008 · Жалоба Используется USB контроллер Cypress (FX2), их драйвер CyUSB.sys и их же библиотека CyAPI.lib. Проблема: При передаче по плохому USB кабелю функция XferData часто возвращает ошибку и передача прекращается. Если детализировать состояние – оказывается status=USBD_STATUS_CRC. Кто-нибудь уже сталкивался с этим? Почему драйвер не исправляет ошибку? Можно ли что-то с этим сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TailWind 0 31 января, 2008 Опубликовано 31 января, 2008 · Жалоба В USB нет никаких исправлений ошибок. Пакет нужно отправлять заново. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sims 0 31 января, 2008 Опубликовано 31 января, 2008 · Жалоба Ну да, в идеале, получив пакет с неправильны CRC драйвер хоста просит девайс повторить отправку. Но вместо этого, драйвер возвращает ошибку и передача обрывается. (при этом теряются уже полученные данные, находящиеся в USB driver stack=16Кб ) Стоит ли на хосте ограничение на кол-во повторов? Можно ли это ограничение снять или увиличить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 31 января, 2008 Опубликовано 31 января, 2008 · Жалоба ...Стоит ли на хосте ограничение на кол-во повторов? Для Windows™ в книге: USB Complete - 3. edition by Jan Axelson: page 71 (Bulk Transfers) Detecting and Handling Errors Bulk transfers use error detecting. If a device doesn’t return an expected handshake packet, the host tries up to twice more... page 75 (Interrupt Transfers) Detecting and Handling Errors If a device doesn’t return an expected handshake packet, host controllers in PCs will retry up to twice more... Можно ли это ограничение снять или увиличить? Для Windows™ вряд ли. При передаче по плохому USB кабелю... Все таки, лучше использовать кабели USB с маркировкой USB High Speed Certified. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться