14Aug

Gerçek Bir USB İletişim Protokolü Var mı?

Çoğumuz USB cihazlarımızı hiçbir zaman çok fazla düşünmüyoruz, bunları takıp bunları unutuyoruz. Ancak USB'nin nasıl işlediği hakkında daha fazla bilgi edinmek isteyen merak uyandırıcı bir tip iseniz? Bugünün Süper Kullanıcısı Q & A yayını, merak uyandırıcı bir okuyucunun sorularına cevaplar içeriyor.

Bugünkü Soru &Yanıt oturumu bize Q & A web sitelerinin topluluk temelli bir gruplandırması olan Stack Exchange'in bir alt bölümü olan SuperUser nezaketen geliyor.

Fotoğraf Evilelka Kowalski'nin( Flickr) izniyle.

Soru

SuperUser okuyucu smeeb gerçek bir USB İletişim Protokolü olup olmadığını bilmek istiyor:

Wikipedia'ya göre, USB:

  • Bağlantı, iletişim ve güç kaynağı arasında bir veriyoluda kullanılan kabloları, konektörleri ve iletişim protokollerini tanımlıyorbilgisayarlar ve elektronik cihazlar.

Ancak gerçek bir USB İletişim Protokolü var mı?Benim anlayışım şu:

  1. Bir makineye bir USB aygıtı bağlarsın( örneğin Ubuntu veya herhangi bir Linux türü).
  2. Linux, bu aygıtın aygıt sürücüsünü bir şekilde bulur( biliyorsanız, bonus! ) ve yükler.
  3. Aygıt şimdi /dev/ theDevice altında bağlı.
  4. Kullanıcı alanı uygulamaları artık /dev/ theDevice okuyabilir ve yazabilir ve sürücü alttaki cihaz / donanıma düşük seviyeli giriş ve çıkışı uygular.

Bildiğim kadarıyla bir USB İletişim Protokolü bu akışın herhangi bir yerinde görünmüyor. Anlayışım doğruysa, USB sadece PC ve cihaz arasındaki kablo ve elektrik bağlantısıdır.

Burada yanlış mıyım? USB aslında yukarıdaki akışın altını çizen bir tür düşük düzey protokol uyguluyor mu?Öyleyse, nedir ve 30.000 ayak görüşünde nasıl çalışır?

Gerçek bir USB İletişim Protokolü var mı?

Cevap

SuperUser katkıda bulunan RedGrittyBrick ve projectdp bize cevap buluyor.İlk önce, RedGrittyBrick:

Evet( USB protokollerine bakın).

Anladığım kadarıyla, USB spesifikasyonu, katmanlı protokollerin ve cihaz profillerinin karmaşık bir setini tanımlıyor.

Örneğin USB aygıtları, yığın depolama, klavye, insan arabirimi aygıtı vb. Gibi üst düzey şablonlara uyabilir ve genel bir aygıt sürücüsü tarafından yönetilebilir. Bazı USB aygıtları, işletim sisteminin düşük düzeyli USB desteğine, aygıta özgü üst düzey sürücülerin gerekli olduğunu algılayacakları şekilde daha düşük düzeyde iletişim kurabilir.

Projectdp cevabını takip ediyor:

Soru

Düşük seviyeli bir USB iletişim protokolü var mı ve bu nedir?

Cevap

Evet, var. USB spesifikasyonu, veriyolunun biraz seviyede nasıl kullanılacağını tanımlayan USB protokolünü içerir. Bu, daha yüksek seviyeli protokollerin( yani, yığın depolama, HID vb.) Altta yatan düşük düzeyli protokol olacaktır.

USB protokolünün işleyişi ile ilgili ayrıntılar için bu OSDev wiki yardımcı olur. USB protokolüne göre çeşitli veri işlemlerini tanımlamak için sekans diyagramlarını kullanan başka ilginç bir açıklama.

Bonus Soru

Linux, bu aygıt için aygıt sürücüsünü nasıl bulur ve yükler?

Bonus Cevap

Linux'ta USB özellikli bir çekirdeği kullanırken, USB özellikleri nedeniyle donanım ve çekirdek üzerinden çalışan bir USB aygıtı algılanır. Donanım tarafında, algılama USB Ana Bilgisayar Denetleyicisi tarafından yapılır. Daha sonra çekirdekte, Ana Bilgisayar Denetleyicisi Sürücüsü devralır ve kablodaki alt seviye bitleri USB protokolü biçimlendirilmiş bilgiye çevirir. Bu bilgi daha sonra çekirdekteki usbcore sürücüsünde doldurulur.

Linux bağlamında sorunuza ilişkin çok daha ayrıntılı ve net olan bu mükemmel Opensourceforu makalesini açıkça tekrarladım.

Aşağıda paylaşılan konu linkiyle canlı tartışmalara bakmayı unutmayın!

Açıklamaya eklemek için bir şey var mı?Yorumların sesini kapatın. Diğer teknik uzman Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Buradaki tam tartışma dizinine göz atın.