Apakah benar-benar ada "protokol komunikasi USB"?

24

Menurut Wikipedia , USB:

mendefinisikan kabel, konektor dan protokol komunikasi yang digunakan dalam bus untuk koneksi, komunikasi, dan catu daya antara komputer dan perangkat elektronik

Tetapi apakah memang ada " protokol komunikasi USB "? Pemahaman saya adalah:

  1. Anda menghubungkan perangkat USB ke mesin (katakanlah, Ubuntu atau segala jenis Linux)
  2. Linux menemukan driver perangkat untuk perangkat itu (entah bagaimana - bonus jika Anda tahu!) Dan memuatnya
  3. Perangkat sekarang terhubung di bawah /dev/theDevice
  4. Aplikasi ruang pengguna sekarang dapat membaca / menulis /dev/theDevicedan driver menangani IO tingkat rendah ke perangkat / perangkat keras yang mendasarinya

Bagi saya, tidak ada dalam aliran ini muncul "protokol komunikasi USB" muncul. Jika pemahaman saya benar, USB hanyalah kabel dan koneksi listrik antara PC dan perangkat.

Apakah saya salah di sini? Apakah USB benar-benar menerapkan semacam protokol tingkat rendah yang menggarisbawahi aliran di atas? Jika demikian, apa itu dan bagaimana cara kerjanya pada tampilan 30.000 kaki?

smeeb
sumber
45
"pengemudi menangani IO tingkat rendah ke perangkat / perangkat keras yang mendasarinya" ia melakukan ini dengan menggunakan protokol komunikasi yang ada dalam standar.
EBGreen
29
Oh ... Saya membaca pertanyaannya menjadi "Apakah memang ada" protokol komunikasi USB "?" Jadi jawabannya adalah ya. Jika Anda ingin tahu apa protokol komunikasi yang sebenarnya, cukup baca standarnya. Atau baca bagian 11 di halaman wiki yang Anda tautkan.
EBGreen
6
"USB hanyalah kabel dan koneksi listrik antara PC dan perangkat". Kabel Ethernet hanyalah kabel antara PC dan switch / router / apa pun. Masih ada beberapa protokol yang digunakan untuk berkomunikasi melalui kabel ini dan melakukan hal-hal yang berguna dengannya.
ysdx
13
"Linux menemukan driver perangkat untuk perangkat itu" Bagaimana menurut Anda Linux dapat mendeteksi perangkat mana yang terhubung ke ujung yang lain. Protokol yang umum, mungkin?
pemboros
4
@Ramhound "Protokol komunikasi itu tidak tergantung pada standar setidaknya dalam kasus Ethernet." Ini salah. Protokol Ethernet (baik fisik dan lapisan MAC) ditentukan oleh standar IEEE Ethernet (khususnya, standar 802.3 .) Tentu saja mungkin (dan umum) untuk mengirim sesuatu selain protokol Ethernet melalui kabel Kategori 6 dengan Konektor RJ-45, tetapi pada saat itu bukan lagi Ethernet. Ini adalah praktik umum dengan sistem telepon non-VoIP, misalnya.
reirab

Jawaban:

47

Ya, lihat protokol USB

Seperti yang saya pahami, spesifikasi USB mendefinisikan seperangkat protokol dan profil perangkat yang rumit.

Misalnya, perangkat USB dapat menyesuaikan dengan templat tingkat tinggi seperti penyimpanan massal, keyboard (atau Perangkat Antarmuka Manusia, dll) dan dikelola oleh driver perangkat generik. Beberapa perangkat USB dapat berkomunikasi pada level yang lebih rendah sehingga dukungan USB level rendah OS dapat mengenali bahwa driver level-tinggi spesifik perangkat diperlukan.

RedGrittyBrick
sumber
30

Pertanyaan: Apakah ada protokol komunikasi USB tingkat rendah yang sedang beraksi dan apa itu?

Menjawab:

Ya ada, spesifikasi USB termasuk protokol USB yang menentukan cara bus digunakan pada level bit. Ini akan menjadi protokol 'tingkat rendah' ​​yang mendasari protokol tingkat yang lebih tinggi yaitu penyimpanan massal, HID, dll.

Untuk rincian tentang cara kerja protokol USB, wiki OSDev ini sangat membantu. Berikut ini deskripsi menarik lainnya menggunakan diagram urutan untuk menggambarkan berbagai transaksi data per protokol USB.

Pertanyaan Bonus: Bagaimana cara Linux menemukan dan memuat driver perangkat untuk perangkat itu?

