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:
- Anda menghubungkan perangkat USB ke mesin (katakanlah, Ubuntu atau segala jenis Linux)
- Linux menemukan driver perangkat untuk perangkat itu (entah bagaimana - bonus jika Anda tahu!) Dan memuatnya
- Perangkat sekarang terhubung di bawah
/dev/theDevice
- Aplikasi ruang pengguna sekarang dapat membaca / menulis
/dev/theDevice
dan 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?
linux
usb
linux-device-driver
smeeb
sumber
sumber
Jawaban:
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.
sumber
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.
sumber
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.
sumber
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.
sumber
Universal Serial Bus
.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:
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.
sumber