Есть ли у USB гарантия качества обслуживания для данных, передаваемых между моим устройством USB-CDC и хостом USB?
Я знаю, что с традиционным RS232 в шумной ситуации (например, автомобильный диагностический порт) плохие биты случаются достаточно часто, поэтому контрольные суммы важны для протокола. Если бы мне пришлось адаптировать такой протокол для приложения, использующего только USB, могу ли я безопасно пропустить контрольную сумму и соответствующие процедуры обработки ошибок?
Для справки я использую AT91SAM7S256 с платформой USB-CDC, предоставленной Atmel.
Обновить:
Я немного потренировал свой Google-Fu над этой проблемой и нашел эту статью, которая описывает подкласс CDC для эмуляции Ethernet и заявляет:
Через USB-кабель инкапсулированные кадры Ethernet проходят, начиная с MAC-адреса назначения и заканчивая непосредственно перед контрольной суммой кадра. (Контрольная сумма кадра не нужна, поскольку USB - надежный транспорт.)
Они могут означать, что USB-CDC является надежным транспортным средством, а не USB в целом, поскольку некоторые классы устройств, предназначенные для высокопроизводительных пакетных данных (веб-камера?), Могут не захотеть заполнять буферы, если программа не может достаточно быстро запросить данные.
Я все еще хотел бы дополнительное подтверждение по этому поводу.
источник
USB может быть относительно надежным протоколом, но не все устройства и драйверы, которые используют CDC, являются надежными. Я видел несколько разных устройств, у которых была довольно раздражающая привычка пропускать байты данных, отправленных ПК. Наблюдение за данными в области показало, что проблема не была в переполнении принимающего устройства - некоторые байты данных просто пропали (я смог перехватить весь пакет в области; и заголовок, и нижний колонтитул оба присутствовали, но некоторые из байтов между ними не было). Я не уверен, что именно пошло не так, чтобы вызвать такое поведение, но попытка отправить данные слишком быстро, казалось, способствовал.
источник