Jawaban bonus :

'Di Linux saat menggunakan kernel yang mengaktifkan USB, perangkat USB yang berfungsi akan terdeteksi melalui perangkat keras dan kernel karena spesifikasi USB. Di sisi perangkat keras deteksi dilakukan oleh Pengendali Host USB. Kemudian dalam kernel, Driver Pengontrol Host mengambil alih dan menerjemahkan bit level rendah pada informasi berformat protokol kawat ke USB. Informasi ini kemudian diisi dalam driver inti USB di kernel. '

Saya mengutip dari artikel opensourceforu yang sangat bagus ini , yang memiliki lebih banyak detail dan kejelasan tentang pertanyaan Anda dalam konteks Linux.

projectdp
sumber
7
Saya harap "Bonus pertanyaan" berarti "Hadiah" untuk Anda.
dotancohen
@projectdp - Akan sangat berguna jika Anda akan menempatkan beberapa informasi dari referensi utama Anda ke dalam jawaban Anda sendiri.
Ramhound
@Ramhound - Terima kasih atas tanggapan Anda, saya menulis ulang jawaban saya dengan cara yang lebih bermanfaat. Sedangkan untuk menambahkan lebih banyak informasi dari sumber daya, apa yang ingin Anda lihat yang relevan dengan pertanyaan?
projectdp
14

Seperti hampir setiap jenis antarmuka komunikasi lainnya, USB diimplementasikan sebagai tumpukan protokol. Tingkat dalam tumpukan ini yang umum untuk semua atau beberapa jenis perangkat ditentukan oleh standar USB sendiri, yang keduanya memungkinkan kompatibilitas dan mencegah setiap perangkat dari melakukan desain protokol yang berlebihan. Lebih jauh, setiap lapisan protokol meringkas detail yang tidak perlu dikhawatirkan oleh lapisan berikutnya. Jadi, ketika Anda benar-benar menulis layer khusus perangkat, Anda hanya memiliki fungsi 'kirim' dan 'menerima' generik yang mendapatkan data dari titik akhir A ke titik akhir B. Anda, sebagai perancang perangkat, tidak perlu peduli bagaimana itu terjadi. Selain itu, level yang lebih rendah dalam stack protokol dapat mengubah implementasi selama mereka mengekspos antarmuka umum ke layer di atasnya. Dengan cara ini, ketika salah satu bagian dari tumpukan protokol berubah, sisa tumpukan tidak harus berubah.protokol mana yang digunakan pada tingkat yang lebih rendah dari tumpukan. Secara umum, setiap lapisan berturut-turut di tumpukan akan merangkum pesan yang dihasilkan oleh lapisan tertinggi berikutnya dalam bidang muatannya sendiri saat pesan sedang dikirim. Ketika pesan diterima, setiap lapisan melepas bagian yang relevan dengan lapisan itu dan meneruskan muatannya ke lapisan berikutnya yang sesuai ke atas tumpukan. Ini berlaku, bukan hanya USB, tetapi hampir setiap bus komunikasi. Tumpukan TCP / IP / Ethernet mungkin yang paling umum digunakan, misalnya. Tugas-tugas yang diberikan lapisan biasanya bertanggung jawab untuk dijelaskan dalam model, seperti model OSI .

Di USB, ada protokol lapisan fisik yang mendefinisikan status voltase / timing / dll. pada kawat dan bagaimana mereka harus ditafsirkan. Protokol ini jelas perlu menjadi bagian dari standar USB itu sendiri, tidak spesifik untuk perangkat yang diberikan (terutama karena tuan rumah tidak memiliki cara untuk mengetahui jenis perangkat apa yang akan dicolokkan ke port USB yang diberikan.)

Selanjutnya, ada protokol manajemen bus, yang digunakan untuk menggambarkan siapa yang dapat berbicara di bus kapan. Ini disebut lapisan akses media dalam model OSI. Di USB lapisan ini dapat disimpulkan sebagai "perangkat dapat mengirimkan ketika tuan rumah memerintahkannya," jadi tidak ada protokol yang rumit pada lapisan ini di USB.

