Czy USB ma gwarancję jakości usługi dla danych przesyłanych między moim urządzeniem USB-CDC a hostem USB?
Wiem, że z tradycyjnym RS232 w hałaśliwej sytuacji (np. Samochodowy port diagnostyczny) zdarzają się bity na tyle często, że sumy kontrolne są ważne dla protokołu. Gdybym miał dostosować taki protokół do aplikacji wykorzystującej wyłącznie USB, czy mogę bezpiecznie pominąć sumę kontrolną i powiązane procedury obsługi błędów?
Dla porównania używam AT91SAM7S256 ze strukturą USB-CDC dostarczoną przez Atmel.
Aktualizacja:
Ćwiczyłem trochę Google-Fu na tym problemie i znalazłem ten artykuł, który opisuje podklasę CDC do emulacji Ethernet i stwierdza:
Przez kabel USB zamknięte są ramki enkapsulowane Ethernet, zaczynając od docelowego adresu MAC i kończąc tuż przed sumą kontrolną ramki. (Suma kontrolna ramki nie jest potrzebna, ponieważ USB to niezawodny transport).
Mogą oznaczać, że USB-CDC to niezawodny transport, a nie USB w ogóle, ponieważ niektóre klasy urządzeń przeznaczone do szybkich danych seryjnych (kamera internetowa?) Mogą nie chcieć zapełniać buforów, jeśli program nie może wystarczająco szybko sondować danych.
Nadal chcę dodatkowe potwierdzenie w tej sprawie.
źródło
USB może być stosunkowo niezawodnym protokołem, ale nie wszystkie urządzenia i sterowniki korzystające z CDC są niezawodne. Widziałem kilka różnych urządzeń, które miały dość irytujący zwyczaj pomijania bajtów danych wysyłanych przez komputer. Obserwacja danych w zakresie pokazała, że problem nie polegał na przepełnieniu urządzenia odbierającego - niektóre bajty danych po prostu zaginęły (byłem w stanie przechwycić cały pakiet w zakresie; zarówno nagłówek, jak i stopka były obecne, ale niektóre brakujących bajtów między nimi). Nie jestem pewien, co dokładnie poszło nie tak, aby spowodować takie zachowanie, ale próba zbyt szybkiego przesłania danych wydawała się być czynnikiem.
źródło