Мы разрабатываем USB-драйвер WinCE 6.0 для сетевого устройства Ethernet. Устройство имеет 1 управление, 1 прерывание (IN) и 4 групповых конечных точки (3 OUT и 1 IN). Базовая функциональность работает нормально с драйвером.
Но когда мы какое-то время запускаем интенсивный трафик (с iperf), мы видим проблему неполучения каких-либо данных от цели из конечной точки BULK IN. В этот момент хост все еще может отправлять данные через конечную точку Bulk OUT.
У нас есть анализатор USB для проверки транзакций между хостом и устройством. Из захвата мы обнаружили, что, когда мы достигаем этого условия, хост перестал отправлять кадры токенов IN на конечной точке Bulk IN для чтения данных. Хотя он по-прежнему может передавать данные через канал Bulk OUT и получать успешный ACK от устройства.
Непосредственно перед тем, как мы достигаем условия, мы видим нормальное поведение либо фрейма токена IN с NAK (когда у устройства нет данных для отправки на хост), либо токена IN с допустимыми данными.
- Это показывает, что прошивка устройства все еще отвечает. Что может привести к тому, что HCD перестанет отправлять маркерные кадры IN?
- Как восстановиться после такого частичного сбоя?
Любые предложения о том, как отлаживать это дальше?
заранее спасибо
Спасибо
Джефф Фейсмайр