Apakah USB memiliki jaminan kualitas layanan untuk data yang dikirim antara perangkat USB-CDC saya dan host USB?
Saya tahu dengan RS232 tradisional dalam situasi bising (mis. Port diagnostik otomotif) bit-bit buruk cukup sering terjadi sehingga checksum penting bagi protokol. Jika saya mengadaptasi protokol seperti itu ke aplikasi USB murni, dapatkah saya dengan aman menghilangkan checksum dan rutinitas penanganan kesalahan terkait?
Sebagai referensi, saya menggunakan AT91SAM7S256 dengan kerangka kerja USB-CDC yang disediakan oleh Atmel.
Memperbarui:
Saya menggunakan Google-Fu saya sedikit lebih lama untuk masalah ini dan menemukan artikel ini yang menjelaskan subkelas CDC untuk emulasi Ethernet dan menyatakan:
Melalui kabel USB, frame Ethernet yang dienkapsulasi mengalir mulai dengan alamat MAC tujuan dan berakhir tepat sebelum frame checksum. (Frame checksum tidak diperlukan karena USB adalah transportasi yang andal.)
Mereka mungkin berarti USB-CDC adalah transportasi yang andal, bukan USB pada umumnya, karena beberapa kelas perangkat yang ditujukan untuk data bursty throughput tinggi (webcam?) Mungkin tidak ingin mengisi buffer jika suatu program tidak dapat mengumpulkan data dengan cukup cepat.
Saya masih ingin konfirmasi tambahan tentang ini.
sumber
USB mungkin merupakan protokol yang relatif andal, tetapi tidak semua perangkat dan driver yang menggunakan CDC dapat diandalkan. Saya telah melihat beberapa perangkat berbeda yang memiliki kebiasaan yang agak mengganggu yaitu melewatkan byte data yang dikirim oleh PC. Mengamati data pada ruang lingkup menunjukkan bahwa masalahnya bukan pada perangkat penerima yang dibanjiri - beberapa byte data hilang begitu saja (saya bisa menangkap seluruh paket pada ruang lingkup; header dan footer keduanya ada, tetapi beberapa dari byte di antara mereka yang hilang). Saya tidak yakin apa yang salah menyebabkan perilaku itu, tetapi mencoba mengirim data terlalu cepat tampaknya menjadi faktor penyebabnya.
sumber