มีโปรโตคอลการสื่อสาร USB จริงหรือไม่
พวกเราส่วนใหญ่ไม่เคยคิดมากกับอุปกรณ์ USB ของเราเราเพียงแค่เสียบมันและลืมมันไป แต่ถ้าคุณเป็นคนที่อยากรู้อยากเห็นอยากรู้เพิ่มเติมเกี่ยวกับการทำงานของ USB? บทความถามตอบ SuperUser ในวันนี้มีคำตอบสำหรับคำถามของผู้อ่านที่อยากรู้อยากเห็น.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
ภาพถ่ายมารยาทของ Evilelka Kowalski (Flickr).
คำถาม
ผู้อ่าน SuperUser smeeb ต้องการทราบว่ามีโปรโตคอลการสื่อสาร USB จริงหรือไม่:
ตามที่ Wikipedia, USB:
- กำหนดสายเคเบิลตัวเชื่อมต่อและโปรโตคอลการสื่อสารที่ใช้ในบัสสำหรับการเชื่อมต่อการสื่อสารและแหล่งจ่ายไฟระหว่างคอมพิวเตอร์และอุปกรณ์อิเล็กทรอนิกส์.
แต่มีจริง โปรโตคอลการสื่อสาร USB? ความเข้าใจของฉันคือ:
- คุณเชื่อมต่ออุปกรณ์ USB เข้ากับเครื่อง (เช่น Ubuntu หรือ Linux ชนิดใดก็ได้).
- Linux พบไดรเวอร์อุปกรณ์สำหรับอุปกรณ์นั้นอย่างใด (โบนัสถ้าคุณรู้!) และโหลด.
- อุปกรณ์ได้รับการเชื่อมต่อภายใต้ / dev / theDevice.
- แอปพื้นที่ผู้ใช้สามารถอ่านและเขียนได้แล้ว / dev / theDevice และไดรเวอร์จะจัดการอินพุตและเอาต์พุตระดับต่ำไปยังอุปกรณ์ / ฮาร์ดแวร์พื้นฐาน.
เท่าที่ฉันสามารถบอกได้ โปรโตคอลการสื่อสาร USB ไม่ปรากฏที่ใดก็ได้ในโฟลว์นี้ หากความเข้าใจของฉันถูกต้อง USB เป็นเพียงการเชื่อมต่อสายเคเบิลและไฟฟ้าระหว่างพีซีและอุปกรณ์.
ฉันผิดที่นี่ USB ใช้โพรโทคอลระดับต่ำจริง ๆ หรือไม่ที่เน้นการไหลของข้อมูลด้านบนหรือไม่? ถ้าเป็นเช่นนั้นมันคืออะไรและมันทำงานอย่างไรในมุมมอง 30,000 ฟุต?
มีโปรโตคอลการสื่อสาร USB จริงหรือไม่?
คำตอบ
ผู้สนับสนุน SuperUser RedGrittyBrick และ projectdp มีคำตอบสำหรับเรา ก่อนอื่น RedGrittyBrick:
ใช่ (ดูโปรโตคอล USB).
ตามที่ฉันเข้าใจแล้วสเป็ค USB กำหนดชุดโพรโทคอลที่ซับซ้อนและโปรไฟล์อุปกรณ์.
ตัวอย่างเช่นอุปกรณ์ USB สามารถปฏิบัติตามแม่แบบระดับสูงเช่นที่เก็บข้อมูลขนาดใหญ่, คีย์บอร์ด, อุปกรณ์เชื่อมต่อระหว่างบุคคล ฯลฯ และจัดการโดยไดรเวอร์อุปกรณ์ทั่วไป อุปกรณ์ USB บางตัวสามารถสื่อสารในระดับที่ต่ำกว่าเช่นการรองรับ USB ระดับต่ำของระบบปฏิบัติการสามารถรับรู้ได้ว่าต้องการไดรเวอร์ระดับสูงเฉพาะสำหรับอุปกรณ์.
ตามด้วยคำตอบจาก projectdp:
คำถาม
มีโปรโตคอลการสื่อสาร USB ระดับต่ำในการทำงานหรือไม่และมันคืออะไร?
ตอบ
ใช่แล้ว ข้อมูลจำเพาะ USB รวมถึงโปรโตคอล USB ซึ่งกำหนดวิธีการใช้บัสในระดับบิต นี่จะเป็นโปรโตคอลระดับต่ำที่รองรับโปรโตคอลระดับสูงกว่า (เช่นที่เก็บข้อมูลขนาดใหญ่, HID, เป็นต้น).
สำหรับข้อมูลเฉพาะเกี่ยวกับวิธีการทำงานของโปรโตคอล USB วิกิ OSDev นี้จะมีประโยชน์ นี่คือคำอธิบายที่น่าสนใจอีกอย่างหนึ่งที่ใช้ไดอะแกรมลำดับเพื่ออธิบายการทำธุรกรรมข้อมูลต่าง ๆ ต่อโปรโตคอล USB.
คำถามโบนัส
Linux พบและโหลดไดรเวอร์อุปกรณ์สำหรับอุปกรณ์นั้นอย่างไร?
คำตอบโบนัส
บน Linux เมื่อใช้เคอร์เนลที่ใช้งาน USB อุปกรณ์ USB ที่ใช้งานได้จะถูกตรวจพบผ่านฮาร์ดแวร์และเคอร์เนลเนื่องจากข้อกำหนด USB ในด้านฮาร์ดแวร์การตรวจจับทำได้โดย USB Host Controller จากนั้นในเคอร์เนล Host Controller Driver จะเข้าควบคุมและแปลบิตระดับต่ำบนสายไปเป็นข้อมูลที่ฟอร์แมตโปรโตคอล USB ข้อมูลนี้จะได้รับการบรรจุในไดรเวอร์ usbcore ในเคอร์เนล.
ฉันถอดความจากบทความ Opensourceforu ที่ยอดเยี่ยมนี้ซึ่งมีรายละเอียดและความชัดเจนมากขึ้นเกี่ยวกับคำถามของคุณในบริบท Linux.
ตรวจสอบให้แน่ใจว่าได้ตรวจสอบการสนทนาที่มีชีวิตชีวาที่เหลือผ่านลิงก์เธรดที่แชร์ด้านล่าง!
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.