Selanjutnya, ada protokol standar untuk mendeskripsikan paket data dan bagaimana itu harus dialihkan dari pengirim ke penerima. Lapisan ini juga perlu menjadi bagian dari standar USB itu sendiri, sehingga komunikasi awal untuk menemukan jenis perangkat apa yang telah terpasang dapat terjadi sebelum jenis perangkat tertentu benar-benar diketahui oleh tuan rumah. Selain setiap perangkat yang memiliki ID tertentu pada lapisan ini, ada juga konsep di USB dari ID titik akhir. Hal ini memungkinkan setiap perangkat yang diberikan memiliki beberapa titik akhir USB, yang multiplexing dan demultiplexed oleh tumpukan USB standar, banyak dengan cara yang sama dengan soket yang multiplexing dan demultiplexed oleh tumpukan TCP / IP standar. Aplikasi dapat memperlakukan masing-masing titik akhir ini sebagai aliran data terpisah.

Akhirnya, ada protokol yang ditentukan untuk perangkat itu sendiri. Perhatikan bahwa sebenarnya ada beberapa yang sudah dirancang sebelumnya yang disertakan sebagai bagian dari standar USB untuk kasus penggunaan umum, seperti perangkat penyimpanan massal, mouse, keyboard, dll., Sehingga setiap produsen perangkat tidak perlu menemukan kembali roda. Namun, perangkat yang lebih rumit bebas untuk merancang protokol khusus mereka sendiri di lapisan ini. Output dari lapisan ini untuk transmisi yang diberikan dilewatkan sebagai muatan paket data pada lapisan sebelumnya. Perhatikan bahwa, untuk perangkat yang cukup rumit, bagian protokol khusus perangkat itu sendiri dapat dibagi menjadi beberapa lapisan independen, tetapi level yang lebih rendah tidak perlu tahu atau peduli tentang hal itu. Yang perlu mereka ketahui adalah bahwa mereka harus meneruskan serangkaian byte dari host ke titik akhir perangkat tertentu atau dari titik akhir perangkat tertentu ke host. Sekali lagi, memiliki antarmuka standar antara lapisan memungkinkan pemisahan masalah, sehingga satu lapisan tidak harus peduli dengan cara kerja lapisan lain, tetapi hanya data spesifik yang harus dilewati atau diharapkan diterima dari lapisan tepat di atas atau di bawahnya ada di tumpukan.

reirab
sumber
9

Sebenarnya ada satu set protokol komunikasi terkait yang berinteraksi.

Pada level terendah, ada protokol yang menjelaskan bagaimana paket byte dikirim melalui koneksi serial. Ini umum untuk semua perangkat USB (tetapi berbeda antara USB2 dan USB3).

Salah satu paket pertama yang dikirim meminta perangkat untuk menggambarkan dirinya sendiri. Untuk mencegah masalah ayam dan telur, protokol identifikasi adalah sama untuk semua perangkat USB. OS dapat menggunakan identifikasi ini untuk memuat driver yang benar.

Di tingkat lain, USB adalah bus yang berarti bahwa banyak perangkat harus berbagi bandwidth. Ini berarti ada protokol yang memberi tahu setiap perangkat kapan ia bisa bicara, dan kapan tidak. Karena semua perangkat USB harus mematuhi ini, protokol umum digunakan untuk mengatur ini.

Akhirnya, banyak perangkat USB sederhana sangat sederhana sehingga ada protokol tambahan yang menggambarkan seluruh kelas perangkat (mouse, keyboard, penyimpanan, adaptor ethernet, ...). Sebagian besar perangkat mendukung nol atau salah satu dari protokol fungsional ini.

MSalters
sumber
"USB adalah bus yang berarti bahwa banyak perangkat harus berbagi bandwidth" - Suatu hal yang diabaikan OP ketika dia hanya menggunakan pengaturan point-to-point untuk pertanyaannya. Karena dua (atau lebih) perangkat USB dapat berbagi kabel ke PC host, kita dapat menyimpulkan bahwa harus ada protokol.
serbuk kayu
@sawdust Karena berfungsi sama sekali (bahkan point-to-point,) kita dapat menyimpulkan bahwa ada protokol. Penemuan perangkat, misalnya, tidak akan mungkin jika tidak ada protokol standar.
reirab
Memang ada standar komunikasi dan pada intinya itu adalah komunikasi serial karenanya Universal Serial Bus.
Ramhound
@Ramhound Ya, seperti kebanyakan desain bus modern untuk semuanya kecuali antarmuka memori, USB menggunakan pasangan diferensial seri untuk transmisi data. USB <= 2.0 memiliki satu pasangan diferensial tunggal, sementara USB 3 memiliki dua pasangan diferensial tambahan (satu untuk transmisi SuperSpeed ​​dan satu lagi untuk penerimaan SuperSpeed, memungkinkan komunikasi dupleks penuh pada 5 Gbps setiap arah.)
reirab
Saya hanya berpikir saya akan mengarahkan bus serial ke inti standar, penulis tampaknya tidak menyadari fakta ini, dengan demikian pertanyaannya.
Ramhound
5

