Adakah terdapat Protokol Komunikasi USB Sebenar?
Kebanyakan kita tidak pernah memikirkan peranti USB kami, kami hanya memasukkannya dan melupakannya. Tetapi bagaimana jika anda adalah jenis yang ingin tahu yang ingin mengetahui lebih lanjut mengenai cara kerja USB? Siaran Q & A SuperUser hari ini mempunyai jawapan kepada soalan pembaca yang ingin tahu.
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Gambar ihsan Evilelka Kowalski (Flickr).
Soalan
Pembaca superuser smeeb ingin tahu jika benar-benar ada Protokol Komunikasi USB yang sebenarnya:
Menurut Wikipedia, USB:
- Menetapkan kabel, penyambung, dan protokol komunikasi yang digunakan dalam bas untuk sambungan, komunikasi, dan bekalan kuasa antara komputer dan peranti elektronik.
Tetapi ada sebenarnya Protokol Komunikasi USB? Pemahaman saya ialah:
- Anda menyambungkan peranti USB ke mesin (Ubuntu atau mana-mana jenis Linux misalnya).
- Linux mendapati pemandu peranti untuk peranti itu entah bagaimana (bonus jika anda tahu!) dan memuatkannya.
- Peranti kini disambungkan di bawah / dev / theDevice.
- Aplikasi ruang pengguna kini boleh membaca dan menulis kepada / dev / theDevice dan pemandu mengendalikan input dan output tahap rendah ke peranti / perkakasan yang mendasari.
Setakat yang dapat saya katakan, a Protokol Komunikasi USB tidak muncul di mana-mana dalam aliran ini. Sekiranya pemahaman saya betul, USB hanya sambungan kabel dan elektrik antara PC dan peranti.
Adakah saya salah di sini? Adakah USB sebenarnya melaksanakan beberapa jenis protokol tahap rendah yang menggariskan aliran di atas? Jika ya, apakah dan bagaimana ia berfungsi pada pandangan 30,000 kaki?
Adakah terdapat Protokol Komunikasi USB yang sebenar?
Jawapan
Penyumbang SuperUser RedGrittyBrick dan projectdp mempunyai jawapan untuk kami. Pertama, RedGrittyBrick:
Ya (lihat protokol USB).
Seperti yang saya faham, spec USB mendefinisikan set kompleks protokol berlapis dan profil peranti.
Sebagai contoh, peranti USB boleh mematuhi templat peringkat tinggi seperti penyimpanan massa, papan kekunci, peranti antara muka manusia, dan lain-lain dan diuruskan oleh pemandu peranti generik. Sesetengah peranti USB boleh berkomunikasi pada tahap yang lebih rendah supaya sokongan USB tahap rendah sistem operasi dapat mengenali bahawa pemandu tahap lebih tinggi khusus peranti diperlukan.
Diikuti dengan jawapan dari projectdp:
Soalan
Adakah terdapat protokol komunikasi USB tahap rendah dalam tindakan dan apakah itu?
Jawapan
Ya, memang ada. Spesifikasi USB termasuk protokol USB yang menentukan cara bas digunakan pada tahap bit. Ini akan menjadi protokol peringkat rendah yang mendasari protokol tahap lebih tinggi (iaitu penyimpanan massa, HID, dan sebagainya).
Untuk spesifik mengenai bagaimana protokol USB berfungsi, wiki OSDev ini berguna. Berikut adalah satu lagi penerangan yang menarik menggunakan gambar rajah urutan untuk menerangkan pelbagai transaksi data setiap protokol USB.
Soalan Bonus
Bagaimana Linux mencari dan memuatkan pemacu peranti untuk peranti itu?
Jawapan Bonus
Di Linux apabila menggunakan kernel USB yang dibolehkan, peranti USB yang berfungsi akan dikesan melalui perkakasan dan kernel kerana spesifikasi USB. Di sisi perkakasan, pengesanan dilakukan oleh Pengawal Hos USB. Kemudian dalam kernel, Pemandu Pengawal Hos mengambil alih dan menerjemahkan bit peringkat rendah pada dawai ke maklumat protokol USB yang diformatkan. Maklumat ini kemudian akan dihuni oleh pemandu usbcore dalam kernel.
Saya mengambil contoh dari artikel Opensourceforu yang sangat baik ini, yang mempunyai lebih terperinci dan jelas tentang soalan anda dalam konteks Linux.
Pastikan untuk menyemak perbincangan yang lain secara rutin menerusi pautan thread yang dikongsi di bawah!
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.