wince 6 USB - Проблема массовой передачи (нет кадров токена передачи IN на канале BULK IN)

Мы разрабатываем 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 с допустимыми данными.

  1. Это показывает, что прошивка устройства все еще отвечает. Что может привести к тому, что HCD перестанет отправлять маркерные кадры IN?
  2. Как восстановиться после такого частичного сбоя?

Любые предложения о том, как отлаживать это дальше?

заранее спасибо

Спасибо

Джефф Фейсмайр


person user3245738    schedule 28.01.2014    source источник


Ответы (1)


Мы разобрались с вопросом.

Во время инициализации драйверу HCD предоставляются буферы для приема на конечной точке BULK IN. Когда мы запускаем интенсивный трафик, мы сталкиваемся с условием, при котором все буферы, отправленные в HCD, возвращаются обратно драйверу, но не возвращаются обратно в HCD. Поскольку нет буферов для приема данных для этого канала, драйвер HCD не отправляет кадры передачи IN Token.

person Jeff Previti    schedule 31.01.2014