Mungkin bagian dari jawabannya terletak pada definisi frase " protokol komunikasi ". Pergi ke sumber yang sama dengan yang Anda lakukan (Wikipedia) Anda akan menemukan informasi bermanfaat seperti:

  • Agar komunikasi dapat terjadi, protokol harus disepakati.
  • Sistem komunikasi menggunakan format (protokol) yang didefinisikan dengan baik untuk bertukar pesan.
  • sebuah protokol harus mendefinisikan sintaksis, semantik, dan sinkronisasi komunikasi.
  • Protokol karenanya dapat diimplementasikan sebagai perangkat keras, perangkat lunak, atau keduanya.

Cara sederhana untuk memikirkannya adalah protokol merupakan cara yang telah ditentukan sebelumnya dan disepakati untuk melakukan sesuatu , dalam hal ini sesuatu adalah bagaimana memindahkan data masuk dan keluar dari perangkat yang terhubung USB. Secara hardware, masing-masing pin memiliki level voltase yang ditentukan dan protokol penggunaan, setiap tipe perangkat memiliki protokol penggunaan yang telah ditentukan untuk setiap pin , dan setiap paket data memiliki sintaks dan format data yang telah ditentukan sebelumnya. Ada juga protokol komunikasi tangan-goyang yang tergabung. Secara kolektif ini semua adalah bagian dari pengumpulan standar untuk menggunakan perangkat USB, alias protokol USB, yang diputuskan (yaitu, dirancang, diusulkan, diperdebatkan, direvisi, dan akhirnya disetujui) oleh anggota USB Implementers Forum, Inc.

Jadi ya, ada adalah protokol USB, atau lebih tepatnya ada adalah sejumlah yang telah ditetapkan dan disepakati protokol USB s untuk kegunaan USB yang berbeda.

OMY
sumber
1
1. The Proses komunikasi melibatkan (minimal) tiga unsur: (1) encoding / mengirimkan DAN (2) menerima / decoding (3) _information_ (sebagai lawan random noise). Jika salah satu dari 3 elemen ini hilang proses gagal. Elemen tambahan juga dapat hadir seperti umpan balik, media (saluran), dan konteks di antara yang lainnya. SUMBER: Salah satu gelar saya adalah Ilmu Komunikasi
OMY
1
2. SETI bukan tentang komunikasi, ini tentang eksplorasi & penemuan . Bahkan jika kami mendeteksi sinyal buatan pabrik, tidak ada jaminan bahwa kami akan pernah memahaminya atau dapat berkomunikasi dengan pengirim. SUMBER: [Pernyataan Misi SETI] [1] [1]: seti.org/about-us
OMY
1
3. Kompatibilitas lintas browser biasanya disebabkan oleh (a) produsen browser yang tidak mengikuti protokol, atau (b) protokol yang ditulis dengan buruk yang menyebabkan implementasi cacat (sebagai contoh pertimbangkanbug model kotak IE yang terkenaldan juga lihat < quirksmode.org> ). Itulah mengapa sekarang kita memiliki HTML 5 dan CSS 3 , karena protokol perlu diperbaiki. SUMBER: Memiliki dan mengoperasikan perusahaan pengembangan web saya sendiri selama beberapa tahun
OMY
1
4. Pertama, sinyal radio yang "disinkronkan" pada frekuensi menggunakan protokol AM (modulasi amplitudo). Sinyal radio FM (modulasi frekuensi) "disinkronkan" ke integral waktu. Protokol untuk sistem FM melibatkanelemen tetap dan dinamis untuk memproses informasi. Elemen dinamis adalahpengaturan frekuensi variabel , yang dibatasi untuk rentang frekuensi yang telah ditentukan dan terbatas.
OMY
1
Elemen-elemen tetap adalah rumus matematika untuk memodulasi dan mendemodulasi sinyal. Tidak peduli berapa frekuensi formula ini konstan dan dapat diimplementasikan untuk memproses sinyal melalui perangkat keras analog atau perangkat lunak digital. SUMBER: Pengalaman pribadi sebagai penghobi elektronik dan [Wikipedia] [1] [1]: en.wikipedia.org/wiki/Frequency_modulation
